diff options
author | John Firebaugh <john.firebaugh@gmail.com> | 2018-06-28 14:58:52 -0700 |
---|---|---|
committer | John Firebaugh <john.firebaugh@gmail.com> | 2018-06-29 15:38:11 -0700 |
commit | 6dfe56510caa87b3e0fdbb8256d13ec955764d53 (patch) | |
tree | 0df4859ec90a88d2fca83c18c2aef28924db25ae /src | |
parent | 542a4b4501794653b55fd1ffc60cb01348d8fc88 (diff) | |
download | qtlocation-mapboxgl-6dfe56510caa87b3e0fdbb8256d13ec955764d53.tar.gz |
[darwin] Replace use of *Stops with expressions DSL
Diffstat (limited to 'src')
-rw-r--r-- | src/mbgl/style/expression/dsl.cpp | 27 |
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); } |