ISDCF name fixes with > 6 channels and HI/VI (#1633).
[dcpomatic.git] / src / lib / text_decoder.cc
index 56a7e1e1598a4853f80903b6e5aa69f54d87351d..4eaaf37af7cbd50b86ad2fdce8bfbc17253c88c3 100644 (file)
@@ -36,14 +36,14 @@ using std::min;
 using boost::shared_ptr;
 using boost::optional;
 using boost::function;
+using namespace dcpomatic;
 
 TextDecoder::TextDecoder (
        Decoder* parent,
        shared_ptr<const TextContent> c,
-       shared_ptr<Log> log,
        ContentTime first
        )
-       : DecoderPart (parent, log)
+       : DecoderPart (parent)
        , _content (c)
        , _position (first)
 {
@@ -58,14 +58,14 @@ TextDecoder::TextDecoder (
  *  of the video frame)
  */
 void
-TextDecoder::emit_image_start (ContentTime from, shared_ptr<Image> image, dcpomatic::Rect<double> rect)
+TextDecoder::emit_bitmap_start (ContentTime from, shared_ptr<Image> image, dcpomatic::Rect<double> rect)
 {
-       ImageStart (ContentImageSubtitle (from, image, rect));
+       BitmapStart (ContentBitmapText (from, image, rect));
        _position = from;
 }
 
 void
-TextDecoder::emit_text_start (ContentTime from, list<dcp::SubtitleString> s)
+TextDecoder::emit_plain_start (ContentTime from, list<dcp::SubtitleString> s)
 {
        BOOST_FOREACH (dcp::SubtitleString& i, s) {
                /* We must escape < and > in strings, otherwise they might confuse our subtitle
@@ -94,12 +94,12 @@ TextDecoder::emit_text_start (ContentTime from, list<dcp::SubtitleString> s)
                }
        }
 
-       TextStart (ContentTextSubtitle (from, s));
+       PlainStart (ContentStringText (from, s));
        _position = from;
 }
 
 void
-TextDecoder::emit_text_start (ContentTime from, sub::Subtitle const & subtitle)
+TextDecoder::emit_plain_start (ContentTime from, sub::Subtitle const & subtitle)
 {
        /* See if our next subtitle needs to be vertically placed on screen by us */
        bool needs_placement = false;
@@ -191,7 +191,7 @@ TextDecoder::emit_text_start (ContentTime from, sub::Subtitle const & subtitle)
 
                        /* The idea here (rightly or wrongly) is that we set the appearance based on the
                           values in the libsub objects, and these are overridden with values from the
-                          content by the other emit_text_start() above.
+                          content by the other emit_plain_start() above.
                        */
 
                        out.push_back (
@@ -227,7 +227,7 @@ TextDecoder::emit_text_start (ContentTime from, sub::Subtitle const & subtitle)
                }
        }
 
-       emit_text_start (from, out);
+       emit_plain_start (from, out);
 }
 
 void
@@ -237,16 +237,27 @@ TextDecoder::emit_stop (ContentTime to)
 }
 
 void
-TextDecoder::emit_text (ContentTimePeriod period, list<dcp::SubtitleString> s)
+TextDecoder::emit_plain (ContentTimePeriod period, list<dcp::SubtitleString> s)
 {
-       emit_text_start (period.from, s);
+       emit_plain_start (period.from, s);
        emit_stop (period.to);
 }
 
 void
-TextDecoder::emit_text (ContentTimePeriod period, sub::Subtitle const & s)
+TextDecoder::emit_plain (ContentTimePeriod period, sub::Subtitle const & s)
 {
-       emit_text_start (period.from, s);
+       emit_plain_start (period.from, s);
+       emit_stop (period.to);
+}
+
+/*  @param rect Area expressed as a fraction of the video frame that this subtitle
+ *  is for (e.g. a width of 0.5 means the width of the subtitle is half the width
+ *  of the video frame)
+ */
+void
+TextDecoder::emit_bitmap (ContentTimePeriod period, shared_ptr<Image> image, dcpomatic::Rect<double> rect)
+{
+       emit_bitmap_start (period.from, image, rect);
        emit_stop (period.to);
 }