Module: wine Branch: master Commit: a56112c330b823be017d46d1b790459d1eca53c2 URL: https://source.winehq.org/git/wine.git/?a=commit;h=a56112c330b823be017d46d1b...
Author: Nikolay Sivov nsivov@codeweavers.com Date: Mon Mar 15 10:36:49 2021 +0300
dwrite: Implement IDWriteFontSet1::CreateFontResource().
Signed-off-by: Nikolay Sivov nsivov@codeweavers.com Signed-off-by: Alexandre Julliard julliard@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);