Revision 772

View differences:

2.1/trunk/org.gvsig.view3d/org.gvsig.view3d.vector/org.gvsig.view3d.vector.lib/org.gvsig.view3d.vector.lib.impl/src/main/java/org/gvsig/view3d/vector/lib/impl/extrusion/DefaultVectorExtrusionLineRenderableLayer.java
40 40

  
41 41
    public DefaultVectorExtrusionLineRenderableLayer(VectorLoaderParameters parameters, FeatureStore featureStore,
42 42
        IVectorLegend legend) {
43
        super(parameters, featureStore);
44
        this.normalShapeAttributes = getNormalShapAttributes(legend);
43
        super(parameters, featureStore, legend);
45 44
    }
46 45

  
47 46
    @Override
......
91 90
        List<Position> verticesList = getVertices(curve, h, hasZ, coordTrans);
92 91
        Path path = new Path(verticesList);
93 92
        path.setAltitudeMode(getAltitudeMode(this.parameters.getVectorElevationMode()));
94
        path.setAttributes(normalShapeAttributes);
93
        path.setAttributes(getNormalShapAttributes(legend));
95 94
        path.setExtrude(true);
96 95
        return path;
97 96
    }
98 97

  
99 98
    private BasicShapeAttributes getNormalShapAttributes(IVectorLegend legend) {
99
        
100
        if(normalShapeAttributes != null) {
101
            return this.normalShapeAttributes;
102
        }
100 103

  
101 104
        Material outlineMaterial;
102 105
        double outlineOpacity = 1.0;
......
133 136
        return featureQuery;
134 137
    }
135 138

  
139
    @Override
140
    protected void clearRenderAttributes() {
141
        // Sets normal shape attributes to null to force create it again
142
        this.normalShapeAttributes = null;
143
    }
136 144
}
2.1/trunk/org.gvsig.view3d/org.gvsig.view3d.vector/org.gvsig.view3d.vector.lib/org.gvsig.view3d.vector.lib.impl/src/main/java/org/gvsig/view3d/vector/lib/impl/extrusion/DefaultVectorExtrusionPolygonRenderableLayer.java
17 17
import org.gvsig.fmap.geom.primitive.Point;
18 18
import org.gvsig.fmap.geom.primitive.Polygon;
19 19
import org.gvsig.fmap.geom.primitive.Ring;
20
import org.gvsig.fmap.mapcontext.layers.FLayer;
21 20
import org.gvsig.fmap.mapcontext.rendering.legend.IVectorLegend;
22 21
import org.gvsig.fmap.mapcontext.rendering.symbols.ISymbol;
23 22
import org.gvsig.symbology.fmap.mapcontext.rendering.symbol.fill.IFillSymbol;
......
40 39

  
41 40
    public DefaultVectorExtrusionPolygonRenderableLayer(VectorLoaderParameters parameters, FeatureStore featureStore,
42 41
        IVectorLegend legend) {
43
        super(parameters, featureStore);
44
        this.normalShapeAttributes = getNormalShapeAttributes(legend);
45
        this.sideShapeAttributes = getSideShapeAttributes(legend);
42
        super(parameters, featureStore, legend);
46 43
    }
47 44

  
48 45
    @Override
......
111 108
            renderable.addInnerBoundary(getInteriorRing(polygon.getInteriorRing(i), hasZ, h));
112 109
        }
113 110
        renderable.setAltitudeMode(getAltitudeMode(this.parameters.getVectorElevationMode()));
114
        renderable.setAttributes(normalShapeAttributes);
115
        renderable.setSideAttributes(sideShapeAttributes);
111
        renderable.setAttributes(getNormalShapeAttributes(legend));
112
        renderable.setSideAttributes(getSideShapeAttributes(legend));
116 113
        return renderable;
117 114
    }
118 115

  
......
132 129
    }
133 130

  
134 131
    private BasicShapeAttributes getSideShapeAttributes(IVectorLegend legend) {
132
        
133
        if(this.sideShapeAttributes != null) {
134
            return this.sideShapeAttributes;
135
        }
136
        
135 137
        Material sideFillMaterial = Material.GRAY;
136 138
        double fillOpacity = 0.7;
137 139

  
......
147 149
            sideFillMaterial = new Material(this.parameters.getDefaultColor());
148 150
            fillOpacity = 0.7;
149 151
        }
150
        BasicShapeAttributes attr = new BasicShapeAttributes();
151
        attr.setInteriorMaterial(sideFillMaterial);
152
        attr.setInteriorOpacity(fillOpacity);
153
        return attr;
152
        sideShapeAttributes = new BasicShapeAttributes();
153
        sideShapeAttributes.setInteriorMaterial(sideFillMaterial);
154
        sideShapeAttributes.setInteriorOpacity(fillOpacity);
155
        return sideShapeAttributes;
154 156
    }
