summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2023-08-22 23:45:13 +0200
committerCarl Hetherington <cth@carlh.net>2023-08-22 23:45:14 +0200
commit5980cee25f537c54fc1155de5492bddd92bfa338 (patch)
tree4f9e87de2571fc6fdfdfe7ca8c1a5dd2102ce7a1
parentac449700a47c164bf09ee2b0c18486ed255ca20f (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.cc2
-rw-r--r--src/v_align.cc2
-rw-r--r--test/h_align_test.cc8
-rw-r--r--test/v_align_test.cc8
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);
}