Revision 47355 trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.snapping.app/org.gvsig.snapping.app.mainplugin/src/main/java/org/gvsig/app/project/documents/view/toolListeners/snapping/snappers/CentralPointSnapper.java
CentralPointSnapper.java | ||
---|---|---|
24 | 24 |
package org.gvsig.app.project.documents.view.toolListeners.snapping.snappers; |
25 | 25 |
|
26 | 26 |
import java.awt.geom.Point2D; |
27 |
|
|
28 | 27 |
import org.gvsig.fmap.geom.Geometry; |
29 |
import org.gvsig.fmap.geom.handler.CenterHandler; |
|
30 |
import org.gvsig.fmap.geom.handler.Handler; |
|
28 |
import org.gvsig.fmap.geom.primitive.Envelope; |
|
31 | 29 |
import org.gvsig.fmap.mapcontrol.PrimitivesDrawer; |
32 | 30 |
import org.gvsig.fmap.mapcontrol.tools.snapping.snappers.ISnapperVectorial; |
33 | 31 |
import org.gvsig.fmap.mapcontrol.tools.snapping.snappers.impl.AbstractSnapper; |
... | ... | |
41 | 39 |
*/ |
42 | 40 |
public class CentralPointSnapper extends AbstractSnapper |
43 | 41 |
implements ISnapperVectorial { |
44 |
/* (non-Javadoc) |
|
45 |
* @see com.iver.cit.gvsig.gui.cad.snapping.ISnapper#getSnapPoint(Point2D point, |
|
46 |
* IGeometry geom,double tolerance, Point2D lastPointEntered) |
|
47 |
*/ |
|
48 |
public Point2D getSnapPoint(Point2D point, Geometry geom, |
|
42 |
|
|
43 |
@Override |
|
44 |
public Point2D getSnapPoint(Point2D point, Geometry geom, |
|
49 | 45 |
double tolerance, Point2D lastPointEntered) { |
50 | 46 |
Point2D resul = null; |
47 |
|
|
48 |
Envelope envelope = geom.getEnvelope(); |
|
49 |
|
|
50 |
Point2D.Double center = new Point2D.Double(envelope.getCenter(Geometry.DIMENSIONS.X), |
|
51 |
envelope.getCenter(Geometry.DIMENSIONS.Y)); |
|
51 | 52 |
|
52 |
Handler[] handlers = geom.getHandlers(Geometry.SELECTHANDLER);
|
|
53 |
double dist = center.distance(point);
|
|
53 | 54 |
|
54 |
double minDist = tolerance; |
|
55 |
|
|
56 |
for (int j = 0; j < handlers.length; j++) { |
|
57 |
if (handlers[j] instanceof CenterHandler) { |
|
58 |
Point2D handlerPoint = handlers[j].getPoint(); |
|
59 |
double dist = handlerPoint.distance(point); |
|
60 |
|
|
61 |
if ((dist < minDist)) { |
|
62 |
resul = handlerPoint; |
|
63 |
minDist = dist; |
|
64 |
} |
|
65 |
} |
|
55 |
if ((dist < tolerance)) { |
|
56 |
resul = center; |
|
66 | 57 |
} |
67 |
|
|
58 |
|
|
68 | 59 |
return resul; |
69 | 60 |
} |
70 |
/* (non-Javadoc) |
|
71 |
* @see com.iver.cit.gvsig.gui.cad.snapping.ISnapper#getToolTipText() |
|
72 |
*/ |
|
61 |
|
|
62 |
@Override |
|
73 | 63 |
public String getToolTipText() { |
74 | 64 |
return Messages.getText("Central_point"); |
75 | 65 |
} |
76 | 66 |
|
77 |
/* |
|
78 |
* (non-Javadoc) |
|
79 |
* @see org.gvsig.fmap.mapcontrol.tools.snapping.snappers.ISnapper#draw(org.gvsig.fmap.mapcontrol.PrimitivesDrawer, java.awt.geom.Point2D) |
|
80 |
*/ |
|
67 |
@Override |
|
81 | 68 |
public void draw(PrimitivesDrawer primitivesDrawer, Point2D pPixels) { |
82 | 69 |
primitivesDrawer.setColor(getColor()); |
83 | 70 |
|
84 | 71 |
int half = getSizePixels() / 2; |
85 |
primitivesDrawer.drawOval((int) (pPixels.getX() - half), |
|
86 |
(int) (pPixels.getY() - half), getSizePixels(), getSizePixels()); |
|
72 |
int x1 = (int) (pPixels.getX() - half); |
|
73 |
int x2 = (int) (pPixels.getX() + half); |
|
74 |
int x3 = (int) pPixels.getX(); |
|
75 |
int y1 = (int) (pPixels.getY() - half); |
|
76 |
int y2 = (int) (pPixels.getY() + half); |
|
77 |
int y3 = (int) pPixels.getY(); |
|
78 |
|
|
79 |
primitivesDrawer.drawLine(x1, y3, x3, y1); |
|
80 |
primitivesDrawer.drawLine(x1, y3, x3, y2); |
|
81 |
primitivesDrawer.drawLine(x2, y3, x3, y1); |
|
82 |
primitivesDrawer.drawLine(x2, y3, x3, y2); |
|
87 | 83 |
} |
88 | 84 |
} |
Also available in: Unified diff