gdiplus/tests: Add tests for GdipGetVisibleClipBounds.

This commit is contained in:
Andrew Eikum 2009-08-12 15:37:42 -05:00 committed by Alexandre Julliard
parent ef0ee6e556
commit 60fc01a0c4
1 changed files with 244 additions and 0 deletions

View File

@ -1660,6 +1660,249 @@ static void test_GdipDrawString(void)
ReleaseDC(0, hdc); ReleaseDC(0, hdc);
} }
static void test_GdipGetVisibleClipBounds_screen(void)
{
GpStatus status;
GpGraphics *graphics = NULL;
HDC hdc = GetDC(0);
GpRectF rectf, exp, clipr;
GpRect recti;
ok(hdc != NULL, "Expected HDC to be initialized\n");
status = GdipCreateFromHDC(hdc, &graphics);
expect(Ok, status);
ok(graphics != NULL, "Expected graphics to be initialized\n");
/* no clipping rect */
exp.X = 0;
exp.Y = 0;
exp.Width = GetDeviceCaps(hdc, HORZRES);
exp.Height = GetDeviceCaps(hdc, VERTRES);
status = GdipGetVisibleClipBounds(graphics, &rectf);
expect(Ok, status);
ok(rectf.X == exp.X &&
rectf.Y == exp.Y &&
rectf.Width == exp.Width &&
rectf.Height == exp.Height,
"Expected clip bounds (%0.f, %0.f, %0.f, %0.f) to be the size of "
"the screen (%0.f, %0.f, %0.f, %0.f)\n",
rectf.X, rectf.Y, rectf.Width, rectf.Height,
exp.X, exp.Y, exp.Width, exp.Height);
/* clipping rect entirely within window */
exp.X = clipr.X = 10;
exp.Y = clipr.Y = 12;
exp.Width = clipr.Width = 14;
exp.Height = clipr.Height = 16;
status = GdipSetClipRect(graphics, clipr.X, clipr.Y, clipr.Width, clipr.Height, CombineModeReplace);
expect(Ok, status);
status = GdipGetVisibleClipBounds(graphics, &rectf);
expect(Ok, status);
ok(rectf.X == exp.X &&
rectf.Y == exp.Y &&
rectf.Width == exp.Width &&
rectf.Height == exp.Height,
"Expected clip bounds (%0.f, %0.f, %0.f, %0.f) to be the size of "
"the clipping rect (%0.f, %0.f, %0.f, %0.f)\n",
rectf.X, rectf.Y, rectf.Width, rectf.Height,
exp.X, exp.Y, exp.Width, exp.Height);
/* clipping rect partially outside of screen */
clipr.X = -10;
clipr.Y = -12;
clipr.Width = 20;
clipr.Height = 24;
status = GdipSetClipRect(graphics, clipr.X, clipr.Y, clipr.Width, clipr.Height, CombineModeReplace);
expect(Ok, status);
exp.X = 0;
exp.Y = 0;
exp.Width = 10;
exp.Height = 12;
status = GdipGetVisibleClipBounds(graphics, &rectf);
expect(Ok, status);
ok(rectf.X == exp.X &&
rectf.Y == exp.Y &&
rectf.Width == exp.Width &&
rectf.Height == exp.Height,
"Expected clip bounds (%0.f, %0.f, %0.f, %0.f) to be the size of "
"the visible clipping rect (%0.f, %0.f, %0.f, %0.f)\n",
rectf.X, rectf.Y, rectf.Width, rectf.Height,
exp.X, exp.Y, exp.Width, exp.Height);
status = GdipGetVisibleClipBoundsI(graphics, &recti);
expect(Ok, status);
ok(recti.X == exp.X &&
recti.Y == exp.Y &&
recti.Width == exp.Width &&
recti.Height == exp.Height,
"Expected clip bounds (%d, %d, %d, %d) to be the size of "
"the visible clipping rect (%0.f, %0.f, %0.f, %0.f)\n",
recti.X, recti.Y, recti.Width, recti.Height,
exp.X, exp.Y, exp.Width, exp.Height);
GdipDeleteGraphics(graphics);
ReleaseDC(0, hdc);
}
static void test_GdipGetVisibleClipBounds_window(void)
{
GpStatus status;
GpGraphics *graphics = NULL;
GpRectF rectf, window, exp, clipr;
GpRect recti;
HWND hwnd;
WNDCLASSA class;
HDC hdc;
PAINTSTRUCT ps;
HINSTANCE hInstance = GetModuleHandle(NULL);
RECT wnd_rect;
window.X = 0;
window.Y = 0;
window.Width = 200;
window.Height = 300;
class.lpszClassName = "ClipBoundsTestClass";
class.style = CS_HREDRAW | CS_VREDRAW;
class.lpfnWndProc = DefWindowProcA;
class.hInstance = hInstance;
class.hIcon = LoadIcon(0, IDI_APPLICATION);
class.hCursor = LoadCursor(NULL, IDC_ARROW);
class.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
class.lpszMenuName = 0;
class.cbClsExtra = 0;
class.cbWndExtra = 0;
RegisterClass(&class);
hwnd = CreateWindow(class.lpszClassName, "ClipboundsTest",
WS_OVERLAPPEDWINDOW, window.X, window.Y, window.Width, window.Height,
NULL, NULL, hInstance, NULL);
ok(hwnd != NULL, "Expected window to be created\n");
/* get client area size */
ok(GetClientRect(hwnd, &wnd_rect), "GetClientRect should have succeeded");
window.X = wnd_rect.left;
window.Y = wnd_rect.top;
window.Width = wnd_rect.right - wnd_rect.left;
window.Height = wnd_rect.bottom - wnd_rect.top;
hdc = BeginPaint(hwnd, &ps);
status = GdipCreateFromHDC(hdc, &graphics);
expect(Ok, status);
ok(graphics != NULL, "Expected graphics to be initialized\n");
status = GdipGetVisibleClipBounds(graphics, &rectf);
expect(Ok, status);
ok(rectf.X == window.X &&
rectf.Y == window.Y &&
rectf.Width == window.Width &&
rectf.Height == window.Height,
"Expected clip bounds (%0.f, %0.f, %0.f, %0.f) to be the size of "
"the window (%0.f, %0.f, %0.f, %0.f)\n",
rectf.X, rectf.Y, rectf.Width, rectf.Height,
window.X, window.Y, window.Width, window.Height);
/* clipping rect entirely within window */
exp.X = clipr.X = 20;
exp.Y = clipr.Y = 8;
exp.Width = clipr.Width = 30;
exp.Height = clipr.Height = 20;
status = GdipSetClipRect(graphics, clipr.X, clipr.Y, clipr.Width, clipr.Height, CombineModeReplace);
expect(Ok, status);
status = GdipGetVisibleClipBounds(graphics, &rectf);
expect(Ok, status);
ok(rectf.X == exp.X &&
rectf.Y == exp.Y &&
rectf.Width == exp.Width &&
rectf.Height == exp.Height,
"Expected clip bounds (%0.f, %0.f, %0.f, %0.f) to be the size of "
"the clipping rect (%0.f, %0.f, %0.f, %0.f)\n",
rectf.X, rectf.Y, rectf.Width, rectf.Height,
exp.X, exp.Y, exp.Width, exp.Height);
/* clipping rect partially outside of window */
clipr.X = window.Width - 10;
clipr.Y = window.Height - 15;
clipr.Width = 20;
clipr.Height = 30;
status = GdipSetClipRect(graphics, clipr.X, clipr.Y, clipr.Width, clipr.Height, CombineModeReplace);
expect(Ok, status);
exp.X = window.Width - 10;
exp.Y = window.Height - 15;
exp.Width = 10;
exp.Height = 15;
status = GdipGetVisibleClipBounds(graphics, &rectf);
expect(Ok, status);
ok(rectf.X == exp.X &&
rectf.Y == exp.Y &&
rectf.Width == exp.Width &&
rectf.Height == exp.Height,
"Expected clip bounds (%0.f, %0.f, %0.f, %0.f) to be the size of "
"the visible clipping rect (%0.f, %0.f, %0.f, %0.f)\n",
rectf.X, rectf.Y, rectf.Width, rectf.Height,
exp.X, exp.Y, exp.Width, exp.Height);
status = GdipGetVisibleClipBoundsI(graphics, &recti);
expect(Ok, status);
ok(recti.X == exp.X &&
recti.Y == exp.Y &&
recti.Width == exp.Width &&
recti.Height == exp.Height,
"Expected clip bounds (%d, %d, %d, %d) to be the size of "
"the visible clipping rect (%0.f, %0.f, %0.f, %0.f)\n",
recti.X, recti.Y, recti.Width, recti.Height,
exp.X, exp.Y, exp.Width, exp.Height);
GdipDeleteGraphics(graphics);
EndPaint(hwnd, &ps);
DestroyWindow(hwnd);
}
static void test_GdipGetVisibleClipBounds(void)
{
GpGraphics* graphics = NULL;
GpRectF rectf;
GpRect rect;
HDC hdc = GetDC(0);
GpStatus status;
status = GdipCreateFromHDC(hdc, &graphics);
expect(Ok, status);
ok(graphics != NULL, "Expected graphics to be initialized\n");
/* test null parameters */
status = GdipGetVisibleClipBounds(graphics, NULL);
expect(InvalidParameter, status);
status = GdipGetVisibleClipBounds(NULL, &rectf);
expect(InvalidParameter, status);
status = GdipGetVisibleClipBoundsI(graphics, NULL);
expect(InvalidParameter, status);
status = GdipGetVisibleClipBoundsI(NULL, &rect);
expect(InvalidParameter, status);
GdipDeleteGraphics(graphics);
ReleaseDC(0, hdc);
test_GdipGetVisibleClipBounds_screen();
test_GdipGetVisibleClipBounds_window();
}
START_TEST(graphics) START_TEST(graphics)
{ {
@ -1687,6 +1930,7 @@ START_TEST(graphics)
test_GdipDrawLineI(); test_GdipDrawLineI();
test_GdipDrawLinesI(); test_GdipDrawLinesI();
test_GdipDrawString(); test_GdipDrawString();
test_GdipGetVisibleClipBounds();
test_Get_Release_DC(); test_Get_Release_DC();
test_BeginContainer2(); test_BeginContainer2();
test_transformpoints(); test_transformpoints();