summaryrefslogtreecommitdiff
path: root/src/lib/text_subtitle_decoder.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/text_subtitle_decoder.cc')
-rw-r--r--src/lib/text_subtitle_decoder.cc22
1 files changed, 14 insertions, 8 deletions
diff --git a/src/lib/text_subtitle_decoder.cc b/src/lib/text_subtitle_decoder.cc
index 94604cd71..f76bb7f75 100644
--- a/src/lib/text_subtitle_decoder.cc
+++ b/src/lib/text_subtitle_decoder.cc
@@ -34,17 +34,23 @@ using boost::optional;
using boost::dynamic_pointer_cast;
TextSubtitleDecoder::TextSubtitleDecoder (shared_ptr<const TextSubtitleContent> content)
- : SubtitleDecoder (content->subtitle)
- , TextSubtitle (content)
+ : TextSubtitle (content)
, _next (0)
{
-
+ subtitle.reset (
+ new SubtitleDecoder (
+ this,
+ content->subtitle,
+ bind (&TextSubtitleDecoder::image_subtitles_during, this, _1, _2),
+ bind (&TextSubtitleDecoder::text_subtitles_during, this, _1, _2)
+ )
+ );
}
void
TextSubtitleDecoder::seek (ContentTime time, bool accurate)
{
- SubtitleDecoder::seek (time, accurate);
+ subtitle->seek (time, accurate);
_next = 0;
while (_next < _subtitles.size() && ContentTime::from_seconds (_subtitles[_next].from.all_as_seconds ()) < time) {
@@ -79,7 +85,7 @@ TextSubtitleDecoder::pass (PassReason, bool)
j.italic,
j.bold,
/* force the colour to whatever is configured */
- _subtitle_content->colour(),
+ subtitle->content()->colour(),
j.font_size.points (72 * 11),
1.0,
dcp::Time (_subtitles[_next].from.all_as_seconds(), 1000),
@@ -93,8 +99,8 @@ TextSubtitleDecoder::pass (PassReason, bool)
dcp::VALIGN_TOP,
dcp::DIRECTION_LTR,
j.text,
- _subtitle_content->outline() ? dcp::BORDER : dcp::NONE,
- _subtitle_content->outline_colour(),
+ subtitle->content()->outline() ? dcp::BORDER : dcp::NONE,
+ subtitle->content()->outline_colour(),
dcp::Time (0, 1000),
dcp::Time (0, 1000)
)
@@ -102,7 +108,7 @@ TextSubtitleDecoder::pass (PassReason, bool)
}
}
- text_subtitle (content_time_period (_subtitles[_next]), out);
+ subtitle->text_subtitle (content_time_period (_subtitles[_next]), out);
++_next;
return false;