[PATCH 2/5] d2d1/tests: Add some extend mode tests to test_bitmap_brush().

Henri Verbeet hverbeet at codeweavers.com
Tue Apr 28 13:30:52 CDT 2015


---
 dlls/d2d1/tests/d2d1.c |   49 ++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 49 insertions(+)

diff --git a/dlls/d2d1/tests/d2d1.c b/dlls/d2d1/tests/d2d1.c
index 357a518..29e1bc6 100644
--- a/dlls/d2d1/tests/d2d1.c
+++ b/dlls/d2d1/tests/d2d1.c
@@ -706,11 +706,32 @@ static void test_bitmap_brush(void)
     IDXGISurface *surface;
     D2D1_COLOR_F color;
     D2D1_SIZE_U size;
+    unsigned int i;
     ULONG refcount;
     float opacity;
     HWND window;
     HRESULT hr;
 
+    static const struct
+    {
+        D2D1_EXTEND_MODE extend_mode_x;
+        D2D1_EXTEND_MODE extend_mode_y;
+        float translate_x;
+        float translate_y;
+        D2D1_RECT_F rect;
+    }
+    extend_mode_tests[] =
+    {
+        {D2D1_EXTEND_MODE_MIRROR, D2D1_EXTEND_MODE_MIRROR, -7.0f, 1.0f, {-4.0f,  0.0f, -8.0f,  4.0f}},
+        {D2D1_EXTEND_MODE_WRAP,   D2D1_EXTEND_MODE_MIRROR, -3.0f, 1.0f, {-4.0f,  4.0f,  0.0f,  0.0f}},
+        {D2D1_EXTEND_MODE_CLAMP,  D2D1_EXTEND_MODE_MIRROR,  1.0f, 1.0f, { 4.0f,  0.0f,  0.0f,  4.0f}},
+        {D2D1_EXTEND_MODE_MIRROR, D2D1_EXTEND_MODE_WRAP,   -7.0f, 5.0f, {-8.0f,  8.0f, -4.0f,  4.0f}},
+        {D2D1_EXTEND_MODE_WRAP,   D2D1_EXTEND_MODE_WRAP,   -3.0f, 5.0f, { 0.0f,  4.0f, -4.0f,  8.0f}},
+        {D2D1_EXTEND_MODE_CLAMP,  D2D1_EXTEND_MODE_WRAP,    1.0f, 5.0f, { 0.0f,  8.0f,  4.0f,  4.0f}},
+        {D2D1_EXTEND_MODE_MIRROR, D2D1_EXTEND_MODE_CLAMP,  -7.0f, 9.0f, {-4.0f,  8.0f, -8.0f, 12.0f}},
+        {D2D1_EXTEND_MODE_WRAP,   D2D1_EXTEND_MODE_CLAMP,  -3.0f, 9.0f, {-4.0f, 12.0f,  0.0f,  8.0f}},
+        {D2D1_EXTEND_MODE_CLAMP,  D2D1_EXTEND_MODE_CLAMP,   1.0f, 9.0f, { 4.0f,  8.0f,  0.0f, 12.0f}},
+    };
     static const DWORD bitmap_data[] =
     {
         0xffff0000, 0xffffff00, 0xff00ff00, 0xff00ffff,
@@ -814,6 +835,34 @@ static void test_bitmap_brush(void)
     ok(SUCCEEDED(hr), "Failed to end draw, hr %#x.\n", hr);
     ok(compare_surface(surface, "393636185359a550d459e1e5f0e25411814f724c"), "Surface does not match.\n");
 
+    ID2D1RenderTarget_BeginDraw(rt);
+
+    ID2D1RenderTarget_Clear(rt, &color);
+
+    ID2D1BitmapBrush_SetOpacity(brush, 1.0f);
+    for (i = 0; i < sizeof(extend_mode_tests) / sizeof(*extend_mode_tests); ++i)
+    {
+        ID2D1BitmapBrush_SetExtendModeX(brush, extend_mode_tests[i].extend_mode_x);
+        extend_mode = ID2D1BitmapBrush_GetExtendModeX(brush);
+        ok(extend_mode == extend_mode_tests[i].extend_mode_x,
+                "Test %u: Got unexpected extend mode %#x, expected %#x.\n",
+                i, extend_mode, extend_mode_tests[i].extend_mode_x);
+        ID2D1BitmapBrush_SetExtendModeY(brush, extend_mode_tests[i].extend_mode_y);
+        extend_mode = ID2D1BitmapBrush_GetExtendModeY(brush);
+        ok(extend_mode == extend_mode_tests[i].extend_mode_y,
+                "Test %u: Got unexpected extend mode %#x, expected %#x.\n",
+                i, extend_mode, extend_mode_tests[i].extend_mode_y);
+        set_matrix_identity(&matrix);
+        translate_matrix(&matrix, extend_mode_tests[i].translate_x, extend_mode_tests[i].translate_y);
+        scale_matrix(&matrix, 0.5f, 0.5f);
+        ID2D1BitmapBrush_SetTransform(brush, &matrix);
+        ID2D1RenderTarget_FillRectangle(rt, &extend_mode_tests[i].rect, (ID2D1Brush *)brush);
+    }
+
+    hr = ID2D1RenderTarget_EndDraw(rt, NULL, NULL);
+    ok(SUCCEEDED(hr), "Failed to end draw, hr %#x.\n", hr);
+    ok(compare_surface(surface, "b4b775afecdae2d26642001f4faff73663bb8b31"), "Surface does not match.\n");
+
     ID2D1BitmapBrush_Release(brush);
     refcount = ID2D1Bitmap_Release(bitmap);
     ok(!refcount, "Bitmap has %u references left.\n", refcount);
-- 
1.7.10.4




More information about the wine-patches mailing list