/*
- Copyright (C) 2013-2018 Carl Hetherington <cth@carlh.net>
+ Copyright (C) 2013-2021 Carl Hetherington <cth@carlh.net>
This file is part of DCP-o-matic.
*/
+
#ifndef DCPOMATIC_CAPTION_DECODER_H
#define DCPOMATIC_CAPTION_DECODER_H
+
#include "decoder.h"
#include "rect.h"
#include "types.h"
#include <dcp/subtitle_string.h>
#include <boost/signals2.hpp>
+
namespace sub {
class Subtitle;
}
class Image;
+
class TextDecoder : public DecoderPart
{
public:
TextDecoder (
Decoder* parent,
- boost::shared_ptr<const TextContent>,
- boost::shared_ptr<Log> log,
- ContentTime first
+ std::shared_ptr<const TextContent>,
+ dcpomatic::ContentTime first
);
- ContentTime position () const {
+ boost::optional<dcpomatic::ContentTime> position (std::shared_ptr<const Film>) const {
return _position;
}
- void emit_bitmap_start (ContentTime from, boost::shared_ptr<Image> image, dcpomatic::Rect<double> rect);
- void emit_plain_start (ContentTime from, std::list<dcp::SubtitleString> s);
- void emit_plain_start (ContentTime from, sub::Subtitle const & subtitle);
- void emit_plain (ContentTimePeriod period, std::list<dcp::SubtitleString> s);
- void emit_plain (ContentTimePeriod period, sub::Subtitle const & subtitle);
- void emit_stop (ContentTime to);
+ void emit_bitmap_start (dcpomatic::ContentTime from, std::shared_ptr<const Image> image, dcpomatic::Rect<double> rect);
+ void emit_bitmap (dcpomatic::ContentTimePeriod period, std::shared_ptr<const Image> image, dcpomatic::Rect<double> rect);
+ void emit_plain_start (dcpomatic::ContentTime from, std::list<dcp::SubtitleString> s);
+ void emit_plain_start (dcpomatic::ContentTime from, sub::Subtitle const & subtitle);
+ void emit_plain (dcpomatic::ContentTimePeriod period, std::list<dcp::SubtitleString> s);
+ void emit_plain (dcpomatic::ContentTimePeriod period, sub::Subtitle const & subtitle);
+ void emit_stop (dcpomatic::ContentTime to);
void seek ();
- boost::shared_ptr<const TextContent> content () const {
+ std::shared_ptr<const TextContent> content () const {
return _content;
}
boost::signals2::signal<void (ContentBitmapText)> BitmapStart;
boost::signals2::signal<void (ContentStringText)> PlainStart;
- boost::signals2::signal<void (ContentTime)> Stop;
+ boost::signals2::signal<void (dcpomatic::ContentTime)> Stop;
private:
- boost::shared_ptr<const TextContent> _content;
- ContentTime _position;
+ std::shared_ptr<const TextContent> _content;
+ boost::optional<dcpomatic::ContentTime> _position;
};
+
#endif