2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS kernel
4 * PURPOSE: GDI Internal Objects
5 * FILE: subsys/win32k/eng/objects.h
6 * PROGRAMER: Jason Filby
10 #ifndef __ENG_OBJECTS_H
11 #define __ENG_OBJECTS_H
13 #include <freetype/freetype.h>
15 /* Structure of internal gdi objects that win32k manages for ddi engine:
16 |---------------------------------|
18 |---------------------------------|
20 | accessed from engine |
21 |---------------------------------|
24 |_________________________________|
26 ---------------------------------------------------------------------------*/
28 typedef struct _ENGOBJ {
36 typedef struct _BRUSHGDI {
41 typedef struct _CLIPGDI {
44 /* ei what were these for?
46 ULONG NumIntersectRects;
48 RECTL *IntersectRects;
56 /*ei What is this for? */
57 typedef struct _DRVFUNCTIONSGDI {
59 DRVFN Functions[INDEX_LAST];
62 typedef struct _FLOATGDI {
66 typedef struct _FONTGDI {
72 TEXTMETRIC TextMetric;
75 typedef struct _PALGDI {
79 ULONG Mode; // PAL_INDEXED, PAL_BITFIELDS, PAL_RGB, PAL_BGR
87 typedef struct _PATHGDI {
92 /*ei Fixme! Fix STROBJ */
93 typedef struct _STRGDI {
98 typedef BOOL STDCALL (*PFN_BitBlt)(PSURFOBJ, PSURFOBJ, PSURFOBJ, PCLIPOBJ,
99 PXLATEOBJ, PRECTL, PPOINTL, PPOINTL,
100 PBRUSHOBJ, PPOINTL, ROP4);
102 typedef BOOL STDCALL (*PFN_TransparentBlt)(PSURFOBJ, PSURFOBJ, PCLIPOBJ, PXLATEOBJ, PRECTL, PRECTL, ULONG, ULONG);
104 typedef BOOL STDCALL (*PFN_StretchBlt)(PSURFOBJ, PSURFOBJ, PSURFOBJ, PCLIPOBJ,
105 PXLATEOBJ, PCOLORADJUSTMENT, PPOINTL,
106 PRECTL, PRECTL, PPOINT, ULONG);
108 typedef BOOL STDCALL (*PFN_TextOut)(PSURFOBJ, PSTROBJ, PFONTOBJ, PCLIPOBJ,
109 PRECTL, PRECTL, PBRUSHOBJ, PBRUSHOBJ,
112 typedef BOOL STDCALL (*PFN_Paint)(PSURFOBJ, PCLIPOBJ, PBRUSHOBJ, PPOINTL, MIX);
114 typedef BOOL STDCALL (*PFN_StrokePath)(PSURFOBJ, PPATHOBJ, PCLIPOBJ, PXFORMOBJ,
115 PBRUSHOBJ, PPOINTL, PLINEATTRS, MIX);
117 typedef BOOL STDCALL (*PFN_FillPath)(PSURFOBJ, PPATHOBJ, PCLIPOBJ, PBRUSHOBJ,
118 PPOINTL, MIX, ULONG);
120 typedef BOOL STDCALL (*PFN_StrokeAndFillPath)(PSURFOBJ, PPATHOBJ, PCLIPOBJ,
121 PXFORMOBJ, PBRUSHOBJ, PLINEATTRS, PBRUSHOBJ,
122 PPOINTL, MIX, ULONG);
124 typedef BOOL STDCALL (*PFN_LineTo)(PSURFOBJ, PCLIPOBJ, PBRUSHOBJ,
125 LONG, LONG, LONG, LONG, PRECTL, MIX);
127 typedef BOOL STDCALL (*PFN_CopyBits)(PSURFOBJ, PSURFOBJ, PCLIPOBJ,
128 PXLATEOBJ, PRECTL, PPOINTL);
130 typedef VOID STDCALL (*PFN_Synchronize)(DHPDEV, PRECTL);
132 typedef VOID STDCALL (*PFN_MovePointer)(PSURFOBJ, LONG, LONG, PRECTL);
134 typedef VOID STDCALL (*PFN_SetPointerShape)(PSURFOBJ, PSURFOBJ, PSURFOBJ, PXLATEOBJ,
135 LONG, LONG, LONG, LONG, PRECTL, ULONG);
137 typedef HBITMAP STDCALL (*PFN_CreateDeviceBitmap)(DHPDEV, SIZEL, ULONG);
139 typedef BOOL STDCALL (*PFN_SetPalette)(DHPDEV, PALOBJ*, ULONG, ULONG, ULONG);
141 typedef struct _SURFGDI {
148 PFN_TransparentBlt TransparentBlt;
149 PFN_StretchBlt StretchBlt;
152 PFN_StrokePath StrokePath;
153 PFN_FillPath FillPath;
154 PFN_StrokeAndFillPath StrokeAndFillPath;
156 PFN_CopyBits CopyBits;
157 PFN_Synchronize Synchronize;
158 BOOL SynchronizeAccess;
159 PFN_CreateDeviceBitmap CreateDeviceBitmap;
160 PFN_SetPalette SetPalette;
161 PFN_MovePointer MovePointer;
162 PFN_SetPointerShape SetPointerShape;
163 } SURFGDI, *PSURFGDI;
165 typedef struct _XFORMGDI {
167 /* XFORMOBJ has no public members */
170 typedef struct _XLATEGDI {
176 ULONG *translationTable;
179 // List of GDI objects
180 // FIXME: Make more dynamic
182 #define MAX_GDI_BRUSHES 255
183 #define MAX_GDI_CLIPS 255
184 #define MAX_GDI_DRVFUNCTIONS 16
185 #define MAX_GDI_FLOATS 255
186 #define MAX_GDI_FONTS 255
187 #define MAX_GDI_PALS 255
188 #define MAX_GDI_PATHS 255
189 #define MAX_GDI_STRS 255
190 #define MAX_GDI_SURFS 255
191 #define MAX_GDI_XFORMS 255
192 #define MAX_GDI_XLATES 255
194 #endif //__ENG_OBJECTS_H