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. --- src/lib/format.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/lib') diff --git a/src/lib/format.cc b/src/lib/format.cc index 0ca97303e..3ee11a132 100644 --- a/src/lib/format.cc +++ b/src/lib/format.cc @@ -199,7 +199,7 @@ FixedFormat::FixedFormat (int r, libdcp::Size dcp, string id, string n, string d int Format::dcp_padding (shared_ptr f) const { - int p = rint ((_dcp_size.width - (_dcp_size.height * ratio_as_integer(f) / 100.0)) / 2.0); + int p = rint ((_dcp_size.width - (_dcp_size.height * ratio_as_float(f))) / 2.0); /* This comes out -ve for Scope; bodge it */ if (p < 0) { -- 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 'src/lib') 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