(*j)->out,
(*k)->v_position,
(*k)->text,
- effective.effect,
+ effective.effect.get(),
effective.effect_color.get()
)
)
size = optional_int64_attribute ("Size");
italic = optional_bool_attribute ("Italic");
color = optional_color_attribute ("Color");
- effect = optional_string_attribute ("Effect");
+ string const e = optional_string_attribute ("Effect");
+ if (e == "none") {
+ effect = NONE;
+ } else if (e == "border") {
+ effect = BORDER;
+ } else if (e == "shadow") {
+ effect = SHADOW;
+ } else if (!e.empty ()) {
+ throw DCPReadError ("unknown subtitle effect type");
+ }
effect_color = optional_color_attribute ("EffectColor");
subtitle_nodes = sub_nodes<SubtitleNode> ("Subtitle");
font_nodes = sub_nodes<FontNode> ("Font");
: size (0)
, italic (false)
, color ("FFFFFFFF")
+ , effect_color ("FFFFFFFF")
{
for (list<shared_ptr<FontNode> >::const_iterator i = font_nodes.begin(); i != font_nodes.end(); ++i) {
if (!(*i)->id.empty ()) {
if ((*i)->color) {
color = (*i)->color.get ();
}
- if (!(*i)->effect.empty ()) {
- effect = (*i)->effect;
+ if ((*i)->effect) {
+ effect = (*i)->effect.get ();
}
if ((*i)->effect_color) {
effect_color = (*i)->effect_color.get ();
Time out,
float v_position,
string text,
- string effect,
+ Effect effect,
Color effect_color
)
: _font (font)
BOOST_CHECK_EQUAL (s.front()->italic(), false);
BOOST_CHECK_EQUAL (s.front()->color(), libdcp::Color(255, 255, 255));
BOOST_CHECK_EQUAL (s.front()->size_in_pixels(1080), 53);
- BOOST_CHECK_EQUAL (s.front()->effect(), "border");
+ BOOST_CHECK_EQUAL (s.front()->effect(), libdcp::BORDER);
BOOST_CHECK_EQUAL (s.front()->effect_color(), libdcp::Color(0, 0, 0));
s = subs.subtitles_at (libdcp::Time (0, 0, 7, 190));
BOOST_CHECK_EQUAL (s.front()->font(), "Arial");
BOOST_CHECK_EQUAL (s.front()->italic(), true);
BOOST_CHECK_EQUAL (s.front()->size_in_pixels(1080), 53);
- BOOST_CHECK_EQUAL (s.front()->effect(), "border");
+ BOOST_CHECK_EQUAL (s.front()->effect(), libdcp::BORDER);
BOOST_CHECK_EQUAL (s.front()->effect_color(), libdcp::Color(0, 0, 0));
BOOST_CHECK_EQUAL (s.back()->text(), "My large wonderbra");
BOOST_CHECK_EQUAL (s.back()->v_position(), 15);
BOOST_CHECK_EQUAL (s.back()->italic(), true);
BOOST_CHECK_EQUAL (s.back()->color(), libdcp::Color(255, 255, 255));
BOOST_CHECK_EQUAL (s.back()->size_in_pixels(1080), 53);
- BOOST_CHECK_EQUAL (s.back()->effect(), "border");
+ BOOST_CHECK_EQUAL (s.back()->effect(), libdcp::BORDER);
BOOST_CHECK_EQUAL (s.back()->effect_color(), libdcp::Color(0, 0, 0));
s = subs.subtitles_at (libdcp::Time (0, 0, 11, 95));
BOOST_CHECK_EQUAL (s.front()->italic(), false);
BOOST_CHECK_EQUAL (s.front()->color(), libdcp::Color(255, 255, 255));
BOOST_CHECK_EQUAL (s.front()->size_in_pixels(1080), 53);
- BOOST_CHECK_EQUAL (s.front()->effect(), "border");
+ BOOST_CHECK_EQUAL (s.front()->effect(), libdcp::BORDER);
BOOST_CHECK_EQUAL (s.front()->effect_color(), libdcp::Color(0, 0, 0));
s = subs.subtitles_at (libdcp::Time (0, 0, 14, 42));
BOOST_CHECK_EQUAL (s.front()->italic(), false);
BOOST_CHECK_EQUAL (s.front()->color(), libdcp::Color(255, 255, 255));
BOOST_CHECK_EQUAL (s.front()->size_in_pixels(1080), 53);
- BOOST_CHECK_EQUAL (s.front()->effect(), "border");
+ BOOST_CHECK_EQUAL (s.front()->effect(), libdcp::BORDER);
BOOST_CHECK_EQUAL (s.front()->effect_color(), libdcp::Color(0, 0, 0));
}