DirectX 5 Redocumentation
A redocumentation of DirectX 5, brought to you by a bunch of Infomaniacs.
ddraw.h
Go to the documentation of this file.
1/*==========================================================================;
2 *
3 * Copyright (C) 1994-1997 Microsoft Corporation. All Rights Reserved.
4 *
5 * File: ddraw.h
6 * Content: DirectDraw include file
7 *
8 ***************************************************************************/
9
10#ifndef __DDRAW_INCLUDED__
11#define __DDRAW_INCLUDED__
12
20#ifndef DIRECTDRAW_VERSION
21#define DIRECTDRAW_VERSION 0x0500
22#endif /* DIRECTDRAW_VERSION */
23
24#if defined( _WIN32 ) && !defined( _NO_COM )
25#define COM_NO_WINDOWS_H
26#include <objbase.h>
27#else
28#define IUnknown void
29#if !defined( NT_BUILD_ENVIRONMENT ) && !defined(WINNT)
30 #define CO_E_NOTINITIALIZED 0x800401F0L
31#endif
32#endif
33
34#define _FACDD 0x876
35#define MAKE_DDHRESULT( code ) MAKE_HRESULT( 1, _FACDD, code )
36
37#ifdef __cplusplus
38extern "C" {
39#endif
40
44#if defined( _WIN32 ) && !defined( _NO_COM )
45DEFINE_GUID( CLSID_DirectDraw, 0xD7B70EE0,0x4340,0x11CF,0xB0,0x63,0x00,0x20,0xAF,0xC2,0xCD,0x35 );
46DEFINE_GUID( CLSID_DirectDrawClipper, 0x593817A0,0x7DB3,0x11CF,0xA2,0xDE,0x00,0xAA,0x00,0xb9,0x33,0x56 );
47DEFINE_GUID( IID_IDirectDraw, 0x6C14DB80,0xA733,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60 );
48DEFINE_GUID( IID_IDirectDraw2, 0xB3A6F3E0,0x2B43,0x11CF,0xA2,0xDE,0x00,0xAA,0x00,0xB9,0x33,0x56 );
49DEFINE_GUID( IID_IDirectDrawSurface, 0x6C14DB81,0xA733,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60 );
50DEFINE_GUID( IID_IDirectDrawSurface2, 0x57805885,0x6eec,0x11cf,0x94,0x41,0xa8,0x23,0x03,0xc1,0x0e,0x27 );
51DEFINE_GUID( IID_IDirectDrawSurface3, 0xDA044E00,0x69B2,0x11D0,0xA1,0xD5,0x00,0xAA,0x00,0xB8,0xDF,0xBB );
52
53DEFINE_GUID( IID_IDirectDrawPalette, 0x6C14DB84,0xA733,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60 );
54DEFINE_GUID( IID_IDirectDrawClipper, 0x6C14DB85,0xA733,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60 );
55DEFINE_GUID( IID_IDirectDrawColorControl, 0x4B9F0EE0,0x0D7E,0x11D0,0x9B,0x06,0x00,0xA0,0xC9,0x03,0xA3,0xB8 );
56
57#endif
58
59/*============================================================================
60 *
61 * DirectDraw Structures
62 *
63 * Various structures used to invoke DirectDraw.
64 *
65 *==========================================================================*/
66
67struct IDirectDraw;
68struct IDirectDrawSurface;
69struct IDirectDrawPalette;
70struct IDirectDrawClipper;
71
72typedef struct IDirectDraw FAR *LPDIRECTDRAW;
73typedef struct IDirectDraw2 FAR *LPDIRECTDRAW2;
74typedef struct IDirectDrawSurface FAR *LPDIRECTDRAWSURFACE;
75typedef struct IDirectDrawSurface2 FAR *LPDIRECTDRAWSURFACE2;
76typedef struct IDirectDrawSurface3 FAR *LPDIRECTDRAWSURFACE3;
77
78typedef struct IDirectDrawPalette FAR *LPDIRECTDRAWPALETTE;
79typedef struct IDirectDrawClipper FAR *LPDIRECTDRAWCLIPPER;
80typedef struct IDirectDrawColorControl FAR *LPDIRECTDRAWCOLORCONTROL;
81
82typedef struct _DDFXROP FAR *LPDDFXROP;
83typedef struct _DDSURFACEDESC FAR *LPDDSURFACEDESC;
85
86/*
87 * API's
88 */
89#if (defined (WIN32) || defined( _WIN32 ) ) && !defined( _NO_COM )
90//#if defined( _WIN32 ) && !defined( _NO_ENUM )
91 typedef BOOL (FAR PASCAL * LPDDENUMCALLBACKA)(GUID FAR *, LPSTR, LPSTR, LPVOID);
92 typedef BOOL (FAR PASCAL * LPDDENUMCALLBACKW)(GUID FAR *, LPWSTR, LPWSTR, LPVOID);
93 extern HRESULT WINAPI DirectDrawEnumerateW( LPDDENUMCALLBACKW lpCallback, LPVOID lpContext );
94 extern HRESULT WINAPI DirectDrawEnumerateA( LPDDENUMCALLBACKA lpCallback, LPVOID lpContext );
95 #ifdef UNICODE
96 typedef LPDDENUMCALLBACKW LPDDENUMCALLBACK;
97 #define DirectDrawEnumerate DirectDrawEnumerateW
98 #else
99 typedef LPDDENUMCALLBACKA LPDDENUMCALLBACK;
100 #define DirectDrawEnumerate DirectDrawEnumerateA
101 #endif
102 extern HRESULT WINAPI DirectDrawCreate( GUID FAR *lpGUID, LPDIRECTDRAW FAR *lplpDD, IUnknown FAR *pUnkOuter );
103 extern HRESULT WINAPI DirectDrawCreateClipper( DWORD dwFlags, LPDIRECTDRAWCLIPPER FAR *lplpDDClipper, IUnknown FAR *pUnkOuter );
104#endif
105
106
107#define REGSTR_KEY_DDHW_DESCRIPTION "Description"
108#define REGSTR_KEY_DDHW_DRIVERNAME "DriverName"
109#define REGSTR_PATH_DDHW "Hardware\\DirectDrawDrivers"
110
111#define DDCREATE_HARDWAREONLY 0x00000001l
112#define DDCREATE_EMULATIONONLY 0x00000002l
113
114#if defined(WINNT) || !defined(WIN32)
115typedef long HRESULT;
116#endif
117
118//#ifndef WINNT
119typedef HRESULT (FAR PASCAL * LPDDENUMMODESCALLBACK)(LPDDSURFACEDESC, LPVOID);
120typedef HRESULT (FAR PASCAL * LPDDENUMSURFACESCALLBACK)(LPDIRECTDRAWSURFACE, LPDDSURFACEDESC, LPVOID);
121//#endif
122/*
123 * DDCOLORKEY
124 */
125typedef struct _DDCOLORKEY
126{
132
134
136typedef struct _DDBLTFX
137{
148 union
149 {
152 };
154 union
155 {
158 };
163 union
164 {
167 };
169 union
170 {
173 };
174 union
175 {
180 };
184
185typedef DDBLTFX FAR* LPDDBLTFX;
186
187
188/*
189 * DDSCAPS
190 */
191typedef struct _DDSCAPS
192{
195
196typedef DDSCAPS FAR* LPDDSCAPS;
197
198/*
199 * DDCAPS
200 */
201#define DD_ROP_SPACE (256/32)
202
203#if DIRECTDRAW_VERSION >= 0x0500
208typedef struct _DDCAPS_DX3
209{
235 DWORD dwRops[DD_ROP_SPACE]; // ROPS! supported
263#endif /* DIRECTDRAW_VERSION >= 0x0500 */
264
265// FIXME: document the offsets
266typedef struct _DDCAPS
267{
268/* 0*/ DWORD dwSize;
269/* 4*/ DWORD dwCaps;
316#if DIRECTDRAW_VERSION >= 0x0500
325#else /* DIRECTDRAW_VERSION >= 0x0500 */
326/*130*/ DWORD dwReserved4;
327/*134*/ DWORD dwReserved5;
328/*138*/ DWORD dwReserved6;
329#endif /* DIRECTDRAW_VERSION >= 0x0500 */
331
332typedef DDCAPS FAR* LPDDCAPS;
333
334
335
336/*
337 * DDPIXELFORMAT
338 */
339typedef struct _DDPIXELFORMAT
340{
344 union
345 {
350 };
351 union
352 {
355 };
356 /*24*/union
357 {
360 };
361 union
362 {
365 };
366 union
367 {
372 };
374
376
377/*
378 * DDOVERLAYFX
379 */
380typedef struct _DDOVERLAYFX
381{
382 DWORD dwSize; // size of structure
383 DWORD dwAlphaEdgeBlendBitDepth; // Bit depth used to specify constant for alpha edge blend
384 DWORD dwAlphaEdgeBlend; // Constant to use as alpha for edge blend
386 DWORD dwAlphaDestConstBitDepth; // Bit depth used to specify alpha constant for destination
387 union
388 {
389 DWORD dwAlphaDestConst; // Constant to use as alpha channel for dest
390 LPDIRECTDRAWSURFACE lpDDSAlphaDest; // Surface to use as alpha channel for dest
391 };
392 DWORD dwAlphaSrcConstBitDepth; // Bit depth used to specify alpha constant for source
393 union
394 {
395 DWORD dwAlphaSrcConst; // Constant to use as alpha channel for src
396 LPDIRECTDRAWSURFACE lpDDSAlphaSrc; // Surface to use as alpha channel for src
397 };
398 DDCOLORKEY dckDestColorkey; // DestColorkey override
399 DDCOLORKEY dckSrcColorkey; // DestColorkey override
400 DWORD dwDDFX; // Overlay FX
401 DWORD dwFlags; // flags
403
405
406/*
407 * DDBLTBATCH: BltBatch entry structure
408 */
409typedef struct _DDBLTBATCH
410{
411 LPRECT lprDest;
413 LPRECT lprSrc;
417
419
420/*
421 * callbacks
422 */
423typedef DWORD (FAR PASCAL *LPCLIPPERCALLBACK)(LPDIRECTDRAWCLIPPER lpDDClipper, HWND hWnd, DWORD code, LPVOID lpContext );
424#ifdef STREAMING
425typedef DWORD (FAR PASCAL *LPSURFACESTREAMINGCALLBACK)(DWORD);
426#endif
427
428
429/*
430 * INTERACES FOLLOW:
431 * IDirectDraw
432 * IDirectDrawClipper
433 * IDirectDrawPalette
434 * IDirectDrawSurface
435 */
436
437/*
438 * IDirectDraw
439 */
440#if defined( _WIN32 ) && !defined( _NO_COM )
441#undef INTERFACE
442#define INTERFACE IDirectDraw
443DECLARE_INTERFACE_( IDirectDraw, IUnknown )
444{
445 /*** IUnknown methods ***/
446 STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE;
447 STDMETHOD_(ULONG,AddRef) (THIS) PURE;
448 STDMETHOD_(ULONG,Release) (THIS) PURE;
449 /*** IDirectDraw methods ***/
450 STDMETHOD(Compact)(THIS) PURE;
451 STDMETHOD(CreateClipper)(THIS_ DWORD, LPDIRECTDRAWCLIPPER FAR*, IUnknown FAR * ) PURE;
452 STDMETHOD(CreatePalette)(THIS_ DWORD, LPPALETTEENTRY, LPDIRECTDRAWPALETTE FAR*, IUnknown FAR * ) PURE;
453 STDMETHOD(CreateSurface)(THIS_ LPDDSURFACEDESC, LPDIRECTDRAWSURFACE FAR *, IUnknown FAR *) PURE;
454 STDMETHOD(DuplicateSurface)( THIS_ LPDIRECTDRAWSURFACE, LPDIRECTDRAWSURFACE FAR * ) PURE;
455 STDMETHOD(EnumDisplayModes)( THIS_ DWORD, LPDDSURFACEDESC, LPVOID, LPDDENUMMODESCALLBACK ) PURE;
456 STDMETHOD(EnumSurfaces)(THIS_ DWORD, LPDDSURFACEDESC, LPVOID,LPDDENUMSURFACESCALLBACK ) PURE;
457 STDMETHOD(FlipToGDISurface)(THIS) PURE;
458 STDMETHOD(GetCaps)( THIS_ LPDDCAPS, LPDDCAPS) PURE;
459 STDMETHOD(GetDisplayMode)( THIS_ LPDDSURFACEDESC) PURE;
460 STDMETHOD(GetFourCCCodes)(THIS_ LPDWORD, LPDWORD ) PURE;
461 STDMETHOD(GetGDISurface)(THIS_ LPDIRECTDRAWSURFACE FAR *) PURE;
462 STDMETHOD(GetMonitorFrequency)(THIS_ LPDWORD) PURE;
463 STDMETHOD(GetScanLine)(THIS_ LPDWORD) PURE;
464 STDMETHOD(GetVerticalBlankStatus)(THIS_ LPBOOL ) PURE;
465 STDMETHOD(Initialize)(THIS_ GUID FAR *) PURE;
466 STDMETHOD(RestoreDisplayMode)(THIS) PURE;
467 STDMETHOD(SetCooperativeLevel)(THIS_ HWND, DWORD) PURE;
468 STDMETHOD(SetDisplayMode)(THIS_ DWORD, DWORD,DWORD) PURE;
469 STDMETHOD(WaitForVerticalBlank)(THIS_ DWORD, HANDLE ) PURE;
470};
471
472#if !defined(__cplusplus) || defined(CINTERFACE)
473#define IDirectDraw_QueryInterface(p, a, b) (p)->lpVtbl->QueryInterface(p, a, b)
474#define IDirectDraw_AddRef(p) (p)->lpVtbl->AddRef(p)
475#define IDirectDraw_Release(p) (p)->lpVtbl->Release(p)
476#define IDirectDraw_Compact(p) (p)->lpVtbl->Compact(p)
477#define IDirectDraw_CreateClipper(p, a, b, c) (p)->lpVtbl->CreateClipper(p, a, b, c)
478#define IDirectDraw_CreatePalette(p, a, b, c, d) (p)->lpVtbl->CreatePalette(p, a, b, c, d)
479#define IDirectDraw_CreateSurface(p, a, b, c) (p)->lpVtbl->CreateSurface(p, a, b, c)
480#define IDirectDraw_DuplicateSurface(p, a, b) (p)->lpVtbl->DuplicateSurface(p, a, b)
481#define IDirectDraw_EnumDisplayModes(p, a, b, c, d) (p)->lpVtbl->EnumDisplayModes(p, a, b, c, d)
482#define IDirectDraw_EnumSurfaces(p, a, b, c, d) (p)->lpVtbl->EnumSurfaces(p, a, b, c, d)
483#define IDirectDraw_FlipToGDISurface(p) (p)->lpVtbl->FlipToGDISurface(p)
484#define IDirectDraw_GetCaps(p, a, b) (p)->lpVtbl->GetCaps(p, a, b)
485#define IDirectDraw_GetDisplayMode(p, a) (p)->lpVtbl->GetDisplayMode(p, a)
486#define IDirectDraw_GetFourCCCodes(p, a, b) (p)->lpVtbl->GetFourCCCodes(p, a, b)
487#define IDirectDraw_GetGDISurface(p, a) (p)->lpVtbl->GetGDISurface(p, a)
488#define IDirectDraw_GetMonitorFrequency(p, a) (p)->lpVtbl->GetMonitorFrequency(p, a)
489#define IDirectDraw_GetScanLine(p, a) (p)->lpVtbl->GetScanLine(p, a)
490#define IDirectDraw_GetVerticalBlankStatus(p, a) (p)->lpVtbl->GetVerticalBlankStatus(p, a)
491#define IDirectDraw_Initialize(p, a) (p)->lpVtbl->Initialize(p, a)
492#define IDirectDraw_RestoreDisplayMode(p) (p)->lpVtbl->RestoreDisplayMode(p)
493#define IDirectDraw_SetCooperativeLevel(p, a, b) (p)->lpVtbl->SetCooperativeLevel(p, a, b)
494#define IDirectDraw_SetDisplayMode(p, a, b, c) (p)->lpVtbl->SetDisplayMode(p, a, b, c)
495#define IDirectDraw_WaitForVerticalBlank(p, a, b) (p)->lpVtbl->WaitForVerticalBlank(p, a, b)
496#else
497#define IDirectDraw_QueryInterface(p, a, b) (p)->QueryInterface(a, b)
498#define IDirectDraw_AddRef(p) (p)->AddRef()
499#define IDirectDraw_Release(p) (p)->Release()
500#define IDirectDraw_Compact(p) (p)->Compact()
501#define IDirectDraw_CreateClipper(p, a, b, c) (p)->CreateClipper(a, b, c)
502#define IDirectDraw_CreatePalette(p, a, b, c, d) (p)->CreatePalette(a, b, c, d)
503#define IDirectDraw_CreateSurface(p, a, b, c) (p)->CreateSurface(a, b, c)
504#define IDirectDraw_DuplicateSurface(p, a, b) (p)->DuplicateSurface(a, b)
505#define IDirectDraw_EnumDisplayModes(p, a, b, c, d) (p)->EnumDisplayModes(a, b, c, d)
506#define IDirectDraw_EnumSurfaces(p, a, b, c, d) (p)->EnumSurfaces(a, b, c, d)
507#define IDirectDraw_FlipToGDISurface(p) (p)->FlipToGDISurface()
508#define IDirectDraw_GetCaps(p, a, b) (p)->GetCaps(a, b)
509#define IDirectDraw_GetDisplayMode(p, a) (p)->GetDisplayMode(a)
510#define IDirectDraw_GetFourCCCodes(p, a, b) (p)->GetFourCCCodes(a, b)
511#define IDirectDraw_GetGDISurface(p, a) (p)->GetGDISurface(a)
512#define IDirectDraw_GetMonitorFrequency(p, a) (p)->GetMonitorFrequency(a)
513#define IDirectDraw_GetScanLine(p, a) (p)->GetScanLine(a)
514#define IDirectDraw_GetVerticalBlankStatus(p, a) (p)->GetVerticalBlankStatus(a)
515#define IDirectDraw_Initialize(p, a) (p)->Initialize(a)
516#define IDirectDraw_RestoreDisplayMode(p) (p)->RestoreDisplayMode()
517#define IDirectDraw_SetCooperativeLevel(p, a, b) (p)->SetCooperativeLevel(a, b)
518#define IDirectDraw_SetDisplayMode(p, a, b, c) (p)->SetDisplayMode(a, b, c)
519#define IDirectDraw_WaitForVerticalBlank(p, a, b) (p)->WaitForVerticalBlank(a, b)
520#endif
521
522#endif
523
524#if defined( _WIN32 ) && !defined( _NO_COM )
525#undef INTERFACE
526#define INTERFACE IDirectDraw2
527DECLARE_INTERFACE_( IDirectDraw2, IUnknown )
528{
529 /*** IUnknown methods ***/
530 STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE;
531 STDMETHOD_(ULONG,AddRef) (THIS) PURE;
532 STDMETHOD_(ULONG,Release) (THIS) PURE;
533 /*** IDirectDraw methods ***/
534 STDMETHOD(Compact)(THIS) PURE;
535 STDMETHOD(CreateClipper)(THIS_ DWORD, LPDIRECTDRAWCLIPPER FAR*, IUnknown FAR * ) PURE;
536 STDMETHOD(CreatePalette)(THIS_ DWORD, LPPALETTEENTRY, LPDIRECTDRAWPALETTE FAR*, IUnknown FAR * ) PURE;
537 STDMETHOD(CreateSurface)(THIS_ LPDDSURFACEDESC, LPDIRECTDRAWSURFACE FAR *, IUnknown FAR *) PURE;
538 STDMETHOD(DuplicateSurface)( THIS_ LPDIRECTDRAWSURFACE, LPDIRECTDRAWSURFACE FAR * ) PURE;
539 STDMETHOD(EnumDisplayModes)( THIS_ DWORD, LPDDSURFACEDESC, LPVOID, LPDDENUMMODESCALLBACK ) PURE;
540 STDMETHOD(EnumSurfaces)(THIS_ DWORD, LPDDSURFACEDESC, LPVOID,LPDDENUMSURFACESCALLBACK ) PURE;
541 STDMETHOD(FlipToGDISurface)(THIS) PURE;
542 STDMETHOD(GetCaps)( THIS_ LPDDCAPS, LPDDCAPS) PURE;
543 STDMETHOD(GetDisplayMode)( THIS_ LPDDSURFACEDESC) PURE;
544 STDMETHOD(GetFourCCCodes)(THIS_ LPDWORD, LPDWORD ) PURE;
545 STDMETHOD(GetGDISurface)(THIS_ LPDIRECTDRAWSURFACE FAR *) PURE;
546 STDMETHOD(GetMonitorFrequency)(THIS_ LPDWORD) PURE;
547 STDMETHOD(GetScanLine)(THIS_ LPDWORD) PURE;
548 STDMETHOD(GetVerticalBlankStatus)(THIS_ LPBOOL ) PURE;
549 STDMETHOD(Initialize)(THIS_ GUID FAR *) PURE;
550 STDMETHOD(RestoreDisplayMode)(THIS) PURE;
551 STDMETHOD(SetCooperativeLevel)(THIS_ HWND, DWORD) PURE;
552 STDMETHOD(SetDisplayMode)(THIS_ DWORD, DWORD,DWORD, DWORD, DWORD) PURE;
553 STDMETHOD(WaitForVerticalBlank)(THIS_ DWORD, HANDLE ) PURE;
554 /*** Added in the v2 interface ***/
555 STDMETHOD(GetAvailableVidMem)(THIS_ LPDDSCAPS, LPDWORD, LPDWORD) PURE;
556};
557#if !defined(__cplusplus) || defined(CINTERFACE)
558#define IDirectDraw2_QueryInterface(p, a, b) (p)->lpVtbl->QueryInterface(p, a, b)
559#define IDirectDraw2_AddRef(p) (p)->lpVtbl->AddRef(p)
560#define IDirectDraw2_Release(p) (p)->lpVtbl->Release(p)
561#define IDirectDraw2_Compact(p) (p)->lpVtbl->Compact(p)
562#define IDirectDraw2_CreateClipper(p, a, b, c) (p)->lpVtbl->CreateClipper(p, a, b, c)
563#define IDirectDraw2_CreatePalette(p, a, b, c, d) (p)->lpVtbl->CreatePalette(p, a, b, c, d)
564#define IDirectDraw2_CreateSurface(p, a, b, c) (p)->lpVtbl->CreateSurface(p, a, b, c)
565#define IDirectDraw2_DuplicateSurface(p, a, b) (p)->lpVtbl->DuplicateSurface(p, a, b)
566#define IDirectDraw2_EnumDisplayModes(p, a, b, c, d) (p)->lpVtbl->EnumDisplayModes(p, a, b, c, d)
567#define IDirectDraw2_EnumSurfaces(p, a, b, c, d) (p)->lpVtbl->EnumSurfaces(p, a, b, c, d)
568#define IDirectDraw2_FlipToGDISurface(p) (p)->lpVtbl->FlipToGDISurface(p)
569#define IDirectDraw2_GetCaps(p, a, b) (p)->lpVtbl->GetCaps(p, a, b)
570#define IDirectDraw2_GetDisplayMode(p, a) (p)->lpVtbl->GetDisplayMode(p, a)
571#define IDirectDraw2_GetFourCCCodes(p, a, b) (p)->lpVtbl->GetFourCCCodes(p, a, b)
572#define IDirectDraw2_GetGDISurface(p, a) (p)->lpVtbl->GetGDISurface(p, a)
573#define IDirectDraw2_GetMonitorFrequency(p, a) (p)->lpVtbl->GetMonitorFrequency(p, a)
574#define IDirectDraw2_GetScanLine(p, a) (p)->lpVtbl->GetScanLine(p, a)
575#define IDirectDraw2_GetVerticalBlankStatus(p, a) (p)->lpVtbl->GetVerticalBlankStatus(p, a)
576#define IDirectDraw2_Initialize(p, a) (p)->lpVtbl->Initialize(p, a)
577#define IDirectDraw2_RestoreDisplayMode(p) (p)->lpVtbl->RestoreDisplayMode(p)
578#define IDirectDraw2_SetCooperativeLevel(p, a, b) (p)->lpVtbl->SetCooperativeLevel(p, a, b)
579#define IDirectDraw2_SetDisplayMode(p, a, b, c, d, e) (p)->lpVtbl->SetDisplayMode(p, a, b, c, d, e)
580#define IDirectDraw2_WaitForVerticalBlank(p, a, b) (p)->lpVtbl->WaitForVerticalBlank(p, a, b)
581#define IDirectDraw2_GetAvailableVidMem(p, a, b, c) (p)->lpVtbl->GetAvailableVidMem(p, a, b, c)
582#else
583#define IDirectDraw2_QueryInterface(p, a, b) (p)->QueryInterface(a, b)
584#define IDirectDraw2_AddRef(p) (p)->AddRef()
585#define IDirectDraw2_Release(p) (p)->Release()
586#define IDirectDraw2_Compact(p) (p)->Compact()
587#define IDirectDraw2_CreateClipper(p, a, b, c) (p)->CreateClipper(a, b, c)
588#define IDirectDraw2_CreatePalette(p, a, b, c, d) (p)->CreatePalette(a, b, c, d)
589#define IDirectDraw2_CreateSurface(p, a, b, c) (p)->CreateSurface(a, b, c)
590#define IDirectDraw2_DuplicateSurface(p, a, b) (p)->DuplicateSurface(a, b)
591#define IDirectDraw2_EnumDisplayModes(p, a, b, c, d) (p)->EnumDisplayModes(a, b, c, d)
592#define IDirectDraw2_EnumSurfaces(p, a, b, c, d) (p)->EnumSurfaces(a, b, c, d)
593#define IDirectDraw2_FlipToGDISurface(p) (p)->FlipToGDISurface()
594#define IDirectDraw2_GetCaps(p, a, b) (p)->GetCaps(a, b)
595#define IDirectDraw2_GetDisplayMode(p, a) (p)->GetDisplayMode(a)
596#define IDirectDraw2_GetFourCCCodes(p, a, b) (p)->GetFourCCCodes(a, b)
597#define IDirectDraw2_GetGDISurface(p, a) (p)->GetGDISurface(a)
598#define IDirectDraw2_GetMonitorFrequency(p, a) (p)->GetMonitorFrequency(a)
599#define IDirectDraw2_GetScanLine(p, a) (p)->GetScanLine(a)
600#define IDirectDraw2_GetVerticalBlankStatus(p, a) (p)->GetVerticalBlankStatus(a)
601#define IDirectDraw2_Initialize(p, a) (p)->Initialize(a)
602#define IDirectDraw2_RestoreDisplayMode(p) (p)->RestoreDisplayMode()
603#define IDirectDraw2_SetCooperativeLevel(p, a, b) (p)->SetCooperativeLevel(a, b)
604#define IDirectDraw2_SetDisplayMode(p, a, b, c, d, e) (p)->SetDisplayMode(a, b, c, d, e)
605#define IDirectDraw2_WaitForVerticalBlank(p, a, b) (p)->WaitForVerticalBlank(a, b)
606#define IDirectDraw2_GetAvailableVidMem(p, a, b, c) (p)->GetAvailableVidMem(a, b, c)
607#endif
608
609#endif
610
611/*
612 * IDirectDrawPalette
613 */
614#if defined( _WIN32 ) && !defined( _NO_COM )
615#undef INTERFACE
616#define INTERFACE IDirectDrawPalette
617DECLARE_INTERFACE_( IDirectDrawPalette, IUnknown )
618{
619 /*** IUnknown methods ***/
620 STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE;
621 STDMETHOD_(ULONG,AddRef) (THIS) PURE;
622 STDMETHOD_(ULONG,Release) (THIS) PURE;
623 /*** IDirectDrawPalette methods ***/
624 STDMETHOD(GetCaps)(THIS_ LPDWORD) PURE;
625 STDMETHOD(GetEntries)(THIS_ DWORD,DWORD,DWORD,LPPALETTEENTRY) PURE;
626 STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW, DWORD, LPPALETTEENTRY) PURE;
627 STDMETHOD(SetEntries)(THIS_ DWORD,DWORD,DWORD,LPPALETTEENTRY) PURE;
628};
629
630#if !defined(__cplusplus) || defined(CINTERFACE)
631#define IDirectDrawPalette_QueryInterface(p, a, b) (p)->lpVtbl->QueryInterface(p, a, b)
632#define IDirectDrawPalette_AddRef(p) (p)->lpVtbl->AddRef(p)
633#define IDirectDrawPalette_Release(p) (p)->lpVtbl->Release(p)
634#define IDirectDrawPalette_GetCaps(p, a) (p)->lpVtbl->GetCaps(p, a)
635#define IDirectDrawPalette_GetEntries(p, a, b, c, d) (p)->lpVtbl->GetEntries(p, a, b, c, d)
636#define IDirectDrawPalette_Initialize(p, a, b, c) (p)->lpVtbl->Initialize(p, a, b, c)
637#define IDirectDrawPalette_SetEntries(p, a, b, c, d) (p)->lpVtbl->SetEntries(p, a, b, c, d)
638#else
639#define IDirectDrawPalette_QueryInterface(p, a, b) (p)->QueryInterface(a, b)
640#define IDirectDrawPalette_AddRef(p) (p)->AddRef()
641#define IDirectDrawPalette_Release(p) (p)->Release()
642#define IDirectDrawPalette_GetCaps(p, a) (p)->GetCaps(a)
643#define IDirectDrawPalette_GetEntries(p, a, b, c, d) (p)->GetEntries(a, b, c, d)
644#define IDirectDrawPalette_Initialize(p, a, b, c) (p)->Initialize(a, b, c)
645#define IDirectDrawPalette_SetEntries(p, a, b, c, d) (p)->SetEntries(a, b, c, d)
646#endif
647
648#endif
649
650/*
651 * IDirectDrawClipper
652 */
653#if defined( _WIN32 ) && !defined( _NO_COM )
654#undef INTERFACE
655#define INTERFACE IDirectDrawClipper
656DECLARE_INTERFACE_( IDirectDrawClipper, IUnknown )
657{
658 /*** IUnknown methods ***/
659 STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE;
660 STDMETHOD_(ULONG,AddRef) (THIS) PURE;
661 STDMETHOD_(ULONG,Release) (THIS) PURE;
662 /*** IDirectDrawClipper methods ***/
663 STDMETHOD(GetClipList)(THIS_ LPRECT, LPRGNDATA, LPDWORD) PURE;
664 STDMETHOD(GetHWnd)(THIS_ HWND FAR *) PURE;
665 STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW, DWORD) PURE;
666 STDMETHOD(IsClipListChanged)(THIS_ BOOL FAR *) PURE;
667 STDMETHOD(SetClipList)(THIS_ LPRGNDATA,DWORD) PURE;
668 STDMETHOD(SetHWnd)(THIS_ DWORD, HWND ) PURE;
669};
670
671#if !defined(__cplusplus) || defined(CINTERFACE)
672#define IDirectDrawClipper_QueryInterface(p, a, b) (p)->lpVtbl->QueryInterface(p, a, b)
673#define IDirectDrawClipper_AddRef(p) (p)->lpVtbl->AddRef(p)
674#define IDirectDrawClipper_Release(p) (p)->lpVtbl->Release(p)
675#define IDirectDrawClipper_GetClipList(p, a, b, c) (p)->lpVtbl->GetClipList(p, a, b, c)
676#define IDirectDrawClipper_GetHWnd(p, a) (p)->lpVtbl->GetHWnd(p, a)
677#define IDirectDrawClipper_Initialize(p, a, b) (p)->lpVtbl->Initialize(p, a, b)
678#define IDirectDrawClipper_IsClipListChanged(p, a) (p)->lpVtbl->IsClipListChanged(p, a)
679#define IDirectDrawClipper_SetClipList(p, a, b) (p)->lpVtbl->SetClipList(p, a, b)
680#define IDirectDrawClipper_SetHWnd(p, a, b) (p)->lpVtbl->SetHWnd(p, a, b)
681#else
682#define IDirectDrawClipper_QueryInterface(p, a, b) (p)->QueryInterface(a, b)
683#define IDirectDrawClipper_AddRef(p) (p)->AddRef()
684#define IDirectDrawClipper_Release(p) (p)->Release()
685#define IDirectDrawClipper_GetClipList(p, a, b, c) (p)->GetClipList(a, b, c)
686#define IDirectDrawClipper_GetHWnd(p, a) (p)->GetHWnd(a)
687#define IDirectDrawClipper_Initialize(p, a, b) (p)->Initialize(a, b)
688#define IDirectDrawClipper_IsClipListChanged(p, a) (p)->IsClipListChanged(a)
689#define IDirectDrawClipper_SetClipList(p, a, b) (p)->SetClipList(a, b)
690#define IDirectDrawClipper_SetHWnd(p, a, b) (p)->SetHWnd(a, b)
691#endif
692
693#endif
694
695/*
696 * IDirectDrawSurface and related interfaces
697 */
698#if defined( _WIN32 ) && !defined( _NO_COM )
699#undef INTERFACE
700#define INTERFACE IDirectDrawSurface
701DECLARE_INTERFACE_( IDirectDrawSurface, IUnknown )
702{
703 /*** IUnknown methods ***/
704 STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE;
705 STDMETHOD_(ULONG,AddRef) (THIS) PURE;
706 STDMETHOD_(ULONG,Release) (THIS) PURE;
707 /*** IDirectDrawSurface methods ***/
708 STDMETHOD(AddAttachedSurface)(THIS_ LPDIRECTDRAWSURFACE) PURE;
709 STDMETHOD(AddOverlayDirtyRect)(THIS_ LPRECT) PURE;
710 STDMETHOD(Blt)(THIS_ LPRECT,LPDIRECTDRAWSURFACE, LPRECT,DWORD, LPDDBLTFX) PURE;
711 STDMETHOD(BltBatch)(THIS_ LPDDBLTBATCH, DWORD, DWORD ) PURE;
712 STDMETHOD(BltFast)(THIS_ DWORD,DWORD,LPDIRECTDRAWSURFACE, LPRECT,DWORD) PURE;
713 STDMETHOD(DeleteAttachedSurface)(THIS_ DWORD,LPDIRECTDRAWSURFACE) PURE;
714 STDMETHOD(EnumAttachedSurfaces)(THIS_ LPVOID,LPDDENUMSURFACESCALLBACK) PURE;
715 STDMETHOD(EnumOverlayZOrders)(THIS_ DWORD,LPVOID,LPDDENUMSURFACESCALLBACK) PURE;
716 STDMETHOD(Flip)(THIS_ LPDIRECTDRAWSURFACE, DWORD) PURE;
717 STDMETHOD(GetAttachedSurface)(THIS_ LPDDSCAPS, LPDIRECTDRAWSURFACE FAR *) PURE;
718 STDMETHOD(GetBltStatus)(THIS_ DWORD) PURE;
719 STDMETHOD(GetCaps)(THIS_ LPDDSCAPS) PURE;
720 STDMETHOD(GetClipper)(THIS_ LPDIRECTDRAWCLIPPER FAR*) PURE;
721 STDMETHOD(GetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE;
722 STDMETHOD(GetDC)(THIS_ HDC FAR *) PURE;
723 STDMETHOD(GetFlipStatus)(THIS_ DWORD) PURE;
724 STDMETHOD(GetOverlayPosition)(THIS_ LPLONG, LPLONG ) PURE;
725 STDMETHOD(GetPalette)(THIS_ LPDIRECTDRAWPALETTE FAR*) PURE;
726 STDMETHOD(GetPixelFormat)(THIS_ LPDDPIXELFORMAT) PURE;
727 STDMETHOD(GetSurfaceDesc)(THIS_ LPDDSURFACEDESC) PURE;
728 STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW, LPDDSURFACEDESC) PURE;
729 STDMETHOD(IsLost)(THIS) PURE;
730 STDMETHOD(Lock)(THIS_ LPRECT,LPDDSURFACEDESC,DWORD,HANDLE) PURE;
731 STDMETHOD(ReleaseDC)(THIS_ HDC) PURE;
732 STDMETHOD(Restore)(THIS) PURE;
733 STDMETHOD(SetClipper)(THIS_ LPDIRECTDRAWCLIPPER) PURE;
734 STDMETHOD(SetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE;
735 STDMETHOD(SetOverlayPosition)(THIS_ LONG, LONG ) PURE;
736 STDMETHOD(SetPalette)(THIS_ LPDIRECTDRAWPALETTE) PURE;
737 STDMETHOD(Unlock)(THIS_ LPVOID) PURE;
738 STDMETHOD(UpdateOverlay)(THIS_ LPRECT, LPDIRECTDRAWSURFACE,LPRECT,DWORD, LPDDOVERLAYFX) PURE;
739 STDMETHOD(UpdateOverlayDisplay)(THIS_ DWORD) PURE;
740 STDMETHOD(UpdateOverlayZOrder)(THIS_ DWORD, LPDIRECTDRAWSURFACE) PURE;
741};
742
743#if !defined(__cplusplus) || defined(CINTERFACE)
744#define IDirectDrawSurface_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
745#define IDirectDrawSurface_AddRef(p) (p)->lpVtbl->AddRef(p)
746#define IDirectDrawSurface_Release(p) (p)->lpVtbl->Release(p)
747#define IDirectDrawSurface_AddAttachedSurface(p,a) (p)->lpVtbl->AddAttachedSurface(p,a)
748#define IDirectDrawSurface_AddOverlayDirtyRect(p,a) (p)->lpVtbl->AddOverlayDirtyRect(p,a)
749#define IDirectDrawSurface_Blt(p,a,b,c,d,e) (p)->lpVtbl->Blt(p,a,b,c,d,e)
750#define IDirectDrawSurface_BltBatch(p,a,b,c) (p)->lpVtbl->BltBatch(p,a,b,c)
751#define IDirectDrawSurface_BltFast(p,a,b,c,d,e) (p)->lpVtbl->BltFast(p,a,b,c,d,e)
752#define IDirectDrawSurface_DeleteAttachedSurface(p,a,b) (p)->lpVtbl->DeleteAttachedSurface(p,a,b)
753#define IDirectDrawSurface_EnumAttachedSurfaces(p,a,b) (p)->lpVtbl->EnumAttachedSurfaces(p,a,b)
754#define IDirectDrawSurface_EnumOverlayZOrders(p,a,b,c) (p)->lpVtbl->EnumOverlayZOrders(p,a,b,c)
755#define IDirectDrawSurface_Flip(p,a,b) (p)->lpVtbl->Flip(p,a,b)
756#define IDirectDrawSurface_GetAttachedSurface(p,a,b) (p)->lpVtbl->GetAttachedSurface(p,a,b)
757#define IDirectDrawSurface_GetBltStatus(p,a) (p)->lpVtbl->GetBltStatus(p,a)
758#define IDirectDrawSurface_GetCaps(p,b) (p)->lpVtbl->GetCaps(p,b)
759#define IDirectDrawSurface_GetClipper(p,a) (p)->lpVtbl->GetClipper(p,a)
760#define IDirectDrawSurface_GetColorKey(p,a,b) (p)->lpVtbl->GetColorKey(p,a,b)
761#define IDirectDrawSurface_GetDC(p,a) (p)->lpVtbl->GetDC(p,a)
762#define IDirectDrawSurface_GetFlipStatus(p,a) (p)->lpVtbl->GetFlipStatus(p,a)
763#define IDirectDrawSurface_GetOverlayPosition(p,a,b) (p)->lpVtbl->GetOverlayPosition(p,a,b)
764#define IDirectDrawSurface_GetPalette(p,a) (p)->lpVtbl->GetPalette(p,a)
765#define IDirectDrawSurface_GetPixelFormat(p,a) (p)->lpVtbl->GetPixelFormat(p,a)
766#define IDirectDrawSurface_GetSurfaceDesc(p,a) (p)->lpVtbl->GetSurfaceDesc(p,a)
767#define IDirectDrawSurface_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b)
768#define IDirectDrawSurface_IsLost(p) (p)->lpVtbl->IsLost(p)
769#define IDirectDrawSurface_Lock(p,a,b,c,d) (p)->lpVtbl->Lock(p,a,b,c,d)
770#define IDirectDrawSurface_ReleaseDC(p,a) (p)->lpVtbl->ReleaseDC(p,a)
771#define IDirectDrawSurface_Restore(p) (p)->lpVtbl->Restore(p)
772#define IDirectDrawSurface_SetClipper(p,a) (p)->lpVtbl->SetClipper(p,a)
773#define IDirectDrawSurface_SetColorKey(p,a,b) (p)->lpVtbl->SetColorKey(p,a,b)
774#define IDirectDrawSurface_SetOverlayPosition(p,a,b) (p)->lpVtbl->SetOverlayPosition(p,a,b)
775#define IDirectDrawSurface_SetPalette(p,a) (p)->lpVtbl->SetPalette(p,a)
776#define IDirectDrawSurface_Unlock(p,b) (p)->lpVtbl->Unlock(p,b)
777#define IDirectDrawSurface_UpdateOverlay(p,a,b,c,d,e) (p)->lpVtbl->UpdateOverlay(p,a,b,c,d,e)
778#define IDirectDrawSurface_UpdateOverlayDisplay(p,a) (p)->lpVtbl->UpdateOverlayDisplay(p,a)
779#define IDirectDrawSurface_UpdateOverlayZOrder(p,a,b) (p)->lpVtbl->UpdateOverlayZOrder(p,a,b)
780#else
781#define IDirectDrawSurface_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
782#define IDirectDrawSurface_AddRef(p) (p)->AddRef()
783#define IDirectDrawSurface_Release(p) (p)->Release()
784#define IDirectDrawSurface_AddAttachedSurface(p,a) (p)->AddAttachedSurface(a)
785#define IDirectDrawSurface_AddOverlayDirtyRect(p,a) (p)->AddOverlayDirtyRect(a)
786#define IDirectDrawSurface_Blt(p,a,b,c,d,e) (p)->Blt(a,b,c,d,e)
787#define IDirectDrawSurface_BltBatch(p,a,b,c) (p)->BltBatch(a,b,c)
788#define IDirectDrawSurface_BltFast(p,a,b,c,d,e) (p)->BltFast(a,b,c,d,e)
789#define IDirectDrawSurface_DeleteAttachedSurface(p,a,b) (p)->DeleteAttachedSurface(a,b)
790#define IDirectDrawSurface_EnumAttachedSurfaces(p,a,b) (p)->EnumAttachedSurfaces(a,b)
791#define IDirectDrawSurface_EnumOverlayZOrders(p,a,b,c) (p)->EnumOverlayZOrders(a,b,c)
792#define IDirectDrawSurface_Flip(p,a,b) (p)->Flip(a,b)
793#define IDirectDrawSurface_GetAttachedSurface(p,a,b) (p)->GetAttachedSurface(a,b)
794#define IDirectDrawSurface_GetBltStatus(p,a) (p)->GetBltStatus(a)
795#define IDirectDrawSurface_GetCaps(p,b) (p)->GetCaps(b)
796#define IDirectDrawSurface_GetClipper(p,a) (p)->GetClipper(a)
797#define IDirectDrawSurface_GetColorKey(p,a,b) (p)->GetColorKey(a,b)
798#define IDirectDrawSurface_GetDC(p,a) (p)->GetDC(a)
799#define IDirectDrawSurface_GetFlipStatus(p,a) (p)->GetFlipStatus(a)
800#define IDirectDrawSurface_GetOverlayPosition(p,a,b) (p)->GetOverlayPosition(a,b)
801#define IDirectDrawSurface_GetPalette(p,a) (p)->GetPalette(a)
802#define IDirectDrawSurface_GetPixelFormat(p,a) (p)->GetPixelFormat(a)
803#define IDirectDrawSurface_GetSurfaceDesc(p,a) (p)->GetSurfaceDesc(a)
804#define IDirectDrawSurface_Initialize(p,a,b) (p)->Initialize(a,b)
805#define IDirectDrawSurface_IsLost(p) (p)->IsLost()
806#define IDirectDrawSurface_Lock(p,a,b,c,d) (p)->Lock(a,b,c,d)
807#define IDirectDrawSurface_ReleaseDC(p,a) (p)->ReleaseDC(a)
808#define IDirectDrawSurface_Restore(p) (p)->Restore()
809#define IDirectDrawSurface_SetClipper(p,a) (p)->SetClipper(a)
810#define IDirectDrawSurface_SetColorKey(p,a,b) (p)->SetColorKey(a,b)
811#define IDirectDrawSurface_SetOverlayPosition(p,a,b) (p)->SetOverlayPosition(a,b)
812#define IDirectDrawSurface_SetPalette(p,a) (p)->SetPalette(a)
813#define IDirectDrawSurface_Unlock(p,b) (p)->Unlock(b)
814#define IDirectDrawSurface_UpdateOverlay(p,a,b,c,d,e) (p)->UpdateOverlay(a,b,c,d,e)
815#define IDirectDrawSurface_UpdateOverlayDisplay(p,a) (p)->UpdateOverlayDisplay(a)
816#define IDirectDrawSurface_UpdateOverlayZOrder(p,a,b) (p)->UpdateOverlayZOrder(a,b)
817#endif
818
819/*
820 * IDirectDrawSurface2 and related interfaces
821 */
822#undef INTERFACE
823#define INTERFACE IDirectDrawSurface2
824DECLARE_INTERFACE_( IDirectDrawSurface2, IUnknown )
825{
826 /*** IUnknown methods ***/
827 STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE;
828 STDMETHOD_(ULONG,AddRef) (THIS) PURE;
829 STDMETHOD_(ULONG,Release) (THIS) PURE;
830 /*** IDirectDrawSurface methods ***/
831 STDMETHOD(AddAttachedSurface)(THIS_ LPDIRECTDRAWSURFACE2) PURE;
832 STDMETHOD(AddOverlayDirtyRect)(THIS_ LPRECT) PURE;
833 STDMETHOD(Blt)(THIS_ LPRECT,LPDIRECTDRAWSURFACE2, LPRECT,DWORD, LPDDBLTFX) PURE;
834 STDMETHOD(BltBatch)(THIS_ LPDDBLTBATCH, DWORD, DWORD ) PURE;
835 STDMETHOD(BltFast)(THIS_ DWORD,DWORD,LPDIRECTDRAWSURFACE2, LPRECT,DWORD) PURE;
836 STDMETHOD(DeleteAttachedSurface)(THIS_ DWORD,LPDIRECTDRAWSURFACE2) PURE;
837 STDMETHOD(EnumAttachedSurfaces)(THIS_ LPVOID,LPDDENUMSURFACESCALLBACK) PURE;
838 STDMETHOD(EnumOverlayZOrders)(THIS_ DWORD,LPVOID,LPDDENUMSURFACESCALLBACK) PURE;
839 STDMETHOD(Flip)(THIS_ LPDIRECTDRAWSURFACE2, DWORD) PURE;
840 STDMETHOD(GetAttachedSurface)(THIS_ LPDDSCAPS, LPDIRECTDRAWSURFACE2 FAR *) PURE;
841 STDMETHOD(GetBltStatus)(THIS_ DWORD) PURE;
842 STDMETHOD(GetCaps)(THIS_ LPDDSCAPS) PURE;
843 STDMETHOD(GetClipper)(THIS_ LPDIRECTDRAWCLIPPER FAR*) PURE;
844 STDMETHOD(GetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE;
845 STDMETHOD(GetDC)(THIS_ HDC FAR *) PURE;
846 STDMETHOD(GetFlipStatus)(THIS_ DWORD) PURE;
847 STDMETHOD(GetOverlayPosition)(THIS_ LPLONG, LPLONG ) PURE;
848 STDMETHOD(GetPalette)(THIS_ LPDIRECTDRAWPALETTE FAR*) PURE;
849 STDMETHOD(GetPixelFormat)(THIS_ LPDDPIXELFORMAT) PURE;
850 STDMETHOD(GetSurfaceDesc)(THIS_ LPDDSURFACEDESC) PURE;
851 STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW, LPDDSURFACEDESC) PURE;
852 STDMETHOD(IsLost)(THIS) PURE;
853 STDMETHOD(Lock)(THIS_ LPRECT,LPDDSURFACEDESC,DWORD,HANDLE) PURE;
854 STDMETHOD(ReleaseDC)(THIS_ HDC) PURE;
855 STDMETHOD(Restore)(THIS) PURE;
856 STDMETHOD(SetClipper)(THIS_ LPDIRECTDRAWCLIPPER) PURE;
857 STDMETHOD(SetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE;
858 STDMETHOD(SetOverlayPosition)(THIS_ LONG, LONG ) PURE;
859 STDMETHOD(SetPalette)(THIS_ LPDIRECTDRAWPALETTE) PURE;
860 STDMETHOD(Unlock)(THIS_ LPVOID) PURE;
861 STDMETHOD(UpdateOverlay)(THIS_ LPRECT, LPDIRECTDRAWSURFACE2,LPRECT,DWORD, LPDDOVERLAYFX) PURE;
862 STDMETHOD(UpdateOverlayDisplay)(THIS_ DWORD) PURE;
863 STDMETHOD(UpdateOverlayZOrder)(THIS_ DWORD, LPDIRECTDRAWSURFACE2) PURE;
864 /*** Added in the v2 interface ***/
865 STDMETHOD(GetDDInterface)(THIS_ LPVOID FAR *) PURE;
866 STDMETHOD(PageLock)(THIS_ DWORD) PURE;
867 STDMETHOD(PageUnlock)(THIS_ DWORD) PURE;
868};
869
870#if !defined(__cplusplus) || defined(CINTERFACE)
871#define IDirectDrawSurface2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
872#define IDirectDrawSurface2_AddRef(p) (p)->lpVtbl->AddRef(p)
873#define IDirectDrawSurface2_Release(p) (p)->lpVtbl->Release(p)
874#define IDirectDrawSurface2_AddAttachedSurface(p,a) (p)->lpVtbl->AddAttachedSurface(p,a)
875#define IDirectDrawSurface2_AddOverlayDirtyRect(p,a) (p)->lpVtbl->AddOverlayDirtyRect(p,a)
876#define IDirectDrawSurface2_Blt(p,a,b,c,d,e) (p)->lpVtbl->Blt(p,a,b,c,d,e)
877#define IDirectDrawSurface2_BltBatch(p,a,b,c) (p)->lpVtbl->BltBatch(p,a,b,c)
878#define IDirectDrawSurface2_BltFast(p,a,b,c,d,e) (p)->lpVtbl->BltFast(p,a,b,c,d,e)
879#define IDirectDrawSurface2_DeleteAttachedSurface(p,a,b) (p)->lpVtbl->DeleteAttachedSurface(p,a,b)
880#define IDirectDrawSurface2_EnumAttachedSurfaces(p,a,b) (p)->lpVtbl->EnumAttachedSurfaces(p,a,b)
881#define IDirectDrawSurface2_EnumOverlayZOrders(p,a,b,c) (p)->lpVtbl->EnumOverlayZOrders(p,a,b,c)
882#define IDirectDrawSurface2_Flip(p,a,b) (p)->lpVtbl->Flip(p,a,b)
883#define IDirectDrawSurface2_GetAttachedSurface(p,a,b) (p)->lpVtbl->GetAttachedSurface(p,a,b)
884#define IDirectDrawSurface2_GetBltStatus(p,a) (p)->lpVtbl->GetBltStatus(p,a)
885#define IDirectDrawSurface2_GetCaps(p,b) (p)->lpVtbl->GetCaps(p,b)
886#define IDirectDrawSurface2_GetClipper(p,a) (p)->lpVtbl->GetClipper(p,a)
887#define IDirectDrawSurface2_GetColorKey(p,a,b) (p)->lpVtbl->GetColorKey(p,a,b)
888#define IDirectDrawSurface2_GetDC(p,a) (p)->lpVtbl->GetDC(p,a)
889#define IDirectDrawSurface2_GetFlipStatus(p,a) (p)->lpVtbl->GetFlipStatus(p,a)
890#define IDirectDrawSurface2_GetOverlayPosition(p,a,b) (p)->lpVtbl->GetOverlayPosition(p,a,b)
891#define IDirectDrawSurface2_GetPalette(p,a) (p)->lpVtbl->GetPalette(p,a)
892#define IDirectDrawSurface2_GetPixelFormat(p,a) (p)->lpVtbl->GetPixelFormat(p,a)
893#define IDirectDrawSurface2_GetSurfaceDesc(p,a) (p)->lpVtbl->GetSurfaceDesc(p,a)
894#define IDirectDrawSurface2_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b)
895#define IDirectDrawSurface2_IsLost(p) (p)->lpVtbl->IsLost(p)
896#define IDirectDrawSurface2_Lock(p,a,b,c,d) (p)->lpVtbl->Lock(p,a,b,c,d)
897#define IDirectDrawSurface2_ReleaseDC(p,a) (p)->lpVtbl->ReleaseDC(p,a)
898#define IDirectDrawSurface2_Restore(p) (p)->lpVtbl->Restore(p)
899#define IDirectDrawSurface2_SetClipper(p,a) (p)->lpVtbl->SetClipper(p,a)
900#define IDirectDrawSurface2_SetColorKey(p,a,b) (p)->lpVtbl->SetColorKey(p,a,b)
901#define IDirectDrawSurface2_SetOverlayPosition(p,a,b) (p)->lpVtbl->SetOverlayPosition(p,a,b)
902#define IDirectDrawSurface2_SetPalette(p,a) (p)->lpVtbl->SetPalette(p,a)
903#define IDirectDrawSurface2_Unlock(p,b) (p)->lpVtbl->Unlock(p,b)
904#define IDirectDrawSurface2_UpdateOverlay(p,a,b,c,d,e) (p)->lpVtbl->UpdateOverlay(p,a,b,c,d,e)
905#define IDirectDrawSurface2_UpdateOverlayDisplay(p,a) (p)->lpVtbl->UpdateOverlayDisplay(p,a)
906#define IDirectDrawSurface2_UpdateOverlayZOrder(p,a,b) (p)->lpVtbl->UpdateOverlayZOrder(p,a,b)
907#define IDirectDrawSurface2_GetDDInterface(p,a) (p)->lpVtbl->GetDDInterface(p,a)
908#define IDirectDrawSurface2_PageLock(p,a) (p)->lpVtbl->PageLock(p,a)
909#define IDirectDrawSurface2_PageUnlock(p,a) (p)->lpVtbl->PageUnlock(p,a)
910#else
911#define IDirectDrawSurface2_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
912#define IDirectDrawSurface2_AddRef(p) (p)->AddRef()
913#define IDirectDrawSurface2_Release(p) (p)->Release()
914#define IDirectDrawSurface2_AddAttachedSurface(p,a) (p)->AddAttachedSurface(a)
915#define IDirectDrawSurface2_AddOverlayDirtyRect(p,a) (p)->AddOverlayDirtyRect(a)
916#define IDirectDrawSurface2_Blt(p,a,b,c,d,e) (p)->Blt(a,b,c,d,e)
917#define IDirectDrawSurface2_BltBatch(p,a,b,c) (p)->BltBatch(a,b,c)
918#define IDirectDrawSurface2_BltFast(p,a,b,c,d,e) (p)->BltFast(a,b,c,d,e)
919#define IDirectDrawSurface2_DeleteAttachedSurface(p,a,b) (p)->DeleteAttachedSurface(a,b)
920#define IDirectDrawSurface2_EnumAttachedSurfaces(p,a,b) (p)->EnumAttachedSurfaces(a,b)
921#define IDirectDrawSurface2_EnumOverlayZOrders(p,a,b,c) (p)->EnumOverlayZOrders(a,b,c)
922#define IDirectDrawSurface2_Flip(p,a,b) (p)->Flip(a,b)
923#define IDirectDrawSurface2_GetAttachedSurface(p,a,b) (p)->GetAttachedSurface(a,b)
924#define IDirectDrawSurface2_GetBltStatus(p,a) (p)->GetBltStatus(a)
925#define IDirectDrawSurface2_GetCaps(p,b) (p)->GetCaps(b)
926#define IDirectDrawSurface2_GetClipper(p,a) (p)->GetClipper(a)
927#define IDirectDrawSurface2_GetColorKey(p,a,b) (p)->GetColorKey(a,b)
928#define IDirectDrawSurface2_GetDC(p,a) (p)->GetDC(a)
929#define IDirectDrawSurface2_GetFlipStatus(p,a) (p)->GetFlipStatus(a)
930#define IDirectDrawSurface2_GetOverlayPosition(p,a,b) (p)->GetOverlayPosition(a,b)
931#define IDirectDrawSurface2_GetPalette(p,a) (p)->GetPalette(a)
932#define IDirectDrawSurface2_GetPixelFormat(p,a) (p)->GetPixelFormat(a)
933#define IDirectDrawSurface2_GetSurfaceDesc(p,a) (p)->GetSurfaceDesc(a)
934#define IDirectDrawSurface2_Initialize(p,a,b) (p)->Initialize(a,b)
935#define IDirectDrawSurface2_IsLost(p) (p)->IsLost()
936#define IDirectDrawSurface2_Lock(p,a,b,c,d) (p)->Lock(a,b,c,d)
937#define IDirectDrawSurface2_ReleaseDC(p,a) (p)->ReleaseDC(a)
938#define IDirectDrawSurface2_Restore(p) (p)->Restore()
939#define IDirectDrawSurface2_SetClipper(p,a) (p)->SetClipper(a)
940#define IDirectDrawSurface2_SetColorKey(p,a,b) (p)->SetColorKey(a,b)
941#define IDirectDrawSurface2_SetOverlayPosition(p,a,b) (p)->SetOverlayPosition(a,b)
942#define IDirectDrawSurface2_SetPalette(p,a) (p)->SetPalette(a)
943#define IDirectDrawSurface2_Unlock(p,b) (p)->Unlock(b)
944#define IDirectDrawSurface2_UpdateOverlay(p,a,b,c,d,e) (p)->UpdateOverlay(a,b,c,d,e)
945#define IDirectDrawSurface2_UpdateOverlayDisplay(p,a) (p)->UpdateOverlayDisplay(a)
946#define IDirectDrawSurface2_UpdateOverlayZOrder(p,a,b) (p)->UpdateOverlayZOrder(a,b)
947#define IDirectDrawSurface2_GetDDInterface(p,a) (p)->GetDDInterface(a)
948#define IDirectDrawSurface2_PageLock(p,a) (p)->PageLock(a)
949#define IDirectDrawSurface2_PageUnlock(p,a) (p)->PageUnlock(a)
950#endif
951
952/*
953 * IDirectDrawSurface3 and related interfaces
954 */
955#undef INTERFACE
956#define INTERFACE IDirectDrawSurface3
957DECLARE_INTERFACE_( IDirectDrawSurface3, IUnknown )
958{
959 /*** IUnknown methods ***/
960 STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE;
961 STDMETHOD_(ULONG,AddRef) (THIS) PURE;
962 STDMETHOD_(ULONG,Release) (THIS) PURE;
963 /*** IDirectDrawSurface methods ***/
964 STDMETHOD(AddAttachedSurface)(THIS_ LPDIRECTDRAWSURFACE3) PURE;
965 STDMETHOD(AddOverlayDirtyRect)(THIS_ LPRECT) PURE;
966 STDMETHOD(Blt)(THIS_ LPRECT,LPDIRECTDRAWSURFACE3, LPRECT,DWORD, LPDDBLTFX) PURE;
967 STDMETHOD(BltBatch)(THIS_ LPDDBLTBATCH, DWORD, DWORD ) PURE;
968 STDMETHOD(BltFast)(THIS_ DWORD,DWORD,LPDIRECTDRAWSURFACE3, LPRECT,DWORD) PURE;
969 STDMETHOD(DeleteAttachedSurface)(THIS_ DWORD,LPDIRECTDRAWSURFACE3) PURE;
970 STDMETHOD(EnumAttachedSurfaces)(THIS_ LPVOID,LPDDENUMSURFACESCALLBACK) PURE;
971 STDMETHOD(EnumOverlayZOrders)(THIS_ DWORD,LPVOID,LPDDENUMSURFACESCALLBACK) PURE;
972 STDMETHOD(Flip)(THIS_ LPDIRECTDRAWSURFACE3, DWORD) PURE;
973 STDMETHOD(GetAttachedSurface)(THIS_ LPDDSCAPS, LPDIRECTDRAWSURFACE3 FAR *) PURE;
974 STDMETHOD(GetBltStatus)(THIS_ DWORD) PURE;
975 STDMETHOD(GetCaps)(THIS_ LPDDSCAPS) PURE;
976 STDMETHOD(GetClipper)(THIS_ LPDIRECTDRAWCLIPPER FAR*) PURE;
977 STDMETHOD(GetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE;
978 STDMETHOD(GetDC)(THIS_ HDC FAR *) PURE;
979 STDMETHOD(GetFlipStatus)(THIS_ DWORD) PURE;
980 STDMETHOD(GetOverlayPosition)(THIS_ LPLONG, LPLONG ) PURE;
981 STDMETHOD(GetPalette)(THIS_ LPDIRECTDRAWPALETTE FAR*) PURE;
982 STDMETHOD(GetPixelFormat)(THIS_ LPDDPIXELFORMAT) PURE;
983 STDMETHOD(GetSurfaceDesc)(THIS_ LPDDSURFACEDESC) PURE;
984 STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW, LPDDSURFACEDESC) PURE;
985 STDMETHOD(IsLost)(THIS) PURE;
986 STDMETHOD(Lock)(THIS_ LPRECT,LPDDSURFACEDESC,DWORD,HANDLE) PURE;
987 STDMETHOD(ReleaseDC)(THIS_ HDC) PURE;
988 STDMETHOD(Restore)(THIS) PURE;
989 STDMETHOD(SetClipper)(THIS_ LPDIRECTDRAWCLIPPER) PURE;
990 STDMETHOD(SetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE;
991 STDMETHOD(SetOverlayPosition)(THIS_ LONG, LONG ) PURE;
992 STDMETHOD(SetPalette)(THIS_ LPDIRECTDRAWPALETTE) PURE;
993 STDMETHOD(Unlock)(THIS_ LPVOID) PURE;
994 STDMETHOD(UpdateOverlay)(THIS_ LPRECT, LPDIRECTDRAWSURFACE3,LPRECT,DWORD, LPDDOVERLAYFX) PURE;
995 STDMETHOD(UpdateOverlayDisplay)(THIS_ DWORD) PURE;
996 STDMETHOD(UpdateOverlayZOrder)(THIS_ DWORD, LPDIRECTDRAWSURFACE3) PURE;
997 /*** Added in the v2 interface ***/
998 STDMETHOD(GetDDInterface)(THIS_ LPVOID FAR *) PURE;
999 STDMETHOD(PageLock)(THIS_ DWORD) PURE;
1000 STDMETHOD(PageUnlock)(THIS_ DWORD) PURE;
1001 /*** Added in the V3 interface ***/
1002 STDMETHOD(SetSurfaceDesc)(THIS_ LPDDSURFACEDESC, DWORD) PURE;
1003};
1004
1005#if !defined(__cplusplus) || defined(CINTERFACE)
1006#define IDirectDrawSurface3_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
1007#define IDirectDrawSurface3_AddRef(p) (p)->lpVtbl->AddRef(p)
1008#define IDirectDrawSurface3_Release(p) (p)->lpVtbl->Release(p)
1009#define IDirectDrawSurface3_AddAttachedSurface(p,a) (p)->lpVtbl->AddAttachedSurface(p,a)
1010#define IDirectDrawSurface3_AddOverlayDirtyRect(p,a) (p)->lpVtbl->AddOverlayDirtyRect(p,a)
1011#define IDirectDrawSurface3_Blt(p,a,b,c,d,e) (p)->lpVtbl->Blt(p,a,b,c,d,e)
1012#define IDirectDrawSurface3_BltBatch(p,a,b,c) (p)->lpVtbl->BltBatch(p,a,b,c)
1013#define IDirectDrawSurface3_BltFast(p,a,b,c,d,e) (p)->lpVtbl->BltFast(p,a,b,c,d,e)
1014#define IDirectDrawSurface3_DeleteAttachedSurface(p,a,b) (p)->lpVtbl->DeleteAttachedSurface(p,a,b)
1015#define IDirectDrawSurface3_EnumAttachedSurfaces(p,a,b) (p)->lpVtbl->EnumAttachedSurfaces(p,a,b)
1016#define IDirectDrawSurface3_EnumOverlayZOrders(p,a,b,c) (p)->lpVtbl->EnumOverlayZOrders(p,a,b,c)
1017#define IDirectDrawSurface3_Flip(p,a,b) (p)->lpVtbl->Flip(p,a,b)
1018#define IDirectDrawSurface3_GetAttachedSurface(p,a,b) (p)->lpVtbl->GetAttachedSurface(p,a,b)
1019#define IDirectDrawSurface3_GetBltStatus(p,a) (p)->lpVtbl->GetBltStatus(p,a)
1020#define IDirectDrawSurface3_GetCaps(p,b) (p)->lpVtbl->GetCaps(p,b)
1021#define IDirectDrawSurface3_GetClipper(p,a) (p)->lpVtbl->GetClipper(p,a)
1022#define IDirectDrawSurface3_GetColorKey(p,a,b) (p)->lpVtbl->GetColorKey(p,a,b)
1023#define IDirectDrawSurface3_GetDC(p,a) (p)->lpVtbl->GetDC(p,a)
1024#define IDirectDrawSurface3_GetFlipStatus(p,a) (p)->lpVtbl->GetFlipStatus(p,a)
1025#define IDirectDrawSurface3_GetOverlayPosition(p,a,b) (p)->lpVtbl->GetOverlayPosition(p,a,b)
1026#define IDirectDrawSurface3_GetPalette(p,a) (p)->lpVtbl->GetPalette(p,a)
1027#define IDirectDrawSurface3_GetPixelFormat(p,a) (p)->lpVtbl->GetPixelFormat(p,a)
1028#define IDirectDrawSurface3_GetSurfaceDesc(p,a) (p)->lpVtbl->GetSurfaceDesc(p,a)
1029#define IDirectDrawSurface3_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b)
1030#define IDirectDrawSurface3_IsLost(p) (p)->lpVtbl->IsLost(p)
1031#define IDirectDrawSurface3_Lock(p,a,b,c,d) (p)->lpVtbl->Lock(p,a,b,c,d)
1032#define IDirectDrawSurface3_ReleaseDC(p,a) (p)->lpVtbl->ReleaseDC(p,a)
1033#define IDirectDrawSurface3_Restore(p) (p)->lpVtbl->Restore(p)
1034#define IDirectDrawSurface3_SetClipper(p,a) (p)->lpVtbl->SetClipper(p,a)
1035#define IDirectDrawSurface3_SetColorKey(p,a,b) (p)->lpVtbl->SetColorKey(p,a,b)
1036#define IDirectDrawSurface3_SetOverlayPosition(p,a,b) (p)->lpVtbl->SetOverlayPosition(p,a,b)
1037#define IDirectDrawSurface3_SetPalette(p,a) (p)->lpVtbl->SetPalette(p,a)
1038#define IDirectDrawSurface3_Unlock(p,b) (p)->lpVtbl->Unlock(p,b)
1039#define IDirectDrawSurface3_UpdateOverlay(p,a,b,c,d,e) (p)->lpVtbl->UpdateOverlay(p,a,b,c,d,e)
1040#define IDirectDrawSurface3_UpdateOverlayDisplay(p,a) (p)->lpVtbl->UpdateOverlayDisplay(p,a)
1041#define IDirectDrawSurface3_UpdateOverlayZOrder(p,a,b) (p)->lpVtbl->UpdateOverlayZOrder(p,a,b)
1042#define IDirectDrawSurface3_GetDDInterface(p,a) (p)->lpVtbl->GetDDInterface(p,a)
1043#define IDirectDrawSurface3_PageLock(p,a) (p)->lpVtbl->PageLock(p,a)
1044#define IDirectDrawSurface3_PageUnlock(p,a) (p)->lpVtbl->PageUnlock(p,a)
1045#define IDirectDrawSurface3_SetSurfaceDesc(p,a,b) (p)->lpVtbl->SetSurfaceDesc(p,a,b)
1046#else
1047#define IDirectDrawSurface3_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
1048#define IDirectDrawSurface3_AddRef(p) (p)->AddRef()
1049#define IDirectDrawSurface3_Release(p) (p)->Release()
1050#define IDirectDrawSurface3_AddAttachedSurface(p,a) (p)->AddAttachedSurface(a)
1051#define IDirectDrawSurface3_AddOverlayDirtyRect(p,a) (p)->AddOverlayDirtyRect(a)
1052#define IDirectDrawSurface3_Blt(p,a,b,c,d,e) (p)->Blt(a,b,c,d,e)
1053#define IDirectDrawSurface3_BltBatch(p,a,b,c) (p)->BltBatch(a,b,c)
1054#define IDirectDrawSurface3_BltFast(p,a,b,c,d,e) (p)->BltFast(a,b,c,d,e)
1055#define IDirectDrawSurface3_DeleteAttachedSurface(p,a,b) (p)->DeleteAttachedSurface(a,b)
1056#define IDirectDrawSurface3_EnumAttachedSurfaces(p,a,b) (p)->EnumAttachedSurfaces(a,b)
1057#define IDirectDrawSurface3_EnumOverlayZOrders(p,a,b,c) (p)->EnumOverlayZOrders(a,b,c)
1058#define IDirectDrawSurface3_Flip(p,a,b) (p)->Flip(a,b)
1059#define IDirectDrawSurface3_GetAttachedSurface(p,a,b) (p)->GetAttachedSurface(a,b)
1060#define IDirectDrawSurface3_GetBltStatus(p,a) (p)->GetBltStatus(a)
1061#define IDirectDrawSurface3_GetCaps(p,b) (p)->GetCaps(b)
1062#define IDirectDrawSurface3_GetClipper(p,a) (p)->GetClipper(a)
1063#define IDirectDrawSurface3_GetColorKey(p,a,b) (p)->GetColorKey(a,b)
1064#define IDirectDrawSurface3_GetDC(p,a) (p)->GetDC(a)
1065#define IDirectDrawSurface3_GetFlipStatus(p,a) (p)->GetFlipStatus(a)
1066#define IDirectDrawSurface3_GetOverlayPosition(p,a,b) (p)->GetOverlayPosition(a,b)
1067#define IDirectDrawSurface3_GetPalette(p,a) (p)->GetPalette(a)
1068#define IDirectDrawSurface3_GetPixelFormat(p,a) (p)->GetPixelFormat(a)
1069#define IDirectDrawSurface3_GetSurfaceDesc(p,a) (p)->GetSurfaceDesc(a)
1070#define IDirectDrawSurface3_Initialize(p,a,b) (p)->Initialize(a,b)
1071#define IDirectDrawSurface3_IsLost(p) (p)->IsLost()
1072#define IDirectDrawSurface3_Lock(p,a,b,c,d) (p)->Lock(a,b,c,d)
1073#define IDirectDrawSurface3_ReleaseDC(p,a) (p)->ReleaseDC(a)
1074#define IDirectDrawSurface3_Restore(p) (p)->Restore()
1075#define IDirectDrawSurface3_SetClipper(p,a) (p)->SetClipper(a)
1076#define IDirectDrawSurface3_SetColorKey(p,a,b) (p)->SetColorKey(a,b)
1077#define IDirectDrawSurface3_SetOverlayPosition(p,a,b) (p)->SetOverlayPosition(a,b)
1078#define IDirectDrawSurface3_SetPalette(p,a) (p)->SetPalette(a)
1079#define IDirectDrawSurface3_Unlock(p,b) (p)->Unlock(b)
1080#define IDirectDrawSurface3_UpdateOverlay(p,a,b,c,d,e) (p)->UpdateOverlay(a,b,c,d,e)
1081#define IDirectDrawSurface3_UpdateOverlayDisplay(p,a) (p)->UpdateOverlayDisplay(a)
1082#define IDirectDrawSurface3_UpdateOverlayZOrder(p,a,b) (p)->UpdateOverlayZOrder(a,b)
1083#define IDirectDrawSurface3_GetDDInterface(p,a) (p)->GetDDInterface(a)
1084#define IDirectDrawSurface3_PageLock(p,a) (p)->PageLock(a)
1085#define IDirectDrawSurface3_PageUnlock(p,a) (p)->PageUnlock(a)
1086#define IDirectDrawSurface3_SetSurfaceDesc(p,a,b) (p)->SetSurfaceDesc(a,b)
1087#endif
1088
1089/*
1090 * IDirectDrawColorControl
1091 */
1092#if defined( _WIN32 ) && !defined( _NO_COM )
1093#undef INTERFACE
1094#define INTERFACE IDirectDrawColorControl
1095DECLARE_INTERFACE_( IDirectDrawColorControl, IUnknown )
1096{
1097 /*** IUnknown methods ***/
1098 STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE;
1099 STDMETHOD_(ULONG,AddRef) (THIS) PURE;
1100 STDMETHOD_(ULONG,Release) (THIS) PURE;
1101 /*** IDirectDrawColorControl methods ***/
1102 STDMETHOD(GetColorControls)(THIS_ LPDDCOLORCONTROL) PURE;
1103 STDMETHOD(SetColorControls)(THIS_ LPDDCOLORCONTROL) PURE;
1104};
1105
1106#if !defined(__cplusplus) || defined(CINTERFACE)
1107#define IDirectDrawColorControl_QueryInterface(p, a, b) (p)->lpVtbl->QueryInterface(p, a, b)
1108#define IDirectDrawColorControl_AddRef(p) (p)->lpVtbl->AddRef(p)
1109#define IDirectDrawColorControl_Release(p) (p)->lpVtbl->Release(p)
1110#define IDirectDrawColorControl_GetColorControls(p, a) (p)->lpVtbl->GetColorControls(p, a)
1111#define IDirectDrawColorControl_SetColorControls(p, a) (p)->lpVtbl->SetColorControls(p, a)
1112#else
1113#define IDirectDrawColorControl_QueryInterface(p, a, b) (p)->QueryInterface(a, b)
1114#define IDirectDrawColorControl_AddRef(p) (p)->AddRef()
1115#define IDirectDrawColorControl_Release(p) (p)->Release()
1116#define IDirectDrawColorControl_GetColorControls(p, a) (p)->GetColorControls(a)
1117#define IDirectDrawColorControl_SetColorControls(p, a) (p)->SetColorControls(a)
1118#endif
1119
1120#endif
1121
1122
1123
1124#endif
1125
1126
1127/*
1128 * DDSURFACEDESC
1129 */
1130typedef struct _DDSURFACEDESC
1131{
1136 union
1137 {
1138 LONG lPitch;
1139 DWORD dwLinearSize; // Formless late-allocated optimized surface size
1140 };
1142 union
1143 {
1144 DWORD dwMipMapCount; // number of mip-map levels requested
1147 };
1158
1162#define DDSD_CAPS 0x00000001l // default
1163
1167#define DDSD_HEIGHT 0x00000002l
1168
1172#define DDSD_WIDTH 0x00000004l
1173
1177#define DDSD_PITCH 0x00000008l
1178
1182#define DDSD_BACKBUFFERCOUNT 0x00000020l
1183
1187#define DDSD_ZBUFFERBITDEPTH 0x00000040l
1188
1192#define DDSD_ALPHABITDEPTH 0x00000080l
1193
1194
1198#define DDSD_LPSURFACE 0x00000800l
1199
1203#define DDSD_PIXELFORMAT 0x00001000l
1204
1208#define DDSD_CKDESTOVERLAY 0x00002000l
1209
1213#define DDSD_CKDESTBLT 0x00004000l
1214
1218#define DDSD_CKSRCOVERLAY 0x00008000l
1219
1223#define DDSD_CKSRCBLT 0x00010000l
1224
1228#define DDSD_MIPMAPCOUNT 0x00020000l
1229
1233#define DDSD_REFRESHRATE 0x00040000l
1234
1238#define DDSD_LINEARSIZE 0x00080000l
1239
1243#define DDSD_ALL 0x000ff9eel
1244
1245
1246/*
1247 * DDCOLORCONTROL
1248 */
1249typedef struct _DDCOLORCONTROL
1250{
1255 LONG lHue;
1262
1263
1264/*
1265 * lBrightness field is valid.
1266 */
1267#define DDCOLOR_BRIGHTNESS 0x00000001l
1268
1269/*
1270 * lContrast field is valid.
1271 */
1272#define DDCOLOR_CONTRAST 0x00000002l
1273
1274/*
1275 * lHue field is valid.
1276 */
1277#define DDCOLOR_HUE 0x00000004l
1278
1279/*
1280 * lSaturation field is valid.
1281 */
1282#define DDCOLOR_SATURATION 0x00000008l
1283
1284/*
1285 * lSharpness field is valid.
1286 */
1287#define DDCOLOR_SHARPNESS 0x00000010l
1288
1289/*
1290 * lGamma field is valid.
1291 */
1292#define DDCOLOR_GAMMA 0x00000020l
1293
1294/*
1295 * lColorEnable field is valid.
1296 */
1297#define DDCOLOR_COLORENABLE 0x00000040l
1298
1299
1300
1301/*============================================================================
1302 *
1303 * Direct Draw Capability Flags
1304 *
1305 * These flags are used to describe the capabilities of a given Surface.
1306 * All flags are bit flags.
1307 *
1308 *==========================================================================*/
1309
1310/****************************************************************************
1311 *
1312 * DIRECTDRAWSURFACE CAPABILITY FLAGS
1313 *
1314 ****************************************************************************/
1315
1316/*
1317 * This bit is reserved. It should not be specified.
1318 */
1319#define DDSCAPS_RESERVED1 0x00000001l
1320
1321/*
1322 * Indicates that this surface contains alpha-only information.
1323 * (To determine if a surface is RGBA/YUVA, the pixel format must be
1324 * interrogated.)
1325 */
1326#define DDSCAPS_ALPHA 0x00000002l
1327
1328/*
1329 * Indicates that this surface is a backbuffer. It is generally
1330 * set by CreateSurface when the DDSCAPS_FLIP capability bit is set.
1331 * It indicates that this surface is THE back buffer of a surface
1332 * flipping structure. DirectDraw supports N surfaces in a
1333 * surface flipping structure. Only the surface that immediately
1334 * precedeces the DDSCAPS_FRONTBUFFER has this capability bit set.
1335 * The other surfaces are identified as back buffers by the presence
1336 * of the DDSCAPS_FLIP capability, their attachment order, and the
1337 * absence of the DDSCAPS_FRONTBUFFER and DDSCAPS_BACKBUFFER
1338 * capabilities. The bit is sent to CreateSurface when a standalone
1339 * back buffer is being created. This surface could be attached to
1340 * a front buffer and/or back buffers to form a flipping surface
1341 * structure after the CreateSurface call. See AddAttachments for
1342 * a detailed description of the behaviors in this case.
1343 */
1344#define DDSCAPS_BACKBUFFER 0x00000004l
1345
1346/*
1347 * Indicates a complex surface structure is being described. A
1348 * complex surface structure results in the creation of more than
1349 * one surface. The additional surfaces are attached to the root
1350 * surface. The complex structure can only be destroyed by
1351 * destroying the root.
1352 */
1353#define DDSCAPS_COMPLEX 0x00000008l
1354
1355/*
1356 * Indicates that this surface is a part of a surface flipping structure.
1357 * When it is passed to CreateSurface the DDSCAPS_FRONTBUFFER and
1358 * DDSCAP_BACKBUFFER bits are not set. They are set by CreateSurface
1359 * on the resulting creations. The dwBackBufferCount field in the
1360 * DDSURFACEDESC structure must be set to at least 1 in order for
1361 * the CreateSurface call to succeed. The DDSCAPS_COMPLEX capability
1362 * must always be set with creating multiple surfaces through CreateSurface.
1363 */
1364#define DDSCAPS_FLIP 0x00000010l
1365
1366/*
1367 * Indicates that this surface is THE front buffer of a surface flipping
1368 * structure. It is generally set by CreateSurface when the DDSCAPS_FLIP
1369 * capability bit is set.
1370 * If this capability is sent to CreateSurface then a standalonw front buffer
1371 * is created. This surface will not have the DDSCAPS_FLIP capability.
1372 * It can be attached to other back buffers to form a flipping structure.
1373 * See AddAttachments for a detailed description of the behaviors in this
1374 * case.
1375 */
1376#define DDSCAPS_FRONTBUFFER 0x00000020l
1377
1378/*
1379 * Indicates that this surface is any offscreen surface that is not an overlay,
1380 * texture, zbuffer, front buffer, back buffer, or alpha surface. It is used
1381 * to identify plain vanilla surfaces.
1382 */
1383#define DDSCAPS_OFFSCREENPLAIN 0x00000040l
1384
1385/*
1386 * Indicates that this surface is an overlay. It may or may not be directly visible
1387 * depending on whether or not it is currently being overlayed onto the primary
1388 * surface. DDSCAPS_VISIBLE can be used to determine whether or not it is being
1389 * overlayed at the moment.
1390 */
1391#define DDSCAPS_OVERLAY 0x00000080l
1392
1393/*
1394 * Indicates that unique DirectDrawPalette objects can be created and
1395 * attached to this surface.
1396 */
1397#define DDSCAPS_PALETTE 0x00000100l
1398
1399/*
1400 * Indicates that this surface is the primary surface. The primary
1401 * surface represents what the user is seeing at the moment.
1402 */
1403#define DDSCAPS_PRIMARYSURFACE 0x00000200l
1404
1405/*
1406 * Indicates that this surface is the primary surface for the left eye.
1407 * The primary surface for the left eye represents what the user is seeing
1408 * at the moment with the users left eye. When this surface is created the
1409 * DDSCAPS_PRIMARYSURFACE represents what the user is seeing with the users
1410 * right eye.
1411 */
1412#define DDSCAPS_PRIMARYSURFACELEFT 0x00000400l
1413
1414/*
1415 * Indicates that this surface memory was allocated in system memory
1416 */
1417#define DDSCAPS_SYSTEMMEMORY 0x00000800l
1418
1419/*
1420 * Indicates that this surface can be used as a 3D texture. It does not
1421 * indicate whether or not the surface is being used for that purpose.
1422 */
1423#define DDSCAPS_TEXTURE 0x00001000l
1424
1425/*
1426 * Indicates that a surface may be a destination for 3D rendering. This
1427 * bit must be set in order to query for a Direct3D Device Interface
1428 * from this surface.
1429 */
1430#define DDSCAPS_3DDEVICE 0x00002000l
1431
1432/*
1433 * Indicates that this surface exists in video memory.
1434 */
1435#define DDSCAPS_VIDEOMEMORY 0x00004000l
1436
1437/*
1438 * Indicates that changes made to this surface are immediately visible.
1439 * It is always set for the primary surface and is set for overlays while
1440 * they are being overlayed and texture maps while they are being textured.
1441 */
1442#define DDSCAPS_VISIBLE 0x00008000l
1443
1444/*
1445 * Indicates that only writes are permitted to the surface. Read accesses
1446 * from the surface may or may not generate a protection fault, but the
1447 * results of a read from this surface will not be meaningful. READ ONLY.
1448 */
1449#define DDSCAPS_WRITEONLY 0x00010000l
1450
1451/*
1452 * Indicates that this surface is a z buffer. A z buffer does not contain
1453 * displayable information. Instead it contains bit depth information that is
1454 * used to determine which pixels are visible and which are obscured.
1455 */
1456#define DDSCAPS_ZBUFFER 0x00020000l
1457
1458/*
1459 * Indicates surface will have a DC associated long term
1460 */
1461#define DDSCAPS_OWNDC 0x00040000l
1462
1463/*
1464 * Indicates surface should be able to receive live video
1465 */
1466#define DDSCAPS_LIVEVIDEO 0x00080000l
1467
1468/*
1469 * Indicates surface should be able to have a stream decompressed
1470 * to it by the hardware.
1471 */
1472#define DDSCAPS_HWCODEC 0x00100000l
1473
1474/*
1475 * Surface is a ModeX surface.
1476 *
1477 */
1478#define DDSCAPS_MODEX 0x00200000l
1479
1480/*
1481 * Indicates surface is one level of a mip-map. This surface will
1482 * be attached to other DDSCAPS_MIPMAP surfaces to form the mip-map.
1483 * This can be done explicitly, by creating a number of surfaces and
1484 * attaching them with AddAttachedSurface or by implicitly by CreateSurface.
1485 * If this bit is set then DDSCAPS_TEXTURE must also be set.
1486 */
1487#define DDSCAPS_MIPMAP 0x00400000l
1488
1489/*
1490 * This bit is reserved. It should not be specified.
1491 */
1492#define DDSCAPS_RESERVED2 0x00800000l
1493
1494
1495/*
1496 * Indicates that memory for the surface is not allocated until the surface
1497 * is loaded (via the Direct3D texture Load() function).
1498 */
1499#define DDSCAPS_ALLOCONLOAD 0x04000000l
1500
1501/*
1502 * Indicates that the surface will recieve data from a video port.
1503 */
1504#define DDSCAPS_VIDEOPORT 0x08000000l
1505
1506/*
1507 * Indicates that a video memory surface is resident in true, local video
1508 * memory rather than non-local video memory. If this flag is specified then
1509 * so must DDSCAPS_VIDEOMEMORY. This flag is mutually exclusive with
1510 * DDSCAPS_NONLOCALVIDMEM.
1511 */
1512#define DDSCAPS_LOCALVIDMEM 0x10000000l
1513
1514/*
1515 * Indicates that a video memory surface is resident in non-local video
1516 * memory rather than true, local video memory. If this flag is specified
1517 * then so must DDSCAPS_VIDEOMEMORY. This flag is mutually exclusive with
1518 * DDSCAPS_LOCALVIDMEM.
1519 */
1520#define DDSCAPS_NONLOCALVIDMEM 0x20000000l
1521
1522/*
1523 * Indicates that this surface is a standard VGA mode surface, and not a
1524 * ModeX surface. (This flag will never be set in combination with the
1525 * DDSCAPS_MODEX flag).
1526 */
1527#define DDSCAPS_STANDARDVGAMODE 0x40000000l
1528
1529/*
1530 * Indicates that this surface will be an optimized surface. This flag is
1531 * currently only valid in conjunction with the DDSCAPS_TEXTURE flag. The surface
1532 * will be created without any underlying video memory until loaded.
1533 */
1534#define DDSCAPS_OPTIMIZED 0x80000000l
1535
1536
1537
1538 /****************************************************************************
1539 *
1540 * DIRECTDRAW DRIVER CAPABILITY FLAGS
1541 *
1542 ****************************************************************************/
1543
1544/*
1545 * Display hardware has 3D acceleration.
1546 */
1547#define DDCAPS_3D 0x00000001l
1548
1549/*
1550 * Indicates that DirectDraw will support only dest rectangles that are aligned
1551 * on DIRECTDRAWCAPS.dwAlignBoundaryDest boundaries of the surface, respectively.
1552 * READ ONLY.
1553 */
1554#define DDCAPS_ALIGNBOUNDARYDEST 0x00000002l
1555
1556/*
1557 * Indicates that DirectDraw will support only source rectangles whose sizes in
1558 * BYTEs are DIRECTDRAWCAPS.dwAlignSizeDest multiples, respectively. READ ONLY.
1559 */
1560#define DDCAPS_ALIGNSIZEDEST 0x00000004l
1561/*
1562 * Indicates that DirectDraw will support only source rectangles that are aligned
1563 * on DIRECTDRAWCAPS.dwAlignBoundarySrc boundaries of the surface, respectively.
1564 * READ ONLY.
1565 */
1566#define DDCAPS_ALIGNBOUNDARYSRC 0x00000008l
1567
1568/*
1569 * Indicates that DirectDraw will support only source rectangles whose sizes in
1570 * BYTEs are DIRECTDRAWCAPS.dwAlignSizeSrc multiples, respectively. READ ONLY.
1571 */
1572#define DDCAPS_ALIGNSIZESRC 0x00000010l
1573
1574/*
1575 * Indicates that DirectDraw will create video memory surfaces that have a stride
1576 * alignment equal to DIRECTDRAWCAPS.dwAlignStride. READ ONLY.
1577 */
1578#define DDCAPS_ALIGNSTRIDE 0x00000020l
1579
1580/*
1581 * Display hardware is capable of blt operations.
1582 */
1583#define DDCAPS_BLT 0x00000040l
1584
1585/*
1586 * Display hardware is capable of asynchronous blt operations.
1587 */
1588#define DDCAPS_BLTQUEUE 0x00000080l
1589
1590/*
1591 * Display hardware is capable of color space conversions during the blt operation.
1592 */
1593#define DDCAPS_BLTFOURCC 0x00000100l
1594
1595/*
1596 * Display hardware is capable of stretching during blt operations.
1597 */
1598#define DDCAPS_BLTSTRETCH 0x00000200l
1599
1600/*
1601 * Display hardware is shared with GDI.
1602 */
1603#define DDCAPS_GDI 0x00000400l
1604
1605/*
1606 * Display hardware can overlay.
1607 */
1608#define DDCAPS_OVERLAY 0x00000800l
1609
1610/*
1611 * Set if display hardware supports overlays but can not clip them.
1612 */
1613#define DDCAPS_OVERLAYCANTCLIP 0x00001000l
1614
1615/*
1616 * Indicates that overlay hardware is capable of color space conversions during
1617 * the overlay operation.
1618 */
1619#define DDCAPS_OVERLAYFOURCC 0x00002000l
1620
1621/*
1622 * Indicates that stretching can be done by the overlay hardware.
1623 */
1624#define DDCAPS_OVERLAYSTRETCH 0x00004000l
1625
1626/*
1627 * Indicates that unique DirectDrawPalettes can be created for DirectDrawSurfaces
1628 * other than the primary surface.
1629 */
1630#define DDCAPS_PALETTE 0x00008000l
1631
1632/*
1633 * Indicates that palette changes can be syncd with the veritcal refresh.
1634 */
1635#define DDCAPS_PALETTEVSYNC 0x00010000l
1636
1637/*
1638 * Display hardware can return the current scan line.
1639 */
1640#define DDCAPS_READSCANLINE 0x00020000l
1641
1642/*
1643 * Display hardware has stereo vision capabilities. DDSCAPS_PRIMARYSURFACELEFT
1644 * can be created.
1645 */
1646#define DDCAPS_STEREOVIEW 0x00040000l
1647
1648/*
1649 * Display hardware is capable of generating a vertical blank interrupt.
1650 */
1651#define DDCAPS_VBI 0x00080000l
1652
1653/*
1654 * Supports the use of z buffers with blt operations.
1655 */
1656#define DDCAPS_ZBLTS 0x00100000l
1657
1658/*
1659 * Supports Z Ordering of overlays.
1660 */
1661#define DDCAPS_ZOVERLAYS 0x00200000l
1662
1663/*
1664 * Supports color key
1665 */
1666#define DDCAPS_COLORKEY 0x00400000l
1667
1668/*
1669 * Supports alpha surfaces
1670 */
1671#define DDCAPS_ALPHA 0x00800000l
1672
1673/*
1674 * colorkey is hardware assisted(DDCAPS_COLORKEY will also be set)
1675 */
1676#define DDCAPS_COLORKEYHWASSIST 0x01000000l
1677
1678/*
1679 * no hardware support at all
1680 */
1681#define DDCAPS_NOHARDWARE 0x02000000l
1682
1683/*
1684 * Display hardware is capable of color fill with bltter
1685 */
1686#define DDCAPS_BLTCOLORFILL 0x04000000l
1687
1688/*
1689 * Display hardware is bank switched, and potentially very slow at
1690 * random access to VRAM.
1691 */
1692#define DDCAPS_BANKSWITCHED 0x08000000l
1693
1694/*
1695 * Display hardware is capable of depth filling Z-buffers with bltter
1696 */
1697#define DDCAPS_BLTDEPTHFILL 0x10000000l
1698
1699/*
1700 * Display hardware is capable of clipping while bltting.
1701 */
1702#define DDCAPS_CANCLIP 0x20000000l
1703
1704/*
1705 * Display hardware is capable of clipping while stretch bltting.
1706 */
1707#define DDCAPS_CANCLIPSTRETCHED 0x40000000l
1708
1709/*
1710 * Display hardware is capable of bltting to or from system memory
1711 */
1712#define DDCAPS_CANBLTSYSMEM 0x80000000l
1713
1714
1715 /****************************************************************************
1716 *
1717 * MORE DIRECTDRAW DRIVER CAPABILITY FLAGS (dwCaps2)
1718 *
1719 ****************************************************************************/
1720
1721/*
1722 * Display hardware is certified
1723 */
1724#define DDCAPS2_CERTIFIED 0x00000001l
1725
1726/*
1727 * Driver cannot interleave 2D operations (lock and blt) to surfaces with
1728 * Direct3D rendering operations between calls to BeginScene() and EndScene()
1729 */
1730#define DDCAPS2_NO2DDURING3DSCENE 0x00000002l
1731
1732/*
1733 * Display hardware contains a video port
1734 */
1735#define DDCAPS2_VIDEOPORT 0x00000004l
1736
1737/*
1738 * The overlay can be automatically flipped according to the video port
1739 * VSYNCs, providing automatic doubled buffered display of video port
1740 * data using an overlay
1741 */
1742#define DDCAPS2_AUTOFLIPOVERLAY 0x00000008l
1743
1744/*
1745 * Overlay can display each field of interlaced data individually while
1746 * it is interleaved in memory without causing jittery artifacts.
1747 */
1748#define DDCAPS2_CANBOBINTERLEAVED 0x00000010l
1749
1750/*
1751 * Overlay can display each field of interlaced data individually while
1752 * it is not interleaved in memory without causing jittery artifacts.
1753 */
1754#define DDCAPS2_CANBOBNONINTERLEAVED 0x00000020l
1755
1756/*
1757 * The overlay surface contains color controls (brightness, sharpness, etc.)
1758 */
1759#define DDCAPS2_COLORCONTROLOVERLAY 0x00000040l
1760
1761/*
1762 * The primary surface contains color controls (gamma, etc.)
1763 */
1764#define DDCAPS2_COLORCONTROLPRIMARY 0x00000080l
1765
1766/*
1767 * RGBZ -> RGB supported for 16:16 RGB:Z
1768 */
1769#define DDCAPS2_CANDROPZ16BIT 0x00000100l
1770
1771/*
1772 * Driver supports non-local video memory.
1773 */
1774#define DDCAPS2_NONLOCALVIDMEM 0x00000200l
1775
1776/*
1777 * Dirver supports non-local video memory but has different capabilities for
1778 * non-local video memory surfaces. If this bit is set then so must
1779 * DDCAPS2_NONLOCALVIDMEM.
1780 */
1781#define DDCAPS2_NONLOCALVIDMEMCAPS 0x00000400l
1782
1783/*
1784 * Driver neither requires nor prefers surfaces to be pagelocked when performing
1785 * blts involving system memory surfaces
1786 */
1787#define DDCAPS2_NOPAGELOCKREQUIRED 0x00000800l
1788
1789/*
1790 * Driver can create surfaces which are wider than the primary surface
1791 */
1792#define DDCAPS2_WIDESURFACES 0x00001000l
1793
1794/*
1795 * Driver supports bob using software without using a video port
1796 */
1797#define DDCAPS2_CANFLIPODDEVEN 0x00002000l
1798
1799/****************************************************************************
1800 *
1801 * DIRECTDRAW FX ALPHA CAPABILITY FLAGS
1802 *
1803 ****************************************************************************/
1804
1805/*
1806 * Supports alpha blending around the edge of a source color keyed surface.
1807 * For Blt.
1808 */
1809#define DDFXALPHACAPS_BLTALPHAEDGEBLEND 0x00000001l
1810
1811/*
1812 * Supports alpha information in the pixel format. The bit depth of alpha
1813 * information in the pixel format can be 1,2,4, or 8. The alpha value becomes
1814 * more opaque as the alpha value increases. (0 is transparent.)
1815 * For Blt.
1816 */
1817#define DDFXALPHACAPS_BLTALPHAPIXELS 0x00000002l
1818
1819/*
1820 * Supports alpha information in the pixel format. The bit depth of alpha
1821 * information in the pixel format can be 1,2,4, or 8. The alpha value
1822 * becomes more transparent as the alpha value increases. (0 is opaque.)
1823 * This flag can only be set if DDCAPS_ALPHA is set.
1824 * For Blt.
1825 */
1826#define DDFXALPHACAPS_BLTALPHAPIXELSNEG 0x00000004l
1827
1828/*
1829 * Supports alpha only surfaces. The bit depth of an alpha only surface can be
1830 * 1,2,4, or 8. The alpha value becomes more opaque as the alpha value increases.
1831 * (0 is transparent.)
1832 * For Blt.
1833 */
1834#define DDFXALPHACAPS_BLTALPHASURFACES 0x00000008l
1835
1836/*
1837 * The depth of the alpha channel data can range can be 1,2,4, or 8.
1838 * The NEG suffix indicates that this alpha channel becomes more transparent
1839 * as the alpha value increases. (0 is opaque.) This flag can only be set if
1840 * DDCAPS_ALPHA is set.
1841 * For Blt.
1842 */
1843#define DDFXALPHACAPS_BLTALPHASURFACESNEG 0x00000010l
1844
1845/*
1846 * Supports alpha blending around the edge of a source color keyed surface.
1847 * For Overlays.
1848 */
1849#define DDFXALPHACAPS_OVERLAYALPHAEDGEBLEND 0x00000020l
1850
1851/*
1852 * Supports alpha information in the pixel format. The bit depth of alpha
1853 * information in the pixel format can be 1,2,4, or 8. The alpha value becomes
1854 * more opaque as the alpha value increases. (0 is transparent.)
1855 * For Overlays.
1856 */
1857#define DDFXALPHACAPS_OVERLAYALPHAPIXELS 0x00000040l
1858
1859/*
1860 * Supports alpha information in the pixel format. The bit depth of alpha
1861 * information in the pixel format can be 1,2,4, or 8. The alpha value
1862 * becomes more transparent as the alpha value increases. (0 is opaque.)
1863 * This flag can only be set if DDCAPS_ALPHA is set.
1864 * For Overlays.
1865 */
1866#define DDFXALPHACAPS_OVERLAYALPHAPIXELSNEG 0x00000080l
1867
1868/*
1869 * Supports alpha only surfaces. The bit depth of an alpha only surface can be
1870 * 1,2,4, or 8. The alpha value becomes more opaque as the alpha value increases.
1871 * (0 is transparent.)
1872 * For Overlays.
1873 */
1874#define DDFXALPHACAPS_OVERLAYALPHASURFACES 0x00000100l
1875
1876/*
1877 * The depth of the alpha channel data can range can be 1,2,4, or 8.
1878 * The NEG suffix indicates that this alpha channel becomes more transparent
1879 * as the alpha value increases. (0 is opaque.) This flag can only be set if
1880 * DDCAPS_ALPHA is set.
1881 * For Overlays.
1882 */
1883#define DDFXALPHACAPS_OVERLAYALPHASURFACESNEG 0x00000200l
1884
1885/****************************************************************************
1886 *
1887 * DIRECTDRAW FX CAPABILITY FLAGS
1888 *
1889 ****************************************************************************/
1890
1891/*
1892 * Uses arithmetic operations to stretch and shrink surfaces during blt
1893 * rather than pixel doubling techniques. Along the Y axis.
1894 */
1895#define DDFXCAPS_BLTARITHSTRETCHY 0x00000020l
1896
1897/*
1898 * Uses arithmetic operations to stretch during blt
1899 * rather than pixel doubling techniques. Along the Y axis. Only
1900 * works for x1, x2, etc.
1901 */
1902#define DDFXCAPS_BLTARITHSTRETCHYN 0x00000010l
1903
1904/*
1905 * Supports mirroring left to right in blt.
1906 */
1907#define DDFXCAPS_BLTMIRRORLEFTRIGHT 0x00000040l
1908
1909/*
1910 * Supports mirroring top to bottom in blt.
1911 */
1912#define DDFXCAPS_BLTMIRRORUPDOWN 0x00000080l
1913
1914/*
1915 * Supports arbitrary rotation for blts.
1916 */
1917#define DDFXCAPS_BLTROTATION 0x00000100l
1918
1919/*
1920 * Supports 90 degree rotations for blts.
1921 */
1922#define DDFXCAPS_BLTROTATION90 0x00000200l
1923
1924/*
1925 * DirectDraw supports arbitrary shrinking of a surface along the
1926 * x axis (horizontal direction) for blts.
1927 */
1928#define DDFXCAPS_BLTSHRINKX 0x00000400l
1929
1930/*
1931 * DirectDraw supports integer shrinking (1x,2x,) of a surface
1932 * along the x axis (horizontal direction) for blts.
1933 */
1934#define DDFXCAPS_BLTSHRINKXN 0x00000800l
1935
1936/*
1937 * DirectDraw supports arbitrary shrinking of a surface along the
1938 * y axis (horizontal direction) for blts.
1939 */
1940#define DDFXCAPS_BLTSHRINKY 0x00001000l
1941
1942/*
1943 * DirectDraw supports integer shrinking (1x,2x,) of a surface
1944 * along the y axis (vertical direction) for blts.
1945 */
1946#define DDFXCAPS_BLTSHRINKYN 0x00002000l
1947
1948/*
1949 * DirectDraw supports arbitrary stretching of a surface along the
1950 * x axis (horizontal direction) for blts.
1951 */
1952#define DDFXCAPS_BLTSTRETCHX 0x00004000l
1953
1954/*
1955 * DirectDraw supports integer stretching (1x,2x,) of a surface
1956 * along the x axis (horizontal direction) for blts.
1957 */
1958#define DDFXCAPS_BLTSTRETCHXN 0x00008000l
1959
1960/*
1961 * DirectDraw supports arbitrary stretching of a surface along the
1962 * y axis (horizontal direction) for blts.
1963 */
1964#define DDFXCAPS_BLTSTRETCHY 0x00010000l
1965
1966/*
1967 * DirectDraw supports integer stretching (1x,2x,) of a surface
1968 * along the y axis (vertical direction) for blts.
1969 */
1970#define DDFXCAPS_BLTSTRETCHYN 0x00020000l
1971
1972/*
1973 * Uses arithmetic operations to stretch and shrink surfaces during
1974 * overlay rather than pixel doubling techniques. Along the Y axis
1975 * for overlays.
1976 */
1977#define DDFXCAPS_OVERLAYARITHSTRETCHY 0x00040000l
1978
1979/*
1980 * Uses arithmetic operations to stretch surfaces during
1981 * overlay rather than pixel doubling techniques. Along the Y axis
1982 * for overlays. Only works for x1, x2, etc.
1983 */
1984#define DDFXCAPS_OVERLAYARITHSTRETCHYN 0x00000008l
1985
1986/*
1987 * DirectDraw supports arbitrary shrinking of a surface along the
1988 * x axis (horizontal direction) for overlays.
1989 */
1990#define DDFXCAPS_OVERLAYSHRINKX 0x00080000l
1991
1992/*
1993 * DirectDraw supports integer shrinking (1x,2x,) of a surface
1994 * along the x axis (horizontal direction) for overlays.
1995 */
1996#define DDFXCAPS_OVERLAYSHRINKXN 0x00100000l
1997
1998/*
1999 * DirectDraw supports arbitrary shrinking of a surface along the
2000 * y axis (horizontal direction) for overlays.
2001 */
2002#define DDFXCAPS_OVERLAYSHRINKY 0x00200000l
2003
2004/*
2005 * DirectDraw supports integer shrinking (1x,2x,) of a surface
2006 * along the y axis (vertical direction) for overlays.
2007 */
2008#define DDFXCAPS_OVERLAYSHRINKYN 0x00400000l
2009
2010/*
2011 * DirectDraw supports arbitrary stretching of a surface along the
2012 * x axis (horizontal direction) for overlays.
2013 */
2014#define DDFXCAPS_OVERLAYSTRETCHX 0x00800000l
2015
2016/*
2017 * DirectDraw supports integer stretching (1x,2x,) of a surface
2018 * along the x axis (horizontal direction) for overlays.
2019 */
2020#define DDFXCAPS_OVERLAYSTRETCHXN 0x01000000l
2021
2022/*
2023 * DirectDraw supports arbitrary stretching of a surface along the
2024 * y axis (horizontal direction) for overlays.
2025 */
2026#define DDFXCAPS_OVERLAYSTRETCHY 0x02000000l
2027
2028/*
2029 * DirectDraw supports integer stretching (1x,2x,) of a surface
2030 * along the y axis (vertical direction) for overlays.
2031 */
2032#define DDFXCAPS_OVERLAYSTRETCHYN 0x04000000l
2033
2034/*
2035 * DirectDraw supports mirroring of overlays across the vertical axis
2036 */
2037#define DDFXCAPS_OVERLAYMIRRORLEFTRIGHT 0x08000000l
2038
2039/*
2040 * DirectDraw supports mirroring of overlays across the horizontal axis
2041 */
2042#define DDFXCAPS_OVERLAYMIRRORUPDOWN 0x10000000l
2043
2044/****************************************************************************
2045 *
2046 * DIRECTDRAW STEREO VIEW CAPABILITIES
2047 *
2048 ****************************************************************************/
2049
2050/*
2051 * The stereo view is accomplished via enigma encoding.
2052 */
2053#define DDSVCAPS_ENIGMA 0x00000001l
2054
2055/*
2056 * The stereo view is accomplished via high frequency flickering.
2057 */
2058#define DDSVCAPS_FLICKER 0x00000002l
2059
2060/*
2061 * The stereo view is accomplished via red and blue filters applied
2062 * to the left and right eyes. All images must adapt their colorspaces
2063 * for this process.
2064 */
2065#define DDSVCAPS_REDBLUE 0x00000004l
2066
2067/*
2068 * The stereo view is accomplished with split screen technology.
2069 */
2070#define DDSVCAPS_SPLIT 0x00000008l
2071
2072/****************************************************************************
2073 *
2074 * DIRECTDRAWPALETTE CAPABILITIES
2075 *
2076 ****************************************************************************/
2077
2078/*
2079 * Index is 4 bits. There are sixteen color entries in the palette table.
2080 */
2081#define DDPCAPS_4BIT 0x00000001l
2082
2083/*
2084 * Index is onto a 8 bit color index. This field is only valid with the
2085 * DDPCAPS_1BIT, DDPCAPS_2BIT or DDPCAPS_4BIT capability and the target
2086 * surface is in 8bpp. Each color entry is one byte long and is an index
2087 * into destination surface's 8bpp palette.
2088 */
2089#define DDPCAPS_8BITENTRIES 0x00000002l
2090
2091/*
2092 * Index is 8 bits. There are 256 color entries in the palette table.
2093 */
2094#define DDPCAPS_8BIT 0x00000004l
2095
2096/*
2097 * Indicates that this DIRECTDRAWPALETTE should use the palette color array
2098 * passed into the lpDDColorArray parameter to initialize the DIRECTDRAWPALETTE
2099 * object.
2100 */
2101#define DDPCAPS_INITIALIZE 0x00000008l
2102
2103/*
2104 * This palette is the one attached to the primary surface. Changing this
2105 * table has immediate effect on the display unless DDPSETPAL_VSYNC is specified
2106 * and supported.
2107 */
2108#define DDPCAPS_PRIMARYSURFACE 0x00000010l
2109
2110/*
2111 * This palette is the one attached to the primary surface left. Changing
2112 * this table has immediate effect on the display for the left eye unless
2113 * DDPSETPAL_VSYNC is specified and supported.
2114 */
2115#define DDPCAPS_PRIMARYSURFACELEFT 0x00000020l
2116
2117/*
2118 * This palette can have all 256 entries defined
2119 */
2120#define DDPCAPS_ALLOW256 0x00000040l
2121
2122/*
2123 * This palette can have modifications to it synced with the monitors
2124 * refresh rate.
2125 */
2126#define DDPCAPS_VSYNC 0x00000080l
2127
2128/*
2129 * Index is 1 bit. There are two color entries in the palette table.
2130 */
2131#define DDPCAPS_1BIT 0x00000100l
2132
2133/*
2134 * Index is 2 bit. There are four color entries in the palette table.
2135 */
2136#define DDPCAPS_2BIT 0x00000200l
2137
2138
2139/****************************************************************************
2140 *
2141 * DIRECTDRAWPALETTE SETENTRY CONSTANTS
2142 *
2143 ****************************************************************************/
2144
2145
2146/****************************************************************************
2147 *
2148 * DIRECTDRAWPALETTE GETENTRY CONSTANTS
2149 *
2150 ****************************************************************************/
2151
2152/* 0 is the only legal value */
2153
2154/****************************************************************************
2155 *
2156 * DIRECTDRAWSURFACE SETPALETTE CONSTANTS
2157 *
2158 ****************************************************************************/
2159
2160
2161/****************************************************************************
2162 *
2163 * DIRECTDRAW BITDEPTH CONSTANTS
2164 *
2165 * NOTE: These are only used to indicate supported bit depths. These
2166 * are flags only, they are not to be used as an actual bit depth. The
2167 * absolute numbers 1, 2, 4, 8, 16, 24 and 32 are used to indicate actual
2168 * bit depths in a surface or for changing the display mode.
2169 *
2170 ****************************************************************************/
2171
2172/*
2173 * 1 bit per pixel.
2174 */
2175#define DDBD_1 0x00004000l
2176
2177/*
2178 * 2 bits per pixel.
2179 */
2180#define DDBD_2 0x00002000l
2181
2182/*
2183 * 4 bits per pixel.
2184 */
2185#define DDBD_4 0x00001000l
2186
2187/*
2188 * 8 bits per pixel.
2189 */
2190#define DDBD_8 0x00000800l
2191
2192/*
2193 * 16 bits per pixel.
2194 */
2195#define DDBD_16 0x00000400l
2196
2197/*
2198 * 24 bits per pixel.
2199 */
2200#define DDBD_24 0X00000200l
2201
2202/*
2203 * 32 bits per pixel.
2204 */
2205#define DDBD_32 0x00000100l
2206
2207/****************************************************************************
2208 *
2209 * DIRECTDRAWSURFACE SET/GET COLOR KEY FLAGS
2210 *
2211 ****************************************************************************/
2212
2213/*
2214 * Set if the structure contains a color space. Not set if the structure
2215 * contains a single color key.
2216 */
2217#define DDCKEY_COLORSPACE 0x00000001l
2218
2219/*
2220 * Set if the structure specifies a color key or color space which is to be
2221 * used as a destination color key for blt operations.
2222 */
2223#define DDCKEY_DESTBLT 0x00000002l
2224
2225/*
2226 * Set if the structure specifies a color key or color space which is to be
2227 * used as a destination color key for overlay operations.
2228 */
2229#define DDCKEY_DESTOVERLAY 0x00000004l
2230
2231/*
2232 * Set if the structure specifies a color key or color space which is to be
2233 * used as a source color key for blt operations.
2234 */
2235#define DDCKEY_SRCBLT 0x00000008l
2236
2237/*
2238 * Set if the structure specifies a color key or color space which is to be
2239 * used as a source color key for overlay operations.
2240 */
2241#define DDCKEY_SRCOVERLAY 0x00000010l
2242
2243
2244/****************************************************************************
2245 *
2246 * DIRECTDRAW COLOR KEY CAPABILITY FLAGS
2247 *
2248 ****************************************************************************/
2249
2250/*
2251 * Supports transparent blting using a color key to identify the replaceable
2252 * bits of the destination surface for RGB colors.
2253 */
2254#define DDCKEYCAPS_DESTBLT 0x00000001l
2255
2256/*
2257 * Supports transparent blting using a color space to identify the replaceable
2258 * bits of the destination surface for RGB colors.
2259 */
2260#define DDCKEYCAPS_DESTBLTCLRSPACE 0x00000002l
2261
2262/*
2263 * Supports transparent blting using a color space to identify the replaceable
2264 * bits of the destination surface for YUV colors.
2265 */
2266#define DDCKEYCAPS_DESTBLTCLRSPACEYUV 0x00000004l
2267
2268/*
2269 * Supports transparent blting using a color key to identify the replaceable
2270 * bits of the destination surface for YUV colors.
2271 */
2272#define DDCKEYCAPS_DESTBLTYUV 0x00000008l
2273
2274/*
2275 * Supports overlaying using colorkeying of the replaceable bits of the surface
2276 * being overlayed for RGB colors.
2277 */
2278#define DDCKEYCAPS_DESTOVERLAY 0x00000010l
2279
2280/*
2281 * Supports a color space as the color key for the destination for RGB colors.
2282 */
2283#define DDCKEYCAPS_DESTOVERLAYCLRSPACE 0x00000020l
2284
2285/*
2286 * Supports a color space as the color key for the destination for YUV colors.
2287 */
2288#define DDCKEYCAPS_DESTOVERLAYCLRSPACEYUV 0x00000040l
2289
2290/*
2291 * Supports only one active destination color key value for visible overlay
2292 * surfaces.
2293 */
2294#define DDCKEYCAPS_DESTOVERLAYONEACTIVE 0x00000080l
2295
2296/*
2297 * Supports overlaying using colorkeying of the replaceable bits of the
2298 * surface being overlayed for YUV colors.
2299 */
2300#define DDCKEYCAPS_DESTOVERLAYYUV 0x00000100l
2301
2302/*
2303 * Supports transparent blting using the color key for the source with
2304 * this surface for RGB colors.
2305 */
2306#define DDCKEYCAPS_SRCBLT 0x00000200l
2307
2308/*
2309 * Supports transparent blting using a color space for the source with
2310 * this surface for RGB colors.
2311 */
2312#define DDCKEYCAPS_SRCBLTCLRSPACE 0x00000400l
2313
2314/*
2315 * Supports transparent blting using a color space for the source with
2316 * this surface for YUV colors.
2317 */
2318#define DDCKEYCAPS_SRCBLTCLRSPACEYUV 0x00000800l
2319
2320/*
2321 * Supports transparent blting using the color key for the source with
2322 * this surface for YUV colors.
2323 */
2324#define DDCKEYCAPS_SRCBLTYUV 0x00001000l
2325
2326/*
2327 * Supports overlays using the color key for the source with this
2328 * overlay surface for RGB colors.
2329 */
2330#define DDCKEYCAPS_SRCOVERLAY 0x00002000l
2331
2332/*
2333 * Supports overlays using a color space as the source color key for
2334 * the overlay surface for RGB colors.
2335 */
2336#define DDCKEYCAPS_SRCOVERLAYCLRSPACE 0x00004000l
2337
2338/*
2339 * Supports overlays using a color space as the source color key for
2340 * the overlay surface for YUV colors.
2341 */
2342#define DDCKEYCAPS_SRCOVERLAYCLRSPACEYUV 0x00008000l
2343
2344/*
2345 * Supports only one active source color key value for visible
2346 * overlay surfaces.
2347 */
2348#define DDCKEYCAPS_SRCOVERLAYONEACTIVE 0x00010000l
2349
2350/*
2351 * Supports overlays using the color key for the source with this
2352 * overlay surface for YUV colors.
2353 */
2354#define DDCKEYCAPS_SRCOVERLAYYUV 0x00020000l
2355
2356/*
2357 * there are no bandwidth trade-offs for using colorkey with an overlay
2358 */
2359#define DDCKEYCAPS_NOCOSTOVERLAY 0x00040000l
2360
2361
2362/****************************************************************************
2363 *
2364 * DIRECTDRAW PIXELFORMAT FLAGS
2365 *
2366 ****************************************************************************/
2367
2368/*
2369 * The surface has alpha channel information in the pixel format.
2370 */
2371#define DDPF_ALPHAPIXELS 0x00000001l
2372
2373/*
2374 * The pixel format contains alpha only information
2375 */
2376#define DDPF_ALPHA 0x00000002l
2377
2378/*
2379 * The FourCC code is valid.
2380 */
2381#define DDPF_FOURCC 0x00000004l
2382
2383/*
2384 * The surface is 4-bit color indexed.
2385 */
2386#define DDPF_PALETTEINDEXED4 0x00000008l
2387
2388/*
2389 * The surface is indexed into a palette which stores indices
2390 * into the destination surface's 8-bit palette.
2391 */
2392#define DDPF_PALETTEINDEXEDTO8 0x00000010l
2393
2394/*
2395 * The surface is 8-bit color indexed.
2396 */
2397#define DDPF_PALETTEINDEXED8 0x00000020l
2398
2399/*
2400 * The RGB data in the pixel format structure is valid.
2401 */
2402#define DDPF_RGB 0x00000040l
2403
2404/*
2405 * The surface will accept pixel data in the format specified
2406 * and compress it during the write.
2407 */
2408#define DDPF_COMPRESSED 0x00000080l
2409
2410/*
2411 * The surface will accept RGB data and translate it during
2412 * the write to YUV data. The format of the data to be written
2413 * will be contained in the pixel format structure. The DDPF_RGB
2414 * flag will be set.
2415 */
2416#define DDPF_RGBTOYUV 0x00000100l
2417
2418/*
2419 * pixel format is YUV - YUV data in pixel format struct is valid
2420 */
2421#define DDPF_YUV 0x00000200l
2422
2423/*
2424 * pixel format is a z buffer only surface
2425 */
2426#define DDPF_ZBUFFER 0x00000400l
2427
2428/*
2429 * The surface is 1-bit color indexed.
2430 */
2431#define DDPF_PALETTEINDEXED1 0x00000800l
2432
2433/*
2434 * The surface is 2-bit color indexed.
2435 */
2436#define DDPF_PALETTEINDEXED2 0x00001000l
2437
2438/*
2439 * The surface contains Z information in the pixels
2440 */
2441#define DDPF_ZPIXELS 0x00002000l
2442
2443/*===========================================================================
2444 *
2445 *
2446 * DIRECTDRAW CALLBACK FLAGS
2447 *
2448 *
2449 *==========================================================================*/
2450
2451/****************************************************************************
2452 *
2453 * DIRECTDRAW ENUMSURFACES FLAGS
2454 *
2455 ****************************************************************************/
2456
2457/*
2458 * Enumerate all of the surfaces that meet the search criterion.
2459 */
2460#define DDENUMSURFACES_ALL 0x00000001l
2461
2462/*
2463 * A search hit is a surface that matches the surface description.
2464 */
2465#define DDENUMSURFACES_MATCH 0x00000002l
2466
2467/*
2468 * A search hit is a surface that does not match the surface description.
2469 */
2470#define DDENUMSURFACES_NOMATCH 0x00000004l
2471
2472/*
2473 * Enumerate the first surface that can be created which meets the search criterion.
2474 */
2475#define DDENUMSURFACES_CANBECREATED 0x00000008l
2476
2477/*
2478 * Enumerate the surfaces that already exist that meet the search criterion.
2479 */
2480#define DDENUMSURFACES_DOESEXIST 0x00000010l
2481
2482
2483/****************************************************************************
2484 *
2485 * DIRECTDRAW SETDISPLAYMODE FLAGS
2486 *
2487 ****************************************************************************/
2488
2489/*
2490 * The desired mode is a standard VGA mode
2491 */
2492#define DDSDM_STANDARDVGAMODE 0x00000001l
2493
2494
2495
2496/****************************************************************************
2497 *
2498 * DIRECTDRAW ENUMDISPLAYMODES FLAGS
2499 *
2500 ****************************************************************************/
2501
2502/*
2503 * Enumerate Modes with different refresh rates. EnumDisplayModes guarantees
2504 * that a particular mode will be enumerated only once. This flag specifies whether
2505 * the refresh rate is taken into account when determining if a mode is unique.
2506 */
2507#define DDEDM_REFRESHRATES 0x00000001l
2508
2509/*
2510 * Enumerate VGA modes. Specify this flag if you wish to enumerate supported VGA
2511 * modes such as mode 0x13 in addition to the usual ModeX modes (which are always
2512 * enumerated if the application has previously called SetCooperativeLevel with the
2513 * DDSCL_ALLOWMODEX flag set).
2514 */
2515#define DDEDM_STANDARDVGAMODES 0x00000002L
2516
2517
2518/****************************************************************************
2519 *
2520 * DIRECTDRAW SETCOOPERATIVELEVEL FLAGS
2521 *
2522 ****************************************************************************/
2523
2524/*
2525 * Exclusive mode owner will be responsible for the entire primary surface.
2526 * GDI can be ignored. used with DD
2527 */
2528#define DDSCL_FULLSCREEN 0x00000001l
2529
2530/*
2531 * allow CTRL_ALT_DEL to work while in fullscreen exclusive mode
2532 */
2533#define DDSCL_ALLOWREBOOT 0x00000002l
2534
2535/*
2536 * prevents DDRAW from modifying the application window.
2537 * prevents DDRAW from minimize/restore the application window on activation.
2538 */
2539#define DDSCL_NOWINDOWCHANGES 0x00000004l
2540
2541/*
2542 * app wants to work as a regular Windows application
2543 */
2544#define DDSCL_NORMAL 0x00000008l
2545
2546/*
2547 * app wants exclusive access
2548 */
2549#define DDSCL_EXCLUSIVE 0x00000010l
2550
2551
2552/*
2553 * app can deal with non-windows display modes
2554 */
2555#define DDSCL_ALLOWMODEX 0x00000040l
2556
2557
2558/****************************************************************************
2559 *
2560 * DIRECTDRAW BLT FLAGS
2561 *
2562 ****************************************************************************/
2563
2564/*
2565 * Use the alpha information in the pixel format or the alpha channel surface
2566 * attached to the destination surface as the alpha channel for this blt.
2567 */
2568#define DDBLT_ALPHADEST 0x00000001l
2569
2570/*
2571 * Use the dwConstAlphaDest field in the DDBLTFX structure as the alpha channel
2572 * for the destination surface for this blt.
2573 */
2574#define DDBLT_ALPHADESTCONSTOVERRIDE 0x00000002l
2575
2576/*
2577 * The NEG suffix indicates that the destination surface becomes more
2578 * transparent as the alpha value increases. (0 is opaque)
2579 */
2580#define DDBLT_ALPHADESTNEG 0x00000004l
2581
2582/*
2583 * Use the lpDDSAlphaDest field in the DDBLTFX structure as the alpha
2584 * channel for the destination for this blt.
2585 */
2586#define DDBLT_ALPHADESTSURFACEOVERRIDE 0x00000008l
2587
2588/*
2589 * Use the dwAlphaEdgeBlend field in the DDBLTFX structure as the alpha channel
2590 * for the edges of the image that border the color key colors.
2591 */
2592#define DDBLT_ALPHAEDGEBLEND 0x00000010l
2593
2594/*
2595 * Use the alpha information in the pixel format or the alpha channel surface
2596 * attached to the source surface as the alpha channel for this blt.
2597 */
2598#define DDBLT_ALPHASRC 0x00000020l
2599
2600/*
2601 * Use the dwConstAlphaSrc field in the DDBLTFX structure as the alpha channel
2602 * for the source for this blt.
2603 */
2604#define DDBLT_ALPHASRCCONSTOVERRIDE 0x00000040l
2605
2606/*
2607 * The NEG suffix indicates that the source surface becomes more transparent
2608 * as the alpha value increases. (0 is opaque)
2609 */
2610#define DDBLT_ALPHASRCNEG 0x00000080l
2611
2612/*
2613 * Use the lpDDSAlphaSrc field in the DDBLTFX structure as the alpha channel
2614 * for the source for this blt.
2615 */
2616#define DDBLT_ALPHASRCSURFACEOVERRIDE 0x00000100l
2617
2618/*
2619 * Do this blt asynchronously through the FIFO in the order received. If
2620 * there is no room in the hardware FIFO fail the call.
2621 */
2622#define DDBLT_ASYNC 0x00000200l
2623
2624/*
2625 * Uses the dwFillColor field in the DDBLTFX structure as the RGB color
2626 * to fill the destination rectangle on the destination surface with.
2627 */
2628#define DDBLT_COLORFILL 0x00000400l
2629
2630/*
2631 * Uses the dwDDFX field in the DDBLTFX structure to specify the effects
2632 * to use for the blt.
2633 */
2634#define DDBLT_DDFX 0x00000800l
2635
2636/*
2637 * Uses the dwDDROPS field in the DDBLTFX structure to specify the ROPS
2638 * that are not part of the Win32 API.
2639 */
2640#define DDBLT_DDROPS 0x00001000l
2641
2642/*
2643 * Use the color key associated with the destination surface.
2644 */
2645#define DDBLT_KEYDEST 0x00002000l
2646
2647/*
2648 * Use the dckDestColorkey field in the DDBLTFX structure as the color key
2649 * for the destination surface.
2650 */
2651#define DDBLT_KEYDESTOVERRIDE 0x00004000l
2652
2653/*
2654 * Use the color key associated with the source surface.
2655 */
2656#define DDBLT_KEYSRC 0x00008000l
2657
2658/*
2659 * Use the dckSrcColorkey field in the DDBLTFX structure as the color key
2660 * for the source surface.
2661 */
2662#define DDBLT_KEYSRCOVERRIDE 0x00010000l
2663
2664/*
2665 * Use the dwROP field in the DDBLTFX structure for the raster operation
2666 * for this blt. These ROPs are the same as the ones defined in the Win32 API.
2667 */
2668#define DDBLT_ROP 0x00020000l
2669
2670/*
2671 * Use the dwRotationAngle field in the DDBLTFX structure as the angle
2672 * (specified in 1/100th of a degree) to rotate the surface.
2673 */
2674#define DDBLT_ROTATIONANGLE 0x00040000l
2675
2676/*
2677 * Z-buffered blt using the z-buffers attached to the source and destination
2678 * surfaces and the dwZBufferOpCode field in the DDBLTFX structure as the
2679 * z-buffer opcode.
2680 */
2681#define DDBLT_ZBUFFER 0x00080000l
2682
2683/*
2684 * Z-buffered blt using the dwConstDest Zfield and the dwZBufferOpCode field
2685 * in the DDBLTFX structure as the z-buffer and z-buffer opcode respectively
2686 * for the destination.
2687 */
2688#define DDBLT_ZBUFFERDESTCONSTOVERRIDE 0x00100000l
2689
2690/*
2691 * Z-buffered blt using the lpDDSDestZBuffer field and the dwZBufferOpCode
2692 * field in the DDBLTFX structure as the z-buffer and z-buffer opcode
2693 * respectively for the destination.
2694 */
2695#define DDBLT_ZBUFFERDESTOVERRIDE 0x00200000l
2696
2697/*
2698 * Z-buffered blt using the dwConstSrcZ field and the dwZBufferOpCode field
2699 * in the DDBLTFX structure as the z-buffer and z-buffer opcode respectively
2700 * for the source.
2701 */
2702#define DDBLT_ZBUFFERSRCCONSTOVERRIDE 0x00400000l
2703
2704/*
2705 * Z-buffered blt using the lpDDSSrcZBuffer field and the dwZBufferOpCode
2706 * field in the DDBLTFX structure as the z-buffer and z-buffer opcode
2707 * respectively for the source.
2708 */
2709#define DDBLT_ZBUFFERSRCOVERRIDE 0x00800000l
2710
2711/*
2712 * wait until the device is ready to handle the blt
2713 * this will cause blt to not return DDERR_WASSTILLDRAWING
2714 */
2715#define DDBLT_WAIT 0x01000000l
2716
2717/*
2718 * Uses the dwFillDepth field in the DDBLTFX structure as the depth value
2719 * to fill the destination rectangle on the destination Z-buffer surface
2720 * with.
2721 */
2722#define DDBLT_DEPTHFILL 0x02000000l
2723
2724
2725
2726/****************************************************************************
2727 *
2728 * BLTFAST FLAGS
2729 *
2730 ****************************************************************************/
2731
2732#define DDBLTFAST_NOCOLORKEY 0x00000000
2733#define DDBLTFAST_SRCCOLORKEY 0x00000001
2734#define DDBLTFAST_DESTCOLORKEY 0x00000002
2735#define DDBLTFAST_WAIT 0x00000010
2736
2737/****************************************************************************
2738 *
2739 * FLIP FLAGS
2740 *
2741 ****************************************************************************/
2742
2743#define DDFLIP_WAIT 0x00000001l
2744
2745/*
2746 * Indicates that the target surface contains the even field of video data.
2747 * This flag is only valid with an overlay surface.
2748 */
2749#define DDFLIP_EVEN 0x00000002l
2750
2751/*
2752 * Indicates that the target surface contains the odd field of video data.
2753 * This flag is only valid with an overlay surface.
2754 */
2755#define DDFLIP_ODD 0x00000004l
2756
2757
2758
2759/****************************************************************************
2760 *
2761 * DIRECTDRAW SURFACE OVERLAY FLAGS
2762 *
2763 ****************************************************************************/
2764
2765/*
2766 * Use the alpha information in the pixel format or the alpha channel surface
2767 * attached to the destination surface as the alpha channel for the
2768 * destination overlay.
2769 */
2770#define DDOVER_ALPHADEST 0x00000001l
2771
2772/*
2773 * Use the dwConstAlphaDest field in the DDOVERLAYFX structure as the
2774 * destination alpha channel for this overlay.
2775 */
2776#define DDOVER_ALPHADESTCONSTOVERRIDE 0x00000002l
2777
2778/*
2779 * The NEG suffix indicates that the destination surface becomes more
2780 * transparent as the alpha value increases.
2781 */
2782#define DDOVER_ALPHADESTNEG 0x00000004l
2783
2784/*
2785 * Use the lpDDSAlphaDest field in the DDOVERLAYFX structure as the alpha
2786 * channel destination for this overlay.
2787 */
2788#define DDOVER_ALPHADESTSURFACEOVERRIDE 0x00000008l
2789
2790/*
2791 * Use the dwAlphaEdgeBlend field in the DDOVERLAYFX structure as the alpha
2792 * channel for the edges of the image that border the color key colors.
2793 */
2794#define DDOVER_ALPHAEDGEBLEND 0x00000010l
2795
2796/*
2797 * Use the alpha information in the pixel format or the alpha channel surface
2798 * attached to the source surface as the source alpha channel for this overlay.
2799 */
2800#define DDOVER_ALPHASRC 0x00000020l
2801
2802/*
2803 * Use the dwConstAlphaSrc field in the DDOVERLAYFX structure as the source
2804 * alpha channel for this overlay.
2805 */
2806#define DDOVER_ALPHASRCCONSTOVERRIDE 0x00000040l
2807
2808/*
2809 * The NEG suffix indicates that the source surface becomes more transparent
2810 * as the alpha value increases.
2811 */
2812#define DDOVER_ALPHASRCNEG 0x00000080l
2813
2814/*
2815 * Use the lpDDSAlphaSrc field in the DDOVERLAYFX structure as the alpha channel
2816 * source for this overlay.
2817 */
2818#define DDOVER_ALPHASRCSURFACEOVERRIDE 0x00000100l
2819
2820/*
2821 * Turn this overlay off.
2822 */
2823#define DDOVER_HIDE 0x00000200l
2824
2825/*
2826 * Use the color key associated with the destination surface.
2827 */
2828#define DDOVER_KEYDEST 0x00000400l
2829
2830/*
2831 * Use the dckDestColorkey field in the DDOVERLAYFX structure as the color key
2832 * for the destination surface
2833 */
2834#define DDOVER_KEYDESTOVERRIDE 0x00000800l
2835
2836/*
2837 * Use the color key associated with the source surface.
2838 */
2839#define DDOVER_KEYSRC 0x00001000l
2840
2841/*
2842 * Use the dckSrcColorkey field in the DDOVERLAYFX structure as the color key
2843 * for the source surface.
2844 */
2845#define DDOVER_KEYSRCOVERRIDE 0x00002000l
2846
2847/*
2848 * Turn this overlay on.
2849 */
2850#define DDOVER_SHOW 0x00004000l
2851
2852/*
2853 * Add a dirty rect to an emulated overlayed surface.
2854 */
2855#define DDOVER_ADDDIRTYRECT 0x00008000l
2856
2857/*
2858 * Redraw all dirty rects on an emulated overlayed surface.
2859 */
2860#define DDOVER_REFRESHDIRTYRECTS 0x00010000l
2861
2862/*
2863 * Redraw the entire surface on an emulated overlayed surface.
2864 */
2865#define DDOVER_REFRESHALL 0x00020000l
2866
2867
2868/*
2869 * Use the overlay FX flags to define special overlay FX
2870 */
2871#define DDOVER_DDFX 0x00080000l
2872
2873/*
2874 * Autoflip the overlay when ever the video port autoflips
2875 */
2876#define DDOVER_AUTOFLIP 0x00100000l
2877
2878/*
2879 * Display each field of video port data individually without
2880 * causing any jittery artifacts
2881 */
2882#define DDOVER_BOB 0x00200000l
2883
2884/*
2885 * Indicates that bob/weave decisions should not be overridden by other
2886 * interfaces.
2887 */
2888#define DDOVER_OVERRIDEBOBWEAVE 0x00400000l
2889
2890/*
2891 * Indicates that the surface memory is composed of interleaved fields.
2892 */
2893#define DDOVER_INTERLEAVED 0x00800000l
2894
2895
2896/****************************************************************************
2897 *
2898 * DIRECTDRAWSURFACE LOCK FLAGS
2899 *
2900 ****************************************************************************/
2901
2902/*
2903 * The default. Set to indicate that Lock should return a valid memory pointer
2904 * to the top of the specified rectangle. If no rectangle is specified then a
2905 * pointer to the top of the surface is returned.
2906 */
2907#define DDLOCK_SURFACEMEMORYPTR 0x00000000L // default
2908
2909/*
2910 * Set to indicate that Lock should wait until it can obtain a valid memory
2911 * pointer before returning. If this bit is set, Lock will never return
2912 * DDERR_WASSTILLDRAWING.
2913 */
2914#define DDLOCK_WAIT 0x00000001L
2915
2916/*
2917 * Set if an event handle is being passed to Lock. Lock will trigger the event
2918 * when it can return the surface memory pointer requested.
2919 */
2920#define DDLOCK_EVENT 0x00000002L
2921
2922/*
2923 * Indicates that the surface being locked will only be read from.
2924 */
2925#define DDLOCK_READONLY 0x00000010L
2926
2927/*
2928 * Indicates that the surface being locked will only be written to
2929 */
2930#define DDLOCK_WRITEONLY 0x00000020L
2931
2932
2933/*
2934 * Indicates that a system wide lock should not be taken when this surface
2935 * is locked. This has several advantages (cursor responsiveness, ability
2936 * to call more Windows functions, easier debugging) when locking video
2937 * memory surfaces. However, an application specifying this flag must
2938 * comply with a number of conditions documented in the help file.
2939 * Furthermore, this flag cannot be specified when locking the primary.
2940 */
2941#define DDLOCK_NOSYSLOCK 0x00000800L
2942
2943
2944/****************************************************************************
2945 *
2946 * DIRECTDRAWSURFACE PAGELOCK FLAGS
2947 *
2948 ****************************************************************************/
2949
2950/*
2951 * No flags defined at present
2952 */
2953
2954
2955/****************************************************************************
2956 *
2957 * DIRECTDRAWSURFACE PAGEUNLOCK FLAGS
2958 *
2959 ****************************************************************************/
2960
2961/*
2962 * No flags defined at present
2963 */
2964
2965
2966/****************************************************************************
2967 *
2968 * DIRECTDRAWSURFACE BLT FX FLAGS
2969 *
2970 ****************************************************************************/
2971
2972/*
2973 * If stretching, use arithmetic stretching along the Y axis for this blt.
2974 */
2975#define DDBLTFX_ARITHSTRETCHY 0x00000001l
2976
2977/*
2978 * Do this blt mirroring the surface left to right. Spin the
2979 * surface around its y-axis.
2980 */
2981#define DDBLTFX_MIRRORLEFTRIGHT 0x00000002l
2982
2983/*
2984 * Do this blt mirroring the surface up and down. Spin the surface
2985 * around its x-axis.
2986 */
2987#define DDBLTFX_MIRRORUPDOWN 0x00000004l
2988
2989/*
2990 * Schedule this blt to avoid tearing.
2991 */
2992#define DDBLTFX_NOTEARING 0x00000008l
2993
2994/*
2995 * Do this blt rotating the surface one hundred and eighty degrees.
2996 */
2997#define DDBLTFX_ROTATE180 0x00000010l
2998
2999/*
3000 * Do this blt rotating the surface two hundred and seventy degrees.
3001 */
3002#define DDBLTFX_ROTATE270 0x00000020l
3003
3004/*
3005 * Do this blt rotating the surface ninety degrees.
3006 */
3007#define DDBLTFX_ROTATE90 0x00000040l
3008
3009/*
3010 * Do this z blt using dwZBufferLow and dwZBufferHigh as range values
3011 * specified to limit the bits copied from the source surface.
3012 */
3013#define DDBLTFX_ZBUFFERRANGE 0x00000080l
3014
3015/*
3016 * Do this z blt adding the dwZBufferBaseDest to each of the sources z values
3017 * before comparing it with the desting z values.
3018 */
3019#define DDBLTFX_ZBUFFERBASEDEST 0x00000100l
3020
3021/****************************************************************************
3022 *
3023 * DIRECTDRAWSURFACE OVERLAY FX FLAGS
3024 *
3025 ****************************************************************************/
3026
3027/*
3028 * If stretching, use arithmetic stretching along the Y axis for this overlay.
3029 */
3030#define DDOVERFX_ARITHSTRETCHY 0x00000001l
3031
3032/*
3033 * Mirror the overlay across the vertical axis
3034 */
3035#define DDOVERFX_MIRRORLEFTRIGHT 0x00000002l
3036
3037/*
3038 * Mirror the overlay across the horizontal axis
3039 */
3040#define DDOVERFX_MIRRORUPDOWN 0x00000004l
3041
3042/****************************************************************************
3043 *
3044 * DIRECTDRAW WAITFORVERTICALBLANK FLAGS
3045 *
3046 ****************************************************************************/
3047
3048/*
3049 * return when the vertical blank interval begins
3050 */
3051#define DDWAITVB_BLOCKBEGIN 0x00000001l
3052
3053/*
3054 * set up an event to trigger when the vertical blank begins
3055 */
3056#define DDWAITVB_BLOCKBEGINEVENT 0x00000002l
3057
3058/*
3059 * return when the vertical blank interval ends and display begins
3060 */
3061#define DDWAITVB_BLOCKEND 0x00000004l
3062
3063/****************************************************************************
3064 *
3065 * DIRECTDRAW GETFLIPSTATUS FLAGS
3066 *
3067 ****************************************************************************/
3068
3069/*
3070 * is it OK to flip now?
3071 */
3072#define DDGFS_CANFLIP 0x00000001l
3073
3074/*
3075 * is the last flip finished?
3076 */
3077#define DDGFS_ISFLIPDONE 0x00000002l
3078
3079/****************************************************************************
3080 *
3081 * DIRECTDRAW GETBLTSTATUS FLAGS
3082 *
3083 ****************************************************************************/
3084
3085/*
3086 * is it OK to blt now?
3087 */
3088#define DDGBS_CANBLT 0x00000001l
3089
3090/*
3091 * is the blt to the surface finished?
3092 */
3093#define DDGBS_ISBLTDONE 0x00000002l
3094
3095
3096/****************************************************************************
3097 *
3098 * DIRECTDRAW ENUMOVERLAYZORDER FLAGS
3099 *
3100 ****************************************************************************/
3101
3102/*
3103 * Enumerate overlays back to front.
3104 */
3105#define DDENUMOVERLAYZ_BACKTOFRONT 0x00000000l
3106
3107/*
3108 * Enumerate overlays front to back
3109 */
3110#define DDENUMOVERLAYZ_FRONTTOBACK 0x00000001l
3111
3112/****************************************************************************
3113 *
3114 * DIRECTDRAW UPDATEOVERLAYZORDER FLAGS
3115 *
3116 ****************************************************************************/
3117
3118/*
3119 * Send overlay to front
3120 */
3121#define DDOVERZ_SENDTOFRONT 0x00000000l
3122
3123/*
3124 * Send overlay to back
3125 */
3126#define DDOVERZ_SENDTOBACK 0x00000001l
3127
3128/*
3129 * Move Overlay forward
3130 */
3131#define DDOVERZ_MOVEFORWARD 0x00000002l
3132
3133/*
3134 * Move Overlay backward
3135 */
3136#define DDOVERZ_MOVEBACKWARD 0x00000003l
3137
3138/*
3139 * Move Overlay in front of relative surface
3140 */
3141#define DDOVERZ_INSERTINFRONTOF 0x00000004l
3142
3143/*
3144 * Move Overlay in back of relative surface
3145 */
3146#define DDOVERZ_INSERTINBACKOF 0x00000005l
3147
3148/*===========================================================================
3149 *
3150 *
3151 * DIRECTDRAW RETURN CODES
3152 *
3153 * The return values from DirectDraw Commands and Surface that return an HRESULT
3154 * are codes from DirectDraw concerning the results of the action
3155 * requested by DirectDraw.
3156 *
3157 *==========================================================================*/
3158
3159/*
3160 * Status is OK
3161 *
3162 * Issued by: DirectDraw Commands and all callbacks
3163 */
3164#define DD_OK 0
3165
3166/****************************************************************************
3167 *
3168 * DIRECTDRAW ENUMCALLBACK RETURN VALUES
3169 *
3170 * EnumCallback returns are used to control the flow of the DIRECTDRAW and
3171 * DIRECTDRAWSURFACE object enumerations. They can only be returned by
3172 * enumeration callback routines.
3173 *
3174 ****************************************************************************/
3175
3176/*
3177 * stop the enumeration
3178 */
3179#define DDENUMRET_CANCEL 0
3180
3181/*
3182 * continue the enumeration
3183 */
3184#define DDENUMRET_OK 1
3185
3186/****************************************************************************
3187 *
3188 * DIRECTDRAW ERRORS
3189 *
3190 * Errors are represented by negative values and cannot be combined.
3191 *
3192 ****************************************************************************/
3193
3194/*
3195 * This object is already initialized
3196 */
3197#define DDERR_ALREADYINITIALIZED MAKE_DDHRESULT( 5 )
3198
3199/*
3200 * This surface can not be attached to the requested surface.
3201 */
3202#define DDERR_CANNOTATTACHSURFACE MAKE_DDHRESULT( 10 )
3203
3204/*
3205 * This surface can not be detached from the requested surface.
3206 */
3207#define DDERR_CANNOTDETACHSURFACE MAKE_DDHRESULT( 20 )
3208
3209/*
3210 * Support is currently not available.
3211 */
3212#define DDERR_CURRENTLYNOTAVAIL MAKE_DDHRESULT( 40 )
3213
3214/*
3215 * An exception was encountered while performing the requested operation
3216 */
3217#define DDERR_EXCEPTION MAKE_DDHRESULT( 55 )
3218
3219/*
3220 * Generic failure.
3221 */
3222#define DDERR_GENERIC E_FAIL
3223
3224/*
3225 * Height of rectangle provided is not a multiple of reqd alignment
3226 */
3227#define DDERR_HEIGHTALIGN MAKE_DDHRESULT( 90 )
3228
3229/*
3230 * Unable to match primary surface creation request with existing
3231 * primary surface.
3232 */
3233#define DDERR_INCOMPATIBLEPRIMARY MAKE_DDHRESULT( 95 )
3234
3235/*
3236 * One or more of the caps bits passed to the callback are incorrect.
3237 */
3238#define DDERR_INVALIDCAPS MAKE_DDHRESULT( 100 )
3239
3240/*
3241 * DirectDraw does not support provided Cliplist.
3242 */
3243#define DDERR_INVALIDCLIPLIST MAKE_DDHRESULT( 110 )
3244
3245/*
3246 * DirectDraw does not support the requested mode
3247 */
3248#define DDERR_INVALIDMODE MAKE_DDHRESULT( 120 )
3249
3250/*
3251 * DirectDraw received a pointer that was an invalid DIRECTDRAW object.
3252 */
3253#define DDERR_INVALIDOBJECT MAKE_DDHRESULT( 130 )
3254
3255/*
3256 * One or more of the parameters passed to the callback function are
3257 * incorrect.
3258 */
3259#define DDERR_INVALIDPARAMS E_INVALIDARG
3260
3261/*
3262 * pixel format was invalid as specified
3263 */
3264#define DDERR_INVALIDPIXELFORMAT MAKE_DDHRESULT( 145 )
3265
3266/*
3267 * Rectangle provided was invalid.
3268 */
3269#define DDERR_INVALIDRECT MAKE_DDHRESULT( 150 )
3270
3271/*
3272 * Operation could not be carried out because one or more surfaces are locked
3273 */
3274#define DDERR_LOCKEDSURFACES MAKE_DDHRESULT( 160 )
3275
3276/*
3277 * There is no 3D present.
3278 */
3279#define DDERR_NO3D MAKE_DDHRESULT( 170 )
3280
3281/*
3282 * Operation could not be carried out because there is no alpha accleration
3283 * hardware present or available.
3284 */
3285#define DDERR_NOALPHAHW MAKE_DDHRESULT( 180 )
3286
3287
3288/*
3289 * no clip list available
3290 */
3291#define DDERR_NOCLIPLIST MAKE_DDHRESULT( 205 )
3292
3293/*
3294 * Operation could not be carried out because there is no color conversion
3295 * hardware present or available.
3296 */
3297#define DDERR_NOCOLORCONVHW MAKE_DDHRESULT( 210 )
3298
3299/*
3300 * Create function called without DirectDraw object method SetCooperativeLevel
3301 * being called.
3302 */
3303#define DDERR_NOCOOPERATIVELEVELSET MAKE_DDHRESULT( 212 )
3304
3305/*
3306 * Surface doesn't currently have a color key
3307 */
3308#define DDERR_NOCOLORKEY MAKE_DDHRESULT( 215 )
3309
3310/*
3311 * Operation could not be carried out because there is no hardware support
3312 * of the dest color key.
3313 */
3314#define DDERR_NOCOLORKEYHW MAKE_DDHRESULT( 220 )
3315
3316/*
3317 * No DirectDraw support possible with current display driver
3318 */
3319#define DDERR_NODIRECTDRAWSUPPORT MAKE_DDHRESULT( 222 )
3320
3321/*
3322 * Operation requires the application to have exclusive mode but the
3323 * application does not have exclusive mode.
3324 */
3325#define DDERR_NOEXCLUSIVEMODE MAKE_DDHRESULT( 225 )
3326
3327/*
3328 * Flipping visible surfaces is not supported.
3329 */
3330#define DDERR_NOFLIPHW MAKE_DDHRESULT( 230 )
3331
3332/*
3333 * There is no GDI present.
3334 */
3335#define DDERR_NOGDI MAKE_DDHRESULT( 240 )
3336
3337/*
3338 * Operation could not be carried out because there is no hardware present
3339 * or available.
3340 */
3341#define DDERR_NOMIRRORHW MAKE_DDHRESULT( 250 )
3342
3343/*
3344 * Requested item was not found
3345 */
3346#define DDERR_NOTFOUND MAKE_DDHRESULT( 255 )
3347
3348/*
3349 * Operation could not be carried out because there is no overlay hardware
3350 * present or available.
3351 */
3352#define DDERR_NOOVERLAYHW MAKE_DDHRESULT( 260 )
3353
3354/*
3355 * Operation could not be carried out because there is no appropriate raster
3356 * op hardware present or available.
3357 */
3358#define DDERR_NORASTEROPHW MAKE_DDHRESULT( 280 )
3359
3360/*
3361 * Operation could not be carried out because there is no rotation hardware
3362 * present or available.
3363 */
3364#define DDERR_NOROTATIONHW MAKE_DDHRESULT( 290 )
3365
3366/*
3367 * Operation could not be carried out because there is no hardware support
3368 * for stretching
3369 */
3370#define DDERR_NOSTRETCHHW MAKE_DDHRESULT( 310 )
3371
3372/*
3373 * DirectDrawSurface is not in 4 bit color palette and the requested operation
3374 * requires 4 bit color palette.
3375 */
3376#define DDERR_NOT4BITCOLOR MAKE_DDHRESULT( 316 )
3377
3378/*
3379 * DirectDrawSurface is not in 4 bit color index palette and the requested
3380 * operation requires 4 bit color index palette.
3381 */
3382#define DDERR_NOT4BITCOLORINDEX MAKE_DDHRESULT( 317 )
3383
3384/*
3385 * DirectDraw Surface is not in 8 bit color mode and the requested operation
3386 * requires 8 bit color.
3387 */
3388#define DDERR_NOT8BITCOLOR MAKE_DDHRESULT( 320 )
3389
3390/*
3391 * Operation could not be carried out because there is no texture mapping
3392 * hardware present or available.
3393 */
3394#define DDERR_NOTEXTUREHW MAKE_DDHRESULT( 330 )
3395
3396/*
3397 * Operation could not be carried out because there is no hardware support
3398 * for vertical blank synchronized operations.
3399 */
3400#define DDERR_NOVSYNCHW MAKE_DDHRESULT( 335 )
3401
3402/*
3403 * Operation could not be carried out because there is no hardware support
3404 * for zbuffer blting.
3405 */
3406#define DDERR_NOZBUFFERHW MAKE_DDHRESULT( 340 )
3407
3408/*
3409 * Overlay surfaces could not be z layered based on their BltOrder because
3410 * the hardware does not support z layering of overlays.
3411 */
3412#define DDERR_NOZOVERLAYHW MAKE_DDHRESULT( 350 )
3413
3414/*
3415 * The hardware needed for the requested operation has already been
3416 * allocated.
3417 */
3418#define DDERR_OUTOFCAPS MAKE_DDHRESULT( 360 )
3419
3420/*
3421 * DirectDraw does not have enough memory to perform the operation.
3422 */
3423#define DDERR_OUTOFMEMORY E_OUTOFMEMORY
3424
3425/*
3426 * DirectDraw does not have enough memory to perform the operation.
3427 */
3428#define DDERR_OUTOFVIDEOMEMORY MAKE_DDHRESULT( 380 )
3429
3430/*
3431 * hardware does not support clipped overlays
3432 */
3433#define DDERR_OVERLAYCANTCLIP MAKE_DDHRESULT( 382 )
3434
3435/*
3436 * Can only have ony color key active at one time for overlays
3437 */
3438#define DDERR_OVERLAYCOLORKEYONLYONEACTIVE MAKE_DDHRESULT( 384 )
3439
3440/*
3441 * Access to this palette is being refused because the palette is already
3442 * locked by another thread.
3443 */
3444#define DDERR_PALETTEBUSY MAKE_DDHRESULT( 387 )
3445
3446/*
3447 * No src color key specified for this operation.
3448 */
3449#define DDERR_COLORKEYNOTSET MAKE_DDHRESULT( 400 )
3450
3451/*
3452 * This surface is already attached to the surface it is being attached to.
3453 */
3454#define DDERR_SURFACEALREADYATTACHED MAKE_DDHRESULT( 410 )
3455
3456/*
3457 * This surface is already a dependency of the surface it is being made a
3458 * dependency of.
3459 */
3460#define DDERR_SURFACEALREADYDEPENDENT MAKE_DDHRESULT( 420 )
3461
3462/*
3463 * Access to this surface is being refused because the surface is already
3464 * locked by another thread.
3465 */
3466#define DDERR_SURFACEBUSY MAKE_DDHRESULT( 430 )
3467
3468/*
3469 * Access to this surface is being refused because no driver exists
3470 * which can supply a pointer to the surface.
3471 * This is most likely to happen when attempting to lock the primary
3472 * surface when no DCI provider is present.
3473 * Will also happen on attempts to lock an optimized surface.
3474 */
3475#define DDERR_CANTLOCKSURFACE MAKE_DDHRESULT( 435 )
3476
3477/*
3478 * Access to Surface refused because Surface is obscured.
3479 */
3480#define DDERR_SURFACEISOBSCURED MAKE_DDHRESULT( 440 )
3481
3482/*
3483 * Access to this surface is being refused because the surface is gone.
3484 * The DIRECTDRAWSURFACE object representing this surface should
3485 * have Restore called on it.
3486 */
3487#define DDERR_SURFACELOST MAKE_DDHRESULT( 450 )
3488
3489/*
3490 * The requested surface is not attached.
3491 */
3492#define DDERR_SURFACENOTATTACHED MAKE_DDHRESULT( 460 )
3493
3494/*
3495 * Height requested by DirectDraw is too large.
3496 */
3497#define DDERR_TOOBIGHEIGHT MAKE_DDHRESULT( 470 )
3498
3499/*
3500 * Size requested by DirectDraw is too large -- The individual height and
3501 * width are OK.
3502 */
3503#define DDERR_TOOBIGSIZE MAKE_DDHRESULT( 480 )
3504
3505/*
3506 * Width requested by DirectDraw is too large.
3507 */
3508#define DDERR_TOOBIGWIDTH MAKE_DDHRESULT( 490 )
3509
3510/*
3511 * Action not supported.
3512 */
3513#define DDERR_UNSUPPORTED E_NOTIMPL
3514
3515/*
3516 * FOURCC format requested is unsupported by DirectDraw
3517 */
3518#define DDERR_UNSUPPORTEDFORMAT MAKE_DDHRESULT( 510 )
3519
3520/*
3521 * Bitmask in the pixel format requested is unsupported by DirectDraw
3522 */
3523#define DDERR_UNSUPPORTEDMASK MAKE_DDHRESULT( 520 )
3524
3525/*
3526 * vertical blank is in progress
3527 */
3528#define DDERR_VERTICALBLANKINPROGRESS MAKE_DDHRESULT( 537 )
3529
3530/*
3531 * Informs DirectDraw that the previous Blt which is transfering information
3532 * to or from this Surface is incomplete.
3533 */
3534#define DDERR_WASSTILLDRAWING MAKE_DDHRESULT( 540 )
3535
3536
3537/*
3538 * Rectangle provided was not horizontally aligned on reqd. boundary
3539 */
3540#define DDERR_XALIGN MAKE_DDHRESULT( 560 )
3541
3542/*
3543 * The GUID passed to DirectDrawCreate is not a valid DirectDraw driver
3544 * identifier.
3545 */
3546#define DDERR_INVALIDDIRECTDRAWGUID MAKE_DDHRESULT( 561 )
3547
3548/*
3549 * A DirectDraw object representing this driver has already been created
3550 * for this process.
3551 */
3552#define DDERR_DIRECTDRAWALREADYCREATED MAKE_DDHRESULT( 562 )
3553
3554/*
3555 * A hardware only DirectDraw object creation was attempted but the driver
3556 * did not support any hardware.
3557 */
3558#define DDERR_NODIRECTDRAWHW MAKE_DDHRESULT( 563 )
3559
3560/*
3561 * this process already has created a primary surface
3562 */
3563#define DDERR_PRIMARYSURFACEALREADYEXISTS MAKE_DDHRESULT( 564 )
3564
3565/*
3566 * software emulation not available.
3567 */
3568#define DDERR_NOEMULATION MAKE_DDHRESULT( 565 )
3569
3570/*
3571 * region passed to Clipper::GetClipList is too small.
3572 */
3573#define DDERR_REGIONTOOSMALL MAKE_DDHRESULT( 566 )
3574
3575/*
3576 * an attempt was made to set a clip list for a clipper objec that
3577 * is already monitoring an hwnd.
3578 */
3579#define DDERR_CLIPPERISUSINGHWND MAKE_DDHRESULT( 567 )
3580
3581/*
3582 * No clipper object attached to surface object
3583 */
3584#define DDERR_NOCLIPPERATTACHED MAKE_DDHRESULT( 568 )
3585
3586/*
3587 * Clipper notification requires an HWND or
3588 * no HWND has previously been set as the CooperativeLevel HWND.
3589 */
3590#define DDERR_NOHWND MAKE_DDHRESULT( 569 )
3591
3592/*
3593 * HWND used by DirectDraw CooperativeLevel has been subclassed,
3594 * this prevents DirectDraw from restoring state.
3595 */
3596#define DDERR_HWNDSUBCLASSED MAKE_DDHRESULT( 570 )
3597
3598/*
3599 * The CooperativeLevel HWND has already been set.
3600 * It can not be reset while the process has surfaces or palettes created.
3601 */
3602#define DDERR_HWNDALREADYSET MAKE_DDHRESULT( 571 )
3603
3604/*
3605 * No palette object attached to this surface.
3606 */
3607#define DDERR_NOPALETTEATTACHED MAKE_DDHRESULT( 572 )
3608
3609/*
3610 * No hardware support for 16 or 256 color palettes.
3611 */
3612#define DDERR_NOPALETTEHW MAKE_DDHRESULT( 573 )
3613
3614/*
3615 * If a clipper object is attached to the source surface passed into a
3616 * BltFast call.
3617 */
3618#define DDERR_BLTFASTCANTCLIP MAKE_DDHRESULT( 574 )
3619
3620/*
3621 * No blter.
3622 */
3623#define DDERR_NOBLTHW MAKE_DDHRESULT( 575 )
3624
3625/*
3626 * No DirectDraw ROP hardware.
3627 */
3628#define DDERR_NODDROPSHW MAKE_DDHRESULT( 576 )
3629
3630/*
3631 * returned when GetOverlayPosition is called on a hidden overlay
3632 */
3633#define DDERR_OVERLAYNOTVISIBLE MAKE_DDHRESULT( 577 )
3634
3635/*
3636 * returned when GetOverlayPosition is called on a overlay that UpdateOverlay
3637 * has never been called on to establish a destionation.
3638 */
3639#define DDERR_NOOVERLAYDEST MAKE_DDHRESULT( 578 )
3640
3641/*
3642 * returned when the position of the overlay on the destionation is no longer
3643 * legal for that destionation.
3644 */
3645#define DDERR_INVALIDPOSITION MAKE_DDHRESULT( 579 )
3646
3647/*
3648 * returned when an overlay member is called for a non-overlay surface
3649 */
3650#define DDERR_NOTAOVERLAYSURFACE MAKE_DDHRESULT( 580 )
3651
3652/*
3653 * An attempt was made to set the cooperative level when it was already
3654 * set to exclusive.
3655 */
3656#define DDERR_EXCLUSIVEMODEALREADYSET MAKE_DDHRESULT( 581 )
3657
3658/*
3659 * An attempt has been made to flip a surface that is not flippable.
3660 */
3661#define DDERR_NOTFLIPPABLE MAKE_DDHRESULT( 582 )
3662
3663/*
3664 * Can't duplicate primary & 3D surfaces, or surfaces that are implicitly
3665 * created.
3666 */
3667#define DDERR_CANTDUPLICATE MAKE_DDHRESULT( 583 )
3668
3669/*
3670 * Surface was not locked. An attempt to unlock a surface that was not
3671 * locked at all, or by this process, has been attempted.
3672 */
3673#define DDERR_NOTLOCKED MAKE_DDHRESULT( 584 )
3674
3675/*
3676 * Windows can not create any more DCs
3677 */
3678#define DDERR_CANTCREATEDC MAKE_DDHRESULT( 585 )
3679
3680/*
3681 * No DC was ever created for this surface.
3682 */
3683#define DDERR_NODC MAKE_DDHRESULT( 586 )
3684
3685/*
3686 * This surface can not be restored because it was created in a different
3687 * mode.
3688 */
3689#define DDERR_WRONGMODE MAKE_DDHRESULT( 587 )
3690
3691/*
3692 * This surface can not be restored because it is an implicitly created
3693 * surface.
3694 */
3695#define DDERR_IMPLICITLYCREATED MAKE_DDHRESULT( 588 )
3696
3697/*
3698 * The surface being used is not a palette-based surface
3699 */
3700#define DDERR_NOTPALETTIZED MAKE_DDHRESULT( 589 )
3701
3702
3703/*
3704 * The display is currently in an unsupported mode
3705 */
3706#define DDERR_UNSUPPORTEDMODE MAKE_DDHRESULT( 590 )
3707
3708/*
3709 * Operation could not be carried out because there is no mip-map
3710 * texture mapping hardware present or available.
3711 */
3712#define DDERR_NOMIPMAPHW MAKE_DDHRESULT( 591 )
3713
3714/*
3715 * The requested action could not be performed because the surface was of
3716 * the wrong type.
3717 */
3718#define DDERR_INVALIDSURFACETYPE MAKE_DDHRESULT( 592 )
3719
3720
3721
3722/*
3723 * Device does not support optimized surfaces, therefore no video memory optimized surfaces
3724 */
3725#define DDERR_NOOPTIMIZEHW MAKE_DDHRESULT( 600 )
3726
3727/*
3728 * Surface is an optimized surface, but has not yet been allocated any memory
3729 */
3730#define DDERR_NOTLOADED MAKE_DDHRESULT( 601 )
3731
3732/*
3733 * A DC has already been returned for this surface. Only one DC can be
3734 * retrieved per surface.
3735 */
3736#define DDERR_DCALREADYCREATED MAKE_DDHRESULT( 620 )
3737
3738/*
3739 * An attempt was made to allocate non-local video memory from a device
3740 * that does not support non-local video memory.
3741 */
3742#define DDERR_NONONLOCALVIDMEM MAKE_DDHRESULT( 630 )
3743
3744/*
3745 * The attempt to page lock a surface failed.
3746 */
3747#define DDERR_CANTPAGELOCK MAKE_DDHRESULT( 640 )
3748
3749/*
3750 * The attempt to page unlock a surface failed.
3751 */
3752#define DDERR_CANTPAGEUNLOCK MAKE_DDHRESULT( 660 )
3753
3754/*
3755 * An attempt was made to page unlock a surface with no outstanding page locks.
3756 */
3757#define DDERR_NOTPAGELOCKED MAKE_DDHRESULT( 680 )
3758
3759/*
3760 * There is more data available than the specified buffer size could hold
3761 */
3762#define DDERR_MOREDATA MAKE_DDHRESULT( 690 )
3763
3764/*
3765 * The video port is not active
3766 */
3767#define DDERR_VIDEONOTACTIVE MAKE_DDHRESULT( 695 )
3768
3769/*
3770 * Surfaces created by one direct draw device cannot be used directly by
3771 * another direct draw device.
3772 */
3773#define DDERR_DEVICEDOESNTOWNSURFACE MAKE_DDHRESULT( 699 )
3774
3775
3776/*
3777 * An attempt was made to invoke an interface member of a DirectDraw object
3778 * created by CoCreateInstance() before it was initialized.
3779 */
3780#define DDERR_NOTINITIALIZED CO_E_NOTINITIALIZED
3781
3782/* Alpha bit depth constants */
3783
3784
3785#ifdef __cplusplus
3786};
3787#endif
3788
3789#endif
DECLARE_INTERFACE_(IDirect3D, IUnknown)
Definition: d3d.h:112
LPSTR LPSTR LPVOID
Definition: d3dcaps.h:213
DEFINE_GUID(IID_IDirect3DRM, 0x2bc49361, 0x8327, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1)
DDBLTFX FAR * LPDDBLTFX
Definition: ddraw.h:185
#define IUnknown
Definition: ddraw.h:28
DDCOLORKEY FAR * LPDDCOLORKEY
Definition: ddraw.h:133
struct IDirectDraw2 FAR * LPDIRECTDRAW2
Definition: ddraw.h:73
struct IDirectDrawSurface2 FAR * LPDIRECTDRAWSURFACE2
Definition: ddraw.h:75
DDBLTBATCH FAR * LPDDBLTBATCH
Definition: ddraw.h:418
struct IDirectDrawSurface3 FAR * LPDIRECTDRAWSURFACE3
Definition: ddraw.h:76
struct _DDCAPS_DX3 DDCAPS_DX3
struct _DDSURFACEDESC FAR * LPDDSURFACEDESC
Definition: ddraw.h:83
struct _DDBLTFX DDBLTFX
Used to pass override information to the DIRECTDRAWSURFACE callback Blt.
struct IDirectDrawClipper FAR * LPDIRECTDRAWCLIPPER
Definition: ddraw.h:79
struct _DDSCAPS DDSCAPS
struct IDirectDrawColorControl FAR * LPDIRECTDRAWCOLORCONTROL
Definition: ddraw.h:80
struct IDirectDrawSurface FAR * LPDIRECTDRAWSURFACE
Definition: ddraw.h:74
HWND DWORD code
Definition: ddraw.h:423
DDCAPS_DX3 FAR * LPDDCAPS_DX3
Definition: ddraw.h:262
struct _DDPIXELFORMAT DDPIXELFORMAT
typedef DWORD(FAR PASCAL *LPCLIPPERCALLBACK)(LPDIRECTDRAWCLIPPER lpDDClipper
struct _DDCAPS DDCAPS
struct _DDSURFACEDESC DDSURFACEDESC
struct IDirectDrawPalette FAR * LPDIRECTDRAWPALETTE
Definition: ddraw.h:78
DDSCAPS FAR * LPDDSCAPS
Definition: ddraw.h:196
HWND hWnd
Definition: ddraw.h:423
struct _DDCOLORKEY DDCOLORKEY
struct _DDBLTBATCH DDBLTBATCH
struct _DDCOLORCONTROL FAR * LPDDCOLORCONTROL
Definition: ddraw.h:84
struct _DDOVERLAYFX DDOVERLAYFX
long HRESULT
Definition: ddraw.h:115
#define DD_ROP_SPACE
Definition: ddraw.h:201
struct _DDCOLORCONTROL DDCOLORCONTROL
struct IDirectDraw FAR * LPDIRECTDRAW
Definition: ddraw.h:72
struct _DDFXROP FAR * LPDDFXROP
Definition: ddraw.h:82
typedef LPVOID
Definition: ddraw.h:119
DDOVERLAYFX FAR * LPDDOVERLAYFX
Definition: ddraw.h:404
DDPIXELFORMAT FAR * LPDDPIXELFORMAT
Definition: ddraw.h:375
DDCAPS FAR * LPDDCAPS
Definition: ddraw.h:332
HWND DWORD LPVOID lpContext
Definition: ddraw.h:423
typedef BOOL(FAR PASCAL *LPDIENUMDEVICEOBJECTSCALLBACKA)(LPCDIDEVICEOBJECTINSTANCEA
LPDWORD DWORD dwFlags
Definition: dplay.h:417
Definition: ddraw.h:410
DWORD dwFlags
Definition: ddraw.h:414
LPDDBLTFX lpDDBltFx
Definition: ddraw.h:415
LPRECT lprDest
Definition: ddraw.h:411
LPRECT lprSrc
Definition: ddraw.h:413
LPDIRECTDRAWSURFACE lpDDSSrc
Definition: ddraw.h:412
Used to pass override information to the DIRECTDRAWSURFACE callback Blt.
Definition: ddraw.h:137
LPDIRECTDRAWSURFACE lpDDSAlphaSrc
Constant to use as Alpha Channel.
Definition: ddraw.h:172
DWORD dwZSrcConst
Definition: ddraw.h:156
DWORD dwAlphaSrcConst
Definition: ddraw.h:171
LPDIRECTDRAWSURFACE lpDDSPattern
pixel value for RGBA or RGBZ
Definition: ddraw.h:179
DWORD dwZSrcConstBitDepth
Definition: ddraw.h:153
DWORD dwRotationAngle
Raster operations new for DirectDraw.
Definition: ddraw.h:142
DWORD dwZBufferOpCode
Rotation angle for blt.
Definition: ddraw.h:143
LPDIRECTDRAWSURFACE lpDDSZBufferSrc
Constant to use as Z buffer for src.
Definition: ddraw.h:157
DWORD dwReserved
Alpha for edge blending.
Definition: ddraw.h:161
DWORD dwAlphaDestConstBitDepth
Definition: ddraw.h:162
DWORD dwZBufferLow
ZBuffer compares.
Definition: ddraw.h:144
DWORD dwSize
Definition: ddraw.h:138
DWORD dwZDestConstBitDepth
Destination base value.
Definition: ddraw.h:147
LPDIRECTDRAWSURFACE lpDDSZBufferDest
Constant to use as Z buffer for dest.
Definition: ddraw.h:151
DDCOLORKEY ddckSrcColorkey
DestColorkey override.
Definition: ddraw.h:182
DWORD dwZBufferHigh
Low limit of Z buffer.
Definition: ddraw.h:145
DWORD dwAlphaDestConst
Definition: ddraw.h:165
DWORD dwFillDepth
color in RGB or Palettized
Definition: ddraw.h:177
DWORD dwZDestConst
Definition: ddraw.h:150
DWORD dwROP
FX operations.
Definition: ddraw.h:140
DDCOLORKEY ddckDestColorkey
Definition: ddraw.h:181
DWORD dwFillPixel
depth value for z-buffer
Definition: ddraw.h:178
DWORD dwFillColor
Definition: ddraw.h:176
DWORD dwDDROP
Win32 raster operations.
Definition: ddraw.h:141
DWORD dwAlphaSrcConstBitDepth
Definition: ddraw.h:168
DWORD dwDDFX
size of structure
Definition: ddraw.h:139
DWORD dwAlphaEdgeBlendBitDepth
Definition: ddraw.h:159
DWORD dwZBufferBaseDest
High limit of Z buffer.
Definition: ddraw.h:146
LPDIRECTDRAWSURFACE lpDDSAlphaDest
Constant to use as Alpha Channel.
Definition: ddraw.h:166
DWORD dwAlphaEdgeBlend
Bit depth used to specify constant for alpha edge blend.
Definition: ddraw.h:160
Definition: ddraw.h:209
DWORD dwMaxLiveVideoStretch
minimum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
Definition: ddraw.h:240
DWORD dwVSBCKeyCaps
driver specific capabilities for Vmem->System blts
Definition: ddraw.h:251
DWORD dwAlphaBltPixelBitDepths
DDBD_2,4,8.
Definition: ddraw.h:219
DWORD dwMinOverlayStretch
DDSCAPS structure has all the general capabilities.
Definition: ddraw.h:237
DWORD dwVSBCaps
ROPS supported for System->Vmem blts.
Definition: ddraw.h:250
DWORD dwAlphaBltSurfaceBitDepths
DDBD_1,2,4,8.
Definition: ddraw.h:220
DWORD dwMinHwCodecStretch
maximum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
Definition: ddraw.h:241
DWORD dwSSBRops[DD_ROP_SPACE]
driver FX capabilities for System->System blts
Definition: ddraw.h:257
DWORD dwReserved4
ROPS supported for System->System blts.
Definition: ddraw.h:258
DWORD dwVidMemFree
total amount of video memory
Definition: ddraw.h:226
DWORD dwAlphaOverlaySurfaceBitDepths
DDBD_1,2,4,8.
Definition: ddraw.h:223
DWORD dwMaxVisibleOverlays
amount of free video memory
Definition: ddraw.h:227
DWORD dwVSBFXCaps
driver color key capabilities for Vmem->System blts
Definition: ddraw.h:252
DWORD dwFXAlphaCaps
driver specific stretching and effects capabilites
Definition: ddraw.h:215
DWORD dwCaps
size of the DDDRIVERCAPS structure
Definition: ddraw.h:211
DWORD dwMaxHwCodecStretch
minimum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1....
Definition: ddraw.h:242
DWORD dwSSBCaps
ROPS supported for Vmem->System blts.
Definition: ddraw.h:254
DWORD dwPalCaps
alpha driver specific capabilities
Definition: ddraw.h:216
DWORD dwSVBCKeyCaps
driver specific capabilities for System->Vmem blts
Definition: ddraw.h:247
DWORD dwVidMemTotal
DDBD_8,16,24,32.
Definition: ddraw.h:225
DWORD dwAlignBoundaryDest
source rectangle byte size
Definition: ddraw.h:232
DWORD dwSSBCKeyCaps
driver specific capabilities for System->System blts
Definition: ddraw.h:255
DWORD dwAlignSizeDest
dest rectangle alignment
Definition: ddraw.h:233
DWORD dwMaxOverlayStretch
minimum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
Definition: ddraw.h:238
DWORD dwAlignBoundarySrc
number of four cc codes
Definition: ddraw.h:230
DWORD dwAlphaOverlayConstBitDepths
DDBD_1,2,4,8.
Definition: ddraw.h:221
DWORD dwSVBRops[DD_ROP_SPACE]
driver FX capabilities for System->Vmem blts
Definition: ddraw.h:249
DWORD dwNumFourCCCodes
current number of visible overlays
Definition: ddraw.h:229
DWORD dwReserved6
reserved
Definition: ddraw.h:260
DWORD dwSize
Definition: ddraw.h:210
DWORD dwAlignSizeSrc
source rectangle alignment
Definition: ddraw.h:231
DWORD dwCKeyCaps
more driver specific capabilites
Definition: ddraw.h:213
DWORD dwZBufferBitDepths
DDBD_1,2,4,8.
Definition: ddraw.h:224
DWORD dwMinLiveVideoStretch
maximum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
Definition: ddraw.h:239
DWORD dwVSBRops[DD_ROP_SPACE]
driver FX capabilities for Vmem->System blts
Definition: ddraw.h:253
DWORD dwFXCaps
color key capabilities of the surface
Definition: ddraw.h:214
DWORD dwSSBFXCaps
driver color key capabilities for System->System blts
Definition: ddraw.h:256
DWORD dwReserved2
reserved
Definition: ddraw.h:244
DWORD dwAlphaBltConstBitDepths
stereo vision capabilities
Definition: ddraw.h:218
DWORD dwSVBFXCaps
driver color key capabilities for System->Vmem blts
Definition: ddraw.h:248
DWORD dwCaps2
driver specific capabilities
Definition: ddraw.h:212
DWORD dwReserved3
reserved
Definition: ddraw.h:245
DWORD dwReserved5
reserved
Definition: ddraw.h:259
DWORD dwSVCaps
palette capabilities
Definition: ddraw.h:217
DWORD dwCurrVisibleOverlays
maximum number of visible overlays
Definition: ddraw.h:228
DWORD dwAlignStrideAlign
dest rectangle byte size
Definition: ddraw.h:234
DWORD dwReserved1
maximum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1....
Definition: ddraw.h:243
DDSCAPS ddsCaps
Definition: ddraw.h:236
DWORD dwRops[DD_ROP_SPACE]
stride alignment
Definition: ddraw.h:235
DWORD dwSVBCaps
reserved
Definition: ddraw.h:246
DWORD dwAlphaOverlayPixelBitDepths
DDBD_2,4,8.
Definition: ddraw.h:222
Definition: ddraw.h:267
DWORD dwAlphaBltPixelBitDepths
DDBD_1,2,4,8.
Definition: ddraw.h:277
DWORD dwNLVBCKeyCaps
driver color key capabilities for non-local->local vidmem blts
Definition: ddraw.h:322
DWORD dwAlignSizeDest
dest rectangle byte size
Definition: ddraw.h:291
DWORD dwNumFourCCCodes
number of four cc codes
Definition: ddraw.h:287
DWORD dwCurrVisibleOverlays
current number of visible overlays
Definition: ddraw.h:286
DWORD dwRops[DD_ROP_SPACE]
ROPS supported.
Definition: ddraw.h:293
DWORD dwAlignStrideAlign
stride alignment
Definition: ddraw.h:292
DWORD dwVSBFXCaps
driver FX capabilities for Vmem->System blts
Definition: ddraw.h:310
DWORD dwSVBCaps
driver specific capabilities for System->Vmem blts
Definition: ddraw.h:304
DWORD dwCaps
driver specific capabilities
Definition: ddraw.h:269
DWORD dwCaps2
more driver specific capabilites
Definition: ddraw.h:270
DWORD dwMaxVisibleOverlays
maximum number of visible overlays
Definition: ddraw.h:285
DWORD dwVSBCaps
driver specific capabilities for Vmem->System blts
Definition: ddraw.h:308
DWORD dwMaxLiveVideoStretch
maximum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
Definition: ddraw.h:298
DWORD dwNLVBRops[DD_ROP_SPACE]
ROPS supported for non-local->local blts.
Definition: ddraw.h:324
DWORD dwCurrVideoPorts
current number of video ports used
Definition: ddraw.h:318
DWORD dwNLVBCaps2
more driver specific capabilities non-local->local vidmem blts
Definition: ddraw.h:321
DWORD dwAlignSizeSrc
source rectangle byte size
Definition: ddraw.h:289
DWORD dwSSBCaps
driver specific capabilities for System->System blts
Definition: ddraw.h:312
DWORD dwSize
size of the DDDRIVERCAPS structure
Definition: ddraw.h:268
DWORD dwAlphaBltSurfaceBitDepths
DDBD_1,2,4,8.
Definition: ddraw.h:278
DWORD dwAlignBoundaryDest
dest rectangle alignment
Definition: ddraw.h:290
DWORD dwSVBRops[DD_ROP_SPACE]
ROPS supported for System->Vmem blts.
Definition: ddraw.h:307
DWORD dwNLVBCaps
driver specific capabilities for non-local->local vidmem blts
Definition: ddraw.h:320
DWORD dwZBufferBitDepths
DDBD_8,16,24,32.
Definition: ddraw.h:282
DWORD dwAlphaOverlayPixelBitDepths
DDBD_1,2,4,8.
Definition: ddraw.h:280
DWORD dwReserved1
reserved
Definition: ddraw.h:301
DWORD dwSSBRops[DD_ROP_SPACE]
ROPS supported for System->System blts.
Definition: ddraw.h:315
DWORD dwAlphaOverlayConstBitDepths
DDBD_2,4,8.
Definition: ddraw.h:279
DWORD dwFXCaps
driver specific stretching and effects capabilites
Definition: ddraw.h:272
DWORD dwVidMemFree
amount of free video memory
Definition: ddraw.h:284
DWORD dwAlignBoundarySrc
source rectangle alignment
Definition: ddraw.h:288
DWORD dwMaxHwCodecStretch
maximum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1....
Definition: ddraw.h:300
DWORD dwPalCaps
palette capabilities
Definition: ddraw.h:274
DWORD dwVSBRops[DD_ROP_SPACE]
ROPS supported for Vmem->System blts.
Definition: ddraw.h:311
DWORD dwNLVBFXCaps
driver FX capabilities for non-local->local blts
Definition: ddraw.h:323
DWORD dwReserved2
reserved
Definition: ddraw.h:302
DWORD dwMaxOverlayStretch
maximum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
Definition: ddraw.h:296
DWORD dwSVBFXCaps
driver FX capabilities for System->Vmem blts
Definition: ddraw.h:306
DWORD dwReserved3
reserved
Definition: ddraw.h:303
DDSCAPS ddsCaps
DDSCAPS structure has all the general capabilities.
Definition: ddraw.h:294
DWORD dwSSBCKeyCaps
driver color key capabilities for System->System blts
Definition: ddraw.h:313
DWORD dwVSBCKeyCaps
driver color key capabilities for Vmem->System blts
Definition: ddraw.h:309
DWORD dwSVBCaps2
more driver specific capabilities for System->Vmem blts
Definition: ddraw.h:319
DWORD dwAlphaBltConstBitDepths
DDBD_2,4,8.
Definition: ddraw.h:276
DWORD dwVidMemTotal
total amount of video memory
Definition: ddraw.h:283
DWORD dwSVCaps
stereo vision capabilities
Definition: ddraw.h:275
DWORD dwSSBFXCaps
driver FX capabilities for System->System blts
Definition: ddraw.h:314
DWORD dwMinHwCodecStretch
minimum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1....
Definition: ddraw.h:299
DWORD dwFXAlphaCaps
alpha driver specific capabilities
Definition: ddraw.h:273
DWORD dwAlphaOverlaySurfaceBitDepths
DDBD_1,2,4,8.
Definition: ddraw.h:281
DWORD dwMaxVideoPorts
maximum number of usable video ports
Definition: ddraw.h:317
DWORD dwMinLiveVideoStretch
minimum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
Definition: ddraw.h:297
DWORD dwMinOverlayStretch
minimum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
Definition: ddraw.h:295
DWORD dwSVBCKeyCaps
driver color key capabilities for System->Vmem blts
Definition: ddraw.h:305
DWORD dwCKeyCaps
color key capabilities of the surface
Definition: ddraw.h:271
Definition: ddraw.h:1250
DWORD dwSize
Definition: ddraw.h:1251
LONG lSaturation
Definition: ddraw.h:1256
DWORD dwReserved1
Definition: ddraw.h:1260
LONG lColorEnable
Definition: ddraw.h:1259
LONG lSharpness
Definition: ddraw.h:1257
LONG lContrast
Definition: ddraw.h:1254
LONG lHue
Definition: ddraw.h:1255
LONG lBrightness
Definition: ddraw.h:1253
LONG lGamma
Definition: ddraw.h:1258
DWORD dwFlags
Definition: ddraw.h:1252
Definition: ddraw.h:126
DWORD dwColorSpaceHighValue
to be treated as Color Key, inclusive
Definition: ddraw.h:129
DWORD dwColorSpaceLowValue
be treated as Color Key, inclusive
Definition: ddraw.h:127
Definition: ddraw.h:381
DWORD dwAlphaDestConst
Definition: ddraw.h:389
DWORD dwSize
Definition: ddraw.h:382
DWORD dwAlphaSrcConst
Definition: ddraw.h:395
DWORD dwAlphaEdgeBlend
Definition: ddraw.h:384
DWORD dwReserved
Definition: ddraw.h:385
DWORD dwAlphaSrcConstBitDepth
Definition: ddraw.h:392
DDCOLORKEY dckDestColorkey
Definition: ddraw.h:398
LPDIRECTDRAWSURFACE lpDDSAlphaSrc
Definition: ddraw.h:396
DWORD dwAlphaEdgeBlendBitDepth
Definition: ddraw.h:383
LPDIRECTDRAWSURFACE lpDDSAlphaDest
Definition: ddraw.h:390
DWORD dwAlphaDestConstBitDepth
Definition: ddraw.h:386
DWORD dwDDFX
Definition: ddraw.h:400
DDCOLORKEY dckSrcColorkey
Definition: ddraw.h:399
DWORD dwFlags
Definition: ddraw.h:401
Definition: ddraw.h:340
DWORD dwRGBZBitMask
mask for Z channel
Definition: ddraw.h:370
DWORD dwBBitMask
mask for blue bits
Definition: ddraw.h:363
DWORD dwVBitMask
mask for V bits
Definition: ddraw.h:364
DWORD dwZBufferBitDepth
how many bits for z buffers
Definition: ddraw.h:348
DWORD dwSize
size of structure
Definition: ddraw.h:341
DWORD dwYBitMask
mask for Y bits
Definition: ddraw.h:354
DWORD dwAlphaBitDepth
how many bits for alpha channels
Definition: ddraw.h:349
DWORD dwFourCC
(FOURCC code)
Definition: ddraw.h:343
DWORD dwUBitMask
mask for U bits
Definition: ddraw.h:359
DWORD dwYUVZBitMask
mask for Z channel
Definition: ddraw.h:371
DWORD dwRGBBitCount
how many bits per pixel
Definition: ddraw.h:346
DWORD dwYUVBitCount
how many bits per pixel
Definition: ddraw.h:347
DWORD dwRBitMask
mask for red bit
Definition: ddraw.h:353
DWORD dwGBitMask
mask for green bits
Definition: ddraw.h:358
DWORD dwYUVAlphaBitMask
mask for alpha channel
Definition: ddraw.h:369
DWORD dwFlags
pixel format flags
Definition: ddraw.h:342
DWORD dwRGBAlphaBitMask
mask for alpha channel
Definition: ddraw.h:368
Definition: ddraw.h:192
DWORD dwCaps
Definition: ddraw.h:193
Definition: ddraw.h:1131
DDCOLORKEY ddckCKSrcBlt
color key for source blt use
Definition: ddraw.h:1154
DDSCAPS ddsCaps
direct draw surface capabilities
Definition: ddraw.h:1156
DWORD dwRefreshRate
refresh rate (used when display mode is described)
Definition: ddraw.h:1146
LPVOID lpSurface
pointer to the associated surface memory
Definition: ddraw.h:1150
DWORD dwLinearSize
Definition: ddraw.h:1139
DDPIXELFORMAT ddpfPixelFormat
pixel format description of the surface
Definition: ddraw.h:1155
LONG lPitch
distance to start of next line (return value only)
Definition: ddraw.h:1138
DDCOLORKEY ddckCKDestBlt
color key for destination blt use
Definition: ddraw.h:1152
DWORD dwAlphaBitDepth
depth of alpha buffer requested
Definition: ddraw.h:1148
DWORD dwZBufferBitDepth
depth of Z buffer requested
Definition: ddraw.h:1145
DWORD dwSize
size of the DDSURFACEDESC structure
Definition: ddraw.h:1132
DWORD dwFlags
determines what fields are valid
Definition: ddraw.h:1133
DWORD dwWidth
width of input surface
Definition: ddraw.h:1135
DWORD dwMipMapCount
Definition: ddraw.h:1144
DWORD dwBackBufferCount
number of back buffers requested
Definition: ddraw.h:1141
DDCOLORKEY ddckCKDestOverlay
color key for destination overlay use
Definition: ddraw.h:1151
DWORD dwHeight
height of surface to be created
Definition: ddraw.h:1134
DWORD dwReserved
reserved
Definition: ddraw.h:1149
DDCOLORKEY ddckCKSrcOverlay
color key for source overlay use
Definition: ddraw.h:1153