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.
26 #pragma GCC system_header
30 * DirectDraw support for DxApi function
40 #define DXAPI DECLSPEC_EXPORT
42 #define DXAPI DECLSPEC_IMPORT
49 /*IN*/ DWORD dwFunctionNum,
50 /*IN*/ LPVOID lpvInBuffer,
51 /*IN*/ DWORD cbInBuffer,
52 /*OUT*/ LPVOID lpvOutBuffer,
53 /*OUT*/ DWORD cbOutBuffer);
55 typedef DWORD (FAR PASCAL *LPDXAPI)(
63 #define DXAPI_MAJORVERSION 1
64 #define DXAPI_MINORVERSION 0
66 #define DD_FIRST_DXAPI 0x500
68 #define DD_DXAPI_GETVERSIONNUMBER (DD_FIRST_DXAPI)
69 #define DD_DXAPI_CLOSEHANDLE (DD_FIRST_DXAPI+1)
70 #define DD_DXAPI_OPENDIRECTDRAW (DD_FIRST_DXAPI+2)
71 #define DD_DXAPI_OPENSURFACE (DD_FIRST_DXAPI+3)
72 #define DD_DXAPI_OPENVIDEOPORT (DD_FIRST_DXAPI+4)
73 #define DD_DXAPI_GETKERNELCAPS (DD_FIRST_DXAPI+5)
74 #define DD_DXAPI_GET_VP_FIELD_NUMBER (DD_FIRST_DXAPI+6)
75 #define DD_DXAPI_SET_VP_FIELD_NUMBER (DD_FIRST_DXAPI+7)
76 #define DD_DXAPI_SET_VP_SKIP_FIELD (DD_FIRST_DXAPI+8)
77 #define DD_DXAPI_GET_SURFACE_STATE (DD_FIRST_DXAPI+9)
78 #define DD_DXAPI_SET_SURFACE_STATE (DD_FIRST_DXAPI+10)
79 #define DD_DXAPI_LOCK (DD_FIRST_DXAPI+11)
80 #define DD_DXAPI_FLIP_OVERLAY (DD_FIRST_DXAPI+12)
81 #define DD_DXAPI_FLIP_VP (DD_FIRST_DXAPI+13)
82 #define DD_DXAPI_GET_CURRENT_VP_AUTOFLIP_SURFACE (DD_FIRST_DXAPI+14)
83 #define DD_DXAPI_GET_LAST_VP_AUTOFLIP_SURFACE (DD_FIRST_DXAPI+15)
84 #define DD_DXAPI_REGISTER_CALLBACK (DD_FIRST_DXAPI+16)
85 #define DD_DXAPI_UNREGISTER_CALLBACK (DD_FIRST_DXAPI+17)
86 #define DD_DXAPI_GET_POLARITY (DD_FIRST_DXAPI+18)
87 #define DD_DXAPI_OPENVPCAPTUREDEVICE (DD_FIRST_DXAPI+19)
88 #define DD_DXAPI_ADDVPCAPTUREBUFFER (DD_FIRST_DXAPI+20)
89 #define DD_DXAPI_FLUSHVPCAPTUREBUFFERS (DD_FIRST_DXAPI+21)
92 typedef struct _DDCAPBUFFINFO {
95 LARGE_INTEGER liTimeStamp;
97 } DDCAPBUFFINFO, FAR * LPDDCAPBUFFINFO;
99 /* DDADDVPCAPTUREBUFF.dwFlags constants */
100 #define DDADDBUFF_SYSTEMMEMORY 0x0001
101 #define DDADDBUFF_NONLOCALVIDMEM 0x0002
102 #define DDADDBUFF_INVERT 0x0004
104 typedef struct _DDADDVPCAPTUREBUFF {
109 LPDDCAPBUFFINFO lpBuffInfo;
110 } DDADDVPCAPTUREBUFF, FAR * LPDDADDVPCAPTUREBUFF;
112 typedef struct _DDCLOSEHANDLE {
114 } DDCLOSEHANDLE, FAR *LPDDCLOSEHANDLE;
116 typedef struct _DDFLIPOVERLAY {
118 HANDLE hCurrentSurface;
119 HANDLE hTargetSurface;
121 } DDFLIPOVERLAY, FAR *LPDDFLIPOVERLAY;
123 typedef struct _DDFLIPVIDEOPORT {
126 HANDLE hCurrentSurface;
127 HANDLE hTargetSurface;
129 } DDFLIPVIDEOPORT, FAR *LPDDFLIPVIDEOPORT;
131 typedef struct _DDGETAUTOFLIPIN {
134 } DDGETAUTOFLIPIN, FAR *LPDDGETAUTOFLIPIN;
136 typedef struct _DDGETAUTOFLIPOUT {
138 HANDLE hVideoSurface;
141 } DDGETAUTOFLIPOUT, FAR *LPDDGETAUTOFLIPOUT;
143 typedef struct _DDGETPOLARITYIN {
146 } DDGETPOLARITYIN, FAR *LPDDGETPOLARITYIN;
148 typedef struct _DDGETPOLARITYOUT {
151 } DDGETPOLARITYOUT, FAR *LPDDGETPOLARITYOUT;
153 typedef struct _DDGETSURFACESTATEIN {
156 } DDGETSURFACESTATEIN, FAR *LPDDGETSURFACESTATEIN;
158 /* DDGETSURFACESTATEOUT.dwStateCaps/dwStateStatus constants */
159 #define DDSTATE_BOB 0x0001
160 #define DDSTATE_WEAVE 0x0002
161 #define DDSTATE_EXPLICITLY_SET 0x0004
162 #define DDSTATE_SOFTWARE_AUTOFLIP 0x0008
163 #define DDSTATE_SKIPEVENFIELDS 0x0010
165 typedef struct _DDGETSURFACESTATEOUT {
169 } DDGETSURFACESTATEOUT, FAR *LPDDGETSURFACESTATEOUT;
171 typedef struct _DDGETFIELDNUMIN {
174 } DDGETFIELDNUMIN, FAR *LPDDGETFIELDNUMIN;
176 typedef struct _DDGETFIELDNUMOUT {
179 } DDGETFIELDNUMOUT, FAR *LPDDGETFIELDNUMOUT;
181 typedef struct _DDGETKERNELCAPSOUT {
185 } DDGETKERNELCAPSOUT, FAR *LPDDGETKERNELCAPSOUT;
187 typedef struct _DDGETVERSIONNUMBER {
189 DWORD dwMajorVersion;
190 DWORD dwMinorVersion;
191 } DDGETVERSIONNUMBER, FAR *LPDDGETVERSIONNUMBER;
193 typedef struct _DDLOCKIN {
196 } DDLOCKIN, FAR *LPDDLOCKIN;
198 typedef struct _DDLOCKOUT {
206 DWORD dwFormatFourCC;
207 DWORD dwFormatBitCount;
208 _ANONYMOUS_UNION union {
212 _ANONYMOUS_UNION union {
216 _ANONYMOUS_UNION union {
220 } DDLOCKOUT, FAR *LPDDLOCKOUT;
222 /* LPDD_NOTIFYCALLBACK.dwFlags constants */
223 #define DDNOTIFY_DISPLAY_VSYNC 0x0001
224 #define DDNOTIFY_VP_VSYNC 0x0002
225 #define DDNOTIFY_VP_LINE 0x0004
226 #define DDNOTIFY_PRERESCHANGE 0x0008
227 #define DDNOTIFY_POSTRESCHANGE 0x0010
228 #define DDNOTIFY_PREDOSBOX 0x0020
229 #define DDNOTIFY_POSTDOSBOX 0x0040
230 #define DDNOTIFY_CLOSEDIRECTDRAW 0x0080
231 #define DDNOTIFY_CLOSESURFACE 0x0100
232 #define DDNOTIFY_CLOSEVIDEOPORT 0x0200
233 #define DDNOTIFY_CLOSECAPTURE 0x0400
235 typedef ULONG (FAR PASCAL *LPDD_NOTIFYCALLBACK)(
241 typedef struct _DDOPENDIRECTDRAWIN {
242 ULONG_PTR dwDirectDrawHandle;
243 LPDD_NOTIFYCALLBACK pfnDirectDrawClose;
245 } DDOPENDIRECTDRAWIN, FAR *LPDDOPENDIRECTDRAWIN;
247 typedef struct _DDOPENDIRECTDRAWOUT {
250 } DDOPENDIRECTDRAWOUT, FAR *LPDDOPENDIRECTDRAWOUT;
252 typedef struct _DDOPENSURFACEIN {
254 ULONG_PTR dwSurfaceHandle;
255 LPDD_NOTIFYCALLBACK pfnSurfaceClose;
257 } DDOPENSURFACEIN, FAR *LPDDOPENSURFACEIN;
259 typedef struct _DDOPENSURFACEOUT {
262 } DDOPENSURFACEOUT, FAR *LPDDOPENSURFACEOUT;
264 typedef struct _DDOPENVIDEOPORTIN {
266 ULONG dwVideoPortHandle;
267 LPDD_NOTIFYCALLBACK pfnVideoPortClose;
269 } DDOPENVIDEOPORTIN, FAR *LPDDOPENVIDEOPORTIN;
271 typedef struct _DDOPENVIDEOPORTOUT {
274 } DDOPENVIDEOPORTOUT, FAR *LPDDOPENVIDEOPORTOUT;
276 /* DDOPENVPCAPTUREDEVICEIN.dwFlags constants */
277 #define DDOPENCAPTURE_VIDEO 0x0001
278 #define DDOPENCAPTURE_VBI 0x0002
280 typedef struct _DDOPENVPCAPTUREDEVICEIN {
285 DWORD dwCaptureEveryNFields;
286 LPDD_NOTIFYCALLBACK pfnCaptureClose;
289 } DDOPENVPCAPTUREDEVICEIN, FAR * LPDDOPENVPCAPTUREDEVICEIN;
291 typedef struct _DDOPENVPCAPTUREDEVICEOUT {
294 } DDOPENVPCAPTUREDEVICEOUT, FAR * LPDDOPENVPCAPTUREDEVICEOUT;
296 /* DDREGISTERCALLBACK.dwEvents constants */
297 #define DDEVENT_DISPLAY_VSYNC 0x0001
298 #define DDEVENT_VP_VSYNC 0x0002
299 #define DDEVENT_VP_LINE 0x0004
300 #define DDEVENT_PRERESCHANGE 0x0008
301 #define DDEVENT_POSTRESCHANGE 0x0010
302 #define DDEVENT_PREDOSBOX 0x0020
303 #define DDEVENT_POSTDOSBOX 0x0040
305 typedef struct _DDREGISTERCALLBACK {
308 LPDD_NOTIFYCALLBACK pfnCallback;
312 } DDREGISTERCALLBACK, FAR *LPDDREGISTERCALLBACK;
314 typedef struct _DDSETSURFACETATE {
319 } DDSETSURFACESTATE, FAR *LPDDSETSURFACESTATE;
321 typedef struct _DDSETFIELDNUM {
325 } DDSETFIELDNUM, FAR *LPDDSETFIELDNUM;
327 typedef struct _DDSETSKIPFIELD {
331 } DDSETSKIPFIELD, FAR *LPDDSETSKIPFIELD;
337 #endif /* __DDKMAPI_H */