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