Revision 6069

View differences:

org.gvsig.raster/branches/org.gvsig.raster.2.4/org.gvsig.raster/org.gvsig.fmap.dal.raster/org.gvsig.fmap.dal.raster.impl/src/main/java/org/gvsig/fmap/dal/raster/impl/RasterStoreFactory.java
1
package org.gvsig.fmap.dal.raster.impl;
2

  
3
import org.gvsig.fmap.dal.DataParameters;
4
import org.gvsig.fmap.dal.DataStore;
5
import org.gvsig.fmap.dal.DataStoreFactory;
6
import org.gvsig.fmap.dal.exception.InitializeException;
7

  
8
public class RasterStoreFactory implements DataStoreFactory{
9

  
10
    private DataParameters parameters;
11

  
12
    @Override
13
    public void setParameters(DataParameters parameters) {
14
        this.parameters = parameters;
15
    }
16

  
17
    @Override
18
    public DataStore createStore() throws InitializeException {
19
        if( this.parameters.getClass().getSimpleName().equals("dfvsdfsdf") ) {
20
            return new DefaultRasterStore();
21
        }
22
        return null;
23
    }
24

  
25
}
org.gvsig.raster/branches/org.gvsig.raster.2.4/org.gvsig.raster/org.gvsig.fmap.dal.raster/org.gvsig.fmap.dal.raster.impl/src/main/java/org/gvsig/fmap/dal/raster/impl/DefaultRasterStore.java
37 37
import org.gvsig.fmap.dal.exception.CloneException;
38 38
import org.gvsig.fmap.dal.exception.DataException;
39 39
import org.gvsig.fmap.dal.exception.InitializeException;
40
import org.gvsig.fmap.dal.exception.OpenException;
40 41
import org.gvsig.fmap.dal.exception.ValidateDataParametersException;
41 42
import org.gvsig.fmap.dal.feature.exception.PersistenceStoreAlreadyLoadedException;
42 43
import org.gvsig.fmap.dal.impl.DefaultDataManager;
......
115 116
    public void intializePhase2(DataStoreProvider provider)
116 117
        throws InitializeException {
117 118
        this.provider = (RasterStoreProvider) provider;
119
        try {
120
            provider.open();
121
        } catch (OpenException e) {
122
            throw new InitializeException("Can't open provider: ", e);
123
        }
118 124
        this.delegate(provider);
119 125
    }
120 126

  
org.gvsig.raster/branches/org.gvsig.raster.2.4/org.gvsig.raster/org.gvsig.fmap.dal.raster/org.gvsig.fmap.dal.raster.impl/src/main/java/org/gvsig/fmap/dal/raster/impl/RasterLibrary.java
30 30
import org.gvsig.fmap.dal.DALLibrary;
31 31
import org.gvsig.fmap.dal.DALLocator;
32 32
import org.gvsig.fmap.dal.DataStoreFactory;
33
import org.gvsig.fmap.dal.spi.DALSPILocator;
33 34
import org.gvsig.fmap.dal.spi.DataManagerProviderServices;
34 35
import org.gvsig.metadata.exceptions.MetadataException;
35 36
import org.gvsig.tools.ToolsLocator;
......
64 65
        } catch (MetadataException e) {
65 66
            exs.add(e);
66 67
        }
67
	    DataManagerProviderServices manager = (DataManagerProviderServices) DALLocator.getDataManager();
68
	    manager.registerStoreFactory("RasterStoreFactory", RasterStoreFactory.class);
68
	    DataManagerProviderServices manager = DALSPILocator.getDataManagerProviderServices();
69
	    manager.registerDefaultRasterStore(DefaultRasterStore.class);
