diff options
| author | Carl Hetherington <cth@carlh.net> | 2014-11-02 01:26:13 +0000 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2014-11-02 01:26:13 +0000 |
| commit | d9a189571d94e656e137db115c1070ae161984ee (patch) | |
| tree | e4caa0f0735d9c840942ffa924755da7ef1cbfe6 | |
| parent | 6d7dc1a2b650a74f23b772d215bb43d5f7b3e173 (diff) | |
Tidy operator<= for libdcp::Time somewhat. Change subtitles_at to subtitles_during as it's a better API for dcptocomps.
| -rw-r--r-- | src/dcp_time.cc | 24 | ||||
| -rw-r--r-- | src/dcp_time.h | 1 | ||||
| -rw-r--r-- | src/subtitle_asset.cc | 4 | ||||
| -rw-r--r-- | src/subtitle_asset.h | 2 | ||||
| -rw-r--r-- | test/subtitle_tests.cc | 29 |
5 files changed, 24 insertions, 36 deletions
diff --git a/src/dcp_time.cc b/src/dcp_time.cc index 9b93391b..428215cb 100644 --- a/src/dcp_time.cc +++ b/src/dcp_time.cc @@ -99,23 +99,7 @@ libdcp::operator!= (Time const & a, Time const & b) bool libdcp::operator<= (Time const & a, Time const & b) { - if (a.h != b.h) { - return a.h <= b.h; - } - - if (a.m != b.m) { - return a.m <= b.m; - } - - if (a.s != b.s) { - return a.s <= b.s; - } - - if (a.t != b.t) { - return a.t <= b.t; - } - - return true; + return a < b || a == b; } bool @@ -162,6 +146,12 @@ libdcp::operator> (Time const & a, Time const & b) return true; } +bool +libdcp::operator>= (Time const & a, Time const & b) +{ + return a == b || a > b; +} + ostream & libdcp::operator<< (ostream& s, Time const & t) { diff --git a/src/dcp_time.h b/src/dcp_time.h index 92cee9a0..a8e7c90c 100644 --- a/src/dcp_time.h +++ b/src/dcp_time.h @@ -78,6 +78,7 @@ extern bool operator!= (Time const & a, Time const & b); extern bool operator<= (Time const & a, Time const & b); extern bool operator< (Time const & a, Time const & b); extern bool operator> (Time const & a, Time const & b); +extern bool operator>= (Time const & a, Time const & b); extern std::ostream & operator<< (std::ostream & s, Time const & t); extern Time operator+ (Time a, Time const & b); extern Time operator- (Time a, Time const & b); diff --git a/src/subtitle_asset.cc b/src/subtitle_asset.cc index 89269fb0..acd40e9b 100644 --- a/src/subtitle_asset.cc +++ b/src/subtitle_asset.cc @@ -216,11 +216,11 @@ SubtitleAsset::maybe_add_subtitle (string text, ParseState const & parse_state) } list<shared_ptr<Subtitle> > -SubtitleAsset::subtitles_at (Time t) const +SubtitleAsset::subtitles_during (Time from, Time to) const { list<shared_ptr<Subtitle> > s; for (list<shared_ptr<Subtitle> >::const_iterator i = _subtitles.begin(); i != _subtitles.end(); ++i) { - if ((*i)->in() <= t && t <= (*i)->out ()) { + if ((*i)->out() >= from && (*i)->in() <= to) { s.push_back (*i); } } diff --git a/src/subtitle_asset.h b/src/subtitle_asset.h index 3dfbe7e2..1571e569 100644 --- a/src/subtitle_asset.h +++ b/src/subtitle_asset.h @@ -154,7 +154,7 @@ public: return _language; } - std::list<boost::shared_ptr<Subtitle> > subtitles_at (Time t) const; + std::list<boost::shared_ptr<Subtitle> > subtitles_during (Time from, Time to) const; std::list<boost::shared_ptr<Subtitle> > const & subtitles () const { return _subtitles; } diff --git a/test/subtitle_tests.cc b/test/subtitle_tests.cc index a8fa78b7..0994f329 100644 --- a/test/subtitle_tests.cc +++ b/test/subtitle_tests.cc @@ -30,7 +30,7 @@ BOOST_AUTO_TEST_CASE (subtitles1) BOOST_CHECK_EQUAL (subs.language(), "French"); - list<shared_ptr<libdcp::Subtitle> > s = subs.subtitles_at (libdcp::Time (0, 0, 6, 1)); + list<shared_ptr<libdcp::Subtitle> > s = subs.subtitles_during (libdcp::Time (0, 0, 6, 1), libdcp::Time (0, 0, 6, 2)); BOOST_CHECK_EQUAL (s.size(), 1); BOOST_CHECK_EQUAL (*(s.front().get()), libdcp::Subtitle ( "Arial", @@ -48,7 +48,7 @@ BOOST_AUTO_TEST_CASE (subtitles1) libdcp::Time (0, 0, 0, 1) )); - s = subs.subtitles_at (libdcp::Time (0, 0, 7, 190)); + s = subs.subtitles_during (libdcp::Time (0, 0, 7, 190), libdcp::Time (0, 0, 7, 191)); BOOST_CHECK_EQUAL (s.size(), 2); BOOST_CHECK_EQUAL (*(s.front().get()), libdcp::Subtitle ( "Arial", @@ -81,7 +81,7 @@ BOOST_AUTO_TEST_CASE (subtitles1) libdcp::Time (0, 0, 0, 1) )); - s = subs.subtitles_at (libdcp::Time (0, 0, 11, 95)); + s = subs.subtitles_during (libdcp::Time (0, 0, 11, 95), libdcp::Time (0, 0, 11, 96)); BOOST_CHECK_EQUAL (s.size(), 1); BOOST_CHECK_EQUAL (*(s.back().get()), libdcp::Subtitle ( "Arial", @@ -99,7 +99,7 @@ BOOST_AUTO_TEST_CASE (subtitles1) libdcp::Time (0, 0, 0, 1) )); - s = subs.subtitles_at (libdcp::Time (0, 0, 14, 42)); + s = subs.subtitles_during (libdcp::Time (0, 0, 14, 42), libdcp::Time (0, 0, 14, 43)); BOOST_CHECK_EQUAL (s.size(), 1); BOOST_CHECK_EQUAL (*(s.back().get()), libdcp::Subtitle ( "Arial", @@ -123,7 +123,7 @@ BOOST_AUTO_TEST_CASE (subtitles2) { libdcp::SubtitleAsset subs ("test/data", "subs2.xml"); - list<shared_ptr<libdcp::Subtitle> > s = subs.subtitles_at (libdcp::Time (0, 0, 42, 100)); + list<shared_ptr<libdcp::Subtitle> > s = subs.subtitles_during (libdcp::Time (0, 0, 42, 100), libdcp::Time (0, 0, 42, 101)); BOOST_CHECK_EQUAL (s.size(), 2); BOOST_CHECK_EQUAL (*(s.front().get()), libdcp::Subtitle ( "Arial", @@ -156,7 +156,7 @@ BOOST_AUTO_TEST_CASE (subtitles2) libdcp::Time (0, 0, 0, 0) )); - s = subs.subtitles_at (libdcp::Time (0, 0, 50, 50)); + s = subs.subtitles_during (libdcp::Time (0, 0, 50, 50), libdcp::Time (0, 0, 50, 51)); BOOST_CHECK_EQUAL (s.size(), 2); BOOST_CHECK_EQUAL (*(s.front().get()), libdcp::Subtitle ( "Arial", @@ -189,7 +189,7 @@ BOOST_AUTO_TEST_CASE (subtitles2) libdcp::Time (0, 0, 0, 0) )); - s = subs.subtitles_at (libdcp::Time (0, 1, 2, 300)); + s = subs.subtitles_during (libdcp::Time (0, 1, 2, 300), libdcp::Time (0, 1, 2, 301)); BOOST_CHECK_EQUAL (s.size(), 2); BOOST_CHECK_EQUAL (*(s.front().get()), libdcp::Subtitle ( "Arial", @@ -222,7 +222,7 @@ BOOST_AUTO_TEST_CASE (subtitles2) libdcp::Time (0, 0, 0, 0) )); - s = subs.subtitles_at (libdcp::Time (0, 1, 15, 50)); + s = subs.subtitles_during (libdcp::Time (0, 1, 15, 50), libdcp::Time (0, 1, 15, 51)); BOOST_CHECK_EQUAL (s.size(), 2); BOOST_CHECK_EQUAL (*(s.front().get()), libdcp::Subtitle ( "Arial", @@ -255,7 +255,7 @@ BOOST_AUTO_TEST_CASE (subtitles2) libdcp::Time (0, 0, 0, 0) )); - s = subs.subtitles_at (libdcp::Time (0, 1, 27, 200)); + s = subs.subtitles_during (libdcp::Time (0, 1, 27, 200), libdcp::Time (0, 1, 27, 201)); BOOST_CHECK_EQUAL (s.size(), 2); BOOST_CHECK_EQUAL (*(s.front().get()), libdcp::Subtitle ( "Arial", @@ -288,7 +288,7 @@ BOOST_AUTO_TEST_CASE (subtitles2) libdcp::Time (0, 0, 0, 0) )); - s = subs.subtitles_at (libdcp::Time (0, 1, 42, 300)); + s = subs.subtitles_during (libdcp::Time (0, 1, 42, 300), libdcp::Time (0, 1, 42, 301)); BOOST_CHECK_EQUAL (s.size(), 2); BOOST_CHECK_EQUAL (*(s.front().get()), libdcp::Subtitle ( "Arial", @@ -321,7 +321,7 @@ BOOST_AUTO_TEST_CASE (subtitles2) libdcp::Time (0, 0, 0, 0) )); - s = subs.subtitles_at (libdcp::Time (0, 1, 45, 200)); + s = subs.subtitles_during (libdcp::Time (0, 1, 45, 200), libdcp::Time (0, 1, 45, 201)); BOOST_CHECK_EQUAL (s.size(), 2); BOOST_CHECK_EQUAL (*(s.front().get()), libdcp::Subtitle ( "Arial", @@ -354,7 +354,7 @@ BOOST_AUTO_TEST_CASE (subtitles2) libdcp::Time (0, 0, 0, 0) )); - s = subs.subtitles_at (libdcp::Time (0, 1, 47, 249)); + s = subs.subtitles_during (libdcp::Time (0, 1, 47, 249), libdcp::Time (0, 1, 47, 250)); BOOST_CHECK_EQUAL (s.size(), 2); BOOST_CHECK_EQUAL (*(s.front().get()), libdcp::Subtitle ( "Arial", @@ -387,7 +387,7 @@ BOOST_AUTO_TEST_CASE (subtitles2) libdcp::Time (0, 0, 0, 0) )); - s = subs.subtitles_at (libdcp::Time (0, 2, 6, 210)); + s = subs.subtitles_during (libdcp::Time (0, 2, 6, 210), libdcp::Time (0, 2, 6, 211)); BOOST_CHECK_EQUAL (s.size(), 2); BOOST_CHECK_EQUAL (*(s.front().get()), libdcp::Subtitle ( "Arial", @@ -419,7 +419,4 @@ BOOST_AUTO_TEST_CASE (subtitles2) libdcp::Time (0, 0, 0, 0), libdcp::Time (0, 0, 0, 0) )); - - - } |
