Revision 4234 trunk/libraries/libFMap/src/com/iver/cit/gvsig/fmap/layers/Tiling.java

View differences:

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);

Also available in: Unified diff