Changeset 4036 for trunk/packages
- Timestamp:
- Nov 6, 2013, 12:50:36 AM (11 years ago)
- Location:
- trunk/packages/vizservers/geovis
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/packages/vizservers/geovis/Renderer.cpp
r4033 r4036 26 26 #include <osgEarth/ModelLayer> 27 27 #include <osgEarthUtil/EarthManipulator> 28 #include <osgEarthUtil/AutoClipPlaneHandler> 28 29 #include <osgEarthUtil/MouseCoordsTool> 29 30 … … 128 129 _mouseCoordsTool = new osgEarth::Util::MouseCoordsTool(mapNode); 129 130 _mouseCoordsTool->addCallback(_coordsCallback.get()); 131 if (_clipPlaneCullCallback.valid()) { 132 _viewer->getCamera()->removeCullCallback(_clipPlaneCullCallback.get()); 133 _clipPlaneCullCallback = NULL; 134 } 135 if (_map->isGeocentric()) { 136 _clipPlaneCullCallback = new osgEarth::Util::AutoClipPlaneCullCallback(mapNode); 137 _viewer->getCamera()->addCullCallback(_clipPlaneCullCallback.get()); 138 } 130 139 _viewer->addEventHandler(_mouseCoordsTool.get()); 131 140 _viewer->setSceneData(_sceneRoot.get()); … … 162 171 _mouseCoordsTool->addCallback(_coordsCallback.get()); 163 172 _viewer->addEventHandler(_mouseCoordsTool.get()); 173 174 if (_clipPlaneCullCallback.valid()) { 175 _viewer->getCamera()->removeCullCallback(_clipPlaneCullCallback.get()); 176 _clipPlaneCullCallback = NULL; 177 } 178 if (_map->isGeocentric()) { 179 _clipPlaneCullCallback = new osgEarth::Util::AutoClipPlaneCullCallback(mapNode); 180 _viewer->getCamera()->addCullCallback(_clipPlaneCullCallback.get()); 181 } 164 182 _viewer->setSceneData(_sceneRoot.get()); 165 183 _manipulator = new osgEarth::Util::EarthManipulator; … … 172 190 } 173 191 192 void Renderer::clearMap() 193 { 194 if (_map.valid()) { 195 _map->clear(); 196 } 197 } 198 174 199 bool Renderer::mapMouseCoords(float mouseX, float mouseY, osgEarth::GeoPoint& map) 175 200 { … … 191 216 { 192 217 osgEarth::ImageLayer *layer = _map->getImageLayerByName(name); 193 _map->removeImageLayer(layer); 218 if (layer != NULL) { 219 _map->removeImageLayer(layer); 220 } 194 221 } 195 222 … … 197 224 { 198 225 osgEarth::ImageLayer *layer = _map->getImageLayerByName(name); 199 _map->moveImageLayer(layer, pos); 226 if (layer != NULL) { 227 _map->moveImageLayer(layer, pos); 228 } 200 229 } 201 230 … … 203 232 { 204 233 osgEarth::ImageLayer *layer = _map->getImageLayerByName(name); 205 layer->setOpacity(opacity); 234 if (layer != NULL) { 235 layer->setOpacity(opacity); 236 } 206 237 } 207 238 … … 210 241 #if OSGEARTH_MIN_VERSION_REQUIRED(2, 4, 0) 211 242 osgEarth::ImageLayer *layer = _map->getImageLayerByName(name); 212 layer->setVisible(state); 243 if (layer != NULL) { 244 layer->setVisible(state); 245 } 213 246 #endif 214 247 } … … 223 256 { 224 257 osgEarth::ElevationLayer *layer = _map->getElevationLayerByName(name); 225 _map->removeElevationLayer(layer); 258 if (layer != NULL) { 259 _map->removeElevationLayer(layer); 260 } 226 261 } 227 262 … … 229 264 { 230 265 osgEarth::ElevationLayer *layer = _map->getElevationLayerByName(name); 231 _map->moveElevationLayer(layer, pos); 266 if (layer != NULL) { 267 _map->moveElevationLayer(layer, pos); 268 } 269 } 270 271 void Renderer::setElevationLayerVisibility(const char *name, bool state) 272 { 273 #if OSGEARTH_MIN_VERSION_REQUIRED(2, 4, 0) 274 osgEarth::ElevationLayer *layer = _map->getElevationLayerByName(name); 275 if (layer != NULL) { 276 layer->setVisible(state); 277 } 278 #endif 232 279 } 233 280 … … 241 288 { 242 289 osgEarth::ModelLayer *layer = _map->getModelLayerByName(name); 243 _map->removeModelLayer(layer); 290 if (layer != NULL) { 291 _map->removeModelLayer(layer); 292 } 244 293 } 245 294 … … 247 296 { 248 297 osgEarth::ModelLayer *layer = _map->getModelLayerByName(name); 249 _map->moveModelLayer(layer, pos); 298 if (layer != NULL) { 299 _map->moveModelLayer(layer, pos); 300 } 301 } 302 303 void Renderer::setModelLayerVisibility(const char *name, bool state) 304 { 305 #if OSGEARTH_MIN_VERSION_REQUIRED(2, 4, 0) 306 osgEarth::ModelLayer *layer = _map->getModelLayerByName(name); 307 if (layer != NULL) { 308 layer->setVisible(state); 309 } 310 #endif 250 311 } 251 312 -
trunk/packages/vizservers/geovis/Renderer.h
r4033 r4036 28 28 #include <osgEarthUtil/EarthManipulator> 29 29 #include <osgEarthUtil/MouseCoordsTool> 30 #include <osgEarthUtil/AutoClipPlaneHandler> 30 31 31 32 #include "Types.h" … … 134 135 void resetMap(osgEarth::MapOptions::CoordinateSystemType type, const char *profile = NULL); 135 136 137 void clearMap(); 138 136 139 // Map options 137 140 … … 140 143 // Image raster layers 141 144 145 int getNumImageLayers() const 146 { 147 return (_map.valid() ? _map->getNumImageLayers() : 0); 148 } 149 142 150 void addImageLayer(const char *name, const osgEarth::TileSourceOptions& opts); 143 151 … … 152 160 // Elevation raster layers 153 161 162 int getNumElevationLayers() const 163 { 164 return (_map.valid() ? _map->getNumElevationLayers() : 0); 165 } 166 154 167 void addElevationLayer(const char *name, const osgEarth::TileSourceOptions& opts); 155 168 … … 158 171 void moveElevationLayer(const char *name, unsigned int pos); 159 172 173 void setElevationLayerVisibility(const char *name, bool state); 174 160 175 // Model layers 161 176 177 int getNumModelLayers() const 178 { 179 return (_map.valid() ? _map->getNumModelLayers() : 0); 180 } 181 162 182 void addModelLayer(const char *name, const osgEarth::ModelSourceOptions& opts); 163 183 … … 165 185 166 186 void moveModelLayer(const char *name, unsigned int pos); 187 188 void setModelLayerVisibility(const char *name, bool state); 167 189 168 190 // Render window … … 252 274 osg::ref_ptr<osgViewer::Viewer> _viewer; 253 275 osg::ref_ptr<ScreenCaptureCallback> _captureCallback; 276 osg::ref_ptr<osgEarth::Util::AutoClipPlaneCullCallback> _clipPlaneCullCallback; 254 277 osg::ref_ptr<osgEarth::Util::MouseCoordsTool> _mouseCoordsTool; 255 278 osg::ref_ptr<MouseCoordsCallback> _coordsCallback; -
trunk/packages/vizservers/geovis/RendererCmd.cpp
r4033 r4036 19 19 #include <tcl.h> 20 20 21 #include <osgEarthFeatures/FeatureModelSource> 22 #include <osgEarthSymbology/Color> 23 #include <osgEarthSymbology/Style> 24 #include <osgEarthSymbology/StyleSheet> 25 #include <osgEarthSymbology/LineSymbol> 26 21 27 #include <osgEarthDrivers/gdal/GDALOptions> 28 #include <osgEarthDrivers/model_feature_geom/FeatureGeomModelOptions> 29 #include <osgEarthDrivers/feature_ogr/OGRFeatureOptions> 22 30 23 31 #include "Trace.h" … … 381 389 Tcl_Obj *const *objv) 382 390 { 383 osgEarth::Drivers::GDALOptions opts; 384 char *url = Tcl_GetString(objv[3]); 385 char *name = Tcl_GetString(objv[4]); 386 387 opts.url() = url; 388 389 g_renderer->addImageLayer(name, opts); 390 391 char *type = Tcl_GetString(objv[3]); 392 if (type[0] == 'i' && strcmp(type, "image") == 0) { 393 osgEarth::Drivers::GDALOptions opts; 394 char *url = Tcl_GetString(objv[4]); 395 char *name = Tcl_GetString(objv[5]); 396 397 opts.url() = url; 398 399 g_renderer->addImageLayer(name, opts); 400 } else if (type[0] == 'e' && strcmp(type, "elevation") == 0) { 401 osgEarth::Drivers::GDALOptions opts; 402 char *url = Tcl_GetString(objv[4]); 403 char *name = Tcl_GetString(objv[5]); 404 405 opts.url() = url; 406 407 g_renderer->addElevationLayer(name, opts); 408 } else if (type[0] == 'm' && strcmp(type, "model") == 0) { 409 osgEarth::Drivers::OGRFeatureOptions opts; 410 char *url = Tcl_GetString(objv[4]); 411 char *name = Tcl_GetString(objv[5]); 412 opts.url() = url; 413 414 osgEarth::Symbology::Style style; 415 osgEarth::Symbology::LineSymbol *ls = style.getOrCreateSymbol<osgEarth::Symbology::LineSymbol>(); 416 ls->stroke()->color() = osgEarth::Symbology::Color::Black; 417 ls->stroke()->width() = 2.0f; 418 419 osgEarth::Drivers::FeatureGeomModelOptions geomOpts; 420 geomOpts.featureOptions() = opts; 421 geomOpts.styles() = new osgEarth::Symbology::StyleSheet(); 422 geomOpts.styles()->addStyle(style); 423 geomOpts.enableLighting() = false; 424 g_renderer->addModelLayer(name, geomOpts); 425 } else { 426 Tcl_AppendResult(interp, "unknown map layer type \"", type, 427 "\": should be 'image', 'elevation' or 'model'", (char*)NULL); 428 return TCL_ERROR; 429 } 391 430 return TCL_OK; 392 431 } … … 399 438 char *name = Tcl_GetString(objv[3]); 400 439 g_renderer->removeImageLayer(name); 440 g_renderer->removeElevationLayer(name); 441 g_renderer->removeModelLayer(name); 401 442 } else { 402 g_renderer-> removeImageLayer("all");443 g_renderer->clearMap(); 403 444 } 404 445 … … 421 462 } 422 463 g_renderer->moveImageLayer(name, (unsigned int)pos); 464 g_renderer->moveElevationLayer(name, (unsigned int)pos); 465 g_renderer->moveModelLayer(name, (unsigned int)pos); 423 466 424 467 return TCL_OK; … … 455 498 456 499 g_renderer->setImageLayerVisibility(name, visible); 500 g_renderer->setElevationLayerVisibility(name, visible); 501 g_renderer->setModelLayerVisibility(name, visible); 457 502 458 503 return TCL_OK; … … 460 505 461 506 static Rappture::CmdSpec mapLayerOps[] = { 462 {"add", 1, MapLayerAddOp, 5, 5, "type url name"},507 {"add", 1, MapLayerAddOp, 6, 6, "type url name"}, 463 508 {"delete", 1, MapLayerDeleteOp, 3, 4, "?name?"}, 464 509 {"move", 1, MapLayerMoveOp, 5, 5, "pos name"}, … … 548 593 549 594 static Rappture::CmdSpec mapOps[] = { 550 {"layer", 2, MapLayerOp, 3, 5, "op ?params...?"},595 {"layer", 2, MapLayerOp, 3, 6, "op ?params...?"}, 551 596 {"load", 2, MapLoadOp, 4, 5, "options"}, 552 597 {"reset", 1, MapResetOp, 3, 4, "type ?profile?"},
Note: See TracChangeset
for help on using the changeset viewer.