diff options
| author | Carl Hetherington <cth@carlh.net> | 2023-08-22 23:45:13 +0200 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2023-08-22 23:45:14 +0200 |
| commit | 5980cee25f537c54fc1155de5492bddd92bfa338 (patch) | |
| tree | 4f9e87de2571fc6fdfdfe7ca8c1a5dd2102ce7a1 | |
| parent | ac449700a47c164bf09ee2b0c18486ed255ca20f (diff) | |
Accept any case for subtitle alignment specifiers (#2602).v1.8.78
SMPTE seems pretty clear to me that these should be lower case, but
counterexamples have been seen in the wild and it seems to make
sense to allow them.
Perhaps the verifier should raise an error with non-lower-case
examples.
| -rw-r--r-- | src/h_align.cc | 2 | ||||
| -rw-r--r-- | src/v_align.cc | 2 | ||||
| -rw-r--r-- | test/h_align_test.cc | 8 | ||||
| -rw-r--r-- | test/v_align_test.cc | 8 |
4 files changed, 14 insertions, 6 deletions
diff --git a/src/h_align.cc b/src/h_align.cc index 7169fb04..71e775cf 100644 --- a/src/h_align.cc +++ b/src/h_align.cc @@ -60,6 +60,8 @@ dcp::halign_to_string(HAlign h) HAlign dcp::string_to_halign(string s) { + transform(s.begin(), s.end(), s.begin(), ::tolower); + if (s == "left") { return HAlign::LEFT; } else if (s == "center") { diff --git a/src/v_align.cc b/src/v_align.cc index 013cccf1..de92dcdf 100644 --- a/src/v_align.cc +++ b/src/v_align.cc @@ -60,6 +60,8 @@ dcp::valign_to_string (VAlign v) VAlign dcp::string_to_valign (string s) { + transform(s.begin(), s.end(), s.begin(), ::tolower); + if (s == "top") { return VAlign::TOP; } else if (s == "center") { diff --git a/test/h_align_test.cc b/test/h_align_test.cc index f8e9bd7f..60e87341 100644 --- a/test/h_align_test.cc +++ b/test/h_align_test.cc @@ -42,8 +42,10 @@ BOOST_AUTO_TEST_CASE(h_align_test) BOOST_CHECK(dcp::string_to_halign("left") == dcp::HAlign::LEFT); BOOST_CHECK(dcp::string_to_halign("center") == dcp::HAlign::CENTER); BOOST_CHECK(dcp::string_to_halign("right") == dcp::HAlign::RIGHT); - BOOST_CHECK_THROW(dcp::string_to_halign("Left"), dcp::ReadError); - BOOST_CHECK_THROW(dcp::string_to_halign("CentER"), dcp::ReadError); - BOOST_CHECK_THROW(dcp::string_to_halign("RIGHT"), dcp::ReadError); + BOOST_CHECK(dcp::string_to_halign("Left") == dcp::HAlign::LEFT); + BOOST_CHECK(dcp::string_to_halign("CentER") == dcp::HAlign::CENTER); + BOOST_CHECK(dcp::string_to_halign("RIGHT") == dcp::HAlign::RIGHT); + + BOOST_CHECK_THROW(dcp::string_to_halign("ostrabagalous"), dcp::ReadError); } diff --git a/test/v_align_test.cc b/test/v_align_test.cc index 69951390..6bd77e44 100644 --- a/test/v_align_test.cc +++ b/test/v_align_test.cc @@ -42,8 +42,10 @@ BOOST_AUTO_TEST_CASE(v_align_test) BOOST_CHECK(dcp::string_to_valign("top") == dcp::VAlign::TOP); BOOST_CHECK(dcp::string_to_valign("center") == dcp::VAlign::CENTER); BOOST_CHECK(dcp::string_to_valign("bottom") == dcp::VAlign::BOTTOM); - BOOST_CHECK_THROW(dcp::string_to_valign("TOP"), dcp::ReadError); - BOOST_CHECK_THROW(dcp::string_to_valign("CENter"), dcp::ReadError); - BOOST_CHECK_THROW(dcp::string_to_valign("Right"), dcp::ReadError); + BOOST_CHECK(dcp::string_to_valign("TOP") == dcp::VAlign::TOP); + BOOST_CHECK(dcp::string_to_valign("CENter") == dcp::VAlign::CENTER); + BOOST_CHECK(dcp::string_to_valign("Bottom") == dcp::VAlign::BOTTOM); + + BOOST_CHECK_THROW(dcp::string_to_valign("ostrabagalous"), dcp::ReadError); } |