155 157

  
156 158
    private BasicShapeAttributes getNormalShapeAttributes(IVectorLegend legend) {
159
        
160
        if(this.normalShapeAttributes != null) {
161
            return this.normalShapeAttributes;
162
        }
163
        
157 164
        Material fillMaterial = Material.LIGHT_GRAY;
158 165
        Material outlineMaterial = Material.BLACK;
159 166
        double fillOpacity = 0.7;
......
176 183
            fillOpacity = 0.7;
177 184
            outlineWidth = 2;
178 185
        }
179
        BasicShapeAttributes attr = new BasicShapeAttributes();
180
        attr.setInteriorMaterial(fillMaterial);
181
        attr.setInteriorOpacity(fillOpacity);
182
        attr.setOutlineMaterial(outlineMaterial);
183
        attr.setOutlineWidth(outlineWidth);
184
        return attr;
186
        normalShapeAttributes = new BasicShapeAttributes();
187
        normalShapeAttributes.setInteriorMaterial(fillMaterial);
188
        normalShapeAttributes.setInteriorOpacity(fillOpacity);
189
        normalShapeAttributes.setOutlineMaterial(outlineMaterial);
190
        normalShapeAttributes.setOutlineWidth(outlineWidth);
191
        return normalShapeAttributes;
185 192
    }
186 193

  
187 194
    /**
......
196 203
        int r = color.getRed();
197 204
        int g = color.getGreen();
198 205
        int b = color.getBlue();
199
        Color sideFillColor = new Color(Math.max((int) (r * factor), 0), Math.max((int) (g * factor), 0),
206
        return new Color(Math.max((int) (r * factor), 0), Math.max((int) (g * factor), 0),
200 207
            Math.max((int) (b * factor), 0));
201
        return sideFillColor;
202 208
    }
209

  
210
    @Override
211
    protected void clearRenderAttributes() {
212
        this.normalShapeAttributes = null;
213
        this.sideShapeAttributes = null;
214
    }
203 215
}
2.1/trunk/org.gvsig.view3d/org.gvsig.view3d.vector/org.gvsig.view3d.vector.lib/org.gvsig.view3d.vector.lib.impl/src/main/java/org/gvsig/view3d/vector/lib/impl/extrusion/DefaultVectorExtrusionPointRenderableLayer.java
11 11
import org.gvsig.fmap.dal.feature.Feature;
12 12
import org.gvsig.fmap.dal.feature.FeatureQuery;
13 13
import org.gvsig.fmap.dal.feature.FeatureStore;
14
import org.gvsig.fmap.dal.feature.FeatureType;
15 14
import org.gvsig.fmap.geom.Geometry;
16 15
import org.gvsig.fmap.geom.Geometry.TYPES;
17 16
import org.gvsig.fmap.geom.aggregate.MultiPoint;
......
35 34

  
36 35
    public DefaultVectorExtrusionPointRenderableLayer(VectorExtrusionLoaderParameters parameters, FeatureStore featureStore,
37 36
        IVectorLegend legend) {
38
        super(parameters, featureStore);
39
        this.markAttributes = getBasicMarkerAttributes(legend);
37
        super(parameters, featureStore, legend);
40 38
    }
41 39

  
42 40
    @Override
......
95 93
        }
96 94
        marker.setAltitudeMode(getAltitudeMode(parameters.getVectorElevationMode()));
97 95
        marker.setLineEnabled(true);
98
        marker.setAttributes(this.markAttributes);
96
        marker.setAttributes(this.getBasicMarkerAttributes(legend));
99 97
        return marker;
100 98
    }
101 99

  
......
144 142
        return markAttributes;
145 143
    }
146 144

  
145
    @Override
146
    protected void clearRenderAttributes() {
147
        this.markAttributes = null;
148
    }
149

  
147 150
}
2.1/trunk/org.gvsig.view3d/org.gvsig.view3d.vector/org.gvsig.view3d.vector.lib/org.gvsig.view3d.vector.lib.impl/src/main/java/org/gvsig/view3d/vector/lib/impl/vector/DefaultVectorLineRenderableLayer.java
13 13
import org.gvsig.fmap.geom.aggregate.MultiLine;
14 14
import org.gvsig.fmap.geom.primitive.Curve;
15 15
import org.gvsig.fmap.geom.primitive.Line;
16
import org.gvsig.fmap.geom.primitive.Point;
17
import org.gvsig.fmap.mapcontext.layers.FLayer;
18 16
import org.gvsig.fmap.mapcontext.rendering.legend.IVectorLegend;
19 17
import org.gvsig.fmap.mapcontext.rendering.symbols.ISymbol;
20 18
import org.gvsig.symbology.fmap.mapcontext.rendering.symbol.line.ILineSymbol;
......
34 32

  
35 33
    public DefaultVectorLineRenderableLayer(VectorLoaderParameters parameters, FeatureStore featureStore,
36 34
        IVectorLegend legend) {
37
        super(parameters, featureStore);
38
        this.normalShapeAttributes = getNormalShapAttributes(legend);
35
        super(parameters, featureStore, legend);
39 36
    }
40 37

  
41 38
    @Override
......
76 73
        List<Position> verticesList = getVertices(curve, h, hasZ, coordTrans);
77 74
        Path path = new Path(verticesList);
78 75
        path.setAltitudeMode(getAltitudeMode(this.parameters.getVectorElevationMode()));
79
        path.setAttributes(normalShapeAttributes);
76
        path.setAttributes(getNormalShapAttributes(legend));
80 77
        return path;
81 78
    }
82 79

  
83 80
    private BasicShapeAttributes getNormalShapAttributes(IVectorLegend legend) {
81
        
82
        if(this.normalShapeAttributes != null) {
83
            return normalShapeAttributes;
84
        }
84 85

  
85 86
        Material outlineMaterial;
86 87
        double outlineOpacity = 1.0;
......
105 106
        normalShapeAttributes.setOutlineOpacity(outlineOpacity);
106 107
        return normalShapeAttributes;
107 108
    }
109

  
110
    @Override
111
    protected void clearRenderAttributes() {
112
        this.normalShapeAttributes = null;
113
    }
108 114
}
2.1/trunk/org.gvsig.view3d/org.gvsig.view3d.vector/org.gvsig.view3d.vector.lib/org.gvsig.view3d.vector.lib.impl/src/main/java/org/gvsig/view3d/vector/lib/impl/vector/DefaultVectorPolygonRenderableLayer.java
14 14
import org.gvsig.fmap.geom.primitive.Point;
15 15
import org.gvsig.fmap.geom.primitive.Polygon;
16 16
import org.gvsig.fmap.geom.primitive.Ring;
17
import org.gvsig.fmap.mapcontext.layers.FLayer;
18 17
import org.gvsig.fmap.mapcontext.rendering.legend.IVectorLegend;
19 18
import org.gvsig.fmap.mapcontext.rendering.symbols.ISymbol;
20 19
import org.gvsig.symbology.fmap.mapcontext.rendering.symbol.fill.IFillSymbol;
......
34 33

  
35 34
    public DefaultVectorPolygonRenderableLayer(VectorLoaderParameters parameters, FeatureStore featureStore,
36 35
        IVectorLegend legend) {
37
        super(parameters, featureStore);
38
        this.normalShapeAttributes = getNormalBasicShapeAttributes(legend);
36
        super(parameters, featureStore, legend);
39 37
    }
40 38

  
41 39
    @Override
......
84 82
            renderable.addInnerBoundary(getInteriorRing(polygon.getInteriorRing(i), hasZ, h));
85 83
        }
86 84
        renderable.setAltitudeMode(getAltitudeMode(this.parameters.getVectorElevationMode()));
87
        renderable.setAttributes(normalShapeAttributes);
85
        renderable.setAttributes(getNormalBasicShapeAttributes(legend));
88 86
        return renderable;
89 87
    }
90 88

  
......
104 102
    }
105 103

  
106 104
    private BasicShapeAttributes getNormalBasicShapeAttributes(IVectorLegend legend) {
105
        
106
        if(normalShapeAttributes != null) {
107
            return this.normalShapeAttributes;
108
        }
107 109

  
108 110
        Material fillMaterial = Material.LIGHT_GRAY;
109 111
        Material outlineMaterial = Material.BLACK;
......
127 129
            fillOpacity = 0.7;
128 130
            outlineWidth = 2;
129 131
        }
130
        BasicShapeAttributes attr = new BasicShapeAttributes();
131
        attr.setInteriorMaterial(fillMaterial);
132
        attr.setInteriorOpacity(fillOpacity);
133
        attr.setOutlineMaterial(outlineMaterial);
134
        attr.setOutlineWidth(outlineWidth);
135
        return attr;
132
        normalShapeAttributes = new BasicShapeAttributes();
133
        normalShapeAttributes.setInteriorMaterial(fillMaterial);
134
        normalShapeAttributes.setInteriorOpacity(fillOpacity);
135
        normalShapeAttributes.setOutlineMaterial(outlineMaterial);
136
        normalShapeAttributes.setOutlineWidth(outlineWidth);
137
        return normalShapeAttributes;
136 138
    }
139

  
140
    @Override
141
    protected void clearRenderAttributes() {
142
        // Sets normal shape attributes to null to force create it again
143
        this.normalShapeAttributes = null;
144
    }
137 145
}
2.1/trunk/org.gvsig.view3d/org.gvsig.view3d.vector/org.gvsig.view3d.vector.lib/org.gvsig.view3d.vector.lib.impl/src/main/java/org/gvsig/view3d/vector/lib/impl/vector/DefaultVectorPointRenderableLayer.java
6 6

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

  
9
import org.gvsig.fmap.dal.exception.DataException;
10 9
import org.gvsig.fmap.dal.feature.Feature;
11
import org.gvsig.fmap.dal.feature.FeatureQuery;
12 10
import org.gvsig.fmap.dal.feature.FeatureStore;
13
import org.gvsig.fmap.dal.feature.FeatureType;
14 11
import org.gvsig.fmap.geom.Geometry;
15 12
import org.gvsig.fmap.geom.Geometry.TYPES;
16 13
import org.gvsig.fmap.geom.aggregate.MultiPoint;
......
34 31

  
35 32
    public DefaultVectorPointRenderableLayer(VectorLoaderParameters parameters, FeatureStore featureStore,
36 33
        IVectorLegend legend) {
37
        super(parameters, featureStore);
38
        this.markAttributes = getBasicMarkerAttributes(legend);
34
        super(parameters, featureStore, legend);
39 35
    }
40 36

  
41 37
    @Override
......
86 82
            marker = new PointPlacemark(position);
87 83
        }
88 84
        marker.setAltitudeMode(getAltitudeMode(parameters.getVectorElevationMode()));
89
        marker.setAttributes(this.markAttributes);
85
        marker.setAttributes(getBasicMarkerAttributes(super.legend));
90 86
        return marker;
91 87
    }
92 88

  
......
124 120
        return markAttributes;
125 121
    }
126 122

  
123
    @Override
124
    protected void clearRenderAttributes() {
125
        this.markAttributes = null;
126
    }
127

  
127 128
}
2.1/trunk/org.gvsig.view3d/org.gvsig.view3d.vector/org.gvsig.view3d.vector.lib/org.gvsig.view3d.vector.lib.impl/src/main/java/org/gvsig/view3d/vector/lib/impl/AbstractRenderableLayer.java
19 19
import org.gvsig.fmap.dal.feature.FeatureType;
20 20
import org.gvsig.fmap.geom.primitive.OrientablePrimitive;
21 21
import org.gvsig.fmap.geom.primitive.Point;
22
import org.gvsig.fmap.mapcontext.rendering.legend.IVectorLegend;
22 23
import org.gvsig.tools.dispose.DisposableIterator;
23 24
import org.gvsig.view3d.vector.lib.api.VectorElevationMode;
24 25
import org.gvsig.view3d.vector.lib.api.VectorLoaderParameters;
......
33 34
    private static final Logger LOG = LoggerFactory.getLogger(AbstractRenderableLayer.class);
34 35

  
35 36
    protected FeatureStore featureStore;
37
    protected IVectorLegend legend;
36 38

  
37 39
    protected VectorLoaderParameters parameters;
38 40

  
39
    public AbstractRenderableLayer(VectorLoaderParameters parameters, FeatureStore featureStore) {
41
    public AbstractRenderableLayer(VectorLoaderParameters parameters, FeatureStore featureStore, IVectorLegend legend) {
40 42
        this.featureStore = featureStore;
43
        this.legend = legend;
41 44
        this.parameters = parameters;
45
        addRenderableObjects();
46
    }
47
    
48
    protected void addRenderableObjects() {
42 49
        ExecutorService executor = Executors.newSingleThreadExecutor();
43
        executor.execute(addRenderableObjects());
44
    }
45

  
46
    protected Runnable addRenderableObjects() {
47
        
48
        return new Runnable() {
50
        executor.execute( new Runnable() {
49 51
            
50 52
            @Override
51 53
            public void run() {
......
83 85
                    }
84 86
                }
85 87
            }
86
        };
88
        });
87 89
    }
88 90

  
89 91
    protected int getAltitudeMode(VectorElevationMode mode) {
......
138 140
        IProjection destProj = CRSFactory.getCRS("EPSG:4326");
139 141
        return origProj.getCT(destProj);
140 142
    }
143
    
144
    @Override
145
    public void setExpiryTime(long expiryTime) {
146
        // If expiry time is greater than last expiry time, reload 
147
        // renderables
148
        if (expiryTime > this.getExpiryTime()) {
149
            reloadRenderables();
150
        }
151
        super.setExpiryTime(expiryTime);
152
    }
141 153

  
154
    protected void reloadRenderables() {
155
        // Clear renderables
156
        clearRenderables();
157
        // Clear render attibutes
158
        clearRenderAttributes();
159
        // Reload renderables
160
        addRenderableObjects();
161
    }
162
    
163
    /**
164
     * 
165
     */
166
    protected abstract void clearRenderAttributes();
167
    
168
    /**
169
     * 
170
     * @param feature
171
     * @return
172
     */
142 173
    protected abstract List<Renderable> getRenderables(Feature feature);
143 174
}

Also available in: Unified diff