osgEarth 2.1.1
|
00001 /* -*-c++-*- */ 00002 /* osgEarth - Dynamic map generation toolkit for OpenSceneGraph 00003 * Copyright 2008-2010 Pelican Mapping 00004 * http://osgearth.org 00005 * 00006 * osgEarth is free software; you can redistribute it and/or modify 00007 * it under the terms of the GNU Lesser General Public License as published by 00008 * the Free Software Foundation; either version 2 of the License, or 00009 * (at your option) any later version. 00010 * 00011 * This program is distributed in the hope that it will be useful, 00012 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00014 * GNU Lesser General Public License for more details. 00015 * 00016 * You should have received a copy of the GNU Lesser General Public License 00017 * along with this program. If not, see <http://www.gnu.org/licenses/> 00018 */ 00019 #include <osgEarthSymbology/ExtrusionSymbol> 00020 00021 using namespace osgEarth; 00022 using namespace osgEarth::Symbology; 00023 00024 ExtrusionSymbol::ExtrusionSymbol( const Config& conf ) : 00025 Symbol ( conf ), 00026 _height ( 10.0 ), 00027 _flatten ( true ), 00028 _heightRef( HEIGHT_REFERENCE_Z ) 00029 { 00030 if ( !conf.empty() ) 00031 mergeConfig(conf); 00032 } 00033 00034 Config 00035 ExtrusionSymbol::getConfig() const 00036 { 00037 Config conf = Symbol::getConfig(); 00038 conf.key() = "extrusion"; 00039 conf.addIfSet ( "height", _height ); 00040 conf.addIfSet ( "flatten", _flatten ); 00041 conf.addObjIfSet( "height_expression", _heightExpr ); 00042 conf.addIfSet ( "height_reference", "z", _heightRef, HEIGHT_REFERENCE_Z ); 00043 conf.addIfSet ( "height_reference", "msl", _heightRef, HEIGHT_REFERENCE_MSL ); 00044 conf.addIfSet ( "wall_style", _wallStyleName ); 00045 conf.addIfSet ( "roof_style", _roofStyleName ); 00046 return conf; 00047 } 00048 00049 void 00050 ExtrusionSymbol::mergeConfig( const Config& conf ) 00051 { 00052 conf.getIfSet ( "height", _height ); 00053 conf.getIfSet ( "flatten", _flatten ); 00054 conf.getObjIfSet( "height_expression", _heightExpr ); 00055 conf.getIfSet ( "height_reference", "z", _heightRef, HEIGHT_REFERENCE_Z ); 00056 conf.getIfSet ( "height_reference", "msl", _heightRef, HEIGHT_REFERENCE_MSL ); 00057 conf.getIfSet ( "wall_style", _wallStyleName ); 00058 conf.getIfSet ( "roof_style", _roofStyleName ); 00059 }