Revision 1034 trunk/libraries/libFMap/src/com/iver/cit/gvsig/fmap/operations/strategies/QueryByPointVisitor.java

View differences:

QueryByPointVisitor.java
1
/* Generated by Together */
2 1
package com.iver.cit.gvsig.fmap.operations.strategies;
3 2

  
4
import java.awt.geom.Point2D;
5
import java.awt.geom.Rectangle2D;
6

  
7
import org.cresques.cts.ICoordTrans;
8

  
9 3
import com.iver.cit.gvsig.fmap.core.IGeometry;
10 4
import com.iver.cit.gvsig.fmap.layers.FBitSet;
11 5
import com.iver.cit.gvsig.fmap.layers.FLayer;
12 6

  
7
import org.cresques.cts.ICoordTrans;
13 8

  
9
import java.awt.geom.Point2D;
10
import java.awt.geom.Rectangle2D;
11

  
12

  
14 13
/**
15 14
 * Query by point Visitor.
16 15
 *
17 16
 * @author Vicente Caballero Navarro
18
 * 
19 17
 */
20 18
public class QueryByPointVisitor implements FeatureVisitor {
21
    private Point2D point = null;
22
    private double tolerance;
23
    private FLayer layer=null;
24
    private FBitSet bitset=null;
25
    private Rectangle2D recPoint=null; 
19
	private Point2D point = null;
20
	private double tolerance;
21
	private FLayer layer = null;
22
	private FBitSet bitset = null;
23
	private Rectangle2D recPoint = null;
26 24
	private ICoordTrans ct = null;
27 25

  
28
    /**
29
     * DOCUMENT ME!
30
     *
31
     * @return DOCUMENT ME!
32
     */
33
    public FBitSet getBitSet() {
34
        return bitset;
35
    }
36
    public void setLayer(FLayer layer){
37
    	this.layer=layer;
38
    	this.ct = layer.getCoordTrans();
39
    }
40
    /**
41
     * DOCUMENT ME!
42
     *
43
     * @param t DOCUMENT ME!
44
     */
45
    public void setTolerance(double t) {
46
        tolerance = t;
47
    }
26
	/**
27
	 * Devuelve un FBitSet con los ?ndices de los registros de la consulta.
28
	 *
29
	 * @return FBitSet con los ?ndices de la consulta.
30
	 */
31
	public FBitSet getBitSet() {
32
		return bitset;
33
	}
48 34

  
49
    /**
50
     * DOCUMENT ME!
51
     *
52
     * @param p DOCUMENT ME!
53
     */
54
    public void setQueriedPoint(Point2D p) {
55
        point = p;
56
    }
35
	/**
36
	 * DOCUMENT ME!
37
	 *
38
	 * @param layer DOCUMENT ME!
39
	 */
40
	public void setLayer(FLayer layer) {
41
		this.layer = layer;
42
		this.ct = layer.getCoordTrans();
43
	}
57 44

  
58
    /**
59
     * @see com.iver.cit.gvsig.fmap.operations.strategies.FeatureVisitor#visit(com.iver.cit.gvsig.fmap.core.IGeometry,
60
     *      int)
61
     */
62
    public void visit(IGeometry g, int index) {
45
	/**
46
	 * Inserta la tolerancia que se aplica en la selecci?n.
47
	 *
48
	 * @param t tolerancia.
49
	 */
50
	public void setTolerance(double t) {
51
		tolerance = t;
52
	}
63 53

  
64
    	if (ct != null)
65
    	{    		
66
    		g.reProject(ct);
67
    	}				
68
       
69
        if (g.intersects(recPoint)) {
70
        	bitset.set(index, true);
71
        } else {
72
            bitset.set(index, false);
73
        }
74
    }
54
	/**
55
	 * Inserta el punto de consulta.
56
	 *
57
	 * @param p punto de consulta.
58
	 */
59
	public void setQueriedPoint(Point2D p) {
60
		point = p;
61
	}
75 62

  
76
    /**
77
     * @see com.iver.cit.gvsig.fmap.operations.strategies.FeatureVisitor#stop()
78
     */
79
    public void stop(FLayer layer) {
80
    }
63
	/**
64
	 * @see com.iver.cit.gvsig.fmap.operations.strategies.FeatureVisitor#visit(com.iver.cit.gvsig.fmap.core.IGeometry,
65
	 * 		int)
66
	 */
67
	public void visit(IGeometry g, int index) {
68
		if (ct != null) {
69
			g.reProject(ct);
70
		}
81 71

  
82
    /**
83
     * @see com.iver.cit.gvsig.fmap.operations.strategies.FeatureVisitor#start()
84
     */
85
    public boolean start(FLayer layer) {
86
        bitset = new FBitSet();
87
        recPoint = new Rectangle2D.Double(point.getX() -
88
                (tolerance / 2), point.getY() - (tolerance / 2), tolerance,
89
                tolerance);
90
      
91
        return true;
92
    }
72
		if (g.intersects(recPoint)) {
73
			bitset.set(index, true);
74
		} else {
75
			bitset.set(index, false);
76
		}
77
	}
78

  
79
	/**
80
	 * @see com.iver.cit.gvsig.fmap.operations.strategies.FeatureVisitor#stop()
81
	 */
82
	public void stop(FLayer layer) {
83
	}
84

  
85
	/**
86
	 * @see com.iver.cit.gvsig.fmap.operations.strategies.FeatureVisitor#start()
87
	 */
88
	public boolean start(FLayer layer) {
89
		bitset = new FBitSet();
90
		recPoint = new Rectangle2D.Double(point.getX() - (tolerance / 2),
91
				point.getY() - (tolerance / 2), tolerance, tolerance);
92

  
93
		return true;
94
	}
93 95
}

Also available in: Unified diff