Revision 329 2.0/trunk/org.gvsig.gvsig3d/org.gvsig.gvsig3d.lib/org.gvsig.gvsig3d.lib.impl/src/main/java/org/gvsig/gvsig3d/impl/map3d/MapContext3DImpl.java
MapContext3DImpl.java | ||
---|---|---|
67 | 67 |
import org.gvsig.fmap.mapcontext.layers.operations.SingleLayer; |
68 | 68 |
import org.gvsig.fmap.mapcontext.layers.vectorial.FLyrVect; |
69 | 69 |
import org.gvsig.fmap.mapcontext.rendering.legend.ILegend; |
70 |
import org.gvsig.fmap.mapcontext.rendering.legend.ISingleSymbolLegend; |
|
70 | 71 |
import org.gvsig.fmap.mapcontext.rendering.legend.IVectorLegend; |
71 | 72 |
import org.gvsig.fmap.mapcontext.rendering.legend.events.LegendChangedEvent; |
72 | 73 |
import org.gvsig.fmap.mapcontext.rendering.legend.events.LegendClearEvent; |
... | ... | |
452 | 453 |
// if (layer instanceof FLyrVect) { |
453 | 454 |
// Set a 3D Legend |
454 | 455 |
|
455 |
if (!(((FLyrVect) layer).getLegend().getDefaultSymbol() instanceof I3DSymbol)) { |
|
456 |
try { |
|
457 |
((FLyrVect) layer) |
|
458 |
.setLegend((IVectorLegend) MapContextLocator |
|
459 |
.getMapContextManager().getLegend( |
|
460 |
((FLyrVect) layer).getDataStore(), |
|
461 |
"project.document.view3d")); |
|
462 |
} catch (LegendLayerException e) { |
|
463 |
// TODO Auto-generated catch block |
|
464 |
e.printStackTrace(); |
|
465 |
} catch (LocatorException e) { |
|
466 |
// TODO Auto-generated catch block |
|
467 |
e.printStackTrace(); |
|
468 |
} |
|
456 |
if (!(((FLyrVect) layer).getLegend().getDefaultSymbol() |
|
457 |
instanceof I3DSymbol)) { |
|
458 |
try { |
|
459 |
((FLyrVect) layer).setLegend((IVectorLegend) MapContextLocator |
|
460 |
.getMapContextManager().getLegend( |
|
461 |
((FLyrVect) layer).getDataStore(), |
|
462 |
"project.document.view3d")); |
|
463 |
} catch (LegendLayerException e) { |
|
464 |
// TODO Auto-generated catch block |
|
465 |
e.printStackTrace(); |
|
466 |
} catch (LocatorException e) { |
|
467 |
// TODO Auto-generated catch block |
|
468 |
e.printStackTrace(); |
|
469 | 469 |
} |
470 |
} |
|
470 | 471 |
|
471 | 472 |
VectorLayer vlayer = new VectorLayer(); |
472 | 473 |
vlayer.setEnabled(layer.isVisible()); |
... | ... | |
700 | 701 |
} |
701 | 702 |
|
702 | 703 |
public void invalidateVectorLayer(Layer3DProps props) { |
704 |
|
|
703 | 705 |
// TODO Auto-generated method stub |
704 | 706 |
// if (_terrain == null || _viewProjection == null) |
705 | 707 |
// return; |
... | ... | |
1067 | 1069 |
if (rde.getLayer().getLayerType() == Layer.LayerType.TEXTURELAYER) |
1068 | 1070 |
ude = loadRasterData(layer, envelope, rde); |
1069 | 1071 |
|
1070 |
|
|
1071 |
if (rde.getLayer().getLayerType() == Layer.LayerType.VECTORLAYER) |
|
1072 |
{ |
|
1073 |
// GeometryMarker3DSymbol n = new GeometryMarker3DSymbol(); |
|
1074 |
// n.setPictureFileURL("/home/jtorres/.depman/share/osgVP/resources/marker.png"); |
|
1075 |
// n.setSize(25.0f); |
|
1076 |
ude = loadVectorData(layer, envelope, rde, null); |
|
1072 |
if (rde.getLayer().getLayerType() == Layer.LayerType.VECTORLAYER) { |
|
1073 |
// NodeMarker3DSymbol n = new NodeMarker3DSymbol(); |
|
1074 |
// n.setNodeFileURL("/home/jtorres/Projects/OpenSceneGraph/OpenSceneGraph-Data/dumptruck.osg"); |
|
1075 |
// n.setSize(25.0f); |
|
1076 |
ude = loadVectorData(layer, envelope, rde); |
|
1077 | 1077 |
} |
1078 | 1078 |
if (rde.getLayer().getLayerType() == Layer.LayerType.HEIGHTFIELDLAYER) |
1079 | 1079 |
ude = loadElevationData(layer, envelope, rde); |
... | ... | |
1244 | 1244 |
} |
1245 | 1245 |
|
1246 | 1246 |
private UpdateDataEvent loadVectorData(FLayer layer, Envelope envelope, |
1247 |
RequestDataEvent rde, I3DSymbol sy) {
|
|
1247 |
RequestDataEvent rde) { |
|
1248 | 1248 |
|
1249 | 1249 |
System.out.println("vector data"); |
1250 | 1250 |
UpdateDataEvent ude = new UpdateDataEvent(); |
1251 | 1251 |
ude.copyDataFromRequest(rde); |
1252 | 1252 |
|
1253 | 1253 |
// Convenience casting, create a default 3D symbol |
1254 |
IVectorLegend legend = (IVectorLegend) ((FLyrVect) layer).getLegend(); |
|
1254 |
ISingleSymbolLegend legend = (ISingleSymbolLegend) ((FLyrVect) layer).getLegend(); |
|
1255 |
I3DSymbol sy= (I3DSymbol) legend.getDefaultSymbol(); |
|
1255 | 1256 |
|
1256 |
if(sy==null) sy = (I3DSymbol) legend.getDefaultSymbol(); |
|
1257 |
else legend.setDefaultSymbol(sy); |
|
1258 |
|
|
1259 |
//Hack for polylines and polygons to only render them rasterized |
|
1260 |
//till gvSIG architects solve geometries problem |
|
1261 |
if (sy instanceof IFillSymbol || sy instanceof ILineSymbol) |
|
1262 |
{ |
|
1263 | 1257 |
|
1258 |
// Hack for polylines and polygons to only render them rasterized |
|
1259 |
// till gvSIG architects solve geometries problem |
|
1260 |
if (sy instanceof IFillSymbol || sy instanceof ILineSymbol) { |
|
1261 |
|
|
1264 | 1262 |
removeLayerToTerrain(layer); |
1265 | 1263 |
getLayer3DProps(layer).setType(Layer3DPropsImpl.layer3DImage); |
1266 | 1264 |
addLayerToTerrain(layer, true); |
... | ... | |
1278 | 1276 |
vp.setDist1pixel(0.000000001); |
1279 | 1277 |
double scale = 0.5 * (layer.getMaxScale() + layer.getMinScale()); |
1280 | 1278 |
|
1281 |
try { |
|
1282 |
layer.draw(null, null, vp, new MyCancel(), scale); |
|
1283 |
} catch (ReadException e) { |
|
1284 |
// TODO Auto-generated catch block |
|
1285 |
e.printStackTrace(); |
|
1279 |
if (sy.getGeometry().getSize() == 0) { |
|
1280 |
try { |
|
1281 |
layer.draw(null, null, vp, new MyCancel(), scale); |
|
1282 |
} catch (ReadException e) { |
|
1283 |
// TODO Auto-generated catch block |
|
1284 |
e.printStackTrace(); |
|
1285 |
} |
|
1286 | 1286 |
} |
1287 |
|
|
1288 | 1287 |
// OSG Layers |
1289 | 1288 |
DataStore ds = ((SingleLayer) layer).getDataStore(); |
1290 | 1289 |
Node n = null; |
... | ... | |
1300 | 1299 |
} |
1301 | 1300 |
// Vectorial layers |
1302 | 1301 |
else { |
1303 |
ISymbol3D sym = null; |
|
1304 |
try { |
|
1305 |
sym = Symbol3DFactory.getSymbol3D(sy); |
|
1306 |
} catch (NodeException e) { |
|
1307 |
// TODO Auto-generated catch block |
|
1308 |
e.printStackTrace(); |
|
1309 |
} |
|
1310 |
// sm.setPointSize((float) sy.getSize()); |
|
1311 |
n = sym.buildSceneGraph(sy.getGeometry()); |
|
1302 |
n=this.buildVectors(sy); |
|
1312 | 1303 |
} |
1313 |
|
|
1314 | 1304 |
ude.setVectorData(n); |
1315 | 1305 |
|
1316 | 1306 |
return ude; |
1317 | 1307 |
} |
1318 | 1308 |
|
1309 |
private Node buildVectors(I3DSymbol symbol) { |
|
1310 |
Node n = null; |
|
1311 |
|
|
1312 |
ISymbol3D sym = null; |
|
1313 |
try { |
|
1314 |
sym = Symbol3DFactory.getSymbol3D(symbol); |
|
1315 |
} catch (NodeException e) { |
|
1316 |
// TODO Auto-generated catch block |
|
1317 |
e.printStackTrace(); |
|
1318 |
} |
|
1319 |
// sm.setPointSize((float) sy.getSize()); |
|
1320 |
n = sym.buildSceneGraph(symbol.getGeometry()); |
|
1321 |
return n; |
|
1322 |
} |
|
1323 |
|
|
1319 | 1324 |
private UpdateDataEvent loadElevationData(FLayer layer, Envelope envelope, |
1320 | 1325 |
RequestDataEvent rde) { |
1321 | 1326 |
|
Also available in: Unified diff