Nikolay Sivov : dwrite: Fix setting canWrapLineAfter cluster flag.

Alexandre Julliard julliard at wine.codeweavers.com
Tue Jan 26 10:32:51 CST 2016


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

Author: Nikolay Sivov <nsivov at codeweavers.com>
Date:   Tue Jan 26 15:44:47 2016 +0300

dwrite: Fix setting canWrapLineAfter cluster flag.

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

---

 dlls/dwrite/layout.c       | 6 +++---
 dlls/dwrite/tests/layout.c | 5 +++++
 2 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/dlls/dwrite/layout.c b/dlls/dwrite/layout.c
index 27b02dc..da08b39 100644
--- a/dlls/dwrite/layout.c
+++ b/dlls/dwrite/layout.c
@@ -603,10 +603,10 @@ static inline void init_cluster_metrics(const struct dwrite_textlayout *layout,
 
     position = run->descr.textPosition + stop_position;
     if (stop_glyph == run->glyphcount)
-        breakcondition = get_effective_breakpoint(layout, stop_position).breakConditionAfter;
+        breakcondition = get_effective_breakpoint(layout, position).breakConditionAfter;
     else {
-        breakcondition = get_effective_breakpoint(layout, stop_position).breakConditionBefore;
-        if (stop_position) position = stop_position - 1;
+        breakcondition = get_effective_breakpoint(layout, position).breakConditionBefore;
+        if (stop_position) position -= 1;
     }
 
     metrics->canWrapLineAfter = breakcondition == DWRITE_BREAK_CONDITION_CAN_BREAK ||
diff --git a/dlls/dwrite/tests/layout.c b/dlls/dwrite/tests/layout.c
index 00da357..c04e73a 100644
--- a/dlls/dwrite/tests/layout.c
+++ b/dlls/dwrite/tests/layout.c
@@ -1907,6 +1907,7 @@ todo_wine
     ok(hr == S_OK, "got 0x%08x\n", hr);
     ok(count == 2, "got %u\n", count);
     ok(metrics[0].isWhitespace == 0, "got %d\n", metrics[0].isWhitespace);
+    ok(metrics[0].canWrapLineAfter == 0, "got %d\n", metrics[0].canWrapLineAfter);
     ok(metrics[1].isWhitespace == 1, "got %d\n", metrics[1].isWhitespace);
     ok(metrics[1].canWrapLineAfter == 1, "got %d\n", metrics[1].canWrapLineAfter);
     IDWriteTextLayout_Release(layout);
@@ -1990,6 +1991,10 @@ todo_wine {
     for (i = 0; i < count; i++) {
         ok(metrics[i].length == 1, "%d: got %d\n", i, metrics[i].length);
         ok(metrics[i].isSoftHyphen == (i == count - 1), "%d: got %d\n", i, metrics[i].isSoftHyphen);
+        if (metrics[i].isNewline) {
+            ok(metrics[i].width == 0.0f, "%u: got width %f\n", i, metrics[i].width);
+            ok(metrics[i].canWrapLineAfter == 1, "%u: got %d\n", i, metrics[i].canWrapLineAfter);
+        }
     }
 
     IDWriteTextLayout_Release(layout);




More information about the wine-cvs mailing list