10 enum class Mode : uint8_t {
24 mode_ =
static_cast<Mode
>((
static_cast<int>(mode_) + 1) %
25 static_cast<int>(Mode::MODE_NUM));
29 Mode GetMode()
const {
return mode_; }
32 void SetMode(Mode mode) { mode_ = mode; }
35 void SetLandscape(
bool val) { landscape_ = val; }
36 bool IsLandscape()
const {
return landscape_; }
41 void StartStopwatch() {
42 if (!stopwatch_running_) {
43 stopwatch_start_time_ = std::chrono::steady_clock::now();
44 stopwatch_running_ =
true;
45 mode_ = Mode::STOPWATCH;
46 std::cout <<
"Stopwatch started\n";
51 void StopStopwatch() {
52 if (stopwatch_running_) {
53 stopwatch_running_ =
false;
54 stopwatch_elapsed_sec_ = 0;
55 std::cout <<
"Stopwatch stopped\n";
60 int64_t GetStopwatchSeconds()
const {
61 int64_t display_sec = stopwatch_elapsed_sec_;
62 if (stopwatch_running_) {
63 auto now = std::chrono::steady_clock::now();
64 display_sec += std::chrono::duration_cast<std::chrono::seconds>(
65 now - stopwatch_start_time_)
72 bool IsStopwatchRunning()
const {
return stopwatch_running_; }
77 void StartTimer(
int duration_sec) {
78 timer_duration_sec_ = duration_sec;
79 max_duration_sec_ = duration_sec;
80 timer_start_time_ = std::chrono::steady_clock::now();
83 std::cout <<
"Timer started for " << duration_sec <<
" seconds\n";
88 timer_active_ =
false;
89 timer_duration_sec_ = 0;
90 std::cout <<
"Timer stopped\n";
94 int64_t GetRemainingTimerSeconds() {
95 int64_t remaining = timer_duration_sec_;
97 auto now = std::chrono::steady_clock::now();
98 int64_t elapsed = std::chrono::duration_cast<std::chrono::seconds>(
99 now - timer_start_time_)
101 if (elapsed >= timer_duration_sec_) {
103 std::cout <<
"Timer finished\n";
105 remaining -= elapsed;
112 bool IsTimerRunning()
const {
return timer_active_; }
115 int GetMaxTimerDuration()
const {
return max_duration_sec_; }
118 void AdjustTimer(
int delta_sec) {
119 if (!timer_active_) {
120 timer_duration_sec_ = std::clamp(timer_duration_sec_ + delta_sec, 0,
127 bool landscape_ =
false;
130 bool stopwatch_running_ =
false;
131 std::chrono::steady_clock::time_point stopwatch_start_time_;
132 int64_t stopwatch_elapsed_sec_ = 0;
135 bool timer_active_ =
false;
136 std::chrono::steady_clock::time_point timer_start_time_;
137 int timer_duration_sec_ = 0;
138 int max_duration_sec_ = 0;