diff options
Diffstat (limited to 'src/mbgl/renderer/property_evaluation_parameters.hpp')
-rw-r--r-- | src/mbgl/renderer/property_evaluation_parameters.hpp | 19 |
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; |