Andrew Eikum : gdiplus/tests: Add tests for GdipGetVisibleClipBounds.
Alexandre Julliard
julliard at winehq.org
Thu Aug 13 10:41:28 CDT 2009
Module: wine
Branch: master
Commit: 60fc01a0c4e17275f5435198a63fb9695f1902a4
URL: http://source.winehq.org/git/wine.git/?a=commit;h=60fc01a0c4e17275f5435198a63fb9695f1902a4
Author: Andrew Eikum <aeikum at codeweavers.com>
Date: Wed Aug 12 15:37:42 2009 -0500
gdiplus/tests: Add tests for GdipGetVisibleClipBounds.
---
dlls/gdiplus/tests/graphics.c | 244 +++++++++++++++++++++++++++++++++++++++++
1 files changed, 244 insertions(+), 0 deletions(-)
diff --git a/dlls/gdiplus/tests/graphics.c b/dlls/gdiplus/tests/graphics.c
index fbd9a48..54d9b32 100644
--- a/dlls/gdiplus/tests/graphics.c
+++ b/dlls/gdiplus/tests/graphics.c
@@ -1660,6 +1660,249 @@ static void test_GdipDrawString(void)
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)
{
@@ -1687,6 +1930,7 @@ START_TEST(graphics)
test_GdipDrawLineI();
test_GdipDrawLinesI();
test_GdipDrawString();
+ test_GdipGetVisibleClipBounds();
test_Get_Release_DC();
test_BeginContainer2();
test_transformpoints();
More information about the wine-cvs
mailing list