Nikolay Sivov : dwrite: Return default text format properties.

Alexandre Julliard julliard at winehq.org
Mon Apr 7 13:20:06 CDT 2014


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

Author: Nikolay Sivov <nsivov at codeweavers.com>
Date:   Mon Apr  7 09:18:30 2014 +0400

dwrite: Return default text format properties.

---

 dlls/dwrite/layout.c       |   55 ++++++++++++++++++++++++++++++++++----------
 dlls/dwrite/tests/layout.c |   29 +++++++++++++++++++++++
 2 files changed, 72 insertions(+), 12 deletions(-)

diff --git a/dlls/dwrite/layout.c b/dlls/dwrite/layout.c
index b77f29f..942673d 100644
--- a/dlls/dwrite/layout.c
+++ b/dlls/dwrite/layout.c
@@ -42,6 +42,15 @@ struct dwrite_textformat_data {
     DWRITE_FONT_STYLE style;
     DWRITE_FONT_STRETCH stretch;
 
+    DWRITE_PARAGRAPH_ALIGNMENT paralign;
+    DWRITE_READING_DIRECTION readingdir;
+    DWRITE_WORD_WRAPPING wrapping;
+    DWRITE_TEXT_ALIGNMENT textalignment;
+    DWRITE_FLOW_DIRECTION flow;
+    DWRITE_LINE_SPACING_METHOD spacingmethod;
+
+    FLOAT spacing;
+    FLOAT baseline;
     FLOAT size;
 
     IDWriteFontCollection *collection;
@@ -699,6 +708,16 @@ static void layout_format_from_textformat(struct dwrite_textlayout *layout, IDWr
         layout->format.style   = IDWriteTextFormat_GetFontStyle(format);
         layout->format.stretch = IDWriteTextFormat_GetFontStretch(format);
         layout->format.size    = IDWriteTextFormat_GetFontSize(format);
+        layout->format.textalignment = IDWriteTextFormat_GetTextAlignment(format);
+        layout->format.paralign = IDWriteTextFormat_GetParagraphAlignment(format);
+        layout->format.wrapping = IDWriteTextFormat_GetWordWrapping(format);
+        layout->format.readingdir = IDWriteTextFormat_GetReadingDirection(format);
+        layout->format.flow = IDWriteTextFormat_GetFlowDirection(format);
+        IDWriteTextFormat_GetLineSpacing(format,
+            &layout->format.spacingmethod,
+            &layout->format.spacing,
+            &layout->format.baseline
+        );
 
         /* locale name and length */
         locale_len = IDWriteTextFormat_GetLocaleNameLength(format);
@@ -840,36 +859,36 @@ static HRESULT WINAPI dwritetextformat_SetLineSpacing(IDWriteTextFormat *iface,
 static DWRITE_TEXT_ALIGNMENT WINAPI dwritetextformat_GetTextAlignment(IDWriteTextFormat *iface)
 {
     struct dwrite_textformat *This = impl_from_IDWriteTextFormat(iface);
-    FIXME("(%p): stub\n", This);
-    return DWRITE_TEXT_ALIGNMENT_LEADING;
+    TRACE("(%p)\n", This);
+    return This->format.textalignment;
 }
 
 static DWRITE_PARAGRAPH_ALIGNMENT WINAPI dwritetextformat_GetParagraphAlignment(IDWriteTextFormat *iface)
 {
     struct dwrite_textformat *This = impl_from_IDWriteTextFormat(iface);
-    FIXME("(%p): stub\n", This);
-    return DWRITE_PARAGRAPH_ALIGNMENT_NEAR;
+    TRACE("(%p)\n", This);
+    return This->format.paralign;
 }
 
 static DWRITE_WORD_WRAPPING WINAPI dwritetextformat_GetWordWrapping(IDWriteTextFormat *iface)
 {
     struct dwrite_textformat *This = impl_from_IDWriteTextFormat(iface);
-    FIXME("(%p): stub\n", This);
-    return DWRITE_WORD_WRAPPING_NO_WRAP;
+    TRACE("(%p)\n", This);
+    return This->format.wrapping;
 }
 
 static DWRITE_READING_DIRECTION WINAPI dwritetextformat_GetReadingDirection(IDWriteTextFormat *iface)
 {
     struct dwrite_textformat *This = impl_from_IDWriteTextFormat(iface);
-    FIXME("(%p): stub\n", This);
-    return DWRITE_READING_DIRECTION_LEFT_TO_RIGHT;
+    TRACE("(%p)\n", This);
+    return This->format.readingdir;
 }
 
 static DWRITE_FLOW_DIRECTION WINAPI dwritetextformat_GetFlowDirection(IDWriteTextFormat *iface)
 {
     struct dwrite_textformat *This = impl_from_IDWriteTextFormat(iface);
-    FIXME("(%p): stub\n", This);
-    return DWRITE_FLOW_DIRECTION_TOP_TO_BOTTOM;
+    TRACE("(%p)\n", This);
+    return This->format.flow;
 }
 
 static FLOAT WINAPI dwritetextformat_GetIncrementalTabStop(IDWriteTextFormat *iface)
@@ -891,8 +910,12 @@ static HRESULT WINAPI dwritetextformat_GetLineSpacing(IDWriteTextFormat *iface,
     FLOAT *spacing, FLOAT *baseline)
 {
     struct dwrite_textformat *This = impl_from_IDWriteTextFormat(iface);
-    FIXME("(%p)->(%p %p %p): stub\n", This, method, spacing, baseline);
-    return E_NOTIMPL;
+    TRACE("(%p)->(%p %p %p)\n", This, method, spacing, baseline);
+
+    *method = This->format.spacingmethod;
+    *spacing = This->format.spacing;
+    *baseline = This->format.baseline;
+    return S_OK;
 }
 
 static HRESULT WINAPI dwritetextformat_GetFontCollection(IDWriteTextFormat *iface, IDWriteFontCollection **collection)
@@ -1022,6 +1045,14 @@ HRESULT create_textformat(const WCHAR *family_name, IDWriteFontCollection *colle
     This->format.style = style;
     This->format.size = size;
     This->format.stretch = stretch;
+    This->format.textalignment = DWRITE_TEXT_ALIGNMENT_LEADING;
+    This->format.paralign = DWRITE_PARAGRAPH_ALIGNMENT_NEAR;
+    This->format.wrapping = DWRITE_WORD_WRAPPING_WRAP;
+    This->format.readingdir = DWRITE_READING_DIRECTION_LEFT_TO_RIGHT;
+    This->format.flow = DWRITE_FLOW_DIRECTION_TOP_TO_BOTTOM;
+    This->format.spacingmethod = DWRITE_LINE_SPACING_METHOD_DEFAULT;
+    This->format.spacing = 0.0;
+    This->format.baseline = 0.0;
 
     if (collection)
     {
diff --git a/dlls/dwrite/tests/layout.c b/dlls/dwrite/tests/layout.c
index 9656ba6..b531b03 100644
--- a/dlls/dwrite/tests/layout.c
+++ b/dlls/dwrite/tests/layout.c
@@ -110,7 +110,14 @@ static void test_CreateGdiCompatibleTextLayout(void)
 static void test_CreateTextFormat(void)
 {
     IDWriteFontCollection *collection, *syscoll;
+    DWRITE_PARAGRAPH_ALIGNMENT paralign;
+    DWRITE_READING_DIRECTION readdir;
+    DWRITE_WORD_WRAPPING wrapping;
+    DWRITE_TEXT_ALIGNMENT align;
+    DWRITE_FLOW_DIRECTION flow;
+    DWRITE_LINE_SPACING_METHOD method;
     IDWriteTextFormat *format;
+    FLOAT spacing, baseline;
     HRESULT hr;
 
     hr = IDWriteFactory_CreateTextFormat(factory, tahomaW, NULL, DWRITE_FONT_WEIGHT_NORMAL, DWRITE_FONT_STYLE_NORMAL,
@@ -131,6 +138,28 @@ if (0) /* crashes on native */
     IDWriteFontCollection_Release(syscoll);
     IDWriteFontCollection_Release(collection);
 
+    /* default format properties */
+    align = IDWriteTextFormat_GetTextAlignment(format);
+    ok(align == DWRITE_TEXT_ALIGNMENT_LEADING, "got %d\n", align);
+
+    paralign = IDWriteTextFormat_GetParagraphAlignment(format);
+    ok(paralign == DWRITE_PARAGRAPH_ALIGNMENT_NEAR, "got %d\n", paralign);
+
+    wrapping = IDWriteTextFormat_GetWordWrapping(format);
+    ok(wrapping == DWRITE_WORD_WRAPPING_WRAP, "got %d\n", wrapping);
+
+    readdir = IDWriteTextFormat_GetReadingDirection(format);
+    ok(readdir == DWRITE_READING_DIRECTION_LEFT_TO_RIGHT, "got %d\n", readdir);
+
+    flow = IDWriteTextFormat_GetFlowDirection(format);
+    ok(flow == DWRITE_FLOW_DIRECTION_TOP_TO_BOTTOM, "got %d\n", flow);
+
+    hr = IDWriteTextFormat_GetLineSpacing(format, &method, &spacing, &baseline);
+    ok(hr == S_OK, "got 0x%08x\n", hr);
+    ok(spacing == 0.0, "got %f\n", spacing);
+    ok(baseline == 0.0, "got %f\n", baseline);
+    ok(method == DWRITE_LINE_SPACING_METHOD_DEFAULT, "got %d\n", method);
+
     IDWriteTextFormat_Release(format);
 }
 




More information about the wine-cvs mailing list