Nikolay Sivov : dwrite: Implement IDWriteFontFamily1::GetFontFaceReference ().

Alexandre Julliard julliard at wine.codeweavers.com
Fri May 6 11:08:16 CDT 2016


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

Author: Nikolay Sivov <nsivov at codeweavers.com>
Date:   Fri May  6 00:34:03 2016 +0300

dwrite: Implement IDWriteFontFamily1::GetFontFaceReference().

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

---

 dlls/dwrite/font.c       | 17 ++++++++++++++---
 dlls/dwrite/tests/font.c | 12 ++++++++++++
 2 files changed, 26 insertions(+), 3 deletions(-)

diff --git a/dlls/dwrite/font.c b/dlls/dwrite/font.c
index bf79412..e68da0d 100644
--- a/dlls/dwrite/font.c
+++ b/dlls/dwrite/font.c
@@ -1994,13 +1994,24 @@ static HRESULT WINAPI dwritefontfamily1_GetFont(IDWriteFontFamily1 *iface, UINT3
 }
 
 static HRESULT WINAPI dwritefontfamily1_GetFontFaceReference(IDWriteFontFamily1 *iface, UINT32 index,
-    IDWriteFontFaceReference **ref)
+    IDWriteFontFaceReference **reference)
 {
     struct dwrite_fontfamily *This = impl_from_IDWriteFontFamily1(iface);
+    IDWriteFont3 *font;
+    HRESULT hr;
 
-    FIXME("(%p)->(%u %p): stub\n", This, index, ref);
+    TRACE("(%p)->(%u %p)\n", This, index, reference);
 
-    return E_NOTIMPL;
+    *reference = NULL;
+
+    hr = IDWriteFontFamily1_GetFont(iface, index, &font);
+    if (FAILED(hr))
+        return hr;
+
+    hr = IDWriteFont3_GetFontFaceReference(font, reference);
+    IDWriteFont3_Release(font);
+
+    return hr;
 }
 
 static const IDWriteFontFamily1Vtbl fontfamilyvtbl = {
diff --git a/dlls/dwrite/tests/font.c b/dlls/dwrite/tests/font.c
index baef637..aa57d81 100644
--- a/dlls/dwrite/tests/font.c
+++ b/dlls/dwrite/tests/font.c
@@ -1265,6 +1265,7 @@ if (0) /* crashes on native */
 
     hr = IDWriteFontFamily_QueryInterface(family, &IID_IDWriteFontFamily1, (void**)&family1);
     if (hr == S_OK) {
+        IDWriteFontFaceReference *ref, *ref1;
         IDWriteFontList *fontlist;
         IDWriteFont3 *font3;
         IDWriteFont1 *font1;
@@ -1293,6 +1294,17 @@ if (0) /* crashes on native */
         IDWriteFontList_Release(fontlist);
 
         IDWriteFont3_Release(font3);
+
+        hr = IDWriteFontFamily1_GetFontFaceReference(family1, 0, &ref);
+        ok(hr == S_OK, "got 0x%08x\n", hr);
+
+        hr = IDWriteFontFamily1_GetFontFaceReference(family1, 0, &ref1);
+        ok(hr == S_OK, "got 0x%08x\n", hr);
+        ok(ref != ref1, "got %p, %p\n", ref, ref1);
+
+        IDWriteFontFaceReference_Release(ref);
+        IDWriteFontFaceReference_Release(ref1);
+
         IDWriteFontFamily1_Release(family1);
     }
     else




More information about the wine-cvs mailing list