69 70

  
70 71
	    if (exs.size() > 0) {
71 72
            throw new LibraryException(this.getClass(), exs);
org.gvsig.raster/branches/org.gvsig.raster.2.4/org.gvsig.raster/org.gvsig.fmap.mapcontext.raster/org.gvsig.fmap.mapcontext.raster.impl/src/test/java/org/gvsig/fmap/mapcontext/raster/impl/DefaultRasterLayerTest.java
66 66
            JimiRasterStoreProviderParameters params = jimiFactory.createJimiParameters();
67 67
            params.setFile(file);
68 68
            params.setCRS(projection);
69
            JimiRasterStoreProvider jimiProvider = jimiFactory.createJimiProvider(params,null);
70
            jimiProvider.open();
71
            Buffer buffer = jimiProvider.createBuffer(null);
72 69

  
73
            assertEquals(buffer.getBandCount(), 3);
74
            assertEquals(buffer.getRows(), 467);
75
            assertEquals(buffer.getColumns(), 589);
70
            RasterStore store=null;
71
            store = (RasterStore) dataManager.openStore(JimiRasterStoreProvider.NAME,params);
76 72

  
77
            DefaultRasterStore store=null;
78
//            try {
79
                //FIXME this should be done through datamanager or the provider
80
                store = new DefaultRasterStore();
81
                store.intializePhase1(dataManager, params);
82
                store.intializePhase2(jimiProvider);
83
                //DataStoreParameters storeParams = dataManager.createStoreParameters("RasterStore");
84
                //store = (RasterStore) dataManager.openStore(JimiRasterStoreProvider.NAME,params);
85
//            } catch (ValidateDataParametersException
86
//                | ProviderNotRegisteredException e) {
87
//                // TODO Auto-generated catch block
88
//                e.printStackTrace();
89
//            }
90

  
91

  
92 73
            RasterLegendManager legendManager=RasterLegendLocator.getRasterLegendManager();
93 74
            ColorInterpretation colorInterpretation =
94 75
                legendManager.createColorInterpretation(ColorInterpretation.RGB);
......
99 80
            assertNotNull(layer);
100 81

  
101 82

  
102
            BufferedImage image = new BufferedImage(500, 500, BufferedImage.TYPE_INT_ARGB);
83
            BufferedImage image = new BufferedImage(589, 467, BufferedImage.TYPE_INT_ARGB);
103 84
            ViewPort viewPort = new ViewPort(projection);
104 85
            viewPort.setEnvelope(layer.getFullEnvelope());
105
            viewPort.setImageSize(new Dimension(500, 500));
86
            viewPort.setImageSize(new Dimension(589, 467));
106 87
            viewPort.refreshExtent();
107 88

  
108 89
            layer.draw(image, (Graphics2D)image.getGraphics(), viewPort, new CancelDraw(), 1.0);
......
114 95
                fail("Exception happened: "+e.getMessage());
115 96
            }
116 97

  
117

  
118

  
119

  
120
        } catch (InitializeException | OpenException | BufferException | URISyntaxException | ReadException e) {
98
        } catch (InitializeException | URISyntaxException | ReadException | ValidateDataParametersException | ProviderNotRegisteredException e) {
121 99
            fail("Exception happened: "+e.getMessage());
122 100
        }
123 101
    }
org.gvsig.raster/branches/org.gvsig.raster.2.4/org.gvsig.raster/org.gvsig.raster.lib/org.gvsig.raster.lib.buffer/org.gvsig.raster.lib.buffer.impl/src/main/java/org/gvsig/raster/lib/buffer/impl/AbstractPaginatedBand.java
21 21
    protected int rowsPerPage;
22 22
    protected BandPageManager pageManager;
23 23

  
24

  
24 25
    protected static final int MAX_PREFERED_SIZE = 10485760; // 10MB;
25 26

  
26 27
    /**
......
85 86
    }
86 87

  
87 88
    protected void loadPage(int row) {
88
        if(row>=firstRowOfPage && row<firstRowOfPage+rowsPerPage){
89
        if(!(row>=firstRowOfPage && row<firstRowOfPage+rowsPerPage)){
89 90
            return;
90 91
        }
91 92
        saveCurrentPage();
org.gvsig.raster/branches/org.gvsig.raster.2.4/org.gvsig.raster/org.gvsig.raster.lib/org.gvsig.raster.lib.legend/org.gvsig.raster.lib.legend.impl/src/main/java/org/gvsig/raster/lib/legend/impl/DefaultRasterLegend.java
34 34
/**
35 35
 * Default implementation of {@link RasterLegend}. This object can draw buffers
36 36
 * with a {@link ColorInterpretation}, {@link ColorTable} and {@link FilterList}
37
 * 
38
 * 
37
 *
38
 *
39 39
 * @author <a href="mailto:lmarques@disid.com">Lluis Marques</a>
40 40
 *
41 41
 */
