gdiplus: Fixed conformance of font constructor.
This commit is contained in:
parent
4202ababb0
commit
537112fb52
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue