ReactOS  0.4.13-dev-247-g0f29b3f
xformobj.h File Reference
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  _EXFORMOBJ
 

Macros

#define XFORMOBJ   EXFORMOBJ
 
#define XFORMOBJ_iGetXform   EXFORMOBJ_iGetXform
 
#define XFORMOBJ_iGetFloatObjXform   EXFORMOBJ_iGetFloatObjXform
 
#define XFORMOBJ_bApplyXform   EXFORMOBJ_bApplyXform
 
#define XFORMOBJ_vInit   EXFORMOBJ_vInit
 
#define XFORMOBJ_pmx   EXFORMOBJ_pmx
 
#define XFORMOBJ_iSetXform   EXFORMOBJ_iSetXform
 
#define XFORMOBJ_iCombine   EXFORMOBJ_iCombine
 
#define XFORMOBJ_iCombineXform   EXFORMOBJ_iCombineXform
 
#define XFORMOBJ_iInverse   EXFORMOBJ_iInverse
 

Typedefs

typedef struct _EXFORMOBJ EXFORMOBJ
 

Functions

FORCEINLINE VOID XFORMOBJ_vInit (OUT XFORMOBJ *pxo, IN MATRIX *pmx)
 
FORCEINLINE MATRIXXFORMOBJ_pmx (IN XFORMOBJ *pxo)
 
ULONG NTAPI XFORMOBJ_iSetXform (IN OUT XFORMOBJ *pxo, IN const XFORML *pxform)
 
ULONG NTAPI XFORMOBJ_iCombine (IN OUT XFORMOBJ *pxo, IN XFORMOBJ *pxo1, IN XFORMOBJ *pxo2)
 
ULONG NTAPI XFORMOBJ_iCombineXform (IN OUT XFORMOBJ *pxo, IN XFORMOBJ *pxo1, IN XFORML *pxform, IN BOOL bLeftMultiply)
 
ULONG NTAPI XFORMOBJ_iInverse (OUT XFORMOBJ *pxoDst, IN XFORMOBJ *pxoSrc)
 
ULONG APIENTRY XFORMOBJ_iGetXform (IN XFORMOBJ *pxo, OUT XFORML *pxform)
 
BOOL APIENTRY XFORMOBJ_bApplyXform (IN XFORMOBJ *pxo, IN ULONG iMode, IN ULONG cPoints, IN PVOID pvIn, OUT PVOID pvOut)
 
BOOL FASTCALL MX_IsInvertible (IN PMATRIX pmx)
 
VOID FASTCALL MX_Set0 (OUT PMATRIX pmx)
 

Macro Definition Documentation

◆ XFORMOBJ

Definition at line 8 of file xformobj.h.

◆ XFORMOBJ_bApplyXform

#define XFORMOBJ_bApplyXform   EXFORMOBJ_bApplyXform

Definition at line 11 of file xformobj.h.

◆ XFORMOBJ_iCombine

#define XFORMOBJ_iCombine   EXFORMOBJ_iCombine

Definition at line 15 of file xformobj.h.

◆ XFORMOBJ_iCombineXform

#define XFORMOBJ_iCombineXform   EXFORMOBJ_iCombineXform

Definition at line 16 of file xformobj.h.

◆ XFORMOBJ_iGetFloatObjXform

#define XFORMOBJ_iGetFloatObjXform   EXFORMOBJ_iGetFloatObjXform

Definition at line 10 of file xformobj.h.

◆ XFORMOBJ_iGetXform

#define XFORMOBJ_iGetXform   EXFORMOBJ_iGetXform

Definition at line 9 of file xformobj.h.

◆ XFORMOBJ_iInverse

#define XFORMOBJ_iInverse   EXFORMOBJ_iInverse

Definition at line 17 of file xformobj.h.

◆ XFORMOBJ_iSetXform

#define XFORMOBJ_iSetXform   EXFORMOBJ_iSetXform

Definition at line 14 of file xformobj.h.

◆ XFORMOBJ_pmx

#define XFORMOBJ_pmx   EXFORMOBJ_pmx

Definition at line 13 of file xformobj.h.

◆ XFORMOBJ_vInit

