Revision 2167 branches/gvSIG_GisPlanet/applications/appgvSIG/src/com/iver/cit/gvsig/RasterizerLayer.java

View differences:

RasterizerLayer.java
51 51
import java.awt.Graphics2D;
52 52
import java.awt.geom.Rectangle2D;
53 53
import java.awt.image.BufferedImage;
54
import java.util.ArrayList;
54 55

  
55 56
import javax.swing.JProgressBar;
56 57

  
57 58
import org.cresques.io.Rasterizer;
59
import org.cresques.io.raster.RasterBuf;
60
import org.cresques.io.raster.RasterStats;
61
import org.cresques.io.raster.RasterStats.History;
58 62

  
59 63
import com.iver.cit.gvsig.fmap.DriverException;
60 64
import com.iver.cit.gvsig.fmap.MapControl;
61 65
import com.iver.cit.gvsig.fmap.ViewPort;
62 66
import com.iver.cit.gvsig.fmap.layers.FLayers;
67
import com.iver.cit.gvsig.fmap.layers.FLyrRaster;
63 68
import com.iver.cit.gvsig.fmap.operations.Cancellable;
64 69

  
65 70
/**
......
78 83
	private Color			backgroundColor = null;
79 84
	private JProgressBar	progressBar = null;
80 85
	private double			incrProgressBar = 0;
81
	
86
	private boolean			firstRead = true;
87
    private int 			nBlocks = 0;
88
 	
82 89
	/**
83 90
	 * Calculo del viewPort
84 91
	 * @param vp
......
131 138

  
132 139
		calcViewPort(viewPort);
133 140
		
134
		int nBlocks = (int)(vp.getImageHeight()/sizeBlock);
141
		nBlocks = (int)(vp.getImageHeight()/sizeBlock);
135 142
		incrProgressBar = 100.0/((double)nBlocks);
136
		System.out.println("===>NBLOCKS="+nBlocks+" INCR="+incrProgressBar);
143
		//System.out.println("===>NBLOCKS="+nBlocks+" INCR="+incrProgressBar);
137 144
		
138 145
		//Tama?o de ?ltimo bloque en pixeles
139 146
		lastBlock = Math.round(vp.getImageHeight()-(nBlocks*sizeBlock));
......
162 169
			g.setColor(backgroundColor);
163 170
			g.fillRect(0, 0, viewPortBlock.getImageWidth(), viewPortBlock.getImageHeight());
164 171
			try{
172
				//Si es la primera lectura salvamos los valores de m?ximo y m?nimo para la aplicaci?n
173
				//de realce si la imagen es de 16 bits.
174
				if(firstRead){
175
					for(int i=0;i<flayers.getLayersCount();i++){
176
						if(flayers.getLayer(i) instanceof FLyrRaster){
177
							FLyrRaster raster = (FLyrRaster)flayers.getLayer(i);
178
							if(	raster.getSource().getDataType() == RasterBuf.TYPE_SHORT || 
179
								raster.getSource().getDataType() == RasterBuf.TYPE_USHORT){
180
								RasterStats stats = raster.getSource().getFilterStack().getStats();
181
								stats.history.add(stats.new History(raster.getName(), stats.minBandValue, stats.maxBandValue, stats.secondMinBandValue, stats.secondMaxBandValue));	
182
							}	
183
						}
184
					}
185
					firstRead = false;
186
				}
187
				
165 188
				flayers.draw(img, g, viewPortBlock,new Cancellable() {
166 189
					public boolean isCanceled() {
167 190
						return false;
168 191
					}
169 192
				});
193
									
194
				//Si es el ?ltimo bloque vaciamos el historial de m?ximos y m?nimos
195
				if((contBlocks+1)==nBlocks){
196
					for(int i=0;i<flayers.getLayersCount();i++){
197
						if(flayers.getLayer(i) instanceof FLyrRaster){
198
							FLyrRaster raster = (FLyrRaster)flayers.getLayer(i);
199
							if(	raster.getSource().getDataType() == RasterBuf.TYPE_SHORT || 
200
								raster.getSource().getDataType() == RasterBuf.TYPE_USHORT){
201
								raster.getSource().getFilterStack().getStats().history.clear();
202
								RasterStats stats = raster.getSource().getFilterStack().getStats();
203
							}
204
						}
205
					}
206
				}
207
					
208
				
170 209
			}catch (DriverException e) {
171 210
				e.printStackTrace();
172 211
			}

Also available in: Unified diff