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 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 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
;
184 BOOL UseShiftAndMask
;
187 // List of GDI objects
188 // FIXME: Make more dynamic
190 #define MAX_GDI_BRUSHES 255
191 #define MAX_GDI_CLIPS 255
192 #define MAX_GDI_DRVFUNCTIONS 16
193 #define MAX_GDI_FLOATS 255
194 #define MAX_GDI_FONTS 255
195 #define MAX_GDI_PALS 255
196 #define MAX_GDI_PATHS 255
197 #define MAX_GDI_STRS 255
198 #define MAX_GDI_SURFS 255
199 #define MAX_GDI_XFORMS 255
200 #define MAX_GDI_XLATES 255
202 #endif //__ENG_OBJECTS_H