using boost::weak_ptr;
using boost::shared_ptr;
+/** Get the subtitles that should be burnt into a frame at a given time.
+ * @param time Frame time.
+ * @param always_burn_subtitles Always burn subtitles even if their content is not set to burn.
+ */
list<PlayerSubtitles>
-ActiveSubtitles::get (DCPTime time, bool always_burn_subtitles) const
+ActiveSubtitles::get_burnt (DCPTime time, bool always_burn_subtitles) const
{
list<PlayerSubtitles> ps;
}
if (!piece->content->subtitle->use() || (!always_burn_subtitles && !piece->content->subtitle->burn())) {
+ /* Not burning this piece */
continue;
}
return ps;
}
+/** Remove subtitles that finish before a given time from our list.
+ * @param time Time to remove before.
+ */
void
ActiveSubtitles::clear_before (DCPTime time)
{
_data = updated;
}
+/** Add a new subtitle with a from time.
+ * @param piece Piece that the subtitle is from.
+ * @param ps Subtitles.
+ * @param from From time for these subtitles.
+ */
void
ActiveSubtitles::add_from (weak_ptr<Piece> piece, PlayerSubtitles ps, DCPTime from)
{
_data[piece].push_back (Period (ps, from));
}
+/** Add the to time for the last subtitle added from a piece.
+ * @param piece Piece that the subtitle is from.
+ * @param to To time for the last subtitle submitted to add_from for this piece.
+ * @return Return the corresponding subtitles and their from time.
+ */
pair<PlayerSubtitles, DCPTime>
ActiveSubtitles::add_to (weak_ptr<Piece> piece, DCPTime to)
{
return make_pair (_data[piece].back().subs, _data[piece].back().from);
}
+/** @param piece A piece.
+ * @return true if we have any active subtitles from this piece.
+ */
bool
ActiveSubtitles::have (weak_ptr<Piece> piece) const
{
*/
+/** @file src/lib/active_subtitles.h
+ * @brief ActiveSubtitles class.
+ */
+
#include "dcpomatic_time.h"
#include "player_subtitles.h"
#include <boost/noncopyable.hpp>
class Piece;
+/** @class ActiveSubtitles
+ * @brief A class to maintain information on active subtitles for Player.
+ */
class ActiveSubtitles : public boost::noncopyable
{
public:
- std::list<PlayerSubtitles> get (DCPTime time, bool always_burn_subtitles) const;
+ std::list<PlayerSubtitles> get_burnt (DCPTime time, bool always_burn_subtitles) const;
void clear_before (DCPTime time);
void clear ();
void add_from (boost::weak_ptr<Piece> piece, PlayerSubtitles ps, DCPTime from);
{
list<PositionImage> subtitles;
- BOOST_FOREACH (PlayerSubtitles i, _active_subtitles.get(time, _always_burn_subtitles)) {
+ BOOST_FOREACH (PlayerSubtitles i, _active_subtitles.get_burnt (time, _always_burn_subtitles)) {
/* Image subtitles */
list<PositionImage> c = transform_image_subtitles (i.image);