forked from gwaldron/osgearth
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add the capacity to change the label size for graticule labels
- Loading branch information
1 parent
d7e5c6f
commit cda0729
Showing
1 changed file
with
122 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 <http://www.gnu.org/licenses/> | ||
*/ | ||
#ifndef OSGEARTH_DRIVER_GRATICULE_OPTIONS | ||
#define OSGEARTH_DRIVER_GRATICULE_OPTIONS 1 | ||
|
||
#include <osgEarth/Common> | ||
#include <osgEarth/URI> | ||
#include <osgEarthSymbology/Color> | ||
|
||
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>& color() { return _color; } | ||
const optional<Color>& color() const { return _color; } | ||
|
||
/** Label color */ | ||
optional<Color>& labelColor() { return _labelColor; } | ||
const optional<Color>& labelColor() const { return _labelColor; } | ||
|
||
/** Label size */ | ||
optional<int>& labelSize() { return _labelSize; } | ||
const optional<int>& labelSize() const { return _labelSize; } | ||
|
||
/** Grid line width in pixels */ | ||
optional<float>& lineWidth() { return _lineWidth; } | ||
const optional<float>& lineWidth() const { return _lineWidth; } | ||
|
||
/** A target number of grid lines to view on screen at once. */ | ||
optional<int>& gridLines() { return _gridLines; } | ||
const optional<int>& 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<std::string>& resolutions() { return _resolutions; } | ||
const optional<std::string>& 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<float> _lineWidth; | ||
optional<Color> _color; | ||
optional<Color> _labelColor; | ||
optional<int> _labelSize; | ||
optional<int> _gridLines; | ||
optional<std::string> _resolutions; | ||
}; | ||
|
||
} } // namespace osgEarth::Util | ||
|
||
#endif // OSGEARTH_DRIVER_GRATICULE_OPTIONS | ||
|