:pserver:cvsanon@mok.lvcm.com:/CVS/ReactOS reactos
[reactos.git] / 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_RESETPDEV)(DHPDEV, DHPDEV);
25 typedef HBITMAP STDCALL (*PGD_CREATEDEVICEBITMAP)(DHPDEV, SIZEL, ULONG); 
26 typedef VOID STDCALL (*PGD_DELETEDEVICEBITMAP)(DHSURF); 
27 typedef BOOL STDCALL (*PGD_REALIZEBRUSH)(PBRUSHOBJ, PSURFOBJ, PSURFOBJ, PSURFOBJ,
28                                  PXLATEOBJ, ULONG); 
29 typedef ULONG STDCALL (*PGD_DITHERCOLOR)(DHPDEV, ULONG, ULONG, PULONG); 
30 typedef BOOL STDCALL (*PGD_STROKEPATH)(PSURFOBJ, PPATHOBJ, PCLIPOBJ, PXFORMOBJ,
31                                PBRUSHOBJ, PPOINTL, PLINEATTRS, MIX); 
32 typedef BOOL STDCALL (*PGD_FILLPATH)(PSURFOBJ, PPATHOBJ, PCLIPOBJ, PBRUSHOBJ,
33                              PPOINTL, MIX, ULONG); 
34 typedef BOOL STDCALL (*PGD_STROKEANDFILLPATH)(PSURFOBJ, PPATHOBJ, PCLIPOBJ,
35                                       PXFORMOBJ, PBRUSHOBJ, PLINEATTRS,
36                                       PBRUSHOBJ, PPOINTL, MIX, ULONG); 
37 typedef BOOL STDCALL (*PGD_PAINT)(PSURFOBJ, PCLIPOBJ, PBRUSHOBJ, PPOINTL, MIX); 
38 typedef BOOL STDCALL (*PGD_BITBLT)(PSURFOBJ, PSURFOBJ, PSURFOBJ, PCLIPOBJ,
39                            PXLATEOBJ, PRECTL, PPOINTL, PPOINTL, PBRUSHOBJ,
40                            PPOINTL, ROP4); 
41 typedef BOOL STDCALL (*PGD_TRANSPARENTBLT)(PSURFOBJ, PSURFOBJ, PCLIPOBJ, PXLATEOBJ, PRECTL, PRECTL, ULONG, ULONG);
42 typedef BOOL STDCALL (*PGD_COPYBITS)(PSURFOBJ, PSURFOBJ, PCLIPOBJ, PXLATEOBJ,
43                              PRECTL, PPOINTL); 
44 typedef BOOL STDCALL (*PGD_STRETCHBLT)(PSURFOBJ, PSURFOBJ, PSURFOBJ, PCLIPOBJ,
45                                PXLATEOBJ, PCOLORADJUSTMENT, PPOINTL,
46                                PRECTL, PRECTL, PPOINTL, ULONG); 
47 typedef BOOL STDCALL (*PGD_SETPALETTE)(DHPDEV, PPALOBJ, ULONG, ULONG, ULONG); 
48 typedef BOOL STDCALL (*PGD_TEXTOUT)(PSURFOBJ, PSTROBJ, PFONTOBJ, PCLIPOBJ, PRECTL,
49                             PRECTL, PBRUSHOBJ, PBRUSHOBJ, PPOINTL, MIX); 
50 typedef ULONG STDCALL (*PGD_ESCAPE)(PSURFOBJ, ULONG, ULONG, PVOID *, ULONG, PVOID *); 
51 typedef ULONG STDCALL (*PGD_DRAWESCAPE)(PSURFOBJ, ULONG, PCLIPOBJ, PRECTL, ULONG, 
52                                 PVOID *); 
53 typedef PIFIMETRICS STDCALL (*PGD_QUERYFONT)(DHPDEV, ULONG, ULONG, PULONG); 
54 typedef PVOID STDCALL (*PGD_QUERYFONTTREE)(DHPDEV, ULONG, ULONG, ULONG, PULONG); 
55 typedef LONG STDCALL (*PGD_QUERYFONTDATA)(DHPDEV, PFONTOBJ, ULONG, HGLYPH, PGLYPHDATA,
56                                   PVOID, ULONG); 
57 typedef ULONG STDCALL (*PGD_SETPOINTERSHAPE)(PSURFOBJ, PSURFOBJ, PSURFOBJ, PXLATEOBJ,
58                                      LONG, LONG, LONG, LONG, PRECTL, ULONG); 
59 typedef VOID STDCALL (*PGD_MOVEPOINTER)(PSURFOBJ, LONG, LONG, PRECTL); 
60 typedef BOOL STDCALL (*PGD_LINETO)(PSURFOBJ, PCLIPOBJ, PBRUSHOBJ, LONG, LONG, LONG,
61                            LONG, PRECTL, MIX);
62 typedef BOOL STDCALL (*PGD_SENDPAGE)(PSURFOBJ);
63 typedef BOOL STDCALL (*PGD_STARTPAGE)(PSURFOBJ);
64 typedef BOOL STDCALL (*PGD_ENDDOC)(PSURFOBJ, ULONG);
65 typedef BOOL STDCALL (*PGD_STARTDOC)(PSURFOBJ, PWSTR, DWORD);
66 typedef ULONG STDCALL (*PGD_GETGLYPHMODE)(DHPDEV, PFONTOBJ);
67 typedef VOID STDCALL (*PGD_SYNCHRONIZE)(DHPDEV, PRECTL);
68 typedef ULONG STDCALL (*PGD_SAVESCREENBITS)(PSURFOBJ, ULONG, ULONG, PRECTL);
69 typedef ULONG STDCALL (*PGD_GETMODES)(HANDLE, ULONG, PDEVMODEW);
70 typedef VOID STDCALL (*PGD_FREE)(PVOID, ULONG);
71 typedef VOID STDCALL (*PGD_DESTROYFONT)(PFONTOBJ);
72 typedef LONG STDCALL (*PGD_QUERYFONTCAPS)(ULONG, PULONG);
73 typedef ULONG STDCALL (*PGD_LOADFONTFILE)(ULONG, PVOID, ULONG, ULONG);
74 typedef BOOL STDCALL (*PGD_UNLOADFONTFILE)(ULONG);
75 typedef ULONG STDCALL (*PGD_FONTMANAGEMENT)(PSURFOBJ, PFONTOBJ, ULONG, ULONG, PVOID,
76                                     ULONG, PVOID);
77 typedef LONG STDCALL (*PGD_QUERYTRUETYPETABLE)(ULONG, ULONG, ULONG, PTRDIFF, ULONG,
78                                        PBYTE);
79 typedef LONG STDCALL (*PGD_QUERYTRUETYPEOUTLINE)(DHPDEV, PFONTOBJ, HGLYPH, BOOL,
80                                          PGLYPHDATA, ULONG, PTTPOLYGONHEADER);
81 typedef PVOID STDCALL (*PGD_GETTRUETYPEFILE)(ULONG, PULONG);
82 typedef LONG STDCALL (*PGD_QUERYFONTFILE)(ULONG, ULONG, ULONG, PULONG);
83 typedef BOOL STDCALL (*PGD_QUERYADVANCEWIDTHS)(DHPDEV, PFONTOBJ, ULONG, HGLYPH *,
84                                        PVOID *, ULONG);
85 typedef BOOL STDCALL (*PGD_SETPIXELFORMAT)(PSURFOBJ, LONG, ULONG);
86 typedef LONG STDCALL (*PGD_DESCRIBEPIXELFORMAT)(DHPDEV, LONG, ULONG,
87                                         PPIXELFORMATDESCRIPTOR);
88 typedef BOOL STDCALL (*PGD_SWAPBUFFERS)(PSURFOBJ, PWNDOBJ);
89 typedef BOOL STDCALL (*PGD_STARTBANDING)(PSURFOBJ, PPOINTL);
90 typedef BOOL STDCALL (*PGD_NEXTBAND)(PSURFOBJ, PPOINTL);
91 typedef LONG STDCALL (*PGD_QUERYSPOOLTYPE)(DHPDEV, LPWSTR);
92
93
94 typedef struct _DRIVER_FUNCTIONS
95 {
96   PGD_ENABLEDRIVER  EnableDriver;
97   PGD_ENABLEPDEV  EnablePDev;
98   PGD_COMPLETEPDEV  CompletePDev;
99   PGD_DISABLEPDEV  DisablePDev;
100   PGD_ENABLESURFACE  EnableSurface;
101   PGD_DISABLESURFACE  DisableSurface;
102   PGD_ASSERTMODE  AssertMode;
103   PGD_RESETPDEV  ResetPDev;
104   PGD_CREATEDEVICEBITMAP  CreateDeviceBitmap;
105   PGD_DELETEDEVICEBITMAP  DeleteDeviceBitmap;
106   PGD_REALIZEBRUSH  RealizeBrush;
107   PGD_DITHERCOLOR  DitherColor;
108   PGD_STROKEPATH  StrokePath;
109   PGD_FILLPATH  FillPath;
110   PGD_STROKEANDFILLPATH  StrokeAndFillPath;
111   PGD_PAINT  Paint;
112   PGD_BITBLT  BitBlt;
113   PGD_TRANSPARENTBLT TransparentBlt;
114   PGD_COPYBITS  CopyBits;
115   PGD_STRETCHBLT  StretchBlt;
116   PGD_SETPALETTE  SetPalette;
117   PGD_TEXTOUT  TextOut;
118   PGD_ESCAPE  Escape;
119   PGD_DRAWESCAPE  DrawEscape;
120   PGD_QUERYFONT  QueryFont;
121   PGD_QUERYFONTTREE  QueryFontTree;
122   PGD_QUERYFONTDATA  QueryFontData;
123   PGD_SETPOINTERSHAPE  SetPointerShape;
124   PGD_MOVEPOINTER  MovePointer;
125   PGD_LINETO  LineTo;
126   PGD_SENDPAGE  SendPage;
127   PGD_STARTPAGE  StartPage;
128   PGD_ENDDOC  EndDoc;
129   PGD_STARTDOC  StartDoc;
130   PGD_GETGLYPHMODE  GetGlyphMode;
131   PGD_SYNCHRONIZE  Synchronize;
132   PGD_SAVESCREENBITS  SaveScreenBits;
133   PGD_GETMODES  GetModes;
134   PGD_FREE  Free;
135   PGD_DESTROYFONT  DestroyFont;
136   PGD_QUERYFONTCAPS  QueryFontCaps;
137   PGD_LOADFONTFILE  LoadFontFile;
138   PGD_UNLOADFONTFILE  UnloadFontFile;
139   PGD_FONTMANAGEMENT  FontManagement;
140   PGD_QUERYTRUETYPETABLE  QueryTrueTypeTable;
141   PGD_QUERYTRUETYPEOUTLINE  QueryTrueTypeOutline;
142   PGD_GETTRUETYPEFILE  GetTrueTypeFile;
143   PGD_QUERYFONTFILE  QueryFontFile;
144   PGD_QUERYADVANCEWIDTHS  QueryAdvanceWidths;
145   PGD_SETPIXELFORMAT  SetPixelFormat;
146   PGD_DESCRIBEPIXELFORMAT  DescribePixelFormat;
147   PGD_SWAPBUFFERS  SwapBuffers;
148   PGD_STARTBANDING  StartBanding;
149   PGD_NEXTBAND  NextBand;
150 #if 0
151   PGD_GETDIRECTDRAWINFO,
152   PGD_ENABLEDIRECTDRAW,
153   PGD_DISABLEDIRECTDRAW,
154 #endif
155   PGD_QUERYSPOOLTYPE  QuerySpoolType;
156 } DRIVER_FUNCTIONS, *PDRIVER_FUNCTIONS;
157
158 BOOL  DRIVER_RegisterDriver(LPCWSTR  Name, PGD_ENABLEDRIVER  EnableDriver);
159 PGD_ENABLEDRIVER  DRIVER_FindDDIDriver(LPCWSTR  Name);
160 HANDLE  DRIVER_FindMPDriver(LPCWSTR  Name);
161 BOOL  DRIVER_BuildDDIFunctions(PDRVENABLEDATA  DED, 
162                                PDRIVER_FUNCTIONS  DF);
163 BOOL  DRIVER_UnregisterDriver(LPCWSTR  Name);
164 INT  DRIVER_ReferenceDriver (LPCWSTR  Name);
165 INT  DRIVER_UnreferenceDriver (LPCWSTR  Name);
166
167 #endif
168