summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2018-04-27 11:46:24 +0100
committerCarl Hetherington <cth@carlh.net>2018-09-04 23:31:49 +0100
commit8ef185edbbf07435603009bc9b5bc56924cf02ca (patch)
tree61a6323bcd451ceb82c72a60952cda085cd332b6
parent41cd4321fc3b068f16cdf12413f602ed4a157deb (diff)
Fix crazy thinko in Rect::extend() causing subtitles to disappear when they were merged.
From 565490c in master.
-rw-r--r--ChangeLog6
-rw-r--r--src/lib/rect.h6
m---------test/data0
-rw-r--r--test/rect_test.cc12
4 files changed, 20 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog
index 0d56401ba..724cea2db 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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);
+}