3 * Copyright (C) 1998, 1999, 2000, 2001 ReactOS Team
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
21 * COPYRIGHT: See COPYING in the top level directory
22 * PROJECT: ReactOS kernel
23 * PURPOSE: GDI Internal Objects
24 * FILE: subsys/win32k/eng/objects.h
25 * PROGRAMER: Jason Filby
29 #ifndef __ENG_OBJECTS_H
30 #define __ENG_OBJECTS_H
33 #include <freetype/freetype.h>
35 /* Structure of internal gdi objects that win32k manages for ddi engine:
36 |---------------------------------|
38 | accessed from engine |
39 |---------------------------------|
42 |_________________________________|
44 ---------------------------------------------------------------------------*/
46 typedef struct _CLIPGDI
{
54 typedef struct _DRIVERGDI
{
58 } DRIVERGDI
, *PDRIVERGDI
;
60 /*ei What is this for? */
61 typedef struct _DRVFUNCTIONSGDI
{
63 DRVFN Functions
[INDEX_LAST
];
66 typedef struct _FLOATGDI
{
70 typedef struct _FONTGDI
{
75 TEXTMETRICW TextMetric
;
78 typedef struct _PATHGDI
{
82 typedef struct _STRGDI
{
86 typedef BOOL (STDCALL
*PFN_BitBlt
)(SURFOBJ
*, SURFOBJ
*, SURFOBJ
*, CLIPOBJ
*,
87 XLATEOBJ
*, RECTL
*, POINTL
*, POINTL
*,
88 BRUSHOBJ
*, POINTL
*, ROP4
);
90 typedef BOOL (STDCALL
*PFN_TransparentBlt
)(SURFOBJ
*, SURFOBJ
*, CLIPOBJ
*, XLATEOBJ
*, RECTL
*, RECTL
*, ULONG
, ULONG
);
92 typedef BOOL (STDCALL
*PFN_StretchBlt
)(SURFOBJ
*, SURFOBJ
*, SURFOBJ
*, CLIPOBJ
*,
93 XLATEOBJ
*, COLORADJUSTMENT
*, POINTL
*,
94 RECTL
*, RECTL
*, PPOINT
, ULONG
);
96 typedef BOOL (STDCALL
*PFN_TextOut
)(SURFOBJ
*, STROBJ
*, FONTOBJ
*, CLIPOBJ
*,
97 RECTL
*, RECTL
*, BRUSHOBJ
*, BRUSHOBJ
*,
100 typedef BOOL (STDCALL
*PFN_Paint
)(SURFOBJ
*, CLIPOBJ
*, BRUSHOBJ
*, POINTL
*, MIX
);
102 typedef BOOL (STDCALL
*PFN_StrokePath
)(SURFOBJ
*, PATHOBJ
*, CLIPOBJ
*, XFORMOBJ
*,
103 BRUSHOBJ
*, POINTL
*, LINEATTRS
*, MIX
);
105 typedef BOOL (STDCALL
*PFN_FillPath
)(SURFOBJ
*, PATHOBJ
*, CLIPOBJ
*, BRUSHOBJ
*,
106 POINTL
*, MIX
, ULONG
);
108 typedef BOOL (STDCALL
*PFN_StrokeAndFillPath
)(SURFOBJ
*, PATHOBJ
*, CLIPOBJ
*,
109 XFORMOBJ
*, BRUSHOBJ
*, LINEATTRS
*, BRUSHOBJ
*,
110 POINTL
*, MIX
, ULONG
);
112 typedef BOOL (STDCALL
*PFN_LineTo
)(SURFOBJ
*, CLIPOBJ
*, BRUSHOBJ
*,
113 LONG
, LONG
, LONG
, LONG
, RECTL
*, MIX
);
115 typedef BOOL (STDCALL
*PFN_CopyBits
)(SURFOBJ
*, SURFOBJ
*, CLIPOBJ
*,
116 XLATEOBJ
*, RECTL
*, POINTL
*);
118 typedef VOID (STDCALL
*PFN_Synchronize
)(DHPDEV
, RECTL
*);
120 typedef VOID (STDCALL
*PFN_MovePointer
)(SURFOBJ
*, LONG
, LONG
, RECTL
*);
122 typedef ULONG (STDCALL
*PFN_SetPointerShape
)(SURFOBJ
*, SURFOBJ
*, SURFOBJ
*, XLATEOBJ
*,
123 LONG
, LONG
, LONG
, LONG
, RECTL
*, FLONG
);
125 typedef HBITMAP (STDCALL
*PFN_CreateDeviceBitmap
)(DHPDEV
, SIZEL
, ULONG
);
127 typedef BOOL (STDCALL
*PFN_SetPalette
)(DHPDEV
, PALOBJ
*, ULONG
, ULONG
, ULONG
);
129 typedef BOOL (STDCALL
*PFN_GradientFill
)(SURFOBJ
*, CLIPOBJ
*, XLATEOBJ
*, TRIVERTEX
*, ULONG
, PVOID
, ULONG
, RECTL
*, POINTL
*, ULONG
);
131 typedef struct _WNDGDI
{
133 LIST_ENTRY ListEntry
;
135 CLIPOBJ
*ClientClipObj
;
136 WNDOBJCHANGEPROC ChangeProc
;
141 typedef struct _XFORMGDI
{
143 /* XFORMOBJ has no public members */
146 typedef struct _XLATEGDI
{
150 BOOL UseShiftAndMask
;
153 // struct { /* For Shift Translations */
161 // struct { /* For Table Translations */
162 ULONG
*translationTable
;
164 // struct { /* For Color -> Mono Translations */
165 ULONG BackgroundColor
;
170 /* as the *OBJ structures are located at the beginning of the *GDI structures
171 we can simply typecast the pointer */
172 #define ObjToGDI(ClipObj, Type) (Type##GDI *)(ClipObj)
173 #define GDIToObj(ClipGDI, Type) (Type##OBJ *)(ClipGDI)
176 #endif //__ENG_OBJECTS_H