diff options
author | John Firebaugh <john.firebaugh@gmail.com> | 2014-08-05 18:04:31 -0700 |
---|---|---|
committer | John Firebaugh <john.firebaugh@gmail.com> | 2014-08-20 13:58:37 -0700 |
commit | b9c7e1bdd99b4c6d37672ef34ffe178d4bc54ad3 (patch) | |
tree | d53d5f9068a3501bad712e8c0c3e999a25068297 /include/mbgl/util/interpolate.hpp | |
parent | 2660b7bd1b77d9571ceb12adfef4b83e56d8e0f0 (diff) | |
download | qtlocation-mapboxgl-b9c7e1bdd99b4c6d37672ef34ffe178d4bc54ad3.tar.gz |
Consolidate duplicate interpolation definitions
While here, do not interpolate style properties that
are not transitionable. The previous behavior was to
switch from old to new value halfway through the transition;
now the new value is used immediately, as in JS.
Diffstat (limited to 'include/mbgl/util/interpolate.hpp')
-rw-r--r-- | include/mbgl/util/interpolate.hpp | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/include/mbgl/util/interpolate.hpp b/include/mbgl/util/interpolate.hpp new file mode 100644 index 0000000000..e8c3389350 --- /dev/null +++ b/include/mbgl/util/interpolate.hpp @@ -0,0 +1,25 @@ +#ifndef MBGL_UTIL_INTERPOLATE +#define MBGL_UTIL_INTERPOLATE + +namespace mbgl { +namespace util { + +template <typename T> +T interpolate(const T a, const T b, const double t) { + return a * (1.0 - t) + b * t; +} + +template <typename T> +inline std::array<T, 4> interpolate(const std::array<T, 4>& a, const std::array<T, 4>& b, const double t) { + return {{ + interpolate(a[0], b[0], t), + interpolate(a[1], b[1], t), + interpolate(a[2], b[2], t), + interpolate(a[3], b[3], t) + }}; +} + +} +} + +#endif |