#define XFORMOBJ_vInit   EXFORMOBJ_vInit

Definition at line 12 of file xformobj.h.

Typedef Documentation

◆ EXFORMOBJ

Function Documentation

◆ MX_IsInvertible()

BOOL FASTCALL MX_IsInvertible ( IN PMATRIX  pmx)

Definition at line 248 of file xformobj.c.

249 {
250  FLOATOBJ foDet;
251  MulSub(&foDet, &pmx->efM11, &pmx->efM22, &pmx->efM12, &pmx->efM21);
252  return !FLOATOBJ_Equal0(&foDet);
253 }
#define FLOATOBJ_Equal0(pf)
Definition: floatobj.h:106
FORCEINLINE VOID MulSub(PFLOATOBJ pfoDest, PFLOATOBJ pfo1, PFLOATOBJ pfo2, PFLOATOBJ pfo3, PFLOATOBJ pfo4)
Definition: xformobj.c:68
FLOAT FLOATOBJ
Definition: winddi.h:677

Referenced by DC_vXformDeviceToWorld().

◆ MX_Set0()

VOID FASTCALL MX_Set0 ( OUT PMATRIX  pmx)

Definition at line 256 of file xformobj.c.

257 {
258  FLOATOBJ_Set0(&pmx->efM11);
259  FLOATOBJ_Set0(&pmx->efM12);
260  FLOATOBJ_Set0(&pmx->efM21);
261  FLOATOBJ_Set0(&pmx->efM22);
262  FLOATOBJ_Set0(&pmx->efDx);
263  FLOATOBJ_Set0(&pmx->efDy);
264 }
#define FLOATOBJ_Set0(fo)
Definition: floatobj.h:119

Referenced by DC_vUpdateDeviceToWorld().

◆ XFORMOBJ_bApplyXform()

BOOL APIENTRY XFORMOBJ_bApplyXform ( IN XFORMOBJ pxo,
IN ULONG  iMode,
IN ULONG  cPoints,
IN PVOID  pvIn,
OUT PVOID  pvOut 
)

Definition at line 645 of file xformobj.c.

651 {
652  MATRIX mx;
653  XFORMOBJ xoInv;
654  PPOINTL pptlIn, pptlOut;
655  INT i;
656 
657  /* Check parameters */
658  if (!pxo || !pvIn || !pvOut || cPoints < 1)
659  {
660  return FALSE;
661  }
662 
663  /* Use inverse xform? */
664  if (iMode == XF_INV_FXTOL || iMode == XF_INV_LTOL)
665  {
666  XFORMOBJ_vInit(&xoInv, &mx);
667  if (XFORMOBJ_iInverse(&xoInv, pxo) == DDI_ERROR)
668  {
669  return FALSE;
670  }
671  pxo = &xoInv;
672  }
673 
674  /* Convert POINTL to POINTFIX? */
675  if (iMode == XF_LTOFX || iMode == XF_LTOL || iMode == XF_INV_LTOL)
676  {
677  pptlIn = pvIn;
678  pptlOut = pvOut;
679  for (i = cPoints - 1; i >= 0; i--)
680  {
681  pptlOut[i].x = LONG2FIX(pptlIn[i].x);
682  pptlOut[i].y = LONG2FIX(pptlIn[i].y);
683  }
684 
685  /* The input is in the out buffer now! */
686  pvIn = pvOut;
687  }
688 
689  /* Do the actual fixpoint transformation */
690  if (!XFORMOBJ_bXformFixPoints(pxo, cPoints, pvIn, pvOut))
691  {
692  return FALSE;
693  }
694 
695  /* Convert POINTFIX to POINTL? */
696  if (iMode == XF_INV_FXTOL || iMode == XF_INV_LTOL || iMode == XF_LTOL)
697  {
698  pptlOut = pvOut;
699  for (i = cPoints - 1; i >= 0; i--)
700  {
701  pptlOut[i].x = FIX2LONG(pptlOut[i].x);
702  pptlOut[i].y = FIX2LONG(pptlOut[i].y);
703  }
704  }
705 
706  return TRUE;
707 }
ULONG NTAPI XFORMOBJ_iInverse(OUT XFORMOBJ *pxoDst, IN XFORMOBJ *pxoSrc)
Definition: xformobj.c:272
#define TRUE
Definition: types.h:120
_In_ ULONG iMode
Definition: winddi.h:3520
GLint GLint GLint GLint GLint x
Definition: gl.h:1548
#define LONG2FIX(x)
Definition: floatobj.h:5
FORCEINLINE VOID XFORMOBJ_vInit(OUT XFORMOBJ *pxo, IN MATRIX *pmx)
Definition: xformobj.h:21
int32_t INT
Definition: typedefs.h:56
#define XF_INV_FXTOL
Definition: winddi.h:3112
LONG y
Definition: windef.h:315
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
#define DDI_ERROR
Definition: winddi.h:154
#define XF_LTOFX
Definition: winddi.h:3111
#define XF_LTOL
Definition: winddi.h:3109
#define FIX2LONG(x)
Definition: floatobj.h:4
Definition: matrix.h:43
LONG x
Definition: windef.h:314
static BOOL NTAPI XFORMOBJ_bXformFixPoints(_In_ XFORMOBJ *pxo, _In_ ULONG cPoints, _In_reads_(cPoints) PPOINTL pptIn, _Out_writes_(cPoints) PPOINTL pptOut)
Transforms fix-point coordinates in an array of POINTL structures using the transformation matrix fro...
Definition: xformobj.c:346
#define XF_INV_LTOL
Definition: winddi.h:3110
GLint GLint GLint GLint GLint GLint y
Definition: gl.h:1548
_In_ XLATEOBJ _In_ XFORMOBJ * pxo
Definition: winddi.h:3810

