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;
|
||||
DC * dc;
|
||||
if (hRgn && (dc = get_dc_ptr( hdc )))
|
||||
if ((dc = get_dc_ptr( hdc )))
|
||||
{
|
||||
if( dc->hClipRgn )
|
||||
{
|
||||
|
|
|
@ -265,8 +265,96 @@ static void test_ExtCreateRegion(void)
|
|||
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)
|
||||
{
|
||||
test_GetRandomRgn();
|
||||
test_ExtCreateRegion();
|
||||
test_GetClipRgn();
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue