Revision 5550

View differences:

trunk/extensions/extGeoreferencing/src/com/iver/cit/gvsig/fmap/layers/IGeoUi.java
43 43
	public int getSelectedPoint();
44 44
	public int getWidth();
45 45
	public int getHeight();
46
	
46 47
	/**
47
	 * 
48
	 * Obtiene el viewPort inicial de la miniimagen de la izquierda. Esta es la que tiene
49
	 * las coordenadas en pixeles.
48 50
	 * @param vp
49 51
	 * @param p
50 52
	 * @param initVp
53
	 * @param zoom
51 54
	 * @return
52 55
	 */
53
	public ViewPort getLeftInitViewport(ViewPort vp, Point2D center, ViewPort initVp);
56
	public ViewPort getLeftInitViewport(ViewPort vp, Point2D center, ViewPort initVp, double zoom);
54 57
	
55 58
	/**
56 59
	 * A partir de nuevas coordenadas actualiza la vista, minimagen, capa de puntos el
trunk/extensions/extGeoreferencing/src/com/iver/cit/gvsig/fmap/layers/GeoPoint.java
37 37
	public Point2D 	mapPoint = null;
38 38
	public ViewPort leftViewPort =  null, rightViewPort = null;
39 39
	public Point2D  leftCenterPoint = null, rightCenterPoint = null;
40
	public double zoomLeft = 1, zoomRight = 1;
40 41
	public boolean 	active = true;
41 42
	
42 43
	/**
......
100 101
		System.out.println("Left Zoom Center: "+leftCenterPoint);
101 102
		System.out.println("Right Zoom Center: "+rightCenterPoint);
102 103
		System.out.println("Active: "+active);
104
		System.out.println("ZoomLeft: "+zoomLeft);
105
		System.out.println("ZoomRight: "+zoomRight);
103 106
		System.out.println("******End GeoPoint********");
104 107
	}
105 108
}
trunk/extensions/extGeoreferencing/src/com/iver/cit/gvsig/fmap/layers/FLyrPoints.java
517 517
	 * Muestra en consola los puntos de la capa
518 518
	 */
519 519
	public void showPoints(){
520
		for(int i=0;i<pointList.size();i++){
521
			if(((GeoPoint)pointList.get(i)).pixelPoint != null && ((GeoPoint)pointList.get(i)).mapPoint != null){
522
				System.out.println("PUNTO "+i+": ");
523
				System.out.println("pix->"+((GeoPoint)pointList.get(i)).pixelPoint.getX()+" "+((GeoPoint)pointList.get(i)).pixelPoint.getY());
524
				System.out.println("map->"+((GeoPoint)pointList.get(i)).mapPoint.getX()+" "+((GeoPoint)pointList.get(i)).mapPoint.getY());
525
				System.out.println("extRight->"+((GeoPoint)pointList.get(i)).rightViewPort.getExtent());
526
				System.out.println("extLeft->"+((GeoPoint)pointList.get(i)).leftViewPort.getExtent());
527
			}else
528
				System.out.println("PUNTO "+i+": NULL");
529
		}
520
		for(int i=0;i<pointList.size();i++)
521
			((GeoPoint)pointList.get(i)).show();
530 522
	}
531 523

  
532 524
	/**
......
703 695
	 * @param p Punto asignado
704 696
	 */
705 697
	public void setLeftCenterPoint(int pos, Point2D p){
706
		getPoint(pos).leftCenterPoint = p;
698
		try{
699
			getPoint(pos).leftCenterPoint = p;
700
		}catch(NullPointerException ex){
701
			//Si getPoint devuelve null es que hemos intentado acceder a una posici?n que no 
702
			//existe por lo que no asignamos ningun valor.
703
		}
707 704
	}
708 705
	
709 706
	/**
......
713 710
	 * @param p Punto asignado
714 711
	 */
715 712
	public void setRightCenterPoint(int pos, Point2D p){
716
		getPoint(pos).rightCenterPoint = p;
713
		try{
714
			getPoint(pos).rightCenterPoint = p;
715
		}catch(NullPointerException ex){
716
			//Si getPoint devuelve null es que hemos intentado acceder a una posici?n que no 
717
			//existe por lo que no asignamos ningun valor.
718
		}
717 719
	}
718 720
	
719 721
	/**
......
723 725
	 * @param vp ViewPort asignado
724 726
	 */
