X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Factive_text.cc;h=1e0fd6adbcc1bc80b4d90c08a293893bfaf48370;hb=182b9d2e2feb6545592868606aaf0f0146095481;hp=30f3b8ca661a5f68f406ec729b6c72df088cb1ed;hpb=dd9be86db6cde0afa5da0d1d1ac43b42e05dca26;p=dcpomatic.git diff --git a/src/lib/active_text.cc b/src/lib/active_text.cc index 30f3b8ca6..1e0fd6adb 100644 --- a/src/lib/active_text.cc +++ b/src/lib/active_text.cc @@ -31,6 +31,7 @@ using std::shared_ptr; using boost::optional; using namespace dcpomatic; + /** Get the open captions that should be burnt into a given period. * @param period Period of interest. * @param always_burn_captions Always burn captions even if their content is not set to burn. @@ -42,9 +43,9 @@ ActiveText::get_burnt (DCPTimePeriod period, bool always_burn_captions) const list ps; - for (Map::const_iterator i = _data.begin(); i != _data.end(); ++i) { + for (auto const& i: _data) { - shared_ptr caption = i->first.lock (); + auto caption = i.first.lock (); if (!caption) { continue; } @@ -54,9 +55,9 @@ ActiveText::get_burnt (DCPTimePeriod period, bool always_burn_captions) const continue; } - BOOST_FOREACH (Period j, i->second) { + for (auto j: i.second) { DCPTimePeriod test (j.from, j.to.get_value_or(DCPTime::max())); - optional overlap = period.overlap (test); + auto overlap = period.overlap (test); if (overlap && overlap->duration() > DCPTime(period.duration().get() / 2)) { ps.push_back (j.subs); } @@ -66,6 +67,7 @@ ActiveText::get_burnt (DCPTimePeriod period, bool always_burn_captions) const return ps; } + /** Remove subtitles that finish before a given time from our list. * @param time Time to remove before. */ @@ -75,20 +77,21 @@ ActiveText::clear_before (DCPTime time) boost::mutex::scoped_lock lm (_mutex); Map updated; - for (Map::const_iterator i = _data.begin(); i != _data.end(); ++i) { + for (auto const& i: _data) { list as; - BOOST_FOREACH (Period j, i->second) { + for (auto j: i.second) { if (!j.to || j.to.get() >= time) { as.push_back (j); } } if (!as.empty ()) { - updated[i->first] = as; + updated[i.first] = as; } } _data = updated; } + /** Add a new subtitle with a from time. * @param content Content that the subtitle is from. * @param ps Subtitles. @@ -105,6 +108,7 @@ ActiveText::add_from (weak_ptr content, PlayerText ps, DCPTim _data[content].push_back (Period (ps, from)); } + /** Add the to time for the last subtitle added from a piece of content. * @param content Content that the subtitle is from. * @param to To time for the last subtitle submitted to add_from for this content. @@ -119,13 +123,14 @@ ActiveText::add_to (weak_ptr content, DCPTime to) _data[content].back().to = to; - BOOST_FOREACH (StringText& i, _data[content].back().subs.string) { + for (auto& i: _data[content].back().subs.string) { i.set_out (dcp::Time(to.seconds(), 1000)); } return make_pair (_data[content].back().subs, _data[content].back().from); } + /** @param content Some content. * @return true if we have any active subtitles from this content. */ @@ -134,7 +139,7 @@ ActiveText::have (weak_ptr content) const { boost::mutex::scoped_lock lm (_mutex); - Map::const_iterator i = _data.find(content); + auto i = _data.find(content); if (i == _data.end()) { return false; } @@ -142,6 +147,7 @@ ActiveText::have (weak_ptr content) const return !i->second.empty(); } + void ActiveText::clear () {