osgEarth 2.1.1

/home/cube/sources/osgearth/src/osgEarthDrivers/kml/KML_Common

Go to the documentation of this file.
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 #ifndef OSGEARTH_DRIVER_KML_COMMON
00020 #define OSGEARTH_DRIVER_KML_COMMON 1
00021 
00022 #include <osgEarth/Common>
00023 #include <osgEarth/URI>
00024 #include <osgEarth/MapNode>
00025 #include <osgEarthSymbology/Style>
00026 #include "KMLOptions"
00027 
00028 #define LC "[KML] "
00029 
00030 using namespace osgEarth;
00031 using namespace osgEarth::Drivers;
00032 using namespace osgEarth::Symbology;
00033 
00034 #define for_one( NAME, FUNC, CONF, CX ) \
00035 { \
00036     Config c = conf.child( toLower( #NAME ) ); \
00037     if ( !c.empty() ) { \
00038         KML_##NAME instance; \
00039         instance. FUNC (c, CX); \
00040     } \
00041 }
00042 
00043 #define for_many( NAME, FUNC, CONF, CX ) \
00044 { \
00045    ConfigSet c = conf.children( toLower( #NAME ) ); \
00046    for( ConfigSet::const_iterator i = c.begin(); i != c.end(); ++i ) { \
00047         KML_##NAME instance; \
00048         instance. FUNC (*i, CX); \
00049    } \
00050 }
00051 
00052 #define for_features( FUNC, CONF, CX ) \
00053     for_many( Document,      FUNC, CONF, CX ); \
00054     for_many( Folder,        FUNC, CONF, CX ); \
00055     for_many( PhotoOverlay,  FUNC, CONF, CX ); \
00056     for_many( ScreenOverlay, FUNC, CONF, CX ); \
00057     for_many( GroundOverlay, FUNC, CONF, CX ); \
00058     for_many( NetworkLink,   FUNC, CONF, CX ); \
00059     for_many( Placemark,     FUNC, CONF, CX );
00060 
00061 struct KMLContext
00062 {
00063     MapNode*                              _mapNode;
00064     const KMLOptions*                     _options;
00065     osg::ref_ptr<StyleSheet>              _sheet;
00066     Style                                 _activeStyle;
00067     std::stack<osg::ref_ptr<osg::Group> > _groupStack;
00068 };
00069 
00070 
00071 #endif // OSGEARTH_DRIVER_KML_READER
00072 
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines