Revision 5550 trunk/extensions/extGeoreferencing/src/org/gvsig/georeferencing/gui/panels/ZoomControlPanel.java
ZoomControlPanel.java | ||
---|---|---|
26 | 26 |
import javax.swing.JPanel; |
27 | 27 |
|
28 | 28 |
import org.gvsig.georeferencing.gui.dialogs.GeoreferencingDialog; |
29 |
import org.gvsig.georeferencing.utils.MathUtils; |
|
29 | 30 |
|
30 | 31 |
import com.iver.andami.PluginServices; |
31 | 32 |
import com.iver.cit.gvsig.fmap.DriverException; |
... | ... | |
61 | 62 |
/** |
62 | 63 |
* Estado de los botones cuando se ejecuta disableAllControls |
63 | 64 |
*/ |
64 |
private boolean[] buttonsState = new boolean[2];
|
|
65 |
private boolean[] buttonsState = new boolean[2]; |
|
65 | 66 |
/** |
66 | 67 |
* DisableAllControls ha sido ejecutada si est? a true esta variabled |
67 | 68 |
*/ |
68 |
private boolean disableAllControls = false; |
|
69 |
private boolean disableAllControls = false; |
|
70 |
/** |
|
71 |
* Factor multiplicador cuando hacemos zoom mas |
|
72 |
*/ |
|
73 |
private double zoomMas = 0.6; |
|
74 |
/** |
|
75 |
* Factor multiplicador cuando hacemos zoom menos |
|
76 |
*/ |
|
77 |
private double zoomMenos = 1.8; |
|
69 | 78 |
//**********************End Vars****************************** |
70 | 79 |
|
71 | 80 |
//**********************Methods******************************* |
... | ... | |
136 | 145 |
* Manejo de los controles zoom m?s y zoom menos |
137 | 146 |
*/ |
138 | 147 |
public void actionPerformed(ActionEvent e) { |
139 |
if(e.getSource() == bZoomMas){ |
|
140 |
canvas.calcZoom(0.6); |
|
141 |
canvas.draw = true; |
|
142 |
canvas.repaint(); |
|
143 |
} |
|
148 |
double zoom = zoomMas; |
|
144 | 149 |
|
150 |
if(e.getSource() == bZoomMas) |
|
151 |
canvas.calcZoom(zoomMas); |
|
152 |
|
|
145 | 153 |
if(e.getSource() == bZoomMenos){ |
146 |
canvas.calcZoom(1.8); |
|
147 |
canvas.draw = true; |
|
148 |
canvas.repaint(); |
|
154 |
canvas.calcZoom(zoomMenos); |
|
155 |
zoom = zoomMenos; |
|
149 | 156 |
} |
157 |
|
|
158 |
canvas.draw = true; |
|
159 |
canvas.repaint(); |
|
160 |
if(isRightControl()) |
|
161 |
lyrPoints.getPoint(dialog.getSelectedPoint()).zoomLeft *= zoom; |
|
162 |
else |
|
163 |
lyrPoints.getPoint(dialog.getSelectedPoint()).zoomRight *= zoom; |
|
150 | 164 |
|
165 |
lyrPoints.showPoints(); |
|
151 | 166 |
} |
152 | 167 |
|
153 | 168 |
/** |
... | ... | |
194 | 209 |
/** |
195 | 210 |
* @param viewPort The viewPort to set. |
196 | 211 |
*/ |
197 |
public void setViewPort(ViewPort viewPort) { |
|
212 |
public void setViewPort(ViewPort viewPort, double zoom) {
|
|
198 | 213 |
this.viewPort = viewPort; |
199 |
getCanvas().setViewPort(this.viewPort); |
|
214 |
getCanvas().setViewPort(this.viewPort, zoom);
|
|
200 | 215 |
} |
201 | 216 |
|
202 | 217 |
/** |
... | ... | |
388 | 403 |
this.getCanvas().setEnableEvent(enabled); |
389 | 404 |
} |
390 | 405 |
|
406 |
/** |
|
407 |
* Obtiene el modificador de escala aplicado a zoom m?s |
|
408 |
* @return |
|
409 |
*/ |
|
410 |
public double getZoomMas() { |
|
411 |
return zoomMas; |
|
412 |
} |
|
413 |
|
|
414 |
/** |
|
415 |
* Obtiene el modificador de escala aplicado a zoom m?s |
|
416 |
* @return |
|
417 |
*/ |
|
418 |
public double getZoomMenos() { |
|
419 |
return zoomMenos; |
|
420 |
} |
|
421 |
|
|
391 | 422 |
//**********************End Setters & Getters***************** |
392 | 423 |
/** |
393 | 424 |
* Control que representa la zona de dibujado de la ventana. Este se encarga de |
... | ... | |
433 | 464 |
* Esta variable se usa para informar cuando debe recargarse el buffer de las miniimagenes. Si siempre |
434 | 465 |
* est? a true no para de llamar al draw de FLyers para que pinte sobre el minicanvas. |
435 | 466 |
*/ |
436 |
public boolean draw = true; |
|
467 |
public boolean draw = true; |
|
468 |
public boolean drawPoint = true; |
|
469 |
|
|
437 | 470 |
//**********************End Vars****************************** |
438 | 471 |
|
439 | 472 |
//**********************Classes******************************* |
... | ... | |
484 | 517 |
newViewPort.setScale(); |
485 | 518 |
} |
486 | 519 |
|
487 |
|
|
488 | 520 |
/** |
489 |
*Calculamos el viewPort para el zoom de la minimagen |
|
521 |
* Calculamos el viewPort para el zoom de la minimagen |
|
522 |
* @param vp ViewPort inicial |
|
523 |
* @param center Centro del ViewPort a calcular. |
|
524 |
* @param vpDest ViewPort de destino. Si este es null se crear? un nuevo ViewPort sino se asignar?n los cambios a este. |
|
525 |
* @return |
|
490 | 526 |
*/ |
491 |
public ViewPort initViewPort(ViewPort vp, Point2D center, ViewPort vpDest){ |
|
492 |
if(center != null){ |
|
493 |
|
|
527 |
public ViewPort initViewPort(ViewPort vp, Point2D center, ViewPort vpDest, double zoom){ |
|
528 |
if(center != null){ |
|
494 | 529 |
//Hallamos la relaci?n entre el pixel y las WC a partir de la imagen de la capa |
495 | 530 |
double relacionPixelWcWidth = ((vp.getExtent().getMaxX() - vp.getExtent().getMinX()) / initZoom) / ancho; |
496 | 531 |
double relacionPixelWcHeight = ((vp.getExtent().getMaxY() - vp.getExtent().getMinY()) / initZoom) / alto; |
... | ... | |
513 | 548 |
newViewPort.setExtent(ext); |
514 | 549 |
newViewPort.setImageSize(new java.awt.Dimension(ancho, alto)); |
515 | 550 |
newViewPort.setScale(); |
551 |
if(zoom != 1 && zoom != 0) |
|
552 |
newViewPort = MathUtils.calcZoom(newViewPort, zoom); |
|
516 | 553 |
return newViewPort; |
517 | 554 |
}else{ |
518 | 555 |
vpDest.setExtent(ext); |
519 | 556 |
vpDest.setScale(); |
557 |
if(zoom != 1 && zoom != 0) |
|
558 |
vpDest = MathUtils.calcZoom(vpDest, zoom); |
|
520 | 559 |
return vpDest; |
521 | 560 |
} |
522 | 561 |
|
... | ... | |
537 | 576 |
gTmp.fillRect( 0,0,ancho,alto ); |
538 | 577 |
|
539 | 578 |
try{ |
540 |
if(newViewPort != null){ |
|
541 |
if(zoomControl.getNumberPoint() != -1){//Salvamos el miniextent si hay puntos en la lista |
|
542 |
if(!zoomControl.isRightControl()) |
|
543 |
zoomControl.getLyrPoints().setMiniExtent(zoomControl.getNumberPoint(), |
|
544 |
centerPoint, |
|
545 |
newViewPort, |
|
546 |
true); |
|
547 |
else |
|
548 |
zoomControl.getLyrPoints().setMiniExtent(zoomControl.getNumberPoint(), |
|
549 |
centerPoint, |
|
550 |
newViewPort, |
|
551 |
false); |
|
552 |
} |
|
579 |
if(newViewPort != null){ |
|
553 | 580 |
//Si no tenemos las capas las cargamos |
554 | 581 |
if(flayers == null){ |
555 | 582 |
View theView = null; |
... | ... | |
859 | 886 |
* Asigna el viewPort |
860 | 887 |
* @param vp ViewPort |
861 | 888 |
*/ |
862 |
public void setViewPort(ViewPort vp){ |
|
863 |
this.initViewPort(vp, this.centerPoint, null); |
|
889 |
public void setViewPort(ViewPort vp, double zoom){
|
|
890 |
this.initViewPort(vp, this.centerPoint, null, zoom);
|
|
864 | 891 |
} |
865 | 892 |
|
866 | 893 |
/** |
... | ... | |
894 | 921 |
public void setEnableEvent(boolean enableEvent) { |
895 | 922 |
this.enableEvent = enableEvent; |
896 | 923 |
} |
924 |
|
|
897 | 925 |
//**********************End Setters & Getters***************** |
898 | 926 |
|
899 | 927 |
} |
Also available in: Unified diff