/* -*-c++-*- */ /* osgEarth - Geospatial SDK for OpenSceneGraph * Copyright 2020 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 OSGEARTHSYMBOLOGY_STYLE_SELECTOR_H #define OSGEARTHSYMBOLOGY_STYLE_SELECTOR_H 1 #include #include #include namespace osgEarth { /** * A style selector lets you classify styles based on rules, such as a * feature query. By default the selector selects the style with the * same name as the selector, but you can override this by settings * the styleName property. */ class OSGEARTH_EXPORT StyleSelector { public: /** Constructs a style selector */ StyleSelector( const Config& conf =Config() ); /** Constructs a style selector with a name and expression */ StyleSelector(const std::string& name, const StringExpression& expr); virtual ~StyleSelector() { } public: // properties /** Name of this style class. */ optional& name() { return _name; } const optional& name() const { return _name; } /** Name of the style to select */ optional& styleName() { return _styleName; } const optional& styleName() const { return _styleName; } /** Script that returns the name of the style to select. */ optional& styleExpression() { return _styleExpression; } const optional& styleExpression() const { return _styleExpression; } /** Expression/spatial filter used to select items to which the style will apply */ optional& query() { return _query; } const optional& query() const { return _query; } /** Returns the styleClass() property, if set; otherwise returns the selector name. */ std::string getSelectedStyleName() const; //Configurable virtual void mergeConfig( const Config& conf ); virtual Config getConfig() const; protected: optional _name; optional _styleName; optional _styleExpression; optional _query; }; } // namespace osgEarth #endif // OSGEARTHSYMBOLOGY_STYLE_SELECTOR_H