[Gdiplus 06/16] Implement GdipCloneFontFamily
Adam Petaccia
adam at tpetaccia.com
Wed Jul 2 12:25:04 CDT 2008
---
dlls/gdiplus/font.c | 19 +++++++++++++++++--
dlls/gdiplus/tests/font.c | 3 ---
2 files changed, 17 insertions(+), 5 deletions(-)
diff --git a/dlls/gdiplus/font.c b/dlls/gdiplus/font.c
index c3d24d3..6b8c4cf 100644
--- a/dlls/gdiplus/font.c
+++ b/dlls/gdiplus/font.c
@@ -411,10 +411,25 @@ GpStatus WINGDIPAPI GdipCloneFontFamily(GpFontFamily* FontFamily, GpFontFamily**
{
if (!(FontFamily && clonedFontFamily)) return InvalidParameter;
- FIXME("stub: %p (%s), %p\n", FontFamily,
+ TRACE("stub: %p (%s), %p\n", FontFamily,
debugstr_w(FontFamily->FamilyName), clonedFontFamily);
- return NotImplemented;
+ *clonedFontFamily = GdipAlloc(sizeof(GpFontFamily));
+ if (!*clonedFontFamily) return OutOfMemory;
+
+ **clonedFontFamily = *FontFamily;
+
+ (*clonedFontFamily)->FamilyName = GdipAlloc(sizeof(WCHAR) * LF_FACESIZE);
+ if (!(*clonedFontFamily)->FamilyName)
+ {
+ GdipFree (clonedFontFamily);
+ return OutOfMemory;
+ }
+
+ lstrcpynW((*clonedFontFamily)->FamilyName, FontFamily->FamilyName,
+ LF_FACESIZE);
+
+ return Ok;
}
/*******************************************************************************
diff --git a/dlls/gdiplus/tests/font.c b/dlls/gdiplus/tests/font.c
index d3c65cc..0449142 100644
--- a/dlls/gdiplus/tests/font.c
+++ b/dlls/gdiplus/tests/font.c
@@ -183,15 +183,12 @@ static void test_fontfamily (void)
}
ZeroMemory (FamilyName, sizeof(FamilyName));
-todo_wine
-{
stat = GdipCloneFontFamily(FontFamily, &ClonedFontFamily);
expect (Ok, stat);
GdipDeleteFontFamily(FontFamily);
stat = GdipGetFamilyName(ClonedFontFamily, FamilyName, LANG_NEUTRAL);
expect(Ok, stat);
expect(0, lstrcmpiW(FamilyName, arial));
-}
GdipDeleteFontFamily(ClonedFontFamily);
}
--
1.5.4.3
More information about the wine-patches
mailing list