725 727
	public void setLeftViewPort(int pos, ViewPort vp){
726
		getPoint(pos).leftViewPort = vp;
728
		try{
729
			getPoint(pos).leftViewPort = vp;
730
		}catch(NullPointerException ex){
731
			//Si getPoint devuelve null es que hemos intentado acceder a una posici?n que no 
732
			//existe por lo que no asignamos ningun valor.
733
		}
727 734
	}
728 735
	
729 736
	/**
737
	 * Asigna el zoom al punto de una posici?n. Este zoom es el que corresponde
738
	 * a la miniimagen de la izquierda, es decir la que tiene las coordenadas en pixeles.
739
	 * @param pos Posici?n del punto a asignar el zoom
740
	 * @param zoom Zoom a asignar.
741
	 */
742
	public void setZoomLeft(int pos, double zoom){
743
		try{
744
			getPoint(pos).zoomLeft = zoom;
745
		}catch(NullPointerException ex){
746
			//Si getPoint devuelve null es que hemos intentado acceder a una posici?n que no 
747
			//existe por lo que no asignamos ningun valor.
748
		}
749
	}
750
	
751
	/**
752
	 * Asigna el zoom al punto de una posici?n. Este zoom es el que corresponde
753
	 * a la miniimagen de la derecha, es decir la que tiene las coordenadas relativas
754
	 * al mundo real.
755
	 * @param pos Posici?n del punto a asignar el zoom
756
	 * @param zoom Zoom a asignar.
757
	 */
758
	public void setZoomRight(int pos, double zoom){
759
		try{
760
			getPoint(pos).zoomRight = zoom;
761
		}catch(NullPointerException ex){
762
			//Si getPoint devuelve null es que hemos intentado acceder a una posici?n que no 
763
			//existe por lo que no asignamos ningun valor.
764
		}
765
	}
766
	
767
	/**
768
	 * Obtiene el zoom de un punto y posici?n. Este zoom es el que corresponde
769
	 * a la miniimagen de la izquierda, es decir la que tiene las coordenadas en pixeles.
770
	 * @param pos Posici?n del punto a asignar el zoom
771
	 * @return Zoom a asignado.
772
	 */
773
	public double getZoomLeft(int pos){
774
		try{
775
			return getPoint(pos).zoomLeft;
776
		}catch(NullPointerException ex){
777
			//Si getPoint devuelve null es que hemos intentado acceder a una posici?n que no 
778
			//existe por lo que devolvemos un zoom de 1.0.
779
			return 1.0;
780
		}
781
	}
782
	
783
	/**
784
	 * Obtiene el zoom de un punto y posici?n. Este zoom es el que corresponde
785
	 * a la miniimagen de la derecha, es decir la que tiene las coordenadas relativas
786
	 * al mundo real.
787
	 * @param pos Posici?n del punto a asignar el zoom
788
	 * @return Zoom a asignado.
789
	 */
790
	public double getZoomRight(int pos){
791
		try{
792
			return getPoint(pos).zoomRight;
793
		}catch(NullPointerException ex){
794
			//Si getPoint devuelve null es que hemos intentado acceder a una posici?n que no 
795
			//existe por lo que devolvemos un zoom de 1.0.
796
			return 1.0;
797
		}
798
	}
799
	
800
	/**
730 801
	 * Devuelve el n?mero de puntos de la lista
731 802
	 * @return entero que representa el n?mero de puntos
732 803
	 */
......
802 873
	 *un punto
803 874
	 */
804 875
	public void setMiniExtent(int nPoint, Point2D centerPoint, ViewPort vp, boolean isRight){
876
		ViewPort viewPortBlock = new ViewPort(vp.getProjection());
877
		viewPortBlock.setExtent(vp.getExtent());
878
		viewPortBlock.setImageSize(vp.getImageSize());	
879
		viewPortBlock.setScale();
880
		
805 881
		if(isRight){
806
			((GeoPoint)pointList.get(nPoint)).rightCenterPoint = centerPoint;
807
			((GeoPoint)pointList.get(nPoint)).rightViewPort = vp;
882
			((GeoPoint)pointList.get(nPoint)).rightCenterPoint = (Point2D)centerPoint.clone();
883
			((GeoPoint)pointList.get(nPoint)).rightViewPort = viewPortBlock;
808 884
		}else{
809
			((GeoPoint)pointList.get(nPoint)).leftCenterPoint = centerPoint;
810
			((GeoPoint)pointList.get(nPoint)).leftViewPort = vp;
885
			((GeoPoint)pointList.get(nPoint)).leftCenterPoint = (Point2D)centerPoint;
886
			((GeoPoint)pointList.get(nPoint)).leftViewPort = viewPortBlock;
811 887
		}
812 888
	}
