Dmitry Timoshkov : gdi32: The MAT2 parameter of GetGlyphOutline is mandatory.
Alexandre Julliard
julliard at winehq.org
Tue Feb 3 09:13:12 CST 2009
Module: wine
Branch: master
Commit: 44589c6f8fdf511f4131da4d488204f1aef41c4f
URL: http://source.winehq.org/git/wine.git/?a=commit;h=44589c6f8fdf511f4131da4d488204f1aef41c4f
Author: Dmitry Timoshkov <dmitry at codeweavers.com>
Date: Tue Feb 3 17:55:05 2009 +0800
gdi32: The MAT2 parameter of GetGlyphOutline is mandatory.
---
dlls/gdi32/gdi16.c | 15 +++++++++------
dlls/gdi32/path.c | 5 +++--
2 files changed, 12 insertions(+), 8 deletions(-)
diff --git a/dlls/gdi32/gdi16.c b/dlls/gdi32/gdi16.c
index b70b44e..1d0344b 100644
--- a/dlls/gdi32/gdi16.c
+++ b/dlls/gdi32/gdi16.c
@@ -1983,12 +1983,15 @@ DWORD WINAPI GetGlyphOutline16( HDC16 hdc, UINT16 uChar, UINT16 fuFormat,
GLYPHMETRICS gm32;
ret = GetGlyphOutlineA( HDC_32(hdc), uChar, fuFormat, &gm32, cbBuffer, lpBuffer, lpmat2);
- lpgm->gmBlackBoxX = gm32.gmBlackBoxX;
- lpgm->gmBlackBoxY = gm32.gmBlackBoxY;
- lpgm->gmptGlyphOrigin.x = gm32.gmptGlyphOrigin.x;
- lpgm->gmptGlyphOrigin.y = gm32.gmptGlyphOrigin.y;
- lpgm->gmCellIncX = gm32.gmCellIncX;
- lpgm->gmCellIncY = gm32.gmCellIncY;
+ if (ret && ret != GDI_ERROR)
+ {
+ lpgm->gmBlackBoxX = gm32.gmBlackBoxX;
+ lpgm->gmBlackBoxY = gm32.gmBlackBoxY;
+ lpgm->gmptGlyphOrigin.x = gm32.gmptGlyphOrigin.x;
+ lpgm->gmptGlyphOrigin.y = gm32.gmptGlyphOrigin.y;
+ lpgm->gmCellIncX = gm32.gmCellIncX;
+ lpgm->gmCellIncY = gm32.gmCellIncY;
+ }
return ret;
}
diff --git a/dlls/gdi32/path.c b/dlls/gdi32/path.c
index 8df8a1b..3ad551e 100644
--- a/dlls/gdi32/path.c
+++ b/dlls/gdi32/path.c
@@ -1454,17 +1454,18 @@ BOOL PATH_ExtTextOut(DC *dc, INT x, INT y, UINT flags, const RECT *lprc,
for (idx = 0; idx < count; idx++)
{
+ static const MAT2 identity = { {0,1},{0,0},{0,0},{0,1} };
GLYPHMETRICS gm;
DWORD dwSize;
void *outline;
- dwSize = GetGlyphOutlineW(hdc, str[idx], GGO_GLYPH_INDEX | GGO_NATIVE, &gm, 0, NULL, NULL);
+ dwSize = GetGlyphOutlineW(hdc, str[idx], GGO_GLYPH_INDEX | GGO_NATIVE, &gm, 0, NULL, &identity);
if (!dwSize) return FALSE;
outline = HeapAlloc(GetProcessHeap(), 0, dwSize);
if (!outline) return FALSE;
- GetGlyphOutlineW(hdc, str[idx], GGO_GLYPH_INDEX | GGO_NATIVE, &gm, dwSize, outline, NULL);
+ GetGlyphOutlineW(hdc, str[idx], GGO_GLYPH_INDEX | GGO_NATIVE, &gm, dwSize, outline, &identity);
PATH_add_outline(dc, org.x + x + xoff, org.x + y + yoff, outline, dwSize);
More information about the wine-cvs
mailing list