3 /* Maximum extend of coordinate space */
4 #define MIN_COORD (INT_MIN / 16)
5 #define MAX_COORD (INT_MAX / 16)
7 #define IntLPtoDP(pdc, ppt, count) DC_vXformWorldToDevice(pdc, count, (PPOINTL)(ppt), (PPOINTL)(ppt));
8 #define CoordLPtoDP(pdc, ppt) DC_vXformWorldToDevice(pdc, 1, (PPOINTL)(ppt), (PPOINTL)(ppt));
9 #define IntDPtoLP(pdc, ppt, count) DC_vXformDeviceToWorld(pdc, count, (PPOINTL)(ppt), (PPOINTL)(ppt));
10 #define CoordDPtoLP(pdc, ppt) DC_vXformDeviceToWorld(pdc, 1, (PPOINTL)(ppt), (PPOINTL)(ppt));
12 #define XForm2MatrixS(m, x) XFormToMatrix(m, (XFORML*)x)
13 #define MatrixS2XForm(x, m) MatrixToXForm((XFORML*)x, m)
22 XFORMOBJ_vInit(&xo
, pmx
);
23 XFORMOBJ_iSetXform(&xo
, pxform
);
33 XFORMOBJ_vInit(&xo
, (MATRIX
*)pmx
);
34 XFORMOBJ_iGetXform(&xo
, pxform
);
41 const XFORML
*pxformSource
)
46 XFORMOBJ_vInit(&xo
, &mx
);
47 XFORMOBJ_iSetXform(&xo
, pxformSource
);
48 XFORMOBJ_iInverse(&xo
, &xo
);
49 XFORMOBJ_iGetXform(&xo
, pxformDest
);
54 DC_vFixIsotropicMapping(PDC pdc
);
58 DC_vUpdateWorldToDevice(PDC pdc
);
62 DC_vUpdateDeviceToWorld(PDC pdc
);
66 DC_pszlViewportExt(PDC pdc
)
68 PDC_ATTR pdcattr
= pdc
->pdcattr
;
70 /* Check if we need isotropic fixup */
71 if ((pdcattr
->flXform
& PAGE_EXTENTS_CHANGED
) &&
72 (pdcattr
->iMapMode
== MM_ISOTROPIC
))
74 /* Fixup viewport extension */
75 DC_vFixIsotropicMapping(pdc
);
78 return &pdcattr
->szlViewportExt
;
83 DC_pmxWorldToPage(PDC pdc
)
85 return &pdc
->pdcattr
->mxWorldToPage
;
90 DC_pmxWorldToDevice(PDC pdc
)
92 /* Check if world or page xform was changed */
93 if (pdc
->pdcattr
->flXform
& (PAGE_XLATE_CHANGED
|PAGE_EXTENTS_CHANGED
|WORLD_XFORM_CHANGED
))
95 /* Update the world-to-device xform */
96 DC_vUpdateWorldToDevice(pdc
);
99 return &pdc
->pdcattr
->mxWorldToDevice
;
104 DC_pmxDeviceToWorld(PDC pdc
)
106 /* Check if the device-to-world xform is invalid */
107 if (pdc
->pdcattr
->flXform
& DEVICE_TO_WORLD_INVALID
)
109 /* Update the world-to-device xform */
110 DC_vUpdateDeviceToWorld(pdc
);
113 return &pdc
->pdcattr
->mxDeviceToWorld
;
118 DC_vXformDeviceToWorld(
122 IN PPOINTL pptlSource
)
127 pmx
= DC_pmxDeviceToWorld(pdc
);
128 XFORMOBJ_vInit(&xo
, pmx
);
129 XFORMOBJ_bApplyXform(&xo
, XF_LTOL
, cNumPoints
, pptlDest
, pptlSource
);
134 DC_vXformWorldToDevice(
138 IN PPOINTL pptlSource
)
143 pmx
= DC_pmxWorldToDevice(pdc
);
144 XFORMOBJ_vInit(&xo
, pmx
);
145 XFORMOBJ_bApplyXform(&xo
, XF_LTOL
, cNumPoints
, pptlDest
, pptlSource
);
150 GreModifyWorldTransform(
152 const XFORML
*pXForm
,
155 VOID FASTCALL
IntMirrorWindowOrg(PDC
);
156 int APIENTRY
IntGdiSetMapMode(PDC
, int);
157 BOOL FASTCALL
GreLPtoDP(HDC
, LPPOINT
, INT
);
158 BOOL FASTCALL
GreDPtoLP(HDC
, LPPOINT
, INT
);
159 BOOL APIENTRY
GreGetDCPoint(HDC
,UINT
,PPOINTL
);
160 BOOL WINAPI
GreGetWindowExtEx( _In_ HDC hdc
, _Out_ LPSIZE lpSize
);
161 BOOL WINAPI
GreGetViewportExtEx( _In_ HDC hdc
, _Out_ LPSIZE lpSize
);
162 BOOL FASTCALL
GreSetViewportOrgEx(HDC
,int,int,LPPOINT
);