summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2014-12-23 22:29:44 +0000
committerCarl Hetherington <cth@carlh.net>2014-12-23 22:29:44 +0000
commit6f125b65d1bc0650735624d7ada17a2ff573cbc4 (patch)
treec37d69892f5d0fe244991f66110243caa030de8d
parent2e25fdc885226110c0ab28b3c8026e3dc4345cb5 (diff)
Some missed bits from 0.x.
-rw-r--r--src/dcp_time.cc22
-rw-r--r--src/dcp_time.h1
-rw-r--r--src/subtitle_content.cc4
-rw-r--r--src/subtitle_content.h2
-rw-r--r--test/subtitle_tests.cc26
5 files changed, 23 insertions, 32 deletions
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<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);
}
}
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<SubtitleString> subtitles_at (Time t) const;
+ std::list<SubtitleString> subtitles_during (Time from, Time to) const;
std::list<SubtitleString> 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<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"),