#pragma once
-#define IntLPtoDP(pdc, ppt, count) DC_vXformWorldToDevice(pdc, count, (PPOINTL)(ppt), (PPOINTL)(ppt));
-#define CoordLPtoDP(pdc, ppt) DC_vXformWorldToDevice(pdc, 1, (PPOINTL)(ppt), (PPOINTL)(ppt));
-#define IntDPtoLP(pdc, ppt, count) DC_vXformDeviceToWorld(pdc, count, (PPOINTL)(ppt), (PPOINTL)(ppt));
-#define CoordDPtoLP(pdc, ppt) DC_vXformDeviceToWorld(pdc, 1, (PPOINTL)(ppt), (PPOINTL)(ppt));
+/* Maximum extend of coordinate space */
+#define MIN_COORD (INT_MIN / 16)
+#define MAX_COORD (INT_MAX / 16)
+
+#define IntLPtoDP(pdc, ppt, count) \
+ DC_vUpdateWorldToDevice(pdc); \
+ DC_vXformWorldToDevice(pdc, count, (PPOINTL)(ppt), (PPOINTL)(ppt));
+#define CoordLPtoDP(pdc, ppt) \
+ DC_vXformWorldToDevice(pdc, 1, (PPOINTL)(ppt), (PPOINTL)(ppt));
+#define IntDPtoLP(pdc, ppt, count) \
+ DC_vUpdateDeviceToWorld(pdc); \
+ DC_vXformDeviceToWorld(pdc, count, (PPOINTL)(ppt), (PPOINTL)(ppt));
+#define CoordDPtoLP(pdc, ppt) \
+ DC_vXformDeviceToWorld(pdc, 1, (PPOINTL)(ppt), (PPOINTL)(ppt));
#define XForm2MatrixS(m, x) XFormToMatrix(m, (XFORML*)x)
#define MatrixS2XForm(x, m) MatrixToXForm((XFORML*)x, m)
FASTCALL
DC_vUpdateDeviceToWorld(PDC pdc);
-PSIZEL
FORCEINLINE
+PSIZEL
DC_pszlViewportExt(PDC pdc)
{
PDC_ATTR pdcattr = pdc->pdcattr;
return &pdcattr->szlViewportExt;
}
-PMATRIX
FORCEINLINE
+PMATRIX
DC_pmxWorldToPage(PDC pdc)
{
return &pdc->pdcattr->mxWorldToPage;
}
-PMATRIX
FORCEINLINE
+PMATRIX
DC_pmxWorldToDevice(PDC pdc)
{
/* Check if world or page xform was changed */
return &pdc->pdcattr->mxWorldToDevice;
}
-PMATRIX
FORCEINLINE
+PMATRIX
DC_pmxDeviceToWorld(PDC pdc)
{
/* Check if the device-to-world xform is invalid */
return &pdc->pdcattr->mxDeviceToWorld;
}
-VOID
FORCEINLINE
+VOID
DC_vXformDeviceToWorld(
IN PDC pdc,
IN ULONG cNumPoints,
- IN PPOINTL pptlDest,
+ OUT PPOINTL pptlDest,
IN PPOINTL pptlSource)
{
XFORMOBJ xo;
XFORMOBJ_bApplyXform(&xo, XF_LTOL, cNumPoints, pptlDest, pptlSource);
}
-VOID
FORCEINLINE
+VOID
DC_vXformWorldToDevice(
IN PDC pdc,
IN ULONG cNumPoints,
- IN PPOINTL pptlDest,
+ OUT PPOINTL pptlDest,
IN PPOINTL pptlSource)
{
XFORMOBJ xo;
int APIENTRY IntGdiSetMapMode(PDC, int);
BOOL FASTCALL GreLPtoDP(HDC, LPPOINT, INT);
BOOL FASTCALL GreDPtoLP(HDC, LPPOINT, INT);
+BOOL APIENTRY GreGetDCPoint(HDC,UINT,PPOINTL);
+BOOL WINAPI GreGetWindowExtEx( _In_ HDC hdc, _Out_ LPSIZE lpSize);
+BOOL WINAPI GreGetViewportExtEx( _In_ HDC hdc, _Out_ LPSIZE lpSize);
+BOOL FASTCALL GreSetViewportOrgEx(HDC,int,int,LPPOINT);
+BOOL WINAPI GreGetDCOrgEx(_In_ HDC, _Out_ PPOINTL, _Out_ PRECTL);
+BOOL WINAPI GreSetDCOrg(_In_ HDC, _In_ LONG, _In_ LONG, _In_opt_ PRECTL);