diff options
| author | Carl Hetherington <cth@carlh.net> | 2018-04-27 11:46:24 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2018-09-04 23:31:49 +0100 |
| commit | 8ef185edbbf07435603009bc9b5bc56924cf02ca (patch) | |
| tree | 61a6323bcd451ceb82c72a60952cda085cd332b6 | |
| parent | 41cd4321fc3b068f16cdf12413f602ed4a157deb (diff) | |
Fix crazy thinko in Rect::extend() causing subtitles to disappear when they were merged.
From 565490c in master.
| -rw-r--r-- | ChangeLog | 6 | ||||
| -rw-r--r-- | src/lib/rect.h | 6 | ||||
| m--------- | test/data | 0 | ||||
| -rw-r--r-- | test/rect_test.cc | 12 |
4 files changed, 20 insertions, 4 deletions
@@ -1,4 +1,8 @@ -2018-08-14 Carl Hetherington <cth@carlh.net> +2018-04-27 Carl Hetherington <cth@carlh.net> + + * Fix obscured subtitles in some cases. + +2018-04-25 Carl Hetherington <cth@carlh.net> * Version 2.12.9 released. diff --git a/src/lib/rect.h b/src/lib/rect.h index d0daec437..4851ad007 100644 --- a/src/lib/rect.h +++ b/src/lib/rect.h @@ -91,10 +91,12 @@ public: void extend (Rect<T> const & other) { + T old_x = x; + T old_y = y; x = std::min (x, other.x); y = std::min (y, other.y); - width = std::max (x + width, other.x + other.width) - x; - height = std::max (y + height, other.y + other.height) - y; + width = std::max (old_x + width, other.x + other.width) - x; + height = std::max (old_y + height, other.y + other.height) - y; } Rect<T> extended (T amount) const { diff --git a/test/data b/test/data -Subproject e5472ceee4b68737cdf10157c6a5d2018c98e66 +Subproject 87b0b0e75c9af32e011ac7626f18fc42018d580 diff --git a/test/rect_test.cc b/test/rect_test.cc index 1e3730148..832fdad82 100644 --- a/test/rect_test.cc +++ b/test/rect_test.cc @@ -29,10 +29,20 @@ using boost::optional; -BOOST_AUTO_TEST_CASE (rect_test) +BOOST_AUTO_TEST_CASE (rect_test1) { dcpomatic::Rect<int> a (0, 0, 100, 100); dcpomatic::Rect<int> b (200, 200, 100, 100); optional<dcpomatic::Rect<int> > c = a.intersection (b); BOOST_CHECK (!c); } + +BOOST_AUTO_TEST_CASE (rect_test2) +{ + dcpomatic::Rect<int> a (0, 330, 100, 85); + a.extend (dcpomatic::Rect<int> (50, 235, 100, 85)); + BOOST_CHECK_EQUAL (a.x, 0); + BOOST_CHECK_EQUAL (a.y, 235); + BOOST_CHECK_EQUAL (a.width, 150); + BOOST_CHECK_EQUAL (a.height, 180); +} |
