summaryrefslogtreecommitdiff
path: root/src/mbgl/style/properties.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mbgl/style/properties.hpp')
-rw-r--r--src/mbgl/style/properties.hpp27
1 files changed, 23 insertions, 4 deletions
diff --git a/src/mbgl/style/properties.hpp b/src/mbgl/style/properties.hpp
index e42beac97a..dfcf7993a7 100644
--- a/src/mbgl/style/properties.hpp
+++ b/src/mbgl/style/properties.hpp
@@ -20,6 +20,10 @@ class Transitioning {
public:
Transitioning() = default;
+ explicit Transitioning(Value value_)
+ : value(std::move(value_)) {
+ }
+
Transitioning(Value value_,
Transitioning<Value> prior_,
TransitionOptions transition,
@@ -125,7 +129,10 @@ public:
class Evaluated : public Tuple<EvaluatedTypes> {
public:
- using Tuple<EvaluatedTypes>::Tuple;
+ template <class... Us>
+ Evaluated(Us&&... us)
+ : Tuple<EvaluatedTypes>(std::forward<Us>(us)...) {
+ }
};
class PossiblyEvaluated : public Tuple<PossiblyEvaluatedTypes> {
@@ -169,7 +176,10 @@ public:
class Unevaluated : public Tuple<UnevaluatedTypes> {
public:
- using Tuple<UnevaluatedTypes>::Tuple;
+ template <class... Us>
+ Unevaluated(Us&&... us)
+ : Tuple<UnevaluatedTypes>(std::forward<Us>(us)...) {
+ }
bool hasTransition() const {
bool result = false;
@@ -200,15 +210,24 @@ public:
class Transitionable : public Tuple<TransitionableTypes> {
public:
- using Tuple<TransitionableTypes>::Tuple;
+ template <class... Us>
+ Transitionable(Us&&... us)
+ : Tuple<TransitionableTypes>(std::forward<Us>(us)...) {
+ }
- Unevaluated transition(const TransitionParameters& parameters, Unevaluated&& prior) const {
+ Unevaluated transitioned(const TransitionParameters& parameters, Unevaluated&& prior) const {
return Unevaluated {
this->template get<Ps>()
.transition(parameters, std::move(prior.template get<Ps>()))...
};
}
+ Unevaluated untransitioned() const {
+ return Unevaluated {
+ typename Ps::UnevaluatedType(this->template get<Ps>().value)...
+ };
+ }
+
bool hasDataDrivenPropertyDifference(const Transitionable& other) const {
bool result = false;
util::ignore({ (result |= this->template get<Ps>().value.hasDataDrivenPropertyDifference(other.template get<Ps>().value))... });