Statistics
| Revision:

svn-gvsig-desktop / trunk / prototypes / mobile / desktop / extensions / extExportMobile / src / es / prodevelop / gvsig / exportMobile / ui / panels / LayerInView.java @ 19124

History | View | Annotate | Download (2.38 KB)

1
package es.prodevelop.gvsig.exportMobile.ui.panels;
2

    
3
import java.awt.Rectangle;
4
import java.awt.geom.Rectangle2D;
5

    
6
import com.iver.cit.gvsig.fmap.DriverException;
7
import com.iver.cit.gvsig.fmap.core.IGeometry;
8
import com.iver.cit.gvsig.fmap.drivers.DriverIOException;
9
import com.iver.cit.gvsig.fmap.layers.FBitSet;
10
import com.iver.cit.gvsig.fmap.layers.FLayer;
11
import com.iver.cit.gvsig.fmap.layers.FLyrVect;
12
import com.iver.cit.gvsig.fmap.layers.ReadableVectorial;
13

    
14
/**
15
 * To know if the layer instersects with the view
16
 * @author Anabel Moreno
17
 *
18
 */
19
public class LayerInView {
20

    
21
        private FLayer lyr;
22
        private FLyrVect layer;
23
        private FBitSet bitSet;
24
        private boolean intersects=false;
25
        private int cont = 0;
26
        private Rectangle2D rect;                                                                                                                                                                                                                               ;
27

    
28
        /**
29
         * Constructor
30
         * @param layer
31
         *            to work
32
         * @param rectangle
33
         *            of the view
34
         */
35
        public LayerInView(FLayer layer, Rectangle2D rectangle) {
36

    
37
                lyr = layer;
38
                rect = rectangle;
39
        }
40

    
41
        /**
42
         * if layer is vectorial look for layer`s geometries that intersects with the view,
43
         * if any geometries intersects, the method return true.
44
         * @return true if layer intersects with the view
45
         */
46
        public boolean isInView() {
47

    
48
                Rectangle2D lyrR = null;
49
                Rectangle r = null;
50
                
51
                try {
52
                        lyrR = lyr.getFullExtent();
53
                        r = rect.getBounds();
54
                        
55
                        if (r.intersects(lyrR)){
56
                                intersects = true;
57
                                
58
                                if(lyr instanceof FLyrVect){
59
                                        
60
                                        layer = (FLyrVect) lyr;
61
                                        
62
                                        bitSet = layer.queryByRect(rect);
63
                                                                                
64
                                        ReadableVectorial va = layer.getSource();
65
                                        
66
                                        va.start();
67
                                        
68
                                        for (int i = bitSet.nextSetBit(0); i >= 0; i = bitSet.nextSetBit(i + 1)) {
69
                
70
                                                IGeometry geo = va.getShape(i);
71
                                                if (geo != null) {
72
                                                        cont++;
73
                                                }
74
                                        }
75
                                        va.stop();
76
                                        
77
                                        if (cont >0)
78
                                                intersects = true;
79
                                        else
80
                                                intersects = false;
81
                                }
82
                        }                                
83
                        else
84
                                intersects =  false;
85

    
86
                } catch (DriverException e1) {
87
                        // TODO Auto-generated catch block
88
                        e1.printStackTrace();
89
                } catch (DriverIOException e) {
90
                        // TODO Auto-generated catch block
91
                        e.printStackTrace();
92
                }
93

    
94
                return intersects;
95
        }
96

    
97
}