[4/18] gdiplus: fixed conformance of font constructor
Evan Stade
estade at gmail.com
Tue Aug 14 20:59:08 CDT 2007
Hi,
dlls/gdiplus/font.c | 17 ++++++++++++++++-
dlls/gdiplus/tests/font.c | 6 ++----
2 files changed, 18 insertions(+), 5 deletions(-)
--
Evan Stade
-------------- next part --------------
diff --git a/dlls/gdiplus/font.c b/dlls/gdiplus/font.c
index 5b971aa..950f0fa 100644
--- a/dlls/gdiplus/font.c
+++ b/dlls/gdiplus/font.c
@@ -32,13 +32,28 @@ #include "gdiplus_private.h"
GpStatus WINGDIPAPI GdipCreateFontFromLogfontW(HDC hdc,
GDIPCONST LOGFONTW *logfont, GpFont **font)
{
+ HFONT hfont, oldfont;
+ TEXTMETRICW textmet;
+
if(!logfont || !font)
return InvalidParameter;
*font = GdipAlloc(sizeof(GpFont));
if(!*font) return OutOfMemory;
- memcpy(&(*font)->lfw, logfont, sizeof(LOGFONTW));
+ memcpy(&(*font)->lfw.lfFaceName, logfont->lfFaceName, LF_FACESIZE *
+ sizeof(WCHAR));
+ (*font)->lfw.lfHeight = logfont->lfHeight;
+
+ hfont = CreateFontIndirectW(&(*font)->lfw);
+ oldfont = SelectObject(hdc, hfont);
+ GetTextMetricsW(hdc, &textmet);
+
+ (*font)->lfw.lfHeight = -textmet.tmHeight;
+ (*font)->lfw.lfWeight = textmet.tmWeight;
+
+ SelectObject(hdc, oldfont);
+ DeleteObject(hfont);
return Ok;
}
diff --git a/dlls/gdiplus/tests/font.c b/dlls/gdiplus/tests/font.c
index 1326a6a..e5d9bca 100755
--- a/dlls/gdiplus/tests/font.c
+++ b/dlls/gdiplus/tests/font.c
@@ -44,13 +44,11 @@ static void test_logfont(void)
stat = GdipGetLogFontW(font, graphics, &lfw2);
expect(Ok, stat);
- todo_wine
- ok(lfw2.lfHeight < 0, "Expected negative height\n");
+ ok(lfw2.lfHeight < 0, "Expected negative height\n");
expect(0, lfw2.lfWidth);
expect(0, lfw2.lfEscapement);
expect(0, lfw2.lfOrientation);
- todo_wine
- ok((lfw2.lfWeight >= 100) && (lfw2.lfWeight <= 900), "Expected weight to be set\n");
+ ok((lfw2.lfWeight >= 100) && (lfw2.lfWeight <= 900), "Expected weight to be set\n");
expect(0, lfw2.lfItalic);
expect(0, lfw2.lfUnderline);
expect(0, lfw2.lfStrikeOut);
--
1.4.1
More information about the wine-patches
mailing list