From 38fdfb05aec760d44137b8ca09d6dcc2f9f4111f Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Wed, 10 Apr 2013 11:08:07 +0100 Subject: Fix rounding error when computing padding; add test. --- test/test.cc | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) (limited to 'test') diff --git a/test/test.cc b/test/test.cc index 61e192058..6d6841a87 100644 --- a/test/test.cc +++ b/test/test.cc @@ -229,6 +229,32 @@ BOOST_AUTO_TEST_CASE (format_test) BOOST_CHECK_EQUAL (f->ratio_as_integer(shared_ptr ()), 239); } +/* Test VariableFormat-based scaling of content */ +BOOST_AUTO_TEST_CASE (scaling_test) +{ + shared_ptr film (new Film (test_film_dir ("scaling_test").string(), false)); + + /* 4:3 ratio */ + film->set_size (libdcp::Size (320, 240)); + + /* This format should preserve aspect ratio of the source */ + Format const * format = Format::from_id ("var-185"); + + int const p = format->dcp_padding (film); + + /* We should have enough padding that the result is 4:3, + which would be 1440 pixels. + */ + BOOST_CHECK_EQUAL (p, (1998 - 1440) / 2); + + + /* This crops it to 1.291666667 */ +// f.set_left_crop (5); +// f.set_right_crop (5); + + +} + BOOST_AUTO_TEST_CASE (util_test) { string t = "Hello this is a string \"with quotes\" and indeed without them"; -- cgit v1.2.3 From 0806df40e8739b83945b62b61eaf4f18bbfa6320 Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Wed, 10 Apr 2013 11:28:19 +0100 Subject: Fix variable format ratio under crop (part of #113). --- src/lib/format.cc | 3 ++- test/test.cc | 16 ++++++++-------- 2 files changed, 10 insertions(+), 9 deletions(-) (limited to 'test') diff --git a/src/lib/format.cc b/src/lib/format.cc index 3ee11a132..faadcd797 100644 --- a/src/lib/format.cc +++ b/src/lib/format.cc @@ -230,7 +230,8 @@ VariableFormat::ratio_as_integer (shared_ptr f) const float VariableFormat::ratio_as_float (shared_ptr f) const { - return float (f->size().width) / f->size().height; + libdcp::Size const c = f->cropped_size (f->size ()); + return float (c.width) / c.height; } /** @return A name to be presented to the user */ diff --git a/test/test.cc b/test/test.cc index 6d6841a87..d1bb400f9 100644 --- a/test/test.cc +++ b/test/test.cc @@ -240,19 +240,19 @@ BOOST_AUTO_TEST_CASE (scaling_test) /* This format should preserve aspect ratio of the source */ Format const * format = Format::from_id ("var-185"); - int const p = format->dcp_padding (film); - /* We should have enough padding that the result is 4:3, which would be 1440 pixels. */ - BOOST_CHECK_EQUAL (p, (1998 - 1440) / 2); - + BOOST_CHECK_EQUAL (format->dcp_padding (film), (1998 - 1440) / 2); /* This crops it to 1.291666667 */ -// f.set_left_crop (5); -// f.set_right_crop (5); - - + film->set_left_crop (5); + film->set_right_crop (5); + + /* We should now have enough padding that the result is 1.29166667, + which would be 1395 pixels. + */ + BOOST_CHECK_EQUAL (format->dcp_padding (film), rint ((1998 - 1395) / 2.0)); } BOOST_AUTO_TEST_CASE (util_test) -- cgit v1.2.3