summaryrefslogtreecommitdiff
path: root/src/mbgl/style/layers/hillshade_layer.cpp
diff options
context:
space:
mode:
authorJohn Firebaugh <john.firebaugh@gmail.com>2018-07-30 08:38:14 -0700
committerJohn Firebaugh <john.firebaugh@gmail.com>2018-08-13 12:39:44 -0700
commitb2f60a4bf2fb95c107bb94543ba6345779970e98 (patch)
tree2fd85df5cf2121b9a55d24c9d6e331b9e1bb4aca /src/mbgl/style/layers/hillshade_layer.cpp
parent3c8acb228e0ff1124ce8ca6c710dc46cf99d87fc (diff)
downloadqtlocation-mapboxgl-b2f60a4bf2fb95c107bb94543ba6345779970e98.tar.gz
[core] Eliminate setProperty & co.
Diffstat (limited to 'src/mbgl/style/layers/hillshade_layer.cpp')
-rw-r--r--src/mbgl/style/layers/hillshade_layer.cpp160
1 files changed, 160 insertions, 0 deletions
diff --git a/src/mbgl/style/layers/hillshade_layer.cpp b/src/mbgl/style/layers/hillshade_layer.cpp
index e352ae090c..2d8c837baa 100644
--- a/src/mbgl/style/layers/hillshade_layer.cpp
+++ b/src/mbgl/style/layers/hillshade_layer.cpp
@@ -3,6 +3,12 @@
#include <mbgl/style/layers/hillshade_layer.hpp>
#include <mbgl/style/layers/hillshade_layer_impl.hpp>
#include <mbgl/style/layer_observer.hpp>
+#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 {
@@ -236,5 +242,159 @@ TransitionOptions HillshadeLayer::getHillshadeAccentColorTransition() const {
return impl().paint.template get<HillshadeAccentColor>().options;
}
+using namespace conversion;
+
+optional<Error> HillshadeLayer::setPaintProperty(const std::string& name, const Convertible& value) {
+
+ if (name == "hillshade-illumination-direction") {
+ Error error;
+ optional<PropertyValue<float>> typedValue = convert<PropertyValue<float>>(value, error, false, false);
+ if (!typedValue) {
+ return error;
+ }
+
+ setHillshadeIlluminationDirection(*typedValue);
+ return nullopt;
+ }
+ if (name == "hillshade-illumination-direction-transition") {
+ Error error;
+ optional<TransitionOptions> transition = convert<TransitionOptions>(value, error);
+ if (!transition) {
+ return error;
+ }
+
+ setHillshadeIlluminationDirectionTransition(*transition);
+ return nullopt;
+ }
+
+ if (name == "hillshade-illumination-anchor") {
+ Error error;
+ optional<PropertyValue<HillshadeIlluminationAnchorType>> typedValue = convert<PropertyValue<HillshadeIlluminationAnchorType>>(value, error, false, false);
+ if (!typedValue) {
+ return error;
+ }
+
+ setHillshadeIlluminationAnchor(*typedValue);
+ return nullopt;
+ }
+ if (name == "hillshade-illumination-anchor-transition") {
+ Error error;
+ optional<TransitionOptions> transition = convert<TransitionOptions>(value, error);
+ if (!transition) {
+ return error;
+ }
+
+ setHillshadeIlluminationAnchorTransition(*transition);
+ return nullopt;
+ }
+
+ if (name == "hillshade-exaggeration") {
+ Error error;
+ optional<PropertyValue<float>> typedValue = convert<PropertyValue<float>>(value, error, false, false);
+ if (!typedValue) {
+ return error;
+ }
+
+ setHillshadeExaggeration(*typedValue);
+ return nullopt;
+ }
+ if (name == "hillshade-exaggeration-transition") {
+ Error error;
+ optional<TransitionOptions> transition = convert<TransitionOptions>(value, error);
+ if (!transition) {
+ return error;
+ }
+
+ setHillshadeExaggerationTransition(*transition);
+ return nullopt;
+ }
+
+ if (name == "hillshade-shadow-color") {
+ Error error;
+ optional<PropertyValue<Color>> typedValue = convert<PropertyValue<Color>>(value, error, false, false);
+ if (!typedValue) {
+ return error;
+ }
+
+ setHillshadeShadowColor(*typedValue);
+ return nullopt;
+ }
+ if (name == "hillshade-shadow-color-transition") {
+ Error error;
+ optional<TransitionOptions> transition = convert<TransitionOptions>(value, error);
+ if (!transition) {
+ return error;
+ }
+
+ setHillshadeShadowColorTransition(*transition);
+ return nullopt;
+ }
+
+ if (name == "hillshade-highlight-color") {
+ Error error;
+ optional<PropertyValue<Color>> typedValue = convert<PropertyValue<Color>>(value, error, false, false);
+ if (!typedValue) {
+ return error;
+ }
+
+ setHillshadeHighlightColor(*typedValue);
+ return nullopt;
+ }
+ if (name == "hillshade-highlight-color-transition") {
+ Error error;
+ optional<TransitionOptions> transition = convert<TransitionOptions>(value, error);
+ if (!transition) {
+ return error;
+ }
+
+ setHillshadeHighlightColorTransition(*transition);
+ return nullopt;
+ }
+
+ if (name == "hillshade-accent-color") {
+ Error error;
+ optional<PropertyValue<Color>> typedValue = convert<PropertyValue<Color>>(value, error, false, false);
+ if (!typedValue) {
+ return error;
+ }
+
+ setHillshadeAccentColor(*typedValue);
+ return nullopt;
+ }
+ if (name == "hillshade-accent-color-transition") {
+ Error error;
+ optional<TransitionOptions> transition = convert<TransitionOptions>(value, error);
+ if (!transition) {
+ return error;
+ }
+
+ setHillshadeAccentColorTransition(*transition);
+ return nullopt;
+ }
+
+ return Error { "layer doesn't support this property" };
+}
+
+optional<Error> HillshadeLayer::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;
+ }
+
+
+ return Error { "layer doesn't support this property" };
+}
+
} // namespace style
} // namespace mbgl