[WIN32SS][NTGDI] Fix wrong IN/OUT (#1539)
[reactos.git] / win32ss / gdi / ntgdi / coord.h
index 2f3386b..dc3228d 100644 (file)
@@ -1,9 +1,19 @@
 #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)
@@ -57,8 +67,8 @@ VOID
 FASTCALL
 DC_vUpdateDeviceToWorld(PDC pdc);
 
-PSIZEL
 FORCEINLINE
+PSIZEL
 DC_pszlViewportExt(PDC pdc)
 {
     PDC_ATTR pdcattr = pdc->pdcattr;
@@ -74,15 +84,15 @@ DC_pszlViewportExt(PDC pdc)
     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 */
@@ -95,8 +105,8 @@ DC_pmxWorldToDevice(PDC pdc)
     return &pdc->pdcattr->mxWorldToDevice;
 }
 
-PMATRIX
 FORCEINLINE
+PMATRIX
 DC_pmxDeviceToWorld(PDC pdc)
 {
     /* Check if the device-to-world xform is invalid */
@@ -109,12 +119,12 @@ DC_pmxDeviceToWorld(PDC pdc)
     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;
@@ -125,12 +135,12 @@ DC_vXformDeviceToWorld(
     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;
@@ -150,4 +160,11 @@ GreModifyWorldTransform(
 
 VOID FASTCALL IntMirrorWindowOrg(PDC);
 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);