summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Shalamov <alexander.shalamov@mapbox.com>2020-02-25 11:02:07 +0200
committerAlexander Shalamov <alexander.shalamov@mapbox.com>2020-02-26 18:15:23 +0200
commit02a1a311364044820f3da096d8a6f31c8e7fc647 (patch)
tree556c819aa4ab87acfcf6eb7a106e57d7351de530
parente55a46e5d19178a04b8244f7077ac71f12df639d (diff)
downloadqtlocation-mapboxgl-02a1a311364044820f3da096d8a6f31c8e7fc647.tar.gz
[core] Fix TransitionOptions serialization
-rw-r--r--include/mbgl/style/conversion_impl.hpp11
-rw-r--r--include/mbgl/style/transition_options.hpp13
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