f4207f8c637e69f8f757f44aeed3e55b5721c991
[reactos.git] / reactos / include / win32k / driver.h
1
2 #ifndef __WIN32K_DRIVER_H
3 #define __WIN32K_DRIVER_H
4
5 #include <ddk/winddi.h>
6
7 typedef BOOL (STDCALL *PGD_ENABLEDRIVER)(ULONG, ULONG, PDRVENABLEDATA);
8 typedef DHPDEV (STDCALL *PGD_ENABLEPDEV)(DEVMODEW *,
9 LPWSTR,
10 ULONG,
11 HSURF *,
12 ULONG,
13 ULONG *,
14 ULONG,
15 DEVINFO *,
16 LPWSTR,
17 LPWSTR,
18 HANDLE);
19 typedef VOID (STDCALL *PGD_COMPLETEPDEV)(DHPDEV, HDEV);
20 typedef VOID (STDCALL *PGD_DISABLEPDEV)(DHPDEV);
21 typedef HSURF (STDCALL *PGD_ENABLESURFACE)(DHPDEV);
22 typedef VOID (STDCALL *PGD_DISABLESURFACE)(DHPDEV);
23 typedef BOOL (STDCALL *PGD_ASSERTMODE)(DHPDEV, BOOL);
24 typedef BOOL (STDCALL *PGD_OFFSET)(SURFOBJ*, LONG, LONG, FLONG);
25 typedef BOOL (STDCALL *PGD_RESETPDEV)(DHPDEV, DHPDEV);
26 typedef VOID (STDCALL *PGD_DISABLEDRIVER)(VOID);
27 typedef HBITMAP (STDCALL *PGD_CREATEDEVICEBITMAP)(DHPDEV, SIZEL, ULONG);
28 typedef VOID (STDCALL *PGD_DELETEDEVICEBITMAP)(DHSURF);
29 typedef BOOL (STDCALL *PGD_ALPHABLEND)(SURFOBJ*, SURFOBJ*, CLIPOBJ*, XLATEOBJ*, RECTL*, RECTL*, BLENDOBJ*);
30 typedef BOOL (STDCALL *PGD_REALIZEBRUSH)(BRUSHOBJ*, SURFOBJ*, SURFOBJ*, SURFOBJ*,
31 XLATEOBJ*, ULONG);
32 typedef ULONG (STDCALL *PGD_DITHERCOLOR)(DHPDEV, ULONG, ULONG, PULONG);
33 typedef BOOL (STDCALL *PGD_STROKEPATH)(SURFOBJ*, PATHOBJ*, CLIPOBJ*, XFORMOBJ*,
34 BRUSHOBJ*, POINTL*, PLINEATTRS, MIX);
35 typedef BOOL (STDCALL *PGD_FILLPATH)(SURFOBJ*, PATHOBJ*, CLIPOBJ*, BRUSHOBJ*,
36 POINTL*, MIX, ULONG);
37 typedef BOOL (STDCALL *PGD_STROKEANDFILLPATH)(SURFOBJ*, PATHOBJ*, CLIPOBJ*,
38 XFORMOBJ*, BRUSHOBJ*, PLINEATTRS,
39 BRUSHOBJ*, POINTL*, MIX, ULONG);
40 typedef BOOL (STDCALL *PGD_PAINT)(SURFOBJ*, CLIPOBJ*, BRUSHOBJ*, POINTL*, MIX);
41 typedef BOOL (STDCALL *PGD_BITBLT)(SURFOBJ*, SURFOBJ*, SURFOBJ*, CLIPOBJ*,
42 XLATEOBJ*, RECTL*, POINTL*, POINTL*, BRUSHOBJ*,
43 POINTL*, ROP4);
44 typedef BOOL (STDCALL *PGD_TRANSPARENTBLT)(SURFOBJ*, SURFOBJ*, CLIPOBJ*, XLATEOBJ*,
45 RECTL*, RECTL*, ULONG, ULONG);
46 typedef BOOL (STDCALL *PGD_COPYBITS)(SURFOBJ*, SURFOBJ*, CLIPOBJ*, XLATEOBJ*,
47 RECTL*, POINTL*);
48 typedef BOOL (STDCALL *PGD_STRETCHBLT)(SURFOBJ*, SURFOBJ*, SURFOBJ*, CLIPOBJ*,
49 XLATEOBJ*, COLORADJUSTMENT*, POINTL*,
50 RECTL*, RECTL*, POINTL*, ULONG);
51 typedef BOOL (STDCALL *PGD_STRETCHBLTROP)(SURFOBJ*, SURFOBJ*, SURFOBJ*, CLIPOBJ*,
52 XLATEOBJ*, COLORADJUSTMENT*, POINTL*,
53 RECTL*, RECTL*, POINTL*, ULONG,
54 BRUSHOBJ*, DWORD);
55 typedef BOOL (STDCALL *PGD_SETPALETTE)(DHPDEV, PALOBJ*, ULONG, ULONG, ULONG);
56 typedef BOOL (STDCALL *PGD_TEXTOUT)(SURFOBJ*, STROBJ*, FONTOBJ*, CLIPOBJ*, RECTL*,
57 RECTL*, BRUSHOBJ*, BRUSHOBJ*, POINTL*, MIX);
58 typedef ULONG (STDCALL *PGD_ESCAPE)(SURFOBJ*, ULONG, ULONG, PVOID *, ULONG, PVOID *);
59 typedef ULONG (STDCALL *PGD_DRAWESCAPE)(SURFOBJ*, ULONG, CLIPOBJ*, RECTL*, ULONG,
60 PVOID *);
61 typedef PIFIMETRICS (STDCALL *PGD_QUERYFONT)(DHPDEV, ULONG, ULONG, PULONG);
62 typedef PVOID (STDCALL *PGD_QUERYFONTTREE)(DHPDEV, ULONG, ULONG, ULONG, PULONG);
63 typedef LONG (STDCALL *PGD_QUERYFONTDATA)(DHPDEV, FONTOBJ*, ULONG, HGLYPH, GLYPHDATA*,
64 PVOID, ULONG);
65 typedef ULONG (STDCALL *PGD_SETPOINTERSHAPE)(SURFOBJ*, SURFOBJ*, SURFOBJ*, XLATEOBJ*,
66 LONG, LONG, LONG, LONG, RECTL*, ULONG);
67 typedef VOID (STDCALL *PGD_MOVEPOINTER)(SURFOBJ*, LONG, LONG, RECTL*);
68 typedef BOOL (STDCALL *PGD_LINETO)(SURFOBJ*, CLIPOBJ*, BRUSHOBJ*, LONG, LONG, LONG,
69 LONG, RECTL*, MIX);
70 typedef BOOL (STDCALL *PGD_SENDPAGE)(SURFOBJ*);
71 typedef BOOL (STDCALL *PGD_STARTPAGE)(SURFOBJ*);
72 typedef BOOL (STDCALL *PGD_ENDDOC)(SURFOBJ*, ULONG);
73 typedef BOOL (STDCALL *PGD_STARTDOC)(SURFOBJ*, PWSTR, DWORD);
74 typedef ULONG (STDCALL *PGD_GETGLYPHMODE)(DHPDEV, FONTOBJ*);
75 typedef VOID (STDCALL *PGD_SYNCHRONIZE)(DHPDEV, RECTL*);
76 typedef ULONG (STDCALL *PGD_SAVESCREENBITS)(SURFOBJ*, ULONG, ULONG, RECTL*);
77 typedef ULONG (STDCALL *PGD_GETMODES)(HANDLE, ULONG, PDEVMODEW);
78 typedef VOID (STDCALL *PGD_FREE)(PVOID, ULONG);
79 typedef VOID (STDCALL *PGD_DESTROYFONT)(FONTOBJ*);
80 typedef LONG (STDCALL *PGD_QUERYFONTCAPS)(ULONG, PULONG);
81 typedef ULONG (STDCALL *PGD_LOADFONTFILE)(ULONG, PVOID, ULONG, ULONG);
82 typedef BOOL (STDCALL *PGD_UNLOADFONTFILE)(ULONG);
83 typedef ULONG (STDCALL *PGD_FONTMANAGEMENT)(SURFOBJ*, FONTOBJ*, ULONG, ULONG, PVOID,
84 ULONG, PVOID);
85 typedef LONG (STDCALL *PGD_QUERYTRUETYPETABLE)(ULONG, ULONG, ULONG, PTRDIFF, ULONG,
86 PBYTE);
87 typedef LONG (STDCALL *PGD_QUERYTRUETYPEOUTLINE)(DHPDEV, FONTOBJ*, HGLYPH, BOOL,
88 GLYPHDATA*, ULONG, TTPOLYGONHEADER*);
89 typedef PVOID (STDCALL *PGD_GETTRUETYPEFILE)(ULONG, PULONG);
90 typedef LONG (STDCALL *PGD_QUERYFONTFILE)(ULONG, ULONG, ULONG, PULONG);
91 typedef BOOL (STDCALL *PGD_QUERYADVANCEWIDTHS)(DHPDEV, FONTOBJ*, ULONG, HGLYPH *,
92 PVOID *, ULONG);
93 typedef BOOL (STDCALL *PGD_SETPIXELFORMAT)(SURFOBJ*, LONG, ULONG);
94 typedef LONG (STDCALL *PGD_DESCRIBEPIXELFORMAT)(DHPDEV, LONG, ULONG,
95 PPIXELFORMATDESCRIPTOR);
96 typedef BOOL (STDCALL *PGD_SWAPBUFFERS)(SURFOBJ*, PWNDOBJ);
97 typedef BOOL (STDCALL *PGD_STARTBANDING)(SURFOBJ*, POINTL*);
98 typedef BOOL (STDCALL *PGD_NEXTBAND)(SURFOBJ*, POINTL*);
99
100 typedef BOOL (STDCALL *PGD_GETDIRECTDRAWINFO)(DHPDEV, PDD_HALINFO, PDWORD, VIDEOMEMORY*, PDWORD, PDWORD);
101 typedef BOOL (STDCALL *PGD_ENABLEDIRECTDRAW)(DHPDEV, PDD_CALLBACKS, PDD_SURFACECALLBACKS, PDD_PALETTECALLBACKS);
102 typedef VOID (STDCALL *PGD_DISABLEDIRECTDRAW)(DHPDEV);
103
104 typedef LONG (STDCALL *PGD_QUERYSPOOLTYPE)(DHPDEV, LPWSTR);
105
106 typedef BOOL (STDCALL *PGD_GRADIENTFILL)(SURFOBJ*, CLIPOBJ*, XLATEOBJ*, TRIVERTEX*, ULONG, PVOID, ULONG, RECTL*, POINTL*, ULONG);
107
108 typedef VOID (STDCALL *PGD_SYNCHRONIZESURFACE)(SURFOBJ*, RECTL *, FLONG);
109
110 typedef struct _DRIVER_FUNCTIONS
111 {
112 PGD_ENABLEDRIVER EnableDriver;
113 PGD_ENABLEPDEV EnablePDEV;
114 PGD_COMPLETEPDEV CompletePDEV;
115 PGD_DISABLEPDEV DisablePDEV;
116 PGD_ENABLESURFACE EnableSurface;
117 PGD_DISABLESURFACE DisableSurface;
118 PGD_ASSERTMODE AssertMode;
119 PGD_OFFSET Offset;
120 PGD_RESETPDEV ResetPDEV;
121 PGD_DISABLEDRIVER DisableDriver;
122 PGD_CREATEDEVICEBITMAP CreateDeviceBitmap;
123 PGD_DELETEDEVICEBITMAP DeleteDeviceBitmap;
124 PGD_REALIZEBRUSH RealizeBrush;
125 PGD_DITHERCOLOR DitherColor;
126 PGD_STROKEPATH StrokePath;
127 PGD_FILLPATH FillPath;
128 PGD_STROKEANDFILLPATH StrokeAndFillPath;
129 PGD_PAINT Paint;
130 PGD_BITBLT BitBlt;
131 PGD_TRANSPARENTBLT TransparentBlt;
132 PGD_COPYBITS CopyBits;
133 PGD_STRETCHBLT StretchBlt;
134 PGD_STRETCHBLTROP StretchBltROP;
135 PGD_SETPALETTE SetPalette;
136 PGD_TEXTOUT TextOut;
137 PGD_ESCAPE Escape;
138 PGD_DRAWESCAPE DrawEscape;
139 PGD_QUERYFONT QueryFont;
140 PGD_QUERYFONTTREE QueryFontTree;
141 PGD_QUERYFONTDATA QueryFontData;
142 PGD_SETPOINTERSHAPE SetPointerShape;
143 PGD_MOVEPOINTER MovePointer;
144 PGD_LINETO LineTo;
145 PGD_SENDPAGE SendPage;
146 PGD_STARTPAGE StartPage;
147 PGD_ENDDOC EndDoc;
148 PGD_STARTDOC StartDoc;
149 PGD_GETGLYPHMODE GetGlyphMode;
150 PGD_SYNCHRONIZE Synchronize;
151 PGD_SAVESCREENBITS SaveScreenBits;
152 PGD_GETMODES GetModes;
153 PGD_FREE Free;
154 PGD_DESTROYFONT DestroyFont;
155 PGD_QUERYFONTCAPS QueryFontCaps;
156 PGD_LOADFONTFILE LoadFontFile;
157 PGD_UNLOADFONTFILE UnloadFontFile;
158 PGD_FONTMANAGEMENT FontManagement;
159 PGD_QUERYTRUETYPETABLE QueryTrueTypeTable;
160 PGD_QUERYTRUETYPEOUTLINE QueryTrueTypeOutline;
161 PGD_GETTRUETYPEFILE GetTrueTypeFile;
162 PGD_QUERYFONTFILE QueryFontFile;
163 PGD_QUERYADVANCEWIDTHS QueryAdvanceWidths;
164 PGD_SETPIXELFORMAT SetPixelFormat;
165 PGD_DESCRIBEPIXELFORMAT DescribePixelFormat;
166 PGD_SWAPBUFFERS SwapBuffers;
167 PGD_STARTBANDING StartBanding;
168 PGD_NEXTBAND NextBand;
169 PGD_GETDIRECTDRAWINFO GetDirectDrawInfo;
170 PGD_ENABLEDIRECTDRAW EnableDirectDraw;
171 PGD_DISABLEDIRECTDRAW DisableDirectDraw;
172 PGD_QUERYSPOOLTYPE QuerySpoolType;
173 PGD_GRADIENTFILL GradientFill;
174 PGD_SYNCHRONIZESURFACE SynchronizeSurface;
175 PGD_ALPHABLEND AlphaBlend;
176 } DRIVER_FUNCTIONS, *PDRIVER_FUNCTIONS;
177
178 #ifndef NTOS_MODE_USER
179
180 BOOL DRIVER_RegisterDriver(LPCWSTR Name, PGD_ENABLEDRIVER EnableDriver);
181 PGD_ENABLEDRIVER DRIVER_FindDDIDriver(LPCWSTR Name);
182 PFILE_OBJECT DRIVER_FindMPDriver(ULONG DisplayNumber);
183 BOOL DRIVER_BuildDDIFunctions(PDRVENABLEDATA DED,
184 PDRIVER_FUNCTIONS DF);
185 BOOL DRIVER_UnregisterDriver(LPCWSTR Name);
186 INT DRIVER_ReferenceDriver (LPCWSTR Name);
187 INT DRIVER_UnreferenceDriver (LPCWSTR Name);
188
189 #endif
190
191 #endif
192