◆ XFORMOBJ_iCombine()

ULONG NTAPI XFORMOBJ_iCombine ( IN OUT XFORMOBJ pxo,
IN XFORMOBJ pxo1,
IN XFORMOBJ pxo2 
)

Definition at line 192 of file xformobj.c.

196 {
197  MATRIX mx;
198  PMATRIX pmx, pmx1, pmx2;
199 
200  /* Get the source matrices */
201  pmx1 = XFORMOBJ_pmx(pxo1);
202  pmx2 = XFORMOBJ_pmx(pxo2);
203 
204  /* Do a 3 x 3 matrix multiplication with mx as destinantion */
205  MulAdd(&mx.efM11, &pmx1->efM11, &pmx2->efM11, &pmx1->efM12, &pmx2->efM21);
206  MulAdd(&mx.efM12, &pmx1->efM11, &pmx2->efM12, &pmx1->efM12, &pmx2->efM22);
207  MulAdd(&mx.efM21, &pmx1->efM21, &pmx2->efM11, &pmx1->efM22, &pmx2->efM21);
208  MulAdd(&mx.efM22, &pmx1->efM21, &pmx2->efM12, &pmx1->efM22, &pmx2->efM22);
209  MulAdd(&mx.efDx, &pmx1->efDx, &pmx2->efM11, &pmx1->efDy, &pmx2->efM21);
210  FLOATOBJ_Add(&mx.efDx, &pmx2->efDx);
211  MulAdd(&mx.efDy, &pmx1->efDx, &pmx2->efM12, &pmx1->efDy, &pmx2->efM22);
212  FLOATOBJ_Add(&mx.efDy, &pmx2->efDy);
213 
214  /* Copy back */
215  pmx = XFORMOBJ_pmx(pxo);
216  *pmx = mx;
217 
218  /* Update accelerators and return complexity */
219  return XFORMOBJ_UpdateAccel(pxo);
220 }
FLOATOBJ efM21
Definition: ntgdityp.h:408
#define FLOATOBJ_Add(pf, pf1)
Definition: winddi.h:2818
Definition: matrix.h:43
FLOATOBJ efDy
Definition: ntgdityp.h:411
FORCEINLINE VOID MulAdd(PFLOATOBJ pfoDest, PFLOATOBJ pfo1, PFLOATOBJ pfo2, PFLOATOBJ pfo3, PFLOATOBJ pfo4)
Definition: xformobj.c:26
FLOATOBJ efM12
Definition: ntgdityp.h:407
FLOATOBJ efM22
Definition: ntgdityp.h:409
FLOATOBJ efM11
Definition: ntgdityp.h:406
_In_ XLATEOBJ _In_ XFORMOBJ * pxo
Definition: winddi.h:3810
FORCEINLINE MATRIX * XFORMOBJ_pmx(IN XFORMOBJ *pxo)
Definition: xformobj.h:30
ULONG NTAPI XFORMOBJ_UpdateAccel(IN OUT XFORMOBJ *pxo)
Definition: xformobj.c:108
FLOATOBJ efDx
Definition: ntgdityp.h:410

