Alexandre Julliard : gdi32: Support wrongly ordered rectangles in RectVisible.

Alexandre Julliard julliard at winehq.org
Fri Dec 14 14:10:00 CST 2012


Module: wine
Branch: master
Commit: 5215895a11a582df775f4c794a14ad6d4629a7c8
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=5215895a11a582df775f4c794a14ad6d4629a7c8

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Fri Dec 14 16:56:28 2012 +0100

gdi32: Support wrongly ordered rectangles in RectVisible.

---

 dlls/gdi32/clipping.c       |    1 +
 dlls/gdi32/tests/clipping.c |   16 ++++++++++++++++
 2 files changed, 17 insertions(+), 0 deletions(-)

diff --git a/dlls/gdi32/clipping.c b/dlls/gdi32/clipping.c
index ee7873e..572287e 100644
--- a/dlls/gdi32/clipping.c
+++ b/dlls/gdi32/clipping.c
@@ -392,6 +392,7 @@ BOOL WINAPI RectVisible( HDC hdc, const RECT* rect )
 
     tmpRect = *rect;
     LPtoDP( hdc, (POINT *)&tmpRect, 2 );
+    order_rect( &tmpRect );
 
     update_dc( dc );
     ret = (!get_dc_device_rect( dc, &visrect ) || intersect_rect( &visrect, &visrect, &tmpRect ));
diff --git a/dlls/gdi32/tests/clipping.c b/dlls/gdi32/tests/clipping.c
index 04b2785..0247bbb 100644
--- a/dlls/gdi32/tests/clipping.c
+++ b/dlls/gdi32/tests/clipping.c
@@ -401,6 +401,14 @@ static void test_memory_dc_clipping(void)
     ok(rc.left == 0 && rc.top == 0 && rc.right == 100 && rc.bottom == 100,
        "expected 0,0-100,100, got %d,%d-%d,%d\n", rc.left, rc.top, rc.right, rc.bottom);
 
+    SetRect( &rc, 10, 10, 20, 20 );
+    ret = RectVisible( hdc, &rc );
+    ok( ret, "RectVisible failed for %d,%d-%d,%d\n", rc.left, rc.top, rc.right, rc.bottom );
+
+    SetRect( &rc, 20, 20, 10, 10 );
+    ret = RectVisible( hdc, &rc );
+    ok( ret, "RectVisible failed for %d,%d-%d,%d\n", rc.left, rc.top, rc.right, rc.bottom );
+
     DeleteDC(hdc);
     DeleteObject(hrgn);
     DeleteObject(hrgn_empty);
@@ -446,6 +454,14 @@ static void test_window_dc_clipping(void)
        "expected 0,0-%d,%d, got %d,%d-%d,%d\n", screen_width, screen_height,
         rc.left, rc.top, rc.right, rc.bottom);
 
+    SetRect( &rc, 10, 10, 20, 20 );
+    ret = RectVisible( hdc, &rc );
+    ok( ret, "RectVisible failed for %d,%d-%d,%d\n", rc.left, rc.top, rc.right, rc.bottom );
+
+    SetRect( &rc, 20, 20, 10, 10 );
+    ret = RectVisible( hdc, &rc );
+    ok( ret, "RectVisible failed for %d,%d-%d,%d\n", rc.left, rc.top, rc.right, rc.bottom );
+
     ret = ExtSelectClipRgn(hdc, 0, RGN_COPY);
     ok(ret == SIMPLEREGION || (ret == COMPLEXREGION && GetSystemMetrics(SM_CMONITORS) > 1),
        "expected SIMPLEREGION, got %d\n", ret);




More information about the wine-cvs mailing list