Nikolay Sivov : dwrite: Don't use drawing effect for trimming signs.

Alexandre Julliard julliard at winehq.org
Thu Aug 24 14:18:26 CDT 2017


Module: wine
Branch: master
Commit: d58166d47c9894bbec88225957232c18878cc697
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=d58166d47c9894bbec88225957232c18878cc697

Author: Nikolay Sivov <nsivov at codeweavers.com>
Date:   Thu Aug 24 14:25:06 2017 +0300

dwrite: Don't use drawing effect for trimming signs.

Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/dwrite/layout.c       |  7 +------
 dlls/dwrite/tests/layout.c | 12 ++++++++++--
 2 files changed, 11 insertions(+), 8 deletions(-)

diff --git a/dlls/dwrite/layout.c b/dlls/dwrite/layout.c
index 1acf134..ff09c78 100644
--- a/dlls/dwrite/layout.c
+++ b/dlls/dwrite/layout.c
@@ -5030,20 +5030,15 @@ static HRESULT WINAPI dwritetrimmingsign_Draw(IDWriteInlineObject *iface, void *
     FLOAT originX, FLOAT originY, BOOL is_sideways, BOOL is_rtl, IUnknown *effect)
 {
     struct dwrite_trimmingsign *This = impl_from_IDWriteInlineObject(iface);
-    DWRITE_TEXT_RANGE range = { 0, ~0u };
     DWRITE_TEXT_METRICS metrics;
     DWRITE_LINE_METRICS line;
     UINT32 line_count;
-    HRESULT hr;
 
     TRACE("(%p)->(%p %p %.2f %.2f %d %d %p)\n", This, context, renderer, originX, originY, is_sideways, is_rtl, effect);
 
-    IDWriteTextLayout_SetDrawingEffect(This->layout, effect, range);
     IDWriteTextLayout_GetLineMetrics(This->layout, &line, 1, &line_count);
     IDWriteTextLayout_GetMetrics(This->layout, &metrics);
-    hr = IDWriteTextLayout_Draw(This->layout, context, renderer, originX, originY - line.baseline);
-    IDWriteTextLayout_SetDrawingEffect(This->layout, NULL, range);
-    return hr;
+    return IDWriteTextLayout_Draw(This->layout, context, renderer, originX, originY - line.baseline);
 }
 
 static HRESULT WINAPI dwritetrimmingsign_GetMetrics(IDWriteInlineObject *iface, DWRITE_INLINE_OBJECT_METRICS *ret)
diff --git a/dlls/dwrite/tests/layout.c b/dlls/dwrite/tests/layout.c
index c4034a1..c03d684 100644
--- a/dlls/dwrite/tests/layout.c
+++ b/dlls/dwrite/tests/layout.c
@@ -1228,12 +1228,13 @@ static void test_GetLocaleName(void)
 }
 
 static const struct drawcall_entry drawellipsis_seq[] = {
-    { DRAW_GLYPHRUN, {0x2026, 0}, {'e','n','-','u','s',0}, 1 },
+    { DRAW_GLYPHRUN, {0x2026, 0}, {'e','n','-','g','b',0}, 1 },
     { DRAW_LAST_KIND }
 };
 
 static void test_CreateEllipsisTrimmingSign(void)
 {
+    static const WCHAR engbW[] = {'e','n','-','G','B',0};
     DWRITE_INLINE_OBJECT_METRICS metrics;
     DWRITE_BREAK_CONDITION before, after;
     IDWriteTextFormat *format;
@@ -1245,7 +1246,7 @@ static void test_CreateEllipsisTrimmingSign(void)
     factory = create_factory();
 
     hr = IDWriteFactory_CreateTextFormat(factory, tahomaW, NULL, DWRITE_FONT_WEIGHT_NORMAL, DWRITE_FONT_STYLE_NORMAL,
-        DWRITE_FONT_STRETCH_NORMAL, 10.0, enusW, &format);
+        DWRITE_FONT_STRETCH_NORMAL, 10.0, engbW, &format);
     ok(hr == S_OK, "got 0x%08x\n", hr);
 
     EXPECT_REF(format, 1);
@@ -1286,12 +1287,19 @@ if (0) {/* crashes on native */
     effect = create_test_effect();
 
     EXPECT_REF(effect, 1);
+    flush_sequence(sequences, RENDERER_ID);
     hr = IDWriteInlineObject_Draw(sign, NULL, &testrenderer, 0.0f, 0.0f, FALSE, FALSE, effect);
     ok(hr == S_OK, "Failed to draw trimming sign, hr %#x.\n", hr);
+    ok_sequence(sequences, RENDERER_ID, drawellipsis_seq, "ellipsis sign draw with effect test", FALSE);
     EXPECT_REF(effect, 1);
 
     IUnknown_Release(effect);
 
+    flush_sequence(sequences, RENDERER_ID);
+    hr = IDWriteInlineObject_Draw(sign, NULL, &testrenderer, 0.0f, 0.0f, FALSE, FALSE, (void *)0xdeadbeef);
+    ok(hr == S_OK, "Failed to draw trimming sign, hr %#x.\n", hr);
+    ok_sequence(sequences, RENDERER_ID, drawellipsis_seq, "ellipsis sign draw with effect test", FALSE);
+
     IDWriteInlineObject_Release(sign);
 
     /* non-orthogonal flow/reading combination */




More information about the wine-cvs mailing list