813 889
	
......
821 897
			return ((GeoPoint)pointList.get(nPoint)).rightViewPort;
822 898
		else
823 899
			return ((GeoPoint)pointList.get(nPoint)).leftViewPort;
824
		
825 900
	}
826 901
	
827 902
	/**
trunk/extensions/extGeoreferencing/src/com/iver/cit/gvsig/fmap/tools/Behavior/GeoRedimBehavior.java
218 218
			double maxX = lyrGeoRaster.getAssignExtent().getMax().getX();
219 219
			double maxY = lyrGeoRaster.getAssignExtent().getMax().getY();
220 220
			
221
			
222 221
			if(iconActive[0]){//Estirar en horizontal activado
223 222
				if(wcX > (maxX - WIDTH_BORDER) && wcX < maxX)
224 223
					redimActive[0] = true;
......
236 235
				pointInit = e.getPoint();
237 236
				rectInit =  new Rectangle2D.Double(tmpUl.getX(), tmpUl.getY(), tmpLr.getX() - tmpUl.getX(), tmpLr.getY() - tmpUl.getY());
238 237
			}
239
			
240 238
		}
241 239

  
242
		if (listener.cancelDrawing()) {
240
		if (listener.cancelDrawing())
243 241
			getMapControl().cancelDrawing();
244
		}
245
		
246
		//getMapControl().repaint();
247
		//getMapControl().drawMap(true);
248 242
	}
249 243

  
250 244
	/**
......
278 272
				//Si la capa tiene puntos de control hacemos un update de estos 
279 273
				//a su posici?n para que se actualicen los controles
280 274
				for(int i=0; i<lyrGeoRaster.getFLyrPoints().getCountPoints(); i++){
281
							
282 275
					Point2D center = lyrGeoRaster.img2World(lyrGeoRaster.getFLyrPoints().getPoint(i).pixelPoint);
283 276
					lyrGeoRaster.getFLyrPoints().setMiniExtent(	i,
284 277
																center,
285 278
																//lyrGeoRaster.getGeoDialog().getZoomControlLeft().getCanvas().initViewPort(vp, center, lyrGeoRaster.getFLyrPoints().getPoint(i).leftViewPort),
286
																lyrGeoRaster.getGeoDialog().getLeftInitViewport(vp, center, lyrGeoRaster.getFLyrPoints().getPoint(i).leftViewPort),
279
																lyrGeoRaster.getGeoDialog().getLeftInitViewport(vp, center, lyrGeoRaster.getFLyrPoints().getPoint(i).leftViewPort, 1),
287 280
																false);
281
					if(i == lyrGeoRaster.getGeoDialog().getSelectedPoint()){
282
						lyrGeoRaster.updateData(i + 1, lyrGeoRaster.getFLyrPoints().getPoint(i).pixelPoint, null, theView);
283
						theView.getMapControl().getMapContext().invalidate();
284
					}
288 285
				}
289
				
290
				//Repintamos la vista y las mini im?genes
291
				int selection = lyrGeoRaster.getGeoDialog().getSelectedPoint();
292
				GeoPoint gp = lyrGeoRaster.getFLyrPoints().getPoint(selection);
293
				Point2D px = null; 
294
				Point2D map = null;
295
				if(gp != null){
296
					px = gp.pixelPoint;
297
					map = gp.mapPoint;
298
				}
299
				
300
				lyrGeoRaster.updateData(selection + 1, px, map, theView);
301
				if(px == null && map == null)
302
					theView.getMapControl().getMapContext().invalidate();
303
				
286
								
304 287
				tmpUl = null;
305 288
				tmpLr = null;
306 289
				
trunk/extensions/extGeoreferencing/src/com/iver/cit/gvsig/fmap/tools/Behavior/GeoMoveBehavior.java
263 263
				//Si la capa tiene puntos de control actualizamos el punto que tiene coordenadas
264 264
				//en pixeles de la imagen.
265 265
				for(int i=0; i<lyrGeoRaster.getFLyrPoints().getCountPoints(); i++){
266

  
267 266
					Point2D center = lyrGeoRaster.img2World(lyrGeoRaster.getFLyrPoints().getPoint(i).pixelPoint);
268 267
					lyrGeoRaster.getFLyrPoints().setMiniExtent(	i,
269 268
																center,
270
																//lyrGeoRaster.getGeoDialog().getZoomControlLeft().getCanvas().initViewPort(vp, center, lyrGeoRaster.getFLyrPoints().getPoint(i).leftViewPort),
271
																lyrGeoRaster.getGeoDialog().getLeftInitViewport(vp, center, lyrGeoRaster.getFLyrPoints().getPoint(i).leftViewPort),
269
																lyrGeoRaster.getGeoDialog().getLeftInitViewport(vp, center, lyrGeoRaster.getFLyrPoints().getPoint(i).leftViewPort, 1),
272 270
																false);
271
					if(i == lyrGeoRaster.getGeoDialog().getSelectedPoint()){
272
						lyrGeoRaster.updateData(i + 1, lyrGeoRaster.getFLyrPoints().getPoint(i).pixelPoint, null, theView);
273
						theView.getMapControl().getMapContext().invalidate();
274
					}
273 275
				}
274
				
275
				//Repintamos la vista y las mini im?genes
276
				int selection = lyrGeoRaster.getGeoDialog().getSelectedPoint();
277
				GeoPoint gp = lyrGeoRaster.getFLyrPoints().getPoint(selection);
278
				Point2D px = null; 
279
				Point2D map = null;
280
				if(gp != null){
281
					px = gp.pixelPoint;
282
					map = gp.mapPoint;
283
				}
284
				
285
				lyrGeoRaster.updateData(selection + 1, px, map, theView);
286
				if(px == null && map == null)
287
					theView.getMapControl().getMapContext().invalidate();
288
						
276
							
289 277
			}
290 278
			isMoveable = false;
291
			//getMapControl().repaint();
292
			//getMapControl().drawMap(true);
293 279
		}
294 280
		this.lyrGeoRaster = null;
295 281
	}
trunk/extensions/extGeoreferencing/src/org/gvsig/georeferencing/utils/PointManager.java
175 175

  
176 176
			if(pixel != null){
177 177
				dialog.getZoomControlLeft().setCenterPoint(lyrPoints.getLyrGeoRaster().img2World(pixel));
178
				dialog.getConectorPanel().getAdjustGeorefPanel().setViewPort(viewPort);
178
				dialog.getConectorPanel().getAdjustGeorefPanel().setViewPort(viewPort, lyrPoints.getPoint(nPunto - 1).zoomLeft);
179 179
				//Si est? extendido hacemos un draw corriente sino es q est? plegado y tocar? asignar el extent de la miniimagen
180 180
				if(dialog.isEnlarge())
181 181
					dialog.getConectorPanel().getAdjustGeorefPanel().getZoomLeft().draw();
182 182
				else
183 183
					lyrPoints.setMiniExtent(nPunto - 1, 
184 184
											lyrPoints.getLyrGeoRaster().img2World(pixel), 
185
											dialog.getConectorPanel().getAdjustGeorefPanel().getZoomLeft().getCanvas().initViewPort(viewPort, lyrPoints.getLyrGeoRaster().img2World(pixel), null),
185
											dialog.getConectorPanel().getAdjustGeorefPanel().getZoomLeft().getCanvas().initViewPort(viewPort, lyrPoints.getLyrGeoRaster().img2World(pixel), null, lyrPoints.getPoint(nPunto - 1).zoomLeft),
186 186
											false);
187 187
			}
188 188
			
189 189
			if(map != null){
190 190
				dialog.getZoomControlRight().setCenterPoint(map);
191
				dialog.getConectorPanel().getAdjustGeorefPanel().setViewPort(viewPort);
191
				dialog.getConectorPanel().getAdjustGeorefPanel().setViewPort(viewPort, lyrPoints.getPoint(nPunto - 1).zoomRight);
192 192
				//Si est? extendido hacemos un draw corriente sino es q est? plegado y tocar? asignar el extent de la miniimagen
193 193
				if(dialog.isEnlarge())
194 194
					dialog.getConectorPanel().getAdjustGeorefPanel().getZoomRight().draw();
195 195
				else
196 196
					lyrPoints.setMiniExtent(nPunto - 1, 
197 197
											map, 
198
											dialog.getConectorPanel().getAdjustGeorefPanel().getZoomRight().getCanvas().initViewPort(viewPort, map, null),
198
											dialog.getConectorPanel().getAdjustGeorefPanel().getZoomRight().getCanvas().initViewPort(viewPort, map, null, lyrPoints.getPoint(nPunto - 1).zoomRight),
199 199
											true);
200 200
			}
201 201
									
......
289 289
    	
290 290
    	//Cargamos las mini imagenes
291 291
    	dialog.getZoomControlLeft().setCenterPoint(lyrPoints.getCenterPoint(pos, false));
292
    	dialog.getZoomControlLeft().setNewViewPort(lyrPoints.getMiniExtent(pos, false));
293
    	dialog.getZoomControlLeft().draw();
292
    	
293
    	try{
294
    		ViewPort vpL = MathUtils.calcZoom(lyrPoints.getMiniExtent(pos, false), lyrPoints.getZoomLeft(pos));
295
    		dialog.getZoomControlLeft().setNewViewPort(vpL);
296
    		dialog.getZoomControlLeft().draw();
297
    	}catch(NullPointerException ex){
298
    		//Todavia no hay un viewPort por lo que dar? una excepci?n. 
299
    	}
294 300
    	    	
295 301
    	dialog.getZoomControlRight().setCenterPoint(lyrPoints.getCenterPoint(pos, true));
296
    	dialog.getZoomControlRight().setNewViewPort(lyrPoints.getMiniExtent(pos, true));
297
    	dialog.getZoomControlRight().draw();
302
    	try{
303
    		ViewPort vpR = MathUtils.calcZoom(lyrPoints.getMiniExtent(pos, true), lyrPoints.getZoomRight(pos));
304
    		dialog.getZoomControlRight().setNewViewPort(vpR);
305
    		dialog.getZoomControlRight().draw();
306
    	}catch(NullPointerException ex){
307
    		//Todavia no hay un viewPort por lo que dar? una excepci?n
308
    	}
298 309
    	    	
299 310
    	//Calculamos los errores
300 311
    	if(pto.pixelPoint != null && pto.mapPoint != null)
trunk/extensions/extGeoreferencing/src/org/gvsig/georeferencing/utils/GeoPointPersistence.java
106 106
	        		}
107 107
	        	}
108 108
	        }
109

  
109 110
	    } catch (ParserConfigurationException e) {
110 111
	            return;
111 112
	    } catch (SAXException e1) {
......
186 187
	 * original ha cambiado o no. Si la capa FLyrGeoRaster cargada tiene un extent
187 188
	 * distinto al que se ha salvado en el fichero de puntos esto significa que el 
188 189
	 * extent de la miniimagen que tiene los puntos relativos a las coordenadas de la
189
	 * imagen en pixels ha de sufrir un desplazamiento.
190
	 * imagen en pixels ha de sufrir un desplazamiento. Este cambio puede producirse 
191
	 * cuando el usuario carga un proyecto con una capa a georreferenciar y la desplaza de 
192
	 * sitio con las herramientas. Posteriormente puede cargar los puntos del fichero .rmf
190 193
	 * @param imgExtent Extent de la imagen 
191 194
	 * @param miniExtent ViewPor del miniextent a transformar
192 195
	 * @return ViewPort	ViewPort del miniextent transformado 
......
232 235
		for(int j=0;j<nl.getLength();j++){
233 236
			Node geoNode = nl.item(j);
234 237
			if(geoNode.getNodeName().equals(RasterMetaFileTags.POINTS_VP)){
235
				res = new double[6];
238
				res = new double[7];
236 239
				NodeList vpChildNodes = geoNode.getChildNodes();
237 240
				for(int i=0;i<vpChildNodes.getLength();i++){
238 241
					Node vpNode = vpChildNodes.item(i);
......
274 277
	private void processGeoPointNodeValue(NodeList nl){
275 278
		Point2D leftCenter = null, rightCenter = null;
276 279
		ViewPort leftViewPort = null, rightViewPort = null;
280
		double zoomLeft = 1, zoomRight = 1;
277 281
		double pX = 0D, pY = 0D, mX = 0D, mY = 0D;
278 282
		boolean active = false;
279 283
		for(int j=0;j<nl.getLength();j++){
......
292 296
				leftCenter = processCenterPoint(geoNode.getChildNodes());
293 297
			if(geoNode.getNodeName().equals(RasterMetaFileTags.GEOPOINT_RCENTER))
294 298
				rightCenter = processCenterPoint(geoNode.getChildNodes());
295
			if(geoNode.getNodeName().equals(RasterMetaFileTags.GEOPOINT_LVP))
296
				leftViewPort = processViewPort(geoNode.getChildNodes());
297
			if(geoNode.getNodeName().equals(RasterMetaFileTags.GEOPOINT_RVP))
298
				rightViewPort = processViewPort(geoNode.getChildNodes());
299
			if(geoNode.getNodeName().equals(RasterMetaFileTags.GEOPOINT_LVP)){
300
				Object[] obj = processViewPort(geoNode.getChildNodes());
301
				leftViewPort = (ViewPort)obj[0];
302
				zoomLeft = ((Double)obj[1]).doubleValue();
303
			}
304
			if(geoNode.getNodeName().equals(RasterMetaFileTags.GEOPOINT_RVP)){
305
				Object[] obj = processViewPort(geoNode.getChildNodes());
306
				rightViewPort = (ViewPort)obj[0];
307
				zoomRight = ((Double)obj[1]).doubleValue();
308
			}
299 309
		}
300 310
				
301 311
		Point2D p = new Point2D.Double();
......
322 332
		lyrPoints.setLeftViewPort(pos, leftViewPort);
323 333
		lyrPoints.setRightViewPort(pos, rightViewPort);
324 334
		lyrPoints.getPointManager().updateData(pos + 1, p, m, lyrPoints.getPointManager().getDialog(), theView);
325
		
335
		lyrPoints.setZoomLeft(pos, zoomLeft);
336
		lyrPoints.setZoomRight(pos, zoomRight);
326 337
		if(lyrPoints.getCountPoints() > 0){
327 338
			GeoreferencingDialog grd = lyrPoints.getPointManager().getDialog();
328 339
			grd.getConectorPanel().getDataPointsTabPanel().
......
381 392
	 * @param nodeList Lista de nodos
382 393
	 * @return ViewPort obtenido
383 394
	 */
