mirror of
https://github.com/reactos/reactos.git
synced 2024-10-16 06:04:13 +00:00
Move Window and Viewport Ext and Org to Dc_Attr. Tested it with qemu.
svn path=/trunk/; revision=28184
This commit is contained in:
parent
556e9b7da8
commit
2619101eee
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue