Revision 47671
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.fmap.control/src/main/java/org/gvsig/fmap/mapcontrol/tools/Behavior/EllipseBehavior.java | ||
---|---|---|
24 | 24 |
package org.gvsig.fmap.mapcontrol.tools.Behavior; |
25 | 25 |
|
26 | 26 |
import java.awt.Color; |
27 |
import java.awt.Point; |
|
28 | 27 |
import java.awt.event.MouseEvent; |
29 | 28 |
import java.awt.geom.Point2D; |
30 | 29 |
import java.util.ArrayList; |
31 | 30 |
import java.util.List; |
32 |
import java.util.logging.Level; |
|
33 |
import java.util.logging.Logger; |
|
34 |
import org.gvsig.fmap.geom.Geometry; |
|
35 |
import org.gvsig.fmap.geom.GeometryException; |
|
36 | 31 |
import org.gvsig.fmap.geom.aggregate.MultiLine; |
37 | 32 |
import org.gvsig.fmap.geom.primitive.Arc; |
38 |
import org.gvsig.fmap.geom.primitive.Ellipse; |
|
39 |
|
|
40 |
import org.gvsig.fmap.geom.primitive.Line; |
|
41 | 33 |
import org.gvsig.fmap.mapcontext.ViewPort; |
42 | 34 |
import org.gvsig.fmap.mapcontrol.MapControlDrawer; |
43 | 35 |
import org.gvsig.fmap.mapcontrol.tools.BehaviorException; |
... | ... | |
124 | 116 |
m_FirstPoint = point; |
125 | 117 |
} else if (arrayX.size() == 1) { |
126 | 118 |
Point2D point = getMapControl().getViewPort().toMapPoint(e.getPoint()); |
127 |
addPoint(point); |
|
128 |
m_SecondPoint = point; |
|
119 |
if(!point.equals(m_FirstPoint)){ |
|
120 |
addPoint(point); |
|
121 |
m_SecondPoint = point; |
|
122 |
} |
|
129 | 123 |
} else { |
130 | 124 |
Point2D point = getMapControl().getViewPort().toMapPoint(e.getPoint()); |
131 |
addPoint(point); |
|
132 |
m_ThirdPoint = point; |
|
133 |
// Double[] x = new Double[3]; |
|
134 |
// Double[] y = new Double[3]; |
|
135 |
// |
|
136 |
// x[0] = m_FirstPoint.getX(); |
|
137 |
// x[1] = m_SecondPoint.getX(); |
|
138 |
// x[2] = m_ThirdPoint.getX(); |
|
139 |
// |
|
140 |
// y[0] = m_FirstPoint.getY(); |
|
141 |
// y[1] = m_SecondPoint.getY(); |
|
142 |
// y[2] = m_ThirdPoint.getY(); |
|
125 |
if (!point.equals(m_SecondPoint)) { |
|
126 |
addPoint(point); |
|
127 |
m_ThirdPoint = point; |
|
128 |
} |
|
143 | 129 |
|
144 |
MeasureEvent event = new MeasureEvent((Double[]) arrayX.toArray(new Double[arrayX.size()]), (Double[]) arrayY.toArray(new Double[arrayY.size()]), e);
|
|
130 |
MeasureEvent event = new MeasureEvent((Double[]) arrayX.toArray(new Double[arrayX.size()]), (Double[]) arrayY.toArray(new Double[arrayY.size()]), e);
|
|
145 | 131 |
|
146 | 132 |
listener.ellipseFinished(event); |
147 | 133 |
|
... | ... | |
260 | 246 |
|
261 | 247 |
if ((m_FirstPoint != null) && (m_SecondPoint != null) && (m_ThirdPoint != null)) { |
262 | 248 |
ViewPort vp = getMapControl().getMapContext().getViewPort(); |
263 |
// Point2D p1 = vp.toMapPoint(m_FirstPoint); |
|
264 |
// Point2D p2 = vp.toMapPoint(m_SecondPoint); |
|
265 |
// Point2D p3 = vp.toMapPoint(m_ThirdPoint); |
|
266 |
|
|
267 | 249 |
Point2D p1 = m_FirstPoint; |
268 | 250 |
Point2D p2 = m_SecondPoint; |
269 | 251 |
Point2D p3 = m_ThirdPoint; |
... | ... | |
272 | 254 |
MultiLine ellipse = null; |
273 | 255 |
try { |
274 | 256 |
ellipse = createEllipse(p1, p2, p3).toLines(); |
275 |
} catch (GeometryException ex) {
|
|
276 |
Logger.getLogger(EllipseBehavior.class.getName()).log(Level.SEVERE, null, ex);
|
|
257 |
} catch (Exception ex) { |
|
258 |
LOG.warn("Can't create ellipse", ex);
|
|
277 | 259 |
} |
278 | 260 |
if (ellipse != null) { |
279 | 261 |
mapControlDrawer.draw(ellipse); |
... | ... | |
289 | 271 |
|
290 | 272 |
if ((m_FirstPoint != null) && (m_SecondPoint != null)) { |
291 | 273 |
ViewPort vp = getMapControl().getMapContext().getViewPort(); |
292 |
// Point2D p1 = vp.toMapPoint(m_FirstPoint); |
|
293 |
// Point2D p2 = vp.toMapPoint(m_SecondPoint); |
|
294 | 274 |
Point2D p1 = m_FirstPoint; |
295 | 275 |
Point2D p2 = m_SecondPoint; |
296 | 276 |
radio = p1.distance(p2)/2; |
Also available in: Unified diff