384
	private ViewPort processViewPort(NodeList nodeList){
395
	private Object[] processViewPort(NodeList nodeList){
396
		Object[] obj = new Object[2];
385 397
		ViewPort vp = new ViewPort(null);
398
		Double zoom =  new Double(1);
386 399
		for(int j=0;j<nodeList.getLength();j++){
387 400
			Node node = nodeList.item(j);
388 401
			if(node.getNodeName().equals(RasterMetaFileTags.POINTS_PROJ))
......
391 404
				vp.setExtent(processExtent(node.getChildNodes()));
392 405
			if(node.getNodeName().equals(RasterMetaFileTags.POINTS_DIM))
393 406
				vp.setImageSize(processImageSize(node.getChildNodes()));
407
			if(node.getNodeName().equals(RasterMetaFileTags.POINTS_ZOOM))
408
				zoom = new Double(node.getFirstChild().getNodeValue());
394 409
		}
410
		obj[0] = vp;
411
		obj[1] = zoom;
395 412
		vp.setScale();
396
		return vp;
413
		return obj;
397 414
	}
398 415
	
399 416
	/**
......
452 469
		itemlevel2 = xmlDoc.createElement(RasterMetaFileTags.POINTS_DIM);
453 470
		createSimpleElement(itemlevel2, RasterMetaFileTags.WIDTH, values[4]);
454 471
		createSimpleElement(itemlevel2, RasterMetaFileTags.HEIGHT, values[5]);
455
		itemlevel1.appendChild(itemlevel2);		
472
		itemlevel1.appendChild(itemlevel2);	
473
		if(values.length == 8)
474
			createSimpleElement(itemlevel1, RasterMetaFileTags.POINTS_ZOOM, values[7]);
456 475
		parent.appendChild(itemlevel1);
457 476
	}
458 477
	
......
472 491
							String.valueOf(lyrGeo.getHeight()),
473 492
							String.valueOf(lyrGeo.getImageWidth()),
474 493
							String.valueOf(lyrGeo.getImageHeight()),
475
							lyrGeo.getProjection().getAbrev()};
494
							lyrGeo.getProjection().getAbrev(),
495
							};
476 496
		createViewPortNode(xmlGeoPoint, RasterMetaFileTags.POINTS_VP, vpData);
477 497
	}
478 498
		
......
512 532
							String.valueOf(geoPoint.leftViewPort.getExtent().getHeight()),
513 533
							String.valueOf(geoPoint.leftViewPort.getImageWidth()),
514 534
							String.valueOf(geoPoint.leftViewPort.getImageHeight()),
515
							geoPoint.leftViewPort.getProjection().getAbrev()};
535
							geoPoint.leftViewPort.getProjection().getAbrev(),
536
							String.valueOf(geoPoint.zoomLeft)};
516 537
		createViewPortNode(xmlGeoPoint, RasterMetaFileTags.GEOPOINT_LVP, values1);
517 538
		
518 539
		String[] values2 = {String.valueOf(geoPoint.rightViewPort.getExtent().getX()),
......
521 542
							String.valueOf(geoPoint.rightViewPort.getExtent().getHeight()),
522 543
							String.valueOf(geoPoint.rightViewPort.getImageWidth()),
523 544
							String.valueOf(geoPoint.rightViewPort.getImageHeight()),
524
							geoPoint.rightViewPort.getProjection().getAbrev()};
545
							geoPoint.rightViewPort.getProjection().getAbrev(),
546
							String.valueOf(geoPoint.zoomRight)};
525 547

  
526 548
		createViewPortNode(xmlGeoPoint, RasterMetaFileTags.GEOPOINT_RVP, values2);		
527 549
    }
trunk/extensions/extGeoreferencing/src/org/gvsig/georeferencing/utils/MathUtils.java
188 188
	  }
189 189
	  return (c);
190 190
	}
191
	
192
    /**
193
     * Calcula el zoom dependiendo del factor de escala pasado por
194
     * par?metro.
195
     */
196
    public static ViewPort calcZoom(ViewPort vp, double factor){
197
    	ViewPort viewPortBlock = new ViewPort(vp.getProjection());
198
		viewPortBlock.setExtent(vp.getExtent());
199
		viewPortBlock.setImageSize(vp.getImageSize());	
200
		viewPortBlock.setScale();
201
		
202
    	Rectangle2D.Double r = new Rectangle2D.Double();
203
		double nuevoX = (vp.getExtent().getCenterX()) - ((vp.getExtent().getWidth() * factor) / 2.0);
204
		double nuevoY = (vp.getExtent().getCenterY()) - ((vp.getExtent().getHeight() * factor) / 2.0);
205
		r.x = nuevoX;
206
		r.y = nuevoY;
207
		r.width = viewPortBlock.getExtent().getWidth() * factor;
208
		r.height = viewPortBlock.getExtent().getHeight() * factor;
209
		viewPortBlock.setExtent(r);
210
		viewPortBlock.setScale();
211
		
212
		return viewPortBlock;
213
	}
191 214
}
trunk/extensions/extGeoreferencing/src/org/gvsig/georeferencing/gui/dialogs/GeoreferencingDialog.java
333 333

  
334 334
		try{
335 335
			//ACEPTAR 
336
			if(e.getSource() == bAceptar){
336
			if(e.getSource() == bAceptar)
337 337
				accept(theView);	
338
			}
339
			
338
						
340 339
			//CANCELAR
341
			if(e.getSource() == bCancelar){
340
			if(e.getSource() == bCancelar)
342 341
				cancel(theView);
343
			}
344
			
342
						
345 343
			//CARGAR PUNTOS
346
			if(e.getSource() == tablePointsPanel.getPButtonsExportImportPanel().getBLoad()){
344
			if(e.getSource() == tablePointsPanel.getPButtonsExportImportPanel().getBLoad())
347 345
				loadPoints(theView);
348
			}
349
			
346
						
350 347
			//SALVAR PUNTOS
351
			if(e.getSource() == tablePointsPanel.getPButtonsExportImportPanel().getBSave()){
348
			if(e.getSource() == tablePointsPanel.getPButtonsExportImportPanel().getBSave())
352 349
				savePoints();				
353
			}
354 350
			
351
			
355 352
			//EXPORTAR A ASCII
356
			if(e.getSource() == tablePointsPanel.getPButtonsExportImportPanel().getBExportToAscii()){
353
			if(e.getSource() == tablePointsPanel.getPButtonsExportImportPanel().getBExportToAscii())
357 354
				exportToASCII(theView);	
358
			}
359
			
355
						
360 356
			//DESACTIVAR PANELES
361 357
			JCheckBox cb = this.conectorPanel.getDataPointsTabPanel().getSelectPointsPanel().getDataPointPanel().getCbActive();
362
			if(e.getSource() == cb){
358
			if(e.getSource() == cb)
363 359
				deactivatePanel(theView, cb);
364
			}	
365
			
360
						
366 361
			//PROCESAR
367
			if(e.getSource() == this.getBProcess()){
362
			if(e.getSource() == this.getBProcess())
368 363
				process(theView);
369
			}
370 364
		}catch(Exception exc){
365
			exc.printStackTrace();
371 366
			return; 
372 367
		}		
