diff options
author | Mikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com> | 2019-09-24 23:06:05 +0300 |
---|---|---|
committer | Mikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com> | 2019-09-26 11:57:39 +0300 |
commit | c2dc873cf9c026e964d1d73a2c8301d21509da6e (patch) | |
tree | 02080365402a7f704e562a111c9cc2675423ab16 /src/mbgl/style/layers/fill_layer.cpp | |
parent | 2b834001cca8c2b0552c106dd404da1b238f043b (diff) | |
download | qtlocation-mapboxgl-c2dc873cf9c026e964d1d73a2c8301d21509da6e.tar.gz |
[core] Introduce Layer::getPaintProperty() generic getter
Diffstat (limited to 'src/mbgl/style/layers/fill_layer.cpp')
-rw-r--r-- | src/mbgl/style/layers/fill_layer.cpp | 114 |
1 files changed, 78 insertions, 36 deletions
diff --git a/src/mbgl/style/layers/fill_layer.cpp b/src/mbgl/style/layers/fill_layer.cpp index 52f2b166b3..9afc99d1d3 100644 --- a/src/mbgl/style/layers/fill_layer.cpp +++ b/src/mbgl/style/layers/fill_layer.cpp @@ -256,43 +256,46 @@ TransitionOptions FillLayer::getFillTranslateAnchorTransition() const { using namespace conversion; +namespace { + +enum class Property { + FillAntialias, + FillColor, + FillOpacity, + FillOutlineColor, + FillPattern, + FillTranslate, + FillTranslateAnchor, + FillAntialiasTransition, + FillColorTransition, + FillOpacityTransition, + FillOutlineColorTransition, + FillPatternTransition, + FillTranslateTransition, + FillTranslateAnchorTransition, +}; + +MAPBOX_ETERNAL_CONSTEXPR const auto paintProperties = mapbox::eternal::hash_map<mapbox::eternal::string, uint8_t>( + {{"fill-antialias", mbgl::underlying_type(Property::FillAntialias)}, + {"fill-color", mbgl::underlying_type(Property::FillColor)}, + {"fill-opacity", mbgl::underlying_type(Property::FillOpacity)}, + {"fill-outline-color", mbgl::underlying_type(Property::FillOutlineColor)}, + {"fill-pattern", mbgl::underlying_type(Property::FillPattern)}, + {"fill-translate", mbgl::underlying_type(Property::FillTranslate)}, + {"fill-translate-anchor", mbgl::underlying_type(Property::FillTranslateAnchor)}, + {"fill-antialias-transition", mbgl::underlying_type(Property::FillAntialiasTransition)}, + {"fill-color-transition", mbgl::underlying_type(Property::FillColorTransition)}, + {"fill-opacity-transition", mbgl::underlying_type(Property::FillOpacityTransition)}, + {"fill-outline-color-transition", mbgl::underlying_type(Property::FillOutlineColorTransition)}, + {"fill-pattern-transition", mbgl::underlying_type(Property::FillPatternTransition)}, + {"fill-translate-transition", mbgl::underlying_type(Property::FillTranslateTransition)}, + {"fill-translate-anchor-transition", mbgl::underlying_type(Property::FillTranslateAnchorTransition)}}); + +} // namespace + optional<Error> FillLayer::setPaintProperty(const std::string& name, const Convertible& value) { - enum class Property { - FillAntialias, - FillColor, - FillOpacity, - FillOutlineColor, - FillPattern, - FillTranslate, - FillTranslateAnchor, - FillAntialiasTransition, - FillColorTransition, - FillOpacityTransition, - FillOutlineColorTransition, - FillPatternTransition, - FillTranslateTransition, - FillTranslateAnchorTransition, - }; - - MAPBOX_ETERNAL_CONSTEXPR const auto properties = mapbox::eternal::hash_map<mapbox::eternal::string, uint8_t>({ - { "fill-antialias", mbgl::underlying_type(Property::FillAntialias) }, - { "fill-color", mbgl::underlying_type(Property::FillColor) }, - { "fill-opacity", mbgl::underlying_type(Property::FillOpacity) }, - { "fill-outline-color", mbgl::underlying_type(Property::FillOutlineColor) }, - { "fill-pattern", mbgl::underlying_type(Property::FillPattern) }, - { "fill-translate", mbgl::underlying_type(Property::FillTranslate) }, - { "fill-translate-anchor", mbgl::underlying_type(Property::FillTranslateAnchor) }, - { "fill-antialias-transition", mbgl::underlying_type(Property::FillAntialiasTransition) }, - { "fill-color-transition", mbgl::underlying_type(Property::FillColorTransition) }, - { "fill-opacity-transition", mbgl::underlying_type(Property::FillOpacityTransition) }, - { "fill-outline-color-transition", mbgl::underlying_type(Property::FillOutlineColorTransition) }, - { "fill-pattern-transition", mbgl::underlying_type(Property::FillPatternTransition) }, - { "fill-translate-transition", mbgl::underlying_type(Property::FillTranslateTransition) }, - { "fill-translate-anchor-transition", mbgl::underlying_type(Property::FillTranslateAnchorTransition) } - }); - - const auto it = properties.find(name.c_str()); - if (it == properties.end()) { + const auto it = paintProperties.find(name.c_str()); + if (it == paintProperties.end()) { return Error { "layer doesn't support this property" }; } @@ -424,6 +427,45 @@ optional<Error> FillLayer::setPaintProperty(const std::string& name, const Conve return Error { "layer doesn't support this property" }; } +LayerProperty FillLayer::getPaintProperty(const std::string& name) const { + const auto it = paintProperties.find(name.c_str()); + if (it == paintProperties.end()) { + return {}; + } + + switch (static_cast<Property>(it->second)) { + case Property::FillAntialias: + return conversion::makeLayerProperty(getFillAntialias()); + case Property::FillColor: + return conversion::makeLayerProperty(getFillColor()); + case Property::FillOpacity: + return conversion::makeLayerProperty(getFillOpacity()); + case Property::FillOutlineColor: + return conversion::makeLayerProperty(getFillOutlineColor()); + case Property::FillPattern: + return conversion::makeLayerProperty(getFillPattern()); + case Property::FillTranslate: + return conversion::makeLayerProperty(getFillTranslate()); + case Property::FillTranslateAnchor: + return conversion::makeLayerProperty(getFillTranslateAnchor()); + case Property::FillAntialiasTransition: + return conversion::makeLayerProperty(getFillAntialiasTransition()); + case Property::FillColorTransition: + return conversion::makeLayerProperty(getFillColorTransition()); + case Property::FillOpacityTransition: + return conversion::makeLayerProperty(getFillOpacityTransition()); + case Property::FillOutlineColorTransition: + return conversion::makeLayerProperty(getFillOutlineColorTransition()); + case Property::FillPatternTransition: + return conversion::makeLayerProperty(getFillPatternTransition()); + case Property::FillTranslateTransition: + return conversion::makeLayerProperty(getFillTranslateTransition()); + case Property::FillTranslateAnchorTransition: + return conversion::makeLayerProperty(getFillTranslateAnchorTransition()); + } + return {}; +} + optional<Error> FillLayer::setLayoutProperty(const std::string& name, const Convertible& value) { if (name == "visibility") { return Layer::setVisibility(value); |