Revision 4234

View differences:

trunk/libraries/libFMap/src/com/iver/cit/gvsig/fmap/layers/StatusLayerRaster.java
45 45
import org.cresques.io.GeoRasterFile;
46 46
import org.cresques.io.raster.RasterFilterStackManager;
47 47

  
48
import com.iver.cit.gvsig.fmap.MapControl;
48 49
import com.iver.utiles.XMLEntity;
49 50

  
50 51
/**
......
58 59
 */
59 60
public class StatusLayerRaster implements StatusRasterInterface{
60 61

  
61
	public String 					clase = "com.iver.cit.gvsig.fmap.layers.StatusLayerRaster";
62
	public static String 			defaultClass = "com.iver.cit.gvsig.fmap.layers.StatusLayerRaster";
62 63
	
63 64
	//Valor de opacidad global de la imagen
64 65
	public int						transparency = 0;
......
74 75
	//Filtros para poder montar una nueva pila
75 76
	public ArrayList				filters = new ArrayList();
76 77

  
78
	private boolean 				isPansharpInStack = false;
79
	
77 80
	/* (non-Javadoc)
78 81
	 * @see com.iver.cit.gvsig.fmap.layers.StatusRasterInterface#setXMLEntity(com.iver.utiles.XMLEntity)
79 82
	 */
80 83
	public void setXMLEntity(XMLEntity xml, RasterOperations layer)throws XMLException {
84
	
85
		//Recuperamos las propiedades de los filtros
86
		for(int i=0;i<xml.getPropertyCount();i++){
87
			if(xml.getPropertyName(i).startsWith("filter.")){
88
				if(xml.getPropertyName(i).startsWith("filter.pansharpening"))
89
					isPansharpInStack = true;
90
				filters.add(xml.getPropertyName(i)+"="+xml.getPropertyValue(i));
91
			}
92
		}
93
		
81 94
		if (xml.contains("raster.opacityLevel")) {
82 95
			transparency = xml.getIntProperty("raster.opacityLevel");
83 96
		}
......
99 112
			}else 
100 113
				break;
101 114
		}
102
		
103
		//Recuperamos las propiedades de los filtros
104
		for(int i=0;i<xml.getPropertyCount();i++){
105
			if(xml.getPropertyName(i).startsWith("filter.")){
106
				filters.add(xml.getPropertyName(i)+"="+xml.getPropertyValue(i));
107
			}
108
		}
109
		
110 115
	}
111 116
	
112 117

  
......
116 121
	public void getXMLEntity(XMLEntity xml, boolean loadClass, RasterOperations layer) throws XMLException {
117 122
		
118 123
		if(loadClass)
119
			xml.putProperty("raster.class", clase);
124
			xml.putProperty("raster.class", StatusLayerRaster.defaultClass);
120 125
		
121 126
		if(transparency!=255)
122 127
			xml.putProperty("raster.opacityLevel", ""+transparency);
......
148 153
			l = filters;
149 154
		
150 155
					 
151
		for(int i=0;i<l.size();i++){
156
		for(int i=0;i<l.size();i++)
152 157
			xml.putProperty(getElem((String)l.get(i)), getValue((String)l.get(i)));
153
			//System.out.println("==>"+getElem((String)l.get(i))+" "+getValue((String)l.get(i)));
154
		}
155 158
	}
156 159
	
157 160
	/**
......
189 192
	 * @see com.iver.cit.gvsig.fmap.layers.StatusRasterInterface#applyStatus(com.iver.cit.gvsig.fmap.layers.RasterFileAdapter)
190 193
	 */
191 194
	public void applyStatus(RasterOperations layer){
192
		
193
		//Crea la pila de filtros a partir de las propiedades recuperadas desde el XML
194
		
195
		if(layer.getFilterStack() != null){
196
			RasterFilterStackManager stackManager 
197
				= new RasterFilterStackManager(layer.getFilterStack());
198
					
199
			stackManager.createStackFromStrings(this.filters);
200
		}
201
								
195
										
202 196
		//Eliminamos el fichero inicial y cargamos las bandas si hay para que se carguen 
203 197
		//en el orden correcto
204 198
		if(layer instanceof FLyrRaster){
......
221 215
		
222 216
		if(transparency!=255)
223 217
			layer.setTransparency(transparency);
218
		
219
		//Crea la pila de filtros a partir de las propiedades recuperadas desde el XML
220
		if(layer.getFilterStack() != null){
221
			RasterFilterStackManager stackManager = new RasterFilterStackManager(layer.getFilterStack());
222
			if(this.isPansharpInStack)
223
				stackManager.createStackFromStrings(this.filters, ((FLyrRaster)layer).getSource().getFiles());
224
			else
225
				stackManager.createStackFromStrings(this.filters);
226
		}
224 227
			
225
			
226 228
	}
227 229
}
trunk/libraries/libFMap/src/com/iver/cit/gvsig/fmap/layers/Tiling.java
31 31
	int numRows, numCols;
32 32
	double [][] srcPts;
33 33
	Rectangle [] tile;
34
	double width = 500, height = 500;
34 35
	
35 36
	AffineTransform mat;
36 37
	ViewPort vp;
......
40 41
		tileMaxHeight = tileH;
41 42
		
