gdi32: Better error handling in enhanced metafile.
This commit is contained in:
parent
54ac76a387
commit
bc7df7ad80
|
@ -756,18 +756,19 @@ BOOL EMFDRV_ExtTextOut( PHYSDEV dev, INT x, INT y, UINT flags,
|
||||||
for (i = 0; i < count; i++) {
|
for (i = 0; i < count; i++) {
|
||||||
textWidth += lpDx[i];
|
textWidth += lpDx[i];
|
||||||
}
|
}
|
||||||
GetTextExtentPoint32W(physDev->hdc, str, count, &strSize);
|
if (GetTextExtentPoint32W(physDev->hdc, str, count, &strSize))
|
||||||
textHeight = strSize.cy;
|
textHeight = strSize.cy;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
UINT i;
|
UINT i;
|
||||||
INT *dx = (INT *)((char*)pemr + pemr->emrtext.offDx);
|
INT *dx = (INT *)((char*)pemr + pemr->emrtext.offDx);
|
||||||
SIZE charSize;
|
SIZE charSize;
|
||||||
for (i = 0; i < count; i++) {
|
for (i = 0; i < count; i++) {
|
||||||
GetTextExtentPoint32W(physDev->hdc, str + i, 1, &charSize);
|
if (GetTextExtentPoint32W(physDev->hdc, str + i, 1, &charSize)) {
|
||||||
dx[i] = charSize.cx;
|
dx[i] = charSize.cx;
|
||||||
textWidth += charSize.cx;
|
textWidth += charSize.cx;
|
||||||
textHeight = max(textHeight, charSize.cy);
|
textHeight = max(textHeight, charSize.cy);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -791,7 +792,8 @@ BOOL EMFDRV_ExtTextOut( PHYSDEV dev, INT x, INT y, UINT flags,
|
||||||
switch (textAlign & (TA_TOP | TA_BOTTOM | TA_BASELINE)) {
|
switch (textAlign & (TA_TOP | TA_BOTTOM | TA_BASELINE)) {
|
||||||
case TA_BASELINE: {
|
case TA_BASELINE: {
|
||||||
TEXTMETRICW tm;
|
TEXTMETRICW tm;
|
||||||
GetTextMetricsW(physDev->hdc, &tm);
|
if (!GetTextMetricsW(physDev->hdc, &tm))
|
||||||
|
tm.tmDescent = 0;
|
||||||
/* Play safe here... it's better to have a bounding box */
|
/* Play safe here... it's better to have a bounding box */
|
||||||
/* that is too big than too small. */
|
/* that is too big than too small. */
|
||||||
pemr->rclBounds.top = y - textHeight - 1;
|
pemr->rclBounds.top = y - textHeight - 1;
|
||||||
|
|
Loading…
Reference in New Issue