Module: wine Branch: master Commit: 915cd7b5b27381b2899b0402458f78e955c86186 URL: http://source.winehq.org/git/wine.git/?a=commit;h=915cd7b5b27381b2899b040245...
Author: Dmitry Timoshkov dmitry@baikal.ru Date: Fri May 11 19:19:59 2012 +0900
gdiplus: Use appropriate accessors to calculate font height instead of accessing GpFont internals directly.
---
dlls/gdiplus/font.c | 20 ++++++++++++++++---- 1 files changed, 16 insertions(+), 4 deletions(-)
diff --git a/dlls/gdiplus/font.c b/dlls/gdiplus/font.c index a07333a..5b57ec6 100644 --- a/dlls/gdiplus/font.c +++ b/dlls/gdiplus/font.c @@ -504,14 +504,26 @@ GpStatus WINGDIPAPI GdipGetFontHeight(GDIPCONST GpFont *font, */ GpStatus WINGDIPAPI GdipGetFontHeightGivenDPI(GDIPCONST GpFont *font, REAL dpi, REAL *height) { - REAL font_height; + GpStatus stat; + INT style; + UINT16 line_spacing, em_height; + REAL font_height, font_size; + + if (!font || !height) return InvalidParameter;
TRACE("%p (%s), %f, %p\n", font, - debugstr_w(font->lfw.lfFaceName), dpi, height); + debugstr_w(font->family->FamilyName), dpi, height);
- if (!(font && height)) return InvalidParameter; + stat = GdipGetFontSize((GpFont *)font, &font_size); + if (stat != Ok) return stat; + stat = GdipGetFontStyle((GpFont *)font, &style); + if (stat != Ok) return stat; + stat = GdipGetLineSpacing(font->family, style, &line_spacing); + if (stat != Ok) return stat; + stat = GdipGetEmHeight(font->family, style, &em_height); + if (stat != Ok) return stat;
- font_height = font->line_spacing * (font->emSize / font->height); + font_height = (REAL)line_spacing * font_size / (REAL)em_height;
switch (font->unit) {