X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Fempty.cc;h=96d036463483e7954f619f3b20d7c4f2641a53d1;hb=09f8b57ac237c98eae648fc31093cf22495db740;hp=71bf3aa956072d27aa9f50bd40f14e6a971395d8;hpb=67775a6d0d28131b98ae284c7be23d79ccdab685;p=dcpomatic.git diff --git a/src/lib/empty.cc b/src/lib/empty.cc index 71bf3aa95..96d036463 100644 --- a/src/lib/empty.cc +++ b/src/lib/empty.cc @@ -1,5 +1,5 @@ /* - Copyright (C) 2017 Carl Hetherington + Copyright (C) 2017-2021 Carl Hetherington This file is part of DCP-o-matic. @@ -18,6 +18,7 @@ */ + #include "empty.h" #include "film.h" #include "playlist.h" @@ -26,44 +27,46 @@ #include "dcp_content.h" #include "dcpomatic_time_coalesce.h" #include "piece.h" -#include #include + using std::cout; using std::list; -using boost::shared_ptr; -using boost::dynamic_pointer_cast; -using boost::function; +using std::shared_ptr; +using std::dynamic_pointer_cast; +using std::function; using namespace dcpomatic; -Empty::Empty (shared_ptr film, shared_ptr playlist, function)> part) + +Empty::Empty (shared_ptr film, shared_ptr playlist, function)> part, DCPTime length) { list full; - BOOST_FOREACH (shared_ptr i, playlist->content()) { - if (part(i)) { - full.push_back (DCPTimePeriod (i->position(), i->end(film))); + for (auto i: playlist->content()) { + if (part(i) && i->paths_valid()) { + full.push_back (DCPTimePeriod(i->position(), i->end(film))); } } - _periods = subtract (DCPTimePeriod(DCPTime(), playlist->length(film)), coalesce(full)); + _periods = subtract (DCPTimePeriod(DCPTime(), length), coalesce(full)); - if (!_periods.empty ()) { + if (!_periods.empty()) { _position = _periods.front().from; } } + void Empty::set_position (DCPTime position) { _position = position; - BOOST_FOREACH (DCPTimePeriod i, _periods) { + for (auto i: _periods) { if (i.contains(_position)) { return; } } - BOOST_FOREACH (DCPTimePeriod i, _periods) { + for (auto i: _periods) { if (i.from > _position) { _position = i.from; return; @@ -71,10 +74,11 @@ Empty::set_position (DCPTime position) } } + DCPTimePeriod Empty::period_at_position () const { - BOOST_FOREACH (DCPTimePeriod i, _periods) { + for (auto i: _periods) { if (i.contains(_position)) { return DCPTimePeriod (_position, i.to); } @@ -83,11 +87,12 @@ Empty::period_at_position () const DCPOMATIC_ASSERT (false); } + bool Empty::done () const { DCPTime latest; - BOOST_FOREACH (DCPTimePeriod i, _periods) { + for (auto i: _periods) { latest = max (latest, i.to); }