373 368
	}
......
380 375
			frame.setClosed(true);
381 376
		}catch(PropertyVetoException exc){}
382 377
	}
383
		
378
    
384 379
	/**
385 380
	 * Funci?n que se ejecuta al pulsar el bot?n procesar. Este procesamiento calcula a partir de
386 381
	 * los puntos de control la georreferenciaci?n de la imagen y la asigna como extent temporal de
......
406 401
			//Si la capa tiene puntos de control hacemos un update de estos 
407 402
			//a su posici?n para que se actualicen los controles
408 403
			for(int i=0; i<lyrGeoRaster.getFLyrPoints().getCountPoints(); i++){
409
						
410 404
				Point2D center = lyrGeoRaster.img2World(lyrGeoRaster.getFLyrPoints().getPoint(i).pixelPoint);
411 405
				lyrGeoRaster.getFLyrPoints().setMiniExtent(	i,
412 406
															center,
413
															//lyrGeoRaster.getGeoDialog().getZoomControlLeft().getCanvas().initViewPort(vp, center, lyrGeoRaster.getFLyrPoints().getPoint(i).leftViewPort),
414
															lyrGeoRaster.getGeoDialog().getLeftInitViewport(vp, center, lyrGeoRaster.getFLyrPoints().getPoint(i).leftViewPort),
407
															getLeftInitViewport(vp, center, lyrGeoRaster.getFLyrPoints().getPoint(i).leftViewPort, 1),
415 408
															false);
409
				if(i == getSelectedPoint()){
410
					updateData(i + 1, lyrGeoRaster.getFLyrPoints().getPoint(i).pixelPoint, null, theView);
411
					theView.getMapControl().getMapContext().invalidate();
412
				}
413
				
416 414
			}
417
			
418
			//Repintamos la vista y las mini im?genes
419
			int selection = lyrGeoRaster.getGeoDialog().getSelectedPoint();
420
			GeoPoint gp = lyrGeoRaster.getFLyrPoints().getPoint(selection);
421
			Point2D px = null; 
422
			Point2D map = null;
423
			if(gp != null){
424
				px = gp.pixelPoint;
425
				map = gp.mapPoint;
426
			}
427
			
428
			lyrGeoRaster.updateData(selection + 1, px, map, theView);
429
			if(px == null && map == null)
430
				theView.getMapControl().getMapContext().invalidate();
431 415
		}
432 416
	}
433 417
	
......
1188 1172
    /**
1189 1173
     * 
1190 1174
     */
