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

View differences:

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