xref: /reactos/win32ss/gdi/ntgdi/xformobj.h (revision 53221834)
1 #pragma once
2 
3 typedef struct _EXFORMOBJ
4 {
5     MATRIX *pmx;
6 } EXFORMOBJ;
7 
8 #define XFORMOBJ EXFORMOBJ
9 #define XFORMOBJ_iGetXform EXFORMOBJ_iGetXform
10 #define XFORMOBJ_iGetFloatObjXform EXFORMOBJ_iGetFloatObjXform
11 #define XFORMOBJ_bApplyXform EXFORMOBJ_bApplyXform
12 #define XFORMOBJ_vInit EXFORMOBJ_vInit
13 #define XFORMOBJ_pmx EXFORMOBJ_pmx
14 #define XFORMOBJ_iSetXform EXFORMOBJ_iSetXform
15 #define XFORMOBJ_iCombine EXFORMOBJ_iCombine
16 #define XFORMOBJ_iCombineXform EXFORMOBJ_iCombineXform
17 #define XFORMOBJ_iInverse EXFORMOBJ_iInverse
18 
19 FORCEINLINE
20 VOID
21 XFORMOBJ_vInit(
22     OUT XFORMOBJ *pxo,
23     IN MATRIX *pmx)
24 {
25     pxo->pmx = pmx;
26 }
27 
28 FORCEINLINE
29 MATRIX*
30 XFORMOBJ_pmx(
31     IN XFORMOBJ *pxo)
32 {
33     return pxo->pmx;
34 }
35 
36 ULONG
37 NTAPI
38 XFORMOBJ_iSetXform(
39     IN OUT XFORMOBJ *pxo,
40     IN const XFORML *pxform);
41 
42 ULONG
43 NTAPI
44 XFORMOBJ_iCombine(
45     IN OUT XFORMOBJ *pxo,
46     IN XFORMOBJ *pxo1,
47     IN XFORMOBJ *pxo2);
48 
49 ULONG
50 NTAPI
51 XFORMOBJ_iCombineXform(
52     IN OUT XFORMOBJ *pxo,
53     IN XFORMOBJ *pxo1,
54     IN XFORML *pxform,
55     IN BOOL bLeftMultiply);
56 
57 ULONG
58 NTAPI
59 XFORMOBJ_iInverse(
60     OUT XFORMOBJ *pxoDst,
61     IN XFORMOBJ *pxoSrc);
62 
63 ULONG
64 APIENTRY
65 XFORMOBJ_iGetXform(
66     IN XFORMOBJ *pxo,
67     OUT XFORML *pxform);
68 
69 BOOL
70 APIENTRY
71 XFORMOBJ_bApplyXform(
72     IN XFORMOBJ *pxo,
73     IN ULONG iMode,
74     IN ULONG cPoints,
75     IN PVOID pvIn,
76     OUT PVOID pvOut);
77 
78 BOOL FASTCALL MX_IsInvertible(IN PMATRIX pmx);
79 VOID FASTCALL MX_Set0(OUT PMATRIX pmx);
80