Revision 1729 branches/gvSIG_CAD_Layout_version/applications/appgvSIG/src/com/iver/cit/gvsig/gui/cad/CadGrid.java

View differences:

CadGrid.java
41 41
package com.iver.cit.gvsig.gui.cad;
42 42

  
43 43
import com.iver.cit.gvsig.fmap.ViewPort;
44
import com.iver.cit.gvsig.gui.layout.LayoutCADToolAdapter;
44 45

  
45 46
import java.awt.Graphics;
46 47
import java.awt.Point;
48
import java.awt.geom.AffineTransform;
47 49
import java.awt.geom.Point2D;
48 50
import java.awt.geom.Rectangle2D;
49 51

  
......
55 57
 * @author Vicente Caballero Navarro
56 58
 */
57 59
public class CadGrid {
58
	private boolean grid = false;
59
	private int gridSize = 1000;
60
	private ViewPort viewport;
60
	private boolean grid = true;
61
	private double gridSizeX=1;
62
	private double gridSizeY=1;
63
	private AffineTransform at;
61 64
	private boolean adjustGrid;
62

  
65
	private CADToolAdapter cta;
66
	
67
	public CadGrid(CADToolAdapter cta){
68
		this.cta=cta;
69
	}
63 70
	/**
64 71
	 * Inserta el viewPort.
65 72
	 *
66 73
	 * @param vp
67 74
	 */
68
	public void setViewPort(ViewPort vp) {
69
		viewport = vp;
70
		gridSize=(int)viewport.toMapDistance(20);
75
	public void setAT(AffineTransform at) {
76
		this.at = at;
71 77
	}
72

  
78
	public void setGridSizeX(double d){
79
		gridSizeX=d;//(int)cta.fromDistance(d);
80
	}
81
	public void setGridSizeY(double d){
82
		gridSizeY=d;//(int)cta.fromDistance(d);
83
	}
84
	public double getGridSizeX(){
85
		return gridSizeX;
86
	}
87
	public double getGridSizeY(){
88
		return gridSizeY;
89
	}
73 90
	/**
74 91
	 * Ajusta un punto de la imagen que se pasa como  par?metro al handler m?s
75 92
	 * cercano si se encuentra lo suficientemente  cerca y devuelve la
......
82 99
	public double adjustToGrid(Point point) {
83 100
		if (grid && adjustGrid) {
84 101
			Point2D auxp = new Point2D.Double(0, 0);
85
			Point2D po = viewport.toMapPoint(point);
86
			Rectangle2D extent = viewport.getAdjustedExtent();
87
			double x = ((po.getX() + gridSize) % gridSize) -
88
				((auxp.getX()) % gridSize);
89
			double y = ((po.getY() + gridSize) % gridSize) -
90
				((auxp.getY()) % gridSize);
102
			Point2D po = cta.toPoint(point);//viewport.toMapPoint(point);
103
			Rectangle2D extent = cta.getExtent();//viewport.getAdjustedExtent();
104
			double x = ((po.getX() + gridSizeX) % gridSizeX) -
105
				((auxp.getX()) % gridSizeX);
106
			double y = ((po.getY() + gridSizeY) % gridSizeY) -
107
				((auxp.getY()) % gridSizeY);
91 108
			Point2D p = new Point(point);
92
			point.x = (int) (p.getX() - viewport.fromMapDistance(x));
93
			point.y = (int) (p.getY() + viewport.fromMapDistance(y));
94

  
109
			point.x = (int) (p.getX() - cta.fromDistance(x));//viewport.fromMapDistance(x));
110
			if (cta instanceof LayoutCADToolAdapter){
111
				point.y = (int) (p.getY() - cta.fromDistance(y));//viewport.fromMapDistance(y));
112
			}else{
113
				point.y = (int) (p.getY() + cta.fromDistance(y));
114
			}
115
			
95 116
			return p.distance(point);
96 117
		}
97 118

  
......
108 129
			return;
109 130
		}
110 131

  
111
		Rectangle2D extent = viewport.getAdjustedExtent();
132
		Rectangle2D extent = cta.getExtent();
112 133
		Point2D auxp = new Point2D.Double(0, 0);
113 134

  
114
		for (int i = (int) extent.getMinX(); i < (extent.getMaxX() + gridSize);
115
				i += gridSize) {
135
		for (int i = (int) extent.getMinX(); i < (extent.getMaxX());
136
				i += gridSizeX) {
116 137
			for (int j = (int) extent.getMinY();
117
					j < (extent.getMaxY() + gridSize); j += gridSize) {
138
					j < (extent.getMaxY() ); j += gridSizeY) {
118 139
				Point2D po = new Point2D.Double(i, j);
119
				Point2D point = viewport.fromMapPoint(po);
120
				double x = ((po.getX() + gridSize) % gridSize) -
121
					((auxp.getX()) % gridSize);
122
				double y = ((po.getY() + gridSize) % gridSize) -
123
					((auxp.getY()) % gridSize);
124
				x = (int) (point.getX() - viewport.fromMapDistance(x));
125
				y = (int) (point.getY() + viewport.fromMapDistance(y));
126
				if (viewport.fromMapDistance(gridSize)>3){
140
				Point2D point = cta.fromPoint(po);//viewport.fromMapPoint(po);
141
				double x = ((po.getX() + gridSizeX) % gridSizeX) -
142
					((auxp.getX()) % gridSizeX);
143
				double y = ((po.getY() + gridSizeY) % gridSizeY) -
144
					((auxp.getY()) % gridSizeY);
145
				x = (int) (point.getX() - cta.fromDistance(x));
146
				y = (int) (point.getY() + cta.fromDistance(y));
147
				if (cta.fromDistance(gridSizeX)>5 && cta.fromDistance(gridSizeY)>5){
127 148
					g.drawOval((int) x, (int) y, 1, 1);
128 149
				}
129 150
			}

Also available in: Unified diff