diff --git a/reactos/subsystems/win32/win32k/include/dc.h b/reactos/subsystems/win32/win32k/include/dc.h index ae3050efbcd..8c75baa3145 100644 --- a/reactos/subsystems/win32/win32k/include/dc.h +++ b/reactos/subsystems/win32/win32k/include/dc.h @@ -89,15 +89,6 @@ typedef struct _DC UNICODE_STRING DriverName; HANDLE DeviceDriver; - INT wndOrgX; /* Window origin */ - INT wndOrgY; - INT wndExtX; /* Window extent */ - INT wndExtY; - INT vportOrgX; /* Viewport origin */ - INT vportOrgY; - INT vportExtX; /* Viewport extent */ - INT vportExtY; - CLIPOBJ *CombinedClip; XLATEOBJ *XlateBrush; diff --git a/reactos/subsystems/win32/win32k/include/gdifloat.h b/reactos/subsystems/win32/win32k/include/gdifloat.h index c3b5131ee24..1c25d8257cb 100644 --- a/reactos/subsystems/win32/win32k/include/gdifloat.h +++ b/reactos/subsystems/win32/win32k/include/gdifloat.h @@ -80,24 +80,24 @@ static __inline void INTERNAL_LPTODP(DC *dc, LPPOINT point) #define MulDiv( x, y, z ) EngMulDiv( x, y, z ) -#define XDPTOLP(dc,x) \ - (MulDiv(((x)-(dc)->vportOrgX), (dc)->wndExtX, (dc)->vportExtX) + (dc)->wndOrgX) -#define YDPTOLP(dc,y) \ - (MulDiv(((y)-(dc)->vportOrgY), (dc)->wndExtY, (dc)->vportExtY) + (dc)->wndOrgY) -#define XLPTODP(dc,x) \ - (MulDiv(((x)-(dc)->wndOrgX), (dc)->vportExtX, (dc)->wndExtX) + (dc)->vportOrgX) -#define YLPTODP(dc,y) \ - (MulDiv(((y)-(dc)->wndOrgY), (dc)->vportExtY, (dc)->wndExtY) + (dc)->vportOrgY) +#define XDPTOLP(dc,tx) \ + (MulDiv(((tx)-(dc)->Dc_Attr.ptlViewportOrg.x), (dc)->Dc_Attr.szlWindowExt.cx, (dc)->Dc_Attr.szlViewportExt.cx) + (dc)->Dc_Attr.ptlWindowOrg.x) +#define YDPTOLP(dc,ty) \ + (MulDiv(((ty)-(dc)->Dc_Attr.ptlViewportOrg.y), (dc)->Dc_Attr.szlWindowExt.cy, (dc)->Dc_Attr.szlViewportExt.cy) + (dc)->Dc_Attr.ptlWindowOrg.y) +#define XLPTODP(dc,tx) \ + (MulDiv(((tx)-(dc)->Dc_Attr.ptlWindowOrg.x), (dc)->Dc_Attr.szlViewportExt.cx, (dc)->Dc_Attr.szlWindowExt.cx) + (dc)->Dc_Attr.ptlViewportOrg.x) +#define YLPTODP(dc,ty) \ + (MulDiv(((ty)-(dc)->Dc_Attr.ptlWindowOrg.y), (dc)->Dc_Attr.szlViewportExt.cy, (dc)->Dc_Attr.szlWindowExt.cy) + (dc)->Dc_Attr.ptlViewportOrg.y) /* Device <-> logical size conversion */ -#define XDSTOLS(dc,x) \ - MulDiv((x), (dc)->wndExtX, (dc)->vportExtX) -#define YDSTOLS(dc,y) \ - MulDiv((y), (dc)->wndExtY, (dc)->vportExtY) -#define XLSTODS(dc,x) \ - MulDiv((x), (dc)->vportExtX, (dc)->wndExtX) -#define YLSTODS(dc,y) \ - MulDiv((y), (dc)->vportExtY, (dc)->wndExtY) +#define XDSTOLS(dc,tx) \ + MulDiv((tx), (dc)->Dc_Attr.szlWindowExt.cx, (dc)->Dc_Attr.szlViewportExt.cx) +#define YDSTOLS(dc,ty) \ + MulDiv((ty), (dc)->Dc_Attr.szlWindowExt.cy, (dc)->Dc_Attr.szlViewportExt.cy) +#define XLSTODS(dc,tx) \ + MulDiv((tx), (dc)->Dc_Attr.szlViewportExt.cx, (dc)->Dc_Attr.szlWindowExt.cx) +#define YLSTODS(dc,ty) \ + MulDiv((ty), (dc)->Dc_Attr.szlViewportExt.cy, (dc)->Dc_Attr.szlWindowExt.cy) #endif diff --git a/reactos/subsystems/win32/win32k/objects/coord.c b/reactos/subsystems/win32/win32k/objects/coord.c index 38854737b7b..4fa0c450caa 100644 --- a/reactos/subsystems/win32/win32k/objects/coord.c +++ b/reactos/subsystems/win32/win32k/objects/coord.c @@ -37,18 +37,18 @@ void FASTCALL IntFixIsotropicMapping(PDC dc) { - ULONG xdim = EngMulDiv(dc->vportExtX, dc->GDIInfo->ulHorzSize, dc->GDIInfo->ulHorzRes) / dc->wndExtX; - ULONG ydim = EngMulDiv(dc->vportExtY, dc->GDIInfo->ulVertSize, dc->GDIInfo->ulVertRes) / dc->wndExtY; + ULONG xdim = EngMulDiv(dc->Dc_Attr.szlViewportExt.cx, dc->GDIInfo->ulHorzSize, dc->GDIInfo->ulHorzRes) / dc->Dc_Attr.szlWindowExt.cx; + ULONG ydim = EngMulDiv(dc->Dc_Attr.szlViewportExt.cy, dc->GDIInfo->ulVertSize, dc->GDIInfo->ulVertRes) / dc->Dc_Attr.szlWindowExt.cy; if (xdim > ydim) { - dc->vportExtX = dc->vportExtX * abs(ydim / xdim); - if (!dc->vportExtX) dc->vportExtX = 1; + dc->Dc_Attr.szlViewportExt.cx = dc->Dc_Attr.szlViewportExt.cx * abs(ydim / xdim); + if (!dc->Dc_Attr.szlViewportExt.cx) dc->Dc_Attr.szlViewportExt.cx = 1; } else { - dc->vportExtY = dc->vportExtY * abs(xdim / ydim); - if (!dc->vportExtY) dc->vportExtY = 1; + dc->Dc_Attr.szlViewportExt.cy = dc->Dc_Attr.szlViewportExt.cy * abs(xdim / ydim); + if (!dc->Dc_Attr.szlViewportExt.cy) dc->Dc_Attr.szlViewportExt.cy = 1; } } @@ -550,8 +550,8 @@ NtGdiOffsetViewportOrgEx(HDC hDC, ProbeForWrite(UnsafePoint, sizeof(POINT), 1); - UnsafePoint->x = dc->vportOrgX; - UnsafePoint->y = dc->vportOrgY; + UnsafePoint->x = dc->Dc_Attr.ptlViewportOrg.x; + UnsafePoint->y = dc->Dc_Attr.ptlViewportOrg.y; } _SEH_HANDLE { @@ -567,8 +567,8 @@ NtGdiOffsetViewportOrgEx(HDC hDC, } } - dc->vportOrgX += XOffset; - dc->vportOrgY += YOffset; + dc->Dc_Attr.ptlViewportOrg.x += XOffset; + dc->Dc_Attr.ptlViewportOrg.y += YOffset; DC_UpdateXforms(dc); DC_UnlockDc(dc); @@ -600,8 +600,8 @@ NtGdiOffsetWindowOrgEx(HDC hDC, ProbeForWrite(Point, sizeof(POINT), 1); - Point->x = dc->wndOrgX; - Point->y = dc->wndOrgY; + Point->x = dc->Dc_Attr.ptlWindowOrg.x; + Point->y = dc->Dc_Attr.ptlWindowOrg.y; } _SEH_HANDLE { @@ -617,8 +617,8 @@ NtGdiOffsetWindowOrgEx(HDC hDC, } } - dc->wndOrgX += XOffset; - dc->wndOrgY += YOffset; + dc->Dc_Attr.ptlWindowOrg.x += XOffset; + dc->Dc_Attr.ptlWindowOrg.y += YOffset; DC_UpdateXforms(dc); DC_UnlockDc(dc); @@ -710,46 +710,46 @@ NtGdiSetMapMode(HDC hDC, switch (MapMode) { case MM_TEXT: - dc->wndExtX = 1; - dc->wndExtY = 1; - dc->vportExtX = 1; - dc->vportExtY = 1; + dc->Dc_Attr.szlWindowExt.cx = 1; + dc->Dc_Attr.szlWindowExt.cy = 1; + dc->Dc_Attr.szlViewportExt.cx = 1; + dc->Dc_Attr.szlViewportExt.cy = 1; break; case MM_LOMETRIC: case MM_ISOTROPIC: - dc->wndExtX = dc->GDIInfo->ulHorzSize * 10; - dc->wndExtY = dc->GDIInfo->ulVertSize * 10; - dc->vportExtX = dc->GDIInfo->ulHorzRes; - dc->vportExtY = -dc->GDIInfo->ulVertRes; + dc->Dc_Attr.szlWindowExt.cx = dc->GDIInfo->ulHorzSize * 10; + dc->Dc_Attr.szlWindowExt.cy = dc->GDIInfo->ulVertSize * 10; + dc->Dc_Attr.szlViewportExt.cx = dc->GDIInfo->ulHorzRes; + dc->Dc_Attr.szlViewportExt.cy = -dc->GDIInfo->ulVertRes; break; case MM_HIMETRIC: - dc->wndExtX = dc->GDIInfo->ulHorzSize * 100; - dc->wndExtY = dc->GDIInfo->ulVertSize * 100; - dc->vportExtX = dc->GDIInfo->ulHorzRes; - dc->vportExtY = -dc->GDIInfo->ulVertRes; + dc->Dc_Attr.szlWindowExt.cx = dc->GDIInfo->ulHorzSize * 100; + dc->Dc_Attr.szlWindowExt.cy = dc->GDIInfo->ulVertSize * 100; + dc->Dc_Attr.szlViewportExt.cx = dc->GDIInfo->ulHorzRes; + dc->Dc_Attr.szlViewportExt.cy = -dc->GDIInfo->ulVertRes; break; case MM_LOENGLISH: - dc->wndExtX = EngMulDiv(1000, dc->GDIInfo->ulHorzSize, 254); - dc->wndExtY = EngMulDiv(1000, dc->GDIInfo->ulVertSize, 254); - dc->vportExtX = dc->GDIInfo->ulHorzRes; - dc->vportExtY = -dc->GDIInfo->ulVertRes; + dc->Dc_Attr.szlWindowExt.cx = EngMulDiv(1000, dc->GDIInfo->ulHorzSize, 254); + dc->Dc_Attr.szlWindowExt.cy = EngMulDiv(1000, dc->GDIInfo->ulVertSize, 254); + dc->Dc_Attr.szlViewportExt.cx = dc->GDIInfo->ulHorzRes; + dc->Dc_Attr.szlViewportExt.cy = -dc->GDIInfo->ulVertRes; break; case MM_HIENGLISH: - dc->wndExtX = EngMulDiv(10000, dc->GDIInfo->ulHorzSize, 254); - dc->wndExtY = EngMulDiv(10000, dc->GDIInfo->ulVertSize, 254); - dc->vportExtX = dc->GDIInfo->ulHorzRes; - dc->vportExtY = -dc->GDIInfo->ulVertRes; + dc->Dc_Attr.szlWindowExt.cx = EngMulDiv(10000, dc->GDIInfo->ulHorzSize, 254); + dc->Dc_Attr.szlWindowExt.cy = EngMulDiv(10000, dc->GDIInfo->ulVertSize, 254); + dc->Dc_Attr.szlViewportExt.cx = dc->GDIInfo->ulHorzRes; + dc->Dc_Attr.szlViewportExt.cy = -dc->GDIInfo->ulVertRes; break; case MM_TWIPS: - dc->wndExtX = EngMulDiv(14400, dc->GDIInfo->ulHorzSize, 254); - dc->wndExtY = EngMulDiv(14400, dc->GDIInfo->ulVertSize, 254); - dc->vportExtX = dc->GDIInfo->ulHorzRes; - dc->vportExtY = -dc->GDIInfo->ulVertRes; + dc->Dc_Attr.szlWindowExt.cx = EngMulDiv(14400, dc->GDIInfo->ulHorzSize, 254); + dc->Dc_Attr.szlWindowExt.cy = EngMulDiv(14400, dc->GDIInfo->ulVertSize, 254); + dc->Dc_Attr.szlViewportExt.cx = dc->GDIInfo->ulHorzRes; + dc->Dc_Attr.szlViewportExt.cy = -dc->GDIInfo->ulVertRes; break; case MM_ANISOTROPIC: @@ -806,11 +806,11 @@ NtGdiSetViewportExtEx(HDC hDC, ProbeForWrite(Size, sizeof(SIZE), 1); - Size->cx = dc->vportExtX; - Size->cy = dc->vportExtY; + Size->cx = dc->Dc_Attr.szlViewportExt.cx; + Size->cy = dc->Dc_Attr.szlViewportExt.cy; - dc->vportExtX = XExtent; - dc->vportExtY = YExtent; + dc->Dc_Attr.szlViewportExt.cx = XExtent; + dc->Dc_Attr.szlViewportExt.cy = YExtent; if (dc->Dc_Attr.iMapMode == MM_ISOTROPIC) IntFixIsotropicMapping(dc); @@ -861,8 +861,8 @@ NtGdiSetViewportOrgEx(HDC hDC, ProbeForWrite(Point, sizeof(POINT), 1); - Point->x = dc->vportOrgX; - Point->y = dc->vportOrgY; + Point->x = dc->Dc_Attr.ptlViewportOrg.x; + Point->y = dc->Dc_Attr.ptlViewportOrg.y; } _SEH_HANDLE { @@ -878,8 +878,8 @@ NtGdiSetViewportOrgEx(HDC hDC, } } - dc->vportOrgX = X; - dc->vportOrgY = Y; + dc->Dc_Attr.ptlViewportOrg.x = X; + dc->Dc_Attr.ptlViewportOrg.y = Y; DC_UpdateXforms(dc); DC_UnlockDc(dc); @@ -924,8 +924,8 @@ NtGdiSetWindowExtEx(HDC hDC, ProbeForWrite(Size, sizeof(SIZE), 1); - Size->cx = dc->wndExtX; - Size->cy = dc->wndExtY; + Size->cx = dc->Dc_Attr.szlWindowExt.cx; + Size->cy = dc->Dc_Attr.szlWindowExt.cy; } _SEH_HANDLE { @@ -941,8 +941,8 @@ NtGdiSetWindowExtEx(HDC hDC, } } - dc->wndExtX = XExtent; - dc->wndExtY = YExtent; + dc->Dc_Attr.szlWindowExt.cx = XExtent; + dc->Dc_Attr.szlWindowExt.cy = YExtent; DC_UpdateXforms(dc); DC_UnlockDc(dc); @@ -975,8 +975,8 @@ NtGdiSetWindowOrgEx(HDC hDC, ProbeForWrite(Point, sizeof(POINT), 1); - Point->x = dc->wndOrgX; - Point->y = dc->wndOrgY; + Point->x = dc->Dc_Attr.ptlWindowOrg.x; + Point->y = dc->Dc_Attr.ptlWindowOrg.y; } _SEH_HANDLE { @@ -992,8 +992,8 @@ NtGdiSetWindowOrgEx(HDC hDC, } } - dc->wndOrgX = X; - dc->wndOrgY = Y; + dc->Dc_Attr.ptlWindowOrg.x = X; + dc->Dc_Attr.ptlWindowOrg.y = Y; DC_UpdateXforms(dc); DC_UnlockDc(dc); diff --git a/reactos/subsystems/win32/win32k/objects/dc.c b/reactos/subsystems/win32/win32k/objects/dc.c index 3c631b34574..da886071168 100644 --- a/reactos/subsystems/win32/win32k/objects/dc.c +++ b/reactos/subsystems/win32/win32k/objects/dc.c @@ -216,14 +216,14 @@ NtGdiCreateCompatibleDC(HDC hDC) /* DriverName is copied in the AllocDC routine */ NewDC->DeviceDriver = OrigDC->DeviceDriver; - NewDC->wndOrgX = OrigDC->wndOrgX; - NewDC->wndOrgY = OrigDC->wndOrgY; - NewDC->wndExtX = OrigDC->wndExtX; - NewDC->wndExtY = OrigDC->wndExtY; - NewDC->vportOrgX = OrigDC->vportOrgX; - NewDC->vportOrgY = OrigDC->vportOrgY; - NewDC->vportExtX = OrigDC->vportExtX; - NewDC->vportExtY = OrigDC->vportExtY; + NewDC->Dc_Attr.ptlWindowOrg.x = OrigDC->Dc_Attr.ptlWindowOrg.x; + NewDC->Dc_Attr.ptlWindowOrg.y = OrigDC->Dc_Attr.ptlWindowOrg.y; + NewDC->Dc_Attr.szlWindowExt.cx = OrigDC->Dc_Attr.szlWindowExt.cx; + NewDC->Dc_Attr.szlWindowExt.cy = OrigDC->Dc_Attr.szlWindowExt.cy; + NewDC->Dc_Attr.ptlViewportOrg.x = OrigDC->Dc_Attr.ptlViewportOrg.x; + NewDC->Dc_Attr.ptlViewportOrg.y = OrigDC->Dc_Attr.ptlViewportOrg.y; + NewDC->Dc_Attr.szlViewportExt.cx = OrigDC->Dc_Attr.szlViewportExt.cx; + NewDC->Dc_Attr.szlViewportExt.cy = OrigDC->Dc_Attr.szlViewportExt.cy; /* Create default bitmap */ if (!(hBitmap = NtGdiCreateBitmap( 1, 1, 1, NewDC->w.bitsPerPixel, NULL ))) @@ -1294,14 +1294,14 @@ IntGdiGetDCState(HDC hDC) newdc->w.xformWorld2Vport = dc->w.xformWorld2Vport; newdc->w.xformVport2World = dc->w.xformVport2World; newdc->w.vport2WorldValid = dc->w.vport2WorldValid; - newdc->wndOrgX = dc->wndOrgX; - newdc->wndOrgY = dc->wndOrgY; - newdc->wndExtX = dc->wndExtX; - newdc->wndExtY = dc->wndExtY; - newdc->vportOrgX = dc->vportOrgX; - newdc->vportOrgY = dc->vportOrgY; - newdc->vportExtX = dc->vportExtX; - newdc->vportExtY = dc->vportExtY; + newdc->Dc_Attr.ptlWindowOrg.x = dc->Dc_Attr.ptlWindowOrg.x; + newdc->Dc_Attr.ptlWindowOrg.y = dc->Dc_Attr.ptlWindowOrg.y; + newdc->Dc_Attr.szlWindowExt.cx = dc->Dc_Attr.szlWindowExt.cx; + newdc->Dc_Attr.szlWindowExt.cy = dc->Dc_Attr.szlWindowExt.cy; + newdc->Dc_Attr.ptlViewportOrg.x = dc->Dc_Attr.ptlViewportOrg.x; + newdc->Dc_Attr.ptlViewportOrg.y = dc->Dc_Attr.ptlViewportOrg.y; + newdc->Dc_Attr.szlViewportExt.cx = dc->Dc_Attr.szlViewportExt.cx; + newdc->Dc_Attr.szlViewportExt.cy = dc->Dc_Attr.szlViewportExt.cy; newdc->hSelf = hnewdc; newdc->saveLevel = 0; @@ -1379,14 +1379,14 @@ IntGdiSetDCState ( HDC hDC, HDC hDCSave ) dc->w.xformVport2World = dcs->w.xformVport2World; dc->w.vport2WorldValid = dcs->w.vport2WorldValid; - dc->wndOrgX = dcs->wndOrgX; - dc->wndOrgY = dcs->wndOrgY; - dc->wndExtX = dcs->wndExtX; - dc->wndExtY = dcs->wndExtY; - dc->vportOrgX = dcs->vportOrgX; - dc->vportOrgY = dcs->vportOrgY; - dc->vportExtX = dcs->vportExtX; - dc->vportExtY = dcs->vportExtY; + dc->Dc_Attr.ptlWindowOrg.x = dcs->Dc_Attr.ptlWindowOrg.x; + dc->Dc_Attr.ptlWindowOrg.y = dcs->Dc_Attr.ptlWindowOrg.y; + dc->Dc_Attr.szlWindowExt.cx = dcs->Dc_Attr.szlWindowExt.cx; + dc->Dc_Attr.szlWindowExt.cy = dcs->Dc_Attr.szlWindowExt.cy; + dc->Dc_Attr.ptlViewportOrg.x = dcs->Dc_Attr.ptlViewportOrg.x; + dc->Dc_Attr.ptlViewportOrg.y = dcs->Dc_Attr.ptlViewportOrg.y; + dc->Dc_Attr.szlViewportExt.cx = dcs->Dc_Attr.szlViewportExt.cx; + dc->Dc_Attr.szlViewportExt.cy = dcs->Dc_Attr.szlViewportExt.cy; dc->PalIndexed = dcs->PalIndexed; if (!(dc->w.flags & DC_MEMORY)) @@ -1778,10 +1778,10 @@ DC_GET_VAL( INT, NtGdiGetROP2, Dc_Attr.jROP2 ) DC_GET_VAL( INT, NtGdiGetStretchBltMode, Dc_Attr.jStretchBltMode ) DC_GET_VAL( UINT, NtGdiGetTextAlign, Dc_Attr.lTextAlign ) DC_GET_VAL( COLORREF, NtGdiGetTextColor, Dc_Attr.crForegroundClr ) -DC_GET_VAL_EX( GetViewportExtEx, vportExtX, vportExtY, SIZE, cx, cy ) -DC_GET_VAL_EX( GetViewportOrgEx, vportOrgX, vportOrgY, POINT, x, y ) -DC_GET_VAL_EX( GetWindowExtEx, wndExtX, wndExtY, SIZE, cx, cy ) -DC_GET_VAL_EX( GetWindowOrgEx, wndOrgX, wndOrgY, POINT, x, y ) +DC_GET_VAL_EX( GetViewportExtEx, Dc_Attr.szlViewportExt.cx, Dc_Attr.szlViewportExt.cy, SIZE, cx, cy ) +DC_GET_VAL_EX( GetViewportOrgEx, Dc_Attr.ptlViewportOrg.x, Dc_Attr.ptlViewportOrg.y, POINT, x, y ) +DC_GET_VAL_EX( GetWindowExtEx, Dc_Attr.szlWindowExt.cx, Dc_Attr.szlWindowExt.cy, SIZE, cx, cy ) +DC_GET_VAL_EX( GetWindowOrgEx, Dc_Attr.ptlWindowOrg.x, Dc_Attr.ptlWindowOrg.y, POINT, x, y ) BOOL APIENTRY @@ -2205,10 +2205,12 @@ DC_AllocDC(PUNICODE_STRING Driver) NewDC->Dc_Attr.iMapMode = MM_TEXT; // DC_Attr->iMapMode = MM_TEXT; - NewDC->wndExtX = 1.0f; - NewDC->wndExtY = 1.0f; - NewDC->vportExtX = 1.0f; - NewDC->vportExtY = 1.0f; + +//// HELP! FLOAT to INT !!!!!!!!! + NewDC->Dc_Attr.szlWindowExt.cx = 1.0f; + NewDC->Dc_Attr.szlWindowExt.cy = 1.0f; + NewDC->Dc_Attr.szlViewportExt.cx = 1.0f; + NewDC->Dc_Attr.szlViewportExt.cy = 1.0f; NewDC->Dc_Attr.crForegroundClr = 0; // NewDC->pDc_Attr->ulForegroundClr = 0; // Already Zero @@ -2313,14 +2315,14 @@ DC_UpdateXforms(PDC dc) FLOAT scaleX, scaleY; /* Construct a transformation to do the window-to-viewport conversion */ - scaleX = (dc->wndExtX ? (FLOAT)dc->vportExtX / (FLOAT)dc->wndExtX : 0.0f); - scaleY = (dc->wndExtY ? (FLOAT)dc->vportExtY / (FLOAT)dc->wndExtY : 0.0f); + scaleX = (dc->Dc_Attr.szlWindowExt.cx ? (FLOAT)dc->Dc_Attr.szlViewportExt.cx / (FLOAT)dc->Dc_Attr.szlWindowExt.cx : 0.0f); + scaleY = (dc->Dc_Attr.szlWindowExt.cy ? (FLOAT)dc->Dc_Attr.szlViewportExt.cy / (FLOAT)dc->Dc_Attr.szlWindowExt.cy : 0.0f); xformWnd2Vport.eM11 = scaleX; xformWnd2Vport.eM12 = 0.0; xformWnd2Vport.eM21 = 0.0; xformWnd2Vport.eM22 = scaleY; - xformWnd2Vport.eDx = (FLOAT)dc->vportOrgX - scaleX * (FLOAT)dc->wndOrgX; - xformWnd2Vport.eDy = (FLOAT)dc->vportOrgY - scaleY * (FLOAT)dc->wndOrgY; + xformWnd2Vport.eDx = (FLOAT)dc->Dc_Attr.ptlViewportOrg.x - scaleX * (FLOAT)dc->Dc_Attr.ptlWindowOrg.x; + xformWnd2Vport.eDy = (FLOAT)dc->Dc_Attr.ptlViewportOrg.y - scaleY * (FLOAT)dc->Dc_Attr.ptlWindowOrg.y; /* Combine with the world transformation */ IntGdiCombineTransform(&dc->w.xformWorld2Vport, &dc->w.xformWorld2Wnd, &xformWnd2Vport); diff --git a/reactos/subsystems/win32/win32k/objects/path.c b/reactos/subsystems/win32/win32k/objects/path.c index 6211ca90de5..3b7a0697c63 100644 --- a/reactos/subsystems/win32/win32k/objects/path.c +++ b/reactos/subsystems/win32/win32k/objects/path.c @@ -1487,10 +1487,10 @@ BOOL FASTCALL PATH_StrokePath(DC *dc, GdiPath *pPath) /* Set MM_TEXT */ dc->Dc_Attr.iMapMode = MM_TEXT; - dc->vportOrgX = 0; - dc->vportOrgY = 0; - dc->wndOrgX = 0; - dc->wndOrgY = 0; + dc->Dc_Attr.ptlViewportOrg.x = 0; + dc->Dc_Attr.ptlViewportOrg.y = 0; + dc->Dc_Attr.ptlWindowOrg.x = 0; + dc->Dc_Attr.ptlWindowOrg.y = 0; graphicsMode = dc->Dc_Attr.iGraphicsMode; dc->Dc_Attr.iGraphicsMode = GM_ADVANCED; IntGdiModifyWorldTransform(dc, &xform, MWT_IDENTITY); @@ -1600,15 +1600,15 @@ end: /* Restore the old mapping mode */ dc->Dc_Attr.iMapMode = mapMode; - dc->wndExtX = szWindowExt.cx; - dc->wndExtY = szWindowExt.cy; - dc->wndOrgX = ptWindowOrg.x; - dc->wndOrgY = ptWindowOrg.y; + dc->Dc_Attr.szlWindowExt.cx = szWindowExt.cx; + dc->Dc_Attr.szlWindowExt.cy = szWindowExt.cy; + dc->Dc_Attr.ptlWindowOrg.x = ptWindowOrg.x; + dc->Dc_Attr.ptlWindowOrg.y = ptWindowOrg.y; - dc->vportExtX = szViewportExt.cx; - dc->vportExtY = szViewportExt.cy; - dc->vportOrgX = ptViewportOrg.x; - dc->vportOrgY = ptViewportOrg.y; + dc->Dc_Attr.szlViewportExt.cx = szViewportExt.cx; + dc->Dc_Attr.szlViewportExt.cx = szViewportExt.cy; + dc->Dc_Attr.ptlViewportOrg.x = ptViewportOrg.x; + dc->Dc_Attr.ptlViewportOrg.y = ptViewportOrg.y; /* Restore the world transform */ dc->w.xformWorld2Wnd = xform; diff --git a/reactos/subsystems/win32/win32k/objects/region.c b/reactos/subsystems/win32/win32k/objects/region.c index 7379cc63e82..d94857b6c20 100644 --- a/reactos/subsystems/win32/win32k/objects/region.c +++ b/reactos/subsystems/win32/win32k/objects/region.c @@ -1860,7 +1860,8 @@ BOOL FASTCALL REGION_LPTODP(HDC hdc, HRGN hDest, HRGN hSrc) if(NtGdiCombineRgn(hDest, hSrc, 0, RGN_COPY) == ERROR) goto done; - NtGdiOffsetRgn(hDest, dc->vportOrgX - dc->wndOrgX, dc->vportOrgY - dc->wndOrgY); + NtGdiOffsetRgn(hDest, dc->Dc_Attr.ptlViewportOrg.x - dc->Dc_Attr.ptlWindowOrg.x, + dc->Dc_Attr.ptlViewportOrg.y - dc->Dc_Attr.ptlWindowOrg.y); ret = TRUE; goto done; }