Update xml_subtitle_test result now that subtitles are being compared; improve placem...
authorCarl Hetherington <cth@carlh.net>
Sun, 21 Dec 2014 01:50:07 +0000 (01:50 +0000)
committerCarl Hetherington <cth@carlh.net>
Sun, 21 Dec 2014 01:50:07 +0000 (01:50 +0000)
src/lib/subrip_decoder.cc

index ea8997e31aab9667f76a5f305a5f01121eee181e..ed154ebf5b89ff7fa3a44666f5d2c8ac4d12d5bc 100644 (file)
@@ -53,22 +53,34 @@ SubRipDecoder::pass ()
                return true;
        }
 
-       /* XXX: we are ignoring positioning specified in the file */
-       
        list<dcp::SubtitleString> out;
        for (list<sub::Line>::const_iterator i = _subtitles[_next].lines.begin(); i != _subtitles[_next].lines.end(); ++i) {
                for (list<sub::Block>::const_iterator j = i->blocks.begin(); j != i->blocks.end(); ++j) {
+
+                       dcp::VAlign va = dcp::TOP;
+                       if (i->vertical_position.reference) {
+                               switch (i->vertical_position.reference.get ()) {
+                               case sub::TOP_OF_SCREEN:
+                                       va = dcp::TOP;
+                                       break;
+                               case sub::CENTRE_OF_SCREEN:
+                                       va = dcp::CENTER;
+                                       break;
+                               case sub::BOTTOM_OF_SCREEN:
+                                       va = dcp::BOTTOM;
+                               }
+                       }
+                       
                        out.push_back (
                                dcp::SubtitleString (
                                        SubRipContent::font_id,
                                        j->italic,
                                        dcp::Color (255, 255, 255),
-                                       /* .srt files don't specify size, so this is an arbitrary value */
-                                       48,
+                                       j->font_size,
                                        dcp::Time (rint (_subtitles[_next].from.metric().get().all_as_milliseconds() / 4)),
                                        dcp::Time (rint (_subtitles[_next].to.metric().get().all_as_milliseconds() / 4)),
                                        i->vertical_position.line.get() * (1.5 / 22) + 0.8,
-                                       dcp::TOP,
+                                       va,
                                        j->text,
                                        dcp::NONE,
                                        dcp::Color (255, 255, 255),