Revision 772
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