// WallClock.h // Copyright 2016 Robin.Rowe@CinePaint.org // License open source MIT #ifndef WallClock_h #define WallClock_h #include #include #include class WallClock { std::chrono::system_clock::time_point start; std::chrono::system_clock::time_point lastWakeUp; public: WallClock() { Start(); } void Start() { start = std::chrono::system_clock::now(); lastWakeUp = start; } long long BumpIntervalMilliseconds(long long interval) { std::chrono::milliseconds delay(interval); lastWakeUp += delay; std::chrono::system_clock::time_point now = std::chrono::system_clock::now(); std::chrono::system_clock::duration pause = lastWakeUp - now; if(pause.count()<0) { return 0; } return std::chrono::duration_cast(pause).count(); } }; /* const chrono::seconds seconds = chrono::duration_cast(duration); m_microseconds = (uint32_t)(chrono::duration_cast(duration - seconds).count() & UINT32_MAX); time_t timet = (time_t)(seconds.count() & UINT32_MAX); localtime_s(&m_tm, &timet); */ #endif