3 * @copy 2012 MinGW.org project
5 * Permission is hereby granted, free of charge, to any person obtaining a
6 * copy of this software and associated documentation files (the "Software"),
7 * to deal in the Software without restriction, including without limitation
8 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
9 * and/or sell copies of the Software, and to permit persons to whom the
10 * Software is furnished to do so, subject to the following conditions:
12 * The above copyright notice and this permission notice (including the next
13 * paragraph) shall be included in all copies or substantial portions of the
16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
22 * DEALINGS IN THE SOFTWARE.
24 /* Created by Casper S. Hornstrup <chorns@users.sourceforge.net> */
27 #pragma GCC system_header
31 * DirectDraw support for DxApi function
41 #define DXAPI DECLSPEC_EXPORT
43 #define DXAPI DECLSPEC_IMPORT
50 /*IN*/ DWORD dwFunctionNum,
51 /*IN*/ LPVOID lpvInBuffer,
52 /*IN*/ DWORD cbInBuffer,
53 /*OUT*/ LPVOID lpvOutBuffer,
54 /*OUT*/ DWORD cbOutBuffer);
56 typedef DWORD (FAR PASCAL *LPDXAPI)(
64 #define DXAPI_MAJORVERSION 1
65 #define DXAPI_MINORVERSION 0
67 #define DD_FIRST_DXAPI 0x500
69 #define DD_DXAPI_GETVERSIONNUMBER (DD_FIRST_DXAPI)
70 #define DD_DXAPI_CLOSEHANDLE (DD_FIRST_DXAPI+1)
71 #define DD_DXAPI_OPENDIRECTDRAW (DD_FIRST_DXAPI+2)
72 #define DD_DXAPI_OPENSURFACE (DD_FIRST_DXAPI+3)
73 #define DD_DXAPI_OPENVIDEOPORT (DD_FIRST_DXAPI+4)
74 #define DD_DXAPI_GETKERNELCAPS (DD_FIRST_DXAPI+5)
75 #define DD_DXAPI_GET_VP_FIELD_NUMBER (DD_FIRST_DXAPI+6)
76 #define DD_DXAPI_SET_VP_FIELD_NUMBER (DD_FIRST_DXAPI+7)
77 #define DD_DXAPI_SET_VP_SKIP_FIELD (DD_FIRST_DXAPI+8)
78 #define DD_DXAPI_GET_SURFACE_STATE (DD_FIRST_DXAPI+9)
79 #define DD_DXAPI_SET_SURFACE_STATE (DD_FIRST_DXAPI+10)
80 #define DD_DXAPI_LOCK (DD_FIRST_DXAPI+11)
81 #define DD_DXAPI_FLIP_OVERLAY (DD_FIRST_DXAPI+12)
82 #define DD_DXAPI_FLIP_VP (DD_FIRST_DXAPI+13)
83 #define DD_DXAPI_GET_CURRENT_VP_AUTOFLIP_SURFACE (DD_FIRST_DXAPI+14)
84 #define DD_DXAPI_GET_LAST_VP_AUTOFLIP_SURFACE (DD_FIRST_DXAPI+15)
85 #define DD_DXAPI_REGISTER_CALLBACK (DD_FIRST_DXAPI+16)
86 #define DD_DXAPI_UNREGISTER_CALLBACK (DD_FIRST_DXAPI+17)
87 #define DD_DXAPI_GET_POLARITY (DD_FIRST_DXAPI+18)
88 #define DD_DXAPI_OPENVPCAPTUREDEVICE (DD_FIRST_DXAPI+19)
89 #define DD_DXAPI_ADDVPCAPTUREBUFFER (DD_FIRST_DXAPI+20)
90 #define DD_DXAPI_FLUSHVPCAPTUREBUFFERS (DD_FIRST_DXAPI+21)
93 typedef struct _DDCAPBUFFINFO {
96 LARGE_INTEGER liTimeStamp;
98 } DDCAPBUFFINFO, FAR * LPDDCAPBUFFINFO;
100 /* DDADDVPCAPTUREBUFF.dwFlags constants */
101 #define DDADDBUFF_SYSTEMMEMORY 0x0001
102 #define DDADDBUFF_NONLOCALVIDMEM 0x0002
103 #define DDADDBUFF_INVERT 0x0004
105 typedef struct _DDADDVPCAPTUREBUFF {
110 LPDDCAPBUFFINFO lpBuffInfo;
111 } DDADDVPCAPTUREBUFF, FAR * LPDDADDVPCAPTUREBUFF;
113 typedef struct _DDCLOSEHANDLE {
115 } DDCLOSEHANDLE, FAR *LPDDCLOSEHANDLE;
117 typedef struct _DDFLIPOVERLAY {
119 HANDLE hCurrentSurface;
120 HANDLE hTargetSurface;
122 } DDFLIPOVERLAY, FAR *LPDDFLIPOVERLAY;
124 typedef struct _DDFLIPVIDEOPORT {
127 HANDLE hCurrentSurface;
128 HANDLE hTargetSurface;
130 } DDFLIPVIDEOPORT, FAR *LPDDFLIPVIDEOPORT;
132 typedef struct _DDGETAUTOFLIPIN {
135 } DDGETAUTOFLIPIN, FAR *LPDDGETAUTOFLIPIN;
137 typedef struct _DDGETAUTOFLIPOUT {
139 HANDLE hVideoSurface;
142 } DDGETAUTOFLIPOUT, FAR *LPDDGETAUTOFLIPOUT;
144 typedef struct _DDGETPOLARITYIN {
147 } DDGETPOLARITYIN, FAR *LPDDGETPOLARITYIN;
149 typedef struct _DDGETPOLARITYOUT {
152 } DDGETPOLARITYOUT, FAR *LPDDGETPOLARITYOUT;
154 typedef struct _DDGETSURFACESTATEIN {
157 } DDGETSURFACESTATEIN, FAR *LPDDGETSURFACESTATEIN;
159 /* DDGETSURFACESTATEOUT.dwStateCaps/dwStateStatus constants */
160 #define DDSTATE_BOB 0x0001
161 #define DDSTATE_WEAVE 0x0002
162 #define DDSTATE_EXPLICITLY_SET 0x0004
163 #define DDSTATE_SOFTWARE_AUTOFLIP 0x0008
164 #define DDSTATE_SKIPEVENFIELDS 0x0010
166 typedef struct _DDGETSURFACESTATEOUT {
170 } DDGETSURFACESTATEOUT, FAR *LPDDGETSURFACESTATEOUT;
172 typedef struct _DDGETFIELDNUMIN {
175 } DDGETFIELDNUMIN, FAR *LPDDGETFIELDNUMIN;
177 typedef struct _DDGETFIELDNUMOUT {
180 } DDGETFIELDNUMOUT, FAR *LPDDGETFIELDNUMOUT;
182 typedef struct _DDGETKERNELCAPSOUT {
186 } DDGETKERNELCAPSOUT, FAR *LPDDGETKERNELCAPSOUT;
188 typedef struct _DDGETVERSIONNUMBER {
190 DWORD dwMajorVersion;
191 DWORD dwMinorVersion;
192 } DDGETVERSIONNUMBER, FAR *LPDDGETVERSIONNUMBER;
194 typedef struct _DDLOCKIN {
197 } DDLOCKIN, FAR *LPDDLOCKIN;
199 typedef struct _DDLOCKOUT {
207 DWORD dwFormatFourCC;
208 DWORD dwFormatBitCount;
209 _ANONYMOUS_UNION union {
213 _ANONYMOUS_UNION union {
217 _ANONYMOUS_UNION union {
221 } DDLOCKOUT, FAR *LPDDLOCKOUT;
223 /* LPDD_NOTIFYCALLBACK.dwFlags constants */
224 #define DDNOTIFY_DISPLAY_VSYNC 0x0001
225 #define DDNOTIFY_VP_VSYNC 0x0002
226 #define DDNOTIFY_VP_LINE 0x0004
227 #define DDNOTIFY_PRERESCHANGE 0x0008
228 #define DDNOTIFY_POSTRESCHANGE 0x0010
229 #define DDNOTIFY_PREDOSBOX 0x0020
230 #define DDNOTIFY_POSTDOSBOX 0x0040
231 #define DDNOTIFY_CLOSEDIRECTDRAW 0x0080
232 #define DDNOTIFY_CLOSESURFACE 0x0100
233 #define DDNOTIFY_CLOSEVIDEOPORT 0x0200
234 #define DDNOTIFY_CLOSECAPTURE 0x0400
236 typedef ULONG (FAR PASCAL *LPDD_NOTIFYCALLBACK)(
242 typedef struct _DDOPENDIRECTDRAWIN {
243 ULONG_PTR dwDirectDrawHandle;
244 LPDD_NOTIFYCALLBACK pfnDirectDrawClose;
246 } DDOPENDIRECTDRAWIN, FAR *LPDDOPENDIRECTDRAWIN;
248 typedef struct _DDOPENDIRECTDRAWOUT {
251 } DDOPENDIRECTDRAWOUT, FAR *LPDDOPENDIRECTDRAWOUT;
253 typedef struct _DDOPENSURFACEIN {
255 ULONG_PTR dwSurfaceHandle;
256 LPDD_NOTIFYCALLBACK pfnSurfaceClose;
258 } DDOPENSURFACEIN, FAR *LPDDOPENSURFACEIN;
260 typedef struct _DDOPENSURFACEOUT {
263 } DDOPENSURFACEOUT, FAR *LPDDOPENSURFACEOUT;
265 typedef struct _DDOPENVIDEOPORTIN {
267 ULONG dwVideoPortHandle;
268 LPDD_NOTIFYCALLBACK pfnVideoPortClose;
270 } DDOPENVIDEOPORTIN, FAR *LPDDOPENVIDEOPORTIN;
272 typedef struct _DDOPENVIDEOPORTOUT {
275 } DDOPENVIDEOPORTOUT, FAR *LPDDOPENVIDEOPORTOUT;
277 /* DDOPENVPCAPTUREDEVICEIN.dwFlags constants */
278 #define DDOPENCAPTURE_VIDEO 0x0001
279 #define DDOPENCAPTURE_VBI 0x0002
281 typedef struct _DDOPENVPCAPTUREDEVICEIN {
286 DWORD dwCaptureEveryNFields;
287 LPDD_NOTIFYCALLBACK pfnCaptureClose;
290 } DDOPENVPCAPTUREDEVICEIN, FAR * LPDDOPENVPCAPTUREDEVICEIN;
292 typedef struct _DDOPENVPCAPTUREDEVICEOUT {
295 } DDOPENVPCAPTUREDEVICEOUT, FAR * LPDDOPENVPCAPTUREDEVICEOUT;
297 /* DDREGISTERCALLBACK.dwEvents constants */
298 #define DDEVENT_DISPLAY_VSYNC 0x0001
299 #define DDEVENT_VP_VSYNC 0x0002
300 #define DDEVENT_VP_LINE 0x0004
301 #define DDEVENT_PRERESCHANGE 0x0008
302 #define DDEVENT_POSTRESCHANGE 0x0010
303 #define DDEVENT_PREDOSBOX 0x0020
304 #define DDEVENT_POSTDOSBOX 0x0040
306 typedef struct _DDREGISTERCALLBACK {
309 LPDD_NOTIFYCALLBACK pfnCallback;
313 } DDREGISTERCALLBACK, FAR *LPDDREGISTERCALLBACK;
315 typedef struct _DDSETSURFACETATE {
320 } DDSETSURFACESTATE, FAR *LPDDSETSURFACESTATE;
322 typedef struct _DDSETFIELDNUM {
326 } DDSETFIELDNUM, FAR *LPDDSETFIELDNUM;
328 typedef struct _DDSETSKIPFIELD {
332 } DDSETSKIPFIELD, FAR *LPDDSETSKIPFIELD;
338 #endif /* __DDKMAPI_H */