......
70 70

  
71 71
    /**
72 72
     * Default {@link RasterLegend} constructor
73
     * 
73
     *
74 74
     * @param colorInterpretation
75 75
     *            Color interpretation of legend
76 76
     */
......
80 80

  
81 81
    /**
82 82
     * Default {@link RasterLegend} constructor
83
     * 
83
     *
84 84
     * @param colorTable
85 85
     *            Color table of legend
86 86
     * @param colorInterpretation
......
152 152
                        / viewPort.getImageWidth());
153 153
                double heightPixel =
154 154
                    getHeightPixel(bufferToDraw.getEnvelope(), viewPort.getEnvelope().getLength(1)
155
                        / viewPort.getImageWidth());
155
                        / viewPort.getImageHeight());
156 156

  
157 157
                bufferToDraw =
158 158
                    bufferToDraw.createInterpolated((int) Math.floor(heightPixel),
......
176 176
                        / viewPort.getImageWidth());
177 177
                heightPixel =
178 178
                    getHeightPixel(bufferToDraw.getEnvelope(), viewPort.getEnvelope().getLength(1)
179
                        / viewPort.getImageWidth());
179
                        / viewPort.getImageHeight());
180 180

  
181 181
                bufferToDraw =
182 182
                    bufferToDraw.createInterpolated((int) Math.floor(heightPixel),
......
276 276

  
277 277
        for (int i = 0; i < buffer.getRows(); i++) {
278 278
            for (int j = 0; j < buffer.getColumns(); j++) {
279

  
279
                //TODO Review this bucle
280 280
                int redBandIndex = colorInterpretation.getBand(ColorInterpretation.RED_BAND);
281 281
                int greenBandIndex = colorInterpretation.getBand(ColorInterpretation.GREEN_BAND);
282 282
                int blueBandIndex = colorInterpretation.getBand(ColorInterpretation.BLUE_BAND);
org.gvsig.raster/branches/org.gvsig.raster.2.4/org.gvsig.raster/org.gvsig.fmap.dal.file.jimi/src/test/java/org/gvsig/fmap/dal/file/jimi/JimiRasterStoreProviderTest.java
1 1
package org.gvsig.fmap.dal.file.jimi;
2 2

  
3 3
import java.io.File;
4
import java.net.MalformedURLException;
4 5
import java.net.URISyntaxException;
5 6
import java.net.URL;
6 7

  
......
25 26

  
26 27
    /**
27 28
     * Tests to read a png file
29
     * @throws MalformedURLException
28 30
     */
