diff options
author | Alexander Shalamov <alexander.shalamov@mapbox.com> | 2020-02-25 11:02:07 +0200 |
---|---|---|
committer | Alexander Shalamov <alexander.shalamov@mapbox.com> | 2020-02-25 18:36:07 +0200 |
commit | f82f002633f39c4c4b23756768aa52df1632dce9 (patch) | |
tree | 9dd2d640af297724216d97738a3e6869d1e3eb91 | |
parent | 36fe9ac4ae86471a79bbfbf70f5decb0352267b7 (diff) | |
download | qtlocation-mapboxgl-f82f002633f39c4c4b23756768aa52df1632dce9.tar.gz |
[core] Fix TransitionOptions serialization
-rw-r--r-- | include/mbgl/style/conversion_impl.hpp | 11 | ||||
-rw-r--r-- | include/mbgl/style/transition_options.hpp | 13 |
2 files changed, 16 insertions, 8 deletions
diff --git a/include/mbgl/style/conversion_impl.hpp b/include/mbgl/style/conversion_impl.hpp index 30aa132ce0..9606c7b58d 100644 --- a/include/mbgl/style/conversion_impl.hpp +++ b/include/mbgl/style/conversion_impl.hpp @@ -306,14 +306,7 @@ struct ValueFactory<ColorRampPropertyValue> { template <> struct ValueFactory<TransitionOptions> { - static Value make(const TransitionOptions& value) { - return mapbox::base::ValueArray{ - {std::chrono::duration_cast<std::chrono::milliseconds>(value.duration.value_or(mbgl::Duration::zero())) - .count(), - std::chrono::duration_cast<std::chrono::milliseconds>(value.delay.value_or(mbgl::Duration::zero())) - .count(), - value.enablePlacementTransitions}}; - } + static Value make(const TransitionOptions& value) { return value.serialize(); } }; template <> @@ -370,10 +363,12 @@ StyleProperty makeStyleProperty(const PropertyValue<T>& value) { } inline StyleProperty makeStyleProperty(const TransitionOptions& value) { + if (!value.isDefined()) return {}; return {makeValue(value), StyleProperty::Kind::Transition}; } inline StyleProperty makeStyleProperty(const ColorRampPropertyValue& value) { + if (value.isUndefined()) return {}; return {makeValue(value), StyleProperty::Kind::Expression}; } diff --git a/include/mbgl/style/transition_options.hpp b/include/mbgl/style/transition_options.hpp index 9cb5c1f575..69479afaad 100644 --- a/include/mbgl/style/transition_options.hpp +++ b/include/mbgl/style/transition_options.hpp @@ -3,6 +3,8 @@ #include <mbgl/util/chrono.hpp> #include <mbgl/util/optional.hpp> +#include <mapbox/value.hpp> + namespace mbgl { namespace style { @@ -30,6 +32,17 @@ public: bool isDefined() const { return duration || delay; } + + mapbox::base::Value serialize() const { + mapbox::base::ValueObject result; + if (duration) { + result.emplace("duration", std::chrono::duration_cast<std::chrono::milliseconds>(*duration).count()); + } + if (delay) { + result.emplace("delay", std::chrono::duration_cast<std::chrono::milliseconds>(*delay).count()); + } + return result; + } }; } // namespace style |