[PATCH 1/2] d2d1/tests: DrawTextLayout() ignores effects that are not brushes

Nikolay Sivov nsivov at codeweavers.com
Sun Oct 30 12:01:52 CDT 2016


Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
---

Docs mention that render target enters error state if drawing effect is ID2D1Resource,
but not a brush, turns out it's not true.

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

diff --git a/dlls/d2d1/tests/d2d1.c b/dlls/d2d1/tests/d2d1.c
index b49ed7d..cf24841 100644
--- a/dlls/d2d1/tests/d2d1.c
+++ b/dlls/d2d1/tests/d2d1.c
@@ -2637,6 +2637,8 @@ static void test_draw_text_layout(void)
     DWRITE_TEXT_RANGE range;
     D2D1_COLOR_F color;
     ID2D1SolidColorBrush *brush, *brush2;
+    ID2D1RectangleGeometry *geometry;
+    D2D1_RECT_F rect;
 
     if (!(device = create_device()))
     {
@@ -2702,6 +2704,26 @@ static void test_draw_text_layout(void)
 todo_wine
     ok(hr == D2DERR_WRONG_FACTORY, "EndDraw failure expected, hr %#x.\n", hr);
 
+    /* Effect is d2d resource, but not a brush. */
+    rect.left = rect.top = 0.0f;
+    rect.right = rect.bottom = 10.0f;
+    hr = ID2D1Factory_CreateRectangleGeometry(factory, &rect, &geometry);
+    ok(SUCCEEDED(hr), "Failed to geometry, hr %#x.\n", hr);
+
+    range.startPosition = 0;
+    range.length = 4;
+    hr = IDWriteTextLayout_SetDrawingEffect(text_layout, (IUnknown*)geometry, range);
+    ok(SUCCEEDED(hr), "Failed to set drawing effect, hr %#x.\n", hr);
+    ID2D1RectangleGeometry_Release(geometry);
+
+    ID2D1RenderTarget_BeginDraw(rt);
+
+    origin.x = origin.y = 0.0f;
+    ID2D1RenderTarget_DrawTextLayout(rt, origin, text_layout, (ID2D1Brush*)brush, D2D1_DRAW_TEXT_OPTIONS_NONE);
+
+    hr = ID2D1RenderTarget_EndDraw(rt, NULL, NULL);
+    ok(hr == S_OK, "EndDraw failure expected, hr %#x.\n", hr);
+
     IDWriteTextFormat_Release(text_format);
     IDWriteTextLayout_Release(text_layout);
     IDWriteFactory_Release(dwrite_factory);
-- 
2.10.1




More information about the wine-patches mailing list