42 43
        int stepX, stepY;
43
        int xProv, yProv, wProv, hProv;
44
        double xProvD, yProvD, wProvD, hProvD;
44
        int xProv, yProv;
45 45
        int altoAux, anchoAux;
46 46
        
47 47
        // Vamos a hacerlo en trozos de AxH
......
128 128
		return tileMaxWidth;
129 129
	}
130 130
	
131
	ViewPort[] viewPortList = null;
132
	private void calcViewPort(ViewPort viewPort)throws NoninvertibleTransformException{
133
		viewPortList = new ViewPort[numCols*numRows];
134
		
135
		if(viewPort.getImageWidth() < width && viewPort.getImageHeight() < height){
136
			viewPortList[0] = viewPort;
137
			return;
138
		}
139
		
140
	    int vpCnt = 0;
141

  
142
	    double imgPxX = viewPort.getImageWidth();
143
	    double dWcX = viewPort.getAdjustedExtent().getWidth();
144
	    double tileWcW = (getTile(vpCnt).getSize().getWidth() * dWcX) / imgPxX;
145
	    
146
	    double imgPxY = viewPort.getImageHeight();
147
	    double dWcY = viewPort.getAdjustedExtent().getHeight();
148
	    double tileWcH = (getTile(vpCnt).getSize().getHeight() * dWcY) / imgPxY;
149
	   
150
	    viewPortList[0] = viewPort.cloneViewPort();
151
	    viewPortList[0].setImageSize(getTile(vpCnt).getSize());
152
	    viewPortList[0].setExtent(new Rectangle2D.Double(viewPort.getAdjustedExtent().getMinX(), viewPort.getAdjustedExtent().getMaxY() - tileWcH, tileWcW, tileWcH));
153
	    viewPortList[0].setAffineTransform(mat);
154

  
155
	    double wt = tileWcW;
156
	    double ht = tileWcH;
157
	    double xt = viewPort.getAdjustedExtent().getMinX();
158
	    double yt = viewPort.getAdjustedExtent().getMaxY() - tileWcH;
159
	    
160
	    for (int stepY=0; stepY < numRows; stepY++) {
161
	    	wt = tileWcW;
162
	    	xt = viewPort.getAdjustedExtent().getMinX();
163
	    	for (int stepX=0; stepX < numCols; stepX++) {
164
	    		vpCnt = stepY*numCols+stepX;
165
	    		if(vpCnt > 0){
166
	    			if(stepX > 0)
167
	    				xt += wt;
168
	    			if((xt + wt) > viewPort.getAdjustedExtent().getMaxX())
169
	    				wt = Math.abs(viewPort.getAdjustedExtent().getMaxX() - xt);
170

  
171
	    			viewPortList[vpCnt] = viewPort.cloneViewPort();
172
	    			viewPortList[vpCnt].setImageSize(getTile(vpCnt).getSize());
173
	    			viewPortList[vpCnt].setExtent(new Rectangle2D.Double(xt, yt, wt, ht));
174
	    			viewPortList[vpCnt].setAffineTransform(mat);
175

  
176
	    		}
177
	    		//System.out.println("ViewPort: "+vpCnt+" "+viewPortList[vpCnt].getAdjustedExtent()+" "+getTile(vpCnt).getSize());
178
	    	}
179
	    	if((yt - ht) < viewPort.getAdjustedExtent().getMinY()){
180
	    		ht = Math.abs(yt - viewPort.getAdjustedExtent().getMinY());
181
	    		yt = viewPort.getAdjustedExtent().getMinY();
182
	    	}else
183
	    		yt -= ht;
184
	    }
185
	}
186
	
131 187
	public ViewPort getTileViewPort(ViewPort viewPort, int tileNr) throws NoninvertibleTransformException {
188
		/*if(viewPortList == null)
189
			this.calcViewPort(viewPort);
190
		return viewPortList[tileNr];*/
132 191
		double [] dstPts = new double[8];
133 192
		double [] srcPts = getTilePts(tileNr);
134 193
		Rectangle tile = getTile(tileNr);
trunk/libraries/libFMap/src/com/iver/cit/gvsig/fmap/layers/FLyrRaster.java
365 365
		}
366 366
	
367 367
		xml.putProperty("driverName", getSource().getDriver().getName());
368
		//xml.putProperty("raster.opacityLevel", ""+getTransparency());
369
		if(status!=null)
370
			status.getXMLEntity(xml, true, this);
368
		
369
		//Si no hay ning?n Status aplicamos el StatusLayerRaster que se usa por defecto
370
		if(status == null)
371
			status = new StatusLayerRaster();
372
		
373
		status.getXMLEntity(xml, true, this);
374
		
371 375
	
372 376
		return xml;
373 377
	}
......
401 405
			setSource(adapter);
402 406
			// Para notificar al adapter-driver cual es la proyecci?n.
403 407
			setProjection(super.getProjection());
404
			String claseStr = null;
408
			
409
			//Inicializamos la clase a la que se usa por defecto para
410
			//compatibilidad con proyectos antiguos
411
			String claseStr = StatusLayerRaster.defaultClass;
405 412
			if (xml.contains("raster.class")) {
406 413
				claseStr = xml.getStringProperty("raster.class");
407 414
			}

Also available in: Unified diff