1191
    public ViewPort getLeftInitViewport(ViewPort vp, Point2D center, ViewPort initVp){
1192
    	return getZoomControlLeft().getCanvas().initViewPort(vp, center, initVp);
1175
    public ViewPort getLeftInitViewport(ViewPort vp, Point2D center, ViewPort initVp, double zoom){
1176
    	return getZoomControlLeft().getCanvas().initViewPort(vp, center, initVp, zoom);
1193 1177
    }
1194 1178
    
1195 1179
    /**
trunk/extensions/extGeoreferencing/src/org/gvsig/georeferencing/gui/panels/AdjustGeorefPanel.java
134 134
	 * Asigna los viewPort a los canvas para el dibujado de la minimagen 
135 135
	 * @param vp ViewPort asignado.
136 136
	 */
137
	public void setViewPort(ViewPort vp){
138
		this.getZoomLeft().setViewPort(vp);
139
		this.getZoomRight().setViewPort(vp);
137
	public void setViewPort(ViewPort vp, double zoom){
138
		this.getZoomLeft().setViewPort(vp, zoom);
139
		this.getZoomRight().setViewPort(vp, zoom);
140 140
	}
141 141
	
142 142
	/**
trunk/extensions/extGeoreferencing/src/org/gvsig/georeferencing/gui/panels/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