diff options
author | John Firebaugh <john.firebaugh@gmail.com> | 2017-04-27 14:33:00 -0700 |
---|---|---|
committer | John Firebaugh <john.firebaugh@gmail.com> | 2017-05-03 08:30:17 -0700 |
commit | d5f4d0f05fcb8490984649d78d6c026f87a77f4e (patch) | |
tree | dea3b08a7c1d6f29a0f75d37cb2ee54a2429e6b4 /src/mbgl/renderer/cross_faded_property_evaluator.cpp | |
parent | 6c7730ee7c2d9e63df526965bb511b2f43ee82b7 (diff) | |
download | qtlocation-mapboxgl-d5f4d0f05fcb8490984649d78d6c026f87a77f4e.tar.gz |
[core] Move render-related sources out of style directory/namespace
Moves the following to the renderer directory and out of the style namespace:
* CascadeParameters
* PropertyEvaluationParameters
* UpdateParameters
* PropertyEvaluator
* DataDrivenPropertyEvaluator
* CrossFadedPropertyEvaluator
* PaintPropertyBinder
* PaintProperyStatistics
* PossiblyEvaluatedPropertyValue
* TransitioningLight
* EvaluatedLight
Diffstat (limited to 'src/mbgl/renderer/cross_faded_property_evaluator.cpp')
-rw-r--r-- | src/mbgl/renderer/cross_faded_property_evaluator.cpp | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/src/mbgl/renderer/cross_faded_property_evaluator.cpp b/src/mbgl/renderer/cross_faded_property_evaluator.cpp new file mode 100644 index 0000000000..ee3c86614f --- /dev/null +++ b/src/mbgl/renderer/cross_faded_property_evaluator.cpp @@ -0,0 +1,40 @@ +#include <mbgl/renderer/cross_faded_property_evaluator.hpp> +#include <mbgl/util/chrono.hpp> + +#include <cmath> + +namespace mbgl { + +template <typename T> +Faded<T> CrossFadedPropertyEvaluator<T>::operator()(const style::Undefined&) const { + return calculate(defaultValue, defaultValue, defaultValue); +} + +template <typename T> +Faded<T> CrossFadedPropertyEvaluator<T>::operator()(const T& constant) const { + return calculate(constant, constant, constant); +} + +template <typename T> +Faded<T> CrossFadedPropertyEvaluator<T>::operator()(const style::CameraFunction<T>& function) const { + return calculate(function.evaluate(parameters.z - 1.0f), + function.evaluate(parameters.z), + function.evaluate(parameters.z + 1.0f)); +} + +template <typename T> +Faded<T> CrossFadedPropertyEvaluator<T>::calculate(const T& min, const T& mid, const T& max) const { + const float z = parameters.z; + const float fraction = z - std::floor(z); + const std::chrono::duration<float> d = parameters.defaultFadeDuration; + const float t = std::min((parameters.now - parameters.zoomHistory.lastIntegerZoomTime) / d, 1.0f); + + return z > parameters.zoomHistory.lastIntegerZoom + ? Faded<T> { min, mid, 2.0f, 1.0f, fraction + (1.0f - fraction) * t } + : Faded<T> { max, mid, 0.5f, 1.0f, 1 - (1 - t) * fraction }; +} + +template class CrossFadedPropertyEvaluator<std::string>; +template class CrossFadedPropertyEvaluator<std::vector<float>>; + +} // namespace mbgl |