gdi32: Check the region handle in GetClipRgn later.
This commit is contained in:
parent
aa25fcded7
commit
a504867a89
|
@ -385,7 +385,7 @@ INT WINAPI GetClipRgn( HDC hdc, HRGN hRgn )
|
||||||
{
|
{
|
||||||
INT ret = -1;
|
INT ret = -1;
|
||||||
DC * dc;
|
DC * dc;
|
||||||
if (hRgn && (dc = get_dc_ptr( hdc )))
|
if ((dc = get_dc_ptr( hdc )))
|
||||||
{
|
{
|
||||||
if( dc->hClipRgn )
|
if( dc->hClipRgn )
|
||||||
{
|
{
|
||||||
|
|
|
@ -265,8 +265,96 @@ static void test_ExtCreateRegion(void)
|
||||||
DeleteObject(hrgn);
|
DeleteObject(hrgn);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void test_GetClipRgn(void)
|
||||||
|
{
|
||||||
|
HDC hdc;
|
||||||
|
HRGN hrgn, hrgn2, hrgn3, hrgn4;
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
/* Test calling GetClipRgn with NULL device context and region handles. */
|
||||||
|
ret = GetClipRgn(NULL, NULL);
|
||||||
|
ok(ret == -1, "Expected GetClipRgn to return -1, got %d\n", ret);
|
||||||
|
|
||||||
|
hdc = GetDC(NULL);
|
||||||
|
ok(hdc != NULL, "Expected GetDC to return a valid device context handle\n");
|
||||||
|
|
||||||
|
/* Test calling GetClipRgn with a valid device context and NULL region. */
|
||||||
|
ret = GetClipRgn(hdc, NULL);
|
||||||
|
ok(ret == 0 ||
|
||||||
|
ret == -1 /* Win9x */,
|
||||||
|
"Expected GetClipRgn to return 0, got %d\n", ret);
|
||||||
|
|
||||||
|
/* Initialize the test regions. */
|
||||||
|
hrgn = CreateRectRgn(100, 100, 100, 100);
|
||||||
|
ok(hrgn != NULL,
|
||||||
|
"Expected CreateRectRgn to return a handle to a new rectangular region\n");
|
||||||
|
|
||||||
|
hrgn2 = CreateRectRgn(1, 2, 3, 4);
|
||||||
|
ok(hrgn2 != NULL,
|
||||||
|
"Expected CreateRectRgn to return a handle to a new rectangular region\n");
|
||||||
|
|
||||||
|
hrgn3 = CreateRectRgn(1, 2, 3, 4);
|
||||||
|
ok(hrgn3 != NULL,
|
||||||
|
"Expected CreateRectRgn to return a handle to a new rectangular region\n");
|
||||||
|
|
||||||
|
hrgn4 = CreateRectRgn(1, 2, 3, 4);
|
||||||
|
ok(hrgn4 != NULL,
|
||||||
|
"Expected CreateRectRgn to return a handle to a new rectangular region\n");
|
||||||
|
|
||||||
|
/* Try getting a clipping region from the device context
|
||||||
|
* when the device context's clipping region isn't set. */
|
||||||
|
ret = GetClipRgn(hdc, hrgn2);
|
||||||
|
ok(ret == 0, "Expected GetClipRgn to return 0, got %d\n", ret);
|
||||||
|
|
||||||
|
/* The region passed to GetClipRgn should be unchanged. */
|
||||||
|
ret = EqualRgn(hrgn2, hrgn3);
|
||||||
|
ok(ret == 1,
|
||||||
|
"Expected EqualRgn to compare the two regions as equal, got %d\n", ret);
|
||||||
|
|
||||||
|
/* Try setting and getting back a clipping region. */
|
||||||
|
ret = SelectClipRgn(hdc, hrgn);
|
||||||
|
ok(ret == NULLREGION,
|
||||||
|
"Expected SelectClipRgn to return NULLREGION, got %d\n", ret);
|
||||||
|
|
||||||
|
/* Passing a NULL region handle when the device context
|
||||||
|
* has a clipping region results in an error. */
|
||||||
|
ret = GetClipRgn(hdc, NULL);
|
||||||
|
ok(ret == -1, "Expected GetClipRgn to return -1, got %d\n", ret);
|
||||||
|
|
||||||
|
ret = GetClipRgn(hdc, hrgn2);
|
||||||
|
ok(ret == 1, "Expected GetClipRgn to return 1, got %d\n", ret);
|
||||||
|
|
||||||
|
ret = EqualRgn(hrgn, hrgn2);
|
||||||
|
ok(ret == 1,
|
||||||
|
"Expected EqualRgn to compare the two regions as equal, got %d\n", ret);
|
||||||
|
|
||||||
|
/* Try unsetting and then query the clipping region. */
|
||||||
|
ret = SelectClipRgn(hdc, NULL);
|
||||||
|
ok(ret == SIMPLEREGION,
|
||||||
|
"Expected SelectClipRgn to return SIMPLEREGION, got %d\n", ret);
|
||||||
|
|
||||||
|
ret = GetClipRgn(hdc, NULL);
|
||||||
|
ok(ret == 0 ||
|
||||||
|
ret == -1 /* Win9x */,
|
||||||
|
"Expected GetClipRgn to return 0, got %d\n", ret);
|
||||||
|
|
||||||
|
ret = GetClipRgn(hdc, hrgn3);
|
||||||
|
ok(ret == 0, "Expected GetClipRgn to return 0, got %d\n", ret);
|
||||||
|
|
||||||
|
ret = EqualRgn(hrgn3, hrgn4);
|
||||||
|
ok(ret == 1,
|
||||||
|
"Expected EqualRgn to compare the two regions as equal, got %d\n", ret);
|
||||||
|
|
||||||
|
DeleteObject(hrgn4);
|
||||||
|
DeleteObject(hrgn3);
|
||||||
|
DeleteObject(hrgn2);
|
||||||
|
DeleteObject(hrgn);
|
||||||
|
ReleaseDC(NULL, hdc);
|
||||||
|
}
|
||||||
|
|
||||||
START_TEST(clipping)
|
START_TEST(clipping)
|
||||||
{
|
{
|
||||||
test_GetRandomRgn();
|
test_GetRandomRgn();
|
||||||
test_ExtCreateRegion();
|
test_ExtCreateRegion();
|
||||||
|
test_GetClipRgn();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue