[ros-diffs] [jimtabor] 44892: - Update region.c from wine head. This is needed for region testing of GetRegionData and related code.

jimtabor at svn.reactos.org jimtabor at svn.reactos.org
Sat Jan 2 20:18:45 CET 2010


Author: jimtabor
Date: Sat Jan  2 20:18:44 2010
New Revision: 44892

URL: http://svn.reactos.org/svn/reactos?rev=44892&view=rev
Log:
- Update region.c from wine head. This is needed for region testing of GetRegionData and related code.

Modified:
    trunk/rostests/winetests/gdiplus/region.c

Modified: trunk/rostests/winetests/gdiplus/region.c
URL: http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/gdiplus/region.c?rev=44892&r1=44891&r2=44892&view=diff
==============================================================================
--- trunk/rostests/winetests/gdiplus/region.c [iso-8859-1] (original)
+++ trunk/rostests/winetests/gdiplus/region.c [iso-8859-1] Sat Jan  2 20:18:44 2010
@@ -364,7 +364,9 @@
     expect_dword(buf + 5, 12);
     expect_magic((DWORD*)(buf + 6));
     expect_dword(buf + 7, 0);
-    expect_dword(buf + 8, 0x00004000);
+    /* flags 0x4000 means its a path of shorts instead of FLOAT */
+    ok((*(buf + 8) & (~ 0x00004000)) == 0x00000000,
+       "expected 00000000 got %08x\n", *(buf + 8) & (~ 0x00004000));
 
     status = GdipDeleteRegion(region);
     expect(Ok, status);
@@ -503,7 +505,8 @@
     expect_float(buf + 25, 50);
     expect_float(buf + 26, 70.2);
     expect_dword(buf + 27, 0x01010100);
-    expect_dword(buf + 28, 0x00000101);
+    ok(*(buf + 28) == 0x00000101 || *(buf + 28) == 0x43050101 /* Win 7 */,
+       "expected 00000101 or 43050101 got %08x\n", *(buf + 28));
 
     status = GdipDeletePath(path);
     expect(Ok, status);
