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