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-26 18:15:23 +0200 |
commit | 02a1a311364044820f3da096d8a6f31c8e7fc647 (patch) | |
tree | 556c819aa4ab87acfcf6eb7a106e57d7351de530 | |
parent | e55a46e5d19178a04b8244f7077ac71f12df639d (diff) | |
download | qtlocation-mapboxgl-02a1a311364044820f3da096d8a6f31c8e7fc647.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 |