gdi32: Use graphics mode specified at the EMF creation time when playing EMR_EXTTEXTOUT record.
This commit is contained in:
parent
ac5e9812fd
commit
9bc5946cde
|
@ -1133,6 +1133,7 @@ BOOL WINAPI PlayEnhMetaFileRecord(
|
||||||
const EMREXTTEXTOUTA *pExtTextOutA = (const EMREXTTEXTOUTA *)mr;
|
const EMREXTTEXTOUTA *pExtTextOutA = (const EMREXTTEXTOUTA *)mr;
|
||||||
RECT rc;
|
RECT rc;
|
||||||
const INT *dx = NULL;
|
const INT *dx = NULL;
|
||||||
|
int old_mode;
|
||||||
|
|
||||||
rc.left = pExtTextOutA->emrtext.rcl.left;
|
rc.left = pExtTextOutA->emrtext.rcl.left;
|
||||||
rc.top = pExtTextOutA->emrtext.rcl.top;
|
rc.top = pExtTextOutA->emrtext.rcl.top;
|
||||||
|
@ -1142,6 +1143,11 @@ BOOL WINAPI PlayEnhMetaFileRecord(
|
||||||
pExtTextOutA->emrtext.ptlReference.x, pExtTextOutA->emrtext.ptlReference.y,
|
pExtTextOutA->emrtext.ptlReference.x, pExtTextOutA->emrtext.ptlReference.y,
|
||||||
rc.left, rc.top, rc.right, rc.bottom, pExtTextOutA->emrtext.fOptions);
|
rc.left, rc.top, rc.right, rc.bottom, pExtTextOutA->emrtext.fOptions);
|
||||||
|
|
||||||
|
old_mode = SetGraphicsMode(hdc, pExtTextOutA->iGraphicsMode);
|
||||||
|
/* Reselect the font back into the dc so that the transformation
|
||||||
|
gets updated. */
|
||||||
|
SelectObject(hdc, GetCurrentObject(hdc, OBJ_FONT));
|
||||||
|
|
||||||
/* Linux version of pstoedit produces EMFs with offDx set to 0.
|
/* Linux version of pstoedit produces EMFs with offDx set to 0.
|
||||||
* These files can be enumerated and played under Win98 just
|
* These files can be enumerated and played under Win98 just
|
||||||
* fine, but at least Win2k chokes on them.
|
* fine, but at least Win2k chokes on them.
|
||||||
|
@ -1153,6 +1159,8 @@ BOOL WINAPI PlayEnhMetaFileRecord(
|
||||||
pExtTextOutA->emrtext.fOptions, &rc,
|
pExtTextOutA->emrtext.fOptions, &rc,
|
||||||
(LPCSTR)((const BYTE *)mr + pExtTextOutA->emrtext.offString), pExtTextOutA->emrtext.nChars,
|
(LPCSTR)((const BYTE *)mr + pExtTextOutA->emrtext.offString), pExtTextOutA->emrtext.nChars,
|
||||||
dx);
|
dx);
|
||||||
|
|
||||||
|
SetGraphicsMode(hdc, old_mode);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1161,6 +1169,7 @@ BOOL WINAPI PlayEnhMetaFileRecord(
|
||||||
const EMREXTTEXTOUTW *pExtTextOutW = (const EMREXTTEXTOUTW *)mr;
|
const EMREXTTEXTOUTW *pExtTextOutW = (const EMREXTTEXTOUTW *)mr;
|
||||||
RECT rc;
|
RECT rc;
|
||||||
const INT *dx = NULL;
|
const INT *dx = NULL;
|
||||||
|
int old_mode;
|
||||||
|
|
||||||
rc.left = pExtTextOutW->emrtext.rcl.left;
|
rc.left = pExtTextOutW->emrtext.rcl.left;
|
||||||
rc.top = pExtTextOutW->emrtext.rcl.top;
|
rc.top = pExtTextOutW->emrtext.rcl.top;
|
||||||
|
@ -1170,6 +1179,11 @@ BOOL WINAPI PlayEnhMetaFileRecord(
|
||||||
pExtTextOutW->emrtext.ptlReference.x, pExtTextOutW->emrtext.ptlReference.y,
|
pExtTextOutW->emrtext.ptlReference.x, pExtTextOutW->emrtext.ptlReference.y,
|
||||||
rc.left, rc.top, rc.right, rc.bottom, pExtTextOutW->emrtext.fOptions);
|
rc.left, rc.top, rc.right, rc.bottom, pExtTextOutW->emrtext.fOptions);
|
||||||
|
|
||||||
|
old_mode = SetGraphicsMode(hdc, pExtTextOutW->iGraphicsMode);
|
||||||
|
/* Reselect the font back into the dc so that the transformation
|
||||||
|
gets updated. */
|
||||||
|
SelectObject(hdc, GetCurrentObject(hdc, OBJ_FONT));
|
||||||
|
|
||||||
/* Linux version of pstoedit produces EMFs with offDx set to 0.
|
/* Linux version of pstoedit produces EMFs with offDx set to 0.
|
||||||
* These files can be enumerated and played under Win98 just
|
* These files can be enumerated and played under Win98 just
|
||||||
* fine, but at least Win2k chokes on them.
|
* fine, but at least Win2k chokes on them.
|
||||||
|
@ -1181,6 +1195,8 @@ BOOL WINAPI PlayEnhMetaFileRecord(
|
||||||
pExtTextOutW->emrtext.fOptions, &rc,
|
pExtTextOutW->emrtext.fOptions, &rc,
|
||||||
(LPCWSTR)((const BYTE *)mr + pExtTextOutW->emrtext.offString), pExtTextOutW->emrtext.nChars,
|
(LPCWSTR)((const BYTE *)mr + pExtTextOutW->emrtext.offString), pExtTextOutW->emrtext.nChars,
|
||||||
dx);
|
dx);
|
||||||
|
|
||||||
|
SetGraphicsMode(hdc, old_mode);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue