void
Timecode::set (DCPTime t, int fps)
{
- int const h = t / (3600 * TIME_HZ);
- t -= h * 3600 * TIME_HZ;
- int const m = t / (60 * TIME_HZ);
- t -= m * 60 * TIME_HZ;
- int const s = t / TIME_HZ;
- t -= s * TIME_HZ;
- int const f = divide_with_round (t * fps, TIME_HZ);
+ int h;
+ int m;
+ int s;
+ int f;
+ t.split (fps, h, m, s, f);
checked_set (_hours, lexical_cast<string> (h));
checked_set (_minutes, lexical_cast<string> (m));
checked_set (_seconds, lexical_cast<string> (s));
checked_set (_frames, lexical_cast<string> (f));
- _fixed->SetLabel (wxString::Format ("%02d:%02d:%02d.%02d", h, m, s, f));
+ _fixed->SetLabel (std_to_wx (t.timecode (fps)));
}
DCPTime
Timecode::get (int fps) const
{
- DCPTime t = 0;
+ DCPTime t;
string const h = wx_to_std (_hours->GetValue ());
- t += lexical_cast<int> (h.empty() ? "0" : h) * 3600 * TIME_HZ;
+ t += DCPTime::from_seconds (lexical_cast<int> (h.empty() ? "0" : h) * 3600);
string const m = wx_to_std (_minutes->GetValue());
- t += lexical_cast<int> (m.empty() ? "0" : m) * 60 * TIME_HZ;
+ t += DCPTime::from_seconds (lexical_cast<int> (m.empty() ? "0" : m) * 60);
string const s = wx_to_std (_seconds->GetValue());
- t += lexical_cast<int> (s.empty() ? "0" : s) * TIME_HZ;
+ t += DCPTime::from_seconds (lexical_cast<int> (s.empty() ? "0" : s));
string const f = wx_to_std (_frames->GetValue());
- t += lexical_cast<int> (f.empty() ? "0" : f) * TIME_HZ / fps;
+ t += DCPTime::from_seconds (lexical_cast<double> (f.empty() ? "0" : f) / fps);
return t;
}