summaryrefslogtreecommitdiff
path: root/src/wx/timecode.h
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2021-03-20 10:19:46 +0100
committerCarl Hetherington <cth@carlh.net>2021-03-20 10:19:46 +0100
commitef31a94cd00dcc88fc83093cbc709b5b79acc4b6 (patch)
treea88f220a15d474e0db5757268d9514404b77f22f /src/wx/timecode.h
parent62bfae1511bb8d33ef4cd71b5822bb0b74a5389c (diff)
Tidy up HMSF handling in a few places.
Diffstat (limited to 'src/wx/timecode.h')
-rw-r--r--src/wx/timecode.h59
1 files changed, 24 insertions, 35 deletions
diff --git a/src/wx/timecode.h b/src/wx/timecode.h
index 3746b32cd..3fe35981d 100644
--- a/src/wx/timecode.h
+++ b/src/wx/timecode.h
@@ -67,56 +67,45 @@ public:
void set (T t, float fps)
{
- int h;
- int m;
- int s;
- int f;
- t.split (fps, h, m, s, f);
+ auto const hmsf = t.split (fps);
- checked_set (_hours, dcp::raw_convert<std::string>(h));
- checked_set (_minutes, dcp::raw_convert<std::string>(m));
- checked_set (_seconds, dcp::raw_convert<std::string>(s));
- checked_set (_frames, dcp::raw_convert<std::string>(f));
+ checked_set (_hours, dcp::raw_convert<std::string>(hmsf.h));
+ checked_set (_minutes, dcp::raw_convert<std::string>(hmsf.m));
+ checked_set (_seconds, dcp::raw_convert<std::string>(hmsf.s));
+ checked_set (_frames, dcp::raw_convert<std::string>(hmsf.f));
checked_set (_fixed, t.timecode (fps));
}
void set_hint (T t, float fps)
{
- int h;
- int m;
- int s;
- int f;
- t.split (fps, h, m, s, f);
-
- _hours->SetHint (std_to_wx(dcp::raw_convert<std::string>(h)));
- _minutes->SetHint (std_to_wx(dcp::raw_convert<std::string>(m)));
- _seconds->SetHint (std_to_wx(dcp::raw_convert<std::string>(s)));
- _frames->SetHint (std_to_wx(dcp::raw_convert<std::string>(f)));
+ auto hmsf = t.split (fps);
+
+ _hours->SetHint (std_to_wx(dcp::raw_convert<std::string>(hmsf.h)));
+ _minutes->SetHint (std_to_wx(dcp::raw_convert<std::string>(hmsf.m)));
+ _seconds->SetHint (std_to_wx(dcp::raw_convert<std::string>(hmsf.s)));
+ _frames->SetHint (std_to_wx(dcp::raw_convert<std::string>(hmsf.f)));
}
T get (float fps) const
{
- T t;
-
auto value_or_hint = [](wxTextCtrl const * t) {
- if (!t->GetValue().IsEmpty()) {
- return wx_to_std (t->GetValue());
- } else {
- return wx_to_std (t->GetHint());
+ auto s = wx_to_std (t->GetValue().IsEmpty() ? t->GetHint() : t->GetValue());
+ if (s.empty()) {
+ return 0;
}
+ return dcp::raw_convert<int>(s);
};
- std::string const h = value_or_hint (_hours);
- t += T::from_seconds (dcp::raw_convert<int>(h.empty() ? "0" : h) * 3600);
- std::string const m = value_or_hint (_minutes);
- t += T::from_seconds (dcp::raw_convert<int>(m.empty() ? "0" : m) * 60);
- std::string const s = value_or_hint (_seconds);
- t += T::from_seconds (dcp::raw_convert<int>(s.empty() ? "0" : s));
- std::string const f = value_or_hint (_frames);
- t += T::from_frames (dcp::raw_convert<int>(f.empty() ? "0" : f), fps);
-
- return t;
+ return T (
+ {
+ value_or_hint(_hours),
+ value_or_hint(_minutes),
+ value_or_hint(_seconds),
+ value_or_hint(_frames)
+ },
+ fps
+ );
}
};