From 5980cee25f537c54fc1155de5492bddd92bfa338 Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Tue, 22 Aug 2023 23:45:13 +0200 Subject: [PATCH] Accept any case for subtitle alignment specifiers (#2602). 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 | 2 ++ src/v_align.cc | 2 ++ test/h_align_test.cc | 8 +++++--- 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); } -- 2.30.2