diff options
| author | Carl Hetherington <cth@carlh.net> | 2012-08-21 22:23:13 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2012-08-21 22:23:13 +0100 |
| commit | df6ed597b720399f02e7b75a7cf448d0956c89a1 (patch) | |
| tree | 53fcd9862ea0e9eb5abd5b4d883d1a5c03735158 | |
| parent | b627827aaa5a314b53fe0f8b0429dee8b542ccb3 (diff) | |
Vertical align.
| -rw-r--r-- | src/subtitle_asset.cc | 12 | ||||
| -rw-r--r-- | src/subtitle_asset.h | 7 | ||||
| -rw-r--r-- | src/types.h | 7 | ||||
| -rw-r--r-- | test/tests.cc | 5 |
4 files changed, 31 insertions, 0 deletions
diff --git a/src/subtitle_asset.cc b/src/subtitle_asset.cc index 827fbf7d..9a3e3bbc 100644 --- a/src/subtitle_asset.cc +++ b/src/subtitle_asset.cc @@ -65,6 +65,7 @@ SubtitleAsset::examine_font_node (shared_ptr<FontNode> font_node, list<shared_pt (*j)->in, (*j)->out, (*k)->v_position, + (*k)->v_align, (*k)->text, effective.effect.get(), effective.effect_color.get() @@ -149,9 +150,18 @@ SubtitleNode::SubtitleNode (xmlpp::Node const * node) TextNode::TextNode (xmlpp::Node const * node) : XMLNode (node) + , v_align (CENTER) { text = content (); v_position = float_attribute ("VPosition"); + string const v = optional_string_attribute ("VAlign"); + if (v == "top") { + v_align = TOP; + } else if (v == "center") { + v_align = CENTER; + } else if (v == "bottom") { + v_align = BOTTOM; + } } list<shared_ptr<Subtitle> > @@ -194,6 +204,7 @@ Subtitle::Subtitle ( Time in, Time out, float v_position, + VAlign v_align, string text, Effect effect, Color effect_color @@ -205,6 +216,7 @@ Subtitle::Subtitle ( , _in (in) , _out (out) , _v_position (v_position) + , _v_align (v_align) , _text (text) , _effect (effect) , _effect_color (effect_color) diff --git a/src/subtitle_asset.h b/src/subtitle_asset.h index aff3dae5..d272957e 100644 --- a/src/subtitle_asset.h +++ b/src/subtitle_asset.h @@ -31,6 +31,7 @@ public: TextNode (xmlpp::Node const * node); float v_position; + VAlign v_align; std::string text; }; @@ -84,6 +85,7 @@ public: Time in, Time out, float v_position, + VAlign v_align, std::string text, Effect effect, Color effect_color @@ -117,6 +119,10 @@ public: return _v_position; } + VAlign v_align () const { + return _v_align; + } + Effect effect () const { return _effect; } @@ -135,6 +141,7 @@ private: Time _in; Time _out; float _v_position; + VAlign _v_align; std::string _text; Effect _effect; Color _effect_color; diff --git a/src/types.h b/src/types.h index c49c5f8f..280c60cd 100644 --- a/src/types.h +++ b/src/types.h @@ -57,6 +57,13 @@ enum Effect BORDER, SHADOW }; + +enum VAlign +{ + TOP, + CENTER, + BOTTOM +}; class Fraction { diff --git a/test/tests.cc b/test/tests.cc index a03e2f68..c47e8938 100644 --- a/test/tests.cc +++ b/test/tests.cc @@ -128,6 +128,7 @@ BOOST_AUTO_TEST_CASE (subtitles) BOOST_CHECK_EQUAL (s.front()->size_in_pixels(1080), 53); BOOST_CHECK_EQUAL (s.front()->effect(), libdcp::BORDER); BOOST_CHECK_EQUAL (s.front()->effect_color(), libdcp::Color(0, 0, 0)); + BOOST_CHECK_EQUAL (s.front()->v_align(), libdcp::BOTTOM); s = subs.subtitles_at (libdcp::Time (0, 0, 7, 190)); BOOST_CHECK_EQUAL (s.size(), 2); @@ -140,6 +141,7 @@ BOOST_AUTO_TEST_CASE (subtitles) BOOST_CHECK_EQUAL (s.front()->size_in_pixels(1080), 53); BOOST_CHECK_EQUAL (s.front()->effect(), libdcp::BORDER); BOOST_CHECK_EQUAL (s.front()->effect_color(), libdcp::Color(0, 0, 0)); + BOOST_CHECK_EQUAL (s.front()->v_align(), libdcp::BOTTOM); BOOST_CHECK_EQUAL (s.back()->text(), "My large wonderbra"); BOOST_CHECK_EQUAL (s.back()->v_position(), 15); BOOST_CHECK_EQUAL (s.back()->in(), libdcp::Time (0, 0, 7, 177)); @@ -150,6 +152,7 @@ BOOST_AUTO_TEST_CASE (subtitles) BOOST_CHECK_EQUAL (s.back()->size_in_pixels(1080), 53); BOOST_CHECK_EQUAL (s.back()->effect(), libdcp::BORDER); BOOST_CHECK_EQUAL (s.back()->effect_color(), libdcp::Color(0, 0, 0)); + BOOST_CHECK_EQUAL (s.back()->v_align(), libdcp::BOTTOM); s = subs.subtitles_at (libdcp::Time (0, 0, 11, 95)); BOOST_CHECK_EQUAL (s.size(), 1); @@ -163,6 +166,7 @@ BOOST_AUTO_TEST_CASE (subtitles) BOOST_CHECK_EQUAL (s.front()->size_in_pixels(1080), 53); BOOST_CHECK_EQUAL (s.front()->effect(), libdcp::BORDER); BOOST_CHECK_EQUAL (s.front()->effect_color(), libdcp::Color(0, 0, 0)); + BOOST_CHECK_EQUAL (s.front()->v_align(), libdcp::BOTTOM); s = subs.subtitles_at (libdcp::Time (0, 0, 14, 42)); BOOST_CHECK_EQUAL (s.size(), 1); @@ -176,6 +180,7 @@ BOOST_AUTO_TEST_CASE (subtitles) BOOST_CHECK_EQUAL (s.front()->size_in_pixels(1080), 53); BOOST_CHECK_EQUAL (s.front()->effect(), libdcp::BORDER); BOOST_CHECK_EQUAL (s.front()->effect_color(), libdcp::Color(0, 0, 0)); + BOOST_CHECK_EQUAL (s.front()->v_align(), libdcp::BOTTOM); } BOOST_AUTO_TEST_CASE (dcp_time) |
