/* -*-c++-*- */ /* osgEarth - Geospatial SDK for OpenSceneGraph * Copyright 2008-2012 Pelican Mapping * http://osgearth.org * * osgEarth is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS * IN THE SOFTWARE. * * You should have received a copy of the GNU Lesser General Public License * along with this program. If not, see */ #ifndef OSGEARTHUTIL_CONTOUR_MAP_H #define OSGEARTHUTIL_CONTOUR_MAP_H #include #include #include #include #include namespace osgEarth { /** * Layer that renders a color ramp based on Elevation data in the Map. */ class OSGEARTH_EXPORT ContourMapLayer : public VisibleLayer { public: class OSGEARTH_EXPORT Options : public VisibleLayer::Options { public: META_LayerOptions(osgEarth, Options, VisibleLayer::Options); struct Stop { float elevation; Color color; }; OE_OPTION_VECTOR(Stop, stops); virtual Config getConfig() const; static Config getMetadata(); private: void fromConfig(const Config& conf); }; public: META_Layer(osgEarth, ContourMapLayer, Options, VisibleLayer, ContourMap); //! Sets a custom transfer function void setTransferFunction(osg::TransferFunction1D* xf); osg::TransferFunction1D* getTransferFunction() const { return _xfer.get(); } public: // Layer //! Called by constructors virtual void init() override; //! MapNode will call this function when terrain resources are available virtual void prepareForRendering(TerrainEngine*) override; //! Release resources on close virtual Status closeImplementation() override; protected: //! Destructor virtual ~ContourMapLayer() { } #if defined(OSG_GLES2_AVAILABLE) || defined(OSG_GLES3_AVAILABLE) typedef osg::Texture2D TextureType; #else typedef osg::Texture1D TextureType; #endif TextureImageUnitReservation _reservation; osg::ref_ptr _xfer; osg::ref_ptr _xferTexture; osg::ref_ptr _xferSampler; osg::ref_ptr _xferMin; osg::ref_ptr _xferRange; }; } OSGEARTH_SPECIALIZE_CONFIG(osgEarth::ContourMapLayer::Options); #endif // OSGEARTHUTIL_CONTOUR_MAP_H