Changeset 6509 for geovis


Ignore:
Timestamp:
Aug 30, 2016 5:51:12 PM (8 years ago)
Author:
ldelgass
Message:

Add methods for adding/removing terrain mask layers.

Location:
geovis/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • geovis/trunk/Renderer.cpp

    r6508 r6509  
    15661566    } else {
    15671567        TRACE("Elevation layer not found: %s", name);
     1568    }
     1569}
     1570
     1571void Renderer::addTerrainMaskLayer(const char *name,
     1572                                   osgEarth::MaskSourceOptions& opts,
     1573                                   unsigned int minLOD)
     1574{
     1575    if (!_map.valid()) {
     1576        ERROR("No map");
     1577        return;
     1578    }
     1579    TRACE("layer: %s", name);
     1580    osgEarth::MaskLayerOptions layerOpts(name, opts);
     1581    layerOpts.minLevel() = minLOD;
     1582    osgEarth::MaskLayer *layer = new osgEarth::MaskLayer(layerOpts);
     1583    _map->addTerrainMaskLayer(layer);
     1584    _needsRedraw = true;
     1585}
     1586
     1587void Renderer::removeTerrainMaskLayer(const char *name)
     1588{
     1589    if (!_map.valid()) {
     1590        ERROR("No map");
     1591        return;
     1592    }
     1593    osgEarth::MaskLayer *layer = getTerrainMaskLayerByName(name);
     1594    if (layer != NULL) {
     1595        _map->removeTerrainMaskLayer(layer);
     1596        _needsRedraw = true;
     1597    } else {
     1598        TRACE("Terrain mask layer not found: %s", name);
    15681599    }
    15691600}
  • geovis/trunk/Renderer.h

    r6488 r6509  
    3232#include <osgEarth/ElevationLayer>
    3333#include <osgEarth/ModelLayer>
     34#include <osgEarth/MaskLayer>
    3435#include <osgEarth/TileSource>
    3536#include <osgEarth/ModelSource>
     
    329330
    330331    void setElevationLayerVisibility(const char *name, bool state);
     332
     333    // Terrain mask layers
     334
     335    int getNumTerrainMaskLayers() const
     336    {
     337        if (!_map.valid()) return 0;
     338
     339        osgEarth::MaskLayerVector layers;
     340        _map->getTerrainMaskLayers(layers);
     341        return (int)layers.size();
     342    }
     343
     344    void getTerrainMaskLayerNames(std::vector<std::string>& names) const
     345    {
     346        if (_map.valid()) {
     347            osgEarth::MaskLayerVector layerVector;
     348            _map->getTerrainMaskLayers(layerVector);
     349            osgEarth::MaskLayerVector::const_iterator itr;
     350            for (itr = layerVector.begin(); itr != layerVector.end(); ++itr) {
     351                //osgEarth::UID uid = (*itr)->getUID();
     352                names.push_back((*itr)->getName());
     353            }
     354        }
     355    }
     356
     357    osgEarth::MaskLayer *getTerrainMaskLayerByName(const std::string& name)
     358    {
     359        if (!_map.valid())
     360            return NULL;
     361
     362        osgEarth::MaskLayerVector layerVector;
     363        _map->getTerrainMaskLayers(layerVector);
     364        osgEarth::MaskLayerVector::iterator itr;
     365        for (itr = layerVector.begin(); itr != layerVector.end(); ++itr) {
     366            if ((*itr)->getName() == name) {
     367                return (*itr).get();
     368            }
     369        }
     370        return NULL;
     371    }
     372
     373    void addTerrainMaskLayer(const char *name,
     374                             osgEarth::MaskSourceOptions& opts,
     375                             unsigned int minLOD = 0);
     376
     377    void removeTerrainMaskLayer(const char *name);
    331378
    332379    // Model layers
Note: See TracChangeset for help on using the changeset viewer.