Module: wine Branch: master Commit: bf9aed6f5cbae09463468158015e5615976dcf22 URL: http://source.winehq.org/git/wine.git/?a=commit;h=bf9aed6f5cbae0946346815801...
Author: Dmitry Timoshkov dmitry@baikal.ru Date: Tue May 15 01:35:24 2012 +0900
gdiplus: Measure the passed in string without height clipping in order to compute correct Y offset.
---
dlls/gdiplus/graphics.c | 8 ++++++-- 1 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/dlls/gdiplus/graphics.c b/dlls/gdiplus/graphics.c index e352e42..f2c956ea 100644 --- a/dlls/gdiplus/graphics.c +++ b/dlls/gdiplus/graphics.c @@ -5161,14 +5161,18 @@ GpStatus WINGDIPAPI GdipDrawString(GpGraphics *graphics, GDIPCONST WCHAR *string /* Should be no need to explicitly test for StringAlignmentNear as * that is default behavior if no alignment is passed. */ if(format->vertalign != StringAlignmentNear){ - RectF bounds; - GdipMeasureString(graphics, string, length, font, rect, format, &bounds, 0, 0); + RectF bounds, in_rect = *rect; + in_rect.Height = 0.0; /* avoid height clipping */ + GdipMeasureString(graphics, string, length, font, &in_rect, format, &bounds, 0, 0); + + TRACE("bounds %s\n", debugstr_rectf(&bounds));
if(format->vertalign == StringAlignmentCenter) offsety = (rect->Height - bounds.Height) / 2; else if(format->vertalign == StringAlignmentFar) offsety = (rect->Height - bounds.Height); } + TRACE("vertical align %d, offsety %f\n", format->vertalign, offsety); }
save_state = SaveDC(hdc);