Accept any case for subtitle alignment specifiers (#2602). v1.8.78
authorCarl Hetherington <cth@carlh.net>
Tue, 22 Aug 2023 21:45:13 +0000 (23:45 +0200)
committerCarl Hetherington <cth@carlh.net>
Tue, 22 Aug 2023 21:45:14 +0000 (23:45 +0200)
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.

src/h_align.cc
src/v_align.cc
test/h_align_test.cc
test/v_align_test.cc

index 7169fb0445523a8ec70a2b96bbfc582b4594824f..71e775cf8fc6d4a554233a2a63b6637b117f776f 100644 (file)
@@ -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") {
index 013cccf1eae260ac2772420a8a33dffbf82ff502..de92dcdf722a726a2928df83302f0850472e9f53 100644 (file)
@@ -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") {
index f8e9bd7f3501542084fc2c97e13f9671d617e3e6..60e8734176171bb9e0cb62f3726bffa04300b6db 100644 (file)
@@ -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);
 }
 
index 699513909b6a8a1dcaa2f804214d5bdb2914188d..6bd77e440c5b458370763e946411df7c82104d98 100644 (file)
@@ -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);
 }