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 00020 #ifndef OSGEARTHFEATURES_TRANSFORM_FILTER_H 00021 #define OSGEARTHFEATURES_TRANSFORM_FILTER_H 1 00022 00023 #include <osgEarthFeatures/Common> 00024 #include <osgEarthFeatures/Feature> 00025 #include <osgEarthFeatures/Filter> 00026 #include <osg/BoundingBox> 00027 00028 namespace osgEarth { namespace Features 00029 { 00030 using namespace osgEarth; 00031 00036 class OSGEARTHFEATURES_EXPORT TransformFilter : public FeatureFilter 00037 { 00038 public: 00039 TransformFilter(); 00040 TransformFilter( const osg::Matrixd& xform ); 00041 TransformFilter( const SpatialReference* outputSRS, bool outputGeocentric =false ); 00042 00045 void setMatrix( const osg::Matrixd& mat ) { _mat = mat; } 00046 const osg::Matrixd& getMatrix() const { return _mat; } 00047 00049 void setMakeGeocentric( bool value ) { _makeGeocentric = value; } 00050 bool getMakeGeocentric() const { return _makeGeocentric; } 00051 00054 void setLocalizeCoordinates( bool value ) { _localize = value; } 00055 bool getLocalizeCoordinates() const { return _localize; } 00056 00057 public: 00058 FilterContext push( FeatureList& features, FilterContext& context ); 00059 00060 protected: 00061 osg::ref_ptr<const SpatialReference> _outputSRS; 00062 bool _makeGeocentric; 00063 osg::BoundingBoxd _bbox; 00064 bool _localize; 00065 osg::Matrixd _mat; 00066 00067 bool push( Feature* feature, FilterContext& context ); 00068 }; 00069 00070 } } // namespace osgEarth::Features 00071 00072 #endif // OSGEARTHFEATURES_TRANSFORM_FILTER_H