#include <boost/test/unit_test.hpp>
-using std::make_shared;
-using std::string;
-using std::shared_ptr;
using std::dynamic_pointer_cast;
+using std::shared_ptr;
+using std::string;
using std::vector;
using boost::optional;
{
dcp::SMPTESubtitleAsset subs;
subs.add(
- make_shared<dcp::SubtitleString>(
+ std::make_shared<dcp::SubtitleString>(
optional<string>(),
false, false, false,
dcp::Colour(),
dcp::HAlign::CENTER,
0.5,
dcp::VAlign::CENTER,
+ 0,
dcp::Direction::LTR,
"Hello",
dcp::Effect::NONE,
dcp::Colour(),
dcp::Time(0, 0, 0, 0, 24),
dcp::Time(0, 0, 0, 0, 24),
- 0
+ 0,
+ std::vector<dcp::Ruby>()
)
);
subs.write("build/test/smpte_subtitle_id_test.mxf");
BOOST_CHECK_EQUAL (sc.time_code_rate(), 25);
BOOST_CHECK_EQUAL (sc.start_time(), dcp::Time (0, 0, 0, 0, 25));
auto lfn = sc.load_font_nodes ();
- BOOST_REQUIRE_EQUAL (lfn.size(), 1);
+ BOOST_REQUIRE_EQUAL (lfn.size(), 1U);
shared_ptr<dcp::SMPTELoadFontNode> smpte_lfn = dynamic_pointer_cast<dcp::SMPTELoadFontNode> (lfn.front ());
BOOST_REQUIRE (smpte_lfn);
BOOST_CHECK_EQUAL (smpte_lfn->id, "theFontId");
BOOST_CHECK_EQUAL (smpte_lfn->urn, "9118bbce-4105-4a05-b37c-a5a6f75e1fea");
- BOOST_REQUIRE_EQUAL (sc.subtitles().size(), 63);
+ BOOST_REQUIRE_EQUAL (sc.subtitles().size(), 63U);
BOOST_REQUIRE (dynamic_pointer_cast<const dcp::SubtitleString>(sc.subtitles().front()));
BOOST_CHECK_EQUAL (dynamic_pointer_cast<const dcp::SubtitleString>(sc.subtitles().front())->text(), "Noch mal.");
BOOST_CHECK_EQUAL (dynamic_pointer_cast<const dcp::SubtitleString>(sc.subtitles().front())->space_before(), 0.0f);
dcp::SMPTESubtitleAsset sc (private_test / "olsson.xml");
auto subs = sc.subtitles();
- BOOST_REQUIRE_EQUAL (subs.size(), 6);
+ BOOST_REQUIRE_EQUAL (subs.size(), 6U);
auto i = 0;
auto is = dynamic_pointer_cast<const dcp::SubtitleString>(subs[i]);
BOOST_REQUIRE (is);
c.set_issue_date (dcp::LocalTime ("2016-04-01T03:52:00+00:00"));
c.add (
- make_shared<dcp::SubtitleString> (
+ std::make_shared<dcp::SubtitleString> (
string ("Frutiger"),
false,
false,
dcp::HAlign::CENTER,
0.8,
dcp::VAlign::TOP,
+ 0.3,
dcp::Direction::LTR,
"Hello world",
dcp::Effect::NONE,
dcp::Colour (0, 0, 0),
dcp::Time (0, 0, 0, 0, 24),
dcp::Time (0, 0, 0, 0, 24),
- 0
+ 0,
+ std::vector<dcp::Ruby>()
)
);
c.add (
- make_shared<dcp::SubtitleString>(
+ std::make_shared<dcp::SubtitleString>(
boost::optional<string> (),
true,
true,
dcp::HAlign::CENTER,
0.4,
dcp::VAlign::BOTTOM,
+ 0,
dcp::Direction::RTL,
"What's going ",
dcp::Effect::BORDER,
dcp::Colour (1, 2, 3),
dcp::Time (1, 2, 3, 4, 24),
dcp::Time (5, 6, 7, 8, 24),
- 0
+ 0,
+ std::vector<dcp::Ruby>()
)
);
c.add (
- make_shared<dcp::SubtitleString>(
+ std::make_shared<dcp::SubtitleString>(
boost::optional<string> (),
true,
true,
dcp::HAlign::CENTER,
0.4,
dcp::VAlign::BOTTOM,
+ 0,
dcp::Direction::RTL,
"on",
dcp::Effect::BORDER,
dcp::Colour (1, 2, 3),
dcp::Time (1, 2, 3, 4, 24),
dcp::Time (5, 6, 7, 8, 24),
- 4.2
+ 4.2,
+ std::vector<dcp::Ruby>()
)
);
c._xml_id = "a6c58cff-3e1e-4b38-acec-a42224475ef6";
check_xml (
- "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
- "<SubtitleReel xmlns=\"http://www.smpte-ra.org/schemas/428-7/2010/DCST\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">"
- "<Id>urn:uuid:a6c58cff-3e1e-4b38-acec-a42224475ef6</Id>"
- "<ContentTitleText>Test</ContentTitleText>"
- "<IssueDate>2016-04-01T03:52:00.000+00:00</IssueDate>"
- "<ReelNumber>1</ReelNumber>"
- "<Language>en</Language>"
- "<EditRate>24 1</EditRate>"
- "<TimeCodeRate>24</TimeCodeRate>"
- "<SubtitleList>"
- "<Font AspectAdjust=\"1.0\" Color=\"FFFFFFFF\" Effect=\"none\" EffectColor=\"FF000000\" ID=\"Frutiger\" Italic=\"no\" Script=\"normal\" Size=\"48\" Underline=\"no\" Weight=\"normal\">"
- "<Subtitle SpotNumber=\"1\" TimeIn=\"00:04:09:22\" TimeOut=\"00:04:11:22\" FadeUpTime=\"00:00:00:00\" FadeDownTime=\"00:00:00:00\">"
- "<Text Valign=\"top\" Vposition=\"80\">Hello world</Text>"
- "</Subtitle>"
- "</Font>"
- "<Font AspectAdjust=\"1.0\" Color=\"FF800040\" Effect=\"border\" EffectColor=\"FF010203\" Italic=\"yes\" Script=\"normal\" Size=\"91\" Underline=\"yes\" Weight=\"bold\">"
- "<Subtitle SpotNumber=\"2\" TimeIn=\"05:41:00:21\" TimeOut=\"06:12:15:21\" FadeUpTime=\"01:02:03:04\" FadeDownTime=\"05:06:07:08\">"
- "<Text Valign=\"bottom\" Vposition=\"40\" Direction=\"rtl\">What's going <Space Size=\"4.2\"/>on</Text>"
- "</Subtitle>"
- "</Font>"
- "</SubtitleList>"
+ "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
+ "<SubtitleReel xmlns=\"http://www.smpte-ra.org/schemas/428-7/2010/DCST\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">\n"
+ " <Id>urn:uuid:a6c58cff-3e1e-4b38-acec-a42224475ef6</Id>\n"
+ " <ContentTitleText>Test</ContentTitleText>\n"
+ " <IssueDate>2016-04-01T03:52:00</IssueDate>\n"
+ " <ReelNumber>1</ReelNumber>\n"
+ " <Language>en</Language>\n"
+ " <EditRate>24 1</EditRate>\n"
+ " <TimeCodeRate>24</TimeCodeRate>\n"
+ " <SubtitleList>\n"
+ " <Font AspectAdjust=\"1.0\" Color=\"FFFFFFFF\" Effect=\"none\" EffectColor=\"FF000000\" ID=\"Frutiger\" Italic=\"no\" Script=\"normal\" Size=\"48\" Underline=\"no\" Weight=\"normal\">\n"
+ " <Subtitle SpotNumber=\"1\" TimeIn=\"00:04:09:22\" TimeOut=\"00:04:11:22\" FadeUpTime=\"00:00:00:00\" FadeDownTime=\"00:00:00:00\">\n"
+ " <Text Valign=\"top\" Vposition=\"80\" Zposition=\"30\">Hello world</Text>\n"
+ " </Subtitle>\n"
+ " </Font>\n"
+ " <Font AspectAdjust=\"1.0\" Color=\"FF800040\" Effect=\"border\" EffectColor=\"FF010203\" Italic=\"yes\" Script=\"normal\" Size=\"91\" Underline=\"yes\" Weight=\"bold\">\n"
+ " <Subtitle SpotNumber=\"2\" TimeIn=\"05:41:00:21\" TimeOut=\"06:12:15:21\" FadeUpTime=\"01:02:03:04\" FadeDownTime=\"05:06:07:08\">\n"
+ " <Text Valign=\"bottom\" Vposition=\"40\" Direction=\"rtl\">What's going <Space Size=\"4.2\"/>on</Text>\n"
+ " </Subtitle>\n"
+ " </Font>\n"
+ " </SubtitleList>\n"
"</SubtitleReel>",
c.xml_as_string (),
vector<string>()
c.set_issue_date (dcp::LocalTime ("2016-04-01T03:52:00+00:00"));
c.add (
- make_shared<dcp::SubtitleString>(
+ std::make_shared<dcp::SubtitleString>(
string ("Arial"),
false,
false,
dcp::HAlign::CENTER,
0.8,
dcp::VAlign::TOP,
+ 0,
dcp::Direction::LTR,
"Testing is ",
dcp::Effect::NONE,
dcp::Colour (0, 0, 0),
dcp::Time (0, 0, 0, 0, 24),
dcp::Time (0, 0, 0, 0, 24),
- 0
+ 0,
+ std::vector<dcp::Ruby>()
)
);
c.add (
- make_shared<dcp::SubtitleString>(
+ std::make_shared<dcp::SubtitleString>(
string ("Arial"),
true,
false,
dcp::HAlign::CENTER,
0.8,
dcp::VAlign::TOP,
+ 0,
dcp::Direction::LTR,
"really",
dcp::Effect::NONE,
dcp::Colour (0, 0, 0),
dcp::Time (0, 0, 0, 0, 24),
dcp::Time (0, 0, 0, 0, 24),
- 0
+ 0,
+ std::vector<dcp::Ruby>()
)
);
c.add (
- make_shared<dcp::SubtitleString>(
+ std::make_shared<dcp::SubtitleString>(
string ("Arial"),
false,
false,
dcp::HAlign::CENTER,
0.8,
dcp::VAlign::TOP,
+ 0,
dcp::Direction::LTR,
" fun",
dcp::Effect::NONE,
dcp::Colour (0, 0, 0),
dcp::Time (0, 0, 0, 0, 24),
dcp::Time (0, 0, 0, 0, 24),
- 0
+ 0,
+ std::vector<dcp::Ruby>()
)
);
c.add (
- make_shared<dcp::SubtitleString>(
+ std::make_shared<dcp::SubtitleString>(
string ("Arial"),
false,
false,
dcp::HAlign::CENTER,
0.9,
dcp::VAlign::TOP,
+ 0,
dcp::Direction::LTR,
"This is the ",
dcp::Effect::NONE,
dcp::Colour (0, 0, 0),
dcp::Time (0, 0, 0, 0, 24),
dcp::Time (0, 0, 0, 0, 24),
- 0
+ 0,
+ std::vector<dcp::Ruby>()
)
);
c.add (
- make_shared<dcp::SubtitleString>(
+ std::make_shared<dcp::SubtitleString>(
string ("Arial"),
true,
false,
dcp::HAlign::CENTER,
0.9,
dcp::VAlign::TOP,
+ 0,
dcp::Direction::LTR,
"second",
dcp::Effect::NONE,
dcp::Colour (0, 0, 0),
dcp::Time (0, 0, 0, 0, 24),
dcp::Time (0, 0, 0, 0, 24),
- 0
+ 0,
+ std::vector<dcp::Ruby>()
)
);
c.add (
- make_shared<dcp::SubtitleString>(
+ std::make_shared<dcp::SubtitleString>(
string ("Arial"),
false,
false,
dcp::HAlign::CENTER,
0.9,
dcp::VAlign::TOP,
+ 0,
dcp::Direction::LTR,
" line",
dcp::Effect::NONE,
dcp::Colour (0, 0, 0),
dcp::Time (0, 0, 0, 0, 24),
dcp::Time (0, 0, 0, 0, 24),
- 0
+ 0,
+ std::vector<dcp::Ruby>()
)
);
check_xml (
c.xml_as_string(),
- "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
- "<SubtitleReel xmlns=\"http://www.smpte-ra.org/schemas/428-7/2010/DCST\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">"
- "<Id>urn:uuid:a6c58cff-3e1e-4b38-acec-a42224475ef6</Id>"
- "<ContentTitleText>Test</ContentTitleText>"
- "<IssueDate>2016-04-01T03:52:00.000+00:00</IssueDate>"
- "<ReelNumber>1</ReelNumber>"
- "<Language>en</Language>"
- "<EditRate>24 1</EditRate>"
- "<TimeCodeRate>24</TimeCodeRate>"
- "<SubtitleList>"
- "<Font AspectAdjust=\"1.0\" Color=\"FFFFFFFF\" Effect=\"none\" EffectColor=\"FF000000\" ID=\"Arial\" Script=\"normal\" Size=\"48\" Underline=\"no\" Weight=\"normal\">"
- "<Subtitle SpotNumber=\"1\" TimeIn=\"00:00:01:00\" TimeOut=\"00:00:09:00\" FadeUpTime=\"00:00:00:00\" FadeDownTime=\"00:00:00:00\">"
- "<Text Valign=\"top\" Vposition=\"80\">"
- "<Font Italic=\"no\">Testing is </Font>"
- "<Font Italic=\"yes\">really</Font>"
- "<Font Italic=\"no\"> fun</Font>"
- "</Text>"
- "<Text Valign=\"top\" Vposition=\"90\">"
- "<Font Italic=\"no\">This is the </Font>"
- "<Font Italic=\"yes\">second</Font>"
- "<Font Italic=\"no\"> line</Font>"
- "</Text>"
- "</Subtitle>"
- "</Font>"
- "</SubtitleList>"
+ "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
+ "<SubtitleReel xmlns=\"http://www.smpte-ra.org/schemas/428-7/2010/DCST\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">\n"
+ " <Id>urn:uuid:a6c58cff-3e1e-4b38-acec-a42224475ef6</Id>\n"
+ " <ContentTitleText>Test</ContentTitleText>\n"
+ " <IssueDate>2016-04-01T03:52:00</IssueDate>\n"
+ " <ReelNumber>1</ReelNumber>\n"
+ " <Language>en</Language>\n"
+ " <EditRate>24 1</EditRate>\n"
+ " <TimeCodeRate>24</TimeCodeRate>\n"
+ " <SubtitleList>\n"
+ " <Font AspectAdjust=\"1.0\" Color=\"FFFFFFFF\" Effect=\"none\" EffectColor=\"FF000000\" ID=\"Arial\" Script=\"normal\" Size=\"48\" Underline=\"no\" Weight=\"normal\">\n"
+ " <Subtitle SpotNumber=\"1\" TimeIn=\"00:00:01:00\" TimeOut=\"00:00:09:00\" FadeUpTime=\"00:00:00:00\" FadeDownTime=\"00:00:00:00\">\n"
+ " <Text Valign=\"top\" Vposition=\"80\"><Font Italic=\"no\">Testing is </Font><Font Italic=\"yes\">really</Font><Font Italic=\"no\"> fun</Font></Text>\n"
+ " <Text Valign=\"top\" Vposition=\"90\"><Font Italic=\"no\">This is the </Font><Font Italic=\"yes\">second</Font><Font Italic=\"no\"> line</Font></Text>\n"
+ " </Subtitle>\n"
+ " </Font>\n"
+ " </SubtitleList>\n"
"</SubtitleReel>",
vector<string>()
);
boost::filesystem::path const sub_image = "test/data/sub.png";
c.add (
- make_shared<dcp::SubtitleImage>(
+ std::make_shared<dcp::SubtitleImage>(
dcp::ArrayData(sub_image),
dcp::Time (0, 4, 9, 22, 24),
dcp::Time (0, 4, 11, 22, 24),
dcp::HAlign::CENTER,
0.8,
dcp::VAlign::TOP,
+ -88,
dcp::Time (0, 0, 0, 0, 24),
dcp::Time (0, 0, 0, 0, 24)
)
BOOST_CHECK (image->h_align() == dcp::HAlign::CENTER);
BOOST_CHECK_CLOSE (image->v_position(), 0.8, 1);
BOOST_CHECK (image->v_align() == dcp::VAlign::TOP);
+ BOOST_CHECK_EQUAL(image->z_position(), -88);
BOOST_CHECK (image->fade_up_time() == dcp::Time(0, 0, 0, 0, 24));
BOOST_CHECK (image->fade_down_time() == dcp::Time(0, 0, 0, 0, 24));
}
c.set_issue_date (dcp::LocalTime ("2016-04-01T03:52:00+00:00"));
c.add (
- make_shared<dcp::SubtitleString>(
+ std::make_shared<dcp::SubtitleString>(
string ("Arial"),
false,
false,
dcp::HAlign::CENTER,
0.8,
dcp::VAlign::TOP,
+ 0,
dcp::Direction::LTR,
"Top line",
dcp::Effect::NONE,
dcp::Colour (0, 0, 0),
dcp::Time (0, 0, 0, 0, 24),
dcp::Time (0, 0, 0, 0, 24),
- 0
+ 0,
+ std::vector<dcp::Ruby>()
)
);
c.add (
- make_shared<dcp::SubtitleString>(
+ std::make_shared<dcp::SubtitleString>(
string ("Arial"),
false,
false,
dcp::HAlign::CENTER,
0.9,
dcp::VAlign::TOP,
+ 0,
dcp::Direction::LTR,
"Bottom line",
dcp::Effect::NONE,
dcp::Colour (0, 0, 0),
dcp::Time (0, 0, 0, 0, 24),
dcp::Time (0, 0, 0, 0, 24),
- 0
+ 0,
+ std::vector<dcp::Ruby>()
)
);
check_xml (
c.xml_as_string(),
- "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
- "<SubtitleReel xmlns=\"http://www.smpte-ra.org/schemas/428-7/2010/DCST\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">"
- "<Id>urn:uuid:a6c58cff-3e1e-4b38-acec-a42224475ef6</Id>"
- "<ContentTitleText>Test</ContentTitleText>"
- "<IssueDate>2016-04-01T03:52:00.000+00:00</IssueDate>"
- "<ReelNumber>1</ReelNumber>"
- "<Language>en</Language>"
- "<EditRate>24 1</EditRate>"
- "<TimeCodeRate>24</TimeCodeRate>"
- "<SubtitleList>"
- "<Font AspectAdjust=\"1.0\" Color=\"FFFFFFFF\" Effect=\"none\" EffectColor=\"FF000000\" ID=\"Arial\" Italic=\"no\" Script=\"normal\" Size=\"48\" Underline=\"no\" Weight=\"normal\">"
- "<Subtitle SpotNumber=\"1\" TimeIn=\"00:00:01:00\" TimeOut=\"00:00:09:00\" FadeUpTime=\"00:00:00:00\" FadeDownTime=\"00:00:00:00\">"
- "<Text Valign=\"top\" Vposition=\"80\">Top line</Text>"
- "<Text Valign=\"top\" Vposition=\"90\">Bottom line</Text>"
- "</Subtitle>"
- "</Font>"
- "</SubtitleList>"
+ "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
+ "<SubtitleReel xmlns=\"http://www.smpte-ra.org/schemas/428-7/2010/DCST\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">\n"
+ " <Id>urn:uuid:a6c58cff-3e1e-4b38-acec-a42224475ef6</Id>\n"
+ " <ContentTitleText>Test</ContentTitleText>\n"
+ " <IssueDate>2016-04-01T03:52:00</IssueDate>\n"
+ " <ReelNumber>1</ReelNumber>\n"
+ " <Language>en</Language>\n"
+ " <EditRate>24 1</EditRate>\n"
+ " <TimeCodeRate>24</TimeCodeRate>\n"
+ " <SubtitleList>\n"
+ " <Font AspectAdjust=\"1.0\" Color=\"FFFFFFFF\" Effect=\"none\" EffectColor=\"FF000000\" ID=\"Arial\" Italic=\"no\" Script=\"normal\" Size=\"48\" Underline=\"no\" Weight=\"normal\">\n"
+ " <Subtitle SpotNumber=\"1\" TimeIn=\"00:00:01:00\" TimeOut=\"00:00:09:00\" FadeUpTime=\"00:00:00:00\" FadeDownTime=\"00:00:00:00\">\n"
+ " <Text Valign=\"top\" Vposition=\"80\">Top line</Text>\n"
+ " <Text Valign=\"top\" Vposition=\"90\">Bottom line</Text>\n"
+ " </Subtitle>\n"
+ " </Font>\n"
+ " </SubtitleList>\n"
"</SubtitleReel>",
{}
);
c.set_issue_date (dcp::LocalTime ("2016-04-01T03:52:00+00:00"));
c.add (
- make_shared<dcp::SubtitleString>(
+ std::make_shared<dcp::SubtitleString>(
string ("Arial"),
false,
false,
dcp::HAlign::CENTER,
0.8,
dcp::VAlign::BOTTOM,
+ 0,
dcp::Direction::LTR,
"Top line",
dcp::Effect::NONE,
dcp::Colour (0, 0, 0),
dcp::Time (0, 0, 0, 0, 24),
dcp::Time (0, 0, 0, 0, 24),
- 0
+ 0,
+ std::vector<dcp::Ruby>()
)
);
c.add (
- make_shared<dcp::SubtitleString>(
+ std::make_shared<dcp::SubtitleString>(
string ("Arial"),
false,
false,
dcp::HAlign::CENTER,
0.7,
dcp::VAlign::BOTTOM,
+ 0,
dcp::Direction::LTR,
"Bottom line",
dcp::Effect::NONE,
dcp::Colour (0, 0, 0),
dcp::Time (0, 0, 0, 0, 24),
dcp::Time (0, 0, 0, 0, 24),
- 0
+ 0,
+ std::vector<dcp::Ruby>()
)
);
check_xml (
c.xml_as_string(),
- "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
- "<SubtitleReel xmlns=\"http://www.smpte-ra.org/schemas/428-7/2010/DCST\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">"
- "<Id>urn:uuid:a6c58cff-3e1e-4b38-acec-a42224475ef6</Id>"
- "<ContentTitleText>Test</ContentTitleText>"
- "<IssueDate>2016-04-01T03:52:00.000+00:00</IssueDate>"
- "<ReelNumber>1</ReelNumber>"
- "<Language>en</Language>"
- "<EditRate>24 1</EditRate>"
- "<TimeCodeRate>24</TimeCodeRate>"
- "<SubtitleList>"
- "<Font AspectAdjust=\"1.0\" Color=\"FFFFFFFF\" Effect=\"none\" EffectColor=\"FF000000\" ID=\"Arial\" Italic=\"no\" Script=\"normal\" Size=\"48\" Underline=\"no\" Weight=\"normal\">"
- "<Subtitle SpotNumber=\"1\" TimeIn=\"00:00:01:00\" TimeOut=\"00:00:09:00\" FadeUpTime=\"00:00:00:00\" FadeDownTime=\"00:00:00:00\">"
- "<Text Valign=\"bottom\" Vposition=\"80\">Top line</Text>"
- "<Text Valign=\"bottom\" Vposition=\"70\">Bottom line</Text>"
- "</Subtitle>"
- "</Font>"
- "</SubtitleList>"
+ "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
+ "<SubtitleReel xmlns=\"http://www.smpte-ra.org/schemas/428-7/2010/DCST\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">\n"
+ " <Id>urn:uuid:a6c58cff-3e1e-4b38-acec-a42224475ef6</Id>\n"
+ " <ContentTitleText>Test</ContentTitleText>\n"
+ " <IssueDate>2016-04-01T03:52:00</IssueDate>\n"
+ " <ReelNumber>1</ReelNumber>\n"
+ " <Language>en</Language>\n"
+ " <EditRate>24 1</EditRate>\n"
+ " <TimeCodeRate>24</TimeCodeRate>\n"
+ " <SubtitleList>\n"
+ " <Font AspectAdjust=\"1.0\" Color=\"FFFFFFFF\" Effect=\"none\" EffectColor=\"FF000000\" ID=\"Arial\" Italic=\"no\" Script=\"normal\" Size=\"48\" Underline=\"no\" Weight=\"normal\">\n"
+ " <Subtitle SpotNumber=\"1\" TimeIn=\"00:00:01:00\" TimeOut=\"00:00:09:00\" FadeUpTime=\"00:00:00:00\" FadeDownTime=\"00:00:00:00\">\n"
+ " <Text Valign=\"bottom\" Vposition=\"80\">Top line</Text>\n"
+ " <Text Valign=\"bottom\" Vposition=\"70\">Bottom line</Text>\n"
+ " </Subtitle>\n"
+ " </Font>\n"
+ " </SubtitleList>\n"
"</SubtitleReel>",
{}
);
}
+
+BOOST_AUTO_TEST_CASE(smpte_subtitle_standard_written_correctly)
+{
+ RNGFixer fixer;
+
+ boost::filesystem::path const ref = "test/data";
+ boost::filesystem::path const out = "build/test/smpte_subtitle_standard_written_correctly";
+
+ boost::filesystem::remove_all(out);
+ boost::filesystem::create_directories(out);
+
+ dcp::SMPTESubtitleAsset test_2014;
+ test_2014.set_issue_date(dcp::LocalTime("2020-01-01T14:00:00"));
+ test_2014.write(out / "2014.mxf");
+ BOOST_CHECK_EQUAL(dcp::SMPTESubtitleAsset(ref / "2014.mxf").raw_xml(), dcp::SMPTESubtitleAsset(out / "2014.mxf").raw_xml());
+
+ dcp::SMPTESubtitleAsset test_2010(dcp::SubtitleStandard::SMPTE_2010);
+ test_2010.set_issue_date(dcp::LocalTime("2020-01-01T14:00:00"));
+ test_2010.write(out / "2010.mxf");
+ BOOST_CHECK_EQUAL(dcp::SMPTESubtitleAsset(ref / "2010.mxf").raw_xml(), dcp::SMPTESubtitleAsset(out / "2010.mxf").raw_xml());
+
+ dcp::SMPTESubtitleAsset test_2007(dcp::SubtitleStandard::SMPTE_2007);
+ test_2007.set_issue_date(dcp::LocalTime("2020-01-01T14:00:00"));
+ test_2007.write(out / "2007.mxf");
+ BOOST_CHECK_EQUAL(dcp::SMPTESubtitleAsset(ref / "2007.mxf").raw_xml(), dcp::SMPTESubtitleAsset(out / "2007.mxf").raw_xml());
+}
+
+
+BOOST_AUTO_TEST_CASE(smpte_subtitle_standard_read_correctly)
+{
+ dcp::SMPTESubtitleAsset test_2007("test/data/2007.mxf");
+ BOOST_CHECK(test_2007.subtitle_standard() == dcp::SubtitleStandard::SMPTE_2007);
+
+ dcp::SMPTESubtitleAsset test_2010("test/data/2010.mxf");
+ BOOST_CHECK(test_2010.subtitle_standard() == dcp::SubtitleStandard::SMPTE_2010);
+
+ dcp::SMPTESubtitleAsset test_2014("test/data/2014.mxf");
+ BOOST_CHECK(test_2014.subtitle_standard() == dcp::SubtitleStandard::SMPTE_2014);
+}
+
+
+BOOST_AUTO_TEST_CASE(smpte_subtitle_intrinsic_duration_read_correctly)
+{
+ dcp::SMPTESubtitleAsset ref("test/data/verify_incorrect_closed_caption_ordering3.xml");
+
+ dcp::Key key;
+ ref.set_key(key);
+
+ auto constexpr duration = 480U;
+
+ ref.set_intrinsic_duration(duration);
+
+ auto const path = boost::filesystem::path("build/test/smpte_subtitle_instrinsic_duration_read_correctly.mxf");
+ ref.write(path);
+
+ auto check = dcp::SMPTESubtitleAsset(path);
+ check.set_key(key);
+ BOOST_CHECK_EQUAL(check.intrinsic_duration(), duration);
+}
+