diff options
Diffstat (limited to 'src/mbgl/style/layers/fill_extrusion_layer.cpp')
-rw-r--r-- | src/mbgl/style/layers/fill_extrusion_layer.cpp | 130 |
1 files changed, 26 insertions, 104 deletions
diff --git a/src/mbgl/style/layers/fill_extrusion_layer.cpp b/src/mbgl/style/layers/fill_extrusion_layer.cpp index 74fd4ad757..3bbaebfe6d 100644 --- a/src/mbgl/style/layers/fill_extrusion_layer.cpp +++ b/src/mbgl/style/layers/fill_extrusion_layer.cpp @@ -9,7 +9,8 @@ #include <mbgl/style/conversion/transition_options.hpp> #include <mbgl/style/conversion/json.hpp> #include <mbgl/style/conversion_impl.hpp> -#include <mbgl/util/fnv_hash.hpp> + +#include <mapbox/eternal.hpp> namespace mbgl { namespace style { @@ -280,8 +281,7 @@ TransitionOptions FillExtrusionLayer::getFillExtrusionVerticalGradientTransition using namespace conversion; optional<Error> FillExtrusionLayer::setPaintProperty(const std::string& name, const Convertible& value) { - enum class Property { - Unknown, + enum class Property : uint8_t { FillExtrusionOpacity, FillExtrusionColor, FillExtrusionTranslate, @@ -300,95 +300,32 @@ optional<Error> FillExtrusionLayer::setPaintProperty(const std::string& name, co FillExtrusionVerticalGradientTransition, }; - Property property = Property::Unknown; - switch (util::hashFNV1a(name.c_str())) { - case util::hashFNV1a("fill-extrusion-opacity"): - if (name == "fill-extrusion-opacity") { - property = Property::FillExtrusionOpacity; - } - break; - case util::hashFNV1a("fill-extrusion-opacity-transition"): - if (name == "fill-extrusion-opacity-transition") { - property = Property::FillExtrusionOpacityTransition; - } - break; - case util::hashFNV1a("fill-extrusion-color"): - if (name == "fill-extrusion-color") { - property = Property::FillExtrusionColor; - } - break; - case util::hashFNV1a("fill-extrusion-color-transition"): - if (name == "fill-extrusion-color-transition") { - property = Property::FillExtrusionColorTransition; - } - break; - case util::hashFNV1a("fill-extrusion-translate"): - if (name == "fill-extrusion-translate") { - property = Property::FillExtrusionTranslate; - } - break; - case util::hashFNV1a("fill-extrusion-translate-transition"): - if (name == "fill-extrusion-translate-transition") { - property = Property::FillExtrusionTranslateTransition; - } - break; - case util::hashFNV1a("fill-extrusion-translate-anchor"): - if (name == "fill-extrusion-translate-anchor") { - property = Property::FillExtrusionTranslateAnchor; - } - break; - case util::hashFNV1a("fill-extrusion-translate-anchor-transition"): - if (name == "fill-extrusion-translate-anchor-transition") { - property = Property::FillExtrusionTranslateAnchorTransition; - } - break; - case util::hashFNV1a("fill-extrusion-pattern"): - if (name == "fill-extrusion-pattern") { - property = Property::FillExtrusionPattern; - } - break; - case util::hashFNV1a("fill-extrusion-pattern-transition"): - if (name == "fill-extrusion-pattern-transition") { - property = Property::FillExtrusionPatternTransition; - } - break; - case util::hashFNV1a("fill-extrusion-height"): - if (name == "fill-extrusion-height") { - property = Property::FillExtrusionHeight; - } - break; - case util::hashFNV1a("fill-extrusion-height-transition"): - if (name == "fill-extrusion-height-transition") { - property = Property::FillExtrusionHeightTransition; - } - break; - case util::hashFNV1a("fill-extrusion-base"): - if (name == "fill-extrusion-base") { - property = Property::FillExtrusionBase; - } - break; - case util::hashFNV1a("fill-extrusion-base-transition"): - if (name == "fill-extrusion-base-transition") { - property = Property::FillExtrusionBaseTransition; - } - break; - case util::hashFNV1a("fill-extrusion-vertical-gradient"): - if (name == "fill-extrusion-vertical-gradient") { - property = Property::FillExtrusionVerticalGradient; - } - break; - case util::hashFNV1a("fill-extrusion-vertical-gradient-transition"): - if (name == "fill-extrusion-vertical-gradient-transition") { - property = Property::FillExtrusionVerticalGradientTransition; - } - break; - - } - - if (property == Property::Unknown) { + MAPBOX_ETERNAL_CONSTEXPR const auto properties = mapbox::eternal::hash_map<mapbox::eternal::string, uint8_t>({ + { "fill-extrusion-opacity", static_cast<uint8_t>(Property::FillExtrusionOpacity) }, + { "fill-extrusion-color", static_cast<uint8_t>(Property::FillExtrusionColor) }, + { "fill-extrusion-translate", static_cast<uint8_t>(Property::FillExtrusionTranslate) }, + { "fill-extrusion-translate-anchor", static_cast<uint8_t>(Property::FillExtrusionTranslateAnchor) }, + { "fill-extrusion-pattern", static_cast<uint8_t>(Property::FillExtrusionPattern) }, + { "fill-extrusion-height", static_cast<uint8_t>(Property::FillExtrusionHeight) }, + { "fill-extrusion-base", static_cast<uint8_t>(Property::FillExtrusionBase) }, + { "fill-extrusion-vertical-gradient", static_cast<uint8_t>(Property::FillExtrusionVerticalGradient) }, + { "fill-extrusion-opacity-transition", static_cast<uint8_t>(Property::FillExtrusionOpacityTransition) }, + { "fill-extrusion-color-transition", static_cast<uint8_t>(Property::FillExtrusionColorTransition) }, + { "fill-extrusion-translate-transition", static_cast<uint8_t>(Property::FillExtrusionTranslateTransition) }, + { "fill-extrusion-translate-anchor-transition", static_cast<uint8_t>(Property::FillExtrusionTranslateAnchorTransition) }, + { "fill-extrusion-pattern-transition", static_cast<uint8_t>(Property::FillExtrusionPatternTransition) }, + { "fill-extrusion-height-transition", static_cast<uint8_t>(Property::FillExtrusionHeightTransition) }, + { "fill-extrusion-base-transition", static_cast<uint8_t>(Property::FillExtrusionBaseTransition) }, + { "fill-extrusion-vertical-gradient-transition", static_cast<uint8_t>(Property::FillExtrusionVerticalGradientTransition) } + }); + + const auto it = properties.find(name.c_str()); + if (it == properties.end()) { return Error { "layer doesn't support this property" }; } + Property property = static_cast<Property>(it->second); + if (property == Property::FillExtrusionOpacity) { Error error; @@ -537,21 +474,6 @@ optional<Error> FillExtrusionLayer::setLayoutProperty(const std::string& name, c return Layer::setVisibility(value); } - enum class Property { - Unknown, - }; - - Property property = Property::Unknown; - switch (util::hashFNV1a(name.c_str())) { - - } - - if (property == Property::Unknown) { - return Error { "layer doesn't support this property" }; - } - - - return Error { "layer doesn't support this property" }; } |