X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Factive_text.cc;h=1e0fd6adbcc1bc80b4d90c08a293893bfaf48370;hb=76bee46d6baa198107b197b821ad5b2d5eb5947f;hp=1180ce7b0bc42f3c6b1deb7ef1fb0fdbb789eecd;hpb=a5d004b0773f633401528392fc28e66d70e13ac8;p=dcpomatic.git diff --git a/src/lib/active_text.cc b/src/lib/active_text.cc index 1180ce7b0..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; } - for (auto 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; - for (auto 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. @@ -126,6 +130,7 @@ ActiveText::add_to (weak_ptr content, DCPTime to) 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 () {