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 TEXTMETRICW 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 ULONG 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 /* Forward declare (circular reference) */
142 typedef struct _SURFGDI *PSURFGDI;
144 typedef VOID (*PFN_DIB_PutPixel)(PSURFOBJ, LONG, LONG, ULONG);
145 typedef ULONG (*PFN_DIB_GetPixel)(PSURFOBJ, LONG, LONG);
146 typedef VOID (*PFN_DIB_HLine) (PSURFOBJ, LONG, LONG, LONG, ULONG);
147 typedef VOID (*PFN_DIB_VLine) (PSURFOBJ, LONG, LONG, LONG, ULONG);
148 typedef BOOLEAN (*PFN_DIB_BitBlt) (PSURFOBJ DestSurf, PSURFOBJ SourceSurf,
149 PSURFGDI DestGDI, PSURFGDI SourceGDI,
150 PRECTL DestRect, PPOINTL SourcePoint,
151 XLATEOBJ *ColorTranslation);
153 typedef struct _SURFGDI {
159 /* Driver functions */
161 PFN_TransparentBlt TransparentBlt;
162 PFN_StretchBlt StretchBlt;
165 PFN_StrokePath StrokePath;
166 PFN_FillPath FillPath;
167 PFN_StrokeAndFillPath StrokeAndFillPath;
169 PFN_CopyBits CopyBits;
170 PFN_Synchronize Synchronize;
171 BOOL SynchronizeAccess;
172 PFN_CreateDeviceBitmap CreateDeviceBitmap;
173 PFN_SetPalette SetPalette;
174 PFN_MovePointer MovePointer;
175 PFN_SetPointerShape SetPointerShape;
178 PFN_DIB_PutPixel DIB_PutPixel;
179 PFN_DIB_HLine DIB_HLine;
180 PFN_DIB_VLine DIB_VLine;
181 PFN_DIB_BitBlt DIB_BitBlt;
184 typedef struct _XFORMGDI {
186 /* XFORMOBJ has no public members */
189 typedef struct _XLATEGDI {
195 ULONG *translationTable;
203 BOOL UseShiftAndMask;
206 // List of GDI objects
207 // FIXME: Make more dynamic
209 #define MAX_GDI_BRUSHES 255
210 #define MAX_GDI_CLIPS 255
211 #define MAX_GDI_DRVFUNCTIONS 16
212 #define MAX_GDI_FLOATS 255
213 #define MAX_GDI_FONTS 255
214 #define MAX_GDI_PALS 255
215 #define MAX_GDI_PATHS 255
216 #define MAX_GDI_STRS 255
217 #define MAX_GDI_SURFS 255
218 #define MAX_GDI_XFORMS 255
219 #define MAX_GDI_XLATES 255
221 #endif //__ENG_OBJECTS_H