Changeset 6510


Ignore:
Timestamp:
Aug 30, 2016 9:06:42 PM (8 years ago)
Author:
ldelgass
Message:

First pass at new protocol for mask layer.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • geovis/trunk/RendererCmd.cpp

    r6496 r6510  
    4747#include <osgEarthDrivers/wms/WMSOptions>
    4848#include <osgEarthDrivers/xyz/XYZOptions>
     49#include <osgEarthDrivers/mask_feature/FeatureMaskOptions>
    4950#include <osgEarthDrivers/model_feature_geom/FeatureGeomModelOptions>
    5051#include <osgEarthDrivers/model_simple/SimpleModelOptions>
     
    19701971        }
    19711972        g_renderer->addModelLayer(name, geomOpts, pos, cache, lighting, visible);
     1973    } else if (type[0] == 'm' && strcmp(type, "mask") == 0) {
     1974        char *driver = Tcl_GetString(objv[5]);
     1975        char *format = Tcl_GetString(objv[6]);
     1976        if (format && strlen(format) > 0 &&
     1977            strcmp(format, "json") != 0 && strcmp(format, "gml") != 0) {
     1978            Tcl_AppendResult(interp, "unknown format \"", format,
     1979                             "\": should be 'json' or 'gml'", (char*)NULL);
     1980            return TCL_ERROR;
     1981        }
     1982        char *typeName = Tcl_GetString(objv[7]);
     1983        osgEarth::Drivers::FeatureMaskOptions maskOpts;
     1984        std::string url;
     1985        if (objc > 8) {
     1986            char *urlIn = Tcl_GetString(objv[8]);
     1987            url = g_renderer->getCanonicalPath(std::string(urlIn));
     1988            if (url.empty()) {
     1989                Tcl_AppendResult(interp, "file not found: \"",
     1990                                 urlIn, "\"", (char*)NULL);
     1991                return TCL_ERROR;
     1992            }
     1993        }
     1994        if (driver[0] == 'o' && strcmp(driver, "ogr") == 0) {
     1995            osgEarth::Drivers::OGRFeatureOptions maskBoundaryOpts;
     1996            maskBoundaryOpts.url() = url;
     1997            maskOpts.featureOptions() = maskBoundaryOpts;
     1998        } else {
     1999            Tcl_AppendResult(interp, "unknown mask driver \"", driver,
     2000                             "\": should be 'db', 'ogr', 'tfs', or 'wfs'", (char*)NULL);
     2001            return TCL_ERROR;
     2002        }
     2003        int minLOD = 0;
     2004        if (objc > 9) {
     2005            if (Tcl_GetIntFromObj(interp, objv[9], &minLOD) != TCL_OK) {
     2006                return TCL_ERROR;
     2007            }
     2008        }
     2009        g_renderer->addTerrainMaskLayer(name, maskOpts, (unsigned)minLOD);
    19722010    } else if (type[0] == 'm' && strcmp(type, "model") == 0) {
    19732011        char *driver = Tcl_GetString(objv[5]);
     
    26002638        g_renderer->removeImageLayer(name);
    26012639        g_renderer->removeElevationLayer(name);
     2640        g_renderer->removeTerrainMaskLayer(name);
    26022641        g_renderer->removeModelLayer(name);
    26032642    } else {
     
    26572696        g_renderer->getImageLayerNames(layers);
    26582697        g_renderer->getElevationLayerNames(layers);
     2698        g_renderer->getTerrainMaskLayerNames(layers);
    26592699        g_renderer->getModelLayerNames(layers);
    26602700    } else {
     
    26642704        } else if (type[0] == 'e' && strcmp(type, "elevation") == 0) {
    26652705            g_renderer->getElevationLayerNames(layers);
     2706        } else if (type[0] == 'm' && strcmp(type, "mask") == 0) {
     2707            g_renderer->getTerrainMaskLayerNames(layers);
    26662708        } else if (type[0] == 'm' && strcmp(type, "model") == 0) {
    26672709            g_renderer->getModelLayerNames(layers);
    26682710        } else {
    26692711            Tcl_AppendResult(interp, "uknown type \"", type,
    2670                          "\": must be image, elevation or model", (char*)NULL);
     2712                             "\": must be image, elevation, mask or model",
     2713                             (char*)NULL);
    26712714            return TCL_ERROR;
    26722715        }
Note: See TracChangeset for help on using the changeset viewer.