From 16c435b1517b15a5ea8654987979ef58800b838b Mon Sep 17 00:00:00 2001 From: John Firebaugh Date: Wed, 22 Jun 2016 16:28:21 -0700 Subject: [core, node] Implement bindings for addLayer --- src/mbgl/style/paint_property.hpp | 46 +++++++++++---------------------------- 1 file changed, 13 insertions(+), 33 deletions(-) (limited to 'src/mbgl/style/paint_property.hpp') diff --git a/src/mbgl/style/paint_property.hpp b/src/mbgl/style/paint_property.hpp index 7bb2e68b80..b982fe76e2 100644 --- a/src/mbgl/style/paint_property.hpp +++ b/src/mbgl/style/paint_property.hpp @@ -8,7 +8,6 @@ #include #include #include -#include #include #include @@ -28,47 +27,28 @@ public: } PaintProperty(const PaintProperty& other) - : values(other.values), + : defaultValue(other.defaultValue), + values(other.values), transitions(other.transitions) { } + PaintProperty& operator=(const PaintProperty& other) { + defaultValue = other.defaultValue; + values = other.values; + transitions = other.transitions; + return *this; + } + const PropertyValue& get() const { return values.at(ClassID::Default); } - void set(const PropertyValue& value_) { - values[ClassID::Default] = value_; + void set(const PropertyValue& value_, const optional& klass) { + values[klass ? ClassDictionary::Get().lookup(*klass) : ClassID::Default] = value_; } - void parse(const char* name, const JSValue& layer) { - mbgl::util::erase_if(values, [] (const auto& p) { return p.first != ClassID::Fallback; }); - - std::string transitionName = { name }; - transitionName += "-transition"; - - for (auto it = layer.MemberBegin(); it != layer.MemberEnd(); ++it) { - const std::string paintName { it->name.GetString(), it->name.GetStringLength() }; - if (paintName.compare(0, 5, "paint") != 0) - continue; - - bool isClass = paintName.compare(0, 6, "paint.") == 0; - if (isClass && paintName.length() <= 6) - continue; - - ClassID classID = isClass ? ClassDictionary::Get().lookup(paintName.substr(6)) : ClassID::Default; - - if (it->value.HasMember(name)) { - if (auto v = parseProperty(name, it->value[name])) { - values.emplace(classID, v); - } - } - - if (it->value.HasMember(transitionName.c_str())) { - if (auto v = parseTransitionOptions(name, it->value[transitionName.c_str()])) { - transitions.emplace(classID, *v); - } - } - } + void setTransition(const TransitionOptions& transition, const optional& klass) { + transitions[klass ? ClassDictionary::Get().lookup(*klass) : ClassID::Default] = transition; } void cascade(const CascadeParameters& params) { -- cgit v1.2.1