summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2013-04-10 11:08:07 +0100
committerCarl Hetherington <cth@carlh.net>2013-04-10 11:08:07 +0100
commit38fdfb05aec760d44137b8ca09d6dcc2f9f4111f (patch)
treeeb29bfe4a8d6b6fbfd348a60d4bce88cd6a020d6
parent2984694418c8d2e3cc5f7dd4e87c2cd17e8b47f2 (diff)
Fix rounding error when computing padding; add test.
-rw-r--r--src/lib/format.cc2
-rw-r--r--test/test.cc26
2 files changed, 27 insertions, 1 deletions
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<const Film> 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) {
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<const Film> ()), 239);
}
+/* Test VariableFormat-based scaling of content */
+BOOST_AUTO_TEST_CASE (scaling_test)
+{
+ shared_ptr<Film> 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";