Revision 1763 branches/gvSIG_CAD_Layout_version/applications/appgvSIG/src/com/iver/cit/gvsig/gui/cad/CadGrid.java
CadGrid.java | ||
---|---|---|
40 | 40 |
*/ |
41 | 41 |
package com.iver.cit.gvsig.gui.cad; |
42 | 42 |
|
43 |
import com.iver.cit.gvsig.fmap.ViewPort; |
|
44 |
import com.iver.cit.gvsig.gui.layout.LayoutCADToolAdapter; |
|
45 |
|
|
43 |
import java.awt.Color; |
|
46 | 44 |
import java.awt.Graphics; |
47 |
import java.awt.Point; |
|
48 | 45 |
import java.awt.geom.AffineTransform; |
49 | 46 |
import java.awt.geom.Point2D; |
50 | 47 |
import java.awt.geom.Rectangle2D; |
... | ... | |
56 | 53 |
* |
57 | 54 |
* @author Vicente Caballero Navarro |
58 | 55 |
*/ |
59 |
public class CadGrid { |
|
60 |
private boolean grid = true;
|
|
61 |
private double gridSizeX=1;
|
|
62 |
private double gridSizeY=1;
|
|
56 |
public class CadGrid extends com.iver.cit.gvsig.fmap.CadGrid {
|
|
57 |
private boolean grid = false;
|
|
58 |
private double gridSizeX = 1;
|
|
59 |
private double gridSizeY = 1;
|
|
63 | 60 |
private AffineTransform at; |
64 | 61 |
private boolean adjustGrid; |
65 | 62 |
private CADToolAdapter cta; |
66 |
|
|
67 |
public CadGrid(CADToolAdapter cta){ |
|
68 |
this.cta=cta; |
|
63 |
|
|
64 |
/** |
|
65 |
* Crea un nuevo CadGrid. |
|
66 |
* |
|
67 |
* @param cta DOCUMENT ME! |
|
68 |
*/ |
|
69 |
public CadGrid(CADToolAdapter cta) { |
|
70 |
this.cta = cta; |
|
69 | 71 |
} |
72 |
|
|
70 | 73 |
/** |
71 | 74 |
* Inserta el viewPort. |
72 | 75 |
* |
73 |
* @param vp
|
|
76 |
* @param at
|
|
74 | 77 |
*/ |
75 | 78 |
public void setAT(AffineTransform at) { |
76 | 79 |
this.at = at; |
77 | 80 |
} |
78 |
public void setGridSizeX(double d){ |
|
79 |
gridSizeX=d;//(int)cta.fromDistance(d); |
|
81 |
|
|
82 |
/** |
|
83 |
* DOCUMENT ME! |
|
84 |
* |
|
85 |
* @param d DOCUMENT ME! |
|
86 |
*/ |
|
87 |
public void setGridSizeX(double d) { |
|
88 |
gridSizeX = d; //(int)cta.fromDistance(d); |
|
80 | 89 |
} |
81 |
public void setGridSizeY(double d){ |
|
82 |
gridSizeY=d;//(int)cta.fromDistance(d); |
|
90 |
|
|
91 |
/** |
|
92 |
* DOCUMENT ME! |
|
93 |
* |
|
94 |
* @param d DOCUMENT ME! |
|
95 |
*/ |
|
96 |
public void setGridSizeY(double d) { |
|
97 |
gridSizeY = d; //(int)cta.fromDistance(d); |
|
83 | 98 |
} |
84 |
public double getGridSizeX(){ |
|
99 |
|
|
100 |
/** |
|
101 |
* DOCUMENT ME! |
|
102 |
* |
|
103 |
* @return DOCUMENT ME! |
|
104 |
*/ |
|
105 |
public double getGridSizeX() { |
|
85 | 106 |
return gridSizeX; |
86 | 107 |
} |
87 |
public double getGridSizeY(){ |
|
108 |
|
|
109 |
/** |
|
110 |
* DOCUMENT ME! |
|
111 |
* |
|
112 |
* @return DOCUMENT ME! |
|
113 |
*/ |
|
114 |
public double getGridSizeY() { |
|
88 | 115 |
return gridSizeY; |
89 | 116 |
} |
117 |
|
|
90 | 118 |
/** |
91 | 119 |
* Ajusta un punto de la imagen que se pasa como par?metro al handler m?s |
92 | 120 |
* cercano si se encuentra lo suficientemente cerca y devuelve la |
... | ... | |
96 | 124 |
* |
97 | 125 |
* @return Distancia del punto que se pasa como par?metro al punto ajustado |
98 | 126 |
*/ |
99 |
public double adjustToGrid(Point point) { |
|
100 |
if (grid && adjustGrid) {
|
|
127 |
public double adjustToGrid(Point2D point) {
|
|
128 |
if (adjustGrid) { |
|
101 | 129 |
Point2D auxp = new Point2D.Double(0, 0); |
102 |
Point2D po = cta.toPoint(point);//viewport.toMapPoint(point); |
|
103 |
Rectangle2D extent = cta.getExtent();//viewport.getAdjustedExtent(); |
|
104 |
double x = ((po.getX() + gridSizeX) % gridSizeX) - |
|
130 |
double x = ((point.getX() + gridSizeX) % gridSizeX) - |
|
105 | 131 |
((auxp.getX()) % gridSizeX); |
106 |
double y = ((po.getY() + gridSizeY) % gridSizeY) - |
|
132 |
double y = ((point.getY() + gridSizeY) % gridSizeY) -
|
|
107 | 133 |
((auxp.getY()) % gridSizeY); |
108 |
Point2D p = new Point(point); |
|
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)); |
|
134 |
Point2D p = (Point2D) point.clone(); |
|
135 |
|
|
136 |
if (x > (gridSizeX / 2)) { |
|
137 |
x = x - gridSizeX; |
|
114 | 138 |
} |
115 |
|
|
139 |
|
|
140 |
if (y > (gridSizeY / 2)) { |
|
141 |
y = y - gridSizeY; |
|
142 |
} |
|
143 |
|
|
144 |
point.setLocation((point.getX() - x), (point.getY() - y)); |
|
145 |
|
|
116 | 146 |
return p.distance(point); |
117 | 147 |
} |
118 | 148 |
|
... | ... | |
129 | 159 |
return; |
130 | 160 |
} |
131 | 161 |
|
162 |
g.setColor(Color.lightGray); |
|
163 |
|
|
132 | 164 |
Rectangle2D extent = cta.getExtent(); |
133 | 165 |
Point2D auxp = new Point2D.Double(0, 0); |
134 | 166 |
|
135 | 167 |
for (int i = (int) extent.getMinX(); i < (extent.getMaxX()); |
136 | 168 |
i += gridSizeX) { |
137 |
for (int j = (int) extent.getMinY(); |
|
138 |
j < (extent.getMaxY() ); j += gridSizeY) {
|
|
169 |
for (int j = (int) extent.getMinY(); j < (extent.getMaxY());
|
|
170 |
j += gridSizeY) { |
|
139 | 171 |
Point2D po = new Point2D.Double(i, j); |
140 |
Point2D point = cta.fromPoint(po);//viewport.fromMapPoint(po); |
|
172 |
Point2D point = cta.fromPoint(po); //viewport.fromMapPoint(po);
|
|
141 | 173 |
double x = ((po.getX() + gridSizeX) % gridSizeX) - |
142 | 174 |
((auxp.getX()) % gridSizeX); |
143 | 175 |
double y = ((po.getY() + gridSizeY) % gridSizeY) - |
144 | 176 |
((auxp.getY()) % gridSizeY); |
145 | 177 |
x = (int) (point.getX() - cta.fromDistance(x)); |
146 | 178 |
y = (int) (point.getY() + cta.fromDistance(y)); |
147 |
if (cta.fromDistance(gridSizeX)>5 && cta.fromDistance(gridSizeY)>5){ |
|
179 |
|
|
180 |
if ((cta.fromDistance(gridSizeX) > 5) || |
|
181 |
(cta.fromDistance(gridSizeY) > 5)) { |
|
148 | 182 |
g.drawOval((int) x, (int) y, 1, 1); |
149 | 183 |
} |
150 | 184 |
} |
Also available in: Unified diff