}
+static
+void
+set_forced_appearance(shared_ptr<const TextContent> content, dcp::SubtitleString& subtitle)
+{
+ if (content->colour()) {
+ subtitle.set_colour(*content->colour());
+ }
+ if (content->effect_colour()) {
+ subtitle.set_effect_colour(*content->effect_colour());
+ }
+ if (content->effect()) {
+ subtitle.set_effect(*content->effect());
+ }
+ if (content->fade_in()) {
+ subtitle.set_fade_up_time(dcp::Time(content->fade_in()->seconds(), 1000));
+ }
+ if (content->fade_out()) {
+ subtitle.set_fade_down_time (dcp::Time(content->fade_out()->seconds(), 1000));
+ }
+}
+
+
void
TextDecoder::emit_plain_start (ContentTime from, vector<dcp::SubtitleString> subtitles)
{
for (auto& subtitle: subtitles) {
subtitle.set_text(escape_text(subtitle.text()));
-
- /* Set any forced appearance */
- if (content()->colour()) {
- subtitle.set_colour(*content()->colour());
- }
- if (content()->effect_colour()) {
- subtitle.set_effect_colour(*content()->effect_colour());
- }
- if (content()->effect()) {
- subtitle.set_effect(*content()->effect());
- }
- if (content()->fade_in()) {
- subtitle.set_fade_up_time(dcp::Time(content()->fade_in()->seconds(), 1000));
- }
- if (content()->fade_out()) {
- subtitle.set_fade_down_time (dcp::Time(content()->fade_out()->seconds(), 1000));
- }
+ set_forced_appearance(content(), subtitle);
}
PlainStart(ContentStringText(from, subtitles));
void
-TextDecoder::emit_plain_start (ContentTime from, sub::Subtitle const & subtitle)
+TextDecoder::emit_plain_start (ContentTime from, sub::Subtitle const & sub_subtitle)
{
/* See if our next subtitle needs to be vertically placed on screen by us */
bool needs_placement = false;
optional<int> bottom_line;
- for (auto line: subtitle.lines) {
+ for (auto line: sub_subtitle.lines) {
if (!line.vertical_position.reference || (line.vertical_position.line && !line.vertical_position.lines) || line.vertical_position.reference.get() == sub::TOP_OF_SUBTITLE) {
needs_placement = true;
if (!bottom_line || bottom_line.get() < line.vertical_position.line.get()) {
/* Find the lowest proportional position */
optional<float> lowest_proportional;
- for (auto line: subtitle.lines) {
+ for (auto line: sub_subtitle.lines) {
if (line.vertical_position.proportional) {
if (!lowest_proportional) {
lowest_proportional = line.vertical_position.proportional;
}
}
- vector<dcp::SubtitleString> out;
- for (auto line: subtitle.lines) {
+ vector<dcp::SubtitleString> dcp_subtitles;
+ for (auto line: sub_subtitle.lines) {
for (auto block: line.blocks) {
if (!block.font_size.specified()) {
content by the other emit_plain_start() above.
*/
- out.push_back (
+ dcp_subtitles.push_back(
dcp::SubtitleString (
string(TEXT_FONT_ID),
block.italic,
}
/* Pass these subs through the other emit_plain_start so that they get their forced settings applied */
- emit_plain_start (from, out);
+ emit_plain_start (from, dcp_subtitles);
}