Nikolay Sivov : dwrite/tests: Test character spacing applied to cluster metrics.
Alexandre Julliard
julliard at wine.codeweavers.com
Mon May 4 07:58:54 CDT 2015
Module: wine
Branch: master
Commit: 47224510b466f8e9479ecacc50b3f0a5e4815d5e
URL: http://source.winehq.org/git/wine.git/?a=commit;h=47224510b466f8e9479ecacc50b3f0a5e4815d5e
Author: Nikolay Sivov <nsivov at codeweavers.com>
Date: Mon May 4 12:52:50 2015 +0300
dwrite/tests: Test character spacing applied to cluster metrics.
---
dlls/dwrite/tests/layout.c | 44 ++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 44 insertions(+)
diff --git a/dlls/dwrite/tests/layout.c b/dlls/dwrite/tests/layout.c
index 57ae458..73296ba 100644
--- a/dlls/dwrite/tests/layout.c
+++ b/dlls/dwrite/tests/layout.c
@@ -994,6 +994,7 @@ static void test_GetClusterMetrics(void)
static const WCHAR strW[] = {'a','b','c','d',0};
DWRITE_INLINE_OBJECT_METRICS inline_metrics;
DWRITE_CLUSTER_METRICS metrics[4];
+ IDWriteTextLayout1 *layout1;
IDWriteInlineObject *trimm;
IDWriteTextFormat *format;
IDWriteTextLayout *layout;
@@ -1026,6 +1027,49 @@ static void test_GetClusterMetrics(void)
ok(metrics[i].length == 1, "%u: got length %u\n", i, metrics[i].length);
}
+ /* apply spacing and check widths again */
+ if (IDWriteTextLayout_QueryInterface(layout, &IID_IDWriteTextLayout1, (void**)&layout1) == S_OK) {
+ DWRITE_CLUSTER_METRICS metrics2[4];
+ FLOAT leading, trailing, min_advance;
+ DWRITE_TEXT_RANGE r;
+
+ leading = trailing = min_advance = 2.0;
+ hr = IDWriteTextLayout1_GetCharacterSpacing(layout1, 0, &leading, &trailing,
+ &min_advance, NULL);
+todo_wine {
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+ ok(leading == 0.0 && trailing == 0.0 && min_advance == 0.0,
+ "got %.2f, %.2f, %.2f\n", leading, trailing, min_advance);
+}
+ r.startPosition = 0;
+ r.length = 4;
+ hr = IDWriteTextLayout1_SetCharacterSpacing(layout1, 10.0, 15.0, 0.0, r);
+todo_wine
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+
+ count = 0;
+ hr = IDWriteTextLayout_GetClusterMetrics(layout, metrics2, sizeof(metrics2)/sizeof(metrics2[0]), &count);
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+ ok(count == 4, "got %u\n", count);
+ for (i = 0; i < count; i++) {
+todo_wine
+ ok(metrics2[i].width > metrics[i].width, "%u: got width %.2f, was %.2f\n", i, metrics2[i].width,
+ metrics[i].width);
+ ok(metrics2[i].length == 1, "%u: got length %u\n", i, metrics2[i].length);
+ }
+
+ /* back to defaults */
+ r.startPosition = 0;
+ r.length = 4;
+ hr = IDWriteTextLayout1_SetCharacterSpacing(layout1, 0.0, 0.0, 0.0, r);
+todo_wine
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+
+ IDWriteTextLayout1_Release(layout1);
+ }
+ else
+ win_skip("IDWriteTextLayout1 is not supported, cluster spacing test skipped.\n");
+
hr = IDWriteFactory_CreateEllipsisTrimmingSign(factory, format, &trimm);
ok(hr == S_OK, "got 0x%08x\n", hr);
More information about the wine-cvs
mailing list