[1/2] dwrite: Implement family name access methods for IDWriteTextFormat

Nikolay Sivov nsivov at codeweavers.com
Mon Nov 26 03:08:52 CST 2012


Implement family name access methods for IDWriteTextFormat
-------------- next part --------------
>From 2c0d26f997edd37817237227e69173acce439e73 Mon Sep 17 00:00:00 2001
From: Nikolay Sivov <nsivov at codeweavers.com>
Date: Mon, 26 Nov 2012 10:43:49 -0500
Subject: [PATCH 3/4] Implement family name access methods for
 IDWriteTextFormat

---
 dlls/dwrite/layout.c |   14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/dlls/dwrite/layout.c b/dlls/dwrite/layout.c
index f6bc421..8e63f5c 100644
--- a/dlls/dwrite/layout.c
+++ b/dlls/dwrite/layout.c
@@ -34,6 +34,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(dwrite);
 
 struct dwrite_textformat_data {
     WCHAR *family_name;
+    UINT32 family_len;
     WCHAR *locale;
     UINT32 locale_len;
 
@@ -880,15 +881,19 @@ static HRESULT WINAPI dwritetextformat_GetFontCollection(IDWriteTextFormat *ifac
 static UINT32 WINAPI dwritetextformat_GetFontFamilyNameLength(IDWriteTextFormat *iface)
 {
     struct dwrite_textformat *This = impl_from_IDWriteTextFormat(iface);
-    FIXME("(%p): stub\n", This);
-    return 0;
+    TRACE("(%p)\n", This);
+    return This->format.family_len;
 }
 
 static HRESULT WINAPI dwritetextformat_GetFontFamilyName(IDWriteTextFormat *iface, WCHAR *name, UINT32 size)
 {
     struct dwrite_textformat *This = impl_from_IDWriteTextFormat(iface);
-    FIXME("(%p)->(%p %u): stub\n", This, name, size);
-    return E_NOTIMPL;
+
+    TRACE("(%p)->(%p %u)\n", This, name, size);
+
+    if (size <= This->format.family_len) return E_NOT_SUFFICIENT_BUFFER;
+    strcpyW(name, This->format.family_name);
+    return S_OK;
 }
 
 static DWRITE_FONT_WEIGHT WINAPI dwritetextformat_GetFontWeight(IDWriteTextFormat *iface)
@@ -981,6 +986,7 @@ HRESULT create_textformat(const WCHAR *family_name, IDWriteFontCollection *colle
     This->IDWriteTextFormat_iface.lpVtbl = &dwritetextformatvtbl;
     This->ref = 1;
     This->format.family_name = heap_strdupW(family_name);
+    This->format.family_len = strlenW(family_name);
     This->format.locale = heap_strdupW(locale);
     This->format.locale_len = strlenW(locale);
     This->format.weight = weight;
-- 
1.7.10.4




More information about the wine-patches mailing list