diff options
| author | Carl Hetherington <cth@carlh.net> | 2014-07-15 14:28:16 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2014-07-15 14:28:16 +0100 |
| commit | dc17395f3a4c19f5eea2590f1d2904e88365c67a (patch) | |
| tree | c7d5a99ee538483b948b756bdf7bcbfbbb62ae2a /src | |
| parent | 44a5e000d62230451cc35a239c7c3ba83d830bd7 (diff) | |
Add scale functions to time classes.
Diffstat (limited to 'src')
| -rw-r--r-- | src/frame_time.cc | 15 | ||||
| -rw-r--r-- | src/frame_time.h | 3 | ||||
| -rw-r--r-- | src/metric_time.cc | 6 | ||||
| -rw-r--r-- | src/metric_time.h | 1 | ||||
| -rw-r--r-- | src/time_pair.cc | 18 | ||||
| -rw-r--r-- | src/time_pair.h | 7 |
6 files changed, 43 insertions, 7 deletions
diff --git a/src/frame_time.cc b/src/frame_time.cc index da9973c..65996c0 100644 --- a/src/frame_time.cc +++ b/src/frame_time.cc @@ -64,6 +64,12 @@ FrameTime::timecode () const FrameTime::FrameTime (int64_t f, float fps) { + set_from_frames (f, fps); +} + +void +FrameTime::set_from_frames (int64_t f, float fps) +{ _hours = f / (60 * 60 * fps); f -= _hours * 60 * 60 * fps; _minutes = f / (60 * fps); @@ -96,3 +102,12 @@ FrameTime::add (FrameTime t, float fps) _hours += t.hours (); } + +void +FrameTime::scale (float f, float frames_per_second) +{ + set_from_frames ( + (((_hours * 3600 + _minutes * 60 + _seconds) * frames_per_second) + _frames) * f, + frames_per_second + ); +} diff --git a/src/frame_time.h b/src/frame_time.h index a260e95..ed5fc81 100644 --- a/src/frame_time.h +++ b/src/frame_time.h @@ -69,8 +69,11 @@ public: std::string timecode () const; void add (FrameTime t, float fps); + void scale (float f, float fps); private: + void set_from_frames (int64_t f, float fps); + int _hours; int _minutes; int _seconds; diff --git a/src/metric_time.cc b/src/metric_time.cc index 72299d3..4fad390 100644 --- a/src/metric_time.cc +++ b/src/metric_time.cc @@ -86,6 +86,12 @@ MetricTime::add (MetricTime t) _ms += t._ms; } +void +MetricTime::scale (float f) +{ + _ms *= f; +} + bool sub::operator== (MetricTime const & a, MetricTime const & b) { diff --git a/src/metric_time.h b/src/metric_time.h index cae6755..86c1923 100644 --- a/src/metric_time.h +++ b/src/metric_time.h @@ -43,6 +43,7 @@ public: int milliseconds () const; void add (MetricTime t); + void scale (float f); private: void split (int& h, int& m, int& s, int& ms) const; diff --git a/src/time_pair.cc b/src/time_pair.cc index e6708cd..9fc7974 100644 --- a/src/time_pair.cc +++ b/src/time_pair.cc @@ -23,25 +23,25 @@ using std::ostream; using namespace sub; FrameTime -TimePair::frame (float frames_per_second) const +TimePair::frame (float fps) const { if (_frame) { return _frame.get (); } MetricTime const m = _metric.get (); - return FrameTime (m.hours(), m.minutes(), m.seconds(), m.milliseconds() * frames_per_second / 1000); + return FrameTime (m.hours(), m.minutes(), m.seconds(), m.milliseconds() * fps / 1000); } MetricTime -TimePair::metric (float frames_per_second) const +TimePair::metric (float fps) const { if (_metric) { return _metric.get (); } FrameTime const f = _frame.get (); - return MetricTime (f.hours(), f.minutes(), f.seconds(), f.frames() * 1000 / frames_per_second); + return MetricTime (f.hours(), f.minutes(), f.seconds(), f.frames() * 1000 / fps); } void @@ -54,6 +54,16 @@ TimePair::add (FrameTime t, float fps) } } +void +TimePair::scale (float f, float fps) +{ + if (_frame) { + _frame.get().scale (f, fps); + } else { + _metric.get().scale (f); + } +} + bool TimePair::operator== (TimePair const & other) const { diff --git a/src/time_pair.h b/src/time_pair.h index deb46c0..a9c1a09 100644 --- a/src/time_pair.h +++ b/src/time_pair.h @@ -50,10 +50,11 @@ public: return _metric; } - FrameTime frame (float frames_per_second) const; - MetricTime metric (float frames_per_second) const; + FrameTime frame (float fps) const; + MetricTime metric (float fps) const; - void add (FrameTime t, float frames_per_second); + void add (FrameTime t, float fps); + void scale (float f, float fps); bool operator== (TimePair const & other) const; |
