summaryrefslogtreecommitdiff
path: root/src/mbgl/renderer/property_evaluation_parameters.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mbgl/renderer/property_evaluation_parameters.hpp')
-rw-r--r--src/mbgl/renderer/property_evaluation_parameters.hpp19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/mbgl/renderer/property_evaluation_parameters.hpp b/src/mbgl/renderer/property_evaluation_parameters.hpp
index da6a4a0892..0e1c317294 100644
--- a/src/mbgl/renderer/property_evaluation_parameters.hpp
+++ b/src/mbgl/renderer/property_evaluation_parameters.hpp
@@ -5,6 +5,13 @@
namespace mbgl {
+class CrossfadeParameters {
+public:
+ float fromScale;
+ float toScale;
+ float t;
+};
+
class PropertyEvaluationParameters {
public:
explicit PropertyEvaluationParameters(float z_)
@@ -24,6 +31,18 @@ public:
defaultFadeDuration(std::move(defaultFadeDuration_)),
useIntegerZoom(useIntegerZoom_) {}
+ CrossfadeParameters getCrossfadeParameters() const {
+ const float fraction = z - std::floor(z);
+ const std::chrono::duration<float> d = defaultFadeDuration;
+ const float t = d != std::chrono::duration<float>::zero()
+ ? std::min((now - zoomHistory.lastIntegerZoomTime) / d, 1.0f)
+ : 1.0f;
+
+ return z > zoomHistory.lastIntegerZoom
+ ? CrossfadeParameters { 2.0f, 1.0f, fraction + (1.0f - fraction) * t }
+ : CrossfadeParameters { 0.5f, 1.0f, 1 - (1 - t) * fraction };
+ }
+
float z;
TimePoint now;
ZoomHistory zoomHistory;