Nikolay Sivov : dwrite: Implement GetFontFamily() for system font collection.
Alexandre Julliard
julliard at winehq.org
Tue Oct 23 13:37:18 CDT 2012
Module: wine
Branch: master
Commit: 10431905e50baa8d0b3ffaf50b9af3a34bf57157
URL: http://source.winehq.org/git/wine.git/?a=commit;h=10431905e50baa8d0b3ffaf50b9af3a34bf57157
Author: Nikolay Sivov <nsivov at codeweavers.com>
Date: Mon Oct 22 00:06:03 2012 -0400
dwrite: Implement GetFontFamily() for system font collection.
---
dlls/dwrite/font.c | 14 ++++++++++++--
dlls/dwrite/tests/font.c | 7 +++++++
2 files changed, 19 insertions(+), 2 deletions(-)
diff --git a/dlls/dwrite/font.c b/dlls/dwrite/font.c
index 60aa7db..bdc84ee 100644
--- a/dlls/dwrite/font.c
+++ b/dlls/dwrite/font.c
@@ -161,6 +161,8 @@ struct dwrite_fontface {
LONG ref;
};
+static HRESULT create_fontfamily(const WCHAR *familyname, IDWriteFontFamily **family);
+
static inline struct dwrite_fontface *impl_from_IDWriteFontFace(IDWriteFontFace *iface)
{
return CONTAINING_RECORD(iface, struct dwrite_fontface, IDWriteFontFace_iface);
@@ -666,8 +668,16 @@ static UINT32 WINAPI dwritefontcollection_GetFontFamilyCount(IDWriteFontCollecti
static HRESULT WINAPI dwritefontcollection_GetFontFamily(IDWriteFontCollection *iface, UINT32 index, IDWriteFontFamily **family)
{
struct dwrite_fontcollection *This = impl_from_IDWriteFontCollection(iface);
- FIXME("(%p)->(%u %p): stub\n", This, index, family);
- return E_NOTIMPL;
+
+ TRACE("(%p)->(%u %p)\n", This, index, family);
+
+ if (index >= This->count)
+ {
+ *family = NULL;
+ return E_FAIL;
+ }
+
+ return create_fontfamily(This->families[index], family);
}
static HRESULT WINAPI dwritefontcollection_FindFamilyName(IDWriteFontCollection *iface, const WCHAR *name, UINT32 *index, BOOL *exists)
diff --git a/dlls/dwrite/tests/font.c b/dlls/dwrite/tests/font.c
index 423c876..dde50eb 100644
--- a/dlls/dwrite/tests/font.c
+++ b/dlls/dwrite/tests/font.c
@@ -526,6 +526,7 @@ todo_wine
static void test_system_fontcollection(void)
{
IDWriteFontCollection *collection, *coll2;
+ IDWriteFontFamily *family;
HRESULT hr;
UINT32 i;
BOOL ret;
@@ -546,6 +547,12 @@ static void test_system_fontcollection(void)
i = IDWriteFontCollection_GetFontFamilyCount(collection);
ok(i, "got %u\n", i);
+ /* invalid index */
+ family = (void*)0xdeadbeef;
+ hr = IDWriteFontCollection_GetFontFamily(collection, i, &family);
+ ok(hr == E_FAIL, "got 0x%08x\n", hr);
+ ok(family == NULL, "got %p\n", family);
+
ret = FALSE;
i = (UINT32)-1;
hr = IDWriteFontCollection_FindFamilyName(collection, tahomaW, &i, &ret);
More information about the wine-cvs
mailing list