3#include <ossia/detail/config.hpp>
4#include <ossia/detail/thread.hpp>
18using clock_type = std::chrono::steady_clock;
19class OSSIA_EXPORT clock
21 friend class time_interval;
29 using exec_status_callback = std::function<void(exec_status)>;
32 clock(ossia::time_interval& cst,
double time_ratio = 1000.);
38 void start_and_tick();
47 [[nodiscard]]
bool paused()
const;
60 [[nodiscard]] time_value get_duration()
const;
65 clock& set_duration(ossia::time_value);
69 [[nodiscard]] time_value get_granularity()
const;
74 clock& set_granularity(std::chrono::microseconds);
75 clock& set_granularity(std::chrono::milliseconds);
79 [[nodiscard]]
bool running()
const;
83 [[nodiscard]] time_value get_position()
const;
87 [[nodiscard]] time_value get_date()
const;
90 void set_exec_status_callback(exec_status_callback);
91 [[nodiscard]] exec_status_callback get_exec_status_callback()
const;
95 void do_set_duration(ossia::time_value);
101 time_interval& m_interval;
105 time_value m_duration{};
108 time_value m_granularity{};
114 ossia::thread m_thread;
117 clock_type::time_point m_lastTime{};
119 exec_status_callback m_statusCallback;
122 int64_t m_elapsedTime{};
124 std::atomic_bool m_running{};
125 std::atomic_bool m_paused{};
126 std::atomic_bool m_shouldStop{};
129 void thread_callback();
The state class.
Definition editor/state/state.hpp:25
The time_interval class.
Definition time_interval.hpp:49