summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2014-11-02 01:26:13 +0000
committerCarl Hetherington <cth@carlh.net>2014-11-02 01:26:13 +0000
commitd9a189571d94e656e137db115c1070ae161984ee (patch)
treee4caa0f0735d9c840942ffa924755da7ef1cbfe6
parent6d7dc1a2b650a74f23b772d215bb43d5f7b3e173 (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.cc24
-rw-r--r--src/dcp_time.h1
-rw-r--r--src/subtitle_asset.cc4
-rw-r--r--src/subtitle_asset.h2
-rw-r--r--test/subtitle_tests.cc29
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)
));
-
-
-
}