dwrite: Implement IDWriteFontList1::GetFont().

Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Nikolay Sivov 2016-05-06 00:34:01 +03:00 committed by Alexandre Julliard
parent 1c94bf396f
commit 51154acb6a
2 changed files with 20 additions and 4 deletions

View File

@ -1678,9 +1678,17 @@ static HRESULT WINAPI dwritefontlist1_GetFont(IDWriteFontList1 *iface, UINT32 in
{ {
struct dwrite_fontlist *This = impl_from_IDWriteFontList1(iface); struct dwrite_fontlist *This = impl_from_IDWriteFontList1(iface);
FIXME("(%p)->(%u %p): stub\n", This, index, font); TRACE("(%p)->(%u %p)\n", This, index, font);
return E_NOTIMPL; *font = NULL;
if (This->font_count == 0)
return S_FALSE;
if (index >= This->font_count)
return E_FAIL;
return create_font(This->fonts[index], This->family, font);
} }
static HRESULT WINAPI dwritefontlist1_GetFontFaceReference(IDWriteFontList1 *iface, UINT32 index, static HRESULT WINAPI dwritefontlist1_GetFontFaceReference(IDWriteFontList1 *iface, UINT32 index,

View File

@ -2945,10 +2945,18 @@ static void test_GetMatchingFonts(void)
font = (void*)0xdeadbeef; font = (void*)0xdeadbeef;
hr = IDWriteFontList1_GetFont(fontlist1, ~0u, &font); hr = IDWriteFontList1_GetFont(fontlist1, ~0u, &font);
todo_wine {
ok(hr == E_FAIL, "got 0x%08x\n", hr); ok(hr == E_FAIL, "got 0x%08x\n", hr);
ok(font == NULL, "got %p\n", font); ok(font == NULL, "got %p\n", font);
}
font = (void*)0xdeadbeef;
hr = IDWriteFontList1_GetFont(fontlist1, IDWriteFontList1_GetFontCount(fontlist1), &font);
ok(hr == E_FAIL, "got 0x%08x\n", hr);
ok(font == NULL, "got %p\n", font);
hr = IDWriteFontList1_GetFont(fontlist1, 0, &font);
ok(hr == S_OK, "got 0x%08x\n", hr);
IDWriteFont3_Release(font);
IDWriteFontList1_Release(fontlist1); IDWriteFontList1_Release(fontlist1);
} }
else else