diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/mbgl/style/expression/interpolate.hpp | 7 | ||||
-rw-r--r-- | include/mbgl/style/expression/step.hpp | 1 | ||||
-rw-r--r-- | include/mbgl/style/function/camera_function.hpp | 4 | ||||
-rw-r--r-- | include/mbgl/style/function/composite_function.hpp | 2 | ||||
-rw-r--r-- | include/mbgl/style/function/source_function.hpp | 2 | ||||
-rw-r--r-- | include/mbgl/util/unitbezier.hpp | 11 |
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; |