4 * DirectDraw support for DxApi function
6 * This file is part of the w32api package.
9 * Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
11 * THIS SOFTWARE IS NOT COPYRIGHTED
13 * This source code is offered for use in the public domain. You may
14 * use, modify or distribute it freely.
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.
27 #pragma GCC system_header
35 #define DXAPI DECLSPEC_EXPORT
37 #define DXAPI DECLSPEC_IMPORT
44 IN DWORD dwFunctionNum
,
45 IN LPVOID lpvInBuffer
,
47 OUT LPVOID lpvOutBuffer
,
48 OUT DWORD cbOutBuffer
);
50 typedef DWORD (FAR PASCAL
*LPDXAPI
)(
58 #define DXAPI_MAJORVERSION 1
59 #define DXAPI_MINORVERSION 0
61 #define DD_FIRST_DXAPI 0x500
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)
87 typedef struct _DDCAPBUFFINFO
{
90 LARGE_INTEGER liTimeStamp
;
92 } DDCAPBUFFINFO
, FAR
* LPDDCAPBUFFINFO
;
94 /* DDADDVPCAPTUREBUFF.dwFlags constants */
95 #define DDADDBUFF_SYSTEMMEMORY 0x0001
96 #define DDADDBUFF_NONLOCALVIDMEM 0x0002
97 #define DDADDBUFF_INVERT 0x0004
99 typedef struct _DDADDVPCAPTUREBUFF
{
104 LPDDCAPBUFFINFO lpBuffInfo
;
105 } DDADDVPCAPTUREBUFF
, FAR
* LPDDADDVPCAPTUREBUFF
;
107 typedef struct _DDCLOSEHANDLE
{
109 } DDCLOSEHANDLE
, FAR
*LPDDCLOSEHANDLE
;
111 typedef struct _DDFLIPOVERLAY
{
113 HANDLE hCurrentSurface
;
114 HANDLE hTargetSurface
;
116 } DDFLIPOVERLAY
, FAR
*LPDDFLIPOVERLAY
;
118 typedef struct _DDFLIPVIDEOPORT
{
121 HANDLE hCurrentSurface
;
122 HANDLE hTargetSurface
;
124 } DDFLIPVIDEOPORT
, FAR
*LPDDFLIPVIDEOPORT
;
126 typedef struct _DDGETAUTOFLIPIN
{
129 } DDGETAUTOFLIPIN
, FAR
*LPDDGETAUTOFLIPIN
;
131 typedef struct _DDGETAUTOFLIPOUT
{
133 HANDLE hVideoSurface
;
136 } DDGETAUTOFLIPOUT
, FAR
*LPDDGETAUTOFLIPOUT
;
138 typedef struct _DDGETPOLARITYIN
{
141 } DDGETPOLARITYIN
, FAR
*LPDDGETPOLARITYIN
;
143 typedef struct _DDGETPOLARITYOUT
{
146 } DDGETPOLARITYOUT
, FAR
*LPDDGETPOLARITYOUT
;
148 typedef struct _DDGETSURFACESTATEIN
{
151 } DDGETSURFACESTATEIN
, FAR
*LPDDGETSURFACESTATEIN
;
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
160 typedef struct _DDGETSURFACESTATEOUT
{
164 } DDGETSURFACESTATEOUT
, FAR
*LPDDGETSURFACESTATEOUT
;
166 typedef struct _DDGETFIELDNUMIN
{
169 } DDGETFIELDNUMIN
, FAR
*LPDDGETFIELDNUMIN
;
171 typedef struct _DDGETFIELDNUMOUT
{
174 } DDGETFIELDNUMOUT
, FAR
*LPDDGETFIELDNUMOUT
;
176 typedef struct _DDGETKERNELCAPSOUT
{
180 } DDGETKERNELCAPSOUT
, FAR
*LPDDGETKERNELCAPSOUT
;
182 typedef struct _DDGETVERSIONNUMBER
{
184 DWORD dwMajorVersion
;
185 DWORD dwMinorVersion
;
186 } DDGETVERSIONNUMBER
, FAR
*LPDDGETVERSIONNUMBER
;
188 typedef struct _DDLOCKIN
{
191 } DDLOCKIN
, FAR
*LPDDLOCKIN
;
193 typedef struct _DDLOCKOUT
{
201 DWORD dwFormatFourCC
;
202 DWORD dwFormatBitCount
;
203 _ANONYMOUS_UNION
union {
207 _ANONYMOUS_UNION
union {
211 _ANONYMOUS_UNION
union {
215 } DDLOCKOUT
, FAR
*LPDDLOCKOUT
;
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
230 typedef ULONG (FAR PASCAL
*LPDD_NOTIFYCALLBACK
)(
236 typedef struct _DDOPENDIRECTDRAWIN
{
237 ULONG_PTR dwDirectDrawHandle
;
238 LPDD_NOTIFYCALLBACK pfnDirectDrawClose
;
240 } DDOPENDIRECTDRAWIN
, FAR
*LPDDOPENDIRECTDRAWIN
;
242 typedef struct _DDOPENDIRECTDRAWOUT
{
245 } DDOPENDIRECTDRAWOUT
, FAR
*LPDDOPENDIRECTDRAWOUT
;
247 typedef struct _DDOPENSURFACEIN
{
249 ULONG_PTR dwSurfaceHandle
;
250 LPDD_NOTIFYCALLBACK pfnSurfaceClose
;
252 } DDOPENSURFACEIN
, FAR
*LPDDOPENSURFACEIN
;
254 typedef struct _DDOPENSURFACEOUT
{
257 } DDOPENSURFACEOUT
, FAR
*LPDDOPENSURFACEOUT
;
259 typedef struct _DDOPENVIDEOPORTIN
{
261 ULONG dwVideoPortHandle
;
262 LPDD_NOTIFYCALLBACK pfnVideoPortClose
;
264 } DDOPENVIDEOPORTIN
, FAR
*LPDDOPENVIDEOPORTIN
;
266 typedef struct _DDOPENVIDEOPORTOUT
{
269 } DDOPENVIDEOPORTOUT
, FAR
*LPDDOPENVIDEOPORTOUT
;
271 /* DDOPENVPCAPTUREDEVICEIN.dwFlags constants */
272 #define DDOPENCAPTURE_VIDEO 0x0001
273 #define DDOPENCAPTURE_VBI 0x0002
275 typedef struct _DDOPENVPCAPTUREDEVICEIN
{
280 DWORD dwCaptureEveryNFields
;
281 LPDD_NOTIFYCALLBACK pfnCaptureClose
;
284 } DDOPENVPCAPTUREDEVICEIN
, FAR
* LPDDOPENVPCAPTUREDEVICEIN
;
286 typedef struct _DDOPENVPCAPTUREDEVICEOUT
{
289 } DDOPENVPCAPTUREDEVICEOUT
, FAR
* LPDDOPENVPCAPTUREDEVICEOUT
;
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
300 typedef struct _DDREGISTERCALLBACK
{
303 LPDD_NOTIFYCALLBACK pfnCallback
;
307 } DDREGISTERCALLBACK
, FAR
*LPDDREGISTERCALLBACK
;
309 typedef struct _DDSETSURFACETATE
{
314 } DDSETSURFACESTATE
, FAR
*LPDDSETSURFACESTATE
;
316 typedef struct _DDSETFIELDNUM
{
320 } DDSETFIELDNUM
, FAR
*LPDDSETFIELDNUM
;
322 typedef struct _DDSETSKIPFIELD
{
326 } DDSETSKIPFIELD
, FAR
*LPDDSETSKIPFIELD
;
332 #endif /* __DDKMAPI_H */