Fix crazy thinko in Rect::extend() causing subtitles to disappear when they were...
authorCarl Hetherington <cth@carlh.net>
Fri, 27 Apr 2018 10:46:24 +0000 (11:46 +0100)
committerCarl Hetherington <cth@carlh.net>
Fri, 27 Apr 2018 10:46:24 +0000 (11:46 +0100)
ChangeLog
src/lib/rect.h
test/rect_test.cc

index fd94caf..0f9f0ab 100644 (file)
--- 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.
index d0daec4..4851ad0 100644 (file)
@@ -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 {
index 1e37301..832fdad 100644 (file)
 
 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);
+}