summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJohn Firebaugh <john.firebaugh@gmail.com>2018-06-28 14:58:52 -0700
committerJohn Firebaugh <john.firebaugh@gmail.com>2018-06-29 15:38:11 -0700
commit6dfe56510caa87b3e0fdbb8256d13ec955764d53 (patch)
tree0df4859ec90a88d2fca83c18c2aef28924db25ae /src
parent542a4b4501794653b55fd1ffc60cb01348d8fc88 (diff)
downloadqtlocation-mapboxgl-6dfe56510caa87b3e0fdbb8256d13ec955764d53.tar.gz
[darwin] Replace use of *Stops with expressions DSL
Diffstat (limited to 'src')
-rw-r--r--src/mbgl/style/expression/dsl.cpp27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/mbgl/style/expression/dsl.cpp b/src/mbgl/style/expression/dsl.cpp
index 9f204cadc9..15822ccf66 100644
--- a/src/mbgl/style/expression/dsl.cpp
+++ b/src/mbgl/style/expression/dsl.cpp
@@ -3,6 +3,7 @@
#include <mbgl/style/expression/assertion.hpp>
#include <mbgl/style/expression/coercion.hpp>
#include <mbgl/style/expression/equals.hpp>
+#include <mbgl/style/expression/step.hpp>
#include <mbgl/style/expression/interpolate.hpp>
#include <mbgl/style/expression/compound_expression.hpp>
#include <mbgl/util/ignore.hpp>
@@ -35,6 +36,22 @@ std::unique_ptr<Expression> literal(Value value) {
return std::make_unique<Literal>(value);
}
+std::unique_ptr<Expression> literal(std::initializer_list<double> value) {
+ std::vector<Value> values;
+ for (auto i : value) {
+ values.push_back(i);
+ }
+ return literal(values);
+}
+
+std::unique_ptr<Expression> literal(std::initializer_list<const char *> value) {
+ std::vector<Value> values;
+ for (auto i : value) {
+ values.push_back(std::string(i));
+ }
+ return literal(values);
+}
+
std::unique_ptr<Expression> number(std::unique_ptr<Expression> value) {
return std::make_unique<Assertion>(type::Number, vec(std::move(value)));
}
@@ -87,6 +104,16 @@ std::unique_ptr<Expression> lt(std::unique_ptr<Expression> lhs,
return compound("<", std::move(lhs), std::move(rhs));
}
+std::unique_ptr<Expression> step(std::unique_ptr<Expression> input,
+ std::unique_ptr<Expression> output0,
+ double input1, std::unique_ptr<Expression> output1) {
+ type::Type type = output0->getType();
+ std::map<double, std::unique_ptr<Expression>> stops;
+ stops[-std::numeric_limits<double>::infinity()] = std::move(output0);
+ stops[input1] = std::move(output1);
+ return std::make_unique<Step>(type, std::move(input), std::move(stops));
+}
+
Interpolator linear() {
return ExponentialInterpolator(1.0);
}