Referenced by XFORMOBJ_iCombineXform().

◆ XFORMOBJ_iCombineXform()

ULONG NTAPI XFORMOBJ_iCombineXform ( IN OUT XFORMOBJ pxo,
IN XFORMOBJ pxo1,
IN XFORML pxform,
IN BOOL  bLeftMultiply 
)

Definition at line 225 of file xformobj.c.

230 {
231  MATRIX mx;
232  XFORMOBJ xo2;
233 
234  XFORMOBJ_vInit(&xo2, &mx);
235  XFORMOBJ_iSetXform(&xo2, pxform);
236 
237  if (bLeftMultiply)
238  {
239  return XFORMOBJ_iCombine(pxo, &xo2, pxo1);
240  }
241  else
242  {
243  return XFORMOBJ_iCombine(pxo, pxo1, &xo2);
244  }
245 }
FORCEINLINE VOID XFORMOBJ_vInit(OUT XFORMOBJ *pxo, IN MATRIX *pmx)
Definition: xformobj.h:21
ULONG NTAPI XFORMOBJ_iSetXform(IN OUT XFORMOBJ *pxo, IN const XFORML *pxform)
Definition: xformobj.c:149
Definition: matrix.h:43
_In_ XLATEOBJ _In_ XFORMOBJ * pxo
Definition: winddi.h:3810
ULONG NTAPI XFORMOBJ_iCombine(IN OUT XFORMOBJ *pxo, IN XFORMOBJ *pxo1, IN XFORMOBJ *pxo2)
Definition: xformobj.c:192

◆ XFORMOBJ_iGetXform()

ULONG APIENTRY XFORMOBJ_iGetXform ( IN XFORMOBJ pxo,
OUT XFORML pxform 
)

Public functions

Definition at line 589 of file xformobj.c.

592 {
593  PMATRIX pmx = XFORMOBJ_pmx(pxo);
594 
595  /* Check parameters */
596  if (!pxo || !pxform)
597  {
598  return DDI_ERROR;
599  }
600 
601  /* Copy members */
602  pxform->eM11 = FLOATOBJ_GetFloat(&pmx->efM11);
603  pxform->eM12 = FLOATOBJ_GetFloat(&pmx->efM12);
604  pxform->eM21 = FLOATOBJ_GetFloat(&pmx->efM21);
605  pxform->eM22 = FLOATOBJ_GetFloat(&pmx->efM22);
606  pxform->eDx = FLOATOBJ_GetFloat(&pmx->efDx);
607  pxform->eDy = FLOATOBJ_GetFloat(&pmx->efDy);
608 
609  /* Return complexity hint */
610  return HintFromAccel(pmx->flAccel);
611 }
FLOATOBJ efM21
Definition: ntgdityp.h:408
#define DDI_ERROR
Definition: winddi.h:154
FLOATOBJ efDy
Definition: ntgdityp.h:411
FLOATOBJ efM12
Definition: ntgdityp.h:407
FLONG flAccel
Definition: ntgdityp.h:414
#define FLOATOBJ_GetFloat(pf)
Definition: winddi.h:2816
FLOATOBJ efM22
Definition: ntgdityp.h:409
FLOATOBJ efM11
Definition: ntgdityp.h:406
_In_ XLATEOBJ _In_ XFORMOBJ * pxo
Definition: winddi.h:3810
FORCEINLINE MATRIX * XFORMOBJ_pmx(IN XFORMOBJ *pxo)
Definition: xformobj.h:30
FORCEINLINE ULONG HintFromAccel(ULONG flAccel)
Definition: xformobj.c:89
FLOATOBJ efDx
Definition: ntgdityp.h:410

