summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2018-04-27 11:46:24 +0100
committerCarl Hetherington <cth@carlh.net>2018-04-27 11:46:24 +0100
commit565490c24a46d0aa941f75cf2a03b195246008b4 (patch)
tree4303c17898119e67b676ed0bb0c043e3a8f1d7f5
parentf65afabda0088de3e4ec2e3d2355ba70a29e711e (diff)
Fix crazy thinko in Rect::extend() causing subtitles to disappear when they were merged.
-rw-r--r--ChangeLog4
-rw-r--r--src/lib/rect.h6
-rw-r--r--test/rect_test.cc12
3 files changed, 19 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index fd94caf57..0f9f0ab51 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2018-04-27 Carl Hetherington <cth@carlh.net>
+
+ * Fix obscured subtitles in some cases.
+
2018-04-25 Carl Hetherington <cth@carlh.net>
* Updated fr_FR translation from Thierry Journet.
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/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);
+}