- Provide lobby provider COM object header file and stub implementation
[wine.git] / include / ddrawi.h
blob9a98064f7ac822774f0e86fc9e744ffade133074
1 /* DirectDraw driver interface */
2 /* (DirectX 7 version) */
4 #ifndef __WINE_DDRAWI_H
5 #define __WINE_DDRAWI_H
7 #ifdef __cplusplus
8 extern "C" {
9 #endif
11 #include "ddraw.h"
12 #include "dciddi.h" /* the DD HAL is layered onto DCI escapes */
14 typedef struct _DDVIDEOPORTCAPS *LPDDVIDEOPORTCAPS; /* should be in dvp.h */
15 typedef struct _DDKERNELCAPS *LPDDKERNELCAPS; /* should be in ddkernel.h */
16 typedef struct _VMEMHEAP *LPVMEMHEAP; /* should be in dmemmgr.h */
18 #define DDAPI WINAPI
20 /* the DirectDraw versions */
21 #define DD_VERSION 0x0200 /* compatibility version */
22 #define DD_RUNTIME_VERSION 0x0700 /* actual version */
24 /* the HAL version returned from QUERYESCSUPPORT - DCICOMMAND */
25 #define DD_HAL_VERSION 0x0100
27 /* more DCICOMMAND escapes */
28 #define DDCREATEDRIVEROBJECT 10
29 #define DDGET32BITDRIVERNAME 11
30 #define DDNEWCALLBACKFNS 12
31 #define DDVERSIONINFO 13
33 #define MAX_DRIVER_NAME CCHDEVICENAME
35 /*****************************************************************************
36 * Initialization stuff
38 typedef struct {
39 char szName[260];
40 char szEntryPoint[64];
41 DWORD dwContext;
42 } DD32BITDRIVERDATA,*LPDD32BITDRIVERDATA;
44 typedef struct {
45 DWORD dwHALVersion;
46 ULONG_PTR dwReserved1;
47 ULONG_PTR dwReserved2;
48 } DDVERSIONDATA,*LPDDVERSIONDATA;
50 typedef DWORD PASCAL (*LPDD32BITDRIVERINIT)(DWORD dwContext);
52 /* pointer to video memory */
53 typedef ULONG_PTR FLATPTR;
55 /* predeclare some structures */
56 typedef struct _DDHALINFO *LPDDHALINFO;
57 typedef struct _DDRAWI_DIRECTDRAW_INT *LPDDRAWI_DIRECTDRAW_INT;
58 typedef struct _DDRAWI_DIRECTDRAW_LCL *LPDDRAWI_DIRECTDRAW_LCL;
59 typedef struct _DDRAWI_DIRECTDRAW_GBL *LPDDRAWI_DIRECTDRAW_GBL;
60 typedef struct _DDRAWI_DDRAWSURFACE_INT *LPDDRAWI_DDRAWSURFACE_INT;
61 typedef struct _DDRAWI_DDRAWSURFACE_LCL *LPDDRAWI_DDRAWSURFACE_LCL;
62 typedef struct _DDRAWI_DDRAWSURFACE_GBL *LPDDRAWI_DDRAWSURFACE_GBL;
63 typedef struct _DDRAWI_DDRAWSURFACE_MORE *LPDDRAWI_DDRAWSURFACE_MORE;
64 typedef struct _DDRAWI_DDRAWSURFACE_GBL_MORE *LPDDRAWI_DDRAWSURFACE_GBL_MORE;
65 typedef struct _DDRAWI_DDRAWPALETTE_INT *LPDDRAWI_DDRAWPALETTE_INT;
66 typedef struct _DDRAWI_DDRAWPALETTE_LCL *LPDDRAWI_DDRAWPALETTE_LCL;
67 typedef struct _DDRAWI_DDRAWPALETTE_GBL *LPDDRAWI_DDRAWPALETTE_GBL;
68 typedef struct _DDRAWI_DDRAWCLIPPER_INT *LPDDRAWI_DDRAWCLIPPER_INT;
69 typedef struct _DDRAWI_DDRAWCLIPPER_LCL *LPDDRAWI_DDRAWCLIPPER_LCL;
70 typedef struct _DDRAWI_DDRAWCLIPPER_GBL *LPDDRAWI_DDRAWCLIPPER_GBL;
71 typedef struct _DDRAWI_DDVIDEOPORT_INT *LPDDRAWI_DDVIDEOPORT_INT;
72 typedef struct _DDRAWI_DDVIDEOPORT_LCL *LPDDRAWI_DDVIDEOPORT_LCL;
73 typedef struct _DDRAWI_DDMOTIONCOMP_INT *LPDDRAWI_DDMOTIONCOMP_INT;
74 typedef struct _DDRAWI_DDMOTIONCOMP_LCL *LPDDRAWI_DDMOTIONCOMP_LCL;
76 /*****************************************************************************
77 * driver->ddraw callbacks
79 typedef BOOL DDAPI (*LPDDHAL_SETINFO)(LPDDHALINFO lpDDHalInfo, BOOL reset);
80 typedef FLATPTR DDAPI (*LPDDHAL_VIDMEMALLOC)(LPDDRAWI_DIRECTDRAW_GBL lpDD, int heap, DWORD dwWidth, DWORD dwHeight);
81 typedef void DDAPI (*LPDDHAL_VIDMEMFREE)(LPDDRAWI_DIRECTDRAW_GBL lpDD, int heap, FLATPTR fpMem);
83 typedef struct {
84 DWORD dwSize;
85 LPDDHAL_SETINFO lpSetInfo;
86 LPDDHAL_VIDMEMALLOC lpVidMemAlloc;
87 LPDDHAL_VIDMEMFREE lpVidMemFree;
88 } DDHALDDRAWFNS,*LPDDHALDDRAWFNS;
90 /*****************************************************************************
91 * mode info structure
93 typedef struct _DDHALMODEINFO {
94 DWORD dwWidth;
95 DWORD dwHeight;
96 LONG lPitch;
97 DWORD dwBPP;
98 WORD wFlags;
99 WORD wRefreshRate;
100 DWORD dwRBitMask;
101 DWORD dwGBitMask;
102 DWORD dwBBitMask;
103 DWORD dwAlphaBitMask;
104 } DDHALMODEINFO,*LPDDHALMODEINFO;
106 #define DDMODEINFO_PALETTIZED 0x0001
107 #define DDMODEINFO_MODEX 0x0002
108 #define DDMODEINFO_UNSUPPORTED 0x0004
109 #define DDMODEINFO_STANDARDVGA 0x0008
110 #define DDMODEINFO_MAXREFRESH 0x0010
111 #define DDMODEINFO_STEREO 0x0020
113 /*****************************************************************************
114 * video memory info structure
116 typedef struct _VIDMEM {
117 DWORD dwFlags;
118 FLATPTR fpStart;
119 union {
120 FLATPTR fpEnd;
121 DWORD dwWidth;
122 } DUMMYUNIONNAME1;
123 DDSCAPS ddsCaps;
124 DDSCAPS ddsCapsAlt;
125 union {
126 LPVMEMHEAP lpHeap;
127 DWORD dwHeight;
128 } DUMMYUNIONNAME2;
129 } VIDMEM,*LPVIDMEM;
131 #define VIDMEM_ISLINEAR 0x00000001
132 #define VIDMEM_ISRECTANGULAR 0x00000002
133 #define VIDMEM_ISHEAP 0x00000004
134 #define VIDMEM_ISNONLOCAL 0x00000008
135 #define VIDMEM_ISWC 0x00000010
136 #define VIDMEM_ISDISABLED 0x00000020
138 typedef struct _VIDMEMINFO {
139 FLATPTR fpPrimary;
140 DWORD dwFlags;
141 DWORD dwDisplayWidth;
142 DWORD dwDisplayHeight;
143 LONG lDisplayPitch;
144 DDPIXELFORMAT ddpfDisplay;
145 DWORD dwOffscreenAlign;
146 DWORD dwOverlayAlign;
147 DWORD dwTextureAlign;
148 DWORD dwZBufferAlign;
149 DWORD dwAlphaAlign;
150 DWORD dwNumHeaps;
151 LPVIDMEM pvmList;
152 } VIDMEMINFO,*LPVIDMEMINFO;
154 typedef struct _HEAPALIAS {
155 FLATPTR fpVidMem;
156 LPVOID lpAlias;
157 DWORD dwAliasSize;
158 } HEAPALIAS,*LPHEAPALIAS;
160 typedef struct _HEAPALIASINFO {
161 DWORD dwRefCnt;
162 DWORD dwFlags;
163 DWORD dwNumHeaps;
164 LPHEAPALIAS lpAliases;
165 } HEAPALIASINFO,*LPHEAPALIASINFO;
167 #define HEAPALIASINFO_MAPPEDREAL 0x00000001
168 #define HEAPALIASINFO_MAPPEDDUMMY 0x00000002
170 /*****************************************************************************
171 * capabilities structures
173 typedef struct _DDCORECAPS {
174 DWORD dwSize;
175 DWORD dwCaps;
176 DWORD dwCaps2;
177 DWORD dwCKeyCaps;
178 DWORD dwFXCaps;
179 DWORD dwFXAlphaCaps;
180 DWORD dwPalCaps;
181 DWORD dwSVCaps;
182 DWORD dwAlphaBltConstBitDepths;
183 DWORD dwAlphaBltPixelBitDepths;
184 DWORD dwAlphaBltSurfaceBitDepths;
185 DWORD dwAlphaOverlayConstBitDepths;
186 DWORD dwAlphaOverlayPixelBitDepths;
187 DWORD dwAlphaOverlaySurfaceBitDepths;
188 DWORD dwZBufferBitDepths;
189 DWORD dwVidMemTotal;
190 DWORD dwVidMemFree;
191 DWORD dwMaxVisibleOverlays;
192 DWORD dwCurrVisibleOverlays;
193 DWORD dwNumFourCCCodes;
194 DWORD dwAlignBoundarySrc;
195 DWORD dwAlignSizeSrc;
196 DWORD dwAlignBoundaryDest;
197 DWORD dwAlignSizeDest;
198 DWORD dwAlignStrideAlign;
199 DWORD dwRops[DD_ROP_SPACE];
200 DDSCAPS ddsCaps;
201 DWORD dwMinOverlayStretch;
202 DWORD dwMaxOverlayStretch;
203 DWORD dwMinLiveVideoStretch;
204 DWORD dwMaxLiveVideoStretch;
205 DWORD dwMinHwCodecStretch;
206 DWORD dwMaxHwCodecStretch;
207 DWORD dwReserved1;
208 DWORD dwReserved2;
209 DWORD dwReserved3;
210 DWORD dwSVBCaps;
211 DWORD dwSVBCKeyCaps;
212 DWORD dwSVBFXCaps;
213 DWORD dwSVBRops[DD_ROP_SPACE];
214 DWORD dwVSBCaps;
215 DWORD dwVSBCKeyCaps;
216 DWORD dwVSBFXCaps;
217 DWORD dwVSBRops[DD_ROP_SPACE];
218 DWORD dwSSBCaps;
219 DWORD dwSSBCKeyCaps;
220 DWORD dwSSBFXCaps;
221 DWORD dwSSBRops[DD_ROP_SPACE];
222 DWORD dwMaxVideoPorts;
223 DWORD dwCurrVideoPorts;
224 DWORD dwSVBCaps2;
225 } DDCORECAPS,*LPDDCORECAPS;
227 typedef struct _DDNONLOCALVIDMEMCAPS {
228 DWORD dwSize;
229 DWORD dwNLVBCaps;
230 DWORD dwNLVBCaps2;
231 DWORD dwNLVBCKeyCaps;
232 DWORD dwNLVBFXCaps;
233 DWORD dwNLVBRops[DD_ROP_SPACE];
234 } DDNONLOCALVIDMEMCAPS,*LPDDNONLOCALVIDMEMCAPS;
236 typedef struct _DDSCAPSEX {
237 DWORD dwCaps2;
238 DWORD dwCaps3;
239 DWORD dwCaps4;
240 } DDSCAPSEX,*LPDDSCAPSEX;
242 /*****************************************************************************
243 * ddraw->driver callbacks
245 #define DDHAL_DRIVER_NOTHANDLED 0
246 #define DDHAL_DRIVER_HANDLED 1
247 #define DDHAL_DRIVER_NOCKEYHW 2
249 typedef struct _DDHAL_DESTROYDRIVERDATA *LPDDHAL_DESTROYDRIVERDATA;
250 typedef struct _DDHAL_CREATESURFACEDATA *LPDDHAL_CREATESURFACEDATA;
251 typedef struct _DDHAL_DRVSETCOLORKEYDATA *LPDDHAL_DRVSETCOLORKEYDATA;
252 typedef struct _DDHAL_SETMODEDATA *LPDDHAL_SETMODEDATA;
253 typedef struct _DDHAL_WAITFORVERTICALBLANKDATA *LPDDHAL_WAITFORVERTICALBLANKDATA;
254 typedef struct _DDHAL_CANCREATESURFACEDATA *LPDDHAL_CANCREATESURFACEDATA;
255 typedef struct _DDHAL_CREATEPALETTEDATA *LPDDHAL_CREATEPALETTEDATA;
256 typedef struct _DDHAL_GETSCANLINEDATA *LPDDHAL_GETSCANLINEDATA;
257 typedef struct _DDHAL_SETEXCLUSIVEMODEDATA *LPDDHAL_SETEXCLUSIVEMODEDATA;
258 typedef struct _DDHAL_FLIPTOGDISURFACEDATA *LPDDHAL_FLIPTOGDISURFACEDATA;
260 typedef DWORD PASCAL (*LPDDHAL_DESTROYDRIVER) (LPDDHAL_DESTROYDRIVERDATA);
261 typedef DWORD PASCAL (*LPDDHAL_CREATESURFACE) (LPDDHAL_CREATESURFACEDATA);
262 typedef DWORD PASCAL (*LPDDHAL_SETCOLORKEY) (LPDDHAL_DRVSETCOLORKEYDATA);
263 typedef DWORD PASCAL (*LPDDHAL_SETMODE) (LPDDHAL_SETMODEDATA);
264 typedef DWORD PASCAL (*LPDDHAL_WAITFORVERTICALBLANK)(LPDDHAL_WAITFORVERTICALBLANKDATA);
265 typedef DWORD PASCAL (*LPDDHAL_CANCREATESURFACE) (LPDDHAL_CANCREATESURFACEDATA );
266 typedef DWORD PASCAL (*LPDDHAL_CREATEPALETTE) (LPDDHAL_CREATEPALETTEDATA);
267 typedef DWORD PASCAL (*LPDDHAL_GETSCANLINE) (LPDDHAL_GETSCANLINEDATA);
268 typedef DWORD PASCAL (*LPDDHAL_SETEXCLUSIVEMODE) (LPDDHAL_SETEXCLUSIVEMODEDATA);
269 typedef DWORD PASCAL (*LPDDHAL_FLIPTOGDISURFACE) (LPDDHAL_FLIPTOGDISURFACEDATA);
271 typedef struct _DDHAL_DDCALLBACKS {
272 DWORD dwSize;
273 DWORD dwFlags;
274 LPDDHAL_DESTROYDRIVER DestroyDriver;
275 LPDDHAL_CREATESURFACE CreateSurface;
276 LPDDHAL_SETCOLORKEY SetColorKey;
277 LPDDHAL_SETMODE SetMode;
278 LPDDHAL_WAITFORVERTICALBLANK WaitForVerticalBlank;
279 LPDDHAL_CANCREATESURFACE CanCreateSurface;
280 LPDDHAL_CREATEPALETTE CreatePalette;
281 LPDDHAL_GETSCANLINE GetScanLine;
282 /* DirectX 2 */
283 LPDDHAL_SETEXCLUSIVEMODE SetExclusiveMode;
284 LPDDHAL_FLIPTOGDISURFACE FlipToGDISurface;
285 } DDHAL_DDCALLBACKS,*LPDDHAL_DDCALLBACKS;
287 typedef struct _DDHAL_DESTROYSURFACEDATA *LPDDHAL_DESTROYSURFACEDATA;
288 typedef struct _DDHAL_FLIPDATA *LPDDHAL_FLIPDATA;
289 typedef struct _DDHAL_SETCLIPLISTDATA *LPDDHAL_SETCLIPLISTDATA;
290 typedef struct _DDHAL_LOCKDATA *LPDDHAL_LOCKDATA;
291 typedef struct _DDHAL_UNLOCKDATA *LPDDHAL_UNLOCKDATA;
292 typedef struct _DDHAL_BLTDATA *LPDDHAL_BLTDATA;
293 typedef struct _DDHAL_SETCOLORKEYDATA *LPDDHAL_SETCOLORKEYDATA;
294 typedef struct _DDHAL_ADDATTACHEDSURFACEDATA *LPDDHAL_ADDATTACHEDSURFACEDATA;
295 typedef struct _DDHAL_GETBLTSTATUSDATA *LPDDHAL_GETBLTSTATUSDATA;
296 typedef struct _DDHAL_GETFLIPSTATUSDATA *LPDDHAL_GETFLIPSTATUSDATA;
297 typedef struct _DDHAL_UPDATEOVERLAYDATA *LPDDHAL_UPDATEOVERLAYDATA;
298 typedef struct _DDHAL_SETOVERLAYPOSITIONDATA *LPDDHAL_SETOVERLAYPOSITIONDATA;
299 typedef struct _DDHAL_SETPALETTEDATA *LPDDHAL_SETPALETTEDATA;
301 typedef DWORD PASCAL (*LPDDHALSURFCB_DESTROYSURFACE) (LPDDHAL_DESTROYSURFACEDATA);
302 typedef DWORD PASCAL (*LPDDHALSURFCB_FLIP) (LPDDHAL_FLIPDATA);
303 typedef DWORD PASCAL (*LPDDHALSURFCB_SETCLIPLIST) (LPDDHAL_SETCLIPLISTDATA);
304 typedef DWORD PASCAL (*LPDDHALSURFCB_LOCK) (LPDDHAL_LOCKDATA);
305 typedef DWORD PASCAL (*LPDDHALSURFCB_UNLOCK) (LPDDHAL_UNLOCKDATA);
306 typedef DWORD PASCAL (*LPDDHALSURFCB_BLT) (LPDDHAL_BLTDATA);
307 typedef DWORD PASCAL (*LPDDHALSURFCB_SETCOLORKEY) (LPDDHAL_SETCOLORKEYDATA);
308 typedef DWORD PASCAL (*LPDDHALSURFCB_ADDATTACHEDSURFACE)(LPDDHAL_ADDATTACHEDSURFACEDATA);
309 typedef DWORD PASCAL (*LPDDHALSURFCB_GETBLTSTATUS) (LPDDHAL_GETBLTSTATUSDATA);
310 typedef DWORD PASCAL (*LPDDHALSURFCB_GETFLIPSTATUS) (LPDDHAL_GETFLIPSTATUSDATA);
311 typedef DWORD PASCAL (*LPDDHALSURFCB_UPDATEOVERLAY) (LPDDHAL_UPDATEOVERLAYDATA);
312 typedef DWORD PASCAL (*LPDDHALSURFCB_SETOVERLAYPOSITION)(LPDDHAL_SETOVERLAYPOSITIONDATA);
313 typedef DWORD PASCAL (*LPDDHALSURFCB_SETPALETTE) (LPDDHAL_SETPALETTEDATA);
315 typedef struct _DDHAL_DDSURFACECALLBACKS {
316 DWORD dwSize;
317 DWORD dwFlags;
318 LPDDHALSURFCB_DESTROYSURFACE DestroySurface;
319 LPDDHALSURFCB_FLIP Flip;
320 LPDDHALSURFCB_SETCLIPLIST SetClipList;
321 LPDDHALSURFCB_LOCK Lock;
322 LPDDHALSURFCB_UNLOCK Unlock;
323 LPDDHALSURFCB_BLT Blt;
324 LPDDHALSURFCB_SETCOLORKEY SetColorKey;
325 LPDDHALSURFCB_ADDATTACHEDSURFACE AddAttachedSurface;
326 LPDDHALSURFCB_GETBLTSTATUS GetBltStatus;
327 LPDDHALSURFCB_GETFLIPSTATUS GetFlipStatus;
328 LPDDHALSURFCB_UPDATEOVERLAY UpdateOverlay;
329 LPDDHALSURFCB_SETOVERLAYPOSITION SetOverlayPosition;
330 LPVOID reserved4;
331 LPDDHALSURFCB_SETPALETTE SetPalette;
332 } DDHAL_DDSURFACECALLBACKS,*LPDDHAL_DDSURFACECALLBACKS;
334 typedef struct _DDHAL_DESTROYPALETTEDATA *LPDDHAL_DESTROYPALETTEDATA;
335 typedef struct _DDHAL_SETENTRIESDATA *LPDDHAL_SETENTRIESDATA;
337 typedef DWORD PASCAL (*LPDDHALPALCB_DESTROYPALETTE)(LPDDHAL_DESTROYPALETTEDATA);
338 typedef DWORD PASCAL (*LPDDHALPALCB_SETENTRIES) (LPDDHAL_SETENTRIESDATA);
340 typedef struct _DDHAL_DDPALETTECALLBACKS {
341 DWORD dwSize;
342 DWORD dwFlags;
343 LPDDHALPALCB_DESTROYPALETTE DestroyPalette;
344 LPDDHALPALCB_SETENTRIES SetEntries;
345 } DDHAL_DDPALETTECALLBACKS,*LPDDHAL_DDPALETTECALLBACKS;
347 typedef DWORD PASCAL (*LPDDHALEXEBUFCB_CANCREATEEXEBUF)(LPDDHAL_CANCREATESURFACEDATA );
348 typedef DWORD PASCAL (*LPDDHALEXEBUFCB_CREATEEXEBUF) (LPDDHAL_CREATESURFACEDATA);
349 typedef DWORD PASCAL (*LPDDHALEXEBUFCB_DESTROYEXEBUF) (LPDDHAL_DESTROYSURFACEDATA);
350 typedef DWORD PASCAL (*LPDDHALEXEBUFCB_LOCKEXEBUF) (LPDDHAL_LOCKDATA);
351 typedef DWORD PASCAL (*LPDDHALEXEBUFCB_UNLOCKEXEBUF) (LPDDHAL_UNLOCKDATA);
353 typedef struct _DDHAL_DDEXEBUFCALLBACKS {
354 DWORD dwSize;
355 DWORD dwFlags;
356 LPDDHALEXEBUFCB_CANCREATEEXEBUF CanCreateExecuteBuffer;
357 LPDDHALEXEBUFCB_CREATEEXEBUF CreateExecuteBuffer;
358 LPDDHALEXEBUFCB_DESTROYEXEBUF DestroyExecuteBuffer;
359 LPDDHALEXEBUFCB_LOCKEXEBUF LockExecuteBuffer;
360 LPDDHALEXEBUFCB_UNLOCKEXEBUF UnlockExecuteBuffer;
361 } DDHAL_DDEXEBUFCALLBACKS,*LPDDHAL_DDEXEBUFCALLBACKS;
363 typedef HRESULT WINAPI (*LPDDGAMMACALIBRATORPROC)(LPDDGAMMARAMP, LPBYTE);
365 /*****************************************************************************
366 * driver info structure
368 * The HAL is queried for additional callbacks via the GetDriverInfo callback.
370 typedef struct _DDHAL_GETDRIVERINFODATA *LPDDHAL_GETDRIVERINFODATA;
371 typedef DWORD PASCAL (*LPDDHAL_GETDRIVERINFO)(LPDDHAL_GETDRIVERINFODATA);
373 typedef struct _DDHALINFO {
374 DWORD dwSize;
375 LPDDHAL_DDCALLBACKS lpDDCallbacks;
376 LPDDHAL_DDSURFACECALLBACKS lpDDSurfaceCallbacks;
377 LPDDHAL_DDPALETTECALLBACKS lpDDPaletteCallbacks;
378 VIDMEMINFO vmiData;
379 DDCORECAPS ddCaps;
380 DWORD dwMonitorFrequency;
381 LPDDHAL_GETDRIVERINFO GetDriverInfo;
382 DWORD dwModeIndex;
383 LPDWORD lpdwFourCC;
384 DWORD dwNumModes;
385 LPDDHALMODEINFO lpModeInfo;
386 DWORD dwFlags;
387 LPVOID lpPDevice;
388 DWORD hInstance;
389 /* DirectX 2 */
390 ULONG_PTR lpD3DGlobalDriverData;
391 ULONG_PTR lpD3DHALCallbacks;
392 LPDDHAL_DDEXEBUFCALLBACKS lpDDExeBufCallbacks;
393 } DDHALINFO;
395 #define DDHALINFO_ISPRIMARYDISPLAY 0x00000001
396 #define DDHALINFO_MODEXILLEGAL 0x00000002
397 #define DDHALINFO_GETDRIVERINFOSET 0x00000004
399 /* where the high-level ddraw implementation stores the callbacks */
400 typedef struct _DDHAL_CALLBACKS {
401 DDHAL_DDCALLBACKS cbDDCallbacks;
402 DDHAL_DDSURFACECALLBACKS cbDDSurfaceCallbacks;
403 DDHAL_DDPALETTECALLBACKS cbDDPaletteCallbacks;
404 DDHAL_DDCALLBACKS HALDD;
405 DDHAL_DDSURFACECALLBACKS HALDDSurface;
406 DDHAL_DDPALETTECALLBACKS HALDDPalette;
407 DDHAL_DDCALLBACKS HELDD;
408 DDHAL_DDSURFACECALLBACKS HELDDSurface;
409 DDHAL_DDPALETTECALLBACKS HELDDPalette;
410 DDHAL_DDEXEBUFCALLBACKS cbDDExeBufCallbacks;
411 DDHAL_DDEXEBUFCALLBACKS HALDDExeBuf;
412 DDHAL_DDEXEBUFCALLBACKS HELDDExeBuf;
413 /* there's more... videoport, colorcontrol, misc, and motion compensation callbacks... */
414 } DDHAL_CALLBACKS,*LPDDHAL_CALLBACKS;
416 /*****************************************************************************
417 * parameter structures
419 typedef struct _DDHAL_DESTROYDRIVERDATA {
420 LPDDRAWI_DIRECTDRAW_GBL lpDD;
421 HRESULT ddRVal;
422 LPDDHAL_DESTROYDRIVER DestroyDriver;
423 } DDHAL_DESTROYDRIVERDATA;
425 typedef struct _DDHAL_SETMODEDATA {
426 LPDDRAWI_DIRECTDRAW_GBL lpDD;
427 DWORD dwModeIndex;
428 HRESULT ddRVal;
429 LPDDHAL_SETMODE SetMode;
430 BOOL inexcl;
431 BOOL useRefreshRate;
432 } DDHAL_SETMODEDATA;
434 typedef struct _DDHAL_CREATESURFACEDATA {
435 LPDDRAWI_DIRECTDRAW_GBL lpDD;
436 LPDDSURFACEDESC lpDDSurfaceDesc;
437 LPDDRAWI_DDRAWSURFACE_LCL * lplpSList;
438 DWORD dwSCnt;
439 HRESULT ddRVal;
440 LPDDHAL_CREATESURFACE CreateSurface;
441 } DDHAL_CREATESURFACEDATA;
443 typedef struct _DDHAL_CANCREATESURFACEDATA {
444 LPDDRAWI_DIRECTDRAW_GBL lpDD;
445 LPDDSURFACEDESC lpDDSurfaceDesc;
446 DWORD bIsDifferentPixelFormat;
447 HRESULT ddRVal;
448 LPDDHAL_CANCREATESURFACE CanCreateSurface;
449 } DDHAL_CANCREATESURFACEDATA;
451 typedef struct _DDHAL_CREATEPALETTEDATA {
452 LPDDRAWI_DIRECTDRAW_GBL lpDD;
453 LPDDRAWI_DDRAWPALETTE_GBL lpDDPalette;
454 LPPALETTEENTRY lpColorTable;
455 HRESULT ddRVal;
456 LPDDHAL_CREATEPALETTE CreatePalette;
457 BOOL is_excl;
458 } DDHAL_CREATEPALETTEDATA;
460 typedef struct _DDHAL_SETEXCLUSIVEMODEDATA {
461 LPDDRAWI_DIRECTDRAW_GBL lpDD;
462 DWORD dwEnterExcl;
463 DWORD dwReserved;
464 HRESULT ddRVal;
465 LPDDHAL_SETEXCLUSIVEMODE SetExclusiveMode;
466 } DDHAL_SETEXCLUSIVEMODEDATA;
468 /* surfaces */
469 typedef struct _DDHAL_DESTROYSURFACEDATA {
470 LPDDRAWI_DIRECTDRAW_GBL lpDD;
471 LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface;
472 HRESULT ddRVal;
473 LPDDHALSURFCB_DESTROYSURFACE DestroySurface;
474 } DDHAL_DESTROYSURFACEDATA;
476 typedef struct _DDHAL_BLTDATA {
477 LPDDRAWI_DIRECTDRAW_GBL lpDD;
478 LPDDRAWI_DDRAWSURFACE_LCL lpDDDestSurface;
479 RECTL rDest;
480 LPDDRAWI_DDRAWSURFACE_LCL lpDDSrcSurface;
481 RECTL rSrc;
482 DWORD dwFlags;
483 DWORD dwROPFlags;
484 DDBLTFX bltFX;
485 HRESULT ddRVal;
486 LPDDHALSURFCB_BLT Blt;
487 BOOL IsClipped;
488 RECTL rOrigDest;
489 RECTL rOrigSrc;
490 DWORD dwRectCnt;
491 LPRECT prDestRects;
492 } DDHAL_BLTDATA;
494 typedef struct _DDHAL_SETPALETTEDATA {
495 LPDDRAWI_DIRECTDRAW_GBL lpDD;
496 LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface;
497 LPDDRAWI_DDRAWPALETTE_GBL lpDDPalette;
498 HRESULT ddRVal;
499 LPDDHALSURFCB_SETPALETTE SetPalette;
500 BOOL Attach;
501 } DDHAL_SETPALETTEDATA;
503 /* palettes */
504 typedef struct _DDHAL_DESTROYPALETTEDATA {
505 LPDDRAWI_DIRECTDRAW_GBL lpDD;
506 LPDDRAWI_DDRAWPALETTE_GBL lpDDPalette;
507 HRESULT ddRVal;
508 LPDDHALPALCB_DESTROYPALETTE DestroyPalette;
509 } DDHAL_DESTROYPALETTEDATA;
511 typedef struct _DDHAL_SETENTRIESDATA {
512 LPDDRAWI_DIRECTDRAW_GBL lpDD;
513 LPDDRAWI_DDRAWPALETTE_GBL lpDDPalette;
514 DWORD dwBase;
515 DWORD dwNumEntries;
516 LPPALETTEENTRY lpEntries;
517 HRESULT ddRVal;
518 LPDDHALPALCB_SETENTRIES SetEntries;
519 } DDHAL_SETENTRIESDATA;
521 typedef struct _DDHAL_GETDRIVERINFODATA {
522 DWORD dwSize;
523 DWORD dwFlags;
524 GUID guidInfo;
525 DWORD dwExpectedSize;
526 LPVOID lpvData;
527 DWORD dwActualSize;
528 HRESULT ddRVal;
529 ULONG_PTR dwContext;
530 } DDHAL_GETDRIVERINFODATA;
532 /*****************************************************************************
533 * high-level ddraw implementation structures
535 typedef struct _IUNKNOWN_LIST {
536 struct _IUNKNOWN_LIST * lpLink;
537 LPGUID lpGuid;
538 IUnknown * lpIUnknown;
539 } IUNKNOWN_LIST,*LPIUNKNOWN_LIST;
541 typedef struct _PROCESS_LIST {
542 struct _PROCESS_LIST * lpLink;
543 DWORD dwProcessId;
544 DWORD dwRefCnt;
545 DWORD dwAlphaDepth;
546 DWORD dwZDepth;
547 } PROCESS_LIST,*LPPROCESS_LIST;
549 typedef struct _ATTACHLIST {
550 DWORD dwFlags;
551 struct _ATTACHLIST * lpLink;
552 LPDDRAWI_DDRAWSURFACE_LCL lpAttached;
553 LPDDRAWI_DDRAWSURFACE_INT lpIAttached;
554 } ATTACHLIST,*LPATTACHLIST;
556 #define DDAL_IMPLICIT 0x00000001
558 typedef struct _ACCESSRECTLIST {
559 struct _ACCESSRECTLIST * lpLink;
560 RECT rDest;
561 LPDDRAWI_DIRECTDRAW_LCL lpOwner;
562 LPVOID lpSurfaceData;
563 DWORD dwFlags;
564 LPHEAPALIASINFO lpHeapAliasInfo;
565 } ACCESSRECTLIST,*LPACCESSRECTLIST;
567 #define ACCESSRECT_VRAMSTYLE 0x00000001
568 #define ACCESSRECT_NOTHOLDINGWIN16LOCK 0x00000002
569 #define ACCESSRECT_BROKEN 0x00000004
571 typedef struct _DBLNODE {
572 struct _DBLNODE * next;
573 struct _DBLNODE * prev;
574 LPDDRAWI_DDRAWSURFACE_LCL object;
575 LPDDRAWI_DDRAWSURFACE_INT object_int;
576 } DBLNODE,*LPDBLNODE;
578 typedef struct _DDRAWI_DIRECTDRAW_INT {
579 LPVOID lpVtbl;
580 LPDDRAWI_DIRECTDRAW_LCL lpLcl;
581 LPDDRAWI_DIRECTDRAW_INT lpLink;
582 DWORD dwIntRefCnt;
583 } DDRAWI_DIRECTDRAW_INT;
585 typedef struct _DDRAWI_DIRECTDRAW_LCL {
586 DWORD lpDDMore;
587 LPDDRAWI_DIRECTDRAW_GBL lpGbl;
588 DWORD dwUnused0;
589 DWORD dwLocalFlags;
590 DWORD dwLocalRefCnt;
591 DWORD dwProcessId;
592 IUnknown * pUnkOuter;
593 DWORD dwObsolete1;
594 ULONG_PTR hWnd;
595 ULONG_PTR hDC;
596 DWORD dwErrorMode;
597 LPDDRAWI_DDRAWSURFACE_INT lpPrimary;
598 LPDDRAWI_DDRAWSURFACE_INT lpCB;
599 DWORD dwPreferredMode;
600 /* DirectX 2 */
601 HINSTANCE hD3DInstance;
602 IUnknown * pD3DIUnknown;
603 LPDDHAL_CALLBACKS lpDDCB;
604 ULONG_PTR hDDVxd;
605 /* DirectX 5.0 */
606 DWORD dwAppHackFlags;
607 /* DirectX 5.0A */
608 ULONG_PTR hFocusWnd;
609 DWORD dwHotTracking;
610 DWORD dwIMEState;
611 /* DirectX 6.0 */
612 ULONG_PTR hWndPopup;
613 ULONG_PTR hDD;
614 ULONG_PTR hGammaCalibrator;
615 LPDDGAMMACALIBRATORPROC lpGammaCalibrator;
616 } DDRAWI_DIRECTDRAW_LCL;
618 #define DDRAWILCL_HASEXCLUSIVEMODE 0x00000001
619 #define DDRAWILCL_ISFULLSCREEN 0x00000002
620 #define DDRAWILCL_SETCOOPCALLED 0x00000004
621 #define DDRAWILCL_ACTIVEYES 0x00000008
622 #define DDRAWILCL_ACTIVENO 0x00000010
623 #define DDRAWILCL_HOOKEDHWND 0x00000020
624 #define DDRAWILCL_ALLOWMODEX 0x00000040
625 #define DDRAWILCL_V1SCLBEHAVIOUR 0x00000080
626 #define DDRAWILCL_MODEHASBEENCHANGED 0x00000100
627 #define DDRAWILCL_CREATEDWINDOW 0x00000200
628 #define DDRAWILCL_DIRTYDC 0x00000400
629 #define DDRAWILCL_DISABLEINACTIVATE 0x00000800
630 #define DDRAWILCL_CURSORCLIPPED 0x00001000
631 #define DDRAWILCL_EXPLICITMONITOR 0x00002000
632 #define DDRAWILCL_MULTITHREADED 0x00004000
633 #define DDRAWILCL_FPUSETUP 0x00008000
634 #define DDRAWILCL_POWEREDDOWN 0x00010000
635 #define DDRAWILCL_DIRECTDRAW7 0x00020000
636 #define DDRAWILCL_ATTEMPTEDD3DCONTEXT 0x00040000
637 #define DDRAWILCL_FPUPRESERVE 0x00080000
639 typedef struct _DDRAWI_DIRECTDRAW_GBL {
640 DWORD dwRefCnt;
641 DWORD dwFlags;
642 FLATPTR fpPrimaryOrig;
643 DDCORECAPS ddCaps;
644 DWORD dwInternal1;
645 DWORD dwUnused1[9];
646 LPDDHAL_CALLBACKS lpDDCBtmp;
647 LPDDRAWI_DDRAWSURFACE_INT dsList;
648 LPDDRAWI_DDRAWPALETTE_INT palList;
649 LPDDRAWI_DDRAWCLIPPER_INT clipperList;
650 LPDDRAWI_DIRECTDRAW_GBL lp16DD;
651 DWORD dwMaxOverlays;
652 DWORD dwCurrOverlays;
653 DWORD dwMonitorFrequency;
654 DDCORECAPS ddHELCaps;
655 DWORD dwUnused2[50];
656 DDCOLORKEY ddckCKDestOverlay;
657 DDCOLORKEY ddckCKSrcOverlay;
658 VIDMEMINFO vmiData;
659 LPVOID lpDriverHandle;
660 LPDDRAWI_DIRECTDRAW_LCL lpExclusiveOwner;
661 DWORD dwModeIndex;
662 DWORD dwModeIndexOrig;
663 DWORD dwNumFourCC;
664 LPDWORD lpdwFourCC;
665 DWORD dwNumModes;
666 LPDDHALMODEINFO lpModeInfo;
667 PROCESS_LIST plProcessList;
668 DWORD dwSurfaceLockCount;
669 DWORD dwAliasedLockCnt;
670 ULONG_PTR dwReserved3;
671 ULONG_PTR hDD;
672 char cObsolete[12];
673 DWORD dwReserved1;
674 DWORD dwReserved2;
675 DBLNODE dbnOverlayRoot;
676 volatile LPWORD lpwPDeviceFlags;
677 DWORD dwPDevice;
678 DWORD dwWin16LockCnt;
679 DWORD dwUnused3;
680 DWORD hInstance;
681 DWORD dwEvent16;
682 DWORD dwSaveNumModes;
683 /* DirectX 2 */
684 ULONG_PTR lpD3DGlobalDriverData;
685 ULONG_PTR lpD3DHALCallbacks;
686 DDCORECAPS ddBothCaps;
687 /* DirectX 5.0 */
688 LPDDVIDEOPORTCAPS lpDDVideoPortCaps;
689 LPDDRAWI_DDVIDEOPORT_INT dvpList;
690 ULONG_PTR lpD3DHALCallbacks2;
691 RECT rectDevice;
692 DWORD cMonitors;
693 LPVOID gpbmiSrc;
694 LPVOID gpbmiDest;
695 LPHEAPALIASINFO phaiHeapAliases;
696 ULONG_PTR hKernelHandle;
697 ULONG_PTR pfnNotifyProc;
698 LPDDKERNELCAPS lpDDKernelCaps;
699 LPDDNONLOCALVIDMEMCAPS lpddNLVCaps;
700 LPDDNONLOCALVIDMEMCAPS lpddNLVHELCaps;
701 LPDDNONLOCALVIDMEMCAPS lpddNLVBothCaps;
702 ULONG_PTR lpD3DExtendedCaps;
703 /* DirectX 5.0A */
704 DWORD dwDOSBoxEvent;
705 RECT rectDesktop;
706 char cDriverName[MAX_DRIVER_NAME];
707 /* DirectX 6.0 */
708 ULONG_PTR lpD3DHALCallbacks3;
709 DWORD dwNumZPixelFormats;
710 LPDDPIXELFORMAT lpZPixelFormats;
711 LPDDRAWI_DDMOTIONCOMP_INT mcList;
712 DWORD hDDVxd;
713 DDSCAPSEX ddsCapsMore;
714 } DDRAWI_DIRECTDRAW_GBL;
716 #define DDRAWI_VIRTUALDESKTOP 0x00000008
717 #define DDRAWI_MODEX 0x00000010
718 #define DDRAWI_DISPLAYDRV 0x00000020
719 #define DDRAWI_FULLSCREEN 0x00000040
720 #define DDRAWI_MODECHANGED 0x00000080
721 #define DDRAWI_NOHARDWARE 0x00000100
722 #define DDRAWI_PALETTEINIT 0x00000200
723 #define DDRAWI_NOEMULATION 0x00000400
724 /* more... */
726 /* surfaces */
727 typedef struct _DDRAWI_DDRAWSURFACE_INT {
728 LPVOID lpVtbl;
729 LPDDRAWI_DDRAWSURFACE_LCL lpLcl;
730 LPDDRAWI_DDRAWSURFACE_INT lpLink;
731 DWORD dwIntRefCnt;
732 } DDRAWI_DDRAWSURFACE_INT;
734 typedef struct _DDRAWI_DDRAWSURFACE_GBL {
735 DWORD dwRefCnt;
736 DWORD dwGlobalFlags;
737 union {
738 LPACCESSRECTLIST lpRectList;
739 DWORD dwBlockSizeY;
740 } DUMMYUNIONNAME1;
741 union {
742 LPVMEMHEAP lpVidMemHeap;
743 DWORD dwBlockSizeX;
744 } DUMMYUNIONNAME2;
745 union {
746 LPDDRAWI_DIRECTDRAW_GBL lpDD;
747 LPVOID lpDDHandle;
748 } DUMMYUNIONNAME3;
749 FLATPTR fpVidMem;
750 union {
751 LONG lPitch;
752 DWORD dwLinearSize;
753 } DUMMYUNIONNAME4;
754 WORD wHeight;
755 WORD wWidth;
756 DWORD dwUsageCount;
757 ULONG_PTR dwReserved1; /* for display driver use */
758 /* optional (defaults to primary surface pixelformat) */
759 DDPIXELFORMAT ddpfSurface;
760 } DDRAWI_DDRAWSURFACE_GBL;
762 #define DDRAWISURFGBL_MEMFREE 0x00000001
763 #define DDRAWISURFGBL_SYSMEMREQUESTED 0x00000002
764 #define DDRAWISURFGBL_ISGDISURFACE 0x00000004
765 #define DDRAWISURFGBL_SOFTWAREAUTOFLIP 0x00000008
766 #define DDRAWISURFGBL_LOCKNOTHOLDINGWIN16LOCK 0x00000010
767 #define DDRAWISURFGBL_LOCKVRAMSTYLE 0x00000020
768 #define DDRAWISURFGBL_LOCKBROKEN 0x00000040
769 #define DDRAWISURFGBL_IMPLICITHANDLE 0x00000080
770 #define DDRAWISURFGBL_ISCLIENTMEM 0x00000100
771 #define DDRAWISURFGBL_HARDWAREOPSOURCE 0x00000200
772 #define DDRAWISURFGBL_HARDWAREOPDEST 0x00000400
773 #define DDRAWISURFGBL_HARDWAREOPSTARTED 0x00000600
774 #define DDRAWISURFGBL_VPORTINTERLEAVED 0x00000800
775 #define DDRAWISURFGBL_VPORTDATA 0x00001000
776 #define DDRAWISURFGBL_LATEALLOCATELINEAR 0x00002000
777 #define DDRAWISURFGBL_SYSMEMEXECUTEBUFFER 0x00004000
778 #define DDRAWISURFGBL_FASTLOCKHELD 0x00008000
779 #define DDRAWISURFGBL_READONLYLOCKHELD 0x00010000
781 typedef struct _DDRAWI_DDRAWSURFACE_GBL_MORE {
782 DWORD dwSize;
783 union {
784 DWORD dwPhysicalPageTable;
785 FLATPTR fpPhysicalVidMem;
786 } DUMMYUNIONNAME1;
787 LPDWORD pPageTable;
788 DWORD cPages;
789 ULONG_PTR dwSavedDCContext;
790 FLATPTR fpAliasedVidMem;
791 ULONG_PTR dwDriverReserved;
792 ULONG_PTR dwHELReserved;
793 DWORD cPageUnlocks;
794 ULONG_PTR hKernelSurface;
795 DWORD dwKernelRefCnt;
796 LPDDCOLORCONTROL lpColorInfo;
797 FLATPTR fpNTAlias;
798 DWORD dwContentsStamp;
799 LPVOID lpvUnswappedDriverReserved;
800 LPVOID lpDDRAWReserved2;
801 DWORD dwDDRAWReserved1;
802 DWORD dwDDRAWReserved2;
803 FLATPTR fpAliasOfVidMem;
804 } DDRAWI_DDRAWSURFACE_GBL_MORE;
806 /* the MS version of this macro was somewhat obfuscated and unreadable
807 * (possibly because of mediocre MS coders)... so I simplified it...
808 * (and so I commit no copyright violations either, hah) */
809 #define GET_LPDDRAWSURFACE_GBL_MORE(psurf_gbl) \
810 (*(((LPDDRAWI_DDRAWSURFACE_GBL_MORE *)(psurf_gbl)) - 1))
812 typedef struct _DDRAWI_DDRAWSURFACE_MORE {
813 DWORD dwSize;
814 IUNKNOWN_LIST * lpIUnknowns;
815 LPDDRAWI_DIRECTDRAW_LCL lpDD_lcl;
816 DWORD dwPageLockCount;
817 DWORD dwBytesAllocated;
818 LPDDRAWI_DIRECTDRAW_INT lpDD_int;
819 DWORD dwMipMapCount;
820 LPDDRAWI_DDRAWCLIPPER_INT lpDDIClipper;
821 /* DirectX 5.0 */
822 /* more... */
823 } DDRAWI_DDRAWSURFACE_MORE;
825 typedef struct _DDRAWI_DDRAWSURFACE_LCL {
826 LPDDRAWI_DDRAWSURFACE_MORE lpSurfMore;
827 LPDDRAWI_DDRAWSURFACE_GBL lpGbl;
828 ULONG_PTR hDDSurface;
829 LPATTACHLIST lpAttachList;
830 LPATTACHLIST lpAttachListFrom;
831 DWORD dwLocalRefCnt;
832 DWORD dwProcessId;
833 DWORD dwFlags;
834 DDSCAPS ddsCaps;
835 LPDDRAWI_DDRAWPALETTE_INT lpDDPalette;
836 LPDDRAWI_DDRAWCLIPPER_LCL lpDDClipper;
837 DWORD dwModeCreatedIn;
838 DWORD dwBackBufferCount;
839 DDCOLORKEY ddckCKDestBlt;
840 DDCOLORKEY ddckCKSrcBlt;
841 ULONG_PTR hDC;
842 ULONG_PTR dwReserved1; /* for display driver use */
843 /* overlays only */
844 DDCOLORKEY ddckCKSrcOverlay;
845 DDCOLORKEY ddckCKDestOverlay;
846 LPDDRAWI_DDRAWSURFACE_INT lpSurfaceOverlaying;
847 DBLNODE dbnOverlayNode;
848 RECT rcOverlaySrc;
849 RECT rcOverlayDest;
850 DWORD dwClrXparent;
851 DWORD dwAlpha;
852 LONG lOverlayX;
853 LONG lOverlayY;
854 } DDRAWI_DDRAWSURFACE_LCL;
856 #define DDRAWISURF_ATTACHED 0x00000001
857 #define DDRAWISURF_IMPLICITCREATE 0x00000002
858 #define DDRAWISURF_ISFREE 0x00000004
859 #define DDRAWISURF_ATTACHED_FROM 0x00000008
860 #define DDRAWISURF_IMPLICITROOT 0x00000010
861 #define DDRAWISURF_PARTOFPRIMARYCHAIN 0x00000020
862 #define DDRAWISURF_DATAISALIASED 0x00000040
863 #define DDRAWISURF_HASDC 0x00000080
864 #define DDRAWISURF_HASCKEYDESTOVERLAY 0x00000100
865 #define DDRAWISURF_HASCKEYDESTBLT 0x00000200
866 #define DDRAWISURF_HASCKEYSRCOVERLAY 0x00000400
867 #define DDRAWISURF_HASCKEYSRCBLT 0x00000800
868 #define DDRAWISURF_LOCKEXCLUDEDCURSOR 0x00001000
869 #define DDRAWISURF_HASPIXELFORMAT 0x00002000
870 #define DDRAWISURF_HASOVERLAYDATA 0x00004000
871 #define DDRAWISURF_SETGAMMA 0x00008000
872 /* more... */
873 #define DDRAWISURF_INVALID 0x10000000
875 /* palettes */
876 typedef struct _DDRAWI_DDRAWPALETTE_INT {
877 LPVOID lpVtbl;
878 LPDDRAWI_DDRAWPALETTE_LCL lpLcl;
879 LPDDRAWI_DDRAWPALETTE_INT lpLink;
880 DWORD dwIntRefCnt;
881 } DDRAWI_DDRAWPALETTE_INT;
883 typedef struct _DDRAWI_DDRAWPALETTE_GBL {
884 DWORD dwRefCnt;
885 DWORD dwFlags;
886 LPDDRAWI_DIRECTDRAW_LCL lpDD_lcl;
887 DWORD dwProcessId;
888 LPPALETTEENTRY lpColorTable;
889 union {
890 ULONG_PTR dwReserved1; /* for display driver use */
891 HPALETTE hHELGDIPalette;
892 } DUMMYUNIONNAME1;
893 /* DirectX 5.0 */
894 DWORD dwDriverReserved;
895 DWORD dwContentsStamp;
896 /* DirectX 6.0 */
897 DWORD dwSaveStamp;
898 /* DirectX 7.0 */
899 DWORD dwHandle;
900 } DDRAWI_DDRAWPALETTE_GBL;
902 #define DDRAWIPAL_256 0x00000001
903 #define DDRAWIPAL_16 0x00000002
904 #define DDRAWIPAL_GDI 0x00000004
905 #define DDRAWIPAL_STORED_8 0x00000008
906 #define DDRAWIPAL_STORED_16 0x00000010
907 #define DDRAWIPAL_STORED_24 0x00000020
908 #define DDRAWIPAL_EXCLUSIVE 0x00000040
909 #define DDRAWIPAL_INHEL 0x00000080
910 #define DDRAWIPAL_DIRTY 0x00000100
911 #define DDRAWIPAL_ALLOW256 0x00000200
912 #define DDRAWIPAL_4 0x00000400
913 #define DDRAWIPAL_2 0x00000800
914 #define DDRAWIPAL_STORED_8INDEX 0x00001000
915 #define DDRAWIPAL_ALPHA 0x00002000
917 typedef struct _DDRAWI_DDRAWPALETTE_LCL {
918 DWORD lpPalMore;
919 LPDDRAWI_DDRAWPALETTE_GBL lpGbl;
920 ULONG_PTR dwUnused0;
921 DWORD dwLocalRefCnt;
922 IUnknown * pUnkOuter;
923 LPDDRAWI_DIRECTDRAW_LCL lpDD_lcl;
924 ULONG_PTR dwReserved1;
925 /* DirectX 6.0 */
926 ULONG_PTR dwDDRAWReserved1;
927 ULONG_PTR dwDDRAWReserved2;
928 ULONG_PTR dwDDRAWReserved3;
929 } DDRAWI_DDRAWPALETTE_LCL;
931 #ifdef __cplusplus
932 } /* extern "C" */
933 #endif
935 #endif /* __WINE_DDRAWI_H */