#define DCPOMATIC_CAPTION_DECODER_H
+#include "content_text.h"
#include "decoder.h"
+#include "decoder_part.h"
#include "rect.h"
-#include "types.h"
#include "content_text.h"
-#include "decoder_part.h"
+#include "types.h"
+#include <dcp/subtitle_standard.h>
#include <dcp/subtitle_string.h>
#include <boost/signals2.hpp>
class TextDecoder : public DecoderPart
{
public:
- TextDecoder (
- Decoder* parent,
- std::shared_ptr<const TextContent>,
- dcpomatic::ContentTime first
- );
+ TextDecoder (Decoder* parent, std::shared_ptr<const TextContent>);
- boost::optional<dcpomatic::ContentTime> position (std::shared_ptr<const Film>) const {
+ boost::optional<dcpomatic::ContentTime> position (std::shared_ptr<const Film>) const override {
return _position;
}
- void emit_bitmap_start (dcpomatic::ContentTime from, std::shared_ptr<const Image> image, dcpomatic::Rect<double> rect);
+ void emit_bitmap_start (ContentBitmapText const& bitmap);
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, std::vector<dcp::SubtitleString> s, dcp::SubtitleStandard valign_standard);
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, std::vector<dcp::SubtitleString> s, dcp::SubtitleStandard valign_standard);
void emit_plain (dcpomatic::ContentTimePeriod period, sub::Subtitle const & subtitle);
void emit_stop (dcpomatic::ContentTime to);
- void seek ();
+ void maybe_set_position (dcpomatic::ContentTime position);
+
+ void seek () override;
std::shared_ptr<const TextContent> content () const {
return _content;
}
+ static std::string remove_invalid_characters_for_xml(std::string text);
+
boost::signals2::signal<void (ContentBitmapText)> BitmapStart;
boost::signals2::signal<void (ContentStringText)> PlainStart;
boost::signals2::signal<void (dcpomatic::ContentTime)> Stop;