mirror of
https://github.com/narzoul/DDrawCompat
synced 2024-12-30 08:55:36 +01:00
Implemented copying of GDI DC transformations, mapping mode and layout
This commit is contained in:
parent
aed19e5179
commit
631c701e57
@ -36,26 +36,54 @@ namespace
|
|||||||
compatDc.origBrush = SelectObject(compatDc.dc, GetCurrentObject(origDc, OBJ_BRUSH));
|
compatDc.origBrush = SelectObject(compatDc.dc, GetCurrentObject(origDc, OBJ_BRUSH));
|
||||||
compatDc.origPen = SelectObject(compatDc.dc, GetCurrentObject(origDc, OBJ_PEN));
|
compatDc.origPen = SelectObject(compatDc.dc, GetCurrentObject(origDc, OBJ_PEN));
|
||||||
|
|
||||||
|
if (GM_ADVANCED == GetGraphicsMode(origDc))
|
||||||
|
{
|
||||||
|
SetGraphicsMode(compatDc.dc, GM_ADVANCED);
|
||||||
|
XFORM transform = {};
|
||||||
|
GetWorldTransform(origDc, &transform);
|
||||||
|
SetWorldTransform(compatDc.dc, &transform);
|
||||||
|
}
|
||||||
|
else if (GM_COMPATIBLE != GetGraphicsMode(compatDc.dc))
|
||||||
|
{
|
||||||
|
ModifyWorldTransform(compatDc.dc, nullptr, MWT_IDENTITY);
|
||||||
|
SetGraphicsMode(compatDc.dc, GM_COMPATIBLE);
|
||||||
|
}
|
||||||
|
|
||||||
|
SetMapMode(compatDc.dc, GetMapMode(origDc));
|
||||||
|
|
||||||
|
POINT viewportOrg = {};
|
||||||
|
GetViewportOrgEx(origDc, &viewportOrg);
|
||||||
|
SetViewportOrgEx(compatDc.dc, viewportOrg.x + origin.x, viewportOrg.y + origin.y, nullptr);
|
||||||
|
SIZE viewportExt = {};
|
||||||
|
GetViewportExtEx(origDc, &viewportExt);
|
||||||
|
SetViewportExtEx(compatDc.dc, viewportExt.cx, viewportExt.cy, nullptr);
|
||||||
|
|
||||||
|
POINT windowOrg = {};
|
||||||
|
GetWindowOrgEx(origDc, &windowOrg);
|
||||||
|
SetWindowOrgEx(compatDc.dc, windowOrg.x, windowOrg.y, nullptr);
|
||||||
|
SIZE windowExt = {};
|
||||||
|
GetWindowExtEx(origDc, &windowExt);
|
||||||
|
SetWindowExtEx(compatDc.dc, windowExt.cx, windowExt.cy, nullptr);
|
||||||
|
|
||||||
SetArcDirection(compatDc.dc, GetArcDirection(origDc));
|
SetArcDirection(compatDc.dc, GetArcDirection(origDc));
|
||||||
SetBkColor(compatDc.dc, GetBkColor(origDc));
|
SetBkColor(compatDc.dc, GetBkColor(origDc));
|
||||||
SetBkMode(compatDc.dc, GetBkMode(origDc));
|
SetBkMode(compatDc.dc, GetBkMode(origDc));
|
||||||
SetDCBrushColor(compatDc.dc, GetDCBrushColor(origDc));
|
SetDCBrushColor(compatDc.dc, GetDCBrushColor(origDc));
|
||||||
SetDCPenColor(compatDc.dc, GetDCPenColor(origDc));
|
SetDCPenColor(compatDc.dc, GetDCPenColor(origDc));
|
||||||
|
SetLayout(compatDc.dc, GetLayout(origDc));
|
||||||
SetPolyFillMode(compatDc.dc, GetPolyFillMode(origDc));
|
SetPolyFillMode(compatDc.dc, GetPolyFillMode(origDc));
|
||||||
SetROP2(compatDc.dc, GetROP2(origDc));
|
SetROP2(compatDc.dc, GetROP2(origDc));
|
||||||
SetStretchBltMode(compatDc.dc, GetStretchBltMode(origDc));
|
SetStretchBltMode(compatDc.dc, GetStretchBltMode(origDc));
|
||||||
SetTextAlign(compatDc.dc, GetTextAlign(origDc));
|
SetTextAlign(compatDc.dc, GetTextAlign(origDc));
|
||||||
SetTextCharacterExtra(compatDc.dc, GetTextCharacterExtra(origDc));
|
SetTextCharacterExtra(compatDc.dc, GetTextCharacterExtra(origDc));
|
||||||
SetTextColor(compatDc.dc, GetTextColor(origDc));
|
SetTextColor(compatDc.dc, GetTextColor(origDc));
|
||||||
SetWindowOrgEx(compatDc.dc, -origin.x, -origin.y, nullptr);
|
|
||||||
|
|
||||||
POINT brushOrg = {};
|
POINT brushOrg = {};
|
||||||
GetBrushOrgEx(origDc, &brushOrg);
|
GetBrushOrgEx(origDc, &brushOrg);
|
||||||
SetBrushOrgEx(compatDc.dc, brushOrg.x, brushOrg.y, nullptr);
|
SetBrushOrgEx(compatDc.dc, brushOrg.x, brushOrg.y, nullptr);
|
||||||
|
|
||||||
POINT currentPos = {};
|
POINT currentPos = {};
|
||||||
MoveToEx(origDc, 0, 0, ¤tPos);
|
GetCurrentPositionEx(origDc, ¤tPos);
|
||||||
MoveToEx(origDc, currentPos.x, currentPos.y, nullptr);
|
|
||||||
MoveToEx(compatDc.dc, currentPos.x, currentPos.y, nullptr);
|
MoveToEx(compatDc.dc, currentPos.x, currentPos.y, nullptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user