29 31
    public void testReadPng() {
30 32
        final String projection="EPSG:4326";
31 33
        final URL url = this.getClass().getResource("/pathcv.png");
32 34

  
33 35

  
36

  
34 37
        DataManager dataManager = DALLocator.getDataManager();
35 38
        try {
36 39
            File file=new File(url.toURI());
org.gvsig.raster/branches/org.gvsig.raster.2.4/org.gvsig.raster/org.gvsig.fmap.dal.file.jimi/src/main/java/org/gvsig/fmap/dal/file/jimi/MemoryImage.java
22 22
 */
23 23
package org.gvsig.fmap.dal.file.jimi;
24 24

  
25
import java.awt.image.ColorModel;
26
import java.awt.image.ImageConsumer;
27
import java.util.Hashtable;
28

  
25 29
import org.gvsig.raster.lib.buffer.api.BufferManager;
26 30

  
31
import com.sun.jimi.core.ImageAccessException;
27 32
import com.sun.jimi.core.raster.ByteRasterImage;
28 33
import com.sun.jimi.core.raster.IntRasterImage;
29 34
import com.sun.jimi.core.raster.JimiRasterImage;
......
33 38
 * @author dmartinezizquierdo
34 39
 *
35 40
 */
36
class MemoryImage {
41
class MemoryImage{
37 42
    public int rows;
38 43
    public int columns;
39 44
    public int bands;
40 45
    public byte buffer[][];
41 46
    public int dataType;
47
    private JimiRasterImage jimiRasterImage;
48
    public boolean loaded;
42 49

  
43
    public MemoryImage(JimiRasterImage jimiRasterImage) throws Exception {
50
    public MemoryImage(JimiRasterImage jimiRasterImage) throws ImageAccessException {
51
        this.jimiRasterImage=jimiRasterImage;
44 52
        rows=jimiRasterImage.getHeight();
45 53
        columns=jimiRasterImage.getWidth();
46 54
        bands=3;
......
48 56
            bands=4;
49 57
        }
50 58
        buffer = new byte[bands][columns*rows];
59

  
51 60
        for( int band=0; band<bands; band++) {
52 61
            switch (band) {
53 62
            case 0:
54
                jimiRasterImage.getChannelRectangle(JimiRasterImage.CHANNEL_RED,10, 10, 10, 10, buffer[band], 0, 5);
63
                jimiRasterImage.getChannelRectangle(JimiRasterImage.CHANNEL_RED, 0, 0, columns, rows, buffer[band], 0, columns);
55 64
                break;
56 65
            case 1:
57
                jimiRasterImage.getChannelRectangle(JimiRasterImage.CHANNEL_GREEN,0, 0, columns, rows, buffer[band], 0, 0);
66
                jimiRasterImage.getChannelRectangle(JimiRasterImage.CHANNEL_GREEN, 0, 0, columns, rows, buffer[band], 0, columns);
58 67
                break;
59 68
            case 2:
60
                jimiRasterImage.getChannelRectangle(JimiRasterImage.CHANNEL_BLUE,0, 0, columns, rows, buffer[band], 0, 0);
69
                jimiRasterImage.getChannelRectangle(JimiRasterImage.CHANNEL_BLUE, 0, 0, columns, rows, buffer[band], 0, columns);
61 70
                break;
62 71
            case 3:
63
                jimiRasterImage.getChannelRectangle(JimiRasterImage.CHANNEL_ALPHA,0, 0, columns, rows, buffer[band], 0, 0);
72
                jimiRasterImage.getChannelRectangle(JimiRasterImage.CHANNEL_ALPHA, 0, 0, columns, rows, buffer[band], 0, columns);
64 73
                break;
65 74
            default:
66 75
                break;
org.gvsig.raster/branches/org.gvsig.raster.2.4/org.gvsig.raster/org.gvsig.fmap.dal.file.jimi/src/main/java/org/gvsig/fmap/dal/file/jimi/JimiLibrary.java
31 31
import org.gvsig.fmap.dal.DALLibrary;
32 32
import org.gvsig.fmap.dal.DALLocator;
33 33
import org.gvsig.fmap.dal.FileHelper;
34
import org.gvsig.fmap.dal.spi.DALSPILocator;
34 35
import org.gvsig.fmap.dal.spi.DataManagerProviderServices;
35 36
import org.gvsig.metadata.exceptions.MetadataException;
36 37
import org.gvsig.tools.library.AbstractLibrary;
......
68 69
			exs.add(e);
69 70
		}
70 71

  
71
		DataManagerProviderServices dataman = (DataManagerProviderServices) DALLocator
72
				.getDataManager();
72
		DataManagerProviderServices dataman = DALSPILocator.getDataManagerProviderServices();
73 73

  
74

  
74 75
		try {
75 76
			if (!dataman.getStoreProviders().contains(JimiRasterStoreProvider.NAME)) {
76 77
				dataman.registerStoreProviderFactory(new JimiRasterStoreProviderFactory(JimiRasterStoreProvider.NAME, JimiRasterStoreProvider.DESCRIPTION));
org.gvsig.raster/branches/org.gvsig.raster.2.4/org.gvsig.raster/org.gvsig.fmap.dal.file.jimi/src/main/java/org/gvsig/fmap/dal/file/jimi/JimiRasterStoreProvider.java
22 22
 */
23 23
package org.gvsig.fmap.dal.file.jimi;
24 24

  
25
import java.awt.Canvas;
26
import java.awt.Image;
27
import java.awt.MediaTracker;
28
import java.awt.Toolkit;
29
import java.awt.image.ColorModel;
30
import java.awt.image.ImageConsumer;
31
import java.awt.image.ImageProducer;
32
import java.io.ByteArrayInputStream;
25 33
import java.io.File;
34
import java.io.FileInputStream;
26 35
import java.util.ArrayList;
36
import java.util.Hashtable;
27 37
import java.util.List;
28 38

  
39
import javax.swing.JFrame;
40

  
41
import org.apache.commons.io.FileUtils;
29 42
import org.apache.commons.io.FilenameUtils;
30 43
import org.cresques.cts.IProjection;
31 44
import org.gvsig.fmap.dal.DALLocator;
......
98 111
    private MemoryImage image = null;
99 112
    private Envelope envelope = null;
100 113
    private IProjection projection= null;
114
    private Canvas waitComponent = null;
101 115

  
102 116
    protected static void registerMetadataDefinition()
103 117
        throws MetadataException {
......
212 226
                    try {
213 227
                        File file = (File) resource.get();
214 228
                        resource.notifyOpen();
215
                        reader = Jimi.createJimiReader(file.toURI().toURL());
229
                        reader = Jimi.createJimiReader(file.toURI().toURL(),Jimi.SYNCHRONOUS);
216 230
                        reader.setProgressListener(new ProgressListener() {
217 231
                            @Override
218 232
                            public void setStarted() {
......
236 250
                                taskStatus.abort();
237 251
                            }
238 252
                        });
239
                        JimiRasterImage jimiRasterImage = reader.getRasterImage();
253
                        ByteArrayInputStream is = new ByteArrayInputStream(FileUtils.readFileToByteArray(file));
254

  
255
                        JimiRasterImage jimiRasterImage = Jimi.getRasterImage(is, Jimi.SYNCHRONOUS);
256
                        NewImageConsumer imageConsumer = new NewImageConsumer();
257
                        imageConsumer.addImage(jimiRasterImage);
258
                        imageConsumer.waitFor();
240 259
                        image = new MemoryImage(jimiRasterImage);
260

  
241 261
                        envelope = GeometryLocator.getGeometryManager().createEnvelope(0, 0, image.columns, image.rows, Geometry.SUBTYPES.GEOM2D);
242 262

  
243 263
                        resource.notifyClose();
......
250 270
                    }
251 271
                    return null;
252 272
                }
273

  
253 274
            });
254 275
        } catch (Exception e) {
255 276
            this.image = null;
......
336 357
        resource.removeConsumer(this);
337 358
    }
338 359

  
360
    private void waitImage(Image image)
361
    {
362

  
363
        if (waitComponent == null)
364
        {
365
            waitComponent = new Canvas();
366
        }
367
        MediaTracker tracker = new MediaTracker(waitComponent);
368
        tracker.addImage(image, 0);
369
        try
370
        {
371
            tracker.waitForAll();
372
        }
373
        catch (InterruptedException e)
374
        {
375
            // do nothing
376
        }
377
    }
378

  
379
    public class NewImageConsumer implements ImageConsumer, Runnable
380
    {
381
       private ImageProducer _ip;
382

  
383
       private Thread _thr;
384

  
385
       private boolean _f;
386

  
387
       private int _n;
388

  
389
       public void addImage(JimiRasterImage i)
390
       {
391
          _ip = i.getImageProducer();
392

  
393
          _ip.addConsumer(this);
394

  
395
          _thr = Thread.currentThread();
396

  
397
          _f = false;
398

  
399
          _n = -1;
400
       }
401

  
402
       public int waitFor()
403
       {
404
          new Thread(this).start();
405

  
406
          while (_f == false) _thr.suspend();
407

  
408
          return _n;
409
       }
410

  
411
       public void imageComplete(int nStatus)
412
       {
413
          _f = true;
414

  
415
          _n = nStatus;
416

  
417
          _ip.removeConsumer(this);
418

  
419
          _thr.resume();
420
       }
421

  
422
       public void run()
423
       {
424
          _ip.startProduction(this);
425
       }
426

  
427
       public void setColorModel(ColorModel cm)
428
       {
429
          ;
430
       }
431

  
432
       public void setDimensions(int w, int h)
433
       {
434
          ;
435
       }
436

  
437
       public void setHints(int nHints)
438
       {
439
          ;
440
       }
441

  
442
       public void setProperties(Hashtable htProperties)
443
       {
444
          ;
445
       }
446

  
447
       public void setPixels(int x, int y, int w, int h,
448
                             ColorModel cm, byte rgb[],
449
                             int nOffset, int nScansize)
450
       {
451
          ;
452
       }
453

  
454
       public void setPixels(int x, int y, int w, int h,
455
                             ColorModel cm, int rgn[],
456
                             int nOffset, int nScansize)
457
       {
458
          ;
459
       }
460
    }
461

  
339 462
}

Also available in: Unified diff