PGDIBSTEXTOUT pgO;
COLORREF crColor = -1, crBkColor;
ULONG ulForegroundClr, ulBackgroundClr;
- DWORD flags = 0, saveflags;
+ DWORD flags = 0, flXform = 0, saveflags, saveflXform = 0;
FLONG flTextAlign = -1;
HANDLE hlfntNew;
PRECTL lprc;
USHORT jBkMode;
LONG lBkMode;
+ POINTL ptlViewportOrg;
if (!dc) break;
pgO = (PGDIBSTEXTOUT) pHdr;
flags |= DIRTY_CHARSET;
}
+ if ( dc->pdcattr->ptlViewportOrg.x != pgO->ptlViewportOrg.x ||
+ dc->pdcattr->ptlViewportOrg.y != pgO->ptlViewportOrg.y )
+ {
+ saveflXform = dc->pdcattr->flXform & (PAGE_XLATE_CHANGED|WORLD_XFORM_CHANGED|DEVICE_TO_WORLD_INVALID);
+ ptlViewportOrg = dc->pdcattr->ptlViewportOrg;
+ dc->pdcattr->ptlViewportOrg = pgO->ptlViewportOrg;
+ flXform = (PAGE_XLATE_CHANGED|WORLD_XFORM_CHANGED|DEVICE_TO_WORLD_INVALID);
+ }
+
dc->pdcattr->ulDirty_ |= flags;
jBkMode = dc->pdcattr->jBkMode;
dc->pdcattr->jBkMode = jBkMode;
dc->pdcattr->lBkMode = lBkMode;
+ if (saveflXform)
+ {
+ dc->pdcattr->ptlViewportOrg = ptlViewportOrg;
+ dc->pdcattr->flXform |= saveflXform|flXform;
+ }
+
if (flags & DIRTY_TEXT && crColor != -1)
{
dc->pdcattr->crForegroundClr = crColor;
PGDIBSEXTTEXTOUT pgO;
COLORREF crBkColor;
ULONG ulBackgroundClr;
- DWORD flags = 0, saveflags;
+ POINTL ptlViewportOrg;
+ DWORD flags = 0, flXform = 0, saveflags, saveflXform = 0;
if (!dc) break;
pgO = (PGDIBSEXTTEXTOUT) pHdr;
flags |= (DIRTY_BACKGROUND|DIRTY_LINE|DIRTY_FILL);
}
+ if ( dc->pdcattr->ptlViewportOrg.x != pgO->ptlViewportOrg.x ||
+ dc->pdcattr->ptlViewportOrg.y != pgO->ptlViewportOrg.y )
+ {
+ saveflXform = dc->pdcattr->flXform & (PAGE_XLATE_CHANGED|WORLD_XFORM_CHANGED|DEVICE_TO_WORLD_INVALID);
+ ptlViewportOrg = dc->pdcattr->ptlViewportOrg;
+ dc->pdcattr->ptlViewportOrg = pgO->ptlViewportOrg;
+ flXform = (PAGE_XLATE_CHANGED|WORLD_XFORM_CHANGED|DEVICE_TO_WORLD_INVALID);
+ }
+
dc->pdcattr->ulDirty_ |= flags;
IntExtTextOutW( dc,
NULL,
0 );
+ if (saveflXform)
+ {
+ dc->pdcattr->ptlViewportOrg = ptlViewportOrg;
+ dc->pdcattr->flXform |= saveflXform|flXform;
+ }
+
if (flags & DIRTY_BACKGROUND)
{
dc->pdcattr->crBackgroundClr = crBkColor;