Some missed bits from 0.x.
authorCarl Hetherington <cth@carlh.net>
Tue, 23 Dec 2014 22:29:44 +0000 (22:29 +0000)
committerCarl Hetherington <cth@carlh.net>
Tue, 23 Dec 2014 22:29:44 +0000 (22:29 +0000)
src/dcp_time.cc
src/dcp_time.h
src/subtitle_content.cc
src/subtitle_content.h
test/subtitle_tests.cc

index 9ce367645c29e6654bb7471c6246d4743c9434ca..4033e5dd5f3a4671b97e797c53e214876deec949 100644 (file)
@@ -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
index 027cb9d2e428c0b18cc0c5ccbff4dd48a012830e..70bc55735111e297ae14f7f98479f7d5ab44be5b 100644 (file)
@@ -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);
index b074afa8ee406efb6a33d4d0606c13ddad2ceb4f..592bfc627b870b69924cae38ae8b787ef3bfb59d 100644 (file)
@@ -148,11 +148,11 @@ SubtitleContent::maybe_add_subtitle (string text, ParseState const & parse_state
 }
 
 list<SubtitleString>
-SubtitleContent::subtitles_at (Time t) const
+SubtitleContent::subtitles_during (Time from, Time to) const
 {
        list<SubtitleString> s;
        for (list<SubtitleString>::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);
                }
        }
index 349a69c8856715c17f16561fecf5ad64113306f5..94b468681088a4237c2fe3458033790984bd3402 100644 (file)
@@ -52,7 +52,7 @@ public:
                return _language;
        }
 
-       std::list<SubtitleString> subtitles_at (Time t) const;
+       std::list<SubtitleString> subtitles_during (Time from, Time to) const;
        std::list<SubtitleString> const & subtitles () const {
                return _subtitles;
        }
index 411b61204b191789ed43b8c102fd10e44a6671cb..e8175cbbe5814503f02e11888a8914e9beb71ba1 100644 (file)
@@ -32,7 +32,7 @@ BOOST_AUTO_TEST_CASE (subtitles1)
 
        BOOST_CHECK_EQUAL (subs.language(), "French");
 
-       list<dcp::SubtitleString> s = subs.subtitles_at (dcp::Time (0, 0, 6, 1));
+       list<dcp::SubtitleString> 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<dcp::SubtitleString> s = subs.subtitles_at (dcp::Time (0, 0, 42, 100));
+       list<dcp::SubtitleString> 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"),