X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=test%2Frender_subtitles_test.cc;h=e3034def01f209d7bab87914163bbe653d20eed4;hb=a9b1c1cb65e1902a64430977cf698054e131a6f4;hp=f4ff3b7bb2f05a76bcc76272eb3adeda3bb01590;hpb=74641dc13a4244ed656722a671f0c827dab39b03;p=dcpomatic.git diff --git a/test/render_subtitles_test.cc b/test/render_subtitles_test.cc index f4ff3b7bb..e3034def0 100644 --- a/test/render_subtitles_test.cc +++ b/test/render_subtitles_test.cc @@ -25,14 +25,21 @@ */ +#include "lib/image.h" +#include "lib/image_png.h" #include "lib/render_text.h" #include "lib/string_text.h" +#include "test.h" #include #include +using std::make_shared; +using std::shared_ptr; + + static void -add (std::list& s, std::string text, bool italic, bool bold, bool underline) +add(std::vector& s, std::string text, bool italic, bool bold, bool underline) { s.push_back ( StringText ( @@ -50,16 +57,19 @@ add (std::list& s, std::string text, bool italic, bool bold, bool un dcp::HAlign::LEFT, 1, dcp::VAlign::TOP, + 0, dcp::Direction::LTR, text, dcp::Effect::NONE, dcp::Colour (0, 0, 0), dcp::Time (), dcp::Time (), - 0 + 0, + std::vector() ), 2, - std::shared_ptr() + std::shared_ptr(), + dcp::SubtitleStandard::SMPTE_2014 ) ); } @@ -67,7 +77,7 @@ add (std::list& s, std::string text, bool italic, bool bold, bool un BOOST_AUTO_TEST_CASE (marked_up_test1) { - std::list s; + std::vector s; add (s, "Hello", false, false, false); BOOST_CHECK_EQUAL(marked_up(s, 1024, 1, ""), "Hello"); } @@ -75,7 +85,7 @@ BOOST_AUTO_TEST_CASE (marked_up_test1) BOOST_AUTO_TEST_CASE (marked_up_test2) { - std::list s; + std::vector s; add (s, "Hello", false, true, false); BOOST_CHECK_EQUAL(marked_up(s, 1024, 1, ""), "Hello"); } @@ -83,21 +93,21 @@ BOOST_AUTO_TEST_CASE (marked_up_test2) BOOST_AUTO_TEST_CASE (marked_up_test3) { - std::list s; + std::vector s; add (s, "Hello", true, true, false); BOOST_CHECK_EQUAL(marked_up(s, 1024, 1, ""), "Hello"); } BOOST_AUTO_TEST_CASE (marked_up_test4) { - std::list s; + std::vector s; add (s, "Hello", true, true, true); BOOST_CHECK_EQUAL(marked_up(s, 1024, 1, ""), "Hello"); } BOOST_AUTO_TEST_CASE (marked_up_test5) { - std::list s; + std::vector s; add (s, "Hello", false, true, false); add (s, " world.", false, false, false); BOOST_CHECK_EQUAL (marked_up(s, 1024, 1, ""), "Hello world."); @@ -105,9 +115,86 @@ BOOST_AUTO_TEST_CASE (marked_up_test5) BOOST_AUTO_TEST_CASE (marked_up_test6) { - std::list s; + std::vector s; add (s, "Hello", true, false, false); add (s, " world ", false, false, false); add (s, "we are bold.", false, true, false); BOOST_CHECK_EQUAL (marked_up(s, 1024, 1, ""), "Hello world we are bold."); } + + +BOOST_AUTO_TEST_CASE(render_text_with_newline_test) +{ + std::list ss = { + { + {}, true, false, false, dcp::Colour(255, 255, 255), 42, 1.0, + dcp::Time(0, 0, 0, 0, 24), dcp::Time(0, 0, 1, 0, 24), + 0.5, dcp::HAlign::CENTER, + 0.5, dcp::VAlign::CENTER, + 0.0, + dcp::Direction::LTR, + "Hello world", + dcp::Effect::NONE, dcp::Colour(0, 0, 0), + {}, {}, + 0, + std::vector() + }, + { + {}, true, false, false, dcp::Colour(255, 255, 255), 42, 1.0, + dcp::Time(0, 0, 0, 0, 24), dcp::Time(0, 0, 1, 0, 24), + 0.5, dcp::HAlign::CENTER, + 0.5, dcp::VAlign::CENTER, + 0.0, + dcp::Direction::LTR, + "\n", + dcp::Effect::NONE, dcp::Colour(0, 0, 0), + {}, {}, + 0, + std::vector() + } + }; + + std::vector st; + for (auto i: ss) { + st.push_back({i, 0, make_shared("foo"), dcp::SubtitleStandard::SMPTE_2014}); + } + + auto images = render_text(st, dcp::Size(1998, 1080), {}, 24); + + BOOST_CHECK_EQUAL(images.size(), 1U); + image_as_png(Image::ensure_alignment(images.front().image, Image::Alignment::PADDED)).write("build/test/render_text_with_newline_test.png"); +#if defined(DCPOMATIC_OSX) + check_image("test/data/mac/render_text_with_newline_test.png", "build/test/render_text_with_newline_test.png"); +#elif defined(DCPOMATIC_WINDOWS) + check_image("test/data/windows/render_text_with_newline_test.png", "build/test/render_text_with_newline_test.png"); +#else + check_image("test/data/render_text_with_newline_test.png", "build/test/render_text_with_newline_test.png"); +#endif +} + + +#if 0 + +BOOST_AUTO_TEST_CASE (render_text_test) +{ + auto dcp_string = dcp::SubtitleString( + {}, false, false, false, dcp::Colour(255, 255, 255), 42, 1.0, + dcp::Time(0, 0, 0, 0, 24), dcp::Time(0, 0, 1, 0, 24), + 0.5, dcp::HAlign::CENTER, + 0.5, dcp::VAlign::CENTER, + dcp::Direction::LTR, + "HÄllo jokers", + dcp::Effect::NONE, dcp::Colour(0, 0, 0), + {}, {}, + 0 + ); + + auto string_text = StringText(dcp_string, 0, shared_ptr()); + + auto images = render_text({ string_text }, dcp::Size(1998, 1080), {}, 24); + + BOOST_CHECK_EQUAL(images.size(), 1U); + image_as_png(Image::ensure_alignment(images.front().image, Image::Alignment::PADDED)).write("build/test/render_text_test.png"); +} + +#endif