@@ -704,7 +707,7 @@
 static void test_fromhrgn(void)
 {
     GpStatus status;
-    GpRegion *region;
+    GpRegion *region = (GpRegion*)0xabcdef01;
     HRGN hrgn;
     UINT needed;
     DWORD buf[220];
@@ -720,6 +723,7 @@
     expect(InvalidParameter, status);
     status = GdipCreateRegionHrgn((HRGN)0xdeadbeef, &region);
     expect(InvalidParameter, status);
+    ok(region == (GpRegion*)0xabcdef01, "Expected region not to be created\n");
 
     /* empty rectangle */
     hrgn = CreateRectRgn(0, 0, 0, 0);
@@ -788,21 +792,19 @@
     /* ellipse */
     hrgn = CreateEllipticRgn(0, 0, 100, 10);
     status = GdipCreateRegionHrgn(hrgn, &region);
-    todo_wine expect(Ok, status);
+    expect(Ok, status);
 
     status = GdipGetRegionDataSize(region, &needed);
-todo_wine{
     expect(Ok, status);
     ok(needed == 216 ||
        needed == 196, /* win98 */
        "Got %.8x\n", needed);
-}
+
     status = GdipGetRegionData(region, (BYTE*)buf, sizeof(buf), &needed);
-    todo_wine expect(Ok, status);
+    expect(Ok, status);
 
     if(status == Ok && needed == 216) /* Don't try to test win98 layout */
     {
-todo_wine{
     expect(Ok, status);
     expect(216, needed);
     expect_dword(buf, 208);
@@ -812,8 +814,7 @@
     expect_dword(buf + 5, 0x000000C0);
     expect_magic((DWORD*)(buf + 6));
     expect_dword(buf + 7, 0x00000024);
-    expect_dword(buf + 8, 0x00006000); /* ?? */
-}
+    todo_wine expect_dword(buf + 8, 0x00006000); /* ?? */
     }
 
     GdipDeleteRegion(region);
@@ -1176,10 +1177,440 @@
     ok(rectf.Width  == 100.0, "Expected width = 0.0, got %.2f\n", rectf.Width);
     ok(rectf.Height == 100.0, "Expected height = 0.0, got %.2f\n", rectf.Height);
 
+    /* the world and page transforms are ignored */
+    GdipScaleWorldTransform(graphics, 2.0, 2.0, MatrixOrderPrepend);
+    GdipSetPageUnit(graphics, UnitInch);
+    GdipSetPageScale(graphics, 2.0);
+    status = GdipGetRegionBounds(region, graphics, &rectf);
+    ok(status == Ok, "status %08x\n", status);
+    ok(rectf.X == 10.0, "Expected X = 0.0, got %.2f\n", rectf.X);
+    ok(rectf.Y == 0.0, "Expected Y = 0.0, got %.2f\n", rectf.Y);
+    ok(rectf.Width  == 100.0, "Expected width = 0.0, got %.2f\n", rectf.Width);
+
+    rectf.X = 10.0; rectf.Y = 0.0;
+    rectf.Width = rectf.Height = 100.0;
+    status = GdipCombineRegionRect(region, &rectf, CombineModeReplace);
+    ok(status == Ok, "status %08x\n", status);
+    rectf.X = rectf.Y = 0.0;
+    rectf.Height = rectf.Width = 0.0;
+    status = GdipGetRegionBounds(region, graphics, &rectf);
+    ok(status == Ok, "status %08x\n", status);
+    ok(rectf.X == 10.0, "Expected X = 0.0, got %.2f\n", rectf.X);
+    ok(rectf.Y == 0.0, "Expected Y = 0.0, got %.2f\n", rectf.Y);
+    ok(rectf.Width  == 100.0, "Expected width = 0.0, got %.2f\n", rectf.Width);
+    ok(rectf.Height == 100.0, "Expected height = 0.0, got %.2f\n", rectf.Height);
+
     status = GdipDeleteRegion(region);
     ok(status == Ok, "status %08x\n", status);
     status = GdipDeleteGraphics(graphics);
     ok(status == Ok, "status %08x\n", status);
+    ReleaseDC(0, hdc);
+}
+
+static void test_isvisiblepoint(void)
+{
+    HDC hdc = GetDC(0);
+    GpGraphics* graphics;
+    GpRegion* region;
+    GpPath* path;
+    GpRectF rectf;
+    GpStatus status;
+    BOOL res;
+    REAL x, y;
+
+    status = GdipCreateFromHDC(hdc, &graphics);
+    expect(Ok, status);
+
+    status = GdipCreateRegion(&region);
+    expect(Ok, status);
+
+    /* null parameters */
+    status = GdipIsVisibleRegionPoint(NULL, 0, 0, graphics, &res);
+    expect(InvalidParameter, status);
+    status = GdipIsVisibleRegionPointI(NULL, 0, 0, graphics, &res);
+    expect(InvalidParameter, status);
+
+    status = GdipIsVisibleRegionPoint(region, 0, 0, NULL, &res);
+    expect(Ok, status);
+    status = GdipIsVisibleRegionPointI(region, 0, 0, NULL, &res);
+    expect(Ok, status);
+
+    status = GdipIsVisibleRegionPoint(region, 0, 0, graphics, NULL);
+    expect(InvalidParameter, status);
+    status = GdipIsVisibleRegionPointI(region, 0, 0, graphics, NULL);
+    expect(InvalidParameter, status);
+
+    /* infinite region */
+    status = GdipIsInfiniteRegion(region, graphics, &res);
+    expect(Ok, status);
+    ok(res == TRUE, "Region should be infinite\n");
+
+    x = 10;
+    y = 10;
+    status = GdipIsVisibleRegionPoint(region, x, y, graphics, &res);
+    expect(Ok, status);
+    ok(res == TRUE, "Expected (%.2f, %.2f) to be visible\n", x, y);
+    status = GdipIsVisibleRegionPointI(region, (INT)x, (INT)y, graphics, &res);
+    expect(Ok, status);
+    ok(res == TRUE, "Expected (%d, %d) to be visible\n", (INT)x, (INT)y);
+
+    x = -10;
+    y = -10;
+    status = GdipIsVisibleRegionPoint(region, x, y, graphics, &res);
+    expect(Ok, status);
+    ok(res == TRUE, "Expected (%.2f, %.2f) to be visible\n", x, y);
+    status = GdipIsVisibleRegionPointI(region, (INT)x, (INT)y, graphics, &res);
+    expect(Ok, status);
+    ok(res == TRUE, "Expected (%d, %d) to be visible\n", (INT)x, (INT)y);
+
+    /* rectangular region */
+    rectf.X = 10;
+    rectf.Y = 20;
+    rectf.Width = 30;
+    rectf.Height = 40;
+
+    status = GdipCombineRegionRect(region, &rectf, CombineModeReplace);
+    expect(Ok, status);
+
+    x = 0;
+    y = 0;
+    status = GdipIsVisibleRegionPoint(region, x, y, graphics, &res);
+    expect(Ok, status);
+    ok(res == FALSE, "Expected (%.2f, %.2f) not to be visible\n", x, y);
+    status = GdipIsVisibleRegionPointI(region, (INT)x, (INT)y, graphics, &res);
+    expect(Ok, status);
+    ok(res == FALSE, "Expected (%d, %d) not to be visible\n", (INT)x, (INT)y);
+
+    x = 9;
+    y = 19;
+    status = GdipIsVisibleRegionPoint(region, x, y, graphics, &res);
+    expect(Ok, status);
+    ok(res == FALSE, "Expected (%.2f, %.2f) to be visible\n", x, y);
+
+    x = 9.25;
+    y = 19.25;
+    status = GdipIsVisibleRegionPoint(region, x, y, graphics, &res);
+    expect(Ok, status);
+    ok(res == FALSE, "Expected (%.2f, %.2f) to be visible\n", x, y);
+
+    x = 9.5;
+    y = 19.5;
+    status = GdipIsVisibleRegionPoint(region, x, y, graphics, &res);
+    expect(Ok, status);
+    ok(res == TRUE, "Expected (%.2f, %.2f) to be visible\n", x, y);
+
+    x = 9.75;
+    y = 19.75;
+    status = GdipIsVisibleRegionPoint(region, x, y, graphics, &res);
+    expect(Ok, status);
+    ok(res == TRUE, "Expected (%.2f, %.2f) to be visible\n", x, y);
+
+    x = 10;
+    y = 20;
+    status = GdipIsVisibleRegionPoint(region, x, y, graphics, &res);
+    expect(Ok, status);
+    ok(res == TRUE, "Expected (%.2f, %.2f) to be visible\n", x, y);
+
+    x = 25;
+    y = 40;
+    status = GdipIsVisibleRegionPoint(region, x, y, graphics, &res);
+    expect(Ok, status);
+    ok(res == TRUE, "Expected (%.2f, %.2f) to be visible\n", x, y);
+    status = GdipIsVisibleRegionPointI(region, (INT)x, (INT)y, graphics, &res);
+    expect(Ok, status);
+    ok(res == TRUE, "Expected (%d, %d) to be visible\n", (INT)x, (INT)y);
+
+    x = 40;
+    y = 60;
+    status = GdipIsVisibleRegionPoint(region, x, y, graphics, &res);
+    expect(Ok, status);
+    ok(res == FALSE, "Expected (%.2f, %.2f) not to be visible\n", x, y);
+    status = GdipIsVisibleRegionPointI(region, (INT)x, (INT)y, graphics, &res);
+    expect(Ok, status);
+    ok(res == FALSE, "Expected (%d, %d) not to be visible\n", (INT)x, (INT)y);
+
+    /* translate into the center of the rectangle */
+    status = GdipTranslateWorldTransform(graphics, 25, 40, MatrixOrderAppend);
+    expect(Ok, status);
+
+    /* native ignores the world transform, so treat these as if
+     * no transform exists */
+    x = -20;
+    y = -30;
+    status = GdipIsVisibleRegionPoint(region, x, y, graphics, &res);
+    expect(Ok, status);
+    ok(res == FALSE, "Expected (%.2f, %.2f) not to be visible\n", x, y);
+    status = GdipIsVisibleRegionPointI(region, (INT)x, (INT)y, graphics, &res);
+    expect(Ok, status);
+    ok(res == FALSE, "Expected (%d, %d) not to be visible\n", (INT)x, (INT)y);
+
+    x = 0;
+    y = 0;
+    status = GdipIsVisibleRegionPoint(region, x, y, graphics, &res);
+    expect(Ok, status);
+    ok(res == FALSE, "Expected (%.2f, %.2f) not to be visible\n", x, y);
+    status = GdipIsVisibleRegionPointI(region, (INT)x, (INT)y, graphics, &res);
+    expect(Ok, status);
+    ok(res == FALSE, "Expected (%d, %d) not to be visible\n", (INT)x, (INT)y);
+
+    x = 25;
+    y = 40;
+    status = GdipIsVisibleRegionPoint(region, x, y, graphics, &res);
+    expect(Ok, status);
+    ok(res == TRUE, "Expected (%.2f, %.2f) to be visible\n", x, y);
+    status = GdipIsVisibleRegionPointI(region, (INT)x, (INT)y, graphics, &res);
+    expect(Ok, status);
+    ok(res == TRUE, "Expected (%d, %d) to be visible\n", (INT)x, (INT)y);
+
+    /* translate back to origin */
+    status = GdipTranslateWorldTransform(graphics, -25, -40, MatrixOrderAppend);
+    expect(Ok, status);
+
+    /* region from path */
+    status = GdipCreatePath(FillModeAlternate, &path);
+    expect(Ok, status);
+
+    status = GdipAddPathEllipse(path, 10, 20, 30, 40);
+    expect(Ok, status);
+
+    status = GdipCombineRegionPath(region, path, CombineModeReplace);
+    expect(Ok, status);
+
+    x = 11;
+    y = 21;
+    status = GdipIsVisibleRegionPoint(region, x, y, graphics, &res);
+    expect(Ok, status);
+    ok(res == FALSE, "Expected (%.2f, %.2f) not to be visible\n", x, y);
+    status = GdipIsVisibleRegionPointI(region, (INT)x, (INT)y, graphics, &res);
+    expect(Ok, status);
+    ok(res == FALSE, "Expected (%d, %d) not to be visible\n", (INT)x, (INT)y);
+
+    x = 25;
+    y = 40;
+    status = GdipIsVisibleRegionPoint(region, x, y, graphics, &res);
+    expect(Ok, status);
+    ok(res == TRUE, "Expected (%.2f, %.2f) to be visible\n", x, y);
+    status = GdipIsVisibleRegionPointI(region, (INT)x, (INT)y, graphics, &res);
+    expect(Ok, status);
+    ok(res == TRUE, "Expected (%d, %d) to be visible\n", (INT)x, (INT)y);
+
+    x = 40;
+    y = 60;
+    status = GdipIsVisibleRegionPoint(region, x, y, graphics, &res);
+    expect(Ok, status);
+    ok(res == FALSE, "Expected (%.2f, %.2f) not to be visible\n", x, y);
+    status = GdipIsVisibleRegionPointI(region, (INT)x, (INT)y, graphics, &res);
+    expect(Ok, status);
+    ok(res == FALSE, "Expected (%d, %d) not to be visible\n", (INT)x, (INT)y);
+
+    GdipDeletePath(path);
+
+    GdipDeleteRegion(region);
+    GdipDeleteGraphics(graphics);
+    ReleaseDC(0, hdc);
+}
+
+static void test_isvisiblerect(void)
+{
+    HDC hdc = GetDC(0);
+    GpGraphics* graphics;
+    GpRegion* region;
+    GpPath* path;
+    GpRectF rectf;
+    GpStatus status;
+    BOOL res;
+    REAL x, y, w, h;
+
+    status = GdipCreateFromHDC(hdc, &graphics);
+    expect(Ok, status);
+
+    status = GdipCreateRegion(&region);
+    expect(Ok, status);
+
+    /* null parameters */
+    status = GdipIsVisibleRegionRect(NULL, 0, 0, 0, 0, graphics, &res);
+    expect(InvalidParameter, status);
+    status = GdipIsVisibleRegionRectI(NULL, 0, 0, 0, 0, graphics, &res);
+    expect(InvalidParameter, status);
+
+    status = GdipIsVisibleRegionRect(region, 0, 0, 0, 0, NULL, &res);
+    expect(Ok, status);
+    status = GdipIsVisibleRegionRectI(region, 0, 0, 0, 0, NULL, &res);
+    expect(Ok, status);
+
+    status = GdipIsVisibleRegionRect(region, 0, 0, 0, 0, graphics, NULL);
+    expect(InvalidParameter, status);
+    status = GdipIsVisibleRegionRectI(region, 0, 0, 0, 0, graphics, NULL);
+    expect(InvalidParameter, status);
+
+    /* infinite region */
+    status = GdipIsInfiniteRegion(region, graphics, &res);
+    expect(Ok, status);
+    ok(res == TRUE, "Region should be infinite\n");
+
+    x = 10; w = 10;
+    y = 10; h = 10;
+    status = GdipIsVisibleRegionRect(region, x, y, w, h, graphics, &res);
+    expect(Ok, status);
+    ok(res == TRUE, "Expected (%.2f, %.2f, %.2f, %.2f) to be visible\n", x, y, w, h);
+
+    x = -10; w = 5;
+    y = -10; h = 5;
+    status = GdipIsVisibleRegionRect(region, x, y, w, h, graphics, &res);
+    expect(Ok, status);
+    ok(res == TRUE, "Expected (%.2f, %.2f, %.2f, %.2f) to be visible\n", x, y, w, h);
+
+    /* rectangular region */
+    rectf.X = 10;
+    rectf.Y = 20;
+    rectf.Width = 30;
+    rectf.Height = 40;
+
+    status = GdipCombineRegionRect(region, &rectf, CombineModeIntersect);
+    expect(Ok, status);
+
+    /* entirely within the region */
+    x = 11; w = 10;
+    y = 12; h = 10;
+    status = GdipIsVisibleRegionRect(region, x, y, w, h, graphics, &res);
+    expect(Ok, status);
+    ok(res == TRUE, "Expected (%.2f, %.2f, %.2f, %.2f) to be visible\n", x, y, w, h);
+    status = GdipIsVisibleRegionRectI(region, (INT)x, (INT)y, (INT)w, (INT)h, graphics, &res);
+    expect(Ok, status);
+    ok(res == TRUE, "Expected (%d, %d, %d, %d) to be visible\n", (INT)x, (INT)y, (INT)w, (INT)h);
+
+    /* entirely outside of the region */
+    x = 0; w = 5;
+    y = 0; h = 5;
+    status = GdipIsVisibleRegionRect(region, x, y, w, h, graphics, &res);
+    expect(Ok, status);
+    ok(res == FALSE, "Expected (%.2f, %.2f, %.2f, %.2f) not to be visible\n", x, y, w, h);
+    status = GdipIsVisibleRegionRectI(region, (INT)x, (INT)y, (INT)w, (INT)h, graphics, &res);
+    expect(Ok, status);
+    ok(res == FALSE, "Expected (%d, %d, %d, %d) not to be visible\n", (INT)x, (INT)y, (INT)w, (INT)h);
+
+    /* corner cases */
+    x = 0; w = 10;
+    y = 0; h = 20;
+    status = GdipIsVisibleRegionRect(region, x, y, w, h, graphics, &res);
+    expect(Ok, status);
+    ok(res == FALSE, "Expected (%.2f, %.2f, %.2f, %.2f) not to be visible\n", x, y, w, h);
+
+    x = 0; w = 10.25;
+    y = 0; h = 20.25;
+    status = GdipIsVisibleRegionRect(region, x, y, w, h, graphics, &res);
+    expect(Ok, status);
+    ok(res == TRUE, "Expected (%.2f, %.2f, %.2f, %.2f) to be visible\n", x, y, w, h);
+
+    x = 39; w = 10;
+    y = 59; h = 10;
+    status = GdipIsVisibleRegionRect(region, x, y, w, h, graphics, &res);
+    expect(Ok, status);
+    ok(res == TRUE, "Expected (%.2f, %.2f, %.2f, %.2f) to be visible\n", x, y, w, h);
+
+    x = 39.25; w = 10;
+    y = 59.25; h = 10;
+    status = GdipIsVisibleRegionRect(region, x, y, w, h, graphics, &res);
+    expect(Ok, status);
+    ok(res == FALSE, "Expected (%.2f, %.2f, %.2f, %.2f) not to be visible\n", x, y, w, h);
+
+    /* corners outside, but some intersection */
+    x = 0; w = 100;
+    y = 0; h = 100;
+    status = GdipIsVisibleRegionRect(region, x, y, w, h, graphics, &res);
+    expect(Ok, status);
+    ok(res == TRUE, "Expected (%.2f, %.2f, %.2f, %.2f) to be visible\n", x, y, w, h);
+
+    x = 0; w = 100;
+    y = 0; h = 40;
+    status = GdipIsVisibleRegionRect(region, x, y, w, h, graphics, &res);
+    expect(Ok, status);
+    ok(res == TRUE, "Expected (%.2f, %.2f, %.2f, %.2f) to be visible\n", x, y, w, h);
+
+    x = 0; w = 25;
+    y = 0; h = 100;
+    status = GdipIsVisibleRegionRect(region, x, y, w, h, graphics, &res);
+    expect(Ok, status);
+    ok(res == TRUE, "Expected (%.2f, %.2f, %.2f, %.2f) to be visible\n", x, y, w, h);
+
+    /* translate into the center of the rectangle */
+    status = GdipTranslateWorldTransform(graphics, 25, 40, MatrixOrderAppend);
+    expect(Ok, status);
+
+    /* native ignores the world transform, so treat these as if
+     * no transform exists */
+    x = 0; w = 5;
+    y = 0; h = 5;
+    status = GdipIsVisibleRegionRect(region, x, y, w, h, graphics, &res);
+    expect(Ok, status);
+    ok(res == FALSE, "Expected (%.2f, %.2f, %.2f, %.2f) not to be visible\n", x, y, w, h);
+    status = GdipIsVisibleRegionRectI(region, (INT)x, (INT)y, (INT)w, (INT)h, graphics, &res);
+    expect(Ok, status);
+    ok(res == FALSE, "Expected (%d, %d, %d, %d) not to be visible\n", (INT)x, (INT)y, (INT)w, (INT)h);
+
+    x = 11; w = 10;
+    y = 12; h = 10;
+    status = GdipIsVisibleRegionRect(region, x, y, w, h, graphics, &res);
+    expect(Ok, status);
+    ok(res == TRUE, "Expected (%.2f, %.2f, %.2f, %.2f) to be visible\n", x, y, w, h);
+    status = GdipIsVisibleRegionRectI(region, (INT)x, (INT)y, (INT)w, (INT)h, graphics, &res);
+    expect(Ok, status);
+    ok(res == TRUE, "Expected (%d, %d, %d, %d) to be visible\n", (INT)x, (INT)y, (INT)w, (INT)h);
+
+    /* translate back to origin */
+    status = GdipTranslateWorldTransform(graphics, -25, -40, MatrixOrderAppend);
+    expect(Ok, status);
+
+    /* region from path */
+    status = GdipCreatePath(FillModeAlternate, &path);
+    expect(Ok, status);
+
+    status = GdipAddPathEllipse(path, 10, 20, 30, 40);
+    expect(Ok, status);
+
+    status = GdipCombineRegionPath(region, path, CombineModeReplace);
+    expect(Ok, status);
+
+    x = 0; w = 12;
+    y = 0; h = 22;
+    status = GdipIsVisibleRegionRect(region, x, y, w, h, graphics, &res);
+    expect(Ok, status);
+    ok(res == FALSE, "Expected (%.2f, %.2f, %.2f, %.2f) not to be visible\n", x, y, w, h);
+    status = GdipIsVisibleRegionRectI(region, (INT)x, (INT)y, (INT)w, (INT)h, graphics, &res);
+    expect(Ok, status);
+    ok(res == FALSE, "Expected (%d, %d, %d, %d) not to be visible\n", (INT)x, (INT)y, (INT)w, (INT)h);
+
+    x = 0; w = 25;
+    y = 0; h = 40;
+    status = GdipIsVisibleRegionRect(region, x, y, w, h, graphics, &res);
+    expect(Ok, status);
+    ok(res == TRUE, "Expected (%.2f, %.2f, %.2f, %.2f) to be visible\n", x, y, w, h);
+    status = GdipIsVisibleRegionRectI(region, (INT)x, (INT)y, (INT)w, (INT)h, graphics, &res);
+    expect(Ok, status);
+    ok(res == TRUE, "Expected (%d, %d, %d, %d) to be visible\n", (INT)x, (INT)y, (INT)w, (INT)h);
+
+    x = 38; w = 10;
+    y = 55; h = 10;
+    status = GdipIsVisibleRegionRect(region, x, y, w, h, graphics, &res);
+    expect(Ok, status);
+    ok(res == FALSE, "Expected (%.2f, %.2f, %.2f, %.2f) not to be visible\n", x, y, w, h);
+    status = GdipIsVisibleRegionRectI(region, (INT)x, (INT)y, (INT)w, (INT)h, graphics, &res);
+    expect(Ok, status);
+    ok(res == FALSE, "Expected (%d, %d, %d, %d) not to be visible\n", (INT)x, (INT)y, (INT)w, (INT)h);
+
+    x = 0; w = 100;
+    y = 0; h = 100;
+    status = GdipIsVisibleRegionRect(region, x, y, w, h, graphics, &res);
+    expect(Ok, status);
+    ok(res == TRUE, "Expected (%.2f, %.2f, %.2f, %.2f) to be visible\n", x, y, w, h);
+    status = GdipIsVisibleRegionRectI(region, (INT)x, (INT)y, (INT)w, (INT)h, graphics, &res);
+    expect(Ok, status);
+    ok(res == TRUE, "Expected (%d, %d, %d, %d) to be visible\n", (INT)x, (INT)y, (INT)w, (INT)h);
+
+    GdipDeletePath(path);
+
+    GdipDeleteRegion(region);
+    GdipDeleteGraphics(graphics);
     ReleaseDC(0, hdc);
 }
 
@@ -1204,6 +1635,8 @@
     test_isequal();
     test_translate();
     test_getbounds();
+    test_isvisiblepoint();
+    test_isvisiblerect();
 
     GdiplusShutdown(gdiplusToken);
 }




More information about the Ros-diffs mailing list