From 2ea6c93bc419eab03921b48896b9985daea7b8bd Mon Sep 17 00:00:00 2001 From: Vincent Povirk Date: Wed, 4 Oct 2017 14:54:19 -0500 Subject: [PATCH] gdiplus/tests: Add tests for gdi32 transform and clip caching. Signed-off-by: Vincent Povirk Signed-off-by: Alexandre Julliard --- dlls/gdiplus/tests/graphics.c | 70 +++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) diff --git a/dlls/gdiplus/tests/graphics.c b/dlls/gdiplus/tests/graphics.c index 956ddb0a398..a96050b06d6 100644 --- a/dlls/gdiplus/tests/graphics.c +++ b/dlls/gdiplus/tests/graphics.c @@ -6569,6 +6569,75 @@ static void test_cliphrgn_transform(void) ReleaseDC(hwnd, hdc); } +static void test_hdc_caching(void) +{ + GpStatus status; + HDC hdc; + HBITMAP hbm; + GpGraphics *graphics; + ULONG *bits; + BITMAPINFO bmi; + HRGN hrgn; + GpBrush *brush; + + hdc = CreateCompatibleDC(0); + ok(hdc != NULL, "CreateCompatibleDC failed\n"); + bmi.bmiHeader.biSize = sizeof(bmi.bmiHeader); + bmi.bmiHeader.biHeight = -5; + bmi.bmiHeader.biWidth = 5; + bmi.bmiHeader.biBitCount = 32; + bmi.bmiHeader.biPlanes = 1; + bmi.bmiHeader.biCompression = BI_RGB; + bmi.bmiHeader.biClrUsed = 0; + + hbm = CreateDIBSection(hdc, &bmi, DIB_RGB_COLORS, (void**)&bits, NULL, 0); + ok(hbm != NULL, "CreateDIBSection failed\n"); + + SelectObject(hdc, hbm); + + SetViewportOrgEx(hdc, 1, 1, NULL); + + hrgn = CreateRectRgn(0, 0, 3, 3); + SelectClipRgn(hdc, hrgn); + DeleteObject(hrgn); + + status = GdipCreateSolidFill((ARGB)0xffaaaaaa, (GpSolidFill**)&brush); + expect(Ok, status); + + status = GdipCreateFromHDC(hdc, &graphics); + expect(Ok, status); + + memset(bits, 0, sizeof(*bits) * 25); + status = GdipFillRectangleI(graphics, brush, 0, 0, 4, 4); + expect(Ok, status); + + expect(0, bits[0]); + expect(0xffaaaaaa, bits[6]); + expect(0xffaaaaaa, bits[12]); + expect(0, bits[18]); + expect(0, bits[24]); + + SetViewportOrgEx(hdc, 0, 0, NULL); + OffsetClipRgn(hdc, 2, 2); + + memset(bits, 0, sizeof(*bits) * 25); + status = GdipFillRectangleI(graphics, brush, 0, 0, 4, 4); + expect(Ok, status); + + expect(0, bits[0]); + expect(0xffaaaaaa, bits[6]); + expect(0xffaaaaaa, bits[12]); + expect(0, bits[18]); + expect(0, bits[24]); + + GdipDeleteGraphics(graphics); + + GdipDeleteBrush(brush); + + DeleteDC(hdc); + DeleteObject(hbm); +} + START_TEST(graphics) { struct GdiplusStartupInput gdiplusStartupInput; @@ -6659,6 +6728,7 @@ START_TEST(graphics) test_container_rects(); test_GdipGraphicsSetAbort(); test_cliphrgn_transform(); + test_hdc_caching(); GdiplusShutdown(gdiplusToken); DestroyWindow( hwnd );