[PATCH 4/4] dwrite: Set leading text alignment for default trimming sign
Nikolay Sivov
nsivov at codeweavers.com
Thu Aug 24 06:25:07 CDT 2017
Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
---
dlls/dwrite/layout.c | 2 ++
dlls/dwrite/tests/layout.c | 20 ++++++++++++++++++++
2 files changed, 22 insertions(+)
diff --git a/dlls/dwrite/layout.c b/dlls/dwrite/layout.c
index ff09c78e13..4e901fa5fd 100644
--- a/dlls/dwrite/layout.c
+++ b/dlls/dwrite/layout.c
@@ -5148,6 +5148,8 @@ HRESULT create_trimmingsign(IDWriteFactory5 *factory, IDWriteTextFormat *format,
IDWriteTextLayout_SetWordWrapping(This->layout, DWRITE_WORD_WRAPPING_NO_WRAP);
IDWriteTextLayout_SetParagraphAlignment(This->layout, DWRITE_PARAGRAPH_ALIGNMENT_NEAR);
+ IDWriteTextLayout_SetTextAlignment(This->layout, DWRITE_TEXT_ALIGNMENT_LEADING);
+
*sign = &This->IDWriteInlineObject_iface;
return S_OK;
diff --git a/dlls/dwrite/tests/layout.c b/dlls/dwrite/tests/layout.c
index c03d684054..8ca50f0c6a 100644
--- a/dlls/dwrite/tests/layout.c
+++ b/dlls/dwrite/tests/layout.c
@@ -1237,6 +1237,7 @@ static void test_CreateEllipsisTrimmingSign(void)
static const WCHAR engbW[] = {'e','n','-','G','B',0};
DWRITE_INLINE_OBJECT_METRICS metrics;
DWRITE_BREAK_CONDITION before, after;
+ struct renderer_context ctxt;
IDWriteTextFormat *format;
IDWriteInlineObject *sign;
IDWriteFactory *factory;
@@ -1300,6 +1301,25 @@ if (0) {/* crashes on native */
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);
+ memset(&ctxt, 0, sizeof(ctxt));
+ hr = IDWriteInlineObject_Draw(sign, &ctxt, &testrenderer, 123.0f, 456.0f, FALSE, FALSE, NULL);
+ ok(hr == S_OK, "Failed to draw trimming sign, hr %#x.\n", hr);
+ ok(ctxt.originX == 123.0f && ctxt.originY == 456.0f, "Unexpected drawing origin\n");
+
+ IDWriteInlineObject_Release(sign);
+
+ /* Centered format */
+ hr = IDWriteTextFormat_SetTextAlignment(format, DWRITE_TEXT_ALIGNMENT_CENTER);
+ ok(hr == S_OK, "Failed to set text alignment, hr %#x.\n", hr);
+
+ hr = IDWriteFactory_CreateEllipsisTrimmingSign(factory, format, &sign);
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+
+ memset(&ctxt, 0, sizeof(ctxt));
+ hr = IDWriteInlineObject_Draw(sign, &ctxt, &testrenderer, 123.0f, 456.0f, FALSE, FALSE, NULL);
+ ok(hr == S_OK, "Failed to draw trimming sign, hr %#x.\n", hr);
+ ok(ctxt.originX == 123.0f && ctxt.originY == 456.0f, "Unexpected drawing origin\n");
+
IDWriteInlineObject_Release(sign);
/* non-orthogonal flow/reading combination */
--
2.14.1
More information about the wine-patches
mailing list