Nikolay Sivov : dwrite: Implement IDWriteFontSet1::CreateFontResource().

Alexandre Julliard julliard at winehq.org
Mon Mar 15 16:59:12 CDT 2021


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

Author: Nikolay Sivov <nsivov at codeweavers.com>
Date:   Mon Mar 15 10:36:49 2021 +0300

dwrite: Implement IDWriteFontSet1::CreateFontResource().

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

---

 dlls/dwrite/font.c       | 12 ++++++++++--
 dlls/dwrite/tests/font.c |  8 ++++++++
 2 files changed, 18 insertions(+), 2 deletions(-)

diff --git a/dlls/dwrite/font.c b/dlls/dwrite/font.c
index 4e2917854ba..c0fff68ed15 100644
--- a/dlls/dwrite/font.c
+++ b/dlls/dwrite/font.c
@@ -7467,9 +7467,17 @@ static HRESULT WINAPI dwritefontset1_GetFontFaceReference(IDWriteFontSet3 *iface
 
 static HRESULT WINAPI dwritefontset1_CreateFontResource(IDWriteFontSet3 *iface, UINT32 index, IDWriteFontResource **resource)
 {
-    FIXME("%p, %u, %p.\n", iface, index, resource);
+    struct dwrite_fontset *set = impl_from_IDWriteFontSet3(iface);
 
-    return E_NOTIMPL;
+    TRACE("%p, %u, %p.\n", iface, index, resource);
+
+    *resource = NULL;
+
+    if (index >= set->count)
+        return E_INVALIDARG;
+
+    return IDWriteFactory7_CreateFontResource(set->factory, set->entries[index]->file,
+            set->entries[index]->face_index, resource);
 }
 
 static HRESULT WINAPI dwritefontset1_CreateFontFace(IDWriteFontSet3 *iface, UINT32 index, IDWriteFontFace5 **fontface)
diff --git a/dlls/dwrite/tests/font.c b/dlls/dwrite/tests/font.c
index 7aa871dcd3c..27c2a9d0b7d 100644
--- a/dlls/dwrite/tests/font.c
+++ b/dlls/dwrite/tests/font.c
@@ -10018,6 +10018,7 @@ static void test_family_font_set(void)
     unsigned int count, refcount;
     IDWriteFontSet1 *fontset, *fontset2;
     IDWriteLocalizedStrings *values;
+    IDWriteFontResource *resource;
     WCHAR buffW[64];
     BOOL exists;
     HRESULT hr;
@@ -10070,6 +10071,13 @@ static void test_family_font_set(void)
             IDWriteLocalizedStrings_Release(values);
         }
 
+        hr = IDWriteFontSet1_CreateFontResource(fontset, 100, &resource);
+        ok(hr == E_INVALIDARG, "Unexpected hr %#x.\n", hr);
+
+        hr = IDWriteFontSet1_CreateFontResource(fontset, 0, &resource);
+        ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
+        IDWriteFontResource_Release(resource);
+
         IDWriteFontSet1_Release(fontset2);
         IDWriteFontSet1_Release(fontset);
 




More information about the wine-cvs mailing list