Referenced by XFORMOBJ_iInverse().

◆ XFORMOBJ_iInverse()

ULONG NTAPI XFORMOBJ_iInverse ( OUT XFORMOBJ pxoDst,
IN XFORMOBJ pxoSrc 
)

Definition at line 272 of file xformobj.c.

275 {
276  PMATRIX pmxDst, pmxSrc;
277  FLOATOBJ foDet;
278  XFORM xformSrc;
279 
280  pmxDst = XFORMOBJ_pmx(pxoDst);
281  pmxSrc = XFORMOBJ_pmx(pxoSrc);
282 
283  XFORMOBJ_iGetXform(pxoSrc, (XFORML*)&xformSrc);
284 
285  /* det = M11 * M22 - M12 * M21 */
286  MulSub(&foDet, &pmxSrc->efM11, &pmxSrc->efM22, &pmxSrc->efM12, &pmxSrc->efM21);
287 
288  if (FLOATOBJ_Equal0(&foDet))
289  {
290  /* Determinant is 0! */
291  return DDI_ERROR;
292  }
293 
294  /* Calculate adj(A) / det(A) */
295  pmxDst->efM11 = pmxSrc->efM22;
296  FLOATOBJ_Div(&pmxDst->efM11, &foDet);
297  pmxDst->efM22 = pmxSrc->efM11;
298  FLOATOBJ_Div(&pmxDst->efM22, &foDet);
299 
300  /* The other 2 are negative, negate foDet for that */
301  FLOATOBJ_Neg(&foDet);
302  pmxDst->efM12 = pmxSrc->efM12;
303  FLOATOBJ_Div(&pmxDst->efM12, &foDet);
304  pmxDst->efM21 = pmxSrc->efM21;
305  FLOATOBJ_Div(&pmxDst->efM21, &foDet);
306 
307  /* Calculate the inverted x shift: Dx' = -Dx * M11' - Dy * M21' */
308  pmxDst->efDx = pmxSrc->efDx;
309  FLOATOBJ_Neg(&pmxDst->efDx);
310  MulSub(&pmxDst->efDx, &pmxDst->efDx, &pmxDst->efM11, &pmxSrc->efDy, &pmxDst->efM21);
311 
312  /* Calculate the inverted y shift: Dy' = -Dy * M22' - Dx * M12' */
313  pmxDst->efDy = pmxSrc->efDy;
314  FLOATOBJ_Neg(&pmxDst->efDy);
315  MulSub(&pmxDst->efDy, &pmxDst->efDy, &pmxDst->efM22, &pmxSrc->efDx, &pmxDst->efM12);
316 
317  /* Update accelerators and return complexity */
318  return XFORMOBJ_UpdateAccel(pxoDst);
319 }
FLOATOBJ efM21
Definition: ntgdityp.h:408
#define FLOATOBJ_Equal0(pf)
Definition: floatobj.h:106
#define FLOATOBJ_Div(pf, pf1)
Definition: winddi.h:2827
FORCEINLINE VOID MulSub(PFLOATOBJ pfoDest, PFLOATOBJ pfo1, PFLOATOBJ pfo2, PFLOATOBJ pfo3, PFLOATOBJ pfo4)
Definition: xformobj.c:68
#define DDI_ERROR
Definition: winddi.h:154
ULONG APIENTRY XFORMOBJ_iGetXform(IN XFORMOBJ *pxo, OUT XFORML *pxform)
Definition: xformobj.c:589
FLOAT FLOATOBJ
Definition: winddi.h:677
FLOATOBJ efDy
Definition: ntgdityp.h:411
FLOATOBJ efM12
Definition: ntgdityp.h:407
FLOATOBJ efM22
Definition: ntgdityp.h:409
#define FLOATOBJ_Neg(pf)
Definition: winddi.h:2830
FLOATOBJ efM11
Definition: ntgdityp.h:406
FORCEINLINE MATRIX * XFORMOBJ_pmx(IN XFORMOBJ *pxo)
Definition: xformobj.h:30
ULONG NTAPI XFORMOBJ_UpdateAccel(IN OUT XFORMOBJ *pxo)
Definition: xformobj.c:108
FLOATOBJ efDx
Definition: ntgdityp.h:410

