#include "text_subtitle_decoder.h"
#include "text_subtitle_content.h"
+#include "subtitle_content.h"
#include <dcp/subtitle_string.h>
#include <boost/foreach.hpp>
#include <iostream>
using boost::dynamic_pointer_cast;
TextSubtitleDecoder::TextSubtitleDecoder (shared_ptr<const TextSubtitleContent> content)
- : SubtitleDecoder (content)
- , 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) {
/* XXX: we are ignoring positioning specified in the file */
- shared_ptr<const TextSubtitleContent> content = dynamic_pointer_cast<const TextSubtitleContent> (_subtitle_content);
- DCPOMATIC_ASSERT (content);
-
list<dcp::SubtitleString> out;
/* Highest line index in this subtitle */
dcp::SubtitleString (
TextSubtitleContent::font_id,
j.italic,
+ j.bold,
/* force the colour to whatever is configured */
- content->colour(),
+ subtitle->content()->colour(),
j.font_size.points (72 * 11),
1.0,
dcp::Time (_subtitles[_next].from.all_as_seconds(), 1000),
*/
1.015 - ((1 + highest - i.vertical_position.line.get()) * 1.5 / 22),
dcp::VALIGN_TOP,
+ dcp::DIRECTION_LTR,
j.text,
- content->outline() ? dcp::BORDER : dcp::NONE,
- content->outline_colour(),
+ subtitle->content()->outline() ? dcp::BORDER : dcp::NONE,
+ subtitle->content()->outline_colour(),
dcp::Time (0, 1000),
dcp::Time (0, 1000)
)
}
}
- text_subtitle (content_time_period (_subtitles[_next]), out);
+ subtitle->text_subtitle (content_time_period (_subtitles[_next]), out);
++_next;
return false;