summaryrefslogtreecommitdiff
path: root/src/mbgl/style/layers/circle_layer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mbgl/style/layers/circle_layer.cpp')
-rw-r--r--src/mbgl/style/layers/circle_layer.cpp166
1 files changed, 32 insertions, 134 deletions
diff --git a/src/mbgl/style/layers/circle_layer.cpp b/src/mbgl/style/layers/circle_layer.cpp
index 92327a57e0..18f9a62f74 100644
--- a/src/mbgl/style/layers/circle_layer.cpp
+++ b/src/mbgl/style/layers/circle_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 {
@@ -361,8 +362,7 @@ TransitionOptions CircleLayer::getCircleStrokeOpacityTransition() const {
using namespace conversion;
optional<Error> CircleLayer::setPaintProperty(const std::string& name, const Convertible& value) {
- enum class Property {
- Unknown,
+ enum class Property : uint8_t {
CircleRadius,
CircleColor,
CircleBlur,
@@ -387,125 +387,38 @@ optional<Error> CircleLayer::setPaintProperty(const std::string& name, const Con
CircleStrokeOpacityTransition,
};
- Property property = Property::Unknown;
- switch (util::hashFNV1a(name.c_str())) {
- case util::hashFNV1a("circle-radius"):
- if (name == "circle-radius") {
- property = Property::CircleRadius;
- }
- break;
- case util::hashFNV1a("circle-radius-transition"):
- if (name == "circle-radius-transition") {
- property = Property::CircleRadiusTransition;
- }
- break;
- case util::hashFNV1a("circle-color"):
- if (name == "circle-color") {
- property = Property::CircleColor;
- }
- break;
- case util::hashFNV1a("circle-color-transition"):
- if (name == "circle-color-transition") {
- property = Property::CircleColorTransition;
- }
- break;
- case util::hashFNV1a("circle-blur"):
- if (name == "circle-blur") {
- property = Property::CircleBlur;
- }
- break;
- case util::hashFNV1a("circle-blur-transition"):
- if (name == "circle-blur-transition") {
- property = Property::CircleBlurTransition;
- }
- break;
- case util::hashFNV1a("circle-opacity"):
- if (name == "circle-opacity") {
- property = Property::CircleOpacity;
- }
- break;
- case util::hashFNV1a("circle-opacity-transition"):
- if (name == "circle-opacity-transition") {
- property = Property::CircleOpacityTransition;
- }
- break;
- case util::hashFNV1a("circle-translate"):
- if (name == "circle-translate") {
- property = Property::CircleTranslate;
- }
- break;
- case util::hashFNV1a("circle-translate-transition"):
- if (name == "circle-translate-transition") {
- property = Property::CircleTranslateTransition;
- }
- break;
- case util::hashFNV1a("circle-translate-anchor"):
- if (name == "circle-translate-anchor") {
- property = Property::CircleTranslateAnchor;
- }
- break;
- case util::hashFNV1a("circle-translate-anchor-transition"):
- if (name == "circle-translate-anchor-transition") {
- property = Property::CircleTranslateAnchorTransition;
- }
- break;
- case util::hashFNV1a("circle-pitch-scale"):
- if (name == "circle-pitch-scale") {
- property = Property::CirclePitchScale;
- }
- break;
- case util::hashFNV1a("circle-pitch-scale-transition"):
- if (name == "circle-pitch-scale-transition") {
- property = Property::CirclePitchScaleTransition;
- }
- break;
- case util::hashFNV1a("circle-pitch-alignment"):
- if (name == "circle-pitch-alignment") {
- property = Property::CirclePitchAlignment;
- }
- break;
- case util::hashFNV1a("circle-pitch-alignment-transition"):
- if (name == "circle-pitch-alignment-transition") {
- property = Property::CirclePitchAlignmentTransition;
- }
- break;
- case util::hashFNV1a("circle-stroke-width"):
- if (name == "circle-stroke-width") {
- property = Property::CircleStrokeWidth;
- }
- break;
- case util::hashFNV1a("circle-stroke-width-transition"):
- if (name == "circle-stroke-width-transition") {
- property = Property::CircleStrokeWidthTransition;
- }
- break;
- case util::hashFNV1a("circle-stroke-color"):
- if (name == "circle-stroke-color") {
- property = Property::CircleStrokeColor;
- }
- break;
- case util::hashFNV1a("circle-stroke-color-transition"):
- if (name == "circle-stroke-color-transition") {
- property = Property::CircleStrokeColorTransition;
- }
- break;
- case util::hashFNV1a("circle-stroke-opacity"):
- if (name == "circle-stroke-opacity") {
- property = Property::CircleStrokeOpacity;
- }
- break;
- case util::hashFNV1a("circle-stroke-opacity-transition"):
- if (name == "circle-stroke-opacity-transition") {
- property = Property::CircleStrokeOpacityTransition;
- }
- break;
-
- }
-
- if (property == Property::Unknown) {
+ MAPBOX_ETERNAL_CONSTEXPR const auto properties = mapbox::eternal::hash_map<mapbox::eternal::string, uint8_t>({
+ { "circle-radius", static_cast<uint8_t>(Property::CircleRadius) },
+ { "circle-color", static_cast<uint8_t>(Property::CircleColor) },
+ { "circle-blur", static_cast<uint8_t>(Property::CircleBlur) },
+ { "circle-opacity", static_cast<uint8_t>(Property::CircleOpacity) },
+ { "circle-translate", static_cast<uint8_t>(Property::CircleTranslate) },
+ { "circle-translate-anchor", static_cast<uint8_t>(Property::CircleTranslateAnchor) },
+ { "circle-pitch-scale", static_cast<uint8_t>(Property::CirclePitchScale) },
+ { "circle-pitch-alignment", static_cast<uint8_t>(Property::CirclePitchAlignment) },
+ { "circle-stroke-width", static_cast<uint8_t>(Property::CircleStrokeWidth) },
+ { "circle-stroke-color", static_cast<uint8_t>(Property::CircleStrokeColor) },
+ { "circle-stroke-opacity", static_cast<uint8_t>(Property::CircleStrokeOpacity) },
+ { "circle-radius-transition", static_cast<uint8_t>(Property::CircleRadiusTransition) },
+ { "circle-color-transition", static_cast<uint8_t>(Property::CircleColorTransition) },
+ { "circle-blur-transition", static_cast<uint8_t>(Property::CircleBlurTransition) },
+ { "circle-opacity-transition", static_cast<uint8_t>(Property::CircleOpacityTransition) },
+ { "circle-translate-transition", static_cast<uint8_t>(Property::CircleTranslateTransition) },
+ { "circle-translate-anchor-transition", static_cast<uint8_t>(Property::CircleTranslateAnchorTransition) },
+ { "circle-pitch-scale-transition", static_cast<uint8_t>(Property::CirclePitchScaleTransition) },
+ { "circle-pitch-alignment-transition", static_cast<uint8_t>(Property::CirclePitchAlignmentTransition) },
+ { "circle-stroke-width-transition", static_cast<uint8_t>(Property::CircleStrokeWidthTransition) },
+ { "circle-stroke-color-transition", static_cast<uint8_t>(Property::CircleStrokeColorTransition) },
+ { "circle-stroke-opacity-transition", static_cast<uint8_t>(Property::CircleStrokeOpacityTransition) }
+ });
+
+ 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::CircleRadius || property == Property::CircleBlur || property == Property::CircleOpacity || property == Property::CircleStrokeWidth || property == Property::CircleStrokeOpacity) {
Error error;
@@ -679,21 +592,6 @@ optional<Error> CircleLayer::setLayoutProperty(const std::string& name, const Co
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" };
}