diff options
| author | Carl Hetherington <cth@carlh.net> | 2017-07-28 17:04:03 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2017-07-28 17:04:03 +0100 |
| commit | a8364241532c0c4b064c30d6151f1a248a27e467 (patch) | |
| tree | 1abae29c6c4320b5334f5ac8ff0d3cc4b6b7dce7 /src/lib/subtitle_decoder.cc | |
| parent | a1f9c20f7f1cb7811504bf092360dee92de93b0a (diff) | |
Support more detailed horizontal positioning coming from libsub.
Diffstat (limited to 'src/lib/subtitle_decoder.cc')
| -rw-r--r-- | src/lib/subtitle_decoder.cc | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/src/lib/subtitle_decoder.cc b/src/lib/subtitle_decoder.cc index 4e68e4a79..a3eed6374 100644 --- a/src/lib/subtitle_decoder.cc +++ b/src/lib/subtitle_decoder.cc @@ -81,7 +81,7 @@ SubtitleDecoder::emit_text_start (ContentTime from, list<dcp::SubtitleString> s) void SubtitleDecoder::emit_text_start (ContentTime from, sub::Subtitle const & subtitle) { - /* See if our next subtitle needs to be placed on screen by us */ + /* See if our next subtitle needs to be vertically placed on screen by us */ bool needs_placement = false; optional<int> bottom_line; BOOST_FOREACH (sub::Line i, subtitle.lines) { @@ -141,7 +141,7 @@ SubtitleDecoder::emit_text_start (ContentTime from, sub::Subtitle const & subtit case sub::TOP_OF_SCREEN: v_align = dcp::VALIGN_TOP; break; - case sub::CENTRE_OF_SCREEN: + case sub::VERTICAL_CENTRE_OF_SCREEN: v_align = dcp::VALIGN_CENTER; break; case sub::BOTTOM_OF_SCREEN: @@ -160,6 +160,19 @@ SubtitleDecoder::emit_text_start (ContentTime from, sub::Subtitle const & subtit effect = dcp::SHADOW; } + dcp::HAlign h_align; + switch (i.horizontal_position.reference) { + case sub::LEFT_OF_SCREEN: + h_align = dcp::HALIGN_LEFT; + break; + case sub::HORIZONTAL_CENTRE_OF_SCREEN: + h_align = dcp::HALIGN_CENTER; + break; + case sub::RIGHT_OF_SCREEN: + h_align = dcp::HALIGN_RIGHT; + break; + } + out.push_back ( dcp::SubtitleString ( string(TEXT_FONT_ID), @@ -173,8 +186,8 @@ SubtitleDecoder::emit_text_start (ContentTime from, sub::Subtitle const & subtit dcp::Time (from.seconds(), 1000), /* XXX: hmm; this is a bit ugly (we don't know the to time yet) */ dcp::Time (), - 0, - dcp::HALIGN_CENTER, + i.horizontal_position.proportional, + h_align, v_position, v_align, dcp::DIRECTION_LTR, |
