Rename some variables.
[dcpomatic.git] / src / lib / text_decoder.cc
index 88cf4bc56e492da0aefbf320fdbe21fc0220bba6..d485ef64b837e03bee5261cc5f21923a216bafb6 100644 (file)
@@ -67,35 +67,48 @@ TextDecoder::emit_bitmap_start (ContentBitmapText const& bitmap)
 }
 
 
+static
+string
+escape_text (string text)
+{
+       /* We must escape some things, otherwise they might confuse our subtitle
+          renderer (which uses entities and some HTML-esque markup to do bold/italic etc.)
+       */
+       boost::algorithm::replace_all(text, "&", "&");
+       boost::algorithm::replace_all(text, "<", "&lt;");
+       boost::algorithm::replace_all(text, ">", "&gt;");
+       return text;
+}
+
+
+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) {
-               /* We must escape some things, otherwise they might confuse our subtitle
-                  renderer (which uses entities and some HTML-esque markup to do bold/italic etc.)
-               */
-               string text = subtitle.text();
-               boost::algorithm::replace_all(text, "&", "&amp;");
-               boost::algorithm::replace_all(text, "<", "&lt;");
-               boost::algorithm::replace_all(text, ">", "&gt;");
-               subtitle.set_text (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));
-               }
+               subtitle.set_text(escape_text(subtitle.text()));
+               set_forced_appearance(content(), subtitle);
        }
 
        PlainStart(ContentStringText(from, subtitles));
@@ -104,12 +117,12 @@ TextDecoder::emit_plain_start (ContentTime from, vector<dcp::SubtitleString> sub
 
 
 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()) {
@@ -120,7 +133,7 @@ TextDecoder::emit_plain_start (ContentTime from, sub::Subtitle const & subtitle)
 
        /* 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;
@@ -130,8 +143,8 @@ TextDecoder::emit_plain_start (ContentTime from, sub::Subtitle const & subtitle)
                }
        }
 
-       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()) {
@@ -220,7 +233,7 @@ TextDecoder::emit_plain_start (ContentTime from, sub::Subtitle const & subtitle)
                           content by the other emit_plain_start() above.
                        */
 
-                       out.push_back (
+                       dcp_subtitles.push_back(
                                dcp::SubtitleString (
                                        string(TEXT_FONT_ID),
                                        block.italic,
@@ -255,7 +268,7 @@ TextDecoder::emit_plain_start (ContentTime from, sub::Subtitle const & subtitle)
        }
 
        /* 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);
 }