Referenced by XFORMOBJ_bApplyXform().

◆ XFORMOBJ_iSetXform()

ULONG NTAPI XFORMOBJ_iSetXform ( IN OUT XFORMOBJ pxo,
IN const XFORML pxform 
)

Definition at line 149 of file xformobj.c.

152 {
153  PMATRIX pmx = XFORMOBJ_pmx(pxo);
154  FLOATOBJ ef1, ef2, efTemp;
155 
156  /* Check parameters */
157  if (!pxo || !pxform) return DDI_ERROR;
158 
159  /* Check if the xform is valid */
160  /* M11 * M22 - M12 * M21 != 0 */
161  FLOATOBJ_SetFloat(&ef1, pxform->eM11);
162  FLOATOBJ_SetFloat(&efTemp, pxform->eM22);
163  FLOATOBJ_Mul(&ef1, &efTemp);
164  FLOATOBJ_SetFloat(&ef2, pxform->eM12);
165  FLOATOBJ_SetFloat(&efTemp, pxform->eM21);
166  FLOATOBJ_Mul(&ef2, &efTemp);
167  if (FLOATOBJ_Equal(&ef1, &ef2))
168  return DDI_ERROR;
169 
170  /* Copy members */
171  FLOATOBJ_SetFloat(&pmx->efM11, pxform->eM11);
172  FLOATOBJ_SetFloat(&pmx->efM12, pxform->eM12);
173  FLOATOBJ_SetFloat(&pmx->efM21, pxform->eM21);
174  FLOATOBJ_SetFloat(&pmx->efM22, pxform->eM22);
175  FLOATOBJ_SetFloat(&pmx->efDx, pxform->eDx);
176  FLOATOBJ_SetFloat(&pmx->efDy, pxform->eDy);
177 
178  /* Update accelerators and return complexity */
179  return XFORMOBJ_UpdateAccel(pxo);
180 }
FLOATOBJ efM21
Definition: ntgdityp.h:408
#define FLOATOBJ_Equal(pf, pf1)
Definition: winddi.h:2831
#define FLOATOBJ_SetFloat(pf, f)
Definition: winddi.h:2814
#define DDI_ERROR
Definition: winddi.h:154
FLOAT FLOATOBJ
Definition: winddi.h:677
FLOATOBJ efDy
Definition: ntgdityp.h:411
FLOATOBJ efM12
Definition: ntgdityp.h:407
FLOATOBJ efM22
Definition: ntgdityp.h:409
FLOATOBJ efM11
Definition: ntgdityp.h:406
_In_ XLATEOBJ _In_ XFORMOBJ * pxo
Definition: winddi.h:3810
FORCEINLINE MATRIX * XFORMOBJ_pmx(IN XFORMOBJ *pxo)
Definition: xformobj.h:30
#define FLOATOBJ_Mul(pf, pf1)
Definition: winddi.h:2824
ULONG NTAPI XFORMOBJ_UpdateAccel(IN OUT XFORMOBJ *pxo)
Definition: xformobj.c:108
FLOATOBJ efDx
Definition: ntgdityp.h:410

Referenced by XFORMOBJ_iCombineXform().

◆ XFORMOBJ_pmx()

FORCEINLINE MATRIX* XFORMOBJ_pmx ( IN XFORMOBJ pxo)

Definition at line 30 of file xformobj.h.

32 {
33  return pxo->pmx;
34 }
_In_ XLATEOBJ _In_ XFORMOBJ * pxo
Definition: winddi.h:3810

Referenced by XFORMOBJ_bXformFixPoints(), XFORMOBJ_iCombine(), XFORMOBJ_iGetFloatObjXform(), XFORMOBJ_iGetXform(), XFORMOBJ_iInverse(), XFORMOBJ_iSetXform(), and XFORMOBJ_UpdateAccel().

◆ XFORMOBJ_vInit()