summaryrefslogtreecommitdiff
path: root/src/wx
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
parent62bfae1511bb8d33ef4cd71b5822bb0b74a5389c (diff)
Tidy up HMSF handling in a few places.
Diffstat (limited to 'src/wx')
-rw-r--r--src/wx/content_view.cc9
-rw-r--r--src/wx/timecode.h59
2 files changed, 28 insertions, 40 deletions
diff --git a/src/wx/content_view.cc b/src/wx/content_view.cc
index 44e575d93..b3a66a7be 100644
--- a/src/wx/content_view.cc
+++ b/src/wx/content_view.cc
@@ -133,13 +133,12 @@ ContentView::add (shared_ptr<Content> content)
wxListItem it;
it.SetId(N);
it.SetColumn(0);
- DCPTime length = content->approximate_length ();
- int h, m, s, f;
- length.split (24, h, m, s, f);
- it.SetText(wxString::Format("%02d:%02d:%02d", h, m, s));
+ auto length = content->approximate_length ();
+ auto const hmsf = length.split (24);
+ it.SetText(wxString::Format("%02d:%02d:%02d", hmsf.h, hmsf.m, hmsf.s));
InsertItem(it);
- shared_ptr<DCPContent> dcp = dynamic_pointer_cast<DCPContent>(content);
+ auto dcp = dynamic_pointer_cast<DCPContent>(content);
if (dcp && dcp->content_kind()) {
it.SetId(N);
it.SetColumn(1);
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
+ );
}
};