Statistics
| Revision:

svn-gvsig-desktop / trunk / libraries / libFMap / src / com / iver / cit / gvsig / fmap / operations / strategies / DefaultStrategy.java @ 244

History | View | Annotate | Download (5.05 KB)

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

    
4
import java.awt.Graphics2D;
5
import java.awt.geom.AffineTransform;
6
import java.awt.geom.Rectangle2D;
7
import java.awt.image.BufferedImage;
8
import java.util.BitSet;
9

    
10
import com.iver.cit.gvsig.fmap.ViewPort;
11
import com.iver.cit.gvsig.fmap.core.FGeometry;
12
import com.iver.cit.gvsig.fmap.drivers.DriverIOException;
13
import com.iver.cit.gvsig.fmap.drivers.VectorialFileDriver;
14
import com.iver.cit.gvsig.fmap.layers.FLyrVect;
15
import com.iver.cit.gvsig.fmap.layers.VectorialAdapter;
16
import com.iver.cit.gvsig.fmap.operations.Cancellable;
17
import com.iver.cit.gvsig.fmap.operations.QueriedPoint;
18
import com.iver.cit.gvsig.fmap.rendering.Legend;
19

    
20

    
21
/**
22
 * Implementa la Strategy por defecto. Los m?todos que tendr?n en com?n la
23
 * mayor parte de las estrategias
24
 */
25
public class DefaultStrategy implements Strategy {
26
        private FLyrVect capa = null;
27

    
28
        /**
29
         * Crea un nuevo DefaultStrategy.
30
         *
31
         * @param capa DOCUMENT ME!
32
         */
33
        public DefaultStrategy(FLyrVect capa) {
34
                this.capa = capa;
35
        }
36

    
37
        /**
38
         * @see com.iver.cit.gvsig.fmap.operations.strategies.Strategy#queryByRect(java.awt.geom.Rectangle2D)
39
         */
40
        public BitSet queryByRect(Rectangle2D rect) throws DriverIOException{
41
                
42
                QueryByRectVisitor visitor=new QueryByRectVisitor();
43
                visitor.setRect(rect);
44
                process(visitor);
45
                return visitor.getBitSet();
46
        }
47

    
48
        /**
49
         * @throws DriverIOException
50
         * @see com.iver.cit.gvsig.fmap.operations.strategies.Strategy#queryByShape(com.iver.cit.gvsig.fmap.fshape.FGeometry,
51
         *                 int)
52
         */
53
        public BitSet queryByShape(FGeometry g, int relationship) throws DriverIOException {
54
                QueryByShapeVisitor visitor=new QueryByShapeVisitor();
55
                visitor.setRelationShip(relationship);
56
                visitor.setShape(g);
57
                process(visitor);
58
                return visitor.getBitSet();
59
        }
60

    
61
        /**
62
         * @see com.iver.cit.gvsig.fmap.operations.strategies.Strategy#getSelectionBounds()
63
         */
64
        public Rectangle2D getSelectionBounds() {
65
                return null;
66
        }
67

    
68
        /**
69
         * @see com.iver.cit.gvsig.fmap.operations.strategies.Strategy#createIndex()
70
         */
71
        public void createIndex() {
72
        }
73

    
74
        /**
75
         * DOCUMENT ME!
76
         *
77
         * @param image DOCUMENT ME!
78
         * @param g DOCUMENT ME!
79
         * @param viewPort DOCUMENT ME!
80
         *
81
         * @throws DriverIOException
82
         *
83
         * @see com.iver.cit.gvsig.fmap.operations.LayerOperations#draw(java.awt.image.BufferedImage,
84
         *                 java.awt.Graphics2D, com.iver.cit.gvsig.fmap.ViewPort)
85
         */
86
        public void draw(BufferedImage image, Graphics2D g, ViewPort viewPort, Cancellable cancel)
87
                throws DriverIOException {
88
                VectorialAdapter adapter = capa.getSource();
89

    
90
                adapter.start();
91

    
92
                VectorialFileDriver driver = (VectorialFileDriver) adapter.getDriver();
93
                int sc;
94
                long t1 = System.currentTimeMillis();
95
                Rectangle2D extent = viewPort.getAdjustedExtent();
96
                AffineTransform at = viewPort.getAffineTransform();
97

    
98
                sc = adapter.getShapeCount();
99

    
100
                for (int i = 0; i < sc; i++) {
101
                        if (cancel.isCanceled()) break;
102
                        FGeometry geom = adapter.getShape(i);
103
                        Legend l = capa.getLegend(geom.getType());
104

    
105
                        if (geom.intersects(extent)) {
106
                                geom.draw(g, viewPort, l.getSymbol(null));
107
                        }
108
                }
109

    
110
                long t2 = System.currentTimeMillis();
111
                adapter.stop();
112

    
113
                System.out.println(t2 - t1);
114
        }
115

    
116
        /**
117
         * DOCUMENT ME!
118
         *
119
         * @return Returns the capa.
120
         */
121
        public FLyrVect getCapa() {
122
                return capa;
123
        }
124

    
125
        /**
126
         * @see com.iver.cit.gvsig.fmap.operations.LayerOperations#getFullExtent()
127
         */
128
        public Rectangle2D getFullExtent() throws DriverIOException {
129
                return null;
130
        }
131

    
132
        /**
133
         * @throws DriverIOException
134
         * @see com.iver.cit.gvsig.fmap.operations.strategies.Strategy#process(com.iver.cit.gvsig.fmap.operations.strategies.FeatureVisitor, com.iver.cit.gvsig.fmap.operations.selection.VectorialSubSet)
135
         */
136
        public void process(FeatureVisitor visitor, BitSet subset) throws DriverIOException {
137
                visitor.start();
138
                VectorialAdapter va=capa.getSource();
139
                for (int i=0;i<va.getShapeCount();i++){
140
                        if (subset.get(i)){
141
                                visitor.visit(va.getShape(i), i);
142
                        }
143
                }
144
                visitor.stop();
145
        }
146
        /**
147
         * @see com.iver.cit.gvsig.fmap.operations.strategies.Strategy#process(com.iver.cit.gvsig.fmap.operations.strategies.FeatureVisitor)
148
         */
149
        public void process(FeatureVisitor visitor) throws DriverIOException {
150
                visitor.start();
151
                VectorialAdapter va=capa.getSource();
152
                for (int i=0;i<va.getShapeCount();i++){
153
                        visitor.visit(va.getShape(i), i);
154
                }
155
                visitor.stop();
156
        }
157
        /**
158
         * @see com.iver.cit.gvsig.fmap.operations.strategies.Strategy#queryByPoint(com.iver.cit.gvsig.fmap.operations.QueriedPoint, double)
159
         */
160
        public BitSet queryByPoint(QueriedPoint p, double tolerance) throws DriverIOException {
161
                QueryByPointVisitor visitor=new QueryByPointVisitor();
162
                visitor.setLayer(capa);
163
                visitor.setTolerance(tolerance);
164
                visitor.setQueriedPoint(p);
165
                process(visitor);
166
                return visitor.getBitSet();
167
        }
168

    
169
        /* (non-Javadoc)
170
         * @see com.iver.cit.gvsig.fmap.operations.strategies.Strategy#print(java.awt.Graphics2D, com.iver.cit.gvsig.fmap.ViewPort)
171
         */
172
        public void print(Graphics2D g, ViewPort viewPort, Cancellable cancel) throws DriverIOException {
173
                draw(null, g, viewPort, cancel);  // Quiero ejecutar el draw del padre, que es el que va sin acelaraci?n!!
174
                
175
        }
176

    
177
        
178
}