From: Carl Hetherington Date: Tue, 23 Dec 2014 22:29:44 +0000 (+0000) Subject: Some missed bits from 0.x. X-Git-Tag: v1.1.0~147 X-Git-Url: https://main.carlh.net/gitweb/?a=commitdiff_plain;h=6f125b65d1bc0650735624d7ada17a2ff573cbc4;p=libdcp.git Some missed bits from 0.x. --- diff --git a/src/dcp_time.cc b/src/dcp_time.cc index 9ce36764..4033e5dd 100644 --- a/src/dcp_time.cc +++ b/src/dcp_time.cc @@ -99,23 +99,13 @@ dcp::operator!= (Time const & a, Time const & b) bool dcp::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 a < b || a == b; +} - return true; +bool +dcp::operator>= (Time const & a, Time const & b) +{ + return a > b || a == b; } bool diff --git a/src/dcp_time.h b/src/dcp_time.h index 027cb9d2..70bc5573 100644 --- a/src/dcp_time.h +++ b/src/dcp_time.h @@ -79,6 +79,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_content.cc b/src/subtitle_content.cc index b074afa8..592bfc62 100644 --- a/src/subtitle_content.cc +++ b/src/subtitle_content.cc @@ -148,11 +148,11 @@ SubtitleContent::maybe_add_subtitle (string text, ParseState const & parse_state } list -SubtitleContent::subtitles_at (Time t) const +SubtitleContent::subtitles_during (Time from, Time to) const { list s; for (list::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_content.h b/src/subtitle_content.h index 349a69c8..94b46868 100644 --- a/src/subtitle_content.h +++ b/src/subtitle_content.h @@ -52,7 +52,7 @@ public: return _language; } - std::list subtitles_at (Time t) const; + std::list subtitles_during (Time from, Time to) const; std::list const & subtitles () const { return _subtitles; } diff --git a/test/subtitle_tests.cc b/test/subtitle_tests.cc index 411b6120..e8175cbb 100644 --- a/test/subtitle_tests.cc +++ b/test/subtitle_tests.cc @@ -32,7 +32,7 @@ BOOST_AUTO_TEST_CASE (subtitles1) BOOST_CHECK_EQUAL (subs.language(), "French"); - list s = subs.subtitles_at (dcp::Time (0, 0, 6, 1)); + list s = subs.subtitles_during (dcp::Time (0, 0, 6, 1), dcp::Time (0, 0, 6, 2)); BOOST_CHECK_EQUAL (s.size(), 1); BOOST_CHECK_EQUAL (s.front(), dcp::SubtitleString ( string ("theFontId"), @@ -50,7 +50,7 @@ BOOST_AUTO_TEST_CASE (subtitles1) dcp::Time (0, 0, 0, 1) )); - s = subs.subtitles_at (dcp::Time (0, 0, 7, 190)); + s = subs.subtitles_during (dcp::Time (0, 0, 7, 190), dcp::Time (0, 0, 7, 191)); BOOST_CHECK_EQUAL (s.size(), 2); BOOST_CHECK_EQUAL (s.front(), dcp::SubtitleString ( string ("theFontId"), @@ -83,7 +83,7 @@ BOOST_AUTO_TEST_CASE (subtitles1) dcp::Time (0, 0, 0, 1) )); - s = subs.subtitles_at (dcp::Time (0, 0, 11, 95)); + s = subs.subtitles_during (dcp::Time (0, 0, 11, 95), dcp::Time (0, 0, 11, 96)); BOOST_CHECK_EQUAL (s.size(), 1); BOOST_CHECK_EQUAL (s.back(), dcp::SubtitleString ( string ("theFontId"), @@ -101,7 +101,7 @@ BOOST_AUTO_TEST_CASE (subtitles1) dcp::Time (0, 0, 0, 1) )); - s = subs.subtitles_at (dcp::Time (0, 0, 14, 42)); + s = subs.subtitles_during (dcp::Time (0, 0, 14, 42), dcp::Time (0, 0, 14, 43)); BOOST_CHECK_EQUAL (s.size(), 1); BOOST_CHECK_EQUAL (s.back(), dcp::SubtitleString ( string ("theFontId"), @@ -125,7 +125,7 @@ BOOST_AUTO_TEST_CASE (subtitles2) { dcp::InteropSubtitleContent subs ("test/data/subs2.xml"); - list s = subs.subtitles_at (dcp::Time (0, 0, 42, 100)); + list s = subs.subtitles_during (dcp::Time (0, 0, 42, 100), dcp::Time (0, 0, 42, 101)); BOOST_CHECK_EQUAL (s.size(), 2); BOOST_CHECK_EQUAL (s.front(), dcp::SubtitleString ( string ("theFont"), @@ -158,7 +158,7 @@ BOOST_AUTO_TEST_CASE (subtitles2) dcp::Time (0, 0, 0, 0) )); - s = subs.subtitles_at (dcp::Time (0, 0, 50, 50)); + s = subs.subtitles_during (dcp::Time (0, 0, 50, 50), dcp::Time (0, 0, 50, 51)); BOOST_CHECK_EQUAL (s.size(), 2); BOOST_CHECK_EQUAL (s.front(), dcp::SubtitleString ( string ("theFont"), @@ -191,7 +191,7 @@ BOOST_AUTO_TEST_CASE (subtitles2) dcp::Time (0, 0, 0, 0) )); - s = subs.subtitles_at (dcp::Time (0, 1, 2, 300)); + s = subs.subtitles_during (dcp::Time (0, 1, 2, 300), dcp::Time (0, 1, 2, 301)); BOOST_CHECK_EQUAL (s.size(), 2); BOOST_CHECK_EQUAL (s.front(), dcp::SubtitleString ( string ("theFont"), @@ -224,7 +224,7 @@ BOOST_AUTO_TEST_CASE (subtitles2) dcp::Time (0, 0, 0, 0) )); - s = subs.subtitles_at (dcp::Time (0, 1, 15, 50)); + s = subs.subtitles_during (dcp::Time (0, 1, 15, 50), dcp::Time (0, 1, 15, 51)); BOOST_CHECK_EQUAL (s.size(), 2); BOOST_CHECK_EQUAL (s.front(), dcp::SubtitleString ( string ("theFont"), @@ -257,7 +257,7 @@ BOOST_AUTO_TEST_CASE (subtitles2) dcp::Time (0, 0, 0, 0) )); - s = subs.subtitles_at (dcp::Time (0, 1, 27, 200)); + s = subs.subtitles_during (dcp::Time (0, 1, 27, 200), dcp::Time (0, 1, 27, 201)); BOOST_CHECK_EQUAL (s.size(), 2); BOOST_CHECK_EQUAL (s.front(), dcp::SubtitleString ( string ("theFont"), @@ -290,7 +290,7 @@ BOOST_AUTO_TEST_CASE (subtitles2) dcp::Time (0, 0, 0, 0) )); - s = subs.subtitles_at (dcp::Time (0, 1, 42, 300)); + s = subs.subtitles_during (dcp::Time (0, 1, 42, 300), dcp::Time (0, 1, 42, 301)); BOOST_CHECK_EQUAL (s.size(), 2); BOOST_CHECK_EQUAL (s.front(), dcp::SubtitleString ( string ("theFont"), @@ -323,7 +323,7 @@ BOOST_AUTO_TEST_CASE (subtitles2) dcp::Time (0, 0, 0, 0) )); - s = subs.subtitles_at (dcp::Time (0, 1, 45, 200)); + s = subs.subtitles_during (dcp::Time (0, 1, 45, 200), dcp::Time (0, 1, 45, 201)); BOOST_CHECK_EQUAL (s.size(), 2); BOOST_CHECK_EQUAL (s.front(), dcp::SubtitleString ( string ("theFont"), @@ -356,7 +356,7 @@ BOOST_AUTO_TEST_CASE (subtitles2) dcp::Time (0, 0, 0, 0) )); - s = subs.subtitles_at (dcp::Time (0, 1, 47, 249)); + s = subs.subtitles_during (dcp::Time (0, 1, 47, 249), dcp::Time (0, 1, 47, 250)); BOOST_CHECK_EQUAL (s.size(), 2); BOOST_CHECK_EQUAL (s.front(), dcp::SubtitleString ( string ("theFont"), @@ -389,7 +389,7 @@ BOOST_AUTO_TEST_CASE (subtitles2) dcp::Time (0, 0, 0, 0) )); - s = subs.subtitles_at (dcp::Time (0, 2, 6, 210)); + s = subs.subtitles_during (dcp::Time (0, 2, 6, 210), dcp::Time (0, 2, 6, 211)); BOOST_CHECK_EQUAL (s.size(), 2); BOOST_CHECK_EQUAL (s.front(), dcp::SubtitleString ( string ("theFont"),