Aric Stewart : dwrite: Implement GetFontCollection.

Alexandre Julliard julliard at wine.codeweavers.com
Thu Sep 4 14:48:40 CDT 2014


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

Author: Aric Stewart <aric at codeweavers.com>
Date:   Wed Sep  3 07:27:17 2014 -0500

dwrite: Implement GetFontCollection.

---

 dlls/dwrite/font.c | 16 ++++++++++++++--
 1 file changed, 14 insertions(+), 2 deletions(-)

diff --git a/dlls/dwrite/font.c b/dlls/dwrite/font.c
index 546dab8..395fb64 100644
--- a/dlls/dwrite/font.c
+++ b/dlls/dwrite/font.c
@@ -167,6 +167,8 @@ struct dwrite_fontfamily {
     UINT32  font_count;
     UINT32  alloc;
 
+    IDWriteFontCollection* collection;
+
     WCHAR *familyname;
 };
 
@@ -836,6 +838,8 @@ static ULONG WINAPI dwritefontfamily_Release(IDWriteFontFamily *iface)
         int i;
         heap_free(This->familyname);
 
+        if (This->collection)
+            IDWriteFontCollection_Release(This->collection);
         for (i = 0; i < This->font_count; i++)
             _free_font_data(This->fonts[i]);
         heap_free(This->fonts);
@@ -848,8 +852,15 @@ static ULONG WINAPI dwritefontfamily_Release(IDWriteFontFamily *iface)
 static HRESULT WINAPI dwritefontfamily_GetFontCollection(IDWriteFontFamily *iface, IDWriteFontCollection **collection)
 {
     struct dwrite_fontfamily *This = impl_from_IDWriteFontFamily(iface);
-    FIXME("(%p)->(%p): stub\n", This, collection);
-    return E_NOTIMPL;
+    TRACE("(%p)->(%p)\n", This, collection);
+    if (This->collection)
+    {
+        IDWriteFontCollection_AddRef(This->collection);
+        *collection = This->collection;
+        return S_OK;
+    }
+    else
+        return E_NOTIMPL;
 }
 
 static UINT32 WINAPI dwritefontfamily_GetFontCount(IDWriteFontFamily *iface)
@@ -1130,6 +1141,7 @@ static HRESULT create_fontfamily(const WCHAR *familyname, IDWriteFontFamily **fa
     This->font_count = 0;
     This->alloc = 2;
     This->fonts = heap_alloc(sizeof(*This->fonts) * 2);
+    This->collection = NULL;
     This->familyname = heap_strdupW(familyname);
 
     *family = &This->IDWriteFontFamily_iface;




More information about the wine-cvs mailing list