98 SIZEL szlWindowExt, szlViewportExt;
102 pdcattr = pdc->pdcattr;
109 if ((szlWindowExt.
cx == 0) || (szlWindowExt.
cy == 0) ||
110 (szlViewportExt.
cx == 0) || (szlViewportExt.
cy == 0))
121 s = (szlWindowExt.
cy ^ szlViewportExt.
cx) > 0 ? 1 : -1;
126 s = (szlWindowExt.
cx ^ szlViewportExt.
cy) > 0 ? 1 : -1;
153 if (szlWindowExt.
cx != 0)
161 if (szlWindowExt.
cy != 0)
184 XFORMOBJ xoPageToDevice, xoWorldToPage, xoWorldToDevice;
206 XFORMOBJ xoWorldToDevice, xoDeviceToWorld;
217 MX_Set0(&pdc->pdcattr->mxDeviceToWorld);
236 if (!pxformDest || !pxform1 || !pxform2)
return FALSE;
326 pmx = &mxPageToDevice;
381 if (!UnsafePtsIn || !UnsafePtOut)
534 if (pxformUnsafe !=
NULL)
572 pdcattr =
dc->pdcattr;
583 UnsafePoint->
x = -UnsafePoint->
x;
630 pdcattr =
dc->pdcattr;
686 pdcattr = pDC->pdcattr;
690 if (Xdenom && Ydenom)
765 pdcattr = pDC->pdcattr;
796 if (Xdenom && Ydenom)
930 pdcattr =
dc->pdcattr;
963 pdcattr =
dc->pdcattr;
1015 pdcattr =
dc->pdcattr;
1060 pdcattr =
dc->pdcattr;
1070 if (
cx == 0)
return;
1074 X = (
dc->erclWindow.right -
dc->erclWindow.left) - 1;
1148 dwOldLayout = pdc->pdcattr->dwLayout;
1171 Ret =
dc->erclWindow.right -
dc->erclWindow.left;
1203 IN INT cxVirtualDevice,
1204 IN INT cyVirtualDevice)
1209 if (!cxVirtualDevice || !cyVirtualDevice)
1217 pdcattr =
dc->pdcattr;
1234 IN INT cxVirtualDevicePixel,
1235 IN INT cyVirtualDevicePixel,
1236 IN INT cxVirtualDeviceMm,
1237 IN INT cyVirtualDeviceMm)
1243 if (cxVirtualDevicePixel == 0 && cyVirtualDevicePixel == 0 &&
1244 cxVirtualDeviceMm == 0 && cyVirtualDeviceMm == 0)
1251 else if (cxVirtualDevicePixel == 0 || cyVirtualDevicePixel == 0 ||
1252 cxVirtualDeviceMm == 0 || cyVirtualDeviceMm == 0)
1260 pdcattr =
dc->pdcattr;
1276 if (pDC->pdcattr->flFontMapper & 1)
1280 AspectRatio->
cx = pDC->ppdev->gdiinfo.ulLogPixelsX;
1281 AspectRatio->
cy = pDC->ppdev->gdiinfo.ulLogPixelsY;
1285 AspectRatio->
cx = 0;
1286 AspectRatio->
cy = 0;
1323 Point->
x = pdc->pdcattr->szlWindowExt.cx;
1324 Point->
y = pdc->pdcattr->szlWindowExt.cy;
1328 *
Point = pdc->pdcattr->ptlViewportOrg;
1332 *
Point = pdc->pdcattr->ptlWindowOrg;
1336 *
Point = pdc->ptlDCOrig;
1369 dc->ptlDCOrig.x =
x;
1370 dc->ptlDCOrig.y =
y;
1373 dc->ptlFillOrigin.x =
dc->dclevel.ptlBrushOrigin.x +
x;
1374 dc->ptlFillOrigin.y =
dc->dclevel.ptlBrushOrigin.y +
y;
#define ERROR_INVALID_PARAMETER
LONG APIENTRY NtGdiGetDeviceWidth(IN HDC hdc)
BOOL FASTCALL GreSetViewportOrgEx(HDC hDC, int X, int Y, LPPOINT Point)
BOOL NTAPI GreModifyWorldTransform(PDC pdc, const XFORML *pxform, DWORD dwMode)
int APIENTRY IntGdiSetMapMode(PDC dc, int MapMode)
FORCEINLINE PDC DC_LockDc(HDC hdc)
BOOL APIENTRY NtGdiModifyWorldTransform(HDC hdc, LPXFORM pxformUnsafe, DWORD dwMode)
#define FLOATOBJ_DivLong(pf, l)
#define PAGE_TO_DEVICE_IDENTITY
#define ERROR_INVALID_HANDLE
#define GdiDeviceSpaceToWorldSpace
#define ERROR_NOT_ENOUGH_MEMORY
IN PVOID IN PVOID IN USHORT IN USHORT Size
BOOL WINAPI GreGetViewportExtEx(_In_ HDC hdc, _Out_ LPSIZE lpSize)
BOOL APIENTRY NtGdiSetWindowOrgEx(HDC hDC, int X, int Y, LPPOINT Point)
GLint GLint GLint GLint GLint x
BOOL APIENTRY NtGdiOffsetWindowOrgEx(HDC hDC, int XOffset, int YOffset, LPPOINT Point)
BOOL APIENTRY NtGdiScaleWindowExtEx(HDC hDC, int Xnum, int Xdenom, int Ynum, int Ydenom, LPSIZE pSize)
VOID NTAPI ProbeForWrite(IN PVOID Address, IN SIZE_T Length, IN ULONG Alignment)
#define LAYOUT_ORIENTATIONMASK
#define PAGE_XLATE_CHANGED
BOOL APIENTRY NtGdiOffsetViewportOrgEx(HDC hDC, int XOffset, int YOffset, LPPOINT UnsafePoint)
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
#define ISO_OR_ANISO_MAP_MODE
BOOL APIENTRY NtGdiMirrorWindowOrg(IN HDC hdc)
BOOL APIENTRY NtGdiSetVirtualResolution(IN HDC hdc, IN INT cxVirtualDevicePixel, IN INT cyVirtualDevicePixel, IN INT cxVirtualDeviceMm, IN INT cyVirtualDeviceMm)
BOOL APIENTRY NtGdiGetTransform(HDC hdc, DWORD iXform, LPXFORM pXForm)
VOID NTAPI DC_vSetLayout(IN PDC pdc, IN LONG wox, IN DWORD dwLayout)
#define FLOATOBJ_AddLong(pf, l)
BOOL APIENTRY NtGdiSetSizeDevice(IN HDC hdc, IN INT cxVirtualDevice, IN INT cyVirtualDevice)
VOID FASTCALL DC_vUpdateDeviceToWorld(PDC pdc)
VOID FASTCALL DC_vUpdateWorldToDevice(PDC pdc)
BOOL NTAPI GreCombineTransform(XFORML *pxformDest, XFORML *pxform1, XFORML *pxform2)
DWORD APIENTRY NtGdiSetLayout(IN HDC hdc, IN LONG wox, IN DWORD dwLayout)
#define GdiPageSpaceToDeviceSpace
#define NT_SUCCESS(StatCode)
#define EXCEPTION_EXECUTE_HANDLER
#define GdiWorldSpaceToPageSpace
#define PAGE_EXTENTS_CHANGED
#define DEVICE_TO_PAGE_INVALID
BOOL WINAPI GreSetDCOrg(_In_ HDC hdc, _In_ LONG x, _In_ LONG y, _In_opt_ PRECTL Rect)
#define ExAllocatePoolWithTag(hernya, size, tag)
static VOID FASTCALL DC_vGetAspectRatioFilter(PDC pDC, LPSIZE AspectRatio)
BOOL APIENTRY NtGdiScaleViewportExtEx(HDC hDC, int Xnum, int Xdenom, int Ynum, int Ydenom, LPSIZE pSize)
VOID NTAPI ProbeForRead(IN CONST VOID *Address, IN SIZE_T Length, IN ULONG Alignment)
BOOL APIENTRY GreGetDCPoint(HDC hDC, UINT iPoint, PPOINTL Point)
#define PTOD_EFM22_NEGATIVE
BOOL APIENTRY NtGdiGetDCPoint(HDC hDC, UINT iPoint, PPOINTL Point)
BOOL APIENTRY NtGdiTransformPoints(HDC hDC, PPOINT UnsafePtsIn, PPOINT UnsafePtOut, INT Count, INT iMode)
VOID FASTCALL SetLastNtError(NTSTATUS Status)
SIZEL szlVirtualDevicePixel
#define PAGE_TO_DEVICE_SCALE_IDENTITY
#define GdiWorldSpaceToDeviceSpace
BOOL APIENTRY NtGdiCombineTransform(LPXFORM UnsafeXFormResult, LPXFORM Unsafexform1, LPXFORM Unsafexform2)
VOID FASTCALL DC_vFixIsotropicMapping(PDC pdc)
#define FLOATOBJ_SetLong(pf, l)
VOID FASTCALL DC_vGetPageToDevice(PDC pdc, MATRIX *pmx)
#define WORLD_XFORM_CHANGED
FORCEINLINE VOID DC_UnlockDc(PDC pdc)
BOOL WINAPI GreGetWindowExtEx(_In_ HDC hdc, _Out_ LPSIZE lpSize)
FORCEINLINE PSIZEL DC_pszlViewportExt(PDC pdc)
ENGAPI INT APIENTRY EngMulDiv(_In_ INT a, _In_ INT b, _In_ INT c)
GLint GLint GLint GLint GLint GLint y
#define DEVICE_TO_WORLD_INVALID
FORCEINLINE PMATRIX DC_pmxWorldToPage(PDC pdc)
SIZEL szlVirtualDeviceSize
#define RtlCopyMemory(Destination, Source, Length)
FORCEINLINE PMATRIX DC_pmxWorldToDevice(PDC pdc)
BOOL WINAPI GreGetDCOrgEx(_In_ HDC hdc, _Out_ PPOINTL Point, _Out_ PRECTL Rect)
#define _SEH2_EXCEPT(...)
__kernel_entry W32KAPI INT APIENTRY NtGdiGetDeviceCaps(_In_ HDC hdc, _In_ INT i)
#define _SEH2_GetExceptionCode()
#define INVALIDATE_ATTRIBUTES
#define _SEH2_YIELD(__stmt)
FORCEINLINE PMATRIX DC_pmxDeviceToWorld(PDC pdc)
#define FLOATOBJ_Mul(pf, pf1)
#define ExFreePoolWithTag(_P, _T)
BOOL APIENTRY NtGdiSetViewportOrgEx(HDC hDC, int X, int Y, LPPOINT Point)
VOID FASTCALL IntMirrorWindowOrg(PDC dc)
C_ASSERT(sizeof(XFORML)==sizeof(XFORM))
ENGAPI VOID APIENTRY EngSetLastError(_In_ ULONG iError)
static BOOLEAN INTERNAL_APPLY_MATRIX(PMATRIX matrix, LPPOINT points, UINT count)
#define PTOD_EFM11_NEGATIVE
#define MWT_RIGHTMULTIPLY