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_RESAMPLE_FILTER_H 00021 #define OSGEARTHFEATURES_RESAMPLE_FILTER_H 1 00022 00023 #include <osgEarthFeatures/Common> 00024 #include <osgEarthFeatures/Feature> 00025 #include <osgEarthFeatures/Filter> 00026 #include <osg/Geode> 00027 00028 namespace osgEarth { namespace Features 00029 { 00030 using namespace osgEarth; 00031 00036 class OSGEARTHFEATURES_EXPORT ResampleFilter : public FeatureFilter 00037 { 00038 public: 00039 // Call this determine whether this filter is available. 00040 static bool isSupported(); 00041 00042 public: 00043 ResampleFilter(); 00044 ResampleFilter( double minLength, double maxLength ); 00045 00046 public: 00047 00048 optional<double>& minLength() { return _minLen; } 00049 const optional<double>& minLength() const { return _minLen; } 00050 00051 optional<double>& maxLength() { return _maxLen; } 00052 const optional<double>& maxLength() const { return _maxLen; } 00053 00054 optional<double>& perturbationThreshold() { return _perturbThresh; } 00055 const optional<double>& perturbationThreshold() const { return _perturbThresh; } 00056 00057 00058 00059 enum ResampleMode 00060 { 00061 RESAMPLE_LINEAR, 00062 RESAMPLE_GREATCIRCLE, 00063 RESAMPLE_RHUMB 00064 }; 00065 00066 optional<ResampleMode>& resampleMode() { return _resampleMode;} 00067 const optional<ResampleMode>& resampleMode() const { return _resampleMode;} 00068 00069 00070 public: 00071 virtual FilterContext push( FeatureList& input, FilterContext& context ); 00072 00073 protected: 00074 optional<double> _minLen, _maxLen, _perturbThresh; 00075 optional<ResampleMode> _resampleMode; 00076 00077 bool push( Feature* input, FilterContext& context ); 00078 }; 00079 00080 } } // namespace osgEarth::Features 00081 00082 #endif // OSGEARTHFEATURES_RESAMPLE_FILTER_H