Revision 12749 trunk/libraries/libRaster/src/org/gvsig/raster/dataset/io/MrSidDriver.java

View differences:

MrSidDriver.java
186 186
		return file.isSupersampling;
187 187
	}
188 188

  
189
	public IBuffer getWindowRaster(double ulx, double uly, double lrx, double lry, BandList bandList, IBuffer rasterBuf) {
190
		//TODO: FUNCIONALIDAD: Hacer caso del bandList
191
		int width = rasterBuf.getWidth();
192
		int height = rasterBuf.getHeight();
193
				
194
		//Impedimos que los valores de ancho y alto de la im?gen sean menores que 1
195
        if (width <= 0) 
196
        	width = 1;
197
        
198
        if (height <= 0) 
199
        	height = 1;
200
        
201
        setView(new Extent(ulx, uly, lrx, lry));
202
		file.setView(viewRequest.minX(), viewRequest.maxY(), viewRequest.maxX(), viewRequest.minY(), width, height);
203
		
204
		int[] pRGBArray = new int[width * height];
205

  
206
        try {
207
        	file.readScene(pRGBArray);
208
        	int wBuf = rasterBuf.getWidth();
209
        	for (int row = 0; row < rasterBuf.getHeight(); row++) {
210
	            for(int col = 0; col < wBuf; col ++) {
211
	            	rasterBuf.setElem(row, col, 0, (byte)((pRGBArray[(row * wBuf) + col] & 0x00ff0000) >> 16));
212
	            	rasterBuf.setElem(row, col, 1, (byte)((pRGBArray[(row * wBuf) + col] & 0x0000ff00) >> 8));
213
	            	rasterBuf.setElem(row, col, 2, (byte)(pRGBArray[(row * wBuf) + col] & 0x000000ff));
214
	            }
215
	        }
216
        } catch (Exception e) {
217
        	e.printStackTrace();
218
        }
219
        return rasterBuf;
220
	}
221
	
189 222
	/*
190 223
	 * (non-Javadoc)
191 224
	 * @see org.gvsig.raster.dataset.RasterDataset#getWindowRaster(double, double, double, double, org.gvsig.raster.dataset.BandList, org.gvsig.raster.dataset.IBuffer, boolean)

Also available in: Unified diff