Nikolay Sivov : dwrite: Implement IDWriteFontFamily1::GetFontFaceReference ().
Module: wine Branch: master Commit: c5259f72e3a385e95f26dc1ad9ddcc5fd6a21408 URL: http://source.winehq.org/git/wine.git/?a=commit;h=c5259f72e3a385e95f26dc1ad9... Author: Nikolay Sivov <nsivov(a)codeweavers.com> Date: Fri May 6 00:34:03 2016 +0300 dwrite: Implement IDWriteFontFamily1::GetFontFaceReference(). Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)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
participants (1)
-
Alexandre Julliard