ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

coord.h
Go to the documentation of this file.
00001 #pragma once
00002 
00003 #define IntLPtoDP(pdc, ppt, count) DC_vXformWorldToDevice(pdc, count, (PPOINTL)(ppt), (PPOINTL)(ppt));
00004 #define CoordLPtoDP(pdc, ppt) DC_vXformWorldToDevice(pdc, 1,  (PPOINTL)(ppt), (PPOINTL)(ppt));
00005 #define IntDPtoLP(pdc, ppt, count) DC_vXformDeviceToWorld(pdc, count, (PPOINTL)(ppt), (PPOINTL)(ppt));
00006 #define CoordDPtoLP(pdc, ppt) DC_vXformDeviceToWorld(pdc, 1, (PPOINTL)(ppt), (PPOINTL)(ppt));
00007 
00008 #define XForm2MatrixS(m, x) XFormToMatrix(m, (XFORML*)x)
00009 #define MatrixS2XForm(x, m) MatrixToXForm((XFORML*)x, m)
00010 
00011 FORCEINLINE
00012 void
00013 XFormToMatrix(
00014     MATRIX *pmx,
00015     const XFORML *pxform)
00016 {
00017     XFORMOBJ xo;
00018     XFORMOBJ_vInit(&xo, pmx);
00019     XFORMOBJ_iSetXform(&xo, pxform);
00020 }
00021 
00022 FORCEINLINE
00023 void
00024 MatrixToXForm(
00025     XFORML *pxform,
00026     const MATRIX *pmx)
00027 {
00028     XFORMOBJ xo;
00029     XFORMOBJ_vInit(&xo, (MATRIX*)pmx);
00030     XFORMOBJ_iGetXform(&xo, pxform);
00031 }
00032 
00033 FORCEINLINE
00034 void
00035 InvertXform(
00036     XFORML *pxformDest,
00037     const XFORML *pxformSource)
00038 {
00039     XFORMOBJ xo;
00040     MATRIX mx;
00041 
00042     XFORMOBJ_vInit(&xo, &mx);
00043     XFORMOBJ_iSetXform(&xo, pxformSource);
00044     XFORMOBJ_iInverse(&xo, &xo);
00045     XFORMOBJ_iGetXform(&xo, pxformDest);
00046 }
00047 
00048 VOID
00049 FASTCALL
00050 DC_vFixIsotropicMapping(PDC pdc);
00051 
00052 VOID
00053 FASTCALL
00054 DC_vUpdateWorldToDevice(PDC pdc);
00055 
00056 VOID
00057 FASTCALL
00058 DC_vUpdateDeviceToWorld(PDC pdc);
00059 
00060 PSIZEL
00061 FORCEINLINE
00062 DC_pszlViewportExt(PDC pdc)
00063 {
00064     PDC_ATTR pdcattr = pdc->pdcattr;
00065 
00066     /* Check if we need isotropic fixup */
00067     if ((pdcattr->flXform & PAGE_EXTENTS_CHANGED) &&
00068         (pdcattr->iMapMode == MM_ISOTROPIC))
00069     {
00070         /* Fixup viewport extension */
00071         DC_vFixIsotropicMapping(pdc);
00072     }
00073 
00074     return &pdcattr->szlViewportExt;
00075 }
00076 
00077 PMATRIX
00078 FORCEINLINE
00079 DC_pmxWorldToPage(PDC pdc)
00080 {
00081     return &pdc->pdcattr->mxWorldToPage;
00082 }
00083 
00084 PMATRIX
00085 FORCEINLINE
00086 DC_pmxWorldToDevice(PDC pdc)
00087 {
00088     /* Check if world or page xform was changed */
00089     if (pdc->pdcattr->flXform & (PAGE_XLATE_CHANGED|PAGE_EXTENTS_CHANGED|WORLD_XFORM_CHANGED))
00090     {
00091         /* Update the world-to-device xform */
00092          DC_vUpdateWorldToDevice(pdc);
00093     }
00094 
00095     return &pdc->pdcattr->mxWorldToDevice;
00096 }
00097 
00098 PMATRIX
00099 FORCEINLINE
00100 DC_pmxDeviceToWorld(PDC pdc)
00101 {
00102     /* Check if the device-to-world xform is invalid */
00103     if (pdc->pdcattr->flXform & DEVICE_TO_WORLD_INVALID)
00104     {
00105         /* Update the world-to-device xform */
00106          DC_vUpdateDeviceToWorld(pdc);
00107     }
00108 
00109     return &pdc->pdcattr->mxDeviceToWorld;
00110 }
00111 
00112 VOID
00113 FORCEINLINE
00114 DC_vXformDeviceToWorld(
00115     IN PDC pdc,
00116     IN ULONG cNumPoints,
00117     IN PPOINTL pptlDest,
00118     IN PPOINTL pptlSource)
00119 {
00120     XFORMOBJ xo;
00121     PMATRIX pmx;
00122 
00123     pmx = DC_pmxDeviceToWorld(pdc);
00124     XFORMOBJ_vInit(&xo, pmx);
00125     XFORMOBJ_bApplyXform(&xo, XF_LTOL, cNumPoints, pptlDest, pptlSource);
00126 }
00127 
00128 VOID
00129 FORCEINLINE
00130 DC_vXformWorldToDevice(
00131     IN PDC pdc,
00132     IN ULONG cNumPoints,
00133     IN PPOINTL pptlDest,
00134     IN PPOINTL pptlSource)
00135 {
00136     XFORMOBJ xo;
00137     PMATRIX pmx;
00138 
00139     pmx = DC_pmxWorldToDevice(pdc);
00140     XFORMOBJ_vInit(&xo, pmx);
00141     XFORMOBJ_bApplyXform(&xo, XF_LTOL, cNumPoints, pptlDest, pptlSource);
00142 }
00143 
00144 int APIENTRY IntGdiSetMapMode(PDC, int);
00145 
00146 BOOL NTAPI
00147 IntGdiCombineTransform(
00148     XFORML *pxformDest,
00149     XFORML *pxform1,
00150     XFORML *pxform2);
00151 
00152 BOOL
00153 NTAPI
00154 GreModifyWorldTransform(
00155     PDC pdc,
00156     const XFORML *pXForm,
00157     DWORD dwMode);
00158 
00159 VOID FASTCALL IntMirrorWindowOrg(PDC);
00160 void FASTCALL IntFixIsotropicMapping(PDC);
00161 LONG FASTCALL IntCalcFillOrigin(PDC);
00162 

Generated on Sat May 26 2012 04:37:12 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.