move crt, ddk and GL includes
[reactos.git] / reactos / include / ddk / ddkmapi.h
1 /*
2 * ddkmapi.h
3 *
4 * DirectDraw support for DxApi function
5 *
6 * This file is part of the w32api package.
7 *
8 * Contributors:
9 * Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
10 *
11 * THIS SOFTWARE IS NOT COPYRIGHTED
12 *
13 * This source code is offered for use in the public domain. You may
14 * use, modify or distribute it freely.
15 *
16 * This code is distributed in the hope that it will be useful but
17 * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
18 * DISCLAIMED. This includes but is not limited to warranties of
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
20 *
21 */
22
23 #ifndef __DDKMAPI_H
24 #define __DDKMAPI_H
25
26 #if __GNUC__ >=3
27 #pragma GCC system_header
28 #endif
29
30 #ifdef __cplusplus
31 extern "C" {
32 #endif
33
34 #if defined(_DXAPI_)
35 #define DXAPI DECLSPEC_EXPORT
36 #else
37 #define DXAPI DECLSPEC_IMPORT
38 #endif
39
40 DXAPI
41 DWORD
42 FAR PASCAL
43 DxApi(
44 IN DWORD dwFunctionNum,
45 IN LPVOID lpvInBuffer,
46 IN DWORD cbInBuffer,
47 OUT LPVOID lpvOutBuffer,
48 OUT DWORD cbOutBuffer);
49
50 typedef DWORD (FAR PASCAL *LPDXAPI)(
51 DWORD dwFunctionNum,
52 LPVOID lpvInBuffer,
53 DWORD cbInBuffer,
54 LPVOID lpvOutBuffer,
55 DWORD cbOutBuffer);
56
57
58 #define DXAPI_MAJORVERSION 1
59 #define DXAPI_MINORVERSION 0
60
61 #define DD_FIRST_DXAPI 0x500
62
63 #define DD_DXAPI_GETVERSIONNUMBER (DD_FIRST_DXAPI)
64 #define DD_DXAPI_CLOSEHANDLE (DD_FIRST_DXAPI+1)
65 #define DD_DXAPI_OPENDIRECTDRAW (DD_FIRST_DXAPI+2)
66 #define DD_DXAPI_OPENSURFACE (DD_FIRST_DXAPI+3)
67 #define DD_DXAPI_OPENVIDEOPORT (DD_FIRST_DXAPI+4)
68 #define DD_DXAPI_GETKERNELCAPS (DD_FIRST_DXAPI+5)
69 #define DD_DXAPI_GET_VP_FIELD_NUMBER (DD_FIRST_DXAPI+6)
70 #define DD_DXAPI_SET_VP_FIELD_NUMBER (DD_FIRST_DXAPI+7)
71 #define DD_DXAPI_SET_VP_SKIP_FIELD (DD_FIRST_DXAPI+8)
72 #define DD_DXAPI_GET_SURFACE_STATE (DD_FIRST_DXAPI+9)
73 #define DD_DXAPI_SET_SURFACE_STATE (DD_FIRST_DXAPI+10)
74 #define DD_DXAPI_LOCK (DD_FIRST_DXAPI+11)
75 #define DD_DXAPI_FLIP_OVERLAY (DD_FIRST_DXAPI+12)
76 #define DD_DXAPI_FLIP_VP (DD_FIRST_DXAPI+13)
77 #define DD_DXAPI_GET_CURRENT_VP_AUTOFLIP_SURFACE (DD_FIRST_DXAPI+14)
78 #define DD_DXAPI_GET_LAST_VP_AUTOFLIP_SURFACE (DD_FIRST_DXAPI+15)
79 #define DD_DXAPI_REGISTER_CALLBACK (DD_FIRST_DXAPI+16)
80 #define DD_DXAPI_UNREGISTER_CALLBACK (DD_FIRST_DXAPI+17)
81 #define DD_DXAPI_GET_POLARITY (DD_FIRST_DXAPI+18)
82 #define DD_DXAPI_OPENVPCAPTUREDEVICE (DD_FIRST_DXAPI+19)
83 #define DD_DXAPI_ADDVPCAPTUREBUFFER (DD_FIRST_DXAPI+20)
84 #define DD_DXAPI_FLUSHVPCAPTUREBUFFERS (DD_FIRST_DXAPI+21)
85
86
87 typedef struct _DDCAPBUFFINFO {
88 DWORD dwFieldNumber;
89 DWORD bPolarity;
90 LARGE_INTEGER liTimeStamp;
91 DWORD ddRVal;
92 } DDCAPBUFFINFO, FAR * LPDDCAPBUFFINFO;
93
94 /* DDADDVPCAPTUREBUFF.dwFlags constants */
95 #define DDADDBUFF_SYSTEMMEMORY 0x0001
96 #define DDADDBUFF_NONLOCALVIDMEM 0x0002
97 #define DDADDBUFF_INVERT 0x0004
98
99 typedef struct _DDADDVPCAPTUREBUFF {
100 HANDLE hCapture;
101 DWORD dwFlags;
102 PMDL pMDL;
103 PKEVENT pKEvent;
104 LPDDCAPBUFFINFO lpBuffInfo;
105 } DDADDVPCAPTUREBUFF, FAR * LPDDADDVPCAPTUREBUFF;
106
107 typedef struct _DDCLOSEHANDLE {
108 HANDLE hHandle;
109 } DDCLOSEHANDLE, FAR *LPDDCLOSEHANDLE;
110
111 typedef struct _DDFLIPOVERLAY {
112 HANDLE hDirectDraw;
113 HANDLE hCurrentSurface;
114 HANDLE hTargetSurface;
115 DWORD dwFlags;
116 } DDFLIPOVERLAY, FAR *LPDDFLIPOVERLAY;
117
118 typedef struct _DDFLIPVIDEOPORT {
119 HANDLE hDirectDraw;
120 HANDLE hVideoPort;
121 HANDLE hCurrentSurface;
122 HANDLE hTargetSurface;
123 DWORD dwFlags;
124 } DDFLIPVIDEOPORT, FAR *LPDDFLIPVIDEOPORT;
125
126 typedef struct _DDGETAUTOFLIPIN {
127 HANDLE hDirectDraw;
128 HANDLE hVideoPort;
129 } DDGETAUTOFLIPIN, FAR *LPDDGETAUTOFLIPIN;
130
131 typedef struct _DDGETAUTOFLIPOUT {
132 DWORD ddRVal;
133 HANDLE hVideoSurface;
134 HANDLE hVBISurface;
135 BOOL bPolarity;
136 } DDGETAUTOFLIPOUT, FAR *LPDDGETAUTOFLIPOUT;
137
138 typedef struct _DDGETPOLARITYIN {
139 HANDLE hDirectDraw;
140 HANDLE hVideoPort;
141 } DDGETPOLARITYIN, FAR *LPDDGETPOLARITYIN;
142
143 typedef struct _DDGETPOLARITYOUT {
144 DWORD ddRVal;
145 BOOL bPolarity;
146 } DDGETPOLARITYOUT, FAR *LPDDGETPOLARITYOUT;
147
148 typedef struct _DDGETSURFACESTATEIN {
149 HANDLE hDirectDraw;
150 HANDLE hSurface;
151 } DDGETSURFACESTATEIN, FAR *LPDDGETSURFACESTATEIN;
152
153 /* DDGETSURFACESTATEOUT.dwStateCaps/dwStateStatus constants */
154 #define DDSTATE_BOB 0x0001
155 #define DDSTATE_WEAVE 0x0002
156 #define DDSTATE_EXPLICITLY_SET 0x0004
157 #define DDSTATE_SOFTWARE_AUTOFLIP 0x0008
158 #define DDSTATE_SKIPEVENFIELDS 0x0010
159
160 typedef struct _DDGETSURFACESTATEOUT {
161 DWORD ddRVal;
162 DWORD dwStateCaps;
163 DWORD dwStateStatus;
164 } DDGETSURFACESTATEOUT, FAR *LPDDGETSURFACESTATEOUT;
165
166 typedef struct _DDGETFIELDNUMIN {
167 HANDLE hDirectDraw;
168 HANDLE hVideoPort;
169 } DDGETFIELDNUMIN, FAR *LPDDGETFIELDNUMIN;
170
171 typedef struct _DDGETFIELDNUMOUT {
172 DWORD ddRVal;
173 DWORD dwFieldNum;
174 } DDGETFIELDNUMOUT, FAR *LPDDGETFIELDNUMOUT;
175
176 typedef struct _DDGETKERNELCAPSOUT {
177 DWORD ddRVal;
178 DWORD dwCaps;
179 DWORD dwIRQCaps;
180 } DDGETKERNELCAPSOUT, FAR *LPDDGETKERNELCAPSOUT;
181
182 typedef struct _DDGETVERSIONNUMBER {
183 DWORD ddRVal;
184 DWORD dwMajorVersion;
185 DWORD dwMinorVersion;
186 } DDGETVERSIONNUMBER, FAR *LPDDGETVERSIONNUMBER;
187
188 typedef struct _DDLOCKIN {
189 HANDLE hDirectDraw;
190 HANDLE hSurface;
191 } DDLOCKIN, FAR *LPDDLOCKIN;
192
193 typedef struct _DDLOCKOUT {
194 DWORD ddRVal;
195 DWORD dwSurfHeight;
196 DWORD dwSurfWidth;
197 LONG lSurfPitch;
198 PVOID lpSurface;
199 DWORD SurfaceCaps;
200 DWORD dwFormatFlags;
201 DWORD dwFormatFourCC;
202 DWORD dwFormatBitCount;
203 _ANONYMOUS_UNION union {
204 DWORD dwRBitMask;
205 DWORD dwYBitMask;
206 } DUMMYUNIONNAME;
207 _ANONYMOUS_UNION union {
208 DWORD dwGBitMask;
209 DWORD dwUBitMask;
210 } DUMMYUNIONNAME2;
211 _ANONYMOUS_UNION union {
212 DWORD dwBBitMask;
213 DWORD dwVBitMask;
214 } DUMMYUNIONNAME3;
215 } DDLOCKOUT, FAR *LPDDLOCKOUT;
216
217 /* LPDD_NOTIFYCALLBACK.dwFlags constants */
218 #define DDNOTIFY_DISPLAY_VSYNC 0x0001
219 #define DDNOTIFY_VP_VSYNC 0x0002
220 #define DDNOTIFY_VP_LINE 0x0004
221 #define DDNOTIFY_PRERESCHANGE 0x0008
222 #define DDNOTIFY_POSTRESCHANGE 0x0010
223 #define DDNOTIFY_PREDOSBOX 0x0020
224 #define DDNOTIFY_POSTDOSBOX 0x0040
225 #define DDNOTIFY_CLOSEDIRECTDRAW 0x0080
226 #define DDNOTIFY_CLOSESURFACE 0x0100
227 #define DDNOTIFY_CLOSEVIDEOPORT 0x0200
228 #define DDNOTIFY_CLOSECAPTURE 0x0400
229
230 typedef ULONG (FAR PASCAL *LPDD_NOTIFYCALLBACK)(
231 DWORD dwFlags,
232 PVOID pContext,
233 DWORD dwParam1,
234 DWORD dwParam2);
235
236 typedef struct _DDOPENDIRECTDRAWIN {
237 ULONG_PTR dwDirectDrawHandle;
238 LPDD_NOTIFYCALLBACK pfnDirectDrawClose;
239 PVOID pContext;
240 } DDOPENDIRECTDRAWIN, FAR *LPDDOPENDIRECTDRAWIN;
241
242 typedef struct _DDOPENDIRECTDRAWOUT {
243 DWORD ddRVal;
244 HANDLE hDirectDraw;
245 } DDOPENDIRECTDRAWOUT, FAR *LPDDOPENDIRECTDRAWOUT;
246
247 typedef struct _DDOPENSURFACEIN {
248 HANDLE hDirectDraw;
249 ULONG_PTR dwSurfaceHandle;
250 LPDD_NOTIFYCALLBACK pfnSurfaceClose;
251 PVOID pContext;
252 } DDOPENSURFACEIN, FAR *LPDDOPENSURFACEIN;
253
254 typedef struct _DDOPENSURFACEOUT {
255 DWORD ddRVal;
256 HANDLE hSurface;
257 } DDOPENSURFACEOUT, FAR *LPDDOPENSURFACEOUT;
258
259 typedef struct _DDOPENVIDEOPORTIN {
260 HANDLE hDirectDraw;
261 ULONG dwVideoPortHandle;
262 LPDD_NOTIFYCALLBACK pfnVideoPortClose;
263 PVOID pContext;
264 } DDOPENVIDEOPORTIN, FAR *LPDDOPENVIDEOPORTIN;
265
266 typedef struct _DDOPENVIDEOPORTOUT {
267 DWORD ddRVal;
268 HANDLE hVideoPort;
269 } DDOPENVIDEOPORTOUT, FAR *LPDDOPENVIDEOPORTOUT;
270
271 /* DDOPENVPCAPTUREDEVICEIN.dwFlags constants */
272 #define DDOPENCAPTURE_VIDEO 0x0001
273 #define DDOPENCAPTURE_VBI 0x0002
274
275 typedef struct _DDOPENVPCAPTUREDEVICEIN {
276 HANDLE hDirectDraw;
277 HANDLE hVideoPort;
278 DWORD dwStartLine;
279 DWORD dwEndLine;
280 DWORD dwCaptureEveryNFields;
281 LPDD_NOTIFYCALLBACK pfnCaptureClose;
282 PVOID pContext;
283 DWORD dwFlags;
284 } DDOPENVPCAPTUREDEVICEIN, FAR * LPDDOPENVPCAPTUREDEVICEIN;
285
286 typedef struct _DDOPENVPCAPTUREDEVICEOUT {
287 DWORD ddRVal;
288 HANDLE hCapture;
289 } DDOPENVPCAPTUREDEVICEOUT, FAR * LPDDOPENVPCAPTUREDEVICEOUT;
290
291 /* DDREGISTERCALLBACK.dwEvents constants */
292 #define DDEVENT_DISPLAY_VSYNC 0x0001
293 #define DDEVENT_VP_VSYNC 0x0002
294 #define DDEVENT_VP_LINE 0x0004
295 #define DDEVENT_PRERESCHANGE 0x0008
296 #define DDEVENT_POSTRESCHANGE 0x0010
297 #define DDEVENT_PREDOSBOX 0x0020
298 #define DDEVENT_POSTDOSBOX 0x0040
299
300 typedef struct _DDREGISTERCALLBACK {
301 HANDLE hDirectDraw;
302 ULONG dwEvents;
303 LPDD_NOTIFYCALLBACK pfnCallback;
304 ULONG_PTR dwParam1;
305 ULONG_PTR dwParam2;
306 PVOID pContext;
307 } DDREGISTERCALLBACK, FAR *LPDDREGISTERCALLBACK;
308
309 typedef struct _DDSETSURFACETATE {
310 HANDLE hDirectDraw;
311 HANDLE hSurface;
312 DWORD dwState;
313 DWORD dwStartField;
314 } DDSETSURFACESTATE, FAR *LPDDSETSURFACESTATE;
315
316 typedef struct _DDSETFIELDNUM {
317 HANDLE hDirectDraw;
318 HANDLE hVideoPort;
319 DWORD dwFieldNum;
320 } DDSETFIELDNUM, FAR *LPDDSETFIELDNUM;
321
322 typedef struct _DDSETSKIPFIELD {
323 HANDLE hDirectDraw;
324 HANDLE hVideoPort;
325 DWORD dwStartField;
326 } DDSETSKIPFIELD, FAR *LPDDSETSKIPFIELD;
327
328 #ifdef __cplusplus
329 }
330 #endif
331
332 #endif /* __DDKMAPI_H */