diff options
author | John Firebaugh <john.firebaugh@gmail.com> | 2018-07-30 08:38:14 -0700 |
---|---|---|
committer | John Firebaugh <john.firebaugh@gmail.com> | 2018-08-13 12:39:44 -0700 |
commit | b2f60a4bf2fb95c107bb94543ba6345779970e98 (patch) | |
tree | 2fd85df5cf2121b9a55d24c9d6e331b9e1bb4aca /src/mbgl/style/layers/layer.cpp.ejs | |
parent | 3c8acb228e0ff1124ce8ca6c710dc46cf99d87fc (diff) | |
download | qtlocation-mapboxgl-b2f60a4bf2fb95c107bb94543ba6345779970e98.tar.gz |
[core] Eliminate setProperty & co.
Diffstat (limited to 'src/mbgl/style/layers/layer.cpp.ejs')
-rw-r--r-- | src/mbgl/style/layers/layer.cpp.ejs | 68 |
1 files changed, 65 insertions, 3 deletions
diff --git a/src/mbgl/style/layers/layer.cpp.ejs b/src/mbgl/style/layers/layer.cpp.ejs index a9b6d9d02d..7555054bdb 100644 --- a/src/mbgl/style/layers/layer.cpp.ejs +++ b/src/mbgl/style/layers/layer.cpp.ejs @@ -8,12 +8,12 @@ #include <mbgl/style/layers/<%- type.replace('-', '_') %>_layer.hpp> #include <mbgl/style/layers/<%- type.replace('-', '_') %>_layer_impl.hpp> #include <mbgl/style/layer_observer.hpp> -<% if (type === 'heatmap') { -%> -// for constructing default heatmap-color ramp expression from style JSON #include <mbgl/style/conversion.hpp> #include <mbgl/style/conversion/color_ramp_property_value.hpp> +#include <mbgl/style/conversion/constant.hpp> +#include <mbgl/style/conversion/property_value.hpp> +#include <mbgl/style/conversion/transition_options.hpp> #include <mbgl/style/conversion/json.hpp> -<% } -%> namespace mbgl { namespace style { @@ -175,5 +175,67 @@ TransitionOptions <%- camelize(type) %>Layer::get<%- camelize(property.name) %>T } <% } -%> +using namespace conversion; + +optional<Error> <%- camelize(type) %>Layer::setPaintProperty(const std::string& name, const Convertible& value) { + <% for (const property of paintProperties) { %> + if (name == "<%- property.name %>") { + Error error; + optional<<%- propertyValueType(property) %>> typedValue = convert<<%- propertyValueType(property) %>>(value, error, <%- property['property-type'] === 'data-driven' || property['property-type'] === 'cross-faded-data-driven' %>, <%- property.name === 'icon-image' || property.name === 'text-field' %>); + if (!typedValue) { + return error; + } + + set<%- camelize(property.name) %>(*typedValue); + return nullopt; + } + if (name == "<%- property.name %>-transition") { + Error error; + optional<TransitionOptions> transition = convert<TransitionOptions>(value, error); + if (!transition) { + return error; + } + + set<%- camelize(property.name) %>Transition(*transition); + return nullopt; + } + <% } -%> + + return Error { "layer doesn't support this property" }; +} + +optional<Error> <%- camelize(type) %>Layer::setLayoutProperty(const std::string& name, const Convertible& value) { + if (name == "visibility") { + if (isUndefined(value)) { + setVisibility(VisibilityType::Visible); + return nullopt; + } + + Error error; + optional<VisibilityType> visibility = convert<VisibilityType>(value, error); + if (!visibility) { + return error; + } + + setVisibility(*visibility); + return nullopt; + } + + <% for (const property of layoutProperties) { %> + if (name == "<%- property.name %>") { + Error error; + optional<<%- propertyValueType(property) %>> typedValue = convert<<%- propertyValueType(property) %>>(value, error, <%- property['property-type'] === 'data-driven' || property['property-type'] === 'cross-faded-data-driven' %>, <%- property.name === 'icon-image' || property.name === 'text-field' %>); + if (!typedValue) { + return error; + } + + set<%- camelize(property.name) %>(*typedValue); + return nullopt; + } + <% } -%> + + return Error { "layer doesn't support this property" }; +} + } // namespace style } // namespace mbgl |