Revision 4234 trunk/libraries/libFMap/src/com/iver/cit/gvsig/fmap/layers/Tiling.java
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