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.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));
|
||||
SetBkColor(compatDc.dc, GetBkColor(origDc));
|
||||
SetBkMode(compatDc.dc, GetBkMode(origDc));
|
||||
SetDCBrushColor(compatDc.dc, GetDCBrushColor(origDc));
|
||||
SetDCPenColor(compatDc.dc, GetDCPenColor(origDc));
|
||||
SetLayout(compatDc.dc, GetLayout(origDc));
|
||||
SetPolyFillMode(compatDc.dc, GetPolyFillMode(origDc));
|
||||
SetROP2(compatDc.dc, GetROP2(origDc));
|
||||
SetStretchBltMode(compatDc.dc, GetStretchBltMode(origDc));
|
||||
SetTextAlign(compatDc.dc, GetTextAlign(origDc));
|
||||
SetTextCharacterExtra(compatDc.dc, GetTextCharacterExtra(origDc));
|
||||
SetTextColor(compatDc.dc, GetTextColor(origDc));
|
||||
SetWindowOrgEx(compatDc.dc, -origin.x, -origin.y, nullptr);
|
||||
|
||||
POINT brushOrg = {};
|
||||
GetBrushOrgEx(origDc, &brushOrg);
|
||||
SetBrushOrgEx(compatDc.dc, brushOrg.x, brushOrg.y, nullptr);
|
||||
|
||||
POINT currentPos = {};
|
||||
MoveToEx(origDc, 0, 0, ¤tPos);
|
||||
MoveToEx(origDc, currentPos.x, currentPos.y, nullptr);
|
||||
GetCurrentPositionEx(origDc, ¤tPos);
|
||||
MoveToEx(compatDc.dc, currentPos.x, currentPos.y, nullptr);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user