From cda0729f88637d9695bae53441ea831c21bcf631 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20DESFIEUX?= Date: Thu, 3 Jan 2019 13:56:01 +0100 Subject: [PATCH] Add the capacity to change the label size for graticule labels --- src/osgEarthUtil/GraticuleOptions | 122 ++++++++++++++++++++++++++++++ 1 file changed, 122 insertions(+) create mode 100644 src/osgEarthUtil/GraticuleOptions diff --git a/src/osgEarthUtil/GraticuleOptions b/src/osgEarthUtil/GraticuleOptions new file mode 100644 index 0000000000..ee4ea7b85d --- /dev/null +++ b/src/osgEarthUtil/GraticuleOptions @@ -0,0 +1,122 @@ +/* -*-c++-*- */ +/* osgEarth - Dynamic map generation toolkit for OpenSceneGraph + * Copyright 2016 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. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see + */ +#ifndef OSGEARTH_DRIVER_GRATICULE_OPTIONS +#define OSGEARTH_DRIVER_GRATICULE_OPTIONS 1 + +#include +#include +#include + +namespace osgEarth { namespace Util +{ + using namespace osgEarth; + using namespace osgEarth::Symbology; + + /** + * Options governing normal mapping of the terrain. + */ + class GraticuleOptions : public DriverConfigOptions // NO EXPORT; header only + { + public: + /** Grid line color */ + optional& color() { return _color; } + const optional& color() const { return _color; } + + /** Label color */ + optional& labelColor() { return _labelColor; } + const optional& labelColor() const { return _labelColor; } + + /** Label size */ + optional& labelSize() { return _labelSize; } + const optional& labelSize() const { return _labelSize; } + + /** Grid line width in pixels */ + optional& lineWidth() { return _lineWidth; } + const optional& lineWidth() const { return _lineWidth; } + + /** A target number of grid lines to view on screen at once. */ + optional& gridLines() { return _gridLines; } + const optional& gridLines() const { return _gridLines; } + + /** Resolutions for the graticule separated by spaces + * Resolutions are in degrees listed from lowest to highest resolution + * For example: 10 5 2.5 1.25 + */ + optional& resolutions() { return _resolutions; } + const optional& resolutions() const { return _resolutions; } + + public: // uniform names + static const char* resolutionUniformName() { return "oe_graticule_resolution"; } + static const char* colorUniformName() { return "oe_graticule_color"; } + static const char* lineWidthUniformName() { return "oe_graticule_lineWidth"; } + + public: + GraticuleOptions( const ConfigOptions& opt =ConfigOptions() ) : DriverConfigOptions( opt ) + { + setDriver( "graticule" ); + _lineWidth.init ( 2.0f ); + _color.init ( Color(Color::Yellow, 0.5f) ); + _labelColor.init ( Color::White ); + _labelSize.init(10); + _gridLines.init(10); + fromConfig( _conf ); + } + + virtual ~GraticuleOptions() { } + + public: + Config getConfig() const { + Config conf = DriverConfigOptions::getConfig(); + conf.addIfSet("line_width", _lineWidth); + conf.addIfSet("color", _color); + conf.addIfSet("label_color", _labelColor ); + conf.addIfSet("label_size", _labelSize ); + conf.addIfSet("grid_lines", _gridLines); + conf.addIfSet("resolutions", _resolutions); + return conf; + } + + protected: + void mergeConfig( const Config& conf ) { + DriverConfigOptions::mergeConfig( conf ); + fromConfig( conf ); + } + + private: + void fromConfig( const Config& conf ) { + conf.getIfSet("line_width", _lineWidth); + conf.getIfSet("color", _color); + conf.getIfSet("label_color", _labelColor); + conf.getIfSet("label_size", _labelSize ); + conf.getIfSet("grid_lines", _gridLines); + conf.getIfSet("resolutions", _resolutions); + } + + optional _lineWidth; + optional _color; + optional _labelColor; + optional _labelSize; + optional _gridLines; + optional _resolutions; + }; + +} } // namespace osgEarth::Util + +#endif // OSGEARTH_DRIVER_GRATICULE_OPTIONS +