Commit 537112fb authored by Evan Stade's avatar Evan Stade Committed by Alexandre Julliard

gdiplus: Fixed conformance of font constructor.

parent 4202abab
......@@ -31,13 +31,28 @@
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;
}
......
......@@ -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);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment