Revision 1036 trunk/libraries/libFMap/src/com/iver/cit/gvsig/fmap/ViewPort.java
ViewPort.java | ||
---|---|---|
1 |
/* Generated by Together */ |
|
2 | 1 |
package com.iver.cit.gvsig.fmap; |
3 | 2 |
|
3 |
import com.iver.utiles.StringUtilities; |
|
4 |
import com.iver.utiles.XMLEntity; |
|
5 |
|
|
6 |
import org.cresques.cts.GeoCalc; |
|
7 |
import org.cresques.cts.IProjection; |
|
8 |
import org.cresques.cts.ProjectionPool; |
|
9 |
import org.cresques.cts.gt2.CSUTM; |
|
10 |
|
|
4 | 11 |
import java.awt.Color; |
5 | 12 |
import java.awt.Dimension; |
6 | 13 |
import java.awt.Point; |
... | ... | |
8 | 15 |
import java.awt.geom.NoninvertibleTransformException; |
9 | 16 |
import java.awt.geom.Point2D; |
10 | 17 |
import java.awt.geom.Rectangle2D; |
18 |
|
|
11 | 19 |
import java.util.ArrayList; |
12 | 20 |
|
13 |
import org.cresques.cts.IProjection; |
|
14 |
import org.cresques.cts.ProjectionPool; |
|
15 |
import org.cresques.cts.GeoCalc; |
|
16 |
import org.cresques.cts.gt2.CSUTM; |
|
17 | 21 |
|
18 |
import com.iver.utiles.StringUtilities; |
|
19 |
import com.iver.utiles.XMLEntity; |
|
20 |
|
|
21 |
|
|
22 | 22 |
/** |
23 |
* DOCUMENT ME!
|
|
23 |
* Clase con atributos de la vista.
|
|
24 | 24 |
* |
25 | 25 |
* @author Vicente Caballero Navarro |
26 | 26 |
*/ |
... | ... | |
60 | 60 |
/** |
61 | 61 |
* Crea un nuevo ViewPort. |
62 | 62 |
* |
63 |
* @param proj DOCUMENT ME!
|
|
63 |
* @param proj Proyecci?n.
|
|
64 | 64 |
*/ |
65 | 65 |
public ViewPort(IProjection proj) { |
66 | 66 |
// Por defecto |
... | ... | |
68 | 68 |
} |
69 | 69 |
|
70 | 70 |
/** |
71 |
* DOCUMENT ME!
|
|
71 |
* A?ade un ViewPortListener al extentListener.
|
|
72 | 72 |
* |
73 |
* @param arg0 DOCUMENT ME!
|
|
73 |
* @param arg0 ViewPortListener.
|
|
74 | 74 |
* |
75 |
* @return DOCUMENT ME!
|
|
75 |
* @return True si ha sido a?adida correctamente.
|
|
76 | 76 |
*/ |
77 | 77 |
public boolean addExtentListener(ViewPortListener arg0) { |
78 | 78 |
return extentListeners.add(arg0); |
79 | 79 |
} |
80 | 80 |
|
81 | 81 |
/** |
82 |
* DOCUMENT ME!
|
|
82 |
* A?ade un ViewPortListener al colorListener.
|
|
83 | 83 |
* |
84 |
* @param arg0 DOCUMENT ME!
|
|
84 |
* @param arg0 ViewPortListener,
|
|
85 | 85 |
* |
86 |
* @return DOCUMENT ME!
|
|
86 |
* @return True si ha sido a?adida correctamente.
|
|
87 | 87 |
*/ |
88 | 88 |
public boolean addColorListener(ViewPortListener arg0) { |
89 | 89 |
return colorListeners.add(arg0); |
90 | 90 |
} |
91 | 91 |
|
92 | 92 |
/** |
93 |
* DOCUMENT ME! |
|
93 |
* Borra el ViewPortListener que se pasa como par?metro delos |
|
94 |
* extentListener. |
|
94 | 95 |
* |
95 |
* @param arg0 DOCUMENT ME!
|
|
96 |
* @param arg0 ViewPortListener.
|
|
96 | 97 |
* |
97 |
* @return DOCUMENT ME!
|
|
98 |
* @return True si ha sido borrado correctamente.
|
|
98 | 99 |
*/ |
99 | 100 |
public boolean removeExtentListener(ViewPortListener arg0) { |
100 | 101 |
return extentListeners.remove(arg0); |
101 | 102 |
} |
102 | 103 |
|
103 | 104 |
/** |
104 |
* DOCUMENT ME! |
|
105 |
* Borra el ViewPortListener que se pasa como par?metro delos |
|
106 |
* colorListener. |
|
105 | 107 |
* |
106 |
* @param arg0 DOCUMENT ME!
|
|
108 |
* @param arg0 ViewPortListener.
|
|
107 | 109 |
* |
108 |
* @return DOCUMENT ME!
|
|
110 |
* @return True si ha sido borrado correctamente.
|
|
109 | 111 |
*/ |
110 | 112 |
public boolean removeColorListener(ViewPortListener arg0) { |
111 | 113 |
return colorListeners.remove(arg0); |
112 | 114 |
} |
113 | 115 |
|
114 | 116 |
/** |
115 |
* DOCUMENT ME!
|
|
117 |
* Devuelve la distancia en pixels a partir de una distancia real.
|
|
116 | 118 |
* |
117 |
* @param d DOCUMENT ME!
|
|
119 |
* @param d Distancia real.
|
|
118 | 120 |
* |
119 |
* @return DOCUMENT ME!
|
|
121 |
* @return Distancia en pixels.
|
|
120 | 122 |
*/ |
121 | 123 |
public int fromMapDistance(double d) { |
122 | 124 |
Point2D.Double pWorld = new Point2D.Double(1, 1); |
... | ... | |
137 | 139 |
} |
138 | 140 |
|
139 | 141 |
/** |
140 |
* DOCUMENT ME!
|
|
142 |
* Devuelve un punto en pixels a partir de una coordenada X e Y real.
|
|
141 | 143 |
* |
142 |
* @param x DOCUMENT ME!
|
|
143 |
* @param y DOCUMENT ME!
|
|
144 |
* @param x Coordenada X real.
|
|
145 |
* @param y Coordenada Y real.
|
|
144 | 146 |
* |
145 |
* @return DOCUMENT ME!
|
|
147 |
* @return Punto en pixels.
|
|
146 | 148 |
*/ |
147 | 149 |
public Point2D fromMapPoint(double x, double y) { |
148 | 150 |
Point2D.Double pWorld = new Point2D.Double(x, y); |
... | ... | |
161 | 163 |
|
162 | 164 |
return pScreen; |
163 | 165 |
} |
166 |
|
|
167 |
/** |
|
168 |
* Devuelve el punto en pixels a partir de un punto real. |
|
169 |
* |
|
170 |
* @param point Punto real. |
|
171 |
* |
|
172 |
* @return Punto en pixels. |
|
173 |
*/ |
|
164 | 174 |
public Point2D fromMapPoint(Point2D point) { |
165 |
return fromMapPoint(point.getX(),point.getY()); |
|
175 |
return fromMapPoint(point.getX(), point.getY());
|
|
166 | 176 |
} |
167 | 177 |
|
168 | 178 |
/** |
169 |
* DOCUMENT ME!
|
|
179 |
* Devuelve un punto real a partir de una coordenada X e Y en pixels.
|
|
170 | 180 |
* |
171 |
* @param x DOCUMENT ME!
|
|
172 |
* @param y DOCUMENT ME!
|
|
181 |
* @param x Coordenada X en pixels.
|
|
182 |
* @param y Coordenada Y en pixels.
|
|
173 | 183 |
* |
174 |
* @return DOCUMENT ME!
|
|
184 |
* @return Punto real.
|
|
175 | 185 |
*/ |
176 | 186 |
public Point2D toMapPoint(int x, int y) { |
177 | 187 |
Point pScreen = new Point(x, y); |
... | ... | |
180 | 190 |
} |
181 | 191 |
|
182 | 192 |
/** |
183 |
* DOCUMENT ME!
|
|
193 |
* Devuelve la distancia real a partir de la distancia en pixels.
|
|
184 | 194 |
* |
185 |
* @param d DOCUMENT ME!
|
|
195 |
* @param d Distancia en pixels.
|
|
186 | 196 |
* |
187 |
* @return DOCUMENT ME!
|
|
197 |
* @return Distancia real.
|
|
188 | 198 |
*/ |
189 | 199 |
public double toMapDistance(int d) { |
190 | 200 |
double dist = d / trans.getScaleX(); |
... | ... | |
193 | 203 |
} |
194 | 204 |
|
195 | 205 |
/** |
196 |
* DOCUMENT ME!
|
|
206 |
* Devuelve un punto real a partir de un punto en pixels.
|
|
197 | 207 |
* |
198 |
* @param pScreen DOCUMENT ME!
|
|
208 |
* @param pScreen Punto en pixels.
|
|
199 | 209 |
* |
200 |
* @return DOCUMENT ME!
|
|
210 |
* @return Punto real.
|
|
201 | 211 |
* |
202 |
* @throws RuntimeException DOCUMENT ME!
|
|
212 |
* @throws RuntimeException |
|
203 | 213 |
*/ |
204 | 214 |
public Point2D toMapPoint(Point2D pScreen) { |
205 | 215 |
Point2D.Double pWorld = new Point2D.Double(); |
... | ... | |
214 | 224 |
|
215 | 225 |
return pWorld; |
216 | 226 |
} |
217 |
|
|
227 |
|
|
218 | 228 |
/** |
219 |
* Calcula la distancia entre dos puntos en unidades de usuario. |
|
220 |
* Los puntos est?n en unidades de usuario. |
|
221 |
* Se tiene en cuenta la proyecci?n, con lo que es INDISPENSABLE que |
|
222 |
* la variable proj contenga el valor correcto de la proyecci?n. |
|
229 |
* Calcula la distancia entre dos puntos en unidades de usuario. Los puntos |
|
230 |
* est?n en unidades de usuario. Se tiene en cuenta la proyecci?n, con lo |
|
231 |
* que es INDISPENSABLE que la variable proj contenga el valor correcto de |
|
232 |
* la proyecci?n. |
|
233 |
* |
|
223 | 234 |
* @param pt1 |
224 | 235 |
* @param pt2 |
225 |
* @return |
|
236 |
* |
|
237 |
* @return distancia real. |
|
226 | 238 |
*/ |
227 | 239 |
public double distanceWorld(Point2D pt1, Point2D pt2) { |
228 | 240 |
double dist = -1; |
229 | 241 |
dist = pt1.distance(pt2); |
230 |
if (proj != null && !(proj instanceof CSUTM)) |
|
231 |
dist = new GeoCalc(proj).distanceVincenty(proj.toGeo(pt1), proj.toGeo(pt2)); |
|
242 |
|
|
243 |
if ((proj != null) && !(proj instanceof CSUTM)) { |
|
244 |
dist = new GeoCalc(proj).distanceVincenty(proj.toGeo(pt1), |
|
245 |
proj.toGeo(pt2)); |
|
246 |
} |
|
247 |
|
|
232 | 248 |
return dist; |
233 | 249 |
} |
234 | 250 |
|
235 | 251 |
/** |
236 |
* DOCUMENT ME!
|
|
252 |
* Rellena el extent anterior como actual.
|
|
237 | 253 |
*/ |
238 | 254 |
public void setPreviousExtent() { |
239 | 255 |
extent = extents.removePrev(); |
... | ... | |
246 | 262 |
} |
247 | 263 |
|
248 | 264 |
/** |
249 |
* DOCUMENT ME!
|
|
265 |
* Devuelve el extent.
|
|
250 | 266 |
* |
251 |
* @return DOCUMENT ME!
|
|
267 |
* @return Extent.
|
|
252 | 268 |
*/ |
253 | 269 |
public Rectangle2D getExtent() { |
254 | 270 |
return extent; |
255 | 271 |
} |
256 | 272 |
|
257 | 273 |
/** |
258 |
* DOCUMENT ME!
|
|
274 |
* Inserta el extent.
|
|
259 | 275 |
* |
260 |
* @param r DOCUMENT ME!
|
|
276 |
* @param r Extent.
|
|
261 | 277 |
*/ |
262 | 278 |
public void setExtent(Rectangle2D r) { |
263 | 279 |
if (extent != null) { |
... | ... | |
281 | 297 |
} |
282 | 298 |
|
283 | 299 |
/** |
284 |
* DOCUMENT ME!
|
|
300 |
* Inserta la escala.
|
|
285 | 301 |
* |
286 |
* @param scale DOCUMENT ME!
|
|
302 |
* @param scale escala.
|
|
287 | 303 |
*/ |
288 | 304 |
public void setScale(double scale) { |
289 | 305 |
this.scale = scale; |
... | ... | |
299 | 315 |
* Devuelve la escala. Debe estar siempre actualizada y no calcularse nunca |
300 | 316 |
* aqu? pues se utiliza en el dibujado para cada geometr?a |
301 | 317 |
* |
302 |
* @return |
|
318 |
* @return Escala.
|
|
303 | 319 |
*/ |
304 | 320 |
public double getScale() { |
305 | 321 |
return proj.getScale(extent.getMinX(), extent.getMaxX(), |
... | ... | |
307 | 323 |
} |
308 | 324 |
|
309 | 325 |
/** |
310 |
* DOCUMENT ME!
|
|
326 |
* Devuelve la matriz de transformaci?n.
|
|
311 | 327 |
* |
312 |
* @return |
|
328 |
* @return Matriz de transformaci?n.
|
|
313 | 329 |
*/ |
314 | 330 |
public AffineTransform getAffineTransform() { |
315 | 331 |
return trans; |
316 | 332 |
} |
317 | 333 |
|
318 | 334 |
/** |
319 |
* DOCUMENT ME!
|
|
335 |
* Devuelve las dimensiones de la imagen.
|
|
320 | 336 |
* |
321 | 337 |
* @return Returns the imageSize. |
322 | 338 |
*/ |
... | ... | |
325 | 341 |
} |
326 | 342 |
|
327 | 343 |
/** |
328 |
* DOCUMENT ME!
|
|
344 |
* Inserta las dimensiones de la imagen.
|
|
329 | 345 |
* |
330 | 346 |
* @param imageSize The imageSize to set. |
331 | 347 |
*/ |
... | ... | |
335 | 351 |
} |
336 | 352 |
|
337 | 353 |
/** |
338 |
* DOCUMENT ME!
|
|
354 |
* Llamada a los listeners tras el cambio de extent.
|
|
339 | 355 |
* |
340 |
* @param newRect DOCUMENT ME!
|
|
356 |
* @param newRect Extent.
|
|
341 | 357 |
*/ |
342 | 358 |
private void callExtentListeners(Rectangle2D newRect) { |
343 | 359 |
ExtentEvent ev = new ExtentEvent(newRect); |
... | ... | |
349 | 365 |
} |
350 | 366 |
|
351 | 367 |
/** |
352 |
* DOCUMENT ME!
|
|
368 |
* Llamada a los listeners tras el cambio de color.
|
|
353 | 369 |
* |
354 |
* @param c DOCUMENT ME!
|
|
370 |
* @param c Color.
|
|
355 | 371 |
*/ |
356 | 372 |
private void callColorListeners(Color c) { |
357 | 373 |
ColorEvent ce = new ColorEvent(c); |
... | ... | |
363 | 379 |
} |
364 | 380 |
|
365 | 381 |
/** |
382 |
* C?lculo de la matriz de transformaci?n. |
|
366 | 383 |
* |
384 |
* @throws RuntimeException |
|
367 | 385 |
*/ |
368 | 386 |
private void calculateAffineTransform() { |
369 | 387 |
if ((imageSize == null) || (extent == null) || |
... | ... | |
435 | 453 |
} |
436 | 454 |
|
437 | 455 |
/** |
438 |
* DOCUMENT ME!
|
|
456 |
* Inserta la desviaci?n.
|
|
439 | 457 |
* |
440 |
* @param p DOCUMENT ME!
|
|
458 |
* @param p Punto.
|
|
441 | 459 |
*/ |
442 | 460 |
public void setOffset(Point2D p) { |
443 | 461 |
offset = p; |
444 | 462 |
} |
445 | 463 |
|
446 | 464 |
/** |
447 |
* DOCUMENT ME!
|
|
465 |
* Inserta el color de fondo.
|
|
448 | 466 |
* |
449 |
* @param c DOCUMENT ME!
|
|
467 |
* @param c Color de fondo.
|
|
450 | 468 |
*/ |
451 | 469 |
public void setBackColor(Color c) { |
452 | 470 |
backColor = c; |
... | ... | |
454 | 472 |
} |
455 | 473 |
|
456 | 474 |
/** |
457 |
* DOCUMENT ME!
|
|
475 |
* Devuelve el color de fondo.
|
|
458 | 476 |
* |
459 |
* @return DOCUMENT ME!
|
|
477 |
* @return Color de fondo.
|
|
460 | 478 |
*/ |
461 | 479 |
public Color getBackColor() { |
462 | 480 |
return backColor; |
463 | 481 |
} |
464 | 482 |
|
465 | 483 |
/** |
466 |
* DOCUMENT ME!
|
|
484 |
* Devuelve el extent ajustado.
|
|
467 | 485 |
* |
468 | 486 |
* @return Returns the adjustedExtent. |
469 | 487 |
*/ |
... | ... | |
472 | 490 |
} |
473 | 491 |
|
474 | 492 |
/** |
475 |
* DOCUMENT ME!
|
|
493 |
* Devuelve la unidad de medida.
|
|
476 | 494 |
* |
477 | 495 |
* @return Returns the distanceUnits. |
478 | 496 |
*/ |
... | ... | |
481 | 499 |
} |
482 | 500 |
|
483 | 501 |
/** |
484 |
* DOCUMENT ME!
|
|
502 |
* Inserta la unidad de medida.
|
|
485 | 503 |
* |
486 | 504 |
* @param distanceUnits The distanceUnits to set. |
487 | 505 |
*/ |
... | ... | |
490 | 508 |
} |
491 | 509 |
|
492 | 510 |
/** |
493 |
* DOCUMENT ME!
|
|
511 |
* Devuelve la unidad de medida del mapa.
|
|
494 | 512 |
* |
495 | 513 |
* @return Returns the mapUnits. |
496 | 514 |
*/ |
... | ... | |
499 | 517 |
} |
500 | 518 |
|
501 | 519 |
/** |
502 |
* DOCUMENT ME!
|
|
520 |
* Inserta la unidad de medida del mapa.
|
|
503 | 521 |
* |
504 | 522 |
* @param mapUnits The mapUnits to set. |
505 | 523 |
*/ |
... | ... | |
508 | 526 |
} |
509 | 527 |
|
510 | 528 |
/** |
511 |
* DOCUMENT ME!
|
|
529 |
* Devuelve la anchura de la imagen.
|
|
512 | 530 |
* |
513 |
* @return DOCUMENT ME!
|
|
531 |
* @return anchura en pixels de la imagen.
|
|
514 | 532 |
*/ |
515 | 533 |
public int getImageWidth() { |
516 | 534 |
return imageSize.width; |
517 | 535 |
} |
518 | 536 |
|
519 | 537 |
/** |
520 |
* DOCUMENT ME!
|
|
538 |
* Devuelve la altura de la imagen.
|
|
521 | 539 |
* |
522 |
* @return DOCUMENT ME!
|
|
540 |
* @return altura de la imagen.
|
|
523 | 541 |
*/ |
524 | 542 |
public int getImageHeight() { |
525 | 543 |
return imageSize.height; |
526 | 544 |
} |
527 | 545 |
|
528 | 546 |
/** |
529 |
* DOCUMENT ME!
|
|
547 |
* Devuelve la distancia real de un pixel.
|
|
530 | 548 |
* |
531 |
* @return DOCUMENT ME!
|
|
549 |
* @return Distancia real de un pixel.
|
|
532 | 550 |
*/ |
533 | 551 |
public double getDist1pixel() { |
534 | 552 |
return dist1pixel; |
535 | 553 |
} |
536 | 554 |
|
537 | 555 |
/** |
538 |
* DOCUMENT ME!
|
|
556 |
* Inserta la distancia real de un pixel.
|
|
539 | 557 |
* |
540 |
* @param dist1pixel DOCUMENT ME!
|
|
558 |
* @param dist1pixel Distancia real de un pixel.
|
|
541 | 559 |
*/ |
542 | 560 |
public void setDist1pixel(double dist1pixel) { |
543 | 561 |
this.dist1pixel = dist1pixel; |
544 | 562 |
} |
545 | 563 |
|
546 | 564 |
/** |
547 |
* DOCUMENT ME!
|
|
565 |
* Devuelve la distancia real de tres pixel.
|
|
548 | 566 |
* |
549 |
* @return DOCUMENT ME!
|
|
567 |
* @return Distancia real de tres pixel.
|
|
550 | 568 |
*/ |
551 | 569 |
public double getDist3pixel() { |
552 | 570 |
return dist3pixel; |
553 | 571 |
} |
554 | 572 |
|
555 | 573 |
/** |
556 |
* DOCUMENT ME!
|
|
574 |
* Inserta la distancia real de tres pixels.
|
|
557 | 575 |
* |
558 |
* @param dist3pixel DOCUMENT ME!
|
|
576 |
* @param dist3pixel Distancia real de tres pixels.
|
|
559 | 577 |
*/ |
560 | 578 |
public void setDist3pixel(double dist3pixel) { |
561 | 579 |
this.dist3pixel = dist3pixel; |
562 | 580 |
} |
563 | 581 |
|
564 | 582 |
/** |
565 |
* DOCUMENT ME!
|
|
583 |
* Devuelve los Extents anteriores almacenados.
|
|
566 | 584 |
* |
567 | 585 |
* @return Returns the extents. |
568 | 586 |
*/ |
... | ... | |
571 | 589 |
} |
572 | 590 |
|
573 | 591 |
/** |
574 |
* DOCUMENT ME!
|
|
592 |
* Devuelve la proyecci?n.
|
|
575 | 593 |
* |
576 | 594 |
* @return Returns the proj. |
577 | 595 |
*/ |
... | ... | |
580 | 598 |
} |
581 | 599 |
|
582 | 600 |
/** |
583 |
* DOCUMENT ME!
|
|
601 |
* Inserta la proyecci?n.
|
|
584 | 602 |
* |
585 | 603 |
* @param proj The proj to set. |
586 | 604 |
*/ |
... | ... | |
589 | 607 |
} |
590 | 608 |
|
591 | 609 |
/** |
592 |
* DOCUMENT ME!
|
|
610 |
* Devuelve el XMLEntity.
|
|
593 | 611 |
* |
594 |
* @return DOCUMENT ME!
|
|
612 |
* @return XMLEntity.
|
|
595 | 613 |
*/ |
596 | 614 |
public XMLEntity getXMLEntity() { |
597 | 615 |
XMLEntity xml = new XMLEntity(); |
... | ... | |
638 | 656 |
} |
639 | 657 |
|
640 | 658 |
/** |
641 |
* DOCUMENT ME!
|
|
659 |
* Crea un nuevo ViewPort a partir del XMLEntity.
|
|
642 | 660 |
* |
643 |
* @param xml DOCUMENT ME!
|
|
661 |
* @param xml XMLEntity.
|
|
644 | 662 |
* |
645 |
* @return DOCUMENT ME!
|
|
663 |
* @return Nuevo ViewPort.
|
|
646 | 664 |
*/ |
647 | 665 |
public static ViewPort createFromXML(XMLEntity xml) { |
648 | 666 |
ViewPort vp = new ViewPort(null); |
... | ... | |
699 | 717 |
} |
700 | 718 |
|
701 | 719 |
/** |
702 |
* DOCUMENT ME!
|
|
720 |
* Clona el ViewPort.
|
|
703 | 721 |
* |
704 |
* @return DOCUMENT ME!
|
|
722 |
* @return ViewPort clonado.
|
|
705 | 723 |
*/ |
706 | 724 |
public ViewPort cloneViewPort() { |
707 | 725 |
return createFromXML(getXMLEntity()); |
708 | 726 |
} |
709 | 727 |
|
710 | 728 |
/** |
711 |
* DOCUMENT ME!
|
|
729 |
* Devuelve el String con datos del ViewPort.
|
|
712 | 730 |
* |
713 |
* @return DOCUMENT ME!
|
|
731 |
* @return Cadena con datos del ViewPort.
|
|
714 | 732 |
*/ |
715 | 733 |
public String toString() { |
716 | 734 |
String str; |
Also available in: Unified diff