diff options
Diffstat (limited to 'src/mbgl/util/transition.hpp')
-rw-r--r-- | src/mbgl/util/transition.hpp | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/src/mbgl/util/transition.hpp b/src/mbgl/util/transition.hpp index d6bbc9eba0..fc1ecd23c3 100644 --- a/src/mbgl/util/transition.hpp +++ b/src/mbgl/util/transition.hpp @@ -2,7 +2,7 @@ #define MBGL_UTIL_TRANSITION #include <mbgl/util/noncopyable.hpp> -#include <mbgl/util/time.hpp> +#include <chrono> namespace mbgl { namespace util { @@ -14,34 +14,35 @@ public: complete }; - inline transition(timestamp start_, timestamp duration_) + inline transition(std::chrono::steady_clock::time_point start_, std::chrono::steady_clock::duration duration_) : start(start_), duration(duration_) {} - inline float progress(timestamp now) const { - if (duration == 0) return 1; + inline float progress(std::chrono::steady_clock::time_point now) const { + if (duration == std::chrono::steady_clock::duration::zero()) return 1; if (start > now) return 0; - return (float)(now - start) / duration; + return std::chrono::duration<float>(now - start) / duration; } - virtual state update(timestamp now) const = 0; + virtual state update(std::chrono::steady_clock::time_point now) const = 0; virtual ~transition(); protected: - const timestamp start, duration; + const std::chrono::steady_clock::time_point start; + const std::chrono::steady_clock::duration duration; }; template <typename T> class ease_transition : public transition { public: - ease_transition(T from_, T to_, T& value_, timestamp start_, timestamp duration_) + ease_transition(T from_, T to_, T& value_, std::chrono::steady_clock::time_point start_, std::chrono::steady_clock::duration duration_) : transition(start_, duration_), from(from_), to(to_), value(value_) {} - state update(timestamp now) const; + state update(std::chrono::steady_clock::time_point now) const; private: const T from, to; @@ -52,12 +53,12 @@ private: template <typename T> class timeout : public transition { public: - timeout(T final_value_, T& value_, timestamp start_, timestamp duration_) + timeout(T final_value_, T& value_, std::chrono::steady_clock::time_point start_, std::chrono::steady_clock::duration duration_) : transition(start_, duration_), final_value(final_value_), value(value_) {} - state update(timestamp now) const { + state update(std::chrono::steady_clock::time_point now) const { if (progress(now) >= 1) { value = final_value; return complete; |