source: Daodan/MSYS2/mingw32/i686-w64-mingw32/include/ddrawi.h@ 1194

Last change on this file since 1194 was 1166, checked in by rossy, 3 years ago

Daodan: Replace MinGW build env with an up-to-date MSYS2 env

File size: 35.5 KB
RevLine 
[1166]1/*
2 * DirectDraw driver interface
3 * (DirectX 7 version)
4 *
5 * Copyright (C) 2001 Ove Kaaven
6 *
7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public
9 * License as published by the Free Software Foundation; either
10 * version 2.1 of the License, or (at your option) any later version.
11 *
12 * This library is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Lesser General Public License for more details.
16 *
17 * You should have received a copy of the GNU Lesser General Public
18 * License along with this library; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
20 */
21
22#ifndef __DDRAWI_INCLUDED__
23#define __DDRAWI_INCLUDED__
24
25#include <_mingw_dxhelper.h>
26#include <ddraw.h>
27#include <dciddi.h> /* the DD HAL is layered onto DCI escapes */
28
29#ifdef __cplusplus
30extern "C" {
31#endif
32
33typedef struct _DDVIDEOPORTCAPS *LPDDVIDEOPORTCAPS; /* should be in dvp.h */
34typedef struct _DDKERNELCAPS *LPDDKERNELCAPS; /* should be in ddkernel.h */
35typedef struct _VMEMHEAP *LPVMEMHEAP; /* should be in dmemmgr.h */
36
37#define DDAPI WINAPI
38
39/* the DirectDraw versions */
40#define DD_VERSION 0x0200 /* compatibility version */
41#define DD_RUNTIME_VERSION 0x0700 /* actual version */
42
43/* the HAL version returned from QUERYESCSUPPORT - DCICOMMAND */
44#define DD_HAL_VERSION 0x0100
45
46/* more DCICOMMAND escapes */
47#define DDCREATEDRIVEROBJECT 10
48#define DDGET32BITDRIVERNAME 11
49#define DDNEWCALLBACKFNS 12
50#define DDVERSIONINFO 13
51
52#define MAX_DRIVER_NAME CCHDEVICENAME
53
54/*****************************************************************************
55 * Initialization stuff
56 */
57typedef struct {
58 char szName[260];
59 char szEntryPoint[64];
60 DWORD dwContext;
61} DD32BITDRIVERDATA,*LPDD32BITDRIVERDATA;
62
63typedef struct {
64 DWORD dwHALVersion;
65 ULONG_PTR dwReserved1;
66 ULONG_PTR dwReserved2;
67} DDVERSIONDATA,*LPDDVERSIONDATA;
68
69typedef DWORD (PASCAL *LPDD32BITDRIVERINIT)(DWORD dwContext);
70
71/* pointer to video memory */
72typedef ULONG_PTR FLATPTR;
73
74/* predeclare some structures */
75typedef struct _DDHALINFO *LPDDHALINFO;
76typedef struct _DDRAWI_DIRECTDRAW_INT *LPDDRAWI_DIRECTDRAW_INT;
77typedef struct _DDRAWI_DIRECTDRAW_LCL *LPDDRAWI_DIRECTDRAW_LCL;
78typedef struct _DDRAWI_DIRECTDRAW_GBL *LPDDRAWI_DIRECTDRAW_GBL;
79typedef struct _DDRAWI_DDRAWSURFACE_INT *LPDDRAWI_DDRAWSURFACE_INT;
80typedef struct _DDRAWI_DDRAWSURFACE_LCL *LPDDRAWI_DDRAWSURFACE_LCL;
81typedef struct _DDRAWI_DDRAWSURFACE_GBL *LPDDRAWI_DDRAWSURFACE_GBL;
82typedef struct _DDRAWI_DDRAWSURFACE_MORE *LPDDRAWI_DDRAWSURFACE_MORE;
83typedef struct _DDRAWI_DDRAWSURFACE_GBL_MORE *LPDDRAWI_DDRAWSURFACE_GBL_MORE;
84typedef struct _DDRAWI_DDRAWPALETTE_INT *LPDDRAWI_DDRAWPALETTE_INT;
85typedef struct _DDRAWI_DDRAWPALETTE_LCL *LPDDRAWI_DDRAWPALETTE_LCL;
86typedef struct _DDRAWI_DDRAWPALETTE_GBL *LPDDRAWI_DDRAWPALETTE_GBL;
87typedef struct _DDRAWI_DDRAWCLIPPER_INT *LPDDRAWI_DDRAWCLIPPER_INT;
88typedef struct _DDRAWI_DDRAWCLIPPER_LCL *LPDDRAWI_DDRAWCLIPPER_LCL;
89typedef struct _DDRAWI_DDRAWCLIPPER_GBL *LPDDRAWI_DDRAWCLIPPER_GBL;
90typedef struct _DDRAWI_DDVIDEOPORT_INT *LPDDRAWI_DDVIDEOPORT_INT;
91typedef struct _DDRAWI_DDVIDEOPORT_LCL *LPDDRAWI_DDVIDEOPORT_LCL;
92typedef struct _DDRAWI_DDMOTIONCOMP_INT *LPDDRAWI_DDMOTIONCOMP_INT;
93typedef struct _DDRAWI_DDMOTIONCOMP_LCL *LPDDRAWI_DDMOTIONCOMP_LCL;
94
95/* structure GUIDs for GetDriverInfo */
96DEFINE_GUID( GUID_MiscellaneousCallbacks, 0xEFD60CC0,0x49E7,0x11D0,0x88,0x9D,0x00,0xAA,0x00,0xBB,0xB7,0x6A );
97/* ...videport stuff here... */
98DEFINE_GUID( GUID_D3DCallbacks2, 0x0BA584E1,0x70B6,0x11D0,0x88,0x9D,0x00,0xAA,0x00,0xBB,0xB7,0x6A );
99DEFINE_GUID( GUID_D3DCallbacks3, 0xDDF41230,0xEC0A,0x11D0,0xA9,0xB6,0x00,0xAA,0x00,0xC0,0x99,0x3E );
100DEFINE_GUID( GUID_NonLocalVidMemCaps, 0x86C4FA80,0x8D84,0x11D0,0x94,0xE8,0x00,0xC0,0x4F,0xC3,0x41,0x37 );
101/* ...kernel stuff here... */
102DEFINE_GUID( GUID_D3DExtendedCaps, 0x7DE41F80,0x9D93,0x11D0,0x89,0xAB,0x00,0xA0,0xC9,0x05,0x41,0x29 );
103DEFINE_GUID( GUID_ZPixelFormats, 0x93869880,0x36CF,0x11D1,0x9B,0x1B,0x00,0xAA,0x00,0xBB,0xB8,0xAE );
104DEFINE_GUID( GUID_DDMoreSurfaceCaps, 0x3B8A0466,0xF269,0x11D1,0x88,0x0B,0x00,0xC0,0x4F,0xD9,0x30,0xC5 );
105DEFINE_GUID( GUID_DDStereoMode, 0xF828169C,0xA8E8,0x11D2,0xA1,0xF2,0x00,0xA0,0xC9,0x83,0xEA,0xF6 );
106/* ...more stuff here... */
107DEFINE_GUID(GUID_D3DParseUnknownCommandCallback,0x2E04FFA0,0x98E4,0x11D1,0x8C,0xE1,0x00,0xA0,0xC9,0x06,0x29,0xA8 );
108/* ...motioncomp stuff here... */
109DEFINE_GUID( GUID_Miscellaneous2Callbacks, 0x406B2F00,0x3E5A,0x11D1,0xB6,0x40,0x00,0xAA,0x00,0xA1,0xF9,0x6A );
110
111/*****************************************************************************
112 * driver->ddraw callbacks
113 */
114typedef BOOL (DDAPI *LPDDHAL_SETINFO)(LPDDHALINFO lpDDHalInfo, BOOL reset);
115typedef FLATPTR (DDAPI *LPDDHAL_VIDMEMALLOC)(LPDDRAWI_DIRECTDRAW_GBL lpDD, int heap, DWORD dwWidth, DWORD dwHeight);
116typedef void (DDAPI *LPDDHAL_VIDMEMFREE)(LPDDRAWI_DIRECTDRAW_GBL lpDD, int heap, FLATPTR fpMem);
117
118typedef struct {
119 DWORD dwSize;
120 LPDDHAL_SETINFO lpSetInfo;
121 LPDDHAL_VIDMEMALLOC lpVidMemAlloc;
122 LPDDHAL_VIDMEMFREE lpVidMemFree;
123} DDHALDDRAWFNS,*LPDDHALDDRAWFNS;
124
125/*****************************************************************************
126 * mode info structure
127 */
128typedef struct _DDHALMODEINFO {
129 DWORD dwWidth;
130 DWORD dwHeight;
131 LONG lPitch;
132 DWORD dwBPP;
133 WORD wFlags;
134 WORD wRefreshRate;
135 DWORD dwRBitMask;
136 DWORD dwGBitMask;
137 DWORD dwBBitMask;
138 DWORD dwAlphaBitMask;
139} DDHALMODEINFO,*LPDDHALMODEINFO;
140
141#define DDMODEINFO_PALETTIZED 0x0001
142#define DDMODEINFO_MODEX 0x0002
143#define DDMODEINFO_UNSUPPORTED 0x0004
144#define DDMODEINFO_STANDARDVGA 0x0008
145#define DDMODEINFO_MAXREFRESH 0x0010
146#define DDMODEINFO_STEREO 0x0020
147
148/*****************************************************************************
149 * video memory info structure
150 */
151typedef struct _VIDMEM {
152 DWORD dwFlags;
153 FLATPTR fpStart;
154 union {
155 FLATPTR fpEnd;
156 DWORD dwWidth;
157 } DUMMYUNIONNAME1;
158 DDSCAPS ddsCaps;
159 DDSCAPS ddsCapsAlt;
160 union {
161 LPVMEMHEAP lpHeap;
162 DWORD dwHeight;
163 } DUMMYUNIONNAME2;
164} VIDMEM,*LPVIDMEM;
165
166#define VIDMEM_ISLINEAR 0x00000001
167#define VIDMEM_ISRECTANGULAR 0x00000002
168#define VIDMEM_ISHEAP 0x00000004
169#define VIDMEM_ISNONLOCAL 0x00000008
170#define VIDMEM_ISWC 0x00000010
171#define VIDMEM_HEAPDISABLED 0x00000020
172
173typedef struct _VIDMEMINFO {
174 FLATPTR fpPrimary;
175 DWORD dwFlags;
176 DWORD dwDisplayWidth;
177 DWORD dwDisplayHeight;
178 LONG lDisplayPitch;
179 DDPIXELFORMAT ddpfDisplay;
180 DWORD dwOffscreenAlign;
181 DWORD dwOverlayAlign;
182 DWORD dwTextureAlign;
183 DWORD dwZBufferAlign;
184 DWORD dwAlphaAlign;
185 DWORD dwNumHeaps;
186 LPVIDMEM pvmList;
187} VIDMEMINFO,*LPVIDMEMINFO;
188
189typedef struct _HEAPALIAS {
190 FLATPTR fpVidMem;
191 LPVOID lpAlias;
192 DWORD dwAliasSize;
193} HEAPALIAS,*LPHEAPALIAS;
194
195typedef struct _HEAPALIASINFO {
196 DWORD dwRefCnt;
197 DWORD dwFlags;
198 DWORD dwNumHeaps;
199 LPHEAPALIAS lpAliases;
200} HEAPALIASINFO,*LPHEAPALIASINFO;
201
202#define HEAPALIASINFO_MAPPEDREAL 0x00000001
203#define HEAPALIASINFO_MAPPEDDUMMY 0x00000002
204
205/*****************************************************************************
206 * capabilities structures
207 */
208typedef struct _DDCORECAPS {
209 DWORD dwSize;
210 DWORD dwCaps;
211 DWORD dwCaps2;
212 DWORD dwCKeyCaps;
213 DWORD dwFXCaps;
214 DWORD dwFXAlphaCaps;
215 DWORD dwPalCaps;
216 DWORD dwSVCaps;
217 DWORD dwAlphaBltConstBitDepths;
218 DWORD dwAlphaBltPixelBitDepths;
219 DWORD dwAlphaBltSurfaceBitDepths;
220 DWORD dwAlphaOverlayConstBitDepths;
221 DWORD dwAlphaOverlayPixelBitDepths;
222 DWORD dwAlphaOverlaySurfaceBitDepths;
223 DWORD dwZBufferBitDepths;
224 DWORD dwVidMemTotal;
225 DWORD dwVidMemFree;
226 DWORD dwMaxVisibleOverlays;
227 DWORD dwCurrVisibleOverlays;
228 DWORD dwNumFourCCCodes;
229 DWORD dwAlignBoundarySrc;
230 DWORD dwAlignSizeSrc;
231 DWORD dwAlignBoundaryDest;
232 DWORD dwAlignSizeDest;
233 DWORD dwAlignStrideAlign;
234 DWORD dwRops[DD_ROP_SPACE];
235 DDSCAPS ddsCaps;
236 DWORD dwMinOverlayStretch;
237 DWORD dwMaxOverlayStretch;
238 DWORD dwMinLiveVideoStretch;
239 DWORD dwMaxLiveVideoStretch;
240 DWORD dwMinHwCodecStretch;
241 DWORD dwMaxHwCodecStretch;
242 DWORD dwReserved1;
243 DWORD dwReserved2;
244 DWORD dwReserved3;
245 DWORD dwSVBCaps;
246 DWORD dwSVBCKeyCaps;
247 DWORD dwSVBFXCaps;
248 DWORD dwSVBRops[DD_ROP_SPACE];
249 DWORD dwVSBCaps;
250 DWORD dwVSBCKeyCaps;
251 DWORD dwVSBFXCaps;
252 DWORD dwVSBRops[DD_ROP_SPACE];
253 DWORD dwSSBCaps;
254 DWORD dwSSBCKeyCaps;
255 DWORD dwSSBFXCaps;
256 DWORD dwSSBRops[DD_ROP_SPACE];
257 DWORD dwMaxVideoPorts;
258 DWORD dwCurrVideoPorts;
259 DWORD dwSVBCaps2;
260} DDCORECAPS,*LPDDCORECAPS;
261
262typedef struct _DDNONLOCALVIDMEMCAPS {
263 DWORD dwSize;
264 DWORD dwNLVBCaps;
265 DWORD dwNLVBCaps2;
266 DWORD dwNLVBCKeyCaps;
267 DWORD dwNLVBFXCaps;
268 DWORD dwNLVBRops[DD_ROP_SPACE];
269} DDNONLOCALVIDMEMCAPS,*LPDDNONLOCALVIDMEMCAPS;
270
271#define DDSCAPS_EXECUTEBUFFER DDSCAPS_RESERVED2
272#define DDSCAPS2_VERTEXBUFFER DDSCAPS2_RESERVED1
273#define DDSCAPS2_COMMANDBUFFER DDSCAPS2_RESERVED2
274
275/*****************************************************************************
276 * ddraw->driver callbacks
277 */
278#define DDHAL_DRIVER_NOTHANDLED 0
279#define DDHAL_DRIVER_HANDLED 1
280#define DDHAL_DRIVER_NOCKEYHW 2
281
282typedef struct _DDHAL_DESTROYDRIVERDATA *LPDDHAL_DESTROYDRIVERDATA;
283typedef struct _DDHAL_CREATESURFACEDATA *LPDDHAL_CREATESURFACEDATA;
284typedef struct _DDHAL_DRVSETCOLORKEYDATA *LPDDHAL_DRVSETCOLORKEYDATA;
285typedef struct _DDHAL_SETMODEDATA *LPDDHAL_SETMODEDATA;
286typedef struct _DDHAL_WAITFORVERTICALBLANKDATA *LPDDHAL_WAITFORVERTICALBLANKDATA;
287typedef struct _DDHAL_CANCREATESURFACEDATA *LPDDHAL_CANCREATESURFACEDATA;
288typedef struct _DDHAL_CREATEPALETTEDATA *LPDDHAL_CREATEPALETTEDATA;
289typedef struct _DDHAL_GETSCANLINEDATA *LPDDHAL_GETSCANLINEDATA;
290typedef struct _DDHAL_SETEXCLUSIVEMODEDATA *LPDDHAL_SETEXCLUSIVEMODEDATA;
291typedef struct _DDHAL_FLIPTOGDISURFACEDATA *LPDDHAL_FLIPTOGDISURFACEDATA;
292
293typedef DWORD (PASCAL *LPDDHAL_DESTROYDRIVER) (LPDDHAL_DESTROYDRIVERDATA);
294typedef DWORD (PASCAL *LPDDHAL_CREATESURFACE) (LPDDHAL_CREATESURFACEDATA);
295typedef DWORD (PASCAL *LPDDHAL_SETCOLORKEY) (LPDDHAL_DRVSETCOLORKEYDATA);
296typedef DWORD (PASCAL *LPDDHAL_SETMODE) (LPDDHAL_SETMODEDATA);
297typedef DWORD (PASCAL *LPDDHAL_WAITFORVERTICALBLANK)(LPDDHAL_WAITFORVERTICALBLANKDATA);
298typedef DWORD (PASCAL *LPDDHAL_CANCREATESURFACE) (LPDDHAL_CANCREATESURFACEDATA );
299typedef DWORD (PASCAL *LPDDHAL_CREATEPALETTE) (LPDDHAL_CREATEPALETTEDATA);
300typedef DWORD (PASCAL *LPDDHAL_GETSCANLINE) (LPDDHAL_GETSCANLINEDATA);
301typedef DWORD (PASCAL *LPDDHAL_SETEXCLUSIVEMODE) (LPDDHAL_SETEXCLUSIVEMODEDATA);
302typedef DWORD (PASCAL *LPDDHAL_FLIPTOGDISURFACE) (LPDDHAL_FLIPTOGDISURFACEDATA);
303
304typedef struct _DDHAL_DDCALLBACKS {
305 DWORD dwSize;
306 DWORD dwFlags;
307 LPDDHAL_DESTROYDRIVER DestroyDriver;
308 LPDDHAL_CREATESURFACE CreateSurface;
309 LPDDHAL_SETCOLORKEY SetColorKey;
310 LPDDHAL_SETMODE SetMode;
311 LPDDHAL_WAITFORVERTICALBLANK WaitForVerticalBlank;
312 LPDDHAL_CANCREATESURFACE CanCreateSurface;
313 LPDDHAL_CREATEPALETTE CreatePalette;
314 LPDDHAL_GETSCANLINE GetScanLine;
315 /* DirectX 2 */
316 LPDDHAL_SETEXCLUSIVEMODE SetExclusiveMode;
317 LPDDHAL_FLIPTOGDISURFACE FlipToGDISurface;
318} DDHAL_DDCALLBACKS,*LPDDHAL_DDCALLBACKS;
319
320typedef struct _DDHAL_DESTROYSURFACEDATA *LPDDHAL_DESTROYSURFACEDATA;
321typedef struct _DDHAL_FLIPDATA *LPDDHAL_FLIPDATA;
322typedef struct _DDHAL_SETCLIPLISTDATA *LPDDHAL_SETCLIPLISTDATA;
323typedef struct _DDHAL_LOCKDATA *LPDDHAL_LOCKDATA;
324typedef struct _DDHAL_UNLOCKDATA *LPDDHAL_UNLOCKDATA;
325typedef struct _DDHAL_BLTDATA *LPDDHAL_BLTDATA;
326typedef struct _DDHAL_SETCOLORKEYDATA *LPDDHAL_SETCOLORKEYDATA;
327typedef struct _DDHAL_ADDATTACHEDSURFACEDATA *LPDDHAL_ADDATTACHEDSURFACEDATA;
328typedef struct _DDHAL_GETBLTSTATUSDATA *LPDDHAL_GETBLTSTATUSDATA;
329typedef struct _DDHAL_GETFLIPSTATUSDATA *LPDDHAL_GETFLIPSTATUSDATA;
330typedef struct _DDHAL_UPDATEOVERLAYDATA *LPDDHAL_UPDATEOVERLAYDATA;
331typedef struct _DDHAL_SETOVERLAYPOSITIONDATA *LPDDHAL_SETOVERLAYPOSITIONDATA;
332typedef struct _DDHAL_SETPALETTEDATA *LPDDHAL_SETPALETTEDATA;
333
334typedef DWORD (PASCAL *LPDDHALSURFCB_DESTROYSURFACE) (LPDDHAL_DESTROYSURFACEDATA);
335typedef DWORD (PASCAL *LPDDHALSURFCB_FLIP) (LPDDHAL_FLIPDATA);
336typedef DWORD (PASCAL *LPDDHALSURFCB_SETCLIPLIST) (LPDDHAL_SETCLIPLISTDATA);
337typedef DWORD (PASCAL *LPDDHALSURFCB_LOCK) (LPDDHAL_LOCKDATA);
338typedef DWORD (PASCAL *LPDDHALSURFCB_UNLOCK) (LPDDHAL_UNLOCKDATA);
339typedef DWORD (PASCAL *LPDDHALSURFCB_BLT) (LPDDHAL_BLTDATA);
340typedef DWORD (PASCAL *LPDDHALSURFCB_SETCOLORKEY) (LPDDHAL_SETCOLORKEYDATA);
341typedef DWORD (PASCAL *LPDDHALSURFCB_ADDATTACHEDSURFACE)(LPDDHAL_ADDATTACHEDSURFACEDATA);
342typedef DWORD (PASCAL *LPDDHALSURFCB_GETBLTSTATUS) (LPDDHAL_GETBLTSTATUSDATA);
343typedef DWORD (PASCAL *LPDDHALSURFCB_GETFLIPSTATUS) (LPDDHAL_GETFLIPSTATUSDATA);
344typedef DWORD (PASCAL *LPDDHALSURFCB_UPDATEOVERLAY) (LPDDHAL_UPDATEOVERLAYDATA);
345typedef DWORD (PASCAL *LPDDHALSURFCB_SETOVERLAYPOSITION)(LPDDHAL_SETOVERLAYPOSITIONDATA);
346typedef DWORD (PASCAL *LPDDHALSURFCB_SETPALETTE) (LPDDHAL_SETPALETTEDATA);
347
348typedef struct _DDHAL_DDSURFACECALLBACKS {
349 DWORD dwSize;
350 DWORD dwFlags;
351 LPDDHALSURFCB_DESTROYSURFACE DestroySurface;
352 LPDDHALSURFCB_FLIP Flip;
353 LPDDHALSURFCB_SETCLIPLIST SetClipList;
354 LPDDHALSURFCB_LOCK Lock;
355 LPDDHALSURFCB_UNLOCK Unlock;
356 LPDDHALSURFCB_BLT Blt;
357 LPDDHALSURFCB_SETCOLORKEY SetColorKey;
358 LPDDHALSURFCB_ADDATTACHEDSURFACE AddAttachedSurface;
359 LPDDHALSURFCB_GETBLTSTATUS GetBltStatus;
360 LPDDHALSURFCB_GETFLIPSTATUS GetFlipStatus;
361 LPDDHALSURFCB_UPDATEOVERLAY UpdateOverlay;
362 LPDDHALSURFCB_SETOVERLAYPOSITION SetOverlayPosition;
363 LPVOID reserved4;
364 LPDDHALSURFCB_SETPALETTE SetPalette;
365} DDHAL_DDSURFACECALLBACKS,*LPDDHAL_DDSURFACECALLBACKS;
366
367typedef struct _DDHAL_DESTROYPALETTEDATA *LPDDHAL_DESTROYPALETTEDATA;
368typedef struct _DDHAL_SETENTRIESDATA *LPDDHAL_SETENTRIESDATA;
369
370typedef DWORD (PASCAL *LPDDHALPALCB_DESTROYPALETTE)(LPDDHAL_DESTROYPALETTEDATA);
371typedef DWORD (PASCAL *LPDDHALPALCB_SETENTRIES) (LPDDHAL_SETENTRIESDATA);
372
373typedef struct _DDHAL_DDPALETTECALLBACKS {
374 DWORD dwSize;
375 DWORD dwFlags;
376 LPDDHALPALCB_DESTROYPALETTE DestroyPalette;
377 LPDDHALPALCB_SETENTRIES SetEntries;
378} DDHAL_DDPALETTECALLBACKS,*LPDDHAL_DDPALETTECALLBACKS;
379
380typedef DWORD (PASCAL *LPDDHALEXEBUFCB_CANCREATEEXEBUF)(LPDDHAL_CANCREATESURFACEDATA);
381typedef DWORD (PASCAL *LPDDHALEXEBUFCB_CREATEEXEBUF) (LPDDHAL_CREATESURFACEDATA);
382typedef DWORD (PASCAL *LPDDHALEXEBUFCB_DESTROYEXEBUF) (LPDDHAL_DESTROYSURFACEDATA);
383typedef DWORD (PASCAL *LPDDHALEXEBUFCB_LOCKEXEBUF) (LPDDHAL_LOCKDATA);
384typedef DWORD (PASCAL *LPDDHALEXEBUFCB_UNLOCKEXEBUF) (LPDDHAL_UNLOCKDATA);
385
386typedef struct _DDHAL_DDEXEBUFCALLBACKS {
387 DWORD dwSize;
388 DWORD dwFlags;
389 LPDDHALEXEBUFCB_CANCREATEEXEBUF CanCreateExecuteBuffer;
390 LPDDHALEXEBUFCB_CREATEEXEBUF CreateExecuteBuffer;
391 LPDDHALEXEBUFCB_DESTROYEXEBUF DestroyExecuteBuffer;
392 LPDDHALEXEBUFCB_LOCKEXEBUF LockExecuteBuffer;
393 LPDDHALEXEBUFCB_UNLOCKEXEBUF UnlockExecuteBuffer;
394} DDHAL_DDEXEBUFCALLBACKS,*LPDDHAL_DDEXEBUFCALLBACKS;
395
396typedef struct _DDHAL_GETAVAILDRIVERMEMORYDATA *LPDDHAL_GETAVAILDRIVERMEMORYDATA;
397typedef struct _DDHAL_UPDATENONLOCALHEAPDATA *LPDDHAL_UPDATENONLOCALHEAPDATA;
398typedef struct _DDHAL_GETHEAPALIGNMENTDATA *LPDDHAL_GETHEAPALIGNMENTDATA;
399
400typedef DWORD (PASCAL *LPDDHAL_GETAVAILDRIVERMEMORY)(LPDDHAL_GETAVAILDRIVERMEMORYDATA);
401typedef DWORD (PASCAL *LPDDHAL_UPDATENONLOCALHEAP) (LPDDHAL_UPDATENONLOCALHEAPDATA);
402typedef DWORD (PASCAL *LPDDHAL_GETHEAPALIGNMENT) (LPDDHAL_GETHEAPALIGNMENTDATA);
403
404typedef struct _DDHAL_DDMISCELLANEOUSCALLBACKS {
405 DWORD dwSize;
406 DWORD dwFlags;
407 LPDDHAL_GETAVAILDRIVERMEMORY GetAvailDriverMemory;
408 LPDDHAL_UPDATENONLOCALHEAP UpdateNonLocalHeap;
409 LPDDHAL_GETHEAPALIGNMENT GetHeapAlignment;
410 LPDDHALSURFCB_GETBLTSTATUS GetSysmemBltStatus;
411} DDHAL_DDMISCELLANEOUSCALLBACKS,*LPDDHAL_DDMISCELLANEOUSCALLBACKS;
412
413typedef struct _DDHAL_CREATESURFACEEXDATA *LPDDHAL_CREATESURFACEEXDATA;
414typedef struct _DDHAL_GETDRIVERSTATEDATA *LPDDHAL_GETDRIVERSTATEDATA;
415typedef struct _DDHAL_DESTROYDDLOCALDATA *LPDDHAL_DESTROYDDLOCALDATA;
416
417typedef DWORD (PASCAL *LPDDHAL_CREATESURFACEEX)(LPDDHAL_CREATESURFACEEXDATA);
418typedef DWORD (PASCAL *LPDDHAL_GETDRIVERSTATE) (LPDDHAL_GETDRIVERSTATEDATA);
419typedef DWORD (PASCAL *LPDDHAL_DESTROYDDLOCAL) (LPDDHAL_DESTROYDDLOCALDATA);
420
421typedef struct _DDHAL_DDMISCELLANEOUS2CALLBACKS {
422 DWORD dwSize;
423 DWORD dwFlags;
424 LPVOID Reserved;
425 LPDDHAL_CREATESURFACEEX CreateSurfaceEx;
426 LPDDHAL_GETDRIVERSTATE GetDriverState;
427 LPDDHAL_DESTROYDDLOCAL DestroyDDLocal;
428} DDHAL_DDMISCELLANEOUS2CALLBACKS,*LPDDHAL_DDMISCELLANEOUS2CALLBACKS;
429
430typedef HRESULT (WINAPI *LPDDGAMMACALIBRATORPROC)(LPDDGAMMARAMP, LPBYTE);
431
432/*****************************************************************************
433 * driver info structure
434 *
435 * The HAL is queried for additional callbacks via the GetDriverInfo callback.
436 */
437typedef struct _DDHAL_GETDRIVERINFODATA *LPDDHAL_GETDRIVERINFODATA;
438typedef DWORD (PASCAL *LPDDHAL_GETDRIVERINFO)(LPDDHAL_GETDRIVERINFODATA);
439
440typedef struct _DDHALINFO {
441 DWORD dwSize;
442 LPDDHAL_DDCALLBACKS lpDDCallbacks;
443 LPDDHAL_DDSURFACECALLBACKS lpDDSurfaceCallbacks;
444 LPDDHAL_DDPALETTECALLBACKS lpDDPaletteCallbacks;
445 VIDMEMINFO vmiData;
446 DDCORECAPS ddCaps;
447 DWORD dwMonitorFrequency;
448 LPDDHAL_GETDRIVERINFO GetDriverInfo;
449 DWORD dwModeIndex;
450 LPDWORD lpdwFourCC;
451 DWORD dwNumModes;
452 LPDDHALMODEINFO lpModeInfo;
453 DWORD dwFlags;
454 LPVOID lpPDevice;
455 DWORD hInstance;
456 /* DirectX 2 */
457 ULONG_PTR lpD3DGlobalDriverData;
458 ULONG_PTR lpD3DHALCallbacks;
459 LPDDHAL_DDEXEBUFCALLBACKS lpDDExeBufCallbacks;
460} DDHALINFO;
461
462#define DDHALINFO_ISPRIMARYDISPLAY 0x00000001
463#define DDHALINFO_MODEXILLEGAL 0x00000002
464#define DDHALINFO_GETDRIVERINFOSET 0x00000004
465
466/* where the high-level ddraw implementation stores the callbacks */
467typedef struct _DDHAL_CALLBACKS {
468 DDHAL_DDCALLBACKS cbDDCallbacks;
469 DDHAL_DDSURFACECALLBACKS cbDDSurfaceCallbacks;
470 DDHAL_DDPALETTECALLBACKS cbDDPaletteCallbacks;
471 DDHAL_DDCALLBACKS HALDD;
472 DDHAL_DDSURFACECALLBACKS HALDDSurface;
473 DDHAL_DDPALETTECALLBACKS HALDDPalette;
474 DDHAL_DDCALLBACKS HELDD;
475 DDHAL_DDSURFACECALLBACKS HELDDSurface;
476 DDHAL_DDPALETTECALLBACKS HELDDPalette;
477 DDHAL_DDEXEBUFCALLBACKS cbDDExeBufCallbacks;
478 DDHAL_DDEXEBUFCALLBACKS HALDDExeBuf;
479 DDHAL_DDEXEBUFCALLBACKS HELDDExeBuf;
480 /* there's more... videoport, colorcontrol, misc, and motion compensation callbacks... */
481} DDHAL_CALLBACKS,*LPDDHAL_CALLBACKS;
482
483/*****************************************************************************
484 * parameter structures
485 */
486typedef struct _DDHAL_DESTROYDRIVERDATA {
487 LPDDRAWI_DIRECTDRAW_GBL lpDD;
488 HRESULT ddRVal;
489 LPDDHAL_DESTROYDRIVER DestroyDriver;
490} DDHAL_DESTROYDRIVERDATA;
491
492typedef struct _DDHAL_SETMODEDATA {
493 LPDDRAWI_DIRECTDRAW_GBL lpDD;
494 DWORD dwModeIndex;
495 HRESULT ddRVal;
496 LPDDHAL_SETMODE SetMode;
497 BOOL inexcl;
498 BOOL useRefreshRate;
499} DDHAL_SETMODEDATA;
500
501typedef struct _DDHAL_CREATESURFACEDATA {
502 LPDDRAWI_DIRECTDRAW_GBL lpDD;
503 LPDDSURFACEDESC lpDDSurfaceDesc;
504 LPDDRAWI_DDRAWSURFACE_LCL * lplpSList;
505 DWORD dwSCnt;
506 HRESULT ddRVal;
507 LPDDHAL_CREATESURFACE CreateSurface;
508} DDHAL_CREATESURFACEDATA;
509
510typedef struct _DDHAL_CANCREATESURFACEDATA {
511 LPDDRAWI_DIRECTDRAW_GBL lpDD;
512 LPDDSURFACEDESC lpDDSurfaceDesc;
513 DWORD bIsDifferentPixelFormat;
514 HRESULT ddRVal;
515 LPDDHAL_CANCREATESURFACE CanCreateSurface;
516} DDHAL_CANCREATESURFACEDATA;
517
518typedef struct _DDHAL_CREATEPALETTEDATA {
519 LPDDRAWI_DIRECTDRAW_GBL lpDD;
520 LPDDRAWI_DDRAWPALETTE_GBL lpDDPalette;
521 LPPALETTEENTRY lpColorTable;
522 HRESULT ddRVal;
523 LPDDHAL_CREATEPALETTE CreatePalette;
524 BOOL is_excl;
525} DDHAL_CREATEPALETTEDATA;
526
527typedef struct _DDHAL_SETEXCLUSIVEMODEDATA {
528 LPDDRAWI_DIRECTDRAW_GBL lpDD;
529 DWORD dwEnterExcl;
530 DWORD dwReserved;
531 HRESULT ddRVal;
532 LPDDHAL_SETEXCLUSIVEMODE SetExclusiveMode;
533} DDHAL_SETEXCLUSIVEMODEDATA;
534
535/* surfaces */
536typedef struct _DDHAL_DESTROYSURFACEDATA {
537 LPDDRAWI_DIRECTDRAW_GBL lpDD;
538 LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface;
539 HRESULT ddRVal;
540 LPDDHALSURFCB_DESTROYSURFACE DestroySurface;
541} DDHAL_DESTROYSURFACEDATA;
542
543typedef struct _DDHAL_FLIPDATA {
544 LPDDRAWI_DIRECTDRAW_GBL lpDD;
545 LPDDRAWI_DDRAWSURFACE_LCL lpSurfCurr;
546 LPDDRAWI_DDRAWSURFACE_LCL lpSurfTarg;
547 DWORD dwFlags;
548 HRESULT ddRVal;
549 LPDDHALSURFCB_FLIP Flip;
550 LPDDRAWI_DDRAWSURFACE_LCL lpSurfCurrLeft;
551 LPDDRAWI_DDRAWSURFACE_LCL lpSurfTargLeft;
552} DDHAL_FLIPDATA;
553
554typedef struct _DDHAL_LOCKDATA {
555 LPDDRAWI_DIRECTDRAW_GBL lpDD;
556 LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface;
557 DWORD bHasRect;
558 RECTL rArea;
559 LPVOID lpSurfData;
560 HRESULT ddRVal;
561 LPDDHALSURFCB_LOCK Lock;
562 DWORD dwFlags;
563} DDHAL_LOCKDATA;
564
565typedef struct _DDHAL_UNLOCKDATA {
566 LPDDRAWI_DIRECTDRAW_GBL lpDD;
567 LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface;
568 HRESULT ddRVal;
569 LPDDHALSURFCB_UNLOCK Unlock;
570} DDHAL_UNLOCKDATA;
571
572typedef struct _DDHAL_BLTDATA {
573 LPDDRAWI_DIRECTDRAW_GBL lpDD;
574 LPDDRAWI_DDRAWSURFACE_LCL lpDDDestSurface;
575 RECTL rDest;
576 LPDDRAWI_DDRAWSURFACE_LCL lpDDSrcSurface;
577 RECTL rSrc;
578 DWORD dwFlags;
579 DWORD dwROPFlags;
580 DDBLTFX bltFX;
581 HRESULT ddRVal;
582 LPDDHALSURFCB_BLT Blt;
583 BOOL IsClipped;
584 RECTL rOrigDest;
585 RECTL rOrigSrc;
586 DWORD dwRectCnt;
587 LPRECT prDestRects;
588} DDHAL_BLTDATA;
589
590typedef struct _DDHAL_UPDATEOVERLAYDATA {
591 LPDDRAWI_DIRECTDRAW_GBL lpDD;
592 LPDDRAWI_DDRAWSURFACE_LCL lpDDDestSurface;
593 RECTL rDest;
594 LPDDRAWI_DDRAWSURFACE_LCL lpDDSrcSurface;
595 RECTL rSrc;
596 DWORD dwFlags;
597 DDOVERLAYFX overlayFX;
598 HRESULT ddRVal;
599 LPDDHALSURFCB_UPDATEOVERLAY UpdateOverlay;
600} DDHAL_UPDATEOVERLAYDATA;
601
602typedef struct _DDHAL_SETPALETTEDATA {
603 LPDDRAWI_DIRECTDRAW_GBL lpDD;
604 LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface;
605 LPDDRAWI_DDRAWPALETTE_GBL lpDDPalette;
606 HRESULT ddRVal;
607 LPDDHALSURFCB_SETPALETTE SetPalette;
608 BOOL Attach;
609} DDHAL_SETPALETTEDATA;
610
611/* palettes */
612typedef struct _DDHAL_DESTROYPALETTEDATA {
613 LPDDRAWI_DIRECTDRAW_GBL lpDD;
614 LPDDRAWI_DDRAWPALETTE_GBL lpDDPalette;
615 HRESULT ddRVal;
616 LPDDHALPALCB_DESTROYPALETTE DestroyPalette;
617} DDHAL_DESTROYPALETTEDATA;
618
619typedef struct _DDHAL_SETENTRIESDATA {
620 LPDDRAWI_DIRECTDRAW_GBL lpDD;
621 LPDDRAWI_DDRAWPALETTE_GBL lpDDPalette;
622 DWORD dwBase;
623 DWORD dwNumEntries;
624 LPPALETTEENTRY lpEntries;
625 HRESULT ddRVal;
626 LPDDHALPALCB_SETENTRIES SetEntries;
627} DDHAL_SETENTRIESDATA;
628
629typedef struct _DDHAL_GETDRIVERINFODATA {
630 DWORD dwSize;
631 DWORD dwFlags;
632 GUID guidInfo;
633 DWORD dwExpectedSize;
634 LPVOID lpvData;
635 DWORD dwActualSize;
636 HRESULT ddRVal;
637 ULONG_PTR dwContext;
638} DDHAL_GETDRIVERINFODATA;
639
640/*****************************************************************************
641 * high-level ddraw implementation structures
642 */
643typedef struct _IUNKNOWN_LIST {
644 struct _IUNKNOWN_LIST * lpLink;
645 LPGUID lpGuid;
646 IUnknown * lpIUnknown;
647} IUNKNOWN_LIST,*LPIUNKNOWN_LIST;
648
649typedef struct _PROCESS_LIST {
650 struct _PROCESS_LIST * lpLink;
651 DWORD dwProcessId;
652 DWORD dwRefCnt;
653 DWORD dwAlphaDepth;
654 DWORD dwZDepth;
655} PROCESS_LIST,*LPPROCESS_LIST;
656
657typedef struct _ATTACHLIST {
658 DWORD dwFlags;
659 struct _ATTACHLIST * lpLink;
660 LPDDRAWI_DDRAWSURFACE_LCL lpAttached;
661 LPDDRAWI_DDRAWSURFACE_INT lpIAttached;
662} ATTACHLIST,*LPATTACHLIST;
663
664#define DDAL_IMPLICIT 0x00000001
665
666typedef struct _ACCESSRECTLIST {
667 struct _ACCESSRECTLIST * lpLink;
668 RECT rDest;
669 LPDDRAWI_DIRECTDRAW_LCL lpOwner;
670 LPVOID lpSurfaceData;
671 DWORD dwFlags;
672 LPHEAPALIASINFO lpHeapAliasInfo;
673} ACCESSRECTLIST,*LPACCESSRECTLIST;
674
675#define ACCESSRECT_VRAMSTYLE 0x00000001
676#define ACCESSRECT_NOTHOLDINGWIN16LOCK 0x00000002
677#define ACCESSRECT_BROKEN 0x00000004
678
679typedef struct _DBLNODE {
680 struct _DBLNODE * next;
681 struct _DBLNODE * prev;
682 LPDDRAWI_DDRAWSURFACE_LCL object;
683 LPDDRAWI_DDRAWSURFACE_INT object_int;
684} DBLNODE,*LPDBLNODE;
685
686typedef struct _DDRAWI_DIRECTDRAW_INT {
687 LPVOID lpVtbl;
688 LPDDRAWI_DIRECTDRAW_LCL lpLcl;
689 LPDDRAWI_DIRECTDRAW_INT lpLink;
690 DWORD dwIntRefCnt;
691} DDRAWI_DIRECTDRAW_INT;
692
693typedef struct _DDRAWI_DIRECTDRAW_LCL {
694 DWORD lpDDMore;
695 LPDDRAWI_DIRECTDRAW_GBL lpGbl;
696 DWORD dwUnused0;
697 DWORD dwLocalFlags;
698 DWORD dwLocalRefCnt;
699 DWORD dwProcessId;
700 IUnknown * pUnkOuter;
701 DWORD dwObsolete1;
702 ULONG_PTR hWnd;
703 ULONG_PTR hDC;
704 DWORD dwErrorMode;
705 LPDDRAWI_DDRAWSURFACE_INT lpPrimary;
706 LPDDRAWI_DDRAWSURFACE_INT lpCB;
707 DWORD dwPreferredMode;
708 /* DirectX 2 */
709 HINSTANCE hD3DInstance;
710 IUnknown * pD3DIUnknown;
711 LPDDHAL_CALLBACKS lpDDCB;
712 ULONG_PTR hDDVxd;
713 /* DirectX 5.0 */
714 DWORD dwAppHackFlags;
715 /* DirectX 5.0A */
716 ULONG_PTR hFocusWnd;
717 DWORD dwHotTracking;
718 DWORD dwIMEState;
719 /* DirectX 6.0 */
720 ULONG_PTR hWndPopup;
721 ULONG_PTR hDD;
722 ULONG_PTR hGammaCalibrator;
723 LPDDGAMMACALIBRATORPROC lpGammaCalibrator;
724} DDRAWI_DIRECTDRAW_LCL;
725
726#define DDRAWILCL_HASEXCLUSIVEMODE 0x00000001
727#define DDRAWILCL_ISFULLSCREEN 0x00000002
728#define DDRAWILCL_SETCOOPCALLED 0x00000004
729#define DDRAWILCL_ACTIVEYES 0x00000008
730#define DDRAWILCL_ACTIVENO 0x00000010
731#define DDRAWILCL_HOOKEDHWND 0x00000020
732#define DDRAWILCL_ALLOWMODEX 0x00000040
733#define DDRAWILCL_V1SCLBEHAVIOUR 0x00000080
734#define DDRAWILCL_MODEHASBEENCHANGED 0x00000100
735#define DDRAWILCL_CREATEDWINDOW 0x00000200
736#define DDRAWILCL_DIRTYDC 0x00000400
737#define DDRAWILCL_DISABLEINACTIVATE 0x00000800
738#define DDRAWILCL_CURSORCLIPPED 0x00001000
739#define DDRAWILCL_EXPLICITMONITOR 0x00002000
740#define DDRAWILCL_MULTITHREADED 0x00004000
741#define DDRAWILCL_FPUSETUP 0x00008000
742#define DDRAWILCL_POWEREDDOWN 0x00010000
743#define DDRAWILCL_DIRECTDRAW7 0x00020000
744#define DDRAWILCL_ATTEMPTEDD3DCONTEXT 0x00040000
745#define DDRAWILCL_FPUPRESERVE 0x00080000
746
747typedef struct _DDRAWI_DIRECTDRAW_GBL {
748 DWORD dwRefCnt;
749 DWORD dwFlags;
750 FLATPTR fpPrimaryOrig;
751 DDCORECAPS ddCaps;
752 DWORD dwInternal1;
753 DWORD dwUnused1[9];
754 LPDDHAL_CALLBACKS lpDDCBtmp;
755 LPDDRAWI_DDRAWSURFACE_INT dsList;
756 LPDDRAWI_DDRAWPALETTE_INT palList;
757 LPDDRAWI_DDRAWCLIPPER_INT clipperList;
758 LPDDRAWI_DIRECTDRAW_GBL lp16DD;
759 DWORD dwMaxOverlays;
760 DWORD dwCurrOverlays;
761 DWORD dwMonitorFrequency;
762 DDCORECAPS ddHELCaps;
763 DWORD dwUnused2[50];
764 DDCOLORKEY ddckCKDestOverlay;
765 DDCOLORKEY ddckCKSrcOverlay;
766 VIDMEMINFO vmiData;
767 LPVOID lpDriverHandle;
768 LPDDRAWI_DIRECTDRAW_LCL lpExclusiveOwner;
769 DWORD dwModeIndex;
770 DWORD dwModeIndexOrig;
771 DWORD dwNumFourCC;
772 LPDWORD lpdwFourCC;
773 DWORD dwNumModes;
774 LPDDHALMODEINFO lpModeInfo;
775 PROCESS_LIST plProcessList;
776 DWORD dwSurfaceLockCount;
777 DWORD dwAliasedLockCnt;
778 ULONG_PTR dwReserved3;
779 ULONG_PTR hDD;
780 char cObsolete[12];
781 DWORD dwReserved1;
782 DWORD dwReserved2;
783 DBLNODE dbnOverlayRoot;
784 volatile LPWORD lpwPDeviceFlags;
785 DWORD dwPDevice;
786 DWORD dwWin16LockCnt;
787 DWORD dwUnused3;
788 DWORD hInstance;
789 DWORD dwEvent16;
790 DWORD dwSaveNumModes;
791 /* DirectX 2 */
792 ULONG_PTR lpD3DGlobalDriverData;
793 ULONG_PTR lpD3DHALCallbacks;
794 DDCORECAPS ddBothCaps;
795 /* DirectX 5.0 */
796 LPDDVIDEOPORTCAPS lpDDVideoPortCaps;
797 LPDDRAWI_DDVIDEOPORT_INT dvpList;
798 ULONG_PTR lpD3DHALCallbacks2;
799 RECT rectDevice;
800 DWORD cMonitors;
801 LPVOID gpbmiSrc;
802 LPVOID gpbmiDest;
803 LPHEAPALIASINFO phaiHeapAliases;
804 ULONG_PTR hKernelHandle;
805 ULONG_PTR pfnNotifyProc;
806 LPDDKERNELCAPS lpDDKernelCaps;
807 LPDDNONLOCALVIDMEMCAPS lpddNLVCaps;
808 LPDDNONLOCALVIDMEMCAPS lpddNLVHELCaps;
809 LPDDNONLOCALVIDMEMCAPS lpddNLVBothCaps;
810 ULONG_PTR lpD3DExtendedCaps;
811 /* DirectX 5.0A */
812 DWORD dwDOSBoxEvent;
813 RECT rectDesktop;
814 char cDriverName[MAX_DRIVER_NAME];
815 /* DirectX 6.0 */
816 ULONG_PTR lpD3DHALCallbacks3;
817 DWORD dwNumZPixelFormats;
818 LPDDPIXELFORMAT lpZPixelFormats;
819 LPDDRAWI_DDMOTIONCOMP_INT mcList;
820 DWORD hDDVxd;
821 DDSCAPSEX ddsCapsMore;
822} DDRAWI_DIRECTDRAW_GBL;
823
824#define DDRAWI_VIRTUALDESKTOP 0x00000008
825#define DDRAWI_MODEX 0x00000010
826#define DDRAWI_DISPLAYDRV 0x00000020
827#define DDRAWI_FULLSCREEN 0x00000040
828#define DDRAWI_MODECHANGED 0x00000080
829#define DDRAWI_NOHARDWARE 0x00000100
830#define DDRAWI_PALETTEINIT 0x00000200
831#define DDRAWI_NOEMULATION 0x00000400
832/* more... */
833
834/* surfaces */
835typedef struct _DDRAWI_DDRAWSURFACE_INT {
836 LPVOID lpVtbl;
837 LPDDRAWI_DDRAWSURFACE_LCL lpLcl;
838 LPDDRAWI_DDRAWSURFACE_INT lpLink;
839 DWORD dwIntRefCnt;
840} DDRAWI_DDRAWSURFACE_INT;
841
842typedef struct _DDRAWI_DDRAWSURFACE_GBL {
843 DWORD dwRefCnt;
844 DWORD dwGlobalFlags;
845 union {
846 LPACCESSRECTLIST lpRectList;
847 DWORD dwBlockSizeY;
848 } DUMMYUNIONNAME1;
849 union {
850 LPVMEMHEAP lpVidMemHeap;
851 DWORD dwBlockSizeX;
852 } DUMMYUNIONNAME2;
853 union {
854 LPDDRAWI_DIRECTDRAW_GBL lpDD;
855 LPVOID lpDDHandle;
856 } DUMMYUNIONNAME3;
857 FLATPTR fpVidMem;
858 union {
859 LONG lPitch;
860 DWORD dwLinearSize;
861 } DUMMYUNIONNAME4;
862 WORD wHeight;
863 WORD wWidth;
864 DWORD dwUsageCount;
865 ULONG_PTR dwReserved1; /* for display driver use */
866 /* optional (defaults to primary surface pixelformat) */
867 DDPIXELFORMAT ddpfSurface;
868} DDRAWI_DDRAWSURFACE_GBL;
869
870#define DDRAWISURFGBL_MEMFREE 0x00000001
871#define DDRAWISURFGBL_SYSMEMREQUESTED 0x00000002
872#define DDRAWISURFGBL_ISGDISURFACE 0x00000004
873#define DDRAWISURFGBL_SOFTWAREAUTOFLIP 0x00000008
874#define DDRAWISURFGBL_LOCKNOTHOLDINGWIN16LOCK 0x00000010
875#define DDRAWISURFGBL_LOCKVRAMSTYLE 0x00000020
876#define DDRAWISURFGBL_LOCKBROKEN 0x00000040
877#define DDRAWISURFGBL_IMPLICITHANDLE 0x00000080
878#define DDRAWISURFGBL_ISCLIENTMEM 0x00000100
879#define DDRAWISURFGBL_HARDWAREOPSOURCE 0x00000200
880#define DDRAWISURFGBL_HARDWAREOPDEST 0x00000400
881#define DDRAWISURFGBL_HARDWAREOPSTARTED 0x00000600
882#define DDRAWISURFGBL_VPORTINTERLEAVED 0x00000800
883#define DDRAWISURFGBL_VPORTDATA 0x00001000
884#define DDRAWISURFGBL_LATEALLOCATELINEAR 0x00002000
885#define DDRAWISURFGBL_SYSMEMEXECUTEBUFFER 0x00004000
886#define DDRAWISURFGBL_FASTLOCKHELD 0x00008000
887#define DDRAWISURFGBL_READONLYLOCKHELD 0x00010000
888
889typedef struct _DDRAWI_DDRAWSURFACE_GBL_MORE {
890 DWORD dwSize;
891 union {
892 DWORD dwPhysicalPageTable;
893 FLATPTR fpPhysicalVidMem;
894 } DUMMYUNIONNAME1;
895 LPDWORD pPageTable;
896 DWORD cPages;
897 ULONG_PTR dwSavedDCContext;
898 FLATPTR fpAliasedVidMem;
899 ULONG_PTR dwDriverReserved;
900 ULONG_PTR dwHELReserved;
901 DWORD cPageUnlocks;
902 ULONG_PTR hKernelSurface;
903 DWORD dwKernelRefCnt;
904 LPDDCOLORCONTROL lpColorInfo;
905 FLATPTR fpNTAlias;
906 DWORD dwContentsStamp;
907 LPVOID lpvUnswappedDriverReserved;
908 LPVOID lpDDRAWReserved2;
909 DWORD dwDDRAWReserved1;
910 DWORD dwDDRAWReserved2;
911 FLATPTR fpAliasOfVidMem;
912} DDRAWI_DDRAWSURFACE_GBL_MORE;
913
914/* the MS version of this macro was somewhat obfuscated and unreadable
915 * (possibly because of mediocre MS coders)... so I simplified it...
916 * (and so I commit no copyright violations either, hah) */
917#define GET_LPDDRAWSURFACE_GBL_MORE(psurf_gbl) \
918 (*(((LPDDRAWI_DDRAWSURFACE_GBL_MORE *)(psurf_gbl)) - 1))
919
920typedef struct _DDRAWI_DDRAWSURFACE_MORE {
921 DWORD dwSize;
922 IUNKNOWN_LIST * lpIUnknowns;
923 LPDDRAWI_DIRECTDRAW_LCL lpDD_lcl;
924 DWORD dwPageLockCount;
925 DWORD dwBytesAllocated;
926 LPDDRAWI_DIRECTDRAW_INT lpDD_int;
927 DWORD dwMipMapCount;
928 LPDDRAWI_DDRAWCLIPPER_INT lpDDIClipper;
929 /* DirectX 5.0 */
930 LPHEAPALIASINFO lpHeapAliasInfo;
931 DWORD dwOverlayFlags;
932 VOID *rgjunc;
933 LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort;
934 LPDDOVERLAYFX lpddOverlayFX;
935 DDSCAPSEX ddsCapsEx;
936 DWORD dwTextureStage;
937 LPVOID lpDDRAWReserved;
938 LPVOID lpDDRAWReserved2;
939 LPVOID lpDDrawReserved3;
940 DWORD dwDDrawReserved4;
941 LPVOID lpDDrawReserved5;
942 LPDWORD lpGammaRamp;
943 LPDWORD lpOriginalGammaRamp;
944 LPVOID lpDDrawReserved6;
945 DWORD dwSurfaceHandle;
946 DWORD qwDDrawReserved8[2];
947 LPVOID lpDDrawReserved9;
948 DWORD cSurfaces;
949 LPDDSURFACEDESC2 pCreatedDDSurfaceDesc2;
950 LPDDRAWI_DDRAWSURFACE_LCL *slist;
951 DWORD dwFVF;
952 LPVOID lpVB;
953} DDRAWI_DDRAWSURFACE_MORE;
954
955typedef struct _DDRAWI_DDRAWSURFACE_LCL {
956 LPDDRAWI_DDRAWSURFACE_MORE lpSurfMore;
957 LPDDRAWI_DDRAWSURFACE_GBL lpGbl;
958 ULONG_PTR hDDSurface;
959 LPATTACHLIST lpAttachList;
960 LPATTACHLIST lpAttachListFrom;
961 DWORD dwLocalRefCnt;
962 DWORD dwProcessId;
963 DWORD dwFlags;
964 DDSCAPS ddsCaps;
965 LPDDRAWI_DDRAWPALETTE_INT lpDDPalette;
966 LPDDRAWI_DDRAWCLIPPER_LCL lpDDClipper;
967 DWORD dwModeCreatedIn;
968 DWORD dwBackBufferCount;
969 DDCOLORKEY ddckCKDestBlt;
970 DDCOLORKEY ddckCKSrcBlt;
971 ULONG_PTR hDC;
972 ULONG_PTR dwReserved1; /* for display driver use */
973 /* overlays only */
974 DDCOLORKEY ddckCKSrcOverlay;
975 DDCOLORKEY ddckCKDestOverlay;
976 LPDDRAWI_DDRAWSURFACE_INT lpSurfaceOverlaying;
977 DBLNODE dbnOverlayNode;
978 RECT rcOverlaySrc;
979 RECT rcOverlayDest;
980 DWORD dwClrXparent;
981 DWORD dwAlpha;
982 LONG lOverlayX;
983 LONG lOverlayY;
984} DDRAWI_DDRAWSURFACE_LCL;
985
986#define DDRAWISURF_ATTACHED 0x00000001
987#define DDRAWISURF_IMPLICITCREATE 0x00000002
988#define DDRAWISURF_ISFREE 0x00000004
989#define DDRAWISURF_ATTACHED_FROM 0x00000008
990#define DDRAWISURF_IMPLICITROOT 0x00000010
991#define DDRAWISURF_PARTOFPRIMARYCHAIN 0x00000020
992#define DDRAWISURF_DATAISALIASED 0x00000040
993#define DDRAWISURF_HASDC 0x00000080
994#define DDRAWISURF_HASCKEYDESTOVERLAY 0x00000100
995#define DDRAWISURF_HASCKEYDESTBLT 0x00000200
996#define DDRAWISURF_HASCKEYSRCOVERLAY 0x00000400
997#define DDRAWISURF_HASCKEYSRCBLT 0x00000800
998#define DDRAWISURF_LOCKEXCLUDEDCURSOR 0x00001000
999#define DDRAWISURF_HASPIXELFORMAT 0x00002000
1000#define DDRAWISURF_HASOVERLAYDATA 0x00004000
1001#define DDRAWISURF_SETGAMMA 0x00008000
1002/* more... */
1003#define DDRAWISURF_INVALID 0x10000000
1004
1005/* palettes */
1006typedef struct _DDRAWI_DDRAWPALETTE_INT {
1007 LPVOID lpVtbl;
1008 LPDDRAWI_DDRAWPALETTE_LCL lpLcl;
1009 LPDDRAWI_DDRAWPALETTE_INT lpLink;
1010 DWORD dwIntRefCnt;
1011} DDRAWI_DDRAWPALETTE_INT;
1012
1013typedef struct _DDRAWI_DDRAWPALETTE_GBL {
1014 DWORD dwRefCnt;
1015 DWORD dwFlags;
1016 LPDDRAWI_DIRECTDRAW_LCL lpDD_lcl;
1017 DWORD dwProcessId;
1018 LPPALETTEENTRY lpColorTable;
1019 union {
1020 ULONG_PTR dwReserved1; /* for display driver use */
1021 HPALETTE hHELGDIPalette;
1022 } DUMMYUNIONNAME1;
1023 /* DirectX 5.0 */
1024 DWORD dwDriverReserved;
1025 DWORD dwContentsStamp;
1026 /* DirectX 6.0 */
1027 DWORD dwSaveStamp;
1028 /* DirectX 7.0 */
1029 DWORD dwHandle;
1030} DDRAWI_DDRAWPALETTE_GBL;
1031
1032#define DDRAWIPAL_256 0x00000001
1033#define DDRAWIPAL_16 0x00000002
1034#define DDRAWIPAL_GDI 0x00000004
1035#define DDRAWIPAL_STORED_8 0x00000008
1036#define DDRAWIPAL_STORED_16 0x00000010
1037#define DDRAWIPAL_STORED_24 0x00000020
1038#define DDRAWIPAL_EXCLUSIVE 0x00000040
1039#define DDRAWIPAL_INHEL 0x00000080
1040#define DDRAWIPAL_DIRTY 0x00000100
1041#define DDRAWIPAL_ALLOW256 0x00000200
1042#define DDRAWIPAL_4 0x00000400
1043#define DDRAWIPAL_2 0x00000800
1044#define DDRAWIPAL_STORED_8INDEX 0x00001000
1045#define DDRAWIPAL_ALPHA 0x00002000
1046
1047typedef struct _DDRAWI_DDRAWPALETTE_LCL {
1048 DWORD lpPalMore;
1049 LPDDRAWI_DDRAWPALETTE_GBL lpGbl;
1050 ULONG_PTR dwUnused0;
1051 DWORD dwLocalRefCnt;
1052 IUnknown * pUnkOuter;
1053 LPDDRAWI_DIRECTDRAW_LCL lpDD_lcl;
1054 ULONG_PTR dwReserved1;
1055 /* DirectX 6.0 */
1056 ULONG_PTR dwDDRAWReserved1;
1057 ULONG_PTR dwDDRAWReserved2;
1058 ULONG_PTR dwDDRAWReserved3;
1059} DDRAWI_DDRAWPALETTE_LCL;
1060
1061#ifdef __cplusplus
1062} /* extern "C" */
1063#endif
1064
1065#endif /* __DDRAWI_INCLUDED__ */
Note: See TracBrowser for help on using the repository browser.