summaryrefslogtreecommitdiff
path: root/include/mbgl
diff options
context:
space:
mode:
Diffstat (limited to 'include/mbgl')
-rw-r--r--include/mbgl/style/expression/interpolate.hpp7
-rw-r--r--include/mbgl/style/expression/step.hpp1
-rw-r--r--include/mbgl/style/function/camera_function.hpp4
-rw-r--r--include/mbgl/style/function/composite_function.hpp2
-rw-r--r--include/mbgl/style/function/source_function.hpp2
-rw-r--r--include/mbgl/util/unitbezier.hpp11
6 files changed, 26 insertions, 1 deletions
diff --git a/include/mbgl/style/expression/interpolate.hpp b/include/mbgl/style/expression/interpolate.hpp
index c82c04bbb0..dbed74b4cd 100644
--- a/include/mbgl/style/expression/interpolate.hpp
+++ b/include/mbgl/style/expression/interpolate.hpp
@@ -70,6 +70,7 @@ public:
{}
const std::unique_ptr<Expression>& getInput() const { return input; }
+ const Interpolator& getInterpolator() const { return interpolator; }
void eachChild(const std::function<void(const Expression&)>& visit) const override {
visit(*input);
@@ -77,6 +78,12 @@ public:
visit(*stop.second);
}
}
+
+ void eachStop(const std::function<void(double, const Expression&)>& visit) const {
+ for (const auto& stop : stops) {
+ visit(stop.first, *stop.second);
+ }
+ }
// Return the smallest range of stops that covers the interval [lower, upper]
Range<float> getCoveringStops(const double lower, const double upper) const {
diff --git a/include/mbgl/style/expression/step.hpp b/include/mbgl/style/expression/step.hpp
index 4a0a724d7c..6bf42e20f1 100644
--- a/include/mbgl/style/expression/step.hpp
+++ b/include/mbgl/style/expression/step.hpp
@@ -27,6 +27,7 @@ public:
EvaluationResult evaluate(const EvaluationContext& params) const override;
void eachChild(const std::function<void(const Expression&)>& visit) const override;
+ void eachStop(const std::function<void(double, const Expression&)>& visit) const;
const std::unique_ptr<Expression>& getInput() const { return input; }
Range<float> getCoveringStops(const double lower, const double upper) const;
diff --git a/include/mbgl/style/function/camera_function.hpp b/include/mbgl/style/function/camera_function.hpp
index 015abd3e62..1da5d2c601 100644
--- a/include/mbgl/style/function/camera_function.hpp
+++ b/include/mbgl/style/function/camera_function.hpp
@@ -76,7 +76,9 @@ public:
}
bool useIntegerZoom = false;
-
+
+ const expression::Expression& getExpression() const { return *expression; }
+
// retained for compatibility with pre-expression function API
Stops stops;
diff --git a/include/mbgl/style/function/composite_function.hpp b/include/mbgl/style/function/composite_function.hpp
index 24578f599c..f391b101ae 100644
--- a/include/mbgl/style/function/composite_function.hpp
+++ b/include/mbgl/style/function/composite_function.hpp
@@ -111,6 +111,8 @@ public:
return *lhs.expression == *rhs.expression;
}
+ const expression::Expression& getExpression() const { return *expression; }
+
std::string property;
Stops stops;
optional<T> defaultValue;
diff --git a/include/mbgl/style/function/source_function.hpp b/include/mbgl/style/function/source_function.hpp
index bd7b109fd8..d3caa90ee5 100644
--- a/include/mbgl/style/function/source_function.hpp
+++ b/include/mbgl/style/function/source_function.hpp
@@ -68,6 +68,8 @@ public:
bool useIntegerZoom = false;
+ const expression::Expression& getExpression() const { return *expression; }
+
// retained for compatibility with pre-expression function API
std::string property;
Stops stops;
diff --git a/include/mbgl/util/unitbezier.hpp b/include/mbgl/util/unitbezier.hpp
index 92f23d6718..56d2ab6ead 100644
--- a/include/mbgl/util/unitbezier.hpp
+++ b/include/mbgl/util/unitbezier.hpp
@@ -42,6 +42,17 @@ struct UnitBezier {
, ay(1.0 - (3.0 * p1y) - (3.0 * (p2y - p1y) - (3.0 * p1y))) {
}
+ std::pair<double, double> getP1() const {
+ return { cx / 3.0, cy / 3.0 };
+ }
+
+ std::pair<double, double> getP2() const {
+ return {
+ (bx + (3.0 * cx / 3.0) + cx) / 3.0,
+ (by + (3.0 * cy / 3.0) + cy) / 3.0,
+ };
+ }
+
double sampleCurveX(double t) const {
// `ax t^3 + bx t^2 + cx t' expanded using Horner's rule.
return ((ax * t + bx) * t + cx) * t;