Subversion Repositories Games.Chess Giants

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
1 pmbaty 1
/*==========================================================================;
2
 *
3
 *  Copyright (C) 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
 
13
//Disable the nameless union warning when building internally
14
#undef ENABLE_NAMELESS_UNION_PRAGMA
15
#ifdef DIRECTX_REDIST
16
#define ENABLE_NAMELESS_UNION_PRAGMA
17
#endif
18
 
19
#ifdef ENABLE_NAMELESS_UNION_PRAGMA
20
#pragma warning(disable:4201)
21
#endif
22
 
23
/*
24
 * If you wish an application built against the newest version of DirectDraw
25
 * to run against an older DirectDraw run time then define DIRECTDRAW_VERSION
26
 * to be the earlies version of DirectDraw you wish to run against. For,
27
 * example if you wish an application to run against a DX 3 runtime define
28
 * DIRECTDRAW_VERSION to be 0x0300.
29
 */
30
#ifndef   DIRECTDRAW_VERSION
31
#define   DIRECTDRAW_VERSION 0x0700
32
#endif /* DIRECTDRAW_VERSION */
33
 
34
#if defined( _WIN32 )  && !defined( _NO_COM )
35
#define COM_NO_WINDOWS_H
36
#include <objbase.h>
37
#else
38
#define IUnknown            void
39
#if !defined( NT_BUILD_ENVIRONMENT ) && !defined(WINNT)
40
        #define CO_E_NOTINITIALIZED 0x800401F0L
41
#endif
42
#endif
43
 
44
#define _FACDD  0x876
45
#define MAKE_DDHRESULT( code )  MAKE_HRESULT( 1, _FACDD, code )
46
 
47
#ifdef __cplusplus
48
extern "C" {
49
#endif
50
 
51
//
52
// For compilers that don't support nameless unions, do a
53
//
54
// #define NONAMELESSUNION
55
//
56
// before #include <ddraw.h>
57
//
58
#ifndef DUMMYUNIONNAMEN
59
#if defined(__cplusplus) || !defined(NONAMELESSUNION)
60
#define DUMMYUNIONNAMEN(n)
61
#else
62
#define DUMMYUNIONNAMEN(n)      u##n
63
#endif
64
#endif
65
 
66
#ifndef MAKEFOURCC
67
    #define MAKEFOURCC(ch0, ch1, ch2, ch3)                              \
68
                ((DWORD)(BYTE)(ch0) | ((DWORD)(BYTE)(ch1) << 8) |   \
69
                ((DWORD)(BYTE)(ch2) << 16) | ((DWORD)(BYTE)(ch3) << 24 ))
70
#endif //defined(MAKEFOURCC)
71
 
72
/*
73
 * FOURCC codes for DX compressed-texture pixel formats
74
 */
75
#define FOURCC_DXT1  (MAKEFOURCC('D','X','T','1'))
76
#define FOURCC_DXT2  (MAKEFOURCC('D','X','T','2'))
77
#define FOURCC_DXT3  (MAKEFOURCC('D','X','T','3'))
78
#define FOURCC_DXT4  (MAKEFOURCC('D','X','T','4'))
79
#define FOURCC_DXT5  (MAKEFOURCC('D','X','T','5'))
80
 
81
/*
82
 * GUIDS used by DirectDraw objects
83
 */
84
#if defined( _WIN32 ) && !defined( _NO_COM )
85
 
86
DEFINE_GUID( CLSID_DirectDraw,                  0xD7B70EE0,0x4340,0x11CF,0xB0,0x63,0x00,0x20,0xAF,0xC2,0xCD,0x35 );
87
DEFINE_GUID( CLSID_DirectDraw7,                 0x3c305196,0x50db,0x11d3,0x9c,0xfe,0x00,0xc0,0x4f,0xd9,0x30,0xc5 );
88
DEFINE_GUID( CLSID_DirectDrawClipper,           0x593817A0,0x7DB3,0x11CF,0xA2,0xDE,0x00,0xAA,0x00,0xb9,0x33,0x56 );
89
DEFINE_GUID( IID_IDirectDraw,                   0x6C14DB80,0xA733,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60 );
90
DEFINE_GUID( IID_IDirectDraw2,                  0xB3A6F3E0,0x2B43,0x11CF,0xA2,0xDE,0x00,0xAA,0x00,0xB9,0x33,0x56 );
91
DEFINE_GUID( IID_IDirectDraw4,                  0x9c59509a,0x39bd,0x11d1,0x8c,0x4a,0x00,0xc0,0x4f,0xd9,0x30,0xc5 );
92
DEFINE_GUID( IID_IDirectDraw7,                  0x15e65ec0,0x3b9c,0x11d2,0xb9,0x2f,0x00,0x60,0x97,0x97,0xea,0x5b );
93
DEFINE_GUID( IID_IDirectDrawSurface,            0x6C14DB81,0xA733,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60 );
94
DEFINE_GUID( IID_IDirectDrawSurface2,           0x57805885,0x6eec,0x11cf,0x94,0x41,0xa8,0x23,0x03,0xc1,0x0e,0x27 );
95
DEFINE_GUID( IID_IDirectDrawSurface3,           0xDA044E00,0x69B2,0x11D0,0xA1,0xD5,0x00,0xAA,0x00,0xB8,0xDF,0xBB );
96
DEFINE_GUID( IID_IDirectDrawSurface4,           0x0B2B8630,0xAD35,0x11D0,0x8E,0xA6,0x00,0x60,0x97,0x97,0xEA,0x5B );
97
DEFINE_GUID( IID_IDirectDrawSurface7,           0x06675a80,0x3b9b,0x11d2,0xb9,0x2f,0x00,0x60,0x97,0x97,0xea,0x5b );
98
DEFINE_GUID( IID_IDirectDrawPalette,            0x6C14DB84,0xA733,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60 );
99
DEFINE_GUID( IID_IDirectDrawClipper,            0x6C14DB85,0xA733,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60 );
100
DEFINE_GUID( IID_IDirectDrawColorControl,       0x4B9F0EE0,0x0D7E,0x11D0,0x9B,0x06,0x00,0xA0,0xC9,0x03,0xA3,0xB8 );
101
DEFINE_GUID( IID_IDirectDrawGammaControl,       0x69C11C3E,0xB46B,0x11D1,0xAD,0x7A,0x00,0xC0,0x4F,0xC2,0x9B,0x4E );
102
 
103
#endif
104
 
105
/*============================================================================
106
 *
107
 * DirectDraw Structures
108
 *
109
 * Various structures used to invoke DirectDraw.
110
 *
111
 *==========================================================================*/
112
 
113
struct IDirectDraw;
114
struct IDirectDrawSurface;
115
struct IDirectDrawPalette;
116
struct IDirectDrawClipper;
117
 
118
typedef struct IDirectDraw              FAR *LPDIRECTDRAW;
119
typedef struct IDirectDraw2             FAR *LPDIRECTDRAW2;
120
typedef struct IDirectDraw4             FAR *LPDIRECTDRAW4;
121
typedef struct IDirectDraw7             FAR *LPDIRECTDRAW7;
122
typedef struct IDirectDrawSurface       FAR *LPDIRECTDRAWSURFACE;
123
typedef struct IDirectDrawSurface2      FAR *LPDIRECTDRAWSURFACE2;
124
typedef struct IDirectDrawSurface3      FAR *LPDIRECTDRAWSURFACE3;
125
typedef struct IDirectDrawSurface4      FAR *LPDIRECTDRAWSURFACE4;
126
typedef struct IDirectDrawSurface7      FAR *LPDIRECTDRAWSURFACE7;
127
typedef struct IDirectDrawPalette               FAR *LPDIRECTDRAWPALETTE;
128
typedef struct IDirectDrawClipper               FAR *LPDIRECTDRAWCLIPPER;
129
typedef struct IDirectDrawColorControl          FAR *LPDIRECTDRAWCOLORCONTROL;
130
typedef struct IDirectDrawGammaControl          FAR *LPDIRECTDRAWGAMMACONTROL;
131
 
132
typedef struct _DDFXROP                 FAR *LPDDFXROP;
133
typedef struct _DDSURFACEDESC           FAR *LPDDSURFACEDESC;
134
typedef struct _DDSURFACEDESC2          FAR *LPDDSURFACEDESC2;
135
typedef struct _DDCOLORCONTROL          FAR *LPDDCOLORCONTROL;
136
 
137
/*
138
 * API's
139
 */
140
#if (defined (WIN32) || defined( _WIN32 ) ) && !defined( _NO_COM )
141
//#if defined( _WIN32 ) && !defined( _NO_ENUM )
142
    typedef BOOL (FAR PASCAL * LPDDENUMCALLBACKA)(GUID FAR *, LPSTR, LPSTR, LPVOID);
143
    typedef BOOL (FAR PASCAL * LPDDENUMCALLBACKW)(GUID FAR *, LPWSTR, LPWSTR, LPVOID);
144
    extern HRESULT WINAPI DirectDrawEnumerateW( LPDDENUMCALLBACKW lpCallback, LPVOID lpContext );
145
    extern HRESULT WINAPI DirectDrawEnumerateA( LPDDENUMCALLBACKA lpCallback, LPVOID lpContext );
146
    /*
147
     * Protect against old SDKs
148
     */
149
    #if !defined(HMONITOR_DECLARED) && (WINVER < 0x0500)
150
        #define HMONITOR_DECLARED
151
        DECLARE_HANDLE(HMONITOR);
152
    #endif
153
    typedef BOOL (FAR PASCAL * LPDDENUMCALLBACKEXA)(GUID FAR *, LPSTR, LPSTR, LPVOID, HMONITOR);
154
    typedef BOOL (FAR PASCAL * LPDDENUMCALLBACKEXW)(GUID FAR *, LPWSTR, LPWSTR, LPVOID, HMONITOR);
155
    extern HRESULT WINAPI DirectDrawEnumerateExW( LPDDENUMCALLBACKEXW lpCallback, LPVOID lpContext, DWORD dwFlags);
156
    extern HRESULT WINAPI DirectDrawEnumerateExA( LPDDENUMCALLBACKEXA lpCallback, LPVOID lpContext, DWORD dwFlags);
157
    typedef HRESULT (WINAPI * LPDIRECTDRAWENUMERATEEXA)( LPDDENUMCALLBACKEXA lpCallback, LPVOID lpContext, DWORD dwFlags);
158
    typedef HRESULT (WINAPI * LPDIRECTDRAWENUMERATEEXW)( LPDDENUMCALLBACKEXW lpCallback, LPVOID lpContext, DWORD dwFlags);
159
 
160
    #ifdef UNICODE
161
        typedef LPDDENUMCALLBACKW           LPDDENUMCALLBACK;
162
        #define DirectDrawEnumerate         DirectDrawEnumerateW
163
        typedef LPDDENUMCALLBACKEXW         LPDDENUMCALLBACKEX;
164
        typedef LPDIRECTDRAWENUMERATEEXW        LPDIRECTDRAWENUMERATEEX;
165
        #define DirectDrawEnumerateEx       DirectDrawEnumerateExW
166
    #else
167
        typedef LPDDENUMCALLBACKA           LPDDENUMCALLBACK;
168
        #define DirectDrawEnumerate         DirectDrawEnumerateA
169
        typedef LPDDENUMCALLBACKEXA         LPDDENUMCALLBACKEX;
170
        typedef LPDIRECTDRAWENUMERATEEXA        LPDIRECTDRAWENUMERATEEX;
171
        #define DirectDrawEnumerateEx       DirectDrawEnumerateExA
172
    #endif
173
    extern HRESULT WINAPI DirectDrawCreate( GUID FAR *lpGUID, LPDIRECTDRAW FAR *lplpDD, IUnknown FAR *pUnkOuter );
174
    extern HRESULT WINAPI DirectDrawCreateEx( GUID FAR * lpGuid, LPVOID  *lplpDD, REFIID  iid,IUnknown FAR *pUnkOuter );
175
    extern HRESULT WINAPI DirectDrawCreateClipper( DWORD dwFlags, LPDIRECTDRAWCLIPPER FAR *lplpDDClipper, IUnknown FAR *pUnkOuter );
176
#endif
177
/*
178
 * Flags for DirectDrawEnumerateEx
179
 * DirectDrawEnumerateEx supercedes DirectDrawEnumerate. You must use GetProcAddress to
180
 * obtain a function pointer (of type LPDIRECTDRAWENUMERATEEX) to DirectDrawEnumerateEx.
181
 * By default, only the primary display device is enumerated.
182
 * DirectDrawEnumerate is equivalent to DirectDrawEnumerate(,,DDENUM_NONDISPLAYDEVICES)
183
 */
184
 
185
/*
186
 * This flag causes enumeration of any GDI display devices which are part of
187
 * the Windows Desktop
188
 */
189
#define DDENUM_ATTACHEDSECONDARYDEVICES     0x00000001L
190
 
191
/*
192
 * This flag causes enumeration of any GDI display devices which are not
193
 * part of the Windows Desktop
194
 */
195
#define DDENUM_DETACHEDSECONDARYDEVICES     0x00000002L
196
 
197
/*
198
 * This flag causes enumeration of non-display devices
199
 */
200
#define DDENUM_NONDISPLAYDEVICES            0x00000004L
201
 
202
 
203
#define REGSTR_KEY_DDHW_DESCRIPTION     "Description"
204
#define REGSTR_KEY_DDHW_DRIVERNAME      "DriverName"
205
#define REGSTR_PATH_DDHW                "Hardware\\DirectDrawDrivers"
206
 
207
#define DDCREATE_HARDWAREONLY           0x00000001l
208
#define DDCREATE_EMULATIONONLY          0x00000002l
209
 
210
#if defined(WINNT) || !defined(WIN32)
211
#ifndef _HRESULT_DEFINED
212
#define _HRESULT_DEFINED
213
typedef __success(return >= 0) long HRESULT;
214
#endif // !_HRESULT_DEFINED
215
#endif
216
 
217
//#ifndef WINNT
218
typedef HRESULT (FAR PASCAL * LPDDENUMMODESCALLBACK)(LPDDSURFACEDESC, LPVOID);
219
typedef HRESULT (FAR PASCAL * LPDDENUMMODESCALLBACK2)(LPDDSURFACEDESC2, LPVOID);
220
typedef HRESULT (FAR PASCAL * LPDDENUMSURFACESCALLBACK)(LPDIRECTDRAWSURFACE, LPDDSURFACEDESC, LPVOID);
221
typedef HRESULT (FAR PASCAL * LPDDENUMSURFACESCALLBACK2)(LPDIRECTDRAWSURFACE4, LPDDSURFACEDESC2, LPVOID);
222
typedef HRESULT (FAR PASCAL * LPDDENUMSURFACESCALLBACK7)(LPDIRECTDRAWSURFACE7, LPDDSURFACEDESC2, LPVOID);
223
//#endif
224
 
225
/*
226
 * Generic pixel format with 8-bit RGB and alpha components
227
 */
228
typedef struct _DDARGB
229
{
230
    BYTE blue;
231
    BYTE green;
232
    BYTE red;
233
    BYTE alpha;
234
} DDARGB;
235
 
236
typedef DDARGB FAR *LPDDARGB;
237
 
238
/*
239
 * This version of the structure remains for backwards source compatibility.
240
 * The DDARGB structure is the one that should be used for all DirectDraw APIs.
241
 */
242
typedef struct _DDRGBA
243
{
244
    BYTE red;
245
    BYTE green;
246
    BYTE blue;
247
    BYTE alpha;
248
} DDRGBA;
249
 
250
typedef DDRGBA FAR *LPDDRGBA;
251
 
252
 
253
/*
254
 * DDCOLORKEY
255
 */
256
typedef struct _DDCOLORKEY
257
{
258
    DWORD       dwColorSpaceLowValue;   // low boundary of color space that is to
259
                                        // be treated as Color Key, inclusive
260
    DWORD       dwColorSpaceHighValue;  // high boundary of color space that is
261
                                        // to be treated as Color Key, inclusive
262
} DDCOLORKEY;
263
 
264
typedef DDCOLORKEY FAR* LPDDCOLORKEY;
265
 
266
/*
267
 * DDBLTFX
268
 * Used to pass override information to the DIRECTDRAWSURFACE callback Blt.
269
 */
270
typedef struct _DDBLTFX
271
{
272
    DWORD       dwSize;                         // size of structure
273
    DWORD       dwDDFX;                         // FX operations
274
    DWORD       dwROP;                          // Win32 raster operations
275
    DWORD       dwDDROP;                        // Raster operations new for DirectDraw
276
    DWORD       dwRotationAngle;                // Rotation angle for blt
277
    DWORD       dwZBufferOpCode;                // ZBuffer compares
278
    DWORD       dwZBufferLow;                   // Low limit of Z buffer
279
    DWORD       dwZBufferHigh;                  // High limit of Z buffer
280
    DWORD       dwZBufferBaseDest;              // Destination base value
281
    DWORD       dwZDestConstBitDepth;           // Bit depth used to specify Z constant for destination
282
    union
283
    {
284
        DWORD   dwZDestConst;                   // Constant to use as Z buffer for dest
285
        LPDIRECTDRAWSURFACE lpDDSZBufferDest;   // Surface to use as Z buffer for dest
286
    } DUMMYUNIONNAMEN(1);
287
    DWORD       dwZSrcConstBitDepth;            // Bit depth used to specify Z constant for source
288
    union
289
    {
290
        DWORD   dwZSrcConst;                    // Constant to use as Z buffer for src
291
        LPDIRECTDRAWSURFACE lpDDSZBufferSrc;    // Surface to use as Z buffer for src
292
    } DUMMYUNIONNAMEN(2);
293
    DWORD       dwAlphaEdgeBlendBitDepth;       // Bit depth used to specify constant for alpha edge blend
294
    DWORD       dwAlphaEdgeBlend;               // Alpha for edge blending
295
    DWORD       dwReserved;
296
    DWORD       dwAlphaDestConstBitDepth;       // Bit depth used to specify alpha constant for destination
297
    union
298
    {
299
        DWORD   dwAlphaDestConst;               // Constant to use as Alpha Channel
300
        LPDIRECTDRAWSURFACE lpDDSAlphaDest;     // Surface to use as Alpha Channel
301
    } DUMMYUNIONNAMEN(3);
302
    DWORD       dwAlphaSrcConstBitDepth;        // Bit depth used to specify alpha constant for source
303
    union
304
    {
305
        DWORD   dwAlphaSrcConst;                // Constant to use as Alpha Channel
306
        LPDIRECTDRAWSURFACE lpDDSAlphaSrc;      // Surface to use as Alpha Channel
307
    } DUMMYUNIONNAMEN(4);
308
    union
309
    {
310
        DWORD   dwFillColor;                    // color in RGB or Palettized
311
        DWORD   dwFillDepth;                    // depth value for z-buffer
312
        DWORD   dwFillPixel;                    // pixel value for RGBA or RGBZ
313
        LPDIRECTDRAWSURFACE lpDDSPattern;       // Surface to use as pattern
314
    } DUMMYUNIONNAMEN(5);
315
    DDCOLORKEY  ddckDestColorkey;               // DestColorkey override
316
    DDCOLORKEY  ddckSrcColorkey;                // SrcColorkey override
317
} DDBLTFX;
318
 
319
typedef DDBLTFX FAR* LPDDBLTFX;
320
 
321
 
322
 
323
/*
324
 * DDSCAPS
325
 */
326
typedef struct _DDSCAPS
327
{
328
    DWORD       dwCaps;         // capabilities of surface wanted
329
} DDSCAPS;
330
 
331
typedef DDSCAPS FAR* LPDDSCAPS;
332
 
333
 
334
/*
335
 * DDOSCAPS
336
 */
337
typedef struct _DDOSCAPS
338
{
339
    DWORD       dwCaps;         // capabilities of surface wanted
340
} DDOSCAPS;
341
 
342
typedef DDOSCAPS FAR* LPDDOSCAPS;
343
 
344
/*
345
 * This structure is used internally by DirectDraw.
346
 */
347
typedef struct _DDSCAPSEX
348
{
349
    DWORD       dwCaps2;
350
    DWORD       dwCaps3;
351
    union
352
    {
353
        DWORD       dwCaps4;
354
        DWORD       dwVolumeDepth;
355
    } DUMMYUNIONNAMEN(1);
356
} DDSCAPSEX, FAR * LPDDSCAPSEX;
357
 
358
/*
359
 * DDSCAPS2
360
 */
361
typedef struct _DDSCAPS2
362
{
363
    DWORD       dwCaps;         // capabilities of surface wanted
364
    DWORD       dwCaps2;
365
    DWORD       dwCaps3;
366
    union
367
    {
368
        DWORD       dwCaps4;
369
        DWORD       dwVolumeDepth;
370
    } DUMMYUNIONNAMEN(1);
371
} DDSCAPS2;
372
 
373
typedef DDSCAPS2 FAR* LPDDSCAPS2;
374
 
375
/*
376
 * DDCAPS
377
 */
378
#define DD_ROP_SPACE            (256/32)        // space required to store ROP array
379
/*
380
 * NOTE: Our choosen structure number scheme is to append a single digit to
381
 * the end of the structure giving the version that structure is associated
382
 * with.
383
 */
384
 
385
/*
386
 * This structure represents the DDCAPS structure released in DirectDraw 1.0.  It is used internally
387
 * by DirectDraw to interpret caps passed into ddraw by drivers written prior to the release of DirectDraw 2.0.
388
 * New applications should use the DDCAPS structure defined below.
389
 */
390
typedef struct _DDCAPS_DX1
391
{
392
    DWORD       dwSize;                 // size of the DDDRIVERCAPS structure
393
    DWORD       dwCaps;                 // driver specific capabilities
394
    DWORD       dwCaps2;                // more driver specific capabilites
395
    DWORD       dwCKeyCaps;             // color key capabilities of the surface
396
    DWORD       dwFXCaps;               // driver specific stretching and effects capabilites
397
    DWORD       dwFXAlphaCaps;          // alpha driver specific capabilities
398
    DWORD       dwPalCaps;              // palette capabilities
399
    DWORD       dwSVCaps;               // stereo vision capabilities
400
    DWORD       dwAlphaBltConstBitDepths;       // DDBD_2,4,8
401
    DWORD       dwAlphaBltPixelBitDepths;       // DDBD_1,2,4,8
402
    DWORD       dwAlphaBltSurfaceBitDepths;     // DDBD_1,2,4,8
403
    DWORD       dwAlphaOverlayConstBitDepths;   // DDBD_2,4,8
404
    DWORD       dwAlphaOverlayPixelBitDepths;   // DDBD_1,2,4,8
405
    DWORD       dwAlphaOverlaySurfaceBitDepths; // DDBD_1,2,4,8
406
    DWORD       dwZBufferBitDepths;             // DDBD_8,16,24,32
407
    DWORD       dwVidMemTotal;          // total amount of video memory
408
    DWORD       dwVidMemFree;           // amount of free video memory
409
    DWORD       dwMaxVisibleOverlays;   // maximum number of visible overlays
410
    DWORD       dwCurrVisibleOverlays;  // current number of visible overlays
411
    DWORD       dwNumFourCCCodes;       // number of four cc codes
412
    DWORD       dwAlignBoundarySrc;     // source rectangle alignment
413
    DWORD       dwAlignSizeSrc;         // source rectangle byte size
414
    DWORD       dwAlignBoundaryDest;    // dest rectangle alignment
415
    DWORD       dwAlignSizeDest;        // dest rectangle byte size
416
    DWORD       dwAlignStrideAlign;     // stride alignment
417
    DWORD       dwRops[DD_ROP_SPACE];   // ROPS supported
418
    DDSCAPS     ddsCaps;                // DDSCAPS structure has all the general capabilities
419
    DWORD       dwMinOverlayStretch;    // minimum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
420
    DWORD       dwMaxOverlayStretch;    // maximum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
421
    DWORD       dwMinLiveVideoStretch;  // OBSOLETE! This field remains for compatability reasons only
422
    DWORD       dwMaxLiveVideoStretch;  // OBSOLETE! This field remains for compatability reasons only
423
    DWORD       dwMinHwCodecStretch;    // OBSOLETE! This field remains for compatability reasons only
424
    DWORD       dwMaxHwCodecStretch;    // OBSOLETE! This field remains for compatability reasons only
425
    DWORD       dwReserved1;            // reserved
426
    DWORD       dwReserved2;            // reserved
427
    DWORD       dwReserved3;            // reserved
428
} DDCAPS_DX1;
429
 
430
typedef DDCAPS_DX1 FAR* LPDDCAPS_DX1;
431
 
432
/*
433
 * This structure is the DDCAPS structure as it was in version 2 and 3 of Direct X.
434
 * It is present for back compatability.
435
 */
436
typedef struct _DDCAPS_DX3
437
{
438
    DWORD       dwSize;                 // size of the DDDRIVERCAPS structure
439
    DWORD       dwCaps;                 // driver specific capabilities
440
    DWORD       dwCaps2;                // more driver specific capabilites
441
    DWORD       dwCKeyCaps;             // color key capabilities of the surface
442
    DWORD       dwFXCaps;               // driver specific stretching and effects capabilites
443
    DWORD       dwFXAlphaCaps;          // alpha driver specific capabilities
444
    DWORD       dwPalCaps;              // palette capabilities
445
    DWORD       dwSVCaps;               // stereo vision capabilities
446
    DWORD       dwAlphaBltConstBitDepths;       // DDBD_2,4,8
447
    DWORD       dwAlphaBltPixelBitDepths;       // DDBD_1,2,4,8
448
    DWORD       dwAlphaBltSurfaceBitDepths;     // DDBD_1,2,4,8
449
    DWORD       dwAlphaOverlayConstBitDepths;   // DDBD_2,4,8
450
    DWORD       dwAlphaOverlayPixelBitDepths;   // DDBD_1,2,4,8
451
    DWORD       dwAlphaOverlaySurfaceBitDepths; // DDBD_1,2,4,8
452
    DWORD       dwZBufferBitDepths;             // DDBD_8,16,24,32
453
    DWORD       dwVidMemTotal;          // total amount of video memory
454
    DWORD       dwVidMemFree;           // amount of free video memory
455
    DWORD       dwMaxVisibleOverlays;   // maximum number of visible overlays
456
    DWORD       dwCurrVisibleOverlays;  // current number of visible overlays
457
    DWORD       dwNumFourCCCodes;       // number of four cc codes
458
    DWORD       dwAlignBoundarySrc;     // source rectangle alignment
459
    DWORD       dwAlignSizeSrc;         // source rectangle byte size
460
    DWORD       dwAlignBoundaryDest;    // dest rectangle alignment
461
    DWORD       dwAlignSizeDest;        // dest rectangle byte size
462
    DWORD       dwAlignStrideAlign;     // stride alignment
463
    DWORD       dwRops[DD_ROP_SPACE];   // ROPS supported
464
    DDSCAPS     ddsCaps;                // DDSCAPS structure has all the general capabilities
465
    DWORD       dwMinOverlayStretch;    // minimum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
466
    DWORD       dwMaxOverlayStretch;    // maximum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
467
    DWORD       dwMinLiveVideoStretch;  // minimum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
468
    DWORD       dwMaxLiveVideoStretch;  // maximum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
469
    DWORD       dwMinHwCodecStretch;    // minimum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
470
    DWORD       dwMaxHwCodecStretch;    // maximum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
471
    DWORD       dwReserved1;            // reserved
472
    DWORD       dwReserved2;            // reserved
473
    DWORD       dwReserved3;            // reserved
474
    DWORD       dwSVBCaps;              // driver specific capabilities for System->Vmem blts
475
    DWORD       dwSVBCKeyCaps;          // driver color key capabilities for System->Vmem blts
476
    DWORD       dwSVBFXCaps;            // driver FX capabilities for System->Vmem blts
477
    DWORD       dwSVBRops[DD_ROP_SPACE];// ROPS supported for System->Vmem blts
478
    DWORD       dwVSBCaps;              // driver specific capabilities for Vmem->System blts
479
    DWORD       dwVSBCKeyCaps;          // driver color key capabilities for Vmem->System blts
480
    DWORD       dwVSBFXCaps;            // driver FX capabilities for Vmem->System blts
481
    DWORD       dwVSBRops[DD_ROP_SPACE];// ROPS supported for Vmem->System blts
482
    DWORD       dwSSBCaps;              // driver specific capabilities for System->System blts
483
    DWORD       dwSSBCKeyCaps;          // driver color key capabilities for System->System blts
484
    DWORD       dwSSBFXCaps;            // driver FX capabilities for System->System blts
485
    DWORD       dwSSBRops[DD_ROP_SPACE];// ROPS supported for System->System blts
486
    DWORD       dwReserved4;            // reserved
487
    DWORD       dwReserved5;            // reserved
488
    DWORD       dwReserved6;            // reserved
489
} DDCAPS_DX3;
490
typedef DDCAPS_DX3 FAR* LPDDCAPS_DX3;
491
 
492
/*
493
 * This structure is the DDCAPS structure as it was in version 5 of Direct X.
494
 * It is present for back compatability.
495
 */
496
typedef struct _DDCAPS_DX5
497
{
498
/*  0*/ DWORD   dwSize;                 // size of the DDDRIVERCAPS structure
499
/*  4*/ DWORD   dwCaps;                 // driver specific capabilities
500
/*  8*/ DWORD   dwCaps2;                // more driver specific capabilites
501
/*  c*/ DWORD   dwCKeyCaps;             // color key capabilities of the surface
502
/* 10*/ DWORD   dwFXCaps;               // driver specific stretching and effects capabilites
503
/* 14*/ DWORD   dwFXAlphaCaps;          // alpha driver specific capabilities
504
/* 18*/ DWORD   dwPalCaps;              // palette capabilities
505
/* 1c*/ DWORD   dwSVCaps;               // stereo vision capabilities
506
/* 20*/ DWORD   dwAlphaBltConstBitDepths;       // DDBD_2,4,8
507
/* 24*/ DWORD   dwAlphaBltPixelBitDepths;       // DDBD_1,2,4,8
508
/* 28*/ DWORD   dwAlphaBltSurfaceBitDepths;     // DDBD_1,2,4,8
509
/* 2c*/ DWORD   dwAlphaOverlayConstBitDepths;   // DDBD_2,4,8
510
/* 30*/ DWORD   dwAlphaOverlayPixelBitDepths;   // DDBD_1,2,4,8
511
/* 34*/ DWORD   dwAlphaOverlaySurfaceBitDepths; // DDBD_1,2,4,8
512
/* 38*/ DWORD   dwZBufferBitDepths;             // DDBD_8,16,24,32
513
/* 3c*/ DWORD   dwVidMemTotal;          // total amount of video memory
514
/* 40*/ DWORD   dwVidMemFree;           // amount of free video memory
515
/* 44*/ DWORD   dwMaxVisibleOverlays;   // maximum number of visible overlays
516
/* 48*/ DWORD   dwCurrVisibleOverlays;  // current number of visible overlays
517
/* 4c*/ DWORD   dwNumFourCCCodes;       // number of four cc codes
518
/* 50*/ DWORD   dwAlignBoundarySrc;     // source rectangle alignment
519
/* 54*/ DWORD   dwAlignSizeSrc;         // source rectangle byte size
520
/* 58*/ DWORD   dwAlignBoundaryDest;    // dest rectangle alignment
521
/* 5c*/ DWORD   dwAlignSizeDest;        // dest rectangle byte size
522
/* 60*/ DWORD   dwAlignStrideAlign;     // stride alignment
523
/* 64*/ DWORD   dwRops[DD_ROP_SPACE];   // ROPS supported
524
/* 84*/ DDSCAPS ddsCaps;                // DDSCAPS structure has all the general capabilities
525
/* 88*/ DWORD   dwMinOverlayStretch;    // minimum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
526
/* 8c*/ DWORD   dwMaxOverlayStretch;    // maximum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
527
/* 90*/ DWORD   dwMinLiveVideoStretch;  // minimum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
528
/* 94*/ DWORD   dwMaxLiveVideoStretch;  // maximum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
529
/* 98*/ DWORD   dwMinHwCodecStretch;    // minimum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
530
/* 9c*/ DWORD   dwMaxHwCodecStretch;    // maximum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
531
/* a0*/ DWORD   dwReserved1;            // reserved
532
/* a4*/ DWORD   dwReserved2;            // reserved
533
/* a8*/ DWORD   dwReserved3;            // reserved
534
/* ac*/ DWORD   dwSVBCaps;              // driver specific capabilities for System->Vmem blts
535
/* b0*/ DWORD   dwSVBCKeyCaps;          // driver color key capabilities for System->Vmem blts
536
/* b4*/ DWORD   dwSVBFXCaps;            // driver FX capabilities for System->Vmem blts
537
/* b8*/ DWORD   dwSVBRops[DD_ROP_SPACE];// ROPS supported for System->Vmem blts
538
/* d8*/ DWORD   dwVSBCaps;              // driver specific capabilities for Vmem->System blts
539
/* dc*/ DWORD   dwVSBCKeyCaps;          // driver color key capabilities for Vmem->System blts
540
/* e0*/ DWORD   dwVSBFXCaps;            // driver FX capabilities for Vmem->System blts
541
/* e4*/ DWORD   dwVSBRops[DD_ROP_SPACE];// ROPS supported for Vmem->System blts
542
/*104*/ DWORD   dwSSBCaps;              // driver specific capabilities for System->System blts
543
/*108*/ DWORD   dwSSBCKeyCaps;          // driver color key capabilities for System->System blts
544
/*10c*/ DWORD   dwSSBFXCaps;            // driver FX capabilities for System->System blts
545
/*110*/ DWORD   dwSSBRops[DD_ROP_SPACE];// ROPS supported for System->System blts
546
// Members added for DX5:
547
/*130*/ DWORD   dwMaxVideoPorts;        // maximum number of usable video ports
548
/*134*/ DWORD   dwCurrVideoPorts;       // current number of video ports used
549
/*138*/ DWORD   dwSVBCaps2;             // more driver specific capabilities for System->Vmem blts
550
/*13c*/ DWORD   dwNLVBCaps;               // driver specific capabilities for non-local->local vidmem blts
551
/*140*/ DWORD   dwNLVBCaps2;              // more driver specific capabilities non-local->local vidmem blts
552
/*144*/ DWORD   dwNLVBCKeyCaps;           // driver color key capabilities for non-local->local vidmem blts
553
/*148*/ DWORD   dwNLVBFXCaps;             // driver FX capabilities for non-local->local blts
554
/*14c*/ DWORD   dwNLVBRops[DD_ROP_SPACE]; // ROPS supported for non-local->local blts
555
} DDCAPS_DX5;
556
typedef DDCAPS_DX5 FAR* LPDDCAPS_DX5;
557
 
558
typedef struct _DDCAPS_DX6
559
{
560
/*  0*/ DWORD   dwSize;                 // size of the DDDRIVERCAPS structure
561
/*  4*/ DWORD   dwCaps;                 // driver specific capabilities
562
/*  8*/ DWORD   dwCaps2;                // more driver specific capabilites
563
/*  c*/ DWORD   dwCKeyCaps;             // color key capabilities of the surface
564
/* 10*/ DWORD   dwFXCaps;               // driver specific stretching and effects capabilites
565
/* 14*/ DWORD   dwFXAlphaCaps;          // alpha caps
566
/* 18*/ DWORD   dwPalCaps;              // palette capabilities
567
/* 1c*/ DWORD   dwSVCaps;               // stereo vision capabilities
568
/* 20*/ DWORD   dwAlphaBltConstBitDepths;       // DDBD_2,4,8
569
/* 24*/ DWORD   dwAlphaBltPixelBitDepths;       // DDBD_1,2,4,8
570
/* 28*/ DWORD   dwAlphaBltSurfaceBitDepths;     // DDBD_1,2,4,8
571
/* 2c*/ DWORD   dwAlphaOverlayConstBitDepths;   // DDBD_2,4,8
572
/* 30*/ DWORD   dwAlphaOverlayPixelBitDepths;   // DDBD_1,2,4,8
573
/* 34*/ DWORD   dwAlphaOverlaySurfaceBitDepths; // DDBD_1,2,4,8
574
/* 38*/ DWORD   dwZBufferBitDepths;             // DDBD_8,16,24,32
575
/* 3c*/ DWORD   dwVidMemTotal;          // total amount of video memory
576
/* 40*/ DWORD   dwVidMemFree;           // amount of free video memory
577
/* 44*/ DWORD   dwMaxVisibleOverlays;   // maximum number of visible overlays
578
/* 48*/ DWORD   dwCurrVisibleOverlays;  // current number of visible overlays
579
/* 4c*/ DWORD   dwNumFourCCCodes;       // number of four cc codes
580
/* 50*/ DWORD   dwAlignBoundarySrc;     // source rectangle alignment
581
/* 54*/ DWORD   dwAlignSizeSrc;         // source rectangle byte size
582
/* 58*/ DWORD   dwAlignBoundaryDest;    // dest rectangle alignment
583
/* 5c*/ DWORD   dwAlignSizeDest;        // dest rectangle byte size
584
/* 60*/ DWORD   dwAlignStrideAlign;     // stride alignment
585
/* 64*/ DWORD   dwRops[DD_ROP_SPACE];   // ROPS supported
586
/* 84*/ DDSCAPS ddsOldCaps;             // Was DDSCAPS  ddsCaps. ddsCaps is of type DDSCAPS2 for DX6
587
/* 88*/ DWORD   dwMinOverlayStretch;    // minimum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
588
/* 8c*/ DWORD   dwMaxOverlayStretch;    // maximum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
589
/* 90*/ DWORD   dwMinLiveVideoStretch;  // minimum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
590
/* 94*/ DWORD   dwMaxLiveVideoStretch;  // maximum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
591
/* 98*/ DWORD   dwMinHwCodecStretch;    // minimum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
592
/* 9c*/ DWORD   dwMaxHwCodecStretch;    // maximum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
593
/* a0*/ DWORD   dwReserved1;            // reserved
594
/* a4*/ DWORD   dwReserved2;            // reserved
595
/* a8*/ DWORD   dwReserved3;            // reserved
596
/* ac*/ DWORD   dwSVBCaps;              // driver specific capabilities for System->Vmem blts
597
/* b0*/ DWORD   dwSVBCKeyCaps;          // driver color key capabilities for System->Vmem blts
598
/* b4*/ DWORD   dwSVBFXCaps;            // driver FX capabilities for System->Vmem blts
599
/* b8*/ DWORD   dwSVBRops[DD_ROP_SPACE];// ROPS supported for System->Vmem blts
600
/* d8*/ DWORD   dwVSBCaps;              // driver specific capabilities for Vmem->System blts
601
/* dc*/ DWORD   dwVSBCKeyCaps;          // driver color key capabilities for Vmem->System blts
602
/* e0*/ DWORD   dwVSBFXCaps;            // driver FX capabilities for Vmem->System blts
603
/* e4*/ DWORD   dwVSBRops[DD_ROP_SPACE];// ROPS supported for Vmem->System blts
604
/*104*/ DWORD   dwSSBCaps;              // driver specific capabilities for System->System blts
605
/*108*/ DWORD   dwSSBCKeyCaps;          // driver color key capabilities for System->System blts
606
/*10c*/ DWORD   dwSSBFXCaps;            // driver FX capabilities for System->System blts
607
/*110*/ DWORD   dwSSBRops[DD_ROP_SPACE];// ROPS supported for System->System blts
608
/*130*/ DWORD   dwMaxVideoPorts;        // maximum number of usable video ports
609
/*134*/ DWORD   dwCurrVideoPorts;       // current number of video ports used
610
/*138*/ DWORD   dwSVBCaps2;             // more driver specific capabilities for System->Vmem blts
611
/*13c*/ DWORD   dwNLVBCaps;               // driver specific capabilities for non-local->local vidmem blts
612
/*140*/ DWORD   dwNLVBCaps2;              // more driver specific capabilities non-local->local vidmem blts
613
/*144*/ DWORD   dwNLVBCKeyCaps;           // driver color key capabilities for non-local->local vidmem blts
614
/*148*/ DWORD   dwNLVBFXCaps;             // driver FX capabilities for non-local->local blts
615
/*14c*/ DWORD   dwNLVBRops[DD_ROP_SPACE]; // ROPS supported for non-local->local blts
616
// Members added for DX6 release
617
/*16c*/ DDSCAPS2 ddsCaps;               // Surface Caps
618
} DDCAPS_DX6;
619
typedef DDCAPS_DX6 FAR* LPDDCAPS_DX6;
620
 
621
typedef struct _DDCAPS_DX7
622
{
623
/*  0*/ DWORD   dwSize;                 // size of the DDDRIVERCAPS structure
624
/*  4*/ DWORD   dwCaps;                 // driver specific capabilities
625
/*  8*/ DWORD   dwCaps2;                // more driver specific capabilites
626
/*  c*/ DWORD   dwCKeyCaps;             // color key capabilities of the surface
627
/* 10*/ DWORD   dwFXCaps;               // driver specific stretching and effects capabilites
628
/* 14*/ DWORD   dwFXAlphaCaps;          // alpha driver specific capabilities
629
/* 18*/ DWORD   dwPalCaps;              // palette capabilities
630
/* 1c*/ DWORD   dwSVCaps;               // stereo vision capabilities
631
/* 20*/ DWORD   dwAlphaBltConstBitDepths;       // DDBD_2,4,8
632
/* 24*/ DWORD   dwAlphaBltPixelBitDepths;       // DDBD_1,2,4,8
633
/* 28*/ DWORD   dwAlphaBltSurfaceBitDepths;     // DDBD_1,2,4,8
634
/* 2c*/ DWORD   dwAlphaOverlayConstBitDepths;   // DDBD_2,4,8
635
/* 30*/ DWORD   dwAlphaOverlayPixelBitDepths;   // DDBD_1,2,4,8
636
/* 34*/ DWORD   dwAlphaOverlaySurfaceBitDepths; // DDBD_1,2,4,8
637
/* 38*/ DWORD   dwZBufferBitDepths;             // DDBD_8,16,24,32
638
/* 3c*/ DWORD   dwVidMemTotal;          // total amount of video memory
639
/* 40*/ DWORD   dwVidMemFree;           // amount of free video memory
640
/* 44*/ DWORD   dwMaxVisibleOverlays;   // maximum number of visible overlays
641
/* 48*/ DWORD   dwCurrVisibleOverlays;  // current number of visible overlays
642
/* 4c*/ DWORD   dwNumFourCCCodes;       // number of four cc codes
643
/* 50*/ DWORD   dwAlignBoundarySrc;     // source rectangle alignment
644
/* 54*/ DWORD   dwAlignSizeSrc;         // source rectangle byte size
645
/* 58*/ DWORD   dwAlignBoundaryDest;    // dest rectangle alignment
646
/* 5c*/ DWORD   dwAlignSizeDest;        // dest rectangle byte size
647
/* 60*/ DWORD   dwAlignStrideAlign;     // stride alignment
648
/* 64*/ DWORD   dwRops[DD_ROP_SPACE];   // ROPS supported
649
/* 84*/ DDSCAPS ddsOldCaps;             // Was DDSCAPS  ddsCaps. ddsCaps is of type DDSCAPS2 for DX6
650
/* 88*/ DWORD   dwMinOverlayStretch;    // minimum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
651
/* 8c*/ DWORD   dwMaxOverlayStretch;    // maximum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
652
/* 90*/ DWORD   dwMinLiveVideoStretch;  // minimum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
653
/* 94*/ DWORD   dwMaxLiveVideoStretch;  // maximum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
654
/* 98*/ DWORD   dwMinHwCodecStretch;    // minimum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
655
/* 9c*/ DWORD   dwMaxHwCodecStretch;    // maximum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
656
/* a0*/ DWORD   dwReserved1;            // reserved
657
/* a4*/ DWORD   dwReserved2;            // reserved
658
/* a8*/ DWORD   dwReserved3;            // reserved
659
/* ac*/ DWORD   dwSVBCaps;              // driver specific capabilities for System->Vmem blts
660
/* b0*/ DWORD   dwSVBCKeyCaps;          // driver color key capabilities for System->Vmem blts
661
/* b4*/ DWORD   dwSVBFXCaps;            // driver FX capabilities for System->Vmem blts
662
/* b8*/ DWORD   dwSVBRops[DD_ROP_SPACE];// ROPS supported for System->Vmem blts
663
/* d8*/ DWORD   dwVSBCaps;              // driver specific capabilities for Vmem->System blts
664
/* dc*/ DWORD   dwVSBCKeyCaps;          // driver color key capabilities for Vmem->System blts
665
/* e0*/ DWORD   dwVSBFXCaps;            // driver FX capabilities for Vmem->System blts
666
/* e4*/ DWORD   dwVSBRops[DD_ROP_SPACE];// ROPS supported for Vmem->System blts
667
/*104*/ DWORD   dwSSBCaps;              // driver specific capabilities for System->System blts
668
/*108*/ DWORD   dwSSBCKeyCaps;          // driver color key capabilities for System->System blts
669
/*10c*/ DWORD   dwSSBFXCaps;            // driver FX capabilities for System->System blts
670
/*110*/ DWORD   dwSSBRops[DD_ROP_SPACE];// ROPS supported for System->System blts
671
/*130*/ DWORD   dwMaxVideoPorts;        // maximum number of usable video ports
672
/*134*/ DWORD   dwCurrVideoPorts;       // current number of video ports used
673
/*138*/ DWORD   dwSVBCaps2;             // more driver specific capabilities for System->Vmem blts
674
/*13c*/ DWORD   dwNLVBCaps;               // driver specific capabilities for non-local->local vidmem blts
675
/*140*/ DWORD   dwNLVBCaps2;              // more driver specific capabilities non-local->local vidmem blts
676
/*144*/ DWORD   dwNLVBCKeyCaps;           // driver color key capabilities for non-local->local vidmem blts
677
/*148*/ DWORD   dwNLVBFXCaps;             // driver FX capabilities for non-local->local blts
678
/*14c*/ DWORD   dwNLVBRops[DD_ROP_SPACE]; // ROPS supported for non-local->local blts
679
// Members added for DX6 release
680
/*16c*/ DDSCAPS2 ddsCaps;               // Surface Caps
681
} DDCAPS_DX7;
682
typedef DDCAPS_DX7 FAR* LPDDCAPS_DX7;
683
 
684
 
685
#if DIRECTDRAW_VERSION <= 0x300
686
    typedef DDCAPS_DX3 DDCAPS;
687
#elif DIRECTDRAW_VERSION <= 0x500
688
    typedef DDCAPS_DX5 DDCAPS;
689
#elif DIRECTDRAW_VERSION <= 0x600
690
    typedef DDCAPS_DX6 DDCAPS;
691
#else
692
    typedef DDCAPS_DX7 DDCAPS;
693
#endif
694
 
695
typedef DDCAPS FAR* LPDDCAPS;
696
 
697
 
698
 
699
/*
700
 * DDPIXELFORMAT
701
 */
702
typedef struct _DDPIXELFORMAT
703
{
704
    DWORD       dwSize;                 // size of structure
705
    DWORD       dwFlags;                // pixel format flags
706
    DWORD       dwFourCC;               // (FOURCC code)
707
    union
708
    {
709
        DWORD   dwRGBBitCount;          // how many bits per pixel
710
        DWORD   dwYUVBitCount;          // how many bits per pixel
711
        DWORD   dwZBufferBitDepth;      // how many total bits/pixel in z buffer (including any stencil bits)
712
        DWORD   dwAlphaBitDepth;        // how many bits for alpha channels
713
        DWORD   dwLuminanceBitCount;    // how many bits per pixel
714
        DWORD   dwBumpBitCount;         // how many bits per "buxel", total
715
        DWORD   dwPrivateFormatBitCount;// Bits per pixel of private driver formats. Only valid in texture
716
                                        // format list and if DDPF_D3DFORMAT is set
717
    } DUMMYUNIONNAMEN(1);
718
    union
719
    {
720
        DWORD   dwRBitMask;             // mask for red bit
721
        DWORD   dwYBitMask;             // mask for Y bits
722
        DWORD   dwStencilBitDepth;      // how many stencil bits (note: dwZBufferBitDepth-dwStencilBitDepth is total Z-only bits)
723
        DWORD   dwLuminanceBitMask;     // mask for luminance bits
724
        DWORD   dwBumpDuBitMask;        // mask for bump map U delta bits
725
        DWORD   dwOperations;           // DDPF_D3DFORMAT Operations
726
    } DUMMYUNIONNAMEN(2);
727
    union
728
    {
729
        DWORD   dwGBitMask;             // mask for green bits
730
        DWORD   dwUBitMask;             // mask for U bits
731
        DWORD   dwZBitMask;             // mask for Z bits
732
        DWORD   dwBumpDvBitMask;        // mask for bump map V delta bits
733
        struct
734
        {
735
            WORD    wFlipMSTypes;       // Multisample methods supported via flip for this D3DFORMAT
736
            WORD    wBltMSTypes;        // Multisample methods supported via blt for this D3DFORMAT
737
        } MultiSampleCaps;
738
 
739
    } DUMMYUNIONNAMEN(3);
740
    union
741
    {
742
        DWORD   dwBBitMask;             // mask for blue bits
743
        DWORD   dwVBitMask;             // mask for V bits
744
        DWORD   dwStencilBitMask;       // mask for stencil bits
745
        DWORD   dwBumpLuminanceBitMask; // mask for luminance in bump map
746
    } DUMMYUNIONNAMEN(4);
747
    union
748
    {
749
        DWORD   dwRGBAlphaBitMask;      // mask for alpha channel
750
        DWORD   dwYUVAlphaBitMask;      // mask for alpha channel
751
        DWORD   dwLuminanceAlphaBitMask;// mask for alpha channel
752
        DWORD   dwRGBZBitMask;          // mask for Z channel
753
        DWORD   dwYUVZBitMask;          // mask for Z channel
754
    } DUMMYUNIONNAMEN(5);
755
} DDPIXELFORMAT;
756
 
757
typedef DDPIXELFORMAT FAR* LPDDPIXELFORMAT;
758
 
759
/*
760
 * DDOVERLAYFX
761
 */
762
typedef struct _DDOVERLAYFX
763
{
764
    DWORD       dwSize;                         // size of structure
765
    DWORD       dwAlphaEdgeBlendBitDepth;       // Bit depth used to specify constant for alpha edge blend
766
    DWORD       dwAlphaEdgeBlend;               // Constant to use as alpha for edge blend
767
    DWORD       dwReserved;
768
    DWORD       dwAlphaDestConstBitDepth;       // Bit depth used to specify alpha constant for destination
769
    union
770
    {
771
        DWORD   dwAlphaDestConst;               // Constant to use as alpha channel for dest
772
        LPDIRECTDRAWSURFACE lpDDSAlphaDest;     // Surface to use as alpha channel for dest
773
    } DUMMYUNIONNAMEN(1);
774
    DWORD       dwAlphaSrcConstBitDepth;        // Bit depth used to specify alpha constant for source
775
    union
776
    {
777
        DWORD   dwAlphaSrcConst;                // Constant to use as alpha channel for src
778
        LPDIRECTDRAWSURFACE lpDDSAlphaSrc;      // Surface to use as alpha channel for src
779
    } DUMMYUNIONNAMEN(2);
780
    DDCOLORKEY  dckDestColorkey;                // DestColorkey override
781
    DDCOLORKEY  dckSrcColorkey;                 // DestColorkey override
782
    DWORD       dwDDFX;                         // Overlay FX
783
    DWORD       dwFlags;                        // flags
784
} DDOVERLAYFX;
785
 
786
typedef DDOVERLAYFX FAR *LPDDOVERLAYFX;
787
 
788
 
789
/*
790
 * DDBLTBATCH: BltBatch entry structure
791
 */
792
typedef struct _DDBLTBATCH
793
{
794
    LPRECT              lprDest;
795
    LPDIRECTDRAWSURFACE lpDDSSrc;
796
    LPRECT              lprSrc;
797
    DWORD               dwFlags;
798
    LPDDBLTFX           lpDDBltFx;
799
} DDBLTBATCH;
800
 
801
typedef DDBLTBATCH FAR * LPDDBLTBATCH;
802
 
803
 
804
/*
805
 * DDGAMMARAMP
806
 */
807
typedef struct _DDGAMMARAMP
808
{
809
    WORD                red[256];
810
    WORD                green[256];
811
    WORD                blue[256];
812
} DDGAMMARAMP;
813
typedef DDGAMMARAMP FAR * LPDDGAMMARAMP;
814
 
815
/*
816
 *  This is the structure within which DirectDraw returns data about the current graphics driver and chipset
817
 */
818
 
819
#define MAX_DDDEVICEID_STRING           512
820
 
821
typedef struct tagDDDEVICEIDENTIFIER
822
{
823
    /*
824
     * These elements are for presentation to the user only. They should not be used to identify particular
825
     * drivers, since this is unreliable and many different strings may be associated with the same
826
     * device, and the same driver from different vendors.
827
     */
828
    char    szDriver[MAX_DDDEVICEID_STRING];
829
    char    szDescription[MAX_DDDEVICEID_STRING];
830
 
831
    /*
832
     * This element is the version of the DirectDraw/3D driver. It is legal to do <, > comparisons
833
     * on the whole 64 bits. Caution should be exercised if you use this element to identify problematic
834
     * drivers. It is recommended that guidDeviceIdentifier is used for this purpose.
835
     *
836
     * This version has the form:
837
     *  wProduct = HIWORD(liDriverVersion.HighPart)
838
     *  wVersion = LOWORD(liDriverVersion.HighPart)
839
     *  wSubVersion = HIWORD(liDriverVersion.LowPart)
840
     *  wBuild = LOWORD(liDriverVersion.LowPart)
841
     */
842
#ifdef _WIN32
843
    LARGE_INTEGER liDriverVersion;      /* Defined for applications and other 32 bit components */
844
#else
845
    DWORD   dwDriverVersionLowPart;     /* Defined for 16 bit driver components */
846
    DWORD   dwDriverVersionHighPart;
847
#endif
848
 
849
 
850
    /*
851
     * These elements can be used to identify particular chipsets. Use with extreme caution.
852
     *   dwVendorId     Identifies the manufacturer. May be zero if unknown.
853
     *   dwDeviceId     Identifies the type of chipset. May be zero if unknown.
854
     *   dwSubSysId     Identifies the subsystem, typically this means the particular board. May be zero if unknown.
855
     *   dwRevision     Identifies the revision level of the chipset. May be zero if unknown.
856
     */
857
    DWORD   dwVendorId;
858
    DWORD   dwDeviceId;
859
    DWORD   dwSubSysId;
860
    DWORD   dwRevision;
861
 
862
    /*
863
     * This element can be used to check changes in driver/chipset. This GUID is a unique identifier for the
864
     * driver/chipset pair. Use this element if you wish to track changes to the driver/chipset in order to
865
     * reprofile the graphics subsystem.
866
     * This element can also be used to identify particular problematic drivers.
867
     */
868
    GUID    guidDeviceIdentifier;
869
} DDDEVICEIDENTIFIER, * LPDDDEVICEIDENTIFIER;
870
 
871
typedef struct tagDDDEVICEIDENTIFIER2
872
{
873
    /*
874
     * These elements are for presentation to the user only. They should not be used to identify particular
875
     * drivers, since this is unreliable and many different strings may be associated with the same
876
     * device, and the same driver from different vendors.
877
     */
878
    char    szDriver[MAX_DDDEVICEID_STRING];
879
    char    szDescription[MAX_DDDEVICEID_STRING];
880
 
881
    /*
882
     * This element is the version of the DirectDraw/3D driver. It is legal to do <, > comparisons
883
     * on the whole 64 bits. Caution should be exercised if you use this element to identify problematic
884
     * drivers. It is recommended that guidDeviceIdentifier is used for this purpose.
885
     *
886
     * This version has the form:
887
     *  wProduct = HIWORD(liDriverVersion.HighPart)
888
     *  wVersion = LOWORD(liDriverVersion.HighPart)
889
     *  wSubVersion = HIWORD(liDriverVersion.LowPart)
890
     *  wBuild = LOWORD(liDriverVersion.LowPart)
891
     */
892
#ifdef _WIN32
893
    LARGE_INTEGER liDriverVersion;      /* Defined for applications and other 32 bit components */
894
#else
895
    DWORD   dwDriverVersionLowPart;     /* Defined for 16 bit driver components */
896
    DWORD   dwDriverVersionHighPart;
897
#endif
898
 
899
 
900
    /*
901
     * These elements can be used to identify particular chipsets. Use with extreme caution.
902
     *   dwVendorId     Identifies the manufacturer. May be zero if unknown.
903
     *   dwDeviceId     Identifies the type of chipset. May be zero if unknown.
904
     *   dwSubSysId     Identifies the subsystem, typically this means the particular board. May be zero if unknown.
905
     *   dwRevision     Identifies the revision level of the chipset. May be zero if unknown.
906
     */
907
    DWORD   dwVendorId;
908
    DWORD   dwDeviceId;
909
    DWORD   dwSubSysId;
910
    DWORD   dwRevision;
911
 
912
    /*
913
     * This element can be used to check changes in driver/chipset. This GUID is a unique identifier for the
914
     * driver/chipset pair. Use this element if you wish to track changes to the driver/chipset in order to
915
     * reprofile the graphics subsystem.
916
     * This element can also be used to identify particular problematic drivers.
917
     */
918
    GUID    guidDeviceIdentifier;
919
 
920
    /*
921
     * This element is used to determine the Windows Hardware Quality Lab (WHQL)
922
     * certification level for this driver/device pair.
923
     */
924
    DWORD   dwWHQLLevel;
925
 
926
} DDDEVICEIDENTIFIER2, * LPDDDEVICEIDENTIFIER2;
927
 
928
/*
929
 * Flags for the IDirectDraw4::GetDeviceIdentifier method
930
 */
931
 
932
/*
933
 * This flag causes GetDeviceIdentifier to return information about the host (typically 2D) adapter in a system equipped
934
 * with a stacked secondary 3D adapter. Such an adapter appears to the application as if it were part of the
935
 * host adapter, but is typically physcially located on a separate card. The stacked secondary's information is
936
 * returned when GetDeviceIdentifier's dwFlags field is zero, since this most accurately reflects the qualities
937
 * of the DirectDraw object involved.
938
 */
939
#define DDGDI_GETHOSTIDENTIFIER         0x00000001L
940
 
941
/*
942
 * Macros for interpretting DDEVICEIDENTIFIER2.dwWHQLLevel
943
 */
944
#define GET_WHQL_YEAR( dwWHQLLevel ) \
945
    ( (dwWHQLLevel) / 0x10000 )
946
#define GET_WHQL_MONTH( dwWHQLLevel ) \
947
    ( ( (dwWHQLLevel) / 0x100 ) & 0x00ff )
948
#define GET_WHQL_DAY( dwWHQLLevel ) \
949
    ( (dwWHQLLevel) & 0xff )
950
 
951
 
952
/*
953
 * callbacks
954
 */
955
typedef DWORD   (FAR PASCAL *LPCLIPPERCALLBACK)(LPDIRECTDRAWCLIPPER lpDDClipper, HWND hWnd, DWORD code, LPVOID lpContext );
956
#ifdef STREAMING
957
typedef DWORD   (FAR PASCAL *LPSURFACESTREAMINGCALLBACK)(DWORD);
958
#endif
959
 
960
 
961
/*
962
 * INTERACES FOLLOW:
963
 *      IDirectDraw
964
 *      IDirectDrawClipper
965
 *      IDirectDrawPalette
966
 *      IDirectDrawSurface
967
 */
968
 
969
/*
970
 * IDirectDraw
971
 */
972
#if defined( _WIN32 ) && !defined( _NO_COM )
973
#undef INTERFACE
974
#define INTERFACE IDirectDraw
975
DECLARE_INTERFACE_( IDirectDraw, IUnknown )
976
{
977
    /*** IUnknown methods ***/
978
    STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE;
979
    STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
980
    STDMETHOD_(ULONG,Release) (THIS) PURE;
981
    /*** IDirectDraw methods ***/
982
    STDMETHOD(Compact)(THIS) PURE;
983
    STDMETHOD(CreateClipper)(THIS_ DWORD, LPDIRECTDRAWCLIPPER FAR*, IUnknown FAR * ) PURE;
984
    STDMETHOD(CreatePalette)(THIS_ DWORD, LPPALETTEENTRY, LPDIRECTDRAWPALETTE FAR*, IUnknown FAR * ) PURE;
985
    STDMETHOD(CreateSurface)(THIS_  LPDDSURFACEDESC, LPDIRECTDRAWSURFACE FAR *, IUnknown FAR *) PURE;
986
    STDMETHOD(DuplicateSurface)( THIS_ LPDIRECTDRAWSURFACE, LPDIRECTDRAWSURFACE FAR * ) PURE;
987
    STDMETHOD(EnumDisplayModes)( THIS_ DWORD, LPDDSURFACEDESC, LPVOID, LPDDENUMMODESCALLBACK ) PURE;
988
    STDMETHOD(EnumSurfaces)(THIS_ DWORD, LPDDSURFACEDESC, LPVOID,LPDDENUMSURFACESCALLBACK ) PURE;
989
    STDMETHOD(FlipToGDISurface)(THIS) PURE;
990
    STDMETHOD(GetCaps)( THIS_ LPDDCAPS, LPDDCAPS) PURE;
991
    STDMETHOD(GetDisplayMode)( THIS_ LPDDSURFACEDESC) PURE;
992
    STDMETHOD(GetFourCCCodes)(THIS_  LPDWORD, LPDWORD ) PURE;
993
    STDMETHOD(GetGDISurface)(THIS_ LPDIRECTDRAWSURFACE FAR *) PURE;
994
    STDMETHOD(GetMonitorFrequency)(THIS_ LPDWORD) PURE;
995
    STDMETHOD(GetScanLine)(THIS_ LPDWORD) PURE;
996
    STDMETHOD(GetVerticalBlankStatus)(THIS_ LPBOOL ) PURE;
997
    STDMETHOD(Initialize)(THIS_ GUID FAR *) PURE;
998
    STDMETHOD(RestoreDisplayMode)(THIS) PURE;
999
    STDMETHOD(SetCooperativeLevel)(THIS_ HWND, DWORD) PURE;
1000
    STDMETHOD(SetDisplayMode)(THIS_ DWORD, DWORD,DWORD) PURE;
1001
    STDMETHOD(WaitForVerticalBlank)(THIS_ DWORD, HANDLE ) PURE;
1002
};
1003
 
1004
#if !defined(__cplusplus) || defined(CINTERFACE)
1005
#define IDirectDraw_QueryInterface(p, a, b)         (p)->lpVtbl->QueryInterface(p, a, b)
1006
#define IDirectDraw_AddRef(p)                       (p)->lpVtbl->AddRef(p)
1007
#define IDirectDraw_Release(p)                      (p)->lpVtbl->Release(p)
1008
#define IDirectDraw_Compact(p)                      (p)->lpVtbl->Compact(p)
1009
#define IDirectDraw_CreateClipper(p, a, b, c)       (p)->lpVtbl->CreateClipper(p, a, b, c)
1010
#define IDirectDraw_CreatePalette(p, a, b, c, d)    (p)->lpVtbl->CreatePalette(p, a, b, c, d)
1011
#define IDirectDraw_CreateSurface(p, a, b, c)       (p)->lpVtbl->CreateSurface(p, a, b, c)
1012
#define IDirectDraw_DuplicateSurface(p, a, b)       (p)->lpVtbl->DuplicateSurface(p, a, b)
1013
#define IDirectDraw_EnumDisplayModes(p, a, b, c, d) (p)->lpVtbl->EnumDisplayModes(p, a, b, c, d)
1014
#define IDirectDraw_EnumSurfaces(p, a, b, c, d)     (p)->lpVtbl->EnumSurfaces(p, a, b, c, d)
1015
#define IDirectDraw_FlipToGDISurface(p)             (p)->lpVtbl->FlipToGDISurface(p)
1016
#define IDirectDraw_GetCaps(p, a, b)                (p)->lpVtbl->GetCaps(p, a, b)
1017
#define IDirectDraw_GetDisplayMode(p, a)            (p)->lpVtbl->GetDisplayMode(p, a)
1018
#define IDirectDraw_GetFourCCCodes(p, a, b)         (p)->lpVtbl->GetFourCCCodes(p, a, b)
1019
#define IDirectDraw_GetGDISurface(p, a)             (p)->lpVtbl->GetGDISurface(p, a)
1020
#define IDirectDraw_GetMonitorFrequency(p, a)       (p)->lpVtbl->GetMonitorFrequency(p, a)
1021
#define IDirectDraw_GetScanLine(p, a)               (p)->lpVtbl->GetScanLine(p, a)
1022
#define IDirectDraw_GetVerticalBlankStatus(p, a)    (p)->lpVtbl->GetVerticalBlankStatus(p, a)
1023
#define IDirectDraw_Initialize(p, a)                (p)->lpVtbl->Initialize(p, a)
1024
#define IDirectDraw_RestoreDisplayMode(p)           (p)->lpVtbl->RestoreDisplayMode(p)
1025
#define IDirectDraw_SetCooperativeLevel(p, a, b)    (p)->lpVtbl->SetCooperativeLevel(p, a, b)
1026
#define IDirectDraw_SetDisplayMode(p, a, b, c)      (p)->lpVtbl->SetDisplayMode(p, a, b, c)
1027
#define IDirectDraw_WaitForVerticalBlank(p, a, b)   (p)->lpVtbl->WaitForVerticalBlank(p, a, b)
1028
#else
1029
#define IDirectDraw_QueryInterface(p, a, b)         (p)->QueryInterface(a, b)
1030
#define IDirectDraw_AddRef(p)                       (p)->AddRef()
1031
#define IDirectDraw_Release(p)                      (p)->Release()
1032
#define IDirectDraw_Compact(p)                      (p)->Compact()
1033
#define IDirectDraw_CreateClipper(p, a, b, c)       (p)->CreateClipper(a, b, c)
1034
#define IDirectDraw_CreatePalette(p, a, b, c, d)    (p)->CreatePalette(a, b, c, d)
1035
#define IDirectDraw_CreateSurface(p, a, b, c)       (p)->CreateSurface(a, b, c)
1036
#define IDirectDraw_DuplicateSurface(p, a, b)       (p)->DuplicateSurface(a, b)
1037
#define IDirectDraw_EnumDisplayModes(p, a, b, c, d) (p)->EnumDisplayModes(a, b, c, d)
1038
#define IDirectDraw_EnumSurfaces(p, a, b, c, d)     (p)->EnumSurfaces(a, b, c, d)
1039
#define IDirectDraw_FlipToGDISurface(p)             (p)->FlipToGDISurface()
1040
#define IDirectDraw_GetCaps(p, a, b)                (p)->GetCaps(a, b)
1041
#define IDirectDraw_GetDisplayMode(p, a)            (p)->GetDisplayMode(a)
1042
#define IDirectDraw_GetFourCCCodes(p, a, b)         (p)->GetFourCCCodes(a, b)
1043
#define IDirectDraw_GetGDISurface(p, a)             (p)->GetGDISurface(a)
1044
#define IDirectDraw_GetMonitorFrequency(p, a)       (p)->GetMonitorFrequency(a)
1045
#define IDirectDraw_GetScanLine(p, a)               (p)->GetScanLine(a)
1046
#define IDirectDraw_GetVerticalBlankStatus(p, a)    (p)->GetVerticalBlankStatus(a)
1047
#define IDirectDraw_Initialize(p, a)                (p)->Initialize(a)
1048
#define IDirectDraw_RestoreDisplayMode(p)           (p)->RestoreDisplayMode()
1049
#define IDirectDraw_SetCooperativeLevel(p, a, b)    (p)->SetCooperativeLevel(a, b)
1050
#define IDirectDraw_SetDisplayMode(p, a, b, c)      (p)->SetDisplayMode(a, b, c)
1051
#define IDirectDraw_WaitForVerticalBlank(p, a, b)   (p)->WaitForVerticalBlank(a, b)
1052
#endif
1053
 
1054
#endif
1055
 
1056
#if defined( _WIN32 ) && !defined( _NO_COM )
1057
#undef INTERFACE
1058
#define INTERFACE IDirectDraw2
1059
DECLARE_INTERFACE_( IDirectDraw2, IUnknown )
1060
{
1061
    /*** IUnknown methods ***/
1062
    STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE;
1063
    STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
1064
    STDMETHOD_(ULONG,Release) (THIS) PURE;
1065
    /*** IDirectDraw methods ***/
1066
    STDMETHOD(Compact)(THIS) PURE;
1067
    STDMETHOD(CreateClipper)(THIS_ DWORD, LPDIRECTDRAWCLIPPER FAR*, IUnknown FAR * ) PURE;
1068
    STDMETHOD(CreatePalette)(THIS_ DWORD, LPPALETTEENTRY, LPDIRECTDRAWPALETTE FAR*, IUnknown FAR * ) PURE;
1069
    STDMETHOD(CreateSurface)(THIS_  LPDDSURFACEDESC, LPDIRECTDRAWSURFACE FAR *, IUnknown FAR *) PURE;
1070
    STDMETHOD(DuplicateSurface)( THIS_ LPDIRECTDRAWSURFACE, LPDIRECTDRAWSURFACE FAR * ) PURE;
1071
    STDMETHOD(EnumDisplayModes)( THIS_ DWORD, LPDDSURFACEDESC, LPVOID, LPDDENUMMODESCALLBACK ) PURE;
1072
    STDMETHOD(EnumSurfaces)(THIS_ DWORD, LPDDSURFACEDESC, LPVOID,LPDDENUMSURFACESCALLBACK ) PURE;
1073
    STDMETHOD(FlipToGDISurface)(THIS) PURE;
1074
    STDMETHOD(GetCaps)( THIS_ LPDDCAPS, LPDDCAPS) PURE;
1075
    STDMETHOD(GetDisplayMode)( THIS_ LPDDSURFACEDESC) PURE;
1076
    STDMETHOD(GetFourCCCodes)(THIS_  LPDWORD, LPDWORD ) PURE;
1077
    STDMETHOD(GetGDISurface)(THIS_ LPDIRECTDRAWSURFACE FAR *) PURE;
1078
    STDMETHOD(GetMonitorFrequency)(THIS_ LPDWORD) PURE;
1079
    STDMETHOD(GetScanLine)(THIS_ LPDWORD) PURE;
1080
    STDMETHOD(GetVerticalBlankStatus)(THIS_ LPBOOL ) PURE;
1081
    STDMETHOD(Initialize)(THIS_ GUID FAR *) PURE;
1082
    STDMETHOD(RestoreDisplayMode)(THIS) PURE;
1083
    STDMETHOD(SetCooperativeLevel)(THIS_ HWND, DWORD) PURE;
1084
    STDMETHOD(SetDisplayMode)(THIS_ DWORD, DWORD,DWORD, DWORD, DWORD) PURE;
1085
    STDMETHOD(WaitForVerticalBlank)(THIS_ DWORD, HANDLE ) PURE;
1086
    /*** Added in the v2 interface ***/
1087
    STDMETHOD(GetAvailableVidMem)(THIS_ LPDDSCAPS, LPDWORD, LPDWORD) PURE;
1088
};
1089
#if !defined(__cplusplus) || defined(CINTERFACE)
1090
#define IDirectDraw2_QueryInterface(p, a, b)         (p)->lpVtbl->QueryInterface(p, a, b)
1091
#define IDirectDraw2_AddRef(p)                       (p)->lpVtbl->AddRef(p)
1092
#define IDirectDraw2_Release(p)                      (p)->lpVtbl->Release(p)
1093
#define IDirectDraw2_Compact(p)                      (p)->lpVtbl->Compact(p)
1094
#define IDirectDraw2_CreateClipper(p, a, b, c)       (p)->lpVtbl->CreateClipper(p, a, b, c)
1095
#define IDirectDraw2_CreatePalette(p, a, b, c, d)    (p)->lpVtbl->CreatePalette(p, a, b, c, d)
1096
#define IDirectDraw2_CreateSurface(p, a, b, c)       (p)->lpVtbl->CreateSurface(p, a, b, c)
1097
#define IDirectDraw2_DuplicateSurface(p, a, b)       (p)->lpVtbl->DuplicateSurface(p, a, b)
1098
#define IDirectDraw2_EnumDisplayModes(p, a, b, c, d) (p)->lpVtbl->EnumDisplayModes(p, a, b, c, d)
1099
#define IDirectDraw2_EnumSurfaces(p, a, b, c, d)     (p)->lpVtbl->EnumSurfaces(p, a, b, c, d)
1100
#define IDirectDraw2_FlipToGDISurface(p)             (p)->lpVtbl->FlipToGDISurface(p)
1101
#define IDirectDraw2_GetCaps(p, a, b)                (p)->lpVtbl->GetCaps(p, a, b)
1102
#define IDirectDraw2_GetDisplayMode(p, a)            (p)->lpVtbl->GetDisplayMode(p, a)
1103
#define IDirectDraw2_GetFourCCCodes(p, a, b)         (p)->lpVtbl->GetFourCCCodes(p, a, b)
1104
#define IDirectDraw2_GetGDISurface(p, a)             (p)->lpVtbl->GetGDISurface(p, a)
1105
#define IDirectDraw2_GetMonitorFrequency(p, a)       (p)->lpVtbl->GetMonitorFrequency(p, a)
1106
#define IDirectDraw2_GetScanLine(p, a)               (p)->lpVtbl->GetScanLine(p, a)
1107
#define IDirectDraw2_GetVerticalBlankStatus(p, a)    (p)->lpVtbl->GetVerticalBlankStatus(p, a)
1108
#define IDirectDraw2_Initialize(p, a)                (p)->lpVtbl->Initialize(p, a)
1109
#define IDirectDraw2_RestoreDisplayMode(p)           (p)->lpVtbl->RestoreDisplayMode(p)
1110
#define IDirectDraw2_SetCooperativeLevel(p, a, b)    (p)->lpVtbl->SetCooperativeLevel(p, a, b)
1111
#define IDirectDraw2_SetDisplayMode(p, a, b, c, d, e) (p)->lpVtbl->SetDisplayMode(p, a, b, c, d, e)
1112
#define IDirectDraw2_WaitForVerticalBlank(p, a, b)   (p)->lpVtbl->WaitForVerticalBlank(p, a, b)
1113
#define IDirectDraw2_GetAvailableVidMem(p, a, b, c)  (p)->lpVtbl->GetAvailableVidMem(p, a, b, c)
1114
#else
1115
#define IDirectDraw2_QueryInterface(p, a, b)         (p)->QueryInterface(a, b)
1116
#define IDirectDraw2_AddRef(p)                       (p)->AddRef()
1117
#define IDirectDraw2_Release(p)                      (p)->Release()
1118
#define IDirectDraw2_Compact(p)                      (p)->Compact()
1119
#define IDirectDraw2_CreateClipper(p, a, b, c)       (p)->CreateClipper(a, b, c)
1120
#define IDirectDraw2_CreatePalette(p, a, b, c, d)    (p)->CreatePalette(a, b, c, d)
1121
#define IDirectDraw2_CreateSurface(p, a, b, c)       (p)->CreateSurface(a, b, c)
1122
#define IDirectDraw2_DuplicateSurface(p, a, b)       (p)->DuplicateSurface(a, b)
1123
#define IDirectDraw2_EnumDisplayModes(p, a, b, c, d) (p)->EnumDisplayModes(a, b, c, d)
1124
#define IDirectDraw2_EnumSurfaces(p, a, b, c, d)     (p)->EnumSurfaces(a, b, c, d)
1125
#define IDirectDraw2_FlipToGDISurface(p)             (p)->FlipToGDISurface()
1126
#define IDirectDraw2_GetCaps(p, a, b)                (p)->GetCaps(a, b)
1127
#define IDirectDraw2_GetDisplayMode(p, a)            (p)->GetDisplayMode(a)
1128
#define IDirectDraw2_GetFourCCCodes(p, a, b)         (p)->GetFourCCCodes(a, b)
1129
#define IDirectDraw2_GetGDISurface(p, a)             (p)->GetGDISurface(a)
1130
#define IDirectDraw2_GetMonitorFrequency(p, a)       (p)->GetMonitorFrequency(a)
1131
#define IDirectDraw2_GetScanLine(p, a)               (p)->GetScanLine(a)
1132
#define IDirectDraw2_GetVerticalBlankStatus(p, a)    (p)->GetVerticalBlankStatus(a)
1133
#define IDirectDraw2_Initialize(p, a)                (p)->Initialize(a)
1134
#define IDirectDraw2_RestoreDisplayMode(p)           (p)->RestoreDisplayMode()
1135
#define IDirectDraw2_SetCooperativeLevel(p, a, b)    (p)->SetCooperativeLevel(a, b)
1136
#define IDirectDraw2_SetDisplayMode(p, a, b, c, d, e) (p)->SetDisplayMode(a, b, c, d, e)
1137
#define IDirectDraw2_WaitForVerticalBlank(p, a, b)   (p)->WaitForVerticalBlank(a, b)
1138
#define IDirectDraw2_GetAvailableVidMem(p, a, b, c)  (p)->GetAvailableVidMem(a, b, c)
1139
#endif
1140
 
1141
#endif
1142
 
1143
#if defined( _WIN32 ) && !defined( _NO_COM )
1144
#undef INTERFACE
1145
#define INTERFACE IDirectDraw4
1146
DECLARE_INTERFACE_( IDirectDraw4, IUnknown )
1147
{
1148
    /*** IUnknown methods ***/
1149
    STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE;
1150
    STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
1151
    STDMETHOD_(ULONG,Release) (THIS) PURE;
1152
    /*** IDirectDraw methods ***/
1153
    STDMETHOD(Compact)(THIS) PURE;
1154
    STDMETHOD(CreateClipper)(THIS_ DWORD, LPDIRECTDRAWCLIPPER FAR*, IUnknown FAR * ) PURE;
1155
    STDMETHOD(CreatePalette)(THIS_ DWORD, LPPALETTEENTRY, LPDIRECTDRAWPALETTE FAR*, IUnknown FAR * ) PURE;
1156
    STDMETHOD(CreateSurface)(THIS_  LPDDSURFACEDESC2, LPDIRECTDRAWSURFACE4 FAR *, IUnknown FAR *) PURE;
1157
    STDMETHOD(DuplicateSurface)( THIS_ LPDIRECTDRAWSURFACE4, LPDIRECTDRAWSURFACE4 FAR * ) PURE;
1158
    STDMETHOD(EnumDisplayModes)( THIS_ DWORD, LPDDSURFACEDESC2, LPVOID, LPDDENUMMODESCALLBACK2 ) PURE;
1159
    STDMETHOD(EnumSurfaces)(THIS_ DWORD, LPDDSURFACEDESC2, LPVOID,LPDDENUMSURFACESCALLBACK2 ) PURE;
1160
    STDMETHOD(FlipToGDISurface)(THIS) PURE;
1161
    STDMETHOD(GetCaps)( THIS_ LPDDCAPS, LPDDCAPS) PURE;
1162
    STDMETHOD(GetDisplayMode)( THIS_ LPDDSURFACEDESC2) PURE;
1163
    STDMETHOD(GetFourCCCodes)(THIS_  LPDWORD, LPDWORD ) PURE;
1164
    STDMETHOD(GetGDISurface)(THIS_ LPDIRECTDRAWSURFACE4 FAR *) PURE;
1165
    STDMETHOD(GetMonitorFrequency)(THIS_ LPDWORD) PURE;
1166
    STDMETHOD(GetScanLine)(THIS_ LPDWORD) PURE;
1167
    STDMETHOD(GetVerticalBlankStatus)(THIS_ LPBOOL ) PURE;
1168
    STDMETHOD(Initialize)(THIS_ GUID FAR *) PURE;
1169
    STDMETHOD(RestoreDisplayMode)(THIS) PURE;
1170
    STDMETHOD(SetCooperativeLevel)(THIS_ HWND, DWORD) PURE;
1171
    STDMETHOD(SetDisplayMode)(THIS_ DWORD, DWORD,DWORD, DWORD, DWORD) PURE;
1172
    STDMETHOD(WaitForVerticalBlank)(THIS_ DWORD, HANDLE ) PURE;
1173
    /*** Added in the v2 interface ***/
1174
    STDMETHOD(GetAvailableVidMem)(THIS_ LPDDSCAPS2, LPDWORD, LPDWORD) PURE;
1175
    /*** Added in the V4 Interface ***/
1176
    STDMETHOD(GetSurfaceFromDC) (THIS_ HDC, LPDIRECTDRAWSURFACE4 *) PURE;
1177
    STDMETHOD(RestoreAllSurfaces)(THIS) PURE;
1178
    STDMETHOD(TestCooperativeLevel)(THIS) PURE;
1179
    STDMETHOD(GetDeviceIdentifier)(THIS_ LPDDDEVICEIDENTIFIER, DWORD ) PURE;
1180
};
1181
#if !defined(__cplusplus) || defined(CINTERFACE)
1182
#define IDirectDraw4_QueryInterface(p, a, b)         (p)->lpVtbl->QueryInterface(p, a, b)
1183
#define IDirectDraw4_AddRef(p)                       (p)->lpVtbl->AddRef(p)
1184
#define IDirectDraw4_Release(p)                      (p)->lpVtbl->Release(p)
1185
#define IDirectDraw4_Compact(p)                      (p)->lpVtbl->Compact(p)
1186
#define IDirectDraw4_CreateClipper(p, a, b, c)       (p)->lpVtbl->CreateClipper(p, a, b, c)
1187
#define IDirectDraw4_CreatePalette(p, a, b, c, d)    (p)->lpVtbl->CreatePalette(p, a, b, c, d)
1188
#define IDirectDraw4_CreateSurface(p, a, b, c)       (p)->lpVtbl->CreateSurface(p, a, b, c)
1189
#define IDirectDraw4_DuplicateSurface(p, a, b)       (p)->lpVtbl->DuplicateSurface(p, a, b)
1190
#define IDirectDraw4_EnumDisplayModes(p, a, b, c, d) (p)->lpVtbl->EnumDisplayModes(p, a, b, c, d)
1191
#define IDirectDraw4_EnumSurfaces(p, a, b, c, d)     (p)->lpVtbl->EnumSurfaces(p, a, b, c, d)
1192
#define IDirectDraw4_FlipToGDISurface(p)             (p)->lpVtbl->FlipToGDISurface(p)
1193
#define IDirectDraw4_GetCaps(p, a, b)                (p)->lpVtbl->GetCaps(p, a, b)
1194
#define IDirectDraw4_GetDisplayMode(p, a)            (p)->lpVtbl->GetDisplayMode(p, a)
1195
#define IDirectDraw4_GetFourCCCodes(p, a, b)         (p)->lpVtbl->GetFourCCCodes(p, a, b)
1196
#define IDirectDraw4_GetGDISurface(p, a)             (p)->lpVtbl->GetGDISurface(p, a)
1197
#define IDirectDraw4_GetMonitorFrequency(p, a)       (p)->lpVtbl->GetMonitorFrequency(p, a)
1198
#define IDirectDraw4_GetScanLine(p, a)               (p)->lpVtbl->GetScanLine(p, a)
1199
#define IDirectDraw4_GetVerticalBlankStatus(p, a)    (p)->lpVtbl->GetVerticalBlankStatus(p, a)
1200
#define IDirectDraw4_Initialize(p, a)                (p)->lpVtbl->Initialize(p, a)
1201
#define IDirectDraw4_RestoreDisplayMode(p)           (p)->lpVtbl->RestoreDisplayMode(p)
1202
#define IDirectDraw4_SetCooperativeLevel(p, a, b)    (p)->lpVtbl->SetCooperativeLevel(p, a, b)
1203
#define IDirectDraw4_SetDisplayMode(p, a, b, c, d, e) (p)->lpVtbl->SetDisplayMode(p, a, b, c, d, e)
1204
#define IDirectDraw4_WaitForVerticalBlank(p, a, b)   (p)->lpVtbl->WaitForVerticalBlank(p, a, b)
1205
#define IDirectDraw4_GetAvailableVidMem(p, a, b, c)  (p)->lpVtbl->GetAvailableVidMem(p, a, b, c)
1206
#define IDirectDraw4_GetSurfaceFromDC(p, a, b)       (p)->lpVtbl->GetSurfaceFromDC(p, a, b)
1207
#define IDirectDraw4_RestoreAllSurfaces(p)           (p)->lpVtbl->RestoreAllSurfaces(p)
1208
#define IDirectDraw4_TestCooperativeLevel(p)         (p)->lpVtbl->TestCooperativeLevel(p)
1209
#define IDirectDraw4_GetDeviceIdentifier(p,a,b)      (p)->lpVtbl->GetDeviceIdentifier(p,a,b)
1210
#else
1211
#define IDirectDraw4_QueryInterface(p, a, b)         (p)->QueryInterface(a, b)
1212
#define IDirectDraw4_AddRef(p)                       (p)->AddRef()
1213
#define IDirectDraw4_Release(p)                      (p)->Release()
1214
#define IDirectDraw4_Compact(p)                      (p)->Compact()
1215
#define IDirectDraw4_CreateClipper(p, a, b, c)       (p)->CreateClipper(a, b, c)
1216
#define IDirectDraw4_CreatePalette(p, a, b, c, d)    (p)->CreatePalette(a, b, c, d)
1217
#define IDirectDraw4_CreateSurface(p, a, b, c)       (p)->CreateSurface(a, b, c)
1218
#define IDirectDraw4_DuplicateSurface(p, a, b)       (p)->DuplicateSurface(a, b)
1219
#define IDirectDraw4_EnumDisplayModes(p, a, b, c, d) (p)->EnumDisplayModes(a, b, c, d)
1220
#define IDirectDraw4_EnumSurfaces(p, a, b, c, d)     (p)->EnumSurfaces(a, b, c, d)
1221
#define IDirectDraw4_FlipToGDISurface(p)             (p)->FlipToGDISurface()
1222
#define IDirectDraw4_GetCaps(p, a, b)                (p)->GetCaps(a, b)
1223
#define IDirectDraw4_GetDisplayMode(p, a)            (p)->GetDisplayMode(a)
1224
#define IDirectDraw4_GetFourCCCodes(p, a, b)         (p)->GetFourCCCodes(a, b)
1225
#define IDirectDraw4_GetGDISurface(p, a)             (p)->GetGDISurface(a)
1226
#define IDirectDraw4_GetMonitorFrequency(p, a)       (p)->GetMonitorFrequency(a)
1227
#define IDirectDraw4_GetScanLine(p, a)               (p)->GetScanLine(a)
1228
#define IDirectDraw4_GetVerticalBlankStatus(p, a)    (p)->GetVerticalBlankStatus(a)
1229
#define IDirectDraw4_Initialize(p, a)                (p)->Initialize(a)
1230
#define IDirectDraw4_RestoreDisplayMode(p)           (p)->RestoreDisplayMode()
1231
#define IDirectDraw4_SetCooperativeLevel(p, a, b)    (p)->SetCooperativeLevel(a, b)
1232
#define IDirectDraw4_SetDisplayMode(p, a, b, c, d, e) (p)->SetDisplayMode(a, b, c, d, e)
1233
#define IDirectDraw4_WaitForVerticalBlank(p, a, b)   (p)->WaitForVerticalBlank(a, b)
1234
#define IDirectDraw4_GetAvailableVidMem(p, a, b, c)  (p)->GetAvailableVidMem(a, b, c)
1235
#define IDirectDraw4_GetSurfaceFromDC(p, a, b)       (p)->GetSurfaceFromDC(a, b)
1236
#define IDirectDraw4_RestoreAllSurfaces(p)           (p)->RestoreAllSurfaces()
1237
#define IDirectDraw4_TestCooperativeLevel(p)         (p)->TestCooperativeLevel()
1238
#define IDirectDraw4_GetDeviceIdentifier(p,a,b)      (p)->GetDeviceIdentifier(a,b)
1239
#endif
1240
 
1241
#endif
1242
 
1243
#if defined( _WIN32 ) && !defined( _NO_COM )
1244
#undef INTERFACE
1245
#define INTERFACE IDirectDraw7
1246
DECLARE_INTERFACE_( IDirectDraw7, IUnknown )
1247
{
1248
    /*** IUnknown methods ***/
1249
    STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE;
1250
    STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
1251
    STDMETHOD_(ULONG,Release) (THIS) PURE;
1252
    /*** IDirectDraw methods ***/
1253
    STDMETHOD(Compact)(THIS) PURE;
1254
    STDMETHOD(CreateClipper)(THIS_ DWORD, LPDIRECTDRAWCLIPPER FAR*, IUnknown FAR * ) PURE;
1255
    STDMETHOD(CreatePalette)(THIS_ DWORD, LPPALETTEENTRY, LPDIRECTDRAWPALETTE FAR*, IUnknown FAR * ) PURE;
1256
    STDMETHOD(CreateSurface)(THIS_  LPDDSURFACEDESC2, LPDIRECTDRAWSURFACE7 FAR *, IUnknown FAR *) PURE;
1257
    STDMETHOD(DuplicateSurface)( THIS_ LPDIRECTDRAWSURFACE7, LPDIRECTDRAWSURFACE7 FAR * ) PURE;
1258
    STDMETHOD(EnumDisplayModes)( THIS_ DWORD, LPDDSURFACEDESC2, LPVOID, LPDDENUMMODESCALLBACK2 ) PURE;
1259
    STDMETHOD(EnumSurfaces)(THIS_ DWORD, LPDDSURFACEDESC2, LPVOID,LPDDENUMSURFACESCALLBACK7 ) PURE;
1260
    STDMETHOD(FlipToGDISurface)(THIS) PURE;
1261
    STDMETHOD(GetCaps)( THIS_ LPDDCAPS, LPDDCAPS) PURE;
1262
    STDMETHOD(GetDisplayMode)( THIS_ LPDDSURFACEDESC2) PURE;
1263
    STDMETHOD(GetFourCCCodes)(THIS_  LPDWORD, LPDWORD ) PURE;
1264
    STDMETHOD(GetGDISurface)(THIS_ LPDIRECTDRAWSURFACE7 FAR *) PURE;
1265
    STDMETHOD(GetMonitorFrequency)(THIS_ LPDWORD) PURE;
1266
    STDMETHOD(GetScanLine)(THIS_ LPDWORD) PURE;
1267
    STDMETHOD(GetVerticalBlankStatus)(THIS_ LPBOOL ) PURE;
1268
    STDMETHOD(Initialize)(THIS_ GUID FAR *) PURE;
1269
    STDMETHOD(RestoreDisplayMode)(THIS) PURE;
1270
    STDMETHOD(SetCooperativeLevel)(THIS_ HWND, DWORD) PURE;
1271
    STDMETHOD(SetDisplayMode)(THIS_ DWORD, DWORD,DWORD, DWORD, DWORD) PURE;
1272
    STDMETHOD(WaitForVerticalBlank)(THIS_ DWORD, HANDLE ) PURE;
1273
    /*** Added in the v2 interface ***/
1274
    STDMETHOD(GetAvailableVidMem)(THIS_ LPDDSCAPS2, LPDWORD, LPDWORD) PURE;
1275
    /*** Added in the V4 Interface ***/
1276
    STDMETHOD(GetSurfaceFromDC) (THIS_ HDC, LPDIRECTDRAWSURFACE7 *) PURE;
1277
    STDMETHOD(RestoreAllSurfaces)(THIS) PURE;
1278
    STDMETHOD(TestCooperativeLevel)(THIS) PURE;
1279
    STDMETHOD(GetDeviceIdentifier)(THIS_ LPDDDEVICEIDENTIFIER2, DWORD ) PURE;
1280
    STDMETHOD(StartModeTest)(THIS_ LPSIZE, DWORD, DWORD ) PURE;
1281
    STDMETHOD(EvaluateMode)(THIS_ DWORD, DWORD * ) PURE;
1282
};
1283
#if !defined(__cplusplus) || defined(CINTERFACE)
1284
#define IDirectDraw7_QueryInterface(p, a, b)         (p)->lpVtbl->QueryInterface(p, a, b)
1285
#define IDirectDraw7_AddRef(p)                       (p)->lpVtbl->AddRef(p)
1286
#define IDirectDraw7_Release(p)                      (p)->lpVtbl->Release(p)
1287
#define IDirectDraw7_Compact(p)                      (p)->lpVtbl->Compact(p)
1288
#define IDirectDraw7_CreateClipper(p, a, b, c)       (p)->lpVtbl->CreateClipper(p, a, b, c)
1289
#define IDirectDraw7_CreatePalette(p, a, b, c, d)    (p)->lpVtbl->CreatePalette(p, a, b, c, d)
1290
#define IDirectDraw7_CreateSurface(p, a, b, c)       (p)->lpVtbl->CreateSurface(p, a, b, c)
1291
#define IDirectDraw7_DuplicateSurface(p, a, b)       (p)->lpVtbl->DuplicateSurface(p, a, b)
1292
#define IDirectDraw7_EnumDisplayModes(p, a, b, c, d) (p)->lpVtbl->EnumDisplayModes(p, a, b, c, d)
1293
#define IDirectDraw7_EnumSurfaces(p, a, b, c, d)     (p)->lpVtbl->EnumSurfaces(p, a, b, c, d)
1294
#define IDirectDraw7_FlipToGDISurface(p)             (p)->lpVtbl->FlipToGDISurface(p)
1295
#define IDirectDraw7_GetCaps(p, a, b)                (p)->lpVtbl->GetCaps(p, a, b)
1296
#define IDirectDraw7_GetDisplayMode(p, a)            (p)->lpVtbl->GetDisplayMode(p, a)
1297
#define IDirectDraw7_GetFourCCCodes(p, a, b)         (p)->lpVtbl->GetFourCCCodes(p, a, b)
1298
#define IDirectDraw7_GetGDISurface(p, a)             (p)->lpVtbl->GetGDISurface(p, a)
1299
#define IDirectDraw7_GetMonitorFrequency(p, a)       (p)->lpVtbl->GetMonitorFrequency(p, a)
1300
#define IDirectDraw7_GetScanLine(p, a)               (p)->lpVtbl->GetScanLine(p, a)
1301
#define IDirectDraw7_GetVerticalBlankStatus(p, a)    (p)->lpVtbl->GetVerticalBlankStatus(p, a)
1302
#define IDirectDraw7_Initialize(p, a)                (p)->lpVtbl->Initialize(p, a)
1303
#define IDirectDraw7_RestoreDisplayMode(p)           (p)->lpVtbl->RestoreDisplayMode(p)
1304
#define IDirectDraw7_SetCooperativeLevel(p, a, b)    (p)->lpVtbl->SetCooperativeLevel(p, a, b)
1305
#define IDirectDraw7_SetDisplayMode(p, a, b, c, d, e) (p)->lpVtbl->SetDisplayMode(p, a, b, c, d, e)
1306
#define IDirectDraw7_WaitForVerticalBlank(p, a, b)   (p)->lpVtbl->WaitForVerticalBlank(p, a, b)
1307
#define IDirectDraw7_GetAvailableVidMem(p, a, b, c)  (p)->lpVtbl->GetAvailableVidMem(p, a, b, c)
1308
#define IDirectDraw7_GetSurfaceFromDC(p, a, b)       (p)->lpVtbl->GetSurfaceFromDC(p, a, b)
1309
#define IDirectDraw7_RestoreAllSurfaces(p)           (p)->lpVtbl->RestoreAllSurfaces(p)
1310
#define IDirectDraw7_TestCooperativeLevel(p)         (p)->lpVtbl->TestCooperativeLevel(p)
1311
#define IDirectDraw7_GetDeviceIdentifier(p,a,b)      (p)->lpVtbl->GetDeviceIdentifier(p,a,b)
1312
#define IDirectDraw7_StartModeTest(p,a,b,c)        (p)->lpVtbl->StartModeTest(p,a,b,c)
1313
#define IDirectDraw7_EvaluateMode(p,a,b)           (p)->lpVtbl->EvaluateMode(p,a,b)
1314
#else
1315
#define IDirectDraw7_QueryInterface(p, a, b)         (p)->QueryInterface(a, b)
1316
#define IDirectDraw7_AddRef(p)                       (p)->AddRef()
1317
#define IDirectDraw7_Release(p)                      (p)->Release()
1318
#define IDirectDraw7_Compact(p)                      (p)->Compact()
1319
#define IDirectDraw7_CreateClipper(p, a, b, c)       (p)->CreateClipper(a, b, c)
1320
#define IDirectDraw7_CreatePalette(p, a, b, c, d)    (p)->CreatePalette(a, b, c, d)
1321
#define IDirectDraw7_CreateSurface(p, a, b, c)       (p)->CreateSurface(a, b, c)
1322
#define IDirectDraw7_DuplicateSurface(p, a, b)       (p)->DuplicateSurface(a, b)
1323
#define IDirectDraw7_EnumDisplayModes(p, a, b, c, d) (p)->EnumDisplayModes(a, b, c, d)
1324
#define IDirectDraw7_EnumSurfaces(p, a, b, c, d)     (p)->EnumSurfaces(a, b, c, d)
1325
#define IDirectDraw7_FlipToGDISurface(p)             (p)->FlipToGDISurface()
1326
#define IDirectDraw7_GetCaps(p, a, b)                (p)->GetCaps(a, b)
1327
#define IDirectDraw7_GetDisplayMode(p, a)            (p)->GetDisplayMode(a)
1328
#define IDirectDraw7_GetFourCCCodes(p, a, b)         (p)->GetFourCCCodes(a, b)
1329
#define IDirectDraw7_GetGDISurface(p, a)             (p)->GetGDISurface(a)
1330
#define IDirectDraw7_GetMonitorFrequency(p, a)       (p)->GetMonitorFrequency(a)
1331
#define IDirectDraw7_GetScanLine(p, a)               (p)->GetScanLine(a)
1332
#define IDirectDraw7_GetVerticalBlankStatus(p, a)    (p)->GetVerticalBlankStatus(a)
1333
#define IDirectDraw7_Initialize(p, a)                (p)->Initialize(a)
1334
#define IDirectDraw7_RestoreDisplayMode(p)           (p)->RestoreDisplayMode()
1335
#define IDirectDraw7_SetCooperativeLevel(p, a, b)    (p)->SetCooperativeLevel(a, b)
1336
#define IDirectDraw7_SetDisplayMode(p, a, b, c, d, e) (p)->SetDisplayMode(a, b, c, d, e)
1337
#define IDirectDraw7_WaitForVerticalBlank(p, a, b)   (p)->WaitForVerticalBlank(a, b)
1338
#define IDirectDraw7_GetAvailableVidMem(p, a, b, c)  (p)->GetAvailableVidMem(a, b, c)
1339
#define IDirectDraw7_GetSurfaceFromDC(p, a, b)       (p)->GetSurfaceFromDC(a, b)
1340
#define IDirectDraw7_RestoreAllSurfaces(p)           (p)->RestoreAllSurfaces()
1341
#define IDirectDraw7_TestCooperativeLevel(p)         (p)->TestCooperativeLevel()
1342
#define IDirectDraw7_GetDeviceIdentifier(p,a,b)      (p)->GetDeviceIdentifier(a,b)
1343
#define IDirectDraw7_StartModeTest(p,a,b,c)        (p)->lpVtbl->StartModeTest(a,b,c)
1344
#define IDirectDraw7_EvaluateMode(p,a,b)           (p)->lpVtbl->EvaluateMode(a,b)
1345
#endif
1346
 
1347
#endif
1348
 
1349
 
1350
/*
1351
 * IDirectDrawPalette
1352
 */
1353
#if defined( _WIN32 ) && !defined( _NO_COM )
1354
#undef INTERFACE
1355
#define INTERFACE IDirectDrawPalette
1356
DECLARE_INTERFACE_( IDirectDrawPalette, IUnknown )
1357
{
1358
    /*** IUnknown methods ***/
1359
    STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE;
1360
    STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
1361
    STDMETHOD_(ULONG,Release) (THIS) PURE;
1362
    /*** IDirectDrawPalette methods ***/
1363
    STDMETHOD(GetCaps)(THIS_ LPDWORD) PURE;
1364
    STDMETHOD(GetEntries)(THIS_ DWORD,DWORD,DWORD,LPPALETTEENTRY) PURE;
1365
    STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW, DWORD, LPPALETTEENTRY) PURE;
1366
    STDMETHOD(SetEntries)(THIS_ DWORD,DWORD,DWORD,LPPALETTEENTRY) PURE;
1367
};
1368
 
1369
#if !defined(__cplusplus) || defined(CINTERFACE)
1370
#define IDirectDrawPalette_QueryInterface(p, a, b)      (p)->lpVtbl->QueryInterface(p, a, b)
1371
#define IDirectDrawPalette_AddRef(p)                    (p)->lpVtbl->AddRef(p)
1372
#define IDirectDrawPalette_Release(p)                   (p)->lpVtbl->Release(p)
1373
#define IDirectDrawPalette_GetCaps(p, a)                (p)->lpVtbl->GetCaps(p, a)
1374
#define IDirectDrawPalette_GetEntries(p, a, b, c, d)    (p)->lpVtbl->GetEntries(p, a, b, c, d)
1375
#define IDirectDrawPalette_Initialize(p, a, b, c)       (p)->lpVtbl->Initialize(p, a, b, c)
1376
#define IDirectDrawPalette_SetEntries(p, a, b, c, d)    (p)->lpVtbl->SetEntries(p, a, b, c, d)
1377
#else
1378
#define IDirectDrawPalette_QueryInterface(p, a, b)      (p)->QueryInterface(a, b)
1379
#define IDirectDrawPalette_AddRef(p)                    (p)->AddRef()
1380
#define IDirectDrawPalette_Release(p)                   (p)->Release()
1381
#define IDirectDrawPalette_GetCaps(p, a)                (p)->GetCaps(a)
1382
#define IDirectDrawPalette_GetEntries(p, a, b, c, d)    (p)->GetEntries(a, b, c, d)
1383
#define IDirectDrawPalette_Initialize(p, a, b, c)       (p)->Initialize(a, b, c)
1384
#define IDirectDrawPalette_SetEntries(p, a, b, c, d)    (p)->SetEntries(a, b, c, d)
1385
#endif
1386
 
1387
#endif
1388
 
1389
 
1390
/*
1391
 * IDirectDrawClipper
1392
 */
1393
#if defined( _WIN32 ) && !defined( _NO_COM )
1394
#undef INTERFACE
1395
#define INTERFACE IDirectDrawClipper
1396
DECLARE_INTERFACE_( IDirectDrawClipper, IUnknown )
1397
{
1398
    /*** IUnknown methods ***/
1399
    STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE;
1400
    STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
1401
    STDMETHOD_(ULONG,Release) (THIS) PURE;
1402
    /*** IDirectDrawClipper methods ***/
1403
    STDMETHOD(GetClipList)(THIS_ LPRECT, LPRGNDATA, LPDWORD) PURE;
1404
    STDMETHOD(GetHWnd)(THIS_ HWND FAR *) PURE;
1405
    STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW, DWORD) PURE;
1406
    STDMETHOD(IsClipListChanged)(THIS_ BOOL FAR *) PURE;
1407
    STDMETHOD(SetClipList)(THIS_ LPRGNDATA,DWORD) PURE;
1408
    STDMETHOD(SetHWnd)(THIS_ DWORD, HWND ) PURE;
1409
};
1410
 
1411
#if !defined(__cplusplus) || defined(CINTERFACE)
1412
#define IDirectDrawClipper_QueryInterface(p, a, b)  (p)->lpVtbl->QueryInterface(p, a, b)
1413
#define IDirectDrawClipper_AddRef(p)                (p)->lpVtbl->AddRef(p)
1414
#define IDirectDrawClipper_Release(p)               (p)->lpVtbl->Release(p)
1415
#define IDirectDrawClipper_GetClipList(p, a, b, c)  (p)->lpVtbl->GetClipList(p, a, b, c)
1416
#define IDirectDrawClipper_GetHWnd(p, a)            (p)->lpVtbl->GetHWnd(p, a)
1417
#define IDirectDrawClipper_Initialize(p, a, b)      (p)->lpVtbl->Initialize(p, a, b)
1418
#define IDirectDrawClipper_IsClipListChanged(p, a)  (p)->lpVtbl->IsClipListChanged(p, a)
1419
#define IDirectDrawClipper_SetClipList(p, a, b)     (p)->lpVtbl->SetClipList(p, a, b)
1420
#define IDirectDrawClipper_SetHWnd(p, a, b)         (p)->lpVtbl->SetHWnd(p, a, b)
1421
#else
1422
#define IDirectDrawClipper_QueryInterface(p, a, b)  (p)->QueryInterface(a, b)
1423
#define IDirectDrawClipper_AddRef(p)                (p)->AddRef()
1424
#define IDirectDrawClipper_Release(p)               (p)->Release()
1425
#define IDirectDrawClipper_GetClipList(p, a, b, c)  (p)->GetClipList(a, b, c)
1426
#define IDirectDrawClipper_GetHWnd(p, a)            (p)->GetHWnd(a)
1427
#define IDirectDrawClipper_Initialize(p, a, b)      (p)->Initialize(a, b)
1428
#define IDirectDrawClipper_IsClipListChanged(p, a)  (p)->IsClipListChanged(a)
1429
#define IDirectDrawClipper_SetClipList(p, a, b)     (p)->SetClipList(a, b)
1430
#define IDirectDrawClipper_SetHWnd(p, a, b)         (p)->SetHWnd(a, b)
1431
#endif
1432
 
1433
#endif
1434
 
1435
/*
1436
 * IDirectDrawSurface and related interfaces
1437
 */
1438
#if defined( _WIN32 ) && !defined( _NO_COM )
1439
#undef INTERFACE
1440
#define INTERFACE IDirectDrawSurface
1441
DECLARE_INTERFACE_( IDirectDrawSurface, IUnknown )
1442
{
1443
    /*** IUnknown methods ***/
1444
    STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE;
1445
    STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
1446
    STDMETHOD_(ULONG,Release) (THIS) PURE;
1447
    /*** IDirectDrawSurface methods ***/
1448
    STDMETHOD(AddAttachedSurface)(THIS_ LPDIRECTDRAWSURFACE) PURE;
1449
    STDMETHOD(AddOverlayDirtyRect)(THIS_ LPRECT) PURE;
1450
    STDMETHOD(Blt)(THIS_ LPRECT,LPDIRECTDRAWSURFACE, LPRECT,DWORD, LPDDBLTFX) PURE;
1451
    STDMETHOD(BltBatch)(THIS_ LPDDBLTBATCH, DWORD, DWORD ) PURE;
1452
    STDMETHOD(BltFast)(THIS_ DWORD,DWORD,LPDIRECTDRAWSURFACE, LPRECT,DWORD) PURE;
1453
    STDMETHOD(DeleteAttachedSurface)(THIS_ DWORD,LPDIRECTDRAWSURFACE) PURE;
1454
    STDMETHOD(EnumAttachedSurfaces)(THIS_ LPVOID,LPDDENUMSURFACESCALLBACK) PURE;
1455
    STDMETHOD(EnumOverlayZOrders)(THIS_ DWORD,LPVOID,LPDDENUMSURFACESCALLBACK) PURE;
1456
    STDMETHOD(Flip)(THIS_ LPDIRECTDRAWSURFACE, DWORD) PURE;
1457
    STDMETHOD(GetAttachedSurface)(THIS_ LPDDSCAPS, LPDIRECTDRAWSURFACE FAR *) PURE;
1458
    STDMETHOD(GetBltStatus)(THIS_ DWORD) PURE;
1459
    STDMETHOD(GetCaps)(THIS_ LPDDSCAPS) PURE;
1460
    STDMETHOD(GetClipper)(THIS_ LPDIRECTDRAWCLIPPER FAR*) PURE;
1461
    STDMETHOD(GetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE;
1462
    STDMETHOD(GetDC)(THIS_ HDC FAR *) PURE;
1463
    STDMETHOD(GetFlipStatus)(THIS_ DWORD) PURE;
1464
    STDMETHOD(GetOverlayPosition)(THIS_ LPLONG, LPLONG ) PURE;
1465
    STDMETHOD(GetPalette)(THIS_ LPDIRECTDRAWPALETTE FAR*) PURE;
1466
    STDMETHOD(GetPixelFormat)(THIS_ LPDDPIXELFORMAT) PURE;
1467
    STDMETHOD(GetSurfaceDesc)(THIS_ LPDDSURFACEDESC) PURE;
1468
    STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW, LPDDSURFACEDESC) PURE;
1469
    STDMETHOD(IsLost)(THIS) PURE;
1470
    STDMETHOD(Lock)(THIS_ LPRECT,LPDDSURFACEDESC,DWORD,HANDLE) PURE;
1471
    STDMETHOD(ReleaseDC)(THIS_ HDC) PURE;
1472
    STDMETHOD(Restore)(THIS) PURE;
1473
    STDMETHOD(SetClipper)(THIS_ LPDIRECTDRAWCLIPPER) PURE;
1474
    STDMETHOD(SetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE;
1475
    STDMETHOD(SetOverlayPosition)(THIS_ LONG, LONG ) PURE;
1476
    STDMETHOD(SetPalette)(THIS_ LPDIRECTDRAWPALETTE) PURE;
1477
    STDMETHOD(Unlock)(THIS_ LPVOID) PURE;
1478
    STDMETHOD(UpdateOverlay)(THIS_ LPRECT, LPDIRECTDRAWSURFACE,LPRECT,DWORD, LPDDOVERLAYFX) PURE;
1479
    STDMETHOD(UpdateOverlayDisplay)(THIS_ DWORD) PURE;
1480
    STDMETHOD(UpdateOverlayZOrder)(THIS_ DWORD, LPDIRECTDRAWSURFACE) PURE;
1481
};
1482
 
1483
#if !defined(__cplusplus) || defined(CINTERFACE)
1484
#define IDirectDrawSurface_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
1485
#define IDirectDrawSurface_AddRef(p)                    (p)->lpVtbl->AddRef(p)
1486
#define IDirectDrawSurface_Release(p)                   (p)->lpVtbl->Release(p)
1487
#define IDirectDrawSurface_AddAttachedSurface(p,a)      (p)->lpVtbl->AddAttachedSurface(p,a)
1488
#define IDirectDrawSurface_AddOverlayDirtyRect(p,a)     (p)->lpVtbl->AddOverlayDirtyRect(p,a)
1489
#define IDirectDrawSurface_Blt(p,a,b,c,d,e)             (p)->lpVtbl->Blt(p,a,b,c,d,e)
1490
#define IDirectDrawSurface_BltBatch(p,a,b,c)            (p)->lpVtbl->BltBatch(p,a,b,c)
1491
#define IDirectDrawSurface_BltFast(p,a,b,c,d,e)         (p)->lpVtbl->BltFast(p,a,b,c,d,e)
1492
#define IDirectDrawSurface_DeleteAttachedSurface(p,a,b) (p)->lpVtbl->DeleteAttachedSurface(p,a,b)
1493
#define IDirectDrawSurface_EnumAttachedSurfaces(p,a,b)  (p)->lpVtbl->EnumAttachedSurfaces(p,a,b)
1494
#define IDirectDrawSurface_EnumOverlayZOrders(p,a,b,c)  (p)->lpVtbl->EnumOverlayZOrders(p,a,b,c)
1495
#define IDirectDrawSurface_Flip(p,a,b)                  (p)->lpVtbl->Flip(p,a,b)
1496
#define IDirectDrawSurface_GetAttachedSurface(p,a,b)    (p)->lpVtbl->GetAttachedSurface(p,a,b)
1497
#define IDirectDrawSurface_GetBltStatus(p,a)            (p)->lpVtbl->GetBltStatus(p,a)
1498
#define IDirectDrawSurface_GetCaps(p,b)                 (p)->lpVtbl->GetCaps(p,b)
1499
#define IDirectDrawSurface_GetClipper(p,a)              (p)->lpVtbl->GetClipper(p,a)
1500
#define IDirectDrawSurface_GetColorKey(p,a,b)           (p)->lpVtbl->GetColorKey(p,a,b)
1501
#define IDirectDrawSurface_GetDC(p,a)                   (p)->lpVtbl->GetDC(p,a)
1502
#define IDirectDrawSurface_GetFlipStatus(p,a)           (p)->lpVtbl->GetFlipStatus(p,a)
1503
#define IDirectDrawSurface_GetOverlayPosition(p,a,b)    (p)->lpVtbl->GetOverlayPosition(p,a,b)
1504
#define IDirectDrawSurface_GetPalette(p,a)              (p)->lpVtbl->GetPalette(p,a)
1505
#define IDirectDrawSurface_GetPixelFormat(p,a)          (p)->lpVtbl->GetPixelFormat(p,a)
1506
#define IDirectDrawSurface_GetSurfaceDesc(p,a)          (p)->lpVtbl->GetSurfaceDesc(p,a)
1507
#define IDirectDrawSurface_Initialize(p,a,b)            (p)->lpVtbl->Initialize(p,a,b)
1508
#define IDirectDrawSurface_IsLost(p)                    (p)->lpVtbl->IsLost(p)
1509
#define IDirectDrawSurface_Lock(p,a,b,c,d)              (p)->lpVtbl->Lock(p,a,b,c,d)
1510
#define IDirectDrawSurface_ReleaseDC(p,a)               (p)->lpVtbl->ReleaseDC(p,a)
1511
#define IDirectDrawSurface_Restore(p)                   (p)->lpVtbl->Restore(p)
1512
#define IDirectDrawSurface_SetClipper(p,a)              (p)->lpVtbl->SetClipper(p,a)
1513
#define IDirectDrawSurface_SetColorKey(p,a,b)           (p)->lpVtbl->SetColorKey(p,a,b)
1514
#define IDirectDrawSurface_SetOverlayPosition(p,a,b)    (p)->lpVtbl->SetOverlayPosition(p,a,b)
1515
#define IDirectDrawSurface_SetPalette(p,a)              (p)->lpVtbl->SetPalette(p,a)
1516
#define IDirectDrawSurface_Unlock(p,b)                  (p)->lpVtbl->Unlock(p,b)
1517
#define IDirectDrawSurface_UpdateOverlay(p,a,b,c,d,e)   (p)->lpVtbl->UpdateOverlay(p,a,b,c,d,e)
1518
#define IDirectDrawSurface_UpdateOverlayDisplay(p,a)    (p)->lpVtbl->UpdateOverlayDisplay(p,a)
1519
#define IDirectDrawSurface_UpdateOverlayZOrder(p,a,b)   (p)->lpVtbl->UpdateOverlayZOrder(p,a,b)
1520
#else
1521
#define IDirectDrawSurface_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
1522
#define IDirectDrawSurface_AddRef(p)                    (p)->AddRef()
1523
#define IDirectDrawSurface_Release(p)                   (p)->Release()
1524
#define IDirectDrawSurface_AddAttachedSurface(p,a)      (p)->AddAttachedSurface(a)
1525
#define IDirectDrawSurface_AddOverlayDirtyRect(p,a)     (p)->AddOverlayDirtyRect(a)
1526
#define IDirectDrawSurface_Blt(p,a,b,c,d,e)             (p)->Blt(a,b,c,d,e)
1527
#define IDirectDrawSurface_BltBatch(p,a,b,c)            (p)->BltBatch(a,b,c)
1528
#define IDirectDrawSurface_BltFast(p,a,b,c,d,e)         (p)->BltFast(a,b,c,d,e)
1529
#define IDirectDrawSurface_DeleteAttachedSurface(p,a,b) (p)->DeleteAttachedSurface(a,b)
1530
#define IDirectDrawSurface_EnumAttachedSurfaces(p,a,b)  (p)->EnumAttachedSurfaces(a,b)
1531
#define IDirectDrawSurface_EnumOverlayZOrders(p,a,b,c)  (p)->EnumOverlayZOrders(a,b,c)
1532
#define IDirectDrawSurface_Flip(p,a,b)                  (p)->Flip(a,b)
1533
#define IDirectDrawSurface_GetAttachedSurface(p,a,b)    (p)->GetAttachedSurface(a,b)
1534
#define IDirectDrawSurface_GetBltStatus(p,a)            (p)->GetBltStatus(a)
1535
#define IDirectDrawSurface_GetCaps(p,b)                 (p)->GetCaps(b)
1536
#define IDirectDrawSurface_GetClipper(p,a)              (p)->GetClipper(a)
1537
#define IDirectDrawSurface_GetColorKey(p,a,b)           (p)->GetColorKey(a,b)
1538
#define IDirectDrawSurface_GetDC(p,a)                   (p)->GetDC(a)
1539
#define IDirectDrawSurface_GetFlipStatus(p,a)           (p)->GetFlipStatus(a)
1540
#define IDirectDrawSurface_GetOverlayPosition(p,a,b)    (p)->GetOverlayPosition(a,b)
1541
#define IDirectDrawSurface_GetPalette(p,a)              (p)->GetPalette(a)
1542
#define IDirectDrawSurface_GetPixelFormat(p,a)          (p)->GetPixelFormat(a)
1543
#define IDirectDrawSurface_GetSurfaceDesc(p,a)          (p)->GetSurfaceDesc(a)
1544
#define IDirectDrawSurface_Initialize(p,a,b)            (p)->Initialize(a,b)
1545
#define IDirectDrawSurface_IsLost(p)                    (p)->IsLost()
1546
#define IDirectDrawSurface_Lock(p,a,b,c,d)              (p)->Lock(a,b,c,d)
1547
#define IDirectDrawSurface_ReleaseDC(p,a)               (p)->ReleaseDC(a)
1548
#define IDirectDrawSurface_Restore(p)                   (p)->Restore()
1549
#define IDirectDrawSurface_SetClipper(p,a)              (p)->SetClipper(a)
1550
#define IDirectDrawSurface_SetColorKey(p,a,b)           (p)->SetColorKey(a,b)
1551
#define IDirectDrawSurface_SetOverlayPosition(p,a,b)    (p)->SetOverlayPosition(a,b)
1552
#define IDirectDrawSurface_SetPalette(p,a)              (p)->SetPalette(a)
1553
#define IDirectDrawSurface_Unlock(p,b)                  (p)->Unlock(b)
1554
#define IDirectDrawSurface_UpdateOverlay(p,a,b,c,d,e)   (p)->UpdateOverlay(a,b,c,d,e)
1555
#define IDirectDrawSurface_UpdateOverlayDisplay(p,a)    (p)->UpdateOverlayDisplay(a)
1556
#define IDirectDrawSurface_UpdateOverlayZOrder(p,a,b)   (p)->UpdateOverlayZOrder(a,b)
1557
#endif
1558
 
1559
/*
1560
 * IDirectDrawSurface2 and related interfaces
1561
 */
1562
#undef INTERFACE
1563
#define INTERFACE IDirectDrawSurface2
1564
DECLARE_INTERFACE_( IDirectDrawSurface2, IUnknown )
1565
{
1566
    /*** IUnknown methods ***/
1567
    STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE;
1568
    STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
1569
    STDMETHOD_(ULONG,Release) (THIS) PURE;
1570
    /*** IDirectDrawSurface methods ***/
1571
    STDMETHOD(AddAttachedSurface)(THIS_ LPDIRECTDRAWSURFACE2) PURE;
1572
    STDMETHOD(AddOverlayDirtyRect)(THIS_ LPRECT) PURE;
1573
    STDMETHOD(Blt)(THIS_ LPRECT,LPDIRECTDRAWSURFACE2, LPRECT,DWORD, LPDDBLTFX) PURE;
1574
    STDMETHOD(BltBatch)(THIS_ LPDDBLTBATCH, DWORD, DWORD ) PURE;
1575
    STDMETHOD(BltFast)(THIS_ DWORD,DWORD,LPDIRECTDRAWSURFACE2, LPRECT,DWORD) PURE;
1576
    STDMETHOD(DeleteAttachedSurface)(THIS_ DWORD,LPDIRECTDRAWSURFACE2) PURE;
1577
    STDMETHOD(EnumAttachedSurfaces)(THIS_ LPVOID,LPDDENUMSURFACESCALLBACK) PURE;
1578
    STDMETHOD(EnumOverlayZOrders)(THIS_ DWORD,LPVOID,LPDDENUMSURFACESCALLBACK) PURE;
1579
    STDMETHOD(Flip)(THIS_ LPDIRECTDRAWSURFACE2, DWORD) PURE;
1580
    STDMETHOD(GetAttachedSurface)(THIS_ LPDDSCAPS, LPDIRECTDRAWSURFACE2 FAR *) PURE;
1581
    STDMETHOD(GetBltStatus)(THIS_ DWORD) PURE;
1582
    STDMETHOD(GetCaps)(THIS_ LPDDSCAPS) PURE;
1583
    STDMETHOD(GetClipper)(THIS_ LPDIRECTDRAWCLIPPER FAR*) PURE;
1584
    STDMETHOD(GetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE;
1585
    STDMETHOD(GetDC)(THIS_ HDC FAR *) PURE;
1586
    STDMETHOD(GetFlipStatus)(THIS_ DWORD) PURE;
1587
    STDMETHOD(GetOverlayPosition)(THIS_ LPLONG, LPLONG ) PURE;
1588
    STDMETHOD(GetPalette)(THIS_ LPDIRECTDRAWPALETTE FAR*) PURE;
1589
    STDMETHOD(GetPixelFormat)(THIS_ LPDDPIXELFORMAT) PURE;
1590
    STDMETHOD(GetSurfaceDesc)(THIS_ LPDDSURFACEDESC) PURE;
1591
    STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW, LPDDSURFACEDESC) PURE;
1592
    STDMETHOD(IsLost)(THIS) PURE;
1593
    STDMETHOD(Lock)(THIS_ LPRECT,LPDDSURFACEDESC,DWORD,HANDLE) PURE;
1594
    STDMETHOD(ReleaseDC)(THIS_ HDC) PURE;
1595
    STDMETHOD(Restore)(THIS) PURE;
1596
    STDMETHOD(SetClipper)(THIS_ LPDIRECTDRAWCLIPPER) PURE;
1597
    STDMETHOD(SetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE;
1598
    STDMETHOD(SetOverlayPosition)(THIS_ LONG, LONG ) PURE;
1599
    STDMETHOD(SetPalette)(THIS_ LPDIRECTDRAWPALETTE) PURE;
1600
    STDMETHOD(Unlock)(THIS_ LPVOID) PURE;
1601
    STDMETHOD(UpdateOverlay)(THIS_ LPRECT, LPDIRECTDRAWSURFACE2,LPRECT,DWORD, LPDDOVERLAYFX) PURE;
1602
    STDMETHOD(UpdateOverlayDisplay)(THIS_ DWORD) PURE;
1603
    STDMETHOD(UpdateOverlayZOrder)(THIS_ DWORD, LPDIRECTDRAWSURFACE2) PURE;
1604
    /*** Added in the v2 interface ***/
1605
    STDMETHOD(GetDDInterface)(THIS_ LPVOID FAR *) PURE;
1606
    STDMETHOD(PageLock)(THIS_ DWORD) PURE;
1607
    STDMETHOD(PageUnlock)(THIS_ DWORD) PURE;
1608
};
1609
 
1610
#if !defined(__cplusplus) || defined(CINTERFACE)
1611
#define IDirectDrawSurface2_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
1612
#define IDirectDrawSurface2_AddRef(p)                    (p)->lpVtbl->AddRef(p)
1613
#define IDirectDrawSurface2_Release(p)                   (p)->lpVtbl->Release(p)
1614
#define IDirectDrawSurface2_AddAttachedSurface(p,a)      (p)->lpVtbl->AddAttachedSurface(p,a)
1615
#define IDirectDrawSurface2_AddOverlayDirtyRect(p,a)     (p)->lpVtbl->AddOverlayDirtyRect(p,a)
1616
#define IDirectDrawSurface2_Blt(p,a,b,c,d,e)             (p)->lpVtbl->Blt(p,a,b,c,d,e)
1617
#define IDirectDrawSurface2_BltBatch(p,a,b,c)            (p)->lpVtbl->BltBatch(p,a,b,c)
1618
#define IDirectDrawSurface2_BltFast(p,a,b,c,d,e)         (p)->lpVtbl->BltFast(p,a,b,c,d,e)
1619
#define IDirectDrawSurface2_DeleteAttachedSurface(p,a,b) (p)->lpVtbl->DeleteAttachedSurface(p,a,b)
1620
#define IDirectDrawSurface2_EnumAttachedSurfaces(p,a,b)  (p)->lpVtbl->EnumAttachedSurfaces(p,a,b)
1621
#define IDirectDrawSurface2_EnumOverlayZOrders(p,a,b,c)  (p)->lpVtbl->EnumOverlayZOrders(p,a,b,c)
1622
#define IDirectDrawSurface2_Flip(p,a,b)                  (p)->lpVtbl->Flip(p,a,b)
1623
#define IDirectDrawSurface2_GetAttachedSurface(p,a,b)    (p)->lpVtbl->GetAttachedSurface(p,a,b)
1624
#define IDirectDrawSurface2_GetBltStatus(p,a)            (p)->lpVtbl->GetBltStatus(p,a)
1625
#define IDirectDrawSurface2_GetCaps(p,b)                 (p)->lpVtbl->GetCaps(p,b)
1626
#define IDirectDrawSurface2_GetClipper(p,a)              (p)->lpVtbl->GetClipper(p,a)
1627
#define IDirectDrawSurface2_GetColorKey(p,a,b)           (p)->lpVtbl->GetColorKey(p,a,b)
1628
#define IDirectDrawSurface2_GetDC(p,a)                   (p)->lpVtbl->GetDC(p,a)
1629
#define IDirectDrawSurface2_GetFlipStatus(p,a)           (p)->lpVtbl->GetFlipStatus(p,a)
1630
#define IDirectDrawSurface2_GetOverlayPosition(p,a,b)    (p)->lpVtbl->GetOverlayPosition(p,a,b)
1631
#define IDirectDrawSurface2_GetPalette(p,a)              (p)->lpVtbl->GetPalette(p,a)
1632
#define IDirectDrawSurface2_GetPixelFormat(p,a)          (p)->lpVtbl->GetPixelFormat(p,a)
1633
#define IDirectDrawSurface2_GetSurfaceDesc(p,a)          (p)->lpVtbl->GetSurfaceDesc(p,a)
1634
#define IDirectDrawSurface2_Initialize(p,a,b)            (p)->lpVtbl->Initialize(p,a,b)
1635
#define IDirectDrawSurface2_IsLost(p)                    (p)->lpVtbl->IsLost(p)
1636
#define IDirectDrawSurface2_Lock(p,a,b,c,d)              (p)->lpVtbl->Lock(p,a,b,c,d)
1637
#define IDirectDrawSurface2_ReleaseDC(p,a)               (p)->lpVtbl->ReleaseDC(p,a)
1638
#define IDirectDrawSurface2_Restore(p)                   (p)->lpVtbl->Restore(p)
1639
#define IDirectDrawSurface2_SetClipper(p,a)              (p)->lpVtbl->SetClipper(p,a)
1640
#define IDirectDrawSurface2_SetColorKey(p,a,b)           (p)->lpVtbl->SetColorKey(p,a,b)
1641
#define IDirectDrawSurface2_SetOverlayPosition(p,a,b)    (p)->lpVtbl->SetOverlayPosition(p,a,b)
1642
#define IDirectDrawSurface2_SetPalette(p,a)              (p)->lpVtbl->SetPalette(p,a)
1643
#define IDirectDrawSurface2_Unlock(p,b)                  (p)->lpVtbl->Unlock(p,b)
1644
#define IDirectDrawSurface2_UpdateOverlay(p,a,b,c,d,e)   (p)->lpVtbl->UpdateOverlay(p,a,b,c,d,e)
1645
#define IDirectDrawSurface2_UpdateOverlayDisplay(p,a)    (p)->lpVtbl->UpdateOverlayDisplay(p,a)
1646
#define IDirectDrawSurface2_UpdateOverlayZOrder(p,a,b)   (p)->lpVtbl->UpdateOverlayZOrder(p,a,b)
1647
#define IDirectDrawSurface2_GetDDInterface(p,a)          (p)->lpVtbl->GetDDInterface(p,a)
1648
#define IDirectDrawSurface2_PageLock(p,a)                (p)->lpVtbl->PageLock(p,a)
1649
#define IDirectDrawSurface2_PageUnlock(p,a)              (p)->lpVtbl->PageUnlock(p,a)
1650
#else
1651
#define IDirectDrawSurface2_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
1652
#define IDirectDrawSurface2_AddRef(p)                    (p)->AddRef()
1653
#define IDirectDrawSurface2_Release(p)                   (p)->Release()
1654
#define IDirectDrawSurface2_AddAttachedSurface(p,a)      (p)->AddAttachedSurface(a)
1655
#define IDirectDrawSurface2_AddOverlayDirtyRect(p,a)     (p)->AddOverlayDirtyRect(a)
1656
#define IDirectDrawSurface2_Blt(p,a,b,c,d,e)             (p)->Blt(a,b,c,d,e)
1657
#define IDirectDrawSurface2_BltBatch(p,a,b,c)            (p)->BltBatch(a,b,c)
1658
#define IDirectDrawSurface2_BltFast(p,a,b,c,d,e)         (p)->BltFast(a,b,c,d,e)
1659
#define IDirectDrawSurface2_DeleteAttachedSurface(p,a,b) (p)->DeleteAttachedSurface(a,b)
1660
#define IDirectDrawSurface2_EnumAttachedSurfaces(p,a,b)  (p)->EnumAttachedSurfaces(a,b)
1661
#define IDirectDrawSurface2_EnumOverlayZOrders(p,a,b,c)  (p)->EnumOverlayZOrders(a,b,c)
1662
#define IDirectDrawSurface2_Flip(p,a,b)                  (p)->Flip(a,b)
1663
#define IDirectDrawSurface2_GetAttachedSurface(p,a,b)    (p)->GetAttachedSurface(a,b)
1664
#define IDirectDrawSurface2_GetBltStatus(p,a)            (p)->GetBltStatus(a)
1665
#define IDirectDrawSurface2_GetCaps(p,b)                 (p)->GetCaps(b)
1666
#define IDirectDrawSurface2_GetClipper(p,a)              (p)->GetClipper(a)
1667
#define IDirectDrawSurface2_GetColorKey(p,a,b)           (p)->GetColorKey(a,b)
1668
#define IDirectDrawSurface2_GetDC(p,a)                   (p)->GetDC(a)
1669
#define IDirectDrawSurface2_GetFlipStatus(p,a)           (p)->GetFlipStatus(a)
1670
#define IDirectDrawSurface2_GetOverlayPosition(p,a,b)    (p)->GetOverlayPosition(a,b)
1671
#define IDirectDrawSurface2_GetPalette(p,a)              (p)->GetPalette(a)
1672
#define IDirectDrawSurface2_GetPixelFormat(p,a)          (p)->GetPixelFormat(a)
1673
#define IDirectDrawSurface2_GetSurfaceDesc(p,a)          (p)->GetSurfaceDesc(a)
1674
#define IDirectDrawSurface2_Initialize(p,a,b)            (p)->Initialize(a,b)
1675
#define IDirectDrawSurface2_IsLost(p)                    (p)->IsLost()
1676
#define IDirectDrawSurface2_Lock(p,a,b,c,d)              (p)->Lock(a,b,c,d)
1677
#define IDirectDrawSurface2_ReleaseDC(p,a)               (p)->ReleaseDC(a)
1678
#define IDirectDrawSurface2_Restore(p)                   (p)->Restore()
1679
#define IDirectDrawSurface2_SetClipper(p,a)              (p)->SetClipper(a)
1680
#define IDirectDrawSurface2_SetColorKey(p,a,b)           (p)->SetColorKey(a,b)
1681
#define IDirectDrawSurface2_SetOverlayPosition(p,a,b)    (p)->SetOverlayPosition(a,b)
1682
#define IDirectDrawSurface2_SetPalette(p,a)              (p)->SetPalette(a)
1683
#define IDirectDrawSurface2_Unlock(p,b)                  (p)->Unlock(b)
1684
#define IDirectDrawSurface2_UpdateOverlay(p,a,b,c,d,e)   (p)->UpdateOverlay(a,b,c,d,e)
1685
#define IDirectDrawSurface2_UpdateOverlayDisplay(p,a)    (p)->UpdateOverlayDisplay(a)
1686
#define IDirectDrawSurface2_UpdateOverlayZOrder(p,a,b)   (p)->UpdateOverlayZOrder(a,b)
1687
#define IDirectDrawSurface2_GetDDInterface(p,a)          (p)->GetDDInterface(a)
1688
#define IDirectDrawSurface2_PageLock(p,a)                (p)->PageLock(a)
1689
#define IDirectDrawSurface2_PageUnlock(p,a)              (p)->PageUnlock(a)
1690
#endif
1691
 
1692
/*
1693
 * IDirectDrawSurface3 and related interfaces
1694
 */
1695
#undef INTERFACE
1696
#define INTERFACE IDirectDrawSurface3
1697
DECLARE_INTERFACE_( IDirectDrawSurface3, IUnknown )
1698
{
1699
    /*** IUnknown methods ***/
1700
    STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE;
1701
    STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
1702
    STDMETHOD_(ULONG,Release) (THIS) PURE;
1703
    /*** IDirectDrawSurface methods ***/
1704
    STDMETHOD(AddAttachedSurface)(THIS_ LPDIRECTDRAWSURFACE3) PURE;
1705
    STDMETHOD(AddOverlayDirtyRect)(THIS_ LPRECT) PURE;
1706
    STDMETHOD(Blt)(THIS_ LPRECT,LPDIRECTDRAWSURFACE3, LPRECT,DWORD, LPDDBLTFX) PURE;
1707
    STDMETHOD(BltBatch)(THIS_ LPDDBLTBATCH, DWORD, DWORD ) PURE;
1708
    STDMETHOD(BltFast)(THIS_ DWORD,DWORD,LPDIRECTDRAWSURFACE3, LPRECT,DWORD) PURE;
1709
    STDMETHOD(DeleteAttachedSurface)(THIS_ DWORD,LPDIRECTDRAWSURFACE3) PURE;
1710
    STDMETHOD(EnumAttachedSurfaces)(THIS_ LPVOID,LPDDENUMSURFACESCALLBACK) PURE;
1711
    STDMETHOD(EnumOverlayZOrders)(THIS_ DWORD,LPVOID,LPDDENUMSURFACESCALLBACK) PURE;
1712
    STDMETHOD(Flip)(THIS_ LPDIRECTDRAWSURFACE3, DWORD) PURE;
1713
    STDMETHOD(GetAttachedSurface)(THIS_ LPDDSCAPS, LPDIRECTDRAWSURFACE3 FAR *) PURE;
1714
    STDMETHOD(GetBltStatus)(THIS_ DWORD) PURE;
1715
    STDMETHOD(GetCaps)(THIS_ LPDDSCAPS) PURE;
1716
    STDMETHOD(GetClipper)(THIS_ LPDIRECTDRAWCLIPPER FAR*) PURE;
1717
    STDMETHOD(GetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE;
1718
    STDMETHOD(GetDC)(THIS_ HDC FAR *) PURE;
1719
    STDMETHOD(GetFlipStatus)(THIS_ DWORD) PURE;
1720
    STDMETHOD(GetOverlayPosition)(THIS_ LPLONG, LPLONG ) PURE;
1721
    STDMETHOD(GetPalette)(THIS_ LPDIRECTDRAWPALETTE FAR*) PURE;
1722
    STDMETHOD(GetPixelFormat)(THIS_ LPDDPIXELFORMAT) PURE;
1723
    STDMETHOD(GetSurfaceDesc)(THIS_ LPDDSURFACEDESC) PURE;
1724
    STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW, LPDDSURFACEDESC) PURE;
1725
    STDMETHOD(IsLost)(THIS) PURE;
1726
    STDMETHOD(Lock)(THIS_ LPRECT,LPDDSURFACEDESC,DWORD,HANDLE) PURE;
1727
    STDMETHOD(ReleaseDC)(THIS_ HDC) PURE;
1728
    STDMETHOD(Restore)(THIS) PURE;
1729
    STDMETHOD(SetClipper)(THIS_ LPDIRECTDRAWCLIPPER) PURE;
1730
    STDMETHOD(SetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE;
1731
    STDMETHOD(SetOverlayPosition)(THIS_ LONG, LONG ) PURE;
1732
    STDMETHOD(SetPalette)(THIS_ LPDIRECTDRAWPALETTE) PURE;
1733
    STDMETHOD(Unlock)(THIS_ LPVOID) PURE;
1734
    STDMETHOD(UpdateOverlay)(THIS_ LPRECT, LPDIRECTDRAWSURFACE3,LPRECT,DWORD, LPDDOVERLAYFX) PURE;
1735
    STDMETHOD(UpdateOverlayDisplay)(THIS_ DWORD) PURE;
1736
    STDMETHOD(UpdateOverlayZOrder)(THIS_ DWORD, LPDIRECTDRAWSURFACE3) PURE;
1737
    /*** Added in the v2 interface ***/
1738
    STDMETHOD(GetDDInterface)(THIS_ LPVOID FAR *) PURE;
1739
    STDMETHOD(PageLock)(THIS_ DWORD) PURE;
1740
    STDMETHOD(PageUnlock)(THIS_ DWORD) PURE;
1741
    /*** Added in the V3 interface ***/
1742
    STDMETHOD(SetSurfaceDesc)(THIS_ LPDDSURFACEDESC, DWORD) PURE;
1743
};
1744
 
1745
#if !defined(__cplusplus) || defined(CINTERFACE)
1746
#define IDirectDrawSurface3_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
1747
#define IDirectDrawSurface3_AddRef(p)                    (p)->lpVtbl->AddRef(p)
1748
#define IDirectDrawSurface3_Release(p)                   (p)->lpVtbl->Release(p)
1749
#define IDirectDrawSurface3_AddAttachedSurface(p,a)      (p)->lpVtbl->AddAttachedSurface(p,a)
1750
#define IDirectDrawSurface3_AddOverlayDirtyRect(p,a)     (p)->lpVtbl->AddOverlayDirtyRect(p,a)
1751
#define IDirectDrawSurface3_Blt(p,a,b,c,d,e)             (p)->lpVtbl->Blt(p,a,b,c,d,e)
1752
#define IDirectDrawSurface3_BltBatch(p,a,b,c)            (p)->lpVtbl->BltBatch(p,a,b,c)
1753
#define IDirectDrawSurface3_BltFast(p,a,b,c,d,e)         (p)->lpVtbl->BltFast(p,a,b,c,d,e)
1754
#define IDirectDrawSurface3_DeleteAttachedSurface(p,a,b) (p)->lpVtbl->DeleteAttachedSurface(p,a,b)
1755
#define IDirectDrawSurface3_EnumAttachedSurfaces(p,a,b)  (p)->lpVtbl->EnumAttachedSurfaces(p,a,b)
1756
#define IDirectDrawSurface3_EnumOverlayZOrders(p,a,b,c)  (p)->lpVtbl->EnumOverlayZOrders(p,a,b,c)
1757
#define IDirectDrawSurface3_Flip(p,a,b)                  (p)->lpVtbl->Flip(p,a,b)
1758
#define IDirectDrawSurface3_GetAttachedSurface(p,a,b)    (p)->lpVtbl->GetAttachedSurface(p,a,b)
1759
#define IDirectDrawSurface3_GetBltStatus(p,a)            (p)->lpVtbl->GetBltStatus(p,a)
1760
#define IDirectDrawSurface3_GetCaps(p,b)                 (p)->lpVtbl->GetCaps(p,b)
1761
#define IDirectDrawSurface3_GetClipper(p,a)              (p)->lpVtbl->GetClipper(p,a)
1762
#define IDirectDrawSurface3_GetColorKey(p,a,b)           (p)->lpVtbl->GetColorKey(p,a,b)
1763
#define IDirectDrawSurface3_GetDC(p,a)                   (p)->lpVtbl->GetDC(p,a)
1764
#define IDirectDrawSurface3_GetFlipStatus(p,a)           (p)->lpVtbl->GetFlipStatus(p,a)
1765
#define IDirectDrawSurface3_GetOverlayPosition(p,a,b)    (p)->lpVtbl->GetOverlayPosition(p,a,b)
1766
#define IDirectDrawSurface3_GetPalette(p,a)              (p)->lpVtbl->GetPalette(p,a)
1767
#define IDirectDrawSurface3_GetPixelFormat(p,a)          (p)->lpVtbl->GetPixelFormat(p,a)
1768
#define IDirectDrawSurface3_GetSurfaceDesc(p,a)          (p)->lpVtbl->GetSurfaceDesc(p,a)
1769
#define IDirectDrawSurface3_Initialize(p,a,b)            (p)->lpVtbl->Initialize(p,a,b)
1770
#define IDirectDrawSurface3_IsLost(p)                    (p)->lpVtbl->IsLost(p)
1771
#define IDirectDrawSurface3_Lock(p,a,b,c,d)              (p)->lpVtbl->Lock(p,a,b,c,d)
1772
#define IDirectDrawSurface3_ReleaseDC(p,a)               (p)->lpVtbl->ReleaseDC(p,a)
1773
#define IDirectDrawSurface3_Restore(p)                   (p)->lpVtbl->Restore(p)
1774
#define IDirectDrawSurface3_SetClipper(p,a)              (p)->lpVtbl->SetClipper(p,a)
1775
#define IDirectDrawSurface3_SetColorKey(p,a,b)           (p)->lpVtbl->SetColorKey(p,a,b)
1776
#define IDirectDrawSurface3_SetOverlayPosition(p,a,b)    (p)->lpVtbl->SetOverlayPosition(p,a,b)
1777
#define IDirectDrawSurface3_SetPalette(p,a)              (p)->lpVtbl->SetPalette(p,a)
1778
#define IDirectDrawSurface3_Unlock(p,b)                  (p)->lpVtbl->Unlock(p,b)
1779
#define IDirectDrawSurface3_UpdateOverlay(p,a,b,c,d,e)   (p)->lpVtbl->UpdateOverlay(p,a,b,c,d,e)
1780
#define IDirectDrawSurface3_UpdateOverlayDisplay(p,a)    (p)->lpVtbl->UpdateOverlayDisplay(p,a)
1781
#define IDirectDrawSurface3_UpdateOverlayZOrder(p,a,b)   (p)->lpVtbl->UpdateOverlayZOrder(p,a,b)
1782
#define IDirectDrawSurface3_GetDDInterface(p,a)          (p)->lpVtbl->GetDDInterface(p,a)
1783
#define IDirectDrawSurface3_PageLock(p,a)                (p)->lpVtbl->PageLock(p,a)
1784
#define IDirectDrawSurface3_PageUnlock(p,a)              (p)->lpVtbl->PageUnlock(p,a)
1785
#define IDirectDrawSurface3_SetSurfaceDesc(p,a,b)        (p)->lpVtbl->SetSurfaceDesc(p,a,b)
1786
#else
1787
#define IDirectDrawSurface3_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
1788
#define IDirectDrawSurface3_AddRef(p)                    (p)->AddRef()
1789
#define IDirectDrawSurface3_Release(p)                   (p)->Release()
1790
#define IDirectDrawSurface3_AddAttachedSurface(p,a)      (p)->AddAttachedSurface(a)
1791
#define IDirectDrawSurface3_AddOverlayDirtyRect(p,a)     (p)->AddOverlayDirtyRect(a)
1792
#define IDirectDrawSurface3_Blt(p,a,b,c,d,e)             (p)->Blt(a,b,c,d,e)
1793
#define IDirectDrawSurface3_BltBatch(p,a,b,c)            (p)->BltBatch(a,b,c)
1794
#define IDirectDrawSurface3_BltFast(p,a,b,c,d,e)         (p)->BltFast(a,b,c,d,e)
1795
#define IDirectDrawSurface3_DeleteAttachedSurface(p,a,b) (p)->DeleteAttachedSurface(a,b)
1796
#define IDirectDrawSurface3_EnumAttachedSurfaces(p,a,b)  (p)->EnumAttachedSurfaces(a,b)
1797
#define IDirectDrawSurface3_EnumOverlayZOrders(p,a,b,c)  (p)->EnumOverlayZOrders(a,b,c)
1798
#define IDirectDrawSurface3_Flip(p,a,b)                  (p)->Flip(a,b)
1799
#define IDirectDrawSurface3_GetAttachedSurface(p,a,b)    (p)->GetAttachedSurface(a,b)
1800
#define IDirectDrawSurface3_GetBltStatus(p,a)            (p)->GetBltStatus(a)
1801
#define IDirectDrawSurface3_GetCaps(p,b)                 (p)->GetCaps(b)
1802
#define IDirectDrawSurface3_GetClipper(p,a)              (p)->GetClipper(a)
1803
#define IDirectDrawSurface3_GetColorKey(p,a,b)           (p)->GetColorKey(a,b)
1804
#define IDirectDrawSurface3_GetDC(p,a)                   (p)->GetDC(a)
1805
#define IDirectDrawSurface3_GetFlipStatus(p,a)           (p)->GetFlipStatus(a)
1806
#define IDirectDrawSurface3_GetOverlayPosition(p,a,b)    (p)->GetOverlayPosition(a,b)
1807
#define IDirectDrawSurface3_GetPalette(p,a)              (p)->GetPalette(a)
1808
#define IDirectDrawSurface3_GetPixelFormat(p,a)          (p)->GetPixelFormat(a)
1809
#define IDirectDrawSurface3_GetSurfaceDesc(p,a)          (p)->GetSurfaceDesc(a)
1810
#define IDirectDrawSurface3_Initialize(p,a,b)            (p)->Initialize(a,b)
1811
#define IDirectDrawSurface3_IsLost(p)                    (p)->IsLost()
1812
#define IDirectDrawSurface3_Lock(p,a,b,c,d)              (p)->Lock(a,b,c,d)
1813
#define IDirectDrawSurface3_ReleaseDC(p,a)               (p)->ReleaseDC(a)
1814
#define IDirectDrawSurface3_Restore(p)                   (p)->Restore()
1815
#define IDirectDrawSurface3_SetClipper(p,a)              (p)->SetClipper(a)
1816
#define IDirectDrawSurface3_SetColorKey(p,a,b)           (p)->SetColorKey(a,b)
1817
#define IDirectDrawSurface3_SetOverlayPosition(p,a,b)    (p)->SetOverlayPosition(a,b)
1818
#define IDirectDrawSurface3_SetPalette(p,a)              (p)->SetPalette(a)
1819
#define IDirectDrawSurface3_Unlock(p,b)                  (p)->Unlock(b)
1820
#define IDirectDrawSurface3_UpdateOverlay(p,a,b,c,d,e)   (p)->UpdateOverlay(a,b,c,d,e)
1821
#define IDirectDrawSurface3_UpdateOverlayDisplay(p,a)    (p)->UpdateOverlayDisplay(a)
1822
#define IDirectDrawSurface3_UpdateOverlayZOrder(p,a,b)   (p)->UpdateOverlayZOrder(a,b)
1823
#define IDirectDrawSurface3_GetDDInterface(p,a)          (p)->GetDDInterface(a)
1824
#define IDirectDrawSurface3_PageLock(p,a)                (p)->PageLock(a)
1825
#define IDirectDrawSurface3_PageUnlock(p,a)              (p)->PageUnlock(a)
1826
#define IDirectDrawSurface3_SetSurfaceDesc(p,a,b)        (p)->SetSurfaceDesc(a,b)
1827
#endif
1828
 
1829
/*
1830
 * IDirectDrawSurface4 and related interfaces
1831
 */
1832
#undef INTERFACE
1833
#define INTERFACE IDirectDrawSurface4
1834
DECLARE_INTERFACE_( IDirectDrawSurface4, IUnknown )
1835
{
1836
    /*** IUnknown methods ***/
1837
    STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE;
1838
    STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
1839
    STDMETHOD_(ULONG,Release) (THIS) PURE;
1840
    /*** IDirectDrawSurface methods ***/
1841
    STDMETHOD(AddAttachedSurface)(THIS_ LPDIRECTDRAWSURFACE4) PURE;
1842
    STDMETHOD(AddOverlayDirtyRect)(THIS_ LPRECT) PURE;
1843
    STDMETHOD(Blt)(THIS_ LPRECT,LPDIRECTDRAWSURFACE4, LPRECT,DWORD, LPDDBLTFX) PURE;
1844
    STDMETHOD(BltBatch)(THIS_ LPDDBLTBATCH, DWORD, DWORD ) PURE;
1845
    STDMETHOD(BltFast)(THIS_ DWORD,DWORD,LPDIRECTDRAWSURFACE4, LPRECT,DWORD) PURE;
1846
    STDMETHOD(DeleteAttachedSurface)(THIS_ DWORD,LPDIRECTDRAWSURFACE4) PURE;
1847
    STDMETHOD(EnumAttachedSurfaces)(THIS_ LPVOID,LPDDENUMSURFACESCALLBACK2) PURE;
1848
    STDMETHOD(EnumOverlayZOrders)(THIS_ DWORD,LPVOID,LPDDENUMSURFACESCALLBACK2) PURE;
1849
    STDMETHOD(Flip)(THIS_ LPDIRECTDRAWSURFACE4, DWORD) PURE;
1850
    STDMETHOD(GetAttachedSurface)(THIS_ LPDDSCAPS2, LPDIRECTDRAWSURFACE4 FAR *) PURE;
1851
    STDMETHOD(GetBltStatus)(THIS_ DWORD) PURE;
1852
    STDMETHOD(GetCaps)(THIS_ LPDDSCAPS2) PURE;
1853
    STDMETHOD(GetClipper)(THIS_ LPDIRECTDRAWCLIPPER FAR*) PURE;
1854
    STDMETHOD(GetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE;
1855
    STDMETHOD(GetDC)(THIS_ HDC FAR *) PURE;
1856
    STDMETHOD(GetFlipStatus)(THIS_ DWORD) PURE;
1857
    STDMETHOD(GetOverlayPosition)(THIS_ LPLONG, LPLONG ) PURE;
1858
    STDMETHOD(GetPalette)(THIS_ LPDIRECTDRAWPALETTE FAR*) PURE;
1859
    STDMETHOD(GetPixelFormat)(THIS_ LPDDPIXELFORMAT) PURE;
1860
    STDMETHOD(GetSurfaceDesc)(THIS_ LPDDSURFACEDESC2) PURE;
1861
    STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW, LPDDSURFACEDESC2) PURE;
1862
    STDMETHOD(IsLost)(THIS) PURE;
1863
    STDMETHOD(Lock)(THIS_ LPRECT,LPDDSURFACEDESC2,DWORD,HANDLE) PURE;
1864
    STDMETHOD(ReleaseDC)(THIS_ HDC) PURE;
1865
    STDMETHOD(Restore)(THIS) PURE;
1866
    STDMETHOD(SetClipper)(THIS_ LPDIRECTDRAWCLIPPER) PURE;
1867
    STDMETHOD(SetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE;
1868
    STDMETHOD(SetOverlayPosition)(THIS_ LONG, LONG ) PURE;
1869
    STDMETHOD(SetPalette)(THIS_ LPDIRECTDRAWPALETTE) PURE;
1870
    STDMETHOD(Unlock)(THIS_ LPRECT) PURE;
1871
    STDMETHOD(UpdateOverlay)(THIS_ LPRECT, LPDIRECTDRAWSURFACE4,LPRECT,DWORD, LPDDOVERLAYFX) PURE;
1872
    STDMETHOD(UpdateOverlayDisplay)(THIS_ DWORD) PURE;
1873
    STDMETHOD(UpdateOverlayZOrder)(THIS_ DWORD, LPDIRECTDRAWSURFACE4) PURE;
1874
    /*** Added in the v2 interface ***/
1875
    STDMETHOD(GetDDInterface)(THIS_ LPVOID FAR *) PURE;
1876
    STDMETHOD(PageLock)(THIS_ DWORD) PURE;
1877
    STDMETHOD(PageUnlock)(THIS_ DWORD) PURE;
1878
    /*** Added in the v3 interface ***/
1879
    STDMETHOD(SetSurfaceDesc)(THIS_ LPDDSURFACEDESC2, DWORD) PURE;
1880
    /*** Added in the v4 interface ***/
1881
    STDMETHOD(SetPrivateData)(THIS_ REFGUID, LPVOID, DWORD, DWORD) PURE;
1882
    STDMETHOD(GetPrivateData)(THIS_ REFGUID, LPVOID, LPDWORD) PURE;
1883
    STDMETHOD(FreePrivateData)(THIS_ REFGUID) PURE;
1884
    STDMETHOD(GetUniquenessValue)(THIS_ LPDWORD) PURE;
1885
    STDMETHOD(ChangeUniquenessValue)(THIS) PURE;
1886
};
1887
 
1888
#if !defined(__cplusplus) || defined(CINTERFACE)
1889
#define IDirectDrawSurface4_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
1890
#define IDirectDrawSurface4_AddRef(p)                    (p)->lpVtbl->AddRef(p)
1891
#define IDirectDrawSurface4_Release(p)                   (p)->lpVtbl->Release(p)
1892
#define IDirectDrawSurface4_AddAttachedSurface(p,a)      (p)->lpVtbl->AddAttachedSurface(p,a)
1893
#define IDirectDrawSurface4_AddOverlayDirtyRect(p,a)     (p)->lpVtbl->AddOverlayDirtyRect(p,a)
1894
#define IDirectDrawSurface4_Blt(p,a,b,c,d,e)             (p)->lpVtbl->Blt(p,a,b,c,d,e)
1895
#define IDirectDrawSurface4_BltBatch(p,a,b,c)            (p)->lpVtbl->BltBatch(p,a,b,c)
1896
#define IDirectDrawSurface4_BltFast(p,a,b,c,d,e)         (p)->lpVtbl->BltFast(p,a,b,c,d,e)
1897
#define IDirectDrawSurface4_DeleteAttachedSurface(p,a,b) (p)->lpVtbl->DeleteAttachedSurface(p,a,b)
1898
#define IDirectDrawSurface4_EnumAttachedSurfaces(p,a,b)  (p)->lpVtbl->EnumAttachedSurfaces(p,a,b)
1899
#define IDirectDrawSurface4_EnumOverlayZOrders(p,a,b,c)  (p)->lpVtbl->EnumOverlayZOrders(p,a,b,c)
1900
#define IDirectDrawSurface4_Flip(p,a,b)                  (p)->lpVtbl->Flip(p,a,b)
1901
#define IDirectDrawSurface4_GetAttachedSurface(p,a,b)    (p)->lpVtbl->GetAttachedSurface(p,a,b)
1902
#define IDirectDrawSurface4_GetBltStatus(p,a)            (p)->lpVtbl->GetBltStatus(p,a)
1903
#define IDirectDrawSurface4_GetCaps(p,b)                 (p)->lpVtbl->GetCaps(p,b)
1904
#define IDirectDrawSurface4_GetClipper(p,a)              (p)->lpVtbl->GetClipper(p,a)
1905
#define IDirectDrawSurface4_GetColorKey(p,a,b)           (p)->lpVtbl->GetColorKey(p,a,b)
1906
#define IDirectDrawSurface4_GetDC(p,a)                   (p)->lpVtbl->GetDC(p,a)
1907
#define IDirectDrawSurface4_GetFlipStatus(p,a)           (p)->lpVtbl->GetFlipStatus(p,a)
1908
#define IDirectDrawSurface4_GetOverlayPosition(p,a,b)    (p)->lpVtbl->GetOverlayPosition(p,a,b)
1909
#define IDirectDrawSurface4_GetPalette(p,a)              (p)->lpVtbl->GetPalette(p,a)
1910
#define IDirectDrawSurface4_GetPixelFormat(p,a)          (p)->lpVtbl->GetPixelFormat(p,a)
1911
#define IDirectDrawSurface4_GetSurfaceDesc(p,a)          (p)->lpVtbl->GetSurfaceDesc(p,a)
1912
#define IDirectDrawSurface4_Initialize(p,a,b)            (p)->lpVtbl->Initialize(p,a,b)
1913
#define IDirectDrawSurface4_IsLost(p)                    (p)->lpVtbl->IsLost(p)
1914
#define IDirectDrawSurface4_Lock(p,a,b,c,d)              (p)->lpVtbl->Lock(p,a,b,c,d)
1915
#define IDirectDrawSurface4_ReleaseDC(p,a)               (p)->lpVtbl->ReleaseDC(p,a)
1916
#define IDirectDrawSurface4_Restore(p)                   (p)->lpVtbl->Restore(p)
1917
#define IDirectDrawSurface4_SetClipper(p,a)              (p)->lpVtbl->SetClipper(p,a)
1918
#define IDirectDrawSurface4_SetColorKey(p,a,b)           (p)->lpVtbl->SetColorKey(p,a,b)
1919
#define IDirectDrawSurface4_SetOverlayPosition(p,a,b)    (p)->lpVtbl->SetOverlayPosition(p,a,b)
1920
#define IDirectDrawSurface4_SetPalette(p,a)              (p)->lpVtbl->SetPalette(p,a)
1921
#define IDirectDrawSurface4_Unlock(p,b)                  (p)->lpVtbl->Unlock(p,b)
1922
#define IDirectDrawSurface4_UpdateOverlay(p,a,b,c,d,e)   (p)->lpVtbl->UpdateOverlay(p,a,b,c,d,e)
1923
#define IDirectDrawSurface4_UpdateOverlayDisplay(p,a)    (p)->lpVtbl->UpdateOverlayDisplay(p,a)
1924
#define IDirectDrawSurface4_UpdateOverlayZOrder(p,a,b)   (p)->lpVtbl->UpdateOverlayZOrder(p,a,b)
1925
#define IDirectDrawSurface4_GetDDInterface(p,a)          (p)->lpVtbl->GetDDInterface(p,a)
1926
#define IDirectDrawSurface4_PageLock(p,a)                (p)->lpVtbl->PageLock(p,a)
1927
#define IDirectDrawSurface4_PageUnlock(p,a)              (p)->lpVtbl->PageUnlock(p,a)
1928
#define IDirectDrawSurface4_SetSurfaceDesc(p,a,b)        (p)->lpVtbl->SetSurfaceDesc(p,a,b)
1929
#define IDirectDrawSurface4_SetPrivateData(p,a,b,c,d)    (p)->lpVtbl->SetPrivateData(p,a,b,c,d)
1930
#define IDirectDrawSurface4_GetPrivateData(p,a,b,c)      (p)->lpVtbl->GetPrivateData(p,a,b,c)
1931
#define IDirectDrawSurface4_FreePrivateData(p,a)         (p)->lpVtbl->FreePrivateData(p,a)
1932
#define IDirectDrawSurface4_GetUniquenessValue(p, a)     (p)->lpVtbl->GetUniquenessValue(p, a)
1933
#define IDirectDrawSurface4_ChangeUniquenessValue(p)     (p)->lpVtbl->ChangeUniquenessValue(p)
1934
#else
1935
#define IDirectDrawSurface4_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
1936
#define IDirectDrawSurface4_AddRef(p)                    (p)->AddRef()
1937
#define IDirectDrawSurface4_Release(p)                   (p)->Release()
1938
#define IDirectDrawSurface4_AddAttachedSurface(p,a)      (p)->AddAttachedSurface(a)
1939
#define IDirectDrawSurface4_AddOverlayDirtyRect(p,a)     (p)->AddOverlayDirtyRect(a)
1940
#define IDirectDrawSurface4_Blt(p,a,b,c,d,e)             (p)->Blt(a,b,c,d,e)
1941
#define IDirectDrawSurface4_BltBatch(p,a,b,c)            (p)->BltBatch(a,b,c)
1942
#define IDirectDrawSurface4_BltFast(p,a,b,c,d,e)         (p)->BltFast(a,b,c,d,e)
1943
#define IDirectDrawSurface4_DeleteAttachedSurface(p,a,b) (p)->DeleteAttachedSurface(a,b)
1944
#define IDirectDrawSurface4_EnumAttachedSurfaces(p,a,b)  (p)->EnumAttachedSurfaces(a,b)
1945
#define IDirectDrawSurface4_EnumOverlayZOrders(p,a,b,c)  (p)->EnumOverlayZOrders(a,b,c)
1946
#define IDirectDrawSurface4_Flip(p,a,b)                  (p)->Flip(a,b)
1947
#define IDirectDrawSurface4_GetAttachedSurface(p,a,b)    (p)->GetAttachedSurface(a,b)
1948
#define IDirectDrawSurface4_GetBltStatus(p,a)            (p)->GetBltStatus(a)
1949
#define IDirectDrawSurface4_GetCaps(p,b)                 (p)->GetCaps(b)
1950
#define IDirectDrawSurface4_GetClipper(p,a)              (p)->GetClipper(a)
1951
#define IDirectDrawSurface4_GetColorKey(p,a,b)           (p)->GetColorKey(a,b)
1952
#define IDirectDrawSurface4_GetDC(p,a)                   (p)->GetDC(a)
1953
#define IDirectDrawSurface4_GetFlipStatus(p,a)           (p)->GetFlipStatus(a)
1954
#define IDirectDrawSurface4_GetOverlayPosition(p,a,b)    (p)->GetOverlayPosition(a,b)
1955
#define IDirectDrawSurface4_GetPalette(p,a)              (p)->GetPalette(a)
1956
#define IDirectDrawSurface4_GetPixelFormat(p,a)          (p)->GetPixelFormat(a)
1957
#define IDirectDrawSurface4_GetSurfaceDesc(p,a)          (p)->GetSurfaceDesc(a)
1958
#define IDirectDrawSurface4_Initialize(p,a,b)            (p)->Initialize(a,b)
1959
#define IDirectDrawSurface4_IsLost(p)                    (p)->IsLost()
1960
#define IDirectDrawSurface4_Lock(p,a,b,c,d)              (p)->Lock(a,b,c,d)
1961
#define IDirectDrawSurface4_ReleaseDC(p,a)               (p)->ReleaseDC(a)
1962
#define IDirectDrawSurface4_Restore(p)                   (p)->Restore()
1963
#define IDirectDrawSurface4_SetClipper(p,a)              (p)->SetClipper(a)
1964
#define IDirectDrawSurface4_SetColorKey(p,a,b)           (p)->SetColorKey(a,b)
1965
#define IDirectDrawSurface4_SetOverlayPosition(p,a,b)    (p)->SetOverlayPosition(a,b)
1966
#define IDirectDrawSurface4_SetPalette(p,a)              (p)->SetPalette(a)
1967
#define IDirectDrawSurface4_Unlock(p,b)                  (p)->Unlock(b)
1968
#define IDirectDrawSurface4_UpdateOverlay(p,a,b,c,d,e)   (p)->UpdateOverlay(a,b,c,d,e)
1969
#define IDirectDrawSurface4_UpdateOverlayDisplay(p,a)    (p)->UpdateOverlayDisplay(a)
1970
#define IDirectDrawSurface4_UpdateOverlayZOrder(p,a,b)   (p)->UpdateOverlayZOrder(a,b)
1971
#define IDirectDrawSurface4_GetDDInterface(p,a)          (p)->GetDDInterface(a)
1972
#define IDirectDrawSurface4_PageLock(p,a)                (p)->PageLock(a)
1973
#define IDirectDrawSurface4_PageUnlock(p,a)              (p)->PageUnlock(a)
1974
#define IDirectDrawSurface4_SetSurfaceDesc(p,a,b)        (p)->SetSurfaceDesc(a,b)
1975
#define IDirectDrawSurface4_SetPrivateData(p,a,b,c,d)    (p)->SetPrivateData(a,b,c,d)
1976
#define IDirectDrawSurface4_GetPrivateData(p,a,b,c)      (p)->GetPrivateData(a,b,c)
1977
#define IDirectDrawSurface4_FreePrivateData(p,a)         (p)->FreePrivateData(a)
1978
#define IDirectDrawSurface4_GetUniquenessValue(p, a)     (p)->GetUniquenessValue(a)
1979
#define IDirectDrawSurface4_ChangeUniquenessValue(p)     (p)->ChangeUniquenessValue()
1980
#endif
1981
 
1982
/*
1983
 * IDirectDrawSurface7 and related interfaces
1984
 */
1985
#undef INTERFACE
1986
#define INTERFACE IDirectDrawSurface7
1987
DECLARE_INTERFACE_( IDirectDrawSurface7, IUnknown )
1988
{
1989
    /*** IUnknown methods ***/
1990
    STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE;
1991
    STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
1992
    STDMETHOD_(ULONG,Release) (THIS) PURE;
1993
    /*** IDirectDrawSurface methods ***/
1994
    STDMETHOD(AddAttachedSurface)(THIS_ LPDIRECTDRAWSURFACE7) PURE;
1995
    STDMETHOD(AddOverlayDirtyRect)(THIS_ LPRECT) PURE;
1996
    STDMETHOD(Blt)(THIS_ LPRECT,LPDIRECTDRAWSURFACE7, LPRECT,DWORD, LPDDBLTFX) PURE;
1997
    STDMETHOD(BltBatch)(THIS_ LPDDBLTBATCH, DWORD, DWORD ) PURE;
1998
    STDMETHOD(BltFast)(THIS_ DWORD,DWORD,LPDIRECTDRAWSURFACE7, LPRECT,DWORD) PURE;
1999
    STDMETHOD(DeleteAttachedSurface)(THIS_ DWORD,LPDIRECTDRAWSURFACE7) PURE;
2000
    STDMETHOD(EnumAttachedSurfaces)(THIS_ LPVOID,LPDDENUMSURFACESCALLBACK7) PURE;
2001
    STDMETHOD(EnumOverlayZOrders)(THIS_ DWORD,LPVOID,LPDDENUMSURFACESCALLBACK7) PURE;
2002
    STDMETHOD(Flip)(THIS_ LPDIRECTDRAWSURFACE7, DWORD) PURE;
2003
    STDMETHOD(GetAttachedSurface)(THIS_ LPDDSCAPS2, LPDIRECTDRAWSURFACE7 FAR *) PURE;
2004
    STDMETHOD(GetBltStatus)(THIS_ DWORD) PURE;
2005
    STDMETHOD(GetCaps)(THIS_ LPDDSCAPS2) PURE;
2006
    STDMETHOD(GetClipper)(THIS_ LPDIRECTDRAWCLIPPER FAR*) PURE;
2007
    STDMETHOD(GetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE;
2008
    STDMETHOD(GetDC)(THIS_ HDC FAR *) PURE;
2009
    STDMETHOD(GetFlipStatus)(THIS_ DWORD) PURE;
2010
    STDMETHOD(GetOverlayPosition)(THIS_ LPLONG, LPLONG ) PURE;
2011
    STDMETHOD(GetPalette)(THIS_ LPDIRECTDRAWPALETTE FAR*) PURE;
2012
    STDMETHOD(GetPixelFormat)(THIS_ LPDDPIXELFORMAT) PURE;
2013
    STDMETHOD(GetSurfaceDesc)(THIS_ LPDDSURFACEDESC2) PURE;
2014
    STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW, LPDDSURFACEDESC2) PURE;
2015
    STDMETHOD(IsLost)(THIS) PURE;
2016
    STDMETHOD(Lock)(THIS_ LPRECT,LPDDSURFACEDESC2,DWORD,HANDLE) PURE;
2017
    STDMETHOD(ReleaseDC)(THIS_ HDC) PURE;
2018
    STDMETHOD(Restore)(THIS) PURE;
2019
    STDMETHOD(SetClipper)(THIS_ LPDIRECTDRAWCLIPPER) PURE;
2020
    STDMETHOD(SetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE;
2021
    STDMETHOD(SetOverlayPosition)(THIS_ LONG, LONG ) PURE;
2022
    STDMETHOD(SetPalette)(THIS_ LPDIRECTDRAWPALETTE) PURE;
2023
    STDMETHOD(Unlock)(THIS_ LPRECT) PURE;
2024
    STDMETHOD(UpdateOverlay)(THIS_ LPRECT, LPDIRECTDRAWSURFACE7,LPRECT,DWORD, LPDDOVERLAYFX) PURE;
2025
    STDMETHOD(UpdateOverlayDisplay)(THIS_ DWORD) PURE;
2026
    STDMETHOD(UpdateOverlayZOrder)(THIS_ DWORD, LPDIRECTDRAWSURFACE7) PURE;
2027
    /*** Added in the v2 interface ***/
2028
    STDMETHOD(GetDDInterface)(THIS_ LPVOID FAR *) PURE;
2029
    STDMETHOD(PageLock)(THIS_ DWORD) PURE;
2030
    STDMETHOD(PageUnlock)(THIS_ DWORD) PURE;
2031
    /*** Added in the v3 interface ***/
2032
    STDMETHOD(SetSurfaceDesc)(THIS_ LPDDSURFACEDESC2, DWORD) PURE;
2033
    /*** Added in the v4 interface ***/
2034
    STDMETHOD(SetPrivateData)(THIS_ REFGUID, LPVOID, DWORD, DWORD) PURE;
2035
    STDMETHOD(GetPrivateData)(THIS_ REFGUID, LPVOID, LPDWORD) PURE;
2036
    STDMETHOD(FreePrivateData)(THIS_ REFGUID) PURE;
2037
    STDMETHOD(GetUniquenessValue)(THIS_ LPDWORD) PURE;
2038
    STDMETHOD(ChangeUniquenessValue)(THIS) PURE;
2039
    /*** Moved Texture7 methods here ***/
2040
    STDMETHOD(SetPriority)(THIS_ DWORD) PURE;
2041
    STDMETHOD(GetPriority)(THIS_ LPDWORD) PURE;
2042
    STDMETHOD(SetLOD)(THIS_ DWORD) PURE;
2043
    STDMETHOD(GetLOD)(THIS_ LPDWORD) PURE;
2044
};
2045
 
2046
#if !defined(__cplusplus) || defined(CINTERFACE)
2047
#define IDirectDrawSurface7_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
2048
#define IDirectDrawSurface7_AddRef(p)                    (p)->lpVtbl->AddRef(p)
2049
#define IDirectDrawSurface7_Release(p)                   (p)->lpVtbl->Release(p)
2050
#define IDirectDrawSurface7_AddAttachedSurface(p,a)      (p)->lpVtbl->AddAttachedSurface(p,a)
2051
#define IDirectDrawSurface7_AddOverlayDirtyRect(p,a)     (p)->lpVtbl->AddOverlayDirtyRect(p,a)
2052
#define IDirectDrawSurface7_Blt(p,a,b,c,d,e)             (p)->lpVtbl->Blt(p,a,b,c,d,e)
2053
#define IDirectDrawSurface7_BltBatch(p,a,b,c)            (p)->lpVtbl->BltBatch(p,a,b,c)
2054
#define IDirectDrawSurface7_BltFast(p,a,b,c,d,e)         (p)->lpVtbl->BltFast(p,a,b,c,d,e)
2055
#define IDirectDrawSurface7_DeleteAttachedSurface(p,a,b) (p)->lpVtbl->DeleteAttachedSurface(p,a,b)
2056
#define IDirectDrawSurface7_EnumAttachedSurfaces(p,a,b)  (p)->lpVtbl->EnumAttachedSurfaces(p,a,b)
2057
#define IDirectDrawSurface7_EnumOverlayZOrders(p,a,b,c)  (p)->lpVtbl->EnumOverlayZOrders(p,a,b,c)
2058
#define IDirectDrawSurface7_Flip(p,a,b)                  (p)->lpVtbl->Flip(p,a,b)
2059
#define IDirectDrawSurface7_GetAttachedSurface(p,a,b)    (p)->lpVtbl->GetAttachedSurface(p,a,b)
2060
#define IDirectDrawSurface7_GetBltStatus(p,a)            (p)->lpVtbl->GetBltStatus(p,a)
2061
#define IDirectDrawSurface7_GetCaps(p,b)                 (p)->lpVtbl->GetCaps(p,b)
2062
#define IDirectDrawSurface7_GetClipper(p,a)              (p)->lpVtbl->GetClipper(p,a)
2063
#define IDirectDrawSurface7_GetColorKey(p,a,b)           (p)->lpVtbl->GetColorKey(p,a,b)
2064
#define IDirectDrawSurface7_GetDC(p,a)                   (p)->lpVtbl->GetDC(p,a)
2065
#define IDirectDrawSurface7_GetFlipStatus(p,a)           (p)->lpVtbl->GetFlipStatus(p,a)
2066
#define IDirectDrawSurface7_GetOverlayPosition(p,a,b)    (p)->lpVtbl->GetOverlayPosition(p,a,b)
2067
#define IDirectDrawSurface7_GetPalette(p,a)              (p)->lpVtbl->GetPalette(p,a)
2068
#define IDirectDrawSurface7_GetPixelFormat(p,a)          (p)->lpVtbl->GetPixelFormat(p,a)
2069
#define IDirectDrawSurface7_GetSurfaceDesc(p,a)          (p)->lpVtbl->GetSurfaceDesc(p,a)
2070
#define IDirectDrawSurface7_Initialize(p,a,b)            (p)->lpVtbl->Initialize(p,a,b)
2071
#define IDirectDrawSurface7_IsLost(p)                    (p)->lpVtbl->IsLost(p)
2072
#define IDirectDrawSurface7_Lock(p,a,b,c,d)              (p)->lpVtbl->Lock(p,a,b,c,d)
2073
#define IDirectDrawSurface7_ReleaseDC(p,a)               (p)->lpVtbl->ReleaseDC(p,a)
2074
#define IDirectDrawSurface7_Restore(p)                   (p)->lpVtbl->Restore(p)
2075
#define IDirectDrawSurface7_SetClipper(p,a)              (p)->lpVtbl->SetClipper(p,a)
2076
#define IDirectDrawSurface7_SetColorKey(p,a,b)           (p)->lpVtbl->SetColorKey(p,a,b)
2077
#define IDirectDrawSurface7_SetOverlayPosition(p,a,b)    (p)->lpVtbl->SetOverlayPosition(p,a,b)
2078
#define IDirectDrawSurface7_SetPalette(p,a)              (p)->lpVtbl->SetPalette(p,a)
2079
#define IDirectDrawSurface7_Unlock(p,b)                  (p)->lpVtbl->Unlock(p,b)
2080
#define IDirectDrawSurface7_UpdateOverlay(p,a,b,c,d,e)   (p)->lpVtbl->UpdateOverlay(p,a,b,c,d,e)
2081
#define IDirectDrawSurface7_UpdateOverlayDisplay(p,a)    (p)->lpVtbl->UpdateOverlayDisplay(p,a)
2082
#define IDirectDrawSurface7_UpdateOverlayZOrder(p,a,b)   (p)->lpVtbl->UpdateOverlayZOrder(p,a,b)
2083
#define IDirectDrawSurface7_GetDDInterface(p,a)          (p)->lpVtbl->GetDDInterface(p,a)
2084
#define IDirectDrawSurface7_PageLock(p,a)                (p)->lpVtbl->PageLock(p,a)
2085
#define IDirectDrawSurface7_PageUnlock(p,a)              (p)->lpVtbl->PageUnlock(p,a)
2086
#define IDirectDrawSurface7_SetSurfaceDesc(p,a,b)        (p)->lpVtbl->SetSurfaceDesc(p,a,b)
2087
#define IDirectDrawSurface7_SetPrivateData(p,a,b,c,d)    (p)->lpVtbl->SetPrivateData(p,a,b,c,d)
2088
#define IDirectDrawSurface7_GetPrivateData(p,a,b,c)      (p)->lpVtbl->GetPrivateData(p,a,b,c)
2089
#define IDirectDrawSurface7_FreePrivateData(p,a)         (p)->lpVtbl->FreePrivateData(p,a)
2090
#define IDirectDrawSurface7_GetUniquenessValue(p, a)     (p)->lpVtbl->GetUniquenessValue(p, a)
2091
#define IDirectDrawSurface7_ChangeUniquenessValue(p)     (p)->lpVtbl->ChangeUniquenessValue(p)
2092
#define IDirectDrawSurface7_SetPriority(p,a)             (p)->lpVtbl->SetPriority(p,a)
2093
#define IDirectDrawSurface7_GetPriority(p,a)             (p)->lpVtbl->GetPriority(p,a)
2094
#define IDirectDrawSurface7_SetLOD(p,a)                  (p)->lpVtbl->SetLOD(p,a)
2095
#define IDirectDrawSurface7_GetLOD(p,a)                  (p)->lpVtbl->GetLOD(p,a)
2096
#else
2097
#define IDirectDrawSurface7_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
2098
#define IDirectDrawSurface7_AddRef(p)                    (p)->AddRef()
2099
#define IDirectDrawSurface7_Release(p)                   (p)->Release()
2100
#define IDirectDrawSurface7_AddAttachedSurface(p,a)      (p)->AddAttachedSurface(a)
2101
#define IDirectDrawSurface7_AddOverlayDirtyRect(p,a)     (p)->AddOverlayDirtyRect(a)
2102
#define IDirectDrawSurface7_Blt(p,a,b,c,d,e)             (p)->Blt(a,b,c,d,e)
2103
#define IDirectDrawSurface7_BltBatch(p,a,b,c)            (p)->BltBatch(a,b,c)
2104
#define IDirectDrawSurface7_BltFast(p,a,b,c,d,e)         (p)->BltFast(a,b,c,d,e)
2105
#define IDirectDrawSurface7_DeleteAttachedSurface(p,a,b) (p)->DeleteAttachedSurface(a,b)
2106
#define IDirectDrawSurface7_EnumAttachedSurfaces(p,a,b)  (p)->EnumAttachedSurfaces(a,b)
2107
#define IDirectDrawSurface7_EnumOverlayZOrders(p,a,b,c)  (p)->EnumOverlayZOrders(a,b,c)
2108
#define IDirectDrawSurface7_Flip(p,a,b)                  (p)->Flip(a,b)
2109
#define IDirectDrawSurface7_GetAttachedSurface(p,a,b)    (p)->GetAttachedSurface(a,b)
2110
#define IDirectDrawSurface7_GetBltStatus(p,a)            (p)->GetBltStatus(a)
2111
#define IDirectDrawSurface7_GetCaps(p,b)                 (p)->GetCaps(b)
2112
#define IDirectDrawSurface7_GetClipper(p,a)              (p)->GetClipper(a)
2113
#define IDirectDrawSurface7_GetColorKey(p,a,b)           (p)->GetColorKey(a,b)
2114
#define IDirectDrawSurface7_GetDC(p,a)                   (p)->GetDC(a)
2115
#define IDirectDrawSurface7_GetFlipStatus(p,a)           (p)->GetFlipStatus(a)
2116
#define IDirectDrawSurface7_GetOverlayPosition(p,a,b)    (p)->GetOverlayPosition(a,b)
2117
#define IDirectDrawSurface7_GetPalette(p,a)              (p)->GetPalette(a)
2118
#define IDirectDrawSurface7_GetPixelFormat(p,a)          (p)->GetPixelFormat(a)
2119
#define IDirectDrawSurface7_GetSurfaceDesc(p,a)          (p)->GetSurfaceDesc(a)
2120
#define IDirectDrawSurface7_Initialize(p,a,b)            (p)->Initialize(a,b)
2121
#define IDirectDrawSurface7_IsLost(p)                    (p)->IsLost()
2122
#define IDirectDrawSurface7_Lock(p,a,b,c,d)              (p)->Lock(a,b,c,d)
2123
#define IDirectDrawSurface7_ReleaseDC(p,a)               (p)->ReleaseDC(a)
2124
#define IDirectDrawSurface7_Restore(p)                   (p)->Restore()
2125
#define IDirectDrawSurface7_SetClipper(p,a)              (p)->SetClipper(a)
2126
#define IDirectDrawSurface7_SetColorKey(p,a,b)           (p)->SetColorKey(a,b)
2127
#define IDirectDrawSurface7_SetOverlayPosition(p,a,b)    (p)->SetOverlayPosition(a,b)
2128
#define IDirectDrawSurface7_SetPalette(p,a)              (p)->SetPalette(a)
2129
#define IDirectDrawSurface7_Unlock(p,b)                  (p)->Unlock(b)
2130
#define IDirectDrawSurface7_UpdateOverlay(p,a,b,c,d,e)   (p)->UpdateOverlay(a,b,c,d,e)
2131
#define IDirectDrawSurface7_UpdateOverlayDisplay(p,a)    (p)->UpdateOverlayDisplay(a)
2132
#define IDirectDrawSurface7_UpdateOverlayZOrder(p,a,b)   (p)->UpdateOverlayZOrder(a,b)
2133
#define IDirectDrawSurface7_GetDDInterface(p,a)          (p)->GetDDInterface(a)
2134
#define IDirectDrawSurface7_PageLock(p,a)                (p)->PageLock(a)
2135
#define IDirectDrawSurface7_PageUnlock(p,a)              (p)->PageUnlock(a)
2136
#define IDirectDrawSurface7_SetSurfaceDesc(p,a,b)        (p)->SetSurfaceDesc(a,b)
2137
#define IDirectDrawSurface7_SetPrivateData(p,a,b,c,d)    (p)->SetPrivateData(a,b,c,d)
2138
#define IDirectDrawSurface7_GetPrivateData(p,a,b,c)      (p)->GetPrivateData(a,b,c)
2139
#define IDirectDrawSurface7_FreePrivateData(p,a)         (p)->FreePrivateData(a)
2140
#define IDirectDrawSurface7_GetUniquenessValue(p, a)     (p)->GetUniquenessValue(a)
2141
#define IDirectDrawSurface7_ChangeUniquenessValue(p)     (p)->ChangeUniquenessValue()
2142
#define IDirectDrawSurface7_SetPriority(p,a)             (p)->SetPriority(a)
2143
#define IDirectDrawSurface7_GetPriority(p,a)             (p)->GetPriority(a)
2144
#define IDirectDrawSurface7_SetLOD(p,a)                  (p)->SetLOD(a)
2145
#define IDirectDrawSurface7_GetLOD(p,a)                  (p)->GetLOD(a)
2146
#endif
2147
 
2148
 
2149
/*
2150
 * IDirectDrawColorControl
2151
 */
2152
#if defined( _WIN32 ) && !defined( _NO_COM )
2153
#undef INTERFACE
2154
#define INTERFACE IDirectDrawColorControl
2155
DECLARE_INTERFACE_( IDirectDrawColorControl, IUnknown )
2156
{
2157
    /*** IUnknown methods ***/
2158
    STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE;
2159
    STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
2160
    STDMETHOD_(ULONG,Release) (THIS) PURE;
2161
    /*** IDirectDrawColorControl methods ***/
2162
    STDMETHOD(GetColorControls)(THIS_ LPDDCOLORCONTROL) PURE;
2163
    STDMETHOD(SetColorControls)(THIS_ LPDDCOLORCONTROL) PURE;
2164
};
2165
 
2166
#if !defined(__cplusplus) || defined(CINTERFACE)
2167
#define IDirectDrawColorControl_QueryInterface(p, a, b)  (p)->lpVtbl->QueryInterface(p, a, b)
2168
#define IDirectDrawColorControl_AddRef(p)                (p)->lpVtbl->AddRef(p)
2169
#define IDirectDrawColorControl_Release(p)               (p)->lpVtbl->Release(p)
2170
#define IDirectDrawColorControl_GetColorControls(p, a)   (p)->lpVtbl->GetColorControls(p, a)
2171
#define IDirectDrawColorControl_SetColorControls(p, a)   (p)->lpVtbl->SetColorControls(p, a)
2172
#else
2173
#define IDirectDrawColorControl_QueryInterface(p, a, b)  (p)->QueryInterface(a, b)
2174
#define IDirectDrawColorControl_AddRef(p)                (p)->AddRef()
2175
#define IDirectDrawColorControl_Release(p)               (p)->Release()
2176
#define IDirectDrawColorControl_GetColorControls(p, a)   (p)->GetColorControls(a)
2177
#define IDirectDrawColorControl_SetColorControls(p, a)   (p)->SetColorControls(a)
2178
#endif
2179
 
2180
#endif
2181
 
2182
 
2183
/*
2184
 * IDirectDrawGammaControl
2185
 */
2186
#if defined( _WIN32 ) && !defined( _NO_COM )
2187
#undef INTERFACE
2188
#define INTERFACE IDirectDrawGammaControl
2189
DECLARE_INTERFACE_( IDirectDrawGammaControl, IUnknown )
2190
{
2191
    /*** IUnknown methods ***/
2192
    STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE;
2193
    STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
2194
    STDMETHOD_(ULONG,Release) (THIS) PURE;
2195
    /*** IDirectDrawGammaControl methods ***/
2196
    STDMETHOD(GetGammaRamp)(THIS_ DWORD, LPDDGAMMARAMP) PURE;
2197
    STDMETHOD(SetGammaRamp)(THIS_ DWORD, LPDDGAMMARAMP) PURE;
2198
};
2199
 
2200
#if !defined(__cplusplus) || defined(CINTERFACE)
2201
#define IDirectDrawGammaControl_QueryInterface(p, a, b)  (p)->lpVtbl->QueryInterface(p, a, b)
2202
#define IDirectDrawGammaControl_AddRef(p)                (p)->lpVtbl->AddRef(p)
2203
#define IDirectDrawGammaControl_Release(p)               (p)->lpVtbl->Release(p)
2204
#define IDirectDrawGammaControl_GetGammaRamp(p, a, b)    (p)->lpVtbl->GetGammaRamp(p, a, b)
2205
#define IDirectDrawGammaControl_SetGammaRamp(p, a, b)    (p)->lpVtbl->SetGammaRamp(p, a, b)
2206
#else
2207
#define IDirectDrawGammaControl_QueryInterface(p, a, b)  (p)->QueryInterface(a, b)
2208
#define IDirectDrawGammaControl_AddRef(p)                (p)->AddRef()
2209
#define IDirectDrawGammaControl_Release(p)               (p)->Release()
2210
#define IDirectDrawGammaControl_GetGammaRamp(p, a, b)    (p)->GetGammaRamp(a, b)
2211
#define IDirectDrawGammaControl_SetGammaRamp(p, a, b)    (p)->SetGammaRamp(a, b)
2212
#endif
2213
 
2214
#endif
2215
 
2216
 
2217
 
2218
#endif
2219
 
2220
 
2221
/*
2222
 * DDSURFACEDESC
2223
 */
2224
typedef struct _DDSURFACEDESC
2225
{
2226
    DWORD               dwSize;                 // size of the DDSURFACEDESC structure
2227
    DWORD               dwFlags;                // determines what fields are valid
2228
    DWORD               dwHeight;               // height of surface to be created
2229
    DWORD               dwWidth;                // width of input surface
2230
    union
2231
    {
2232
        LONG            lPitch;                 // distance to start of next line (return value only)
2233
        DWORD           dwLinearSize;           // Formless late-allocated optimized surface size
2234
    } DUMMYUNIONNAMEN(1);
2235
    DWORD               dwBackBufferCount;      // number of back buffers requested
2236
    union
2237
    {
2238
        DWORD           dwMipMapCount;          // number of mip-map levels requested
2239
        DWORD           dwZBufferBitDepth;      // depth of Z buffer requested
2240
        DWORD           dwRefreshRate;          // refresh rate (used when display mode is described)
2241
    } DUMMYUNIONNAMEN(2);
2242
    DWORD               dwAlphaBitDepth;        // depth of alpha buffer requested
2243
    DWORD               dwReserved;             // reserved
2244
    LPVOID              lpSurface;              // pointer to the associated surface memory
2245
    DDCOLORKEY          ddckCKDestOverlay;      // color key for destination overlay use
2246
    DDCOLORKEY          ddckCKDestBlt;          // color key for destination blt use
2247
    DDCOLORKEY          ddckCKSrcOverlay;       // color key for source overlay use
2248
    DDCOLORKEY          ddckCKSrcBlt;           // color key for source blt use
2249
    DDPIXELFORMAT       ddpfPixelFormat;        // pixel format description of the surface
2250
    DDSCAPS             ddsCaps;                // direct draw surface capabilities
2251
} DDSURFACEDESC;
2252
 
2253
/*
2254
 * DDSURFACEDESC2
2255
 */
2256
typedef struct _DDSURFACEDESC2
2257
{
2258
    DWORD               dwSize;                 // size of the DDSURFACEDESC structure
2259
    DWORD               dwFlags;                // determines what fields are valid
2260
    DWORD               dwHeight;               // height of surface to be created
2261
    DWORD               dwWidth;                // width of input surface
2262
    union
2263
    {
2264
        LONG            lPitch;                 // distance to start of next line (return value only)
2265
        DWORD           dwLinearSize;           // Formless late-allocated optimized surface size
2266
    } DUMMYUNIONNAMEN(1);
2267
    union
2268
    {
2269
        DWORD           dwBackBufferCount;      // number of back buffers requested
2270
        DWORD           dwDepth;                // the depth if this is a volume texture 
2271
    } DUMMYUNIONNAMEN(5);
2272
    union
2273
    {
2274
        DWORD           dwMipMapCount;          // number of mip-map levels requestde
2275
                                                // dwZBufferBitDepth removed, use ddpfPixelFormat one instead
2276
        DWORD           dwRefreshRate;          // refresh rate (used when display mode is described)
2277
        DWORD           dwSrcVBHandle;          // The source used in VB::Optimize
2278
    } DUMMYUNIONNAMEN(2);
2279
    DWORD               dwAlphaBitDepth;        // depth of alpha buffer requested
2280
    DWORD               dwReserved;             // reserved
2281
    LPVOID              lpSurface;              // pointer to the associated surface memory
2282
    union
2283
    {
2284
        DDCOLORKEY      ddckCKDestOverlay;      // color key for destination overlay use
2285
        DWORD           dwEmptyFaceColor;       // Physical color for empty cubemap faces
2286
    } DUMMYUNIONNAMEN(3);
2287
    DDCOLORKEY          ddckCKDestBlt;          // color key for destination blt use
2288
    DDCOLORKEY          ddckCKSrcOverlay;       // color key for source overlay use
2289
    DDCOLORKEY          ddckCKSrcBlt;           // color key for source blt use
2290
    union
2291
    {
2292
        DDPIXELFORMAT   ddpfPixelFormat;        // pixel format description of the surface
2293
        DWORD           dwFVF;                  // vertex format description of vertex buffers
2294
    } DUMMYUNIONNAMEN(4);
2295
    DDSCAPS2            ddsCaps;                // direct draw surface capabilities
2296
    DWORD               dwTextureStage;         // stage in multitexture cascade
2297
} DDSURFACEDESC2;
2298
 
2299
/*
2300
 * ddsCaps field is valid.
2301
 */
2302
#define DDSD_CAPS               0x00000001l     // default
2303
 
2304
/*
2305
 * dwHeight field is valid.
2306
 */
2307
#define DDSD_HEIGHT             0x00000002l
2308
 
2309
/*
2310
 * dwWidth field is valid.
2311
 */
2312
#define DDSD_WIDTH              0x00000004l
2313
 
2314
/*
2315
 * lPitch is valid.
2316
 */
2317
#define DDSD_PITCH              0x00000008l
2318
 
2319
/*
2320
 * dwBackBufferCount is valid.
2321
 */
2322
#define DDSD_BACKBUFFERCOUNT    0x00000020l
2323
 
2324
/*
2325
 * dwZBufferBitDepth is valid.  (shouldnt be used in DDSURFACEDESC2)
2326
 */
2327
#define DDSD_ZBUFFERBITDEPTH    0x00000040l
2328
 
2329
/*
2330
 * dwAlphaBitDepth is valid.
2331
 */
2332
#define DDSD_ALPHABITDEPTH      0x00000080l
2333
 
2334
 
2335
/*
2336
 * lpSurface is valid.
2337
 */
2338
#define DDSD_LPSURFACE          0x00000800l
2339
 
2340
/*
2341
 * ddpfPixelFormat is valid.
2342
 */
2343
#define DDSD_PIXELFORMAT        0x00001000l
2344
 
2345
/*
2346
 * ddckCKDestOverlay is valid.
2347
 */
2348
#define DDSD_CKDESTOVERLAY      0x00002000l
2349
 
2350
/*
2351
 * ddckCKDestBlt is valid.
2352
 */
2353
#define DDSD_CKDESTBLT          0x00004000l
2354
 
2355
/*
2356
 * ddckCKSrcOverlay is valid.
2357
 */
2358
#define DDSD_CKSRCOVERLAY       0x00008000l
2359
 
2360
/*
2361
 * ddckCKSrcBlt is valid.
2362
 */
2363
#define DDSD_CKSRCBLT           0x00010000l
2364
 
2365
/*
2366
 * dwMipMapCount is valid.
2367
 */
2368
#define DDSD_MIPMAPCOUNT        0x00020000l
2369
 
2370
 /*
2371
  * dwRefreshRate is valid
2372
  */
2373
#define DDSD_REFRESHRATE        0x00040000l
2374
 
2375
/*
2376
 * dwLinearSize is valid
2377
 */
2378
#define DDSD_LINEARSIZE         0x00080000l
2379
 
2380
/*
2381
 * dwTextureStage is valid
2382
 */
2383
#define DDSD_TEXTURESTAGE       0x00100000l
2384
/*
2385
 * dwFVF is valid
2386
 */
2387
#define DDSD_FVF                0x00200000l
2388
/*
2389
 * dwSrcVBHandle is valid
2390
 */
2391
#define DDSD_SRCVBHANDLE        0x00400000l
2392
 
2393
/*
2394
 * dwDepth is valid
2395
 */
2396
#define DDSD_DEPTH              0x00800000l
2397
 
2398
/*
2399
 * All input fields are valid.
2400
 */
2401
#define DDSD_ALL                0x00fff9eel
2402
 
2403
/*
2404
 * DDOPTSURFACEDESC
2405
 */
2406
typedef struct _DDOPTSURFACEDESC
2407
{
2408
    DWORD       dwSize;             // size of the DDOPTSURFACEDESC structure
2409
    DWORD       dwFlags;            // determines what fields are valid
2410
    DDSCAPS2    ddSCaps;            // Common caps like: Memory type
2411
    DDOSCAPS    ddOSCaps;           // Common caps like: Memory type
2412
    GUID        guid;               // Compression technique GUID
2413
    DWORD       dwCompressionRatio; // Compression ratio
2414
} DDOPTSURFACEDESC;
2415
 
2416
/*
2417
 * guid field is valid.
2418
 */
2419
#define DDOSD_GUID                  0x00000001l
2420
 
2421
/*
2422
 * dwCompressionRatio field is valid.
2423
 */
2424
#define DDOSD_COMPRESSION_RATIO     0x00000002l
2425
 
2426
/*
2427
 * ddSCaps field is valid.
2428
 */
2429
#define DDOSD_SCAPS                 0x00000004l
2430
 
2431
/*
2432
 * ddOSCaps field is valid.
2433
 */
2434
#define DDOSD_OSCAPS                0x00000008l
2435
 
2436
/*
2437
 * All input fields are valid.
2438
 */
2439
#define DDOSD_ALL                   0x0000000fl
2440
 
2441
/*
2442
 * The surface's optimized pixelformat is compressed
2443
 */
2444
#define DDOSDCAPS_OPTCOMPRESSED                 0x00000001l
2445
 
2446
/*
2447
 * The surface's optimized pixelformat is reordered
2448
 */
2449
#define DDOSDCAPS_OPTREORDERED                  0x00000002l
2450
 
2451
/*
2452
 * The opt surface is a monolithic mipmap
2453
 */
2454
#define DDOSDCAPS_MONOLITHICMIPMAP              0x00000004l
2455
 
2456
/*
2457
 * The valid Surf caps:
2458
 * #define DDSCAPS_SYSTEMMEMORY                 0x00000800l
2459
 * #define DDSCAPS_VIDEOMEMORY          0x00004000l
2460
 * #define DDSCAPS_LOCALVIDMEM          0x10000000l
2461
 * #define DDSCAPS_NONLOCALVIDMEM       0x20000000l
2462
 */
2463
#define DDOSDCAPS_VALIDSCAPS            0x30004800l
2464
 
2465
/*
2466
 * The valid OptSurf caps
2467
 */
2468
#define DDOSDCAPS_VALIDOSCAPS           0x00000007l
2469
 
2470
 
2471
/*
2472
 * DDCOLORCONTROL
2473
 */
2474
typedef struct _DDCOLORCONTROL
2475
{
2476
    DWORD               dwSize;
2477
    DWORD               dwFlags;
2478
    LONG                lBrightness;
2479
    LONG                lContrast;
2480
    LONG                lHue;
2481
    LONG                lSaturation;
2482
    LONG                lSharpness;
2483
    LONG                lGamma;
2484
    LONG                lColorEnable;
2485
    DWORD               dwReserved1;
2486
} DDCOLORCONTROL;
2487
 
2488
 
2489
/*
2490
 * lBrightness field is valid.
2491
 */
2492
#define DDCOLOR_BRIGHTNESS              0x00000001l
2493
 
2494
/*
2495
 * lContrast field is valid.
2496
 */
2497
#define DDCOLOR_CONTRAST                0x00000002l
2498
 
2499
/*
2500
 * lHue field is valid.
2501
 */
2502
#define DDCOLOR_HUE                     0x00000004l
2503
 
2504
/*
2505
 * lSaturation field is valid.
2506
 */
2507
#define DDCOLOR_SATURATION              0x00000008l
2508
 
2509
/*
2510
 * lSharpness field is valid.
2511
 */
2512
#define DDCOLOR_SHARPNESS               0x00000010l
2513
 
2514
/*
2515
 * lGamma field is valid.
2516
 */
2517
#define DDCOLOR_GAMMA                   0x00000020l
2518
 
2519
/*
2520
 * lColorEnable field is valid.
2521
 */
2522
#define DDCOLOR_COLORENABLE             0x00000040l
2523
 
2524
 
2525
 
2526
/*============================================================================
2527
 *
2528
 * Direct Draw Capability Flags
2529
 *
2530
 * These flags are used to describe the capabilities of a given Surface.
2531
 * All flags are bit flags.
2532
 *
2533
 *==========================================================================*/
2534
 
2535
/****************************************************************************
2536
 *
2537
 * DIRECTDRAWSURFACE CAPABILITY FLAGS
2538
 *
2539
 ****************************************************************************/
2540
 
2541
/*
2542
 * This bit is reserved. It should not be specified.
2543
 */
2544
#define DDSCAPS_RESERVED1                       0x00000001l
2545
 
2546
/*
2547
 * Indicates that this surface contains alpha-only information.
2548
 * (To determine if a surface is RGBA/YUVA, the pixel format must be
2549
 * interrogated.)
2550
 */
2551
#define DDSCAPS_ALPHA                           0x00000002l
2552
 
2553
/*
2554
 * Indicates that this surface is a backbuffer.  It is generally
2555
 * set by CreateSurface when the DDSCAPS_FLIP capability bit is set.
2556
 * It indicates that this surface is THE back buffer of a surface
2557
 * flipping structure.  DirectDraw supports N surfaces in a
2558
 * surface flipping structure.  Only the surface that immediately
2559
 * precedeces the DDSCAPS_FRONTBUFFER has this capability bit set.
2560
 * The other surfaces are identified as back buffers by the presence
2561
 * of the DDSCAPS_FLIP capability, their attachment order, and the
2562
 * absence of the DDSCAPS_FRONTBUFFER and DDSCAPS_BACKBUFFER
2563
 * capabilities.  The bit is sent to CreateSurface when a standalone
2564
 * back buffer is being created.  This surface could be attached to
2565
 * a front buffer and/or back buffers to form a flipping surface
2566
 * structure after the CreateSurface call.  See AddAttachments for
2567
 * a detailed description of the behaviors in this case.
2568
 */
2569
#define DDSCAPS_BACKBUFFER                      0x00000004l
2570
 
2571
/*
2572
 * Indicates a complex surface structure is being described.  A
2573
 * complex surface structure results in the creation of more than
2574
 * one surface.  The additional surfaces are attached to the root
2575
 * surface.  The complex structure can only be destroyed by
2576
 * destroying the root.
2577
 */
2578
#define DDSCAPS_COMPLEX                         0x00000008l
2579
 
2580
/*
2581
 * Indicates that this surface is a part of a surface flipping structure.
2582
 * When it is passed to CreateSurface the DDSCAPS_FRONTBUFFER and
2583
 * DDSCAP_BACKBUFFER bits are not set.  They are set by CreateSurface
2584
 * on the resulting creations.  The dwBackBufferCount field in the
2585
 * DDSURFACEDESC structure must be set to at least 1 in order for
2586
 * the CreateSurface call to succeed.  The DDSCAPS_COMPLEX capability
2587
 * must always be set with creating multiple surfaces through CreateSurface.
2588
 */
2589
#define DDSCAPS_FLIP                            0x00000010l
2590
 
2591
/*
2592
 * Indicates that this surface is THE front buffer of a surface flipping
2593
 * structure.  It is generally set by CreateSurface when the DDSCAPS_FLIP
2594
 * capability bit is set.
2595
 * If this capability is sent to CreateSurface then a standalonw front buffer
2596
 * is created.  This surface will not have the DDSCAPS_FLIP capability.
2597
 * It can be attached to other back buffers to form a flipping structure.
2598
 * See AddAttachments for a detailed description of the behaviors in this
2599
 * case.
2600
 */
2601
#define DDSCAPS_FRONTBUFFER                     0x00000020l
2602
 
2603
/*
2604
 * Indicates that this surface is any offscreen surface that is not an overlay,
2605
 * texture, zbuffer, front buffer, back buffer, or alpha surface.  It is used
2606
 * to identify plain vanilla surfaces.
2607
 */
2608
#define DDSCAPS_OFFSCREENPLAIN                  0x00000040l
2609
 
2610
/*
2611
 * Indicates that this surface is an overlay.  It may or may not be directly visible
2612
 * depending on whether or not it is currently being overlayed onto the primary
2613
 * surface.  DDSCAPS_VISIBLE can be used to determine whether or not it is being
2614
 * overlayed at the moment.
2615
 */
2616
#define DDSCAPS_OVERLAY                         0x00000080l
2617
 
2618
/*
2619
 * Indicates that unique DirectDrawPalette objects can be created and
2620
 * attached to this surface.
2621
 */
2622
#define DDSCAPS_PALETTE                         0x00000100l
2623
 
2624
/*
2625
 * Indicates that this surface is the primary surface.  The primary
2626
 * surface represents what the user is seeing at the moment.
2627
 */
2628
#define DDSCAPS_PRIMARYSURFACE                  0x00000200l
2629
 
2630
 
2631
/*
2632
 * This flag used to be DDSCAPS_PRIMARYSURFACELEFT, which is now
2633
 * obsolete.
2634
 */
2635
#define DDSCAPS_RESERVED3               0x00000400l
2636
#define DDSCAPS_PRIMARYSURFACELEFT              0x00000000l
2637
 
2638
/*
2639
 * Indicates that this surface memory was allocated in system memory
2640
 */
2641
#define DDSCAPS_SYSTEMMEMORY                    0x00000800l
2642
 
2643
/*
2644
 * Indicates that this surface can be used as a 3D texture.  It does not
2645
 * indicate whether or not the surface is being used for that purpose.
2646
 */
2647
#define DDSCAPS_TEXTURE                         0x00001000l
2648
 
2649
/*
2650
 * Indicates that a surface may be a destination for 3D rendering.  This
2651
 * bit must be set in order to query for a Direct3D Device Interface
2652
 * from this surface.
2653
 */
2654
#define DDSCAPS_3DDEVICE                        0x00002000l
2655
 
2656
/*
2657
 * Indicates that this surface exists in video memory.
2658
 */
2659
#define DDSCAPS_VIDEOMEMORY                     0x00004000l
2660
 
2661
/*
2662
 * Indicates that changes made to this surface are immediately visible.
2663
 * It is always set for the primary surface and is set for overlays while
2664
 * they are being overlayed and texture maps while they are being textured.
2665
 */
2666
#define DDSCAPS_VISIBLE                         0x00008000l
2667
 
2668
/*
2669
 * Indicates that only writes are permitted to the surface.  Read accesses
2670
 * from the surface may or may not generate a protection fault, but the
2671
 * results of a read from this surface will not be meaningful.  READ ONLY.
2672
 */
2673
#define DDSCAPS_WRITEONLY                       0x00010000l
2674
 
2675
/*
2676
 * Indicates that this surface is a z buffer. A z buffer does not contain
2677
 * displayable information.  Instead it contains bit depth information that is
2678
 * used to determine which pixels are visible and which are obscured.
2679
 */
2680
#define DDSCAPS_ZBUFFER                         0x00020000l
2681
 
2682
/*
2683
 * Indicates surface will have a DC associated long term
2684
 */
2685
#define DDSCAPS_OWNDC                           0x00040000l
2686
 
2687
/*
2688
 * Indicates surface should be able to receive live video
2689
 */
2690
#define DDSCAPS_LIVEVIDEO                       0x00080000l
2691
 
2692
/*
2693
 * Indicates surface should be able to have a stream decompressed
2694
 * to it by the hardware.
2695
 */
2696
#define DDSCAPS_HWCODEC                         0x00100000l
2697
 
2698
/*
2699
 * Surface is a ModeX surface.
2700
 *
2701
 */
2702
#define DDSCAPS_MODEX                           0x00200000l
2703
 
2704
/*
2705
 * Indicates surface is one level of a mip-map. This surface will
2706
 * be attached to other DDSCAPS_MIPMAP surfaces to form the mip-map.
2707
 * This can be done explicitly, by creating a number of surfaces and
2708
 * attaching them with AddAttachedSurface or by implicitly by CreateSurface.
2709
 * If this bit is set then DDSCAPS_TEXTURE must also be set.
2710
 */
2711
#define DDSCAPS_MIPMAP                          0x00400000l
2712
 
2713
/*
2714
 * This bit is reserved. It should not be specified.
2715
 */
2716
#define DDSCAPS_RESERVED2                       0x00800000l
2717
 
2718
 
2719
/*
2720
 * Indicates that memory for the surface is not allocated until the surface
2721
 * is loaded (via the Direct3D texture Load() function).
2722
 */
2723
#define DDSCAPS_ALLOCONLOAD                     0x04000000l
2724
 
2725
/*
2726
 * Indicates that the surface will recieve data from a video port.
2727
 */
2728
#define DDSCAPS_VIDEOPORT                       0x08000000l
2729
 
2730
/*
2731
 * Indicates that a video memory surface is resident in true, local video
2732
 * memory rather than non-local video memory. If this flag is specified then
2733
 * so must DDSCAPS_VIDEOMEMORY. This flag is mutually exclusive with
2734
 * DDSCAPS_NONLOCALVIDMEM.
2735
 */
2736
#define DDSCAPS_LOCALVIDMEM                     0x10000000l
2737
 
2738
/*
2739
 * Indicates that a video memory surface is resident in non-local video
2740
 * memory rather than true, local video memory. If this flag is specified
2741
 * then so must DDSCAPS_VIDEOMEMORY. This flag is mutually exclusive with
2742
 * DDSCAPS_LOCALVIDMEM.
2743
 */
2744
#define DDSCAPS_NONLOCALVIDMEM                  0x20000000l
2745
 
2746
/*
2747
 * Indicates that this surface is a standard VGA mode surface, and not a
2748
 * ModeX surface. (This flag will never be set in combination with the
2749
 * DDSCAPS_MODEX flag).
2750
 */
2751
#define DDSCAPS_STANDARDVGAMODE                 0x40000000l
2752
 
2753
/*
2754
 * Indicates that this surface will be an optimized surface. This flag is
2755
 * currently only valid in conjunction with the DDSCAPS_TEXTURE flag. The surface
2756
 * will be created without any underlying video memory until loaded.
2757
 */
2758
#define DDSCAPS_OPTIMIZED                       0x80000000l
2759
 
2760
 
2761
 
2762
/*
2763
 * This bit is reserved
2764
 */
2765
#define DDSCAPS2_RESERVED4                      0x00000002L
2766
#define DDSCAPS2_HARDWAREDEINTERLACE            0x00000000L
2767
 
2768
/*
2769
 * Indicates to the driver that this surface will be locked very frequently
2770
 * (for procedural textures, dynamic lightmaps, etc). Surfaces with this cap
2771
 * set must also have DDSCAPS_TEXTURE. This cap cannot be used with
2772
 * DDSCAPS2_HINTSTATIC and DDSCAPS2_OPAQUE.
2773
 */
2774
#define DDSCAPS2_HINTDYNAMIC                    0x00000004L
2775
 
2776
/*
2777
 * Indicates to the driver that this surface can be re-ordered/retiled on
2778
 * load. This operation will not change the size of the texture. It is
2779
 * relatively fast and symmetrical, since the application may lock these
2780
 * bits (although it will take a performance hit when doing so). Surfaces
2781
 * with this cap set must also have DDSCAPS_TEXTURE. This cap cannot be
2782
 * used with DDSCAPS2_HINTDYNAMIC and DDSCAPS2_OPAQUE.
2783
 */
2784
#define DDSCAPS2_HINTSTATIC                     0x00000008L
2785
 
2786
/*
2787
 * Indicates that the client would like this texture surface to be managed by the
2788
 * DirectDraw/Direct3D runtime. Surfaces with this cap set must also have
2789
 * DDSCAPS_TEXTURE set.
2790
 */
2791
#define DDSCAPS2_TEXTUREMANAGE                  0x00000010L
2792
 
2793
/*
2794
 * These bits are reserved for internal use */
2795
#define DDSCAPS2_RESERVED1                      0x00000020L
2796
#define DDSCAPS2_RESERVED2                      0x00000040L
2797
 
2798
/*
2799
 * Indicates to the driver that this surface will never be locked again.
2800
 * The driver is free to optimize this surface via retiling and actual compression.
2801
 * All calls to Lock() or Blts from this surface will fail. Surfaces with this
2802
 * cap set must also have DDSCAPS_TEXTURE. This cap cannot be used with
2803
 * DDSCAPS2_HINTDYNAMIC and DDSCAPS2_HINTSTATIC.
2804
 */
2805
#define DDSCAPS2_OPAQUE                         0x00000080L
2806
 
2807
/*
2808
 * Applications should set this bit at CreateSurface time to indicate that they
2809
 * intend to use antialiasing. Only valid if DDSCAPS_3DDEVICE is also set.
2810
 */
2811
#define DDSCAPS2_HINTANTIALIASING               0x00000100L
2812
 
2813
 
2814
/*
2815
 * This flag is used at CreateSurface time to indicate that this set of
2816
 * surfaces is a cubic environment map
2817
 */
2818
#define DDSCAPS2_CUBEMAP                        0x00000200L
2819
 
2820
/*
2821
 * These flags preform two functions:
2822
 * - At CreateSurface time, they define which of the six cube faces are
2823
 *   required by the application.
2824
 * - After creation, each face in the cubemap will have exactly one of these
2825
 *   bits set.
2826
 */
2827
#define DDSCAPS2_CUBEMAP_POSITIVEX              0x00000400L
2828
#define DDSCAPS2_CUBEMAP_NEGATIVEX              0x00000800L
2829
#define DDSCAPS2_CUBEMAP_POSITIVEY              0x00001000L
2830
#define DDSCAPS2_CUBEMAP_NEGATIVEY              0x00002000L
2831
#define DDSCAPS2_CUBEMAP_POSITIVEZ              0x00004000L
2832
#define DDSCAPS2_CUBEMAP_NEGATIVEZ              0x00008000L
2833
 
2834
/*
2835
 * This macro may be used to specify all faces of a cube map at CreateSurface time
2836
 */
2837
#define DDSCAPS2_CUBEMAP_ALLFACES ( DDSCAPS2_CUBEMAP_POSITIVEX |\
2838
                                    DDSCAPS2_CUBEMAP_NEGATIVEX |\
2839
                                    DDSCAPS2_CUBEMAP_POSITIVEY |\
2840
                                    DDSCAPS2_CUBEMAP_NEGATIVEY |\
2841
                                    DDSCAPS2_CUBEMAP_POSITIVEZ |\
2842
                                    DDSCAPS2_CUBEMAP_NEGATIVEZ )
2843
 
2844
 
2845
/*
2846
 * This flag is an additional flag which is present on mipmap sublevels from DX7 onwards
2847
 * It enables easier use of GetAttachedSurface rather than EnumAttachedSurfaces for surface
2848
 * constructs such as Cube Maps, wherein there are more than one mipmap surface attached
2849
 * to the root surface.
2850
 * This caps bit is ignored by CreateSurface
2851
 */
2852
#define DDSCAPS2_MIPMAPSUBLEVEL                 0x00010000L
2853
 
2854
/* This flag indicates that the texture should be managed by D3D only */
2855
#define DDSCAPS2_D3DTEXTUREMANAGE               0x00020000L
2856
 
2857
/* This flag indicates that the managed surface can be safely lost */
2858
#define DDSCAPS2_DONOTPERSIST                   0x00040000L
2859
 
2860
/* indicates that this surface is part of a stereo flipping chain */
2861
#define DDSCAPS2_STEREOSURFACELEFT              0x00080000L
2862
 
2863
 
2864
/*
2865
 * Indicates that the surface is a volume.
2866
 * Can be combined with DDSCAPS_MIPMAP to indicate a multi-level volume
2867
 */
2868
#define DDSCAPS2_VOLUME                         0x00200000L
2869
 
2870
/*
2871
 * Indicates that the surface may be locked multiple times by the application.
2872
 * This cap cannot be used with DDSCAPS2_OPAQUE.
2873
 */
2874
#define DDSCAPS2_NOTUSERLOCKABLE                0x00400000L
2875
 
2876
/*
2877
 * Indicates that the vertex buffer data can be used to render points and
2878
 * point sprites.
2879
 */
2880
#define DDSCAPS2_POINTS                         0x00800000L
2881
 
2882
/*
2883
 * Indicates that the vertex buffer data can be used to render rt pactches.
2884
 */
2885
#define DDSCAPS2_RTPATCHES                      0x01000000L
2886
 
2887
/*
2888
 * Indicates that the vertex buffer data can be used to render n patches.
2889
 */
2890
#define DDSCAPS2_NPATCHES                       0x02000000L
2891
 
2892
/*
2893
 * This bit is reserved for internal use
2894
 */
2895
#define DDSCAPS2_RESERVED3                      0x04000000L
2896
 
2897
 
2898
/*
2899
 * Indicates that the contents of the backbuffer do not have to be preserved
2900
 * the contents of the backbuffer after they are presented.
2901
 */
2902
#define DDSCAPS2_DISCARDBACKBUFFER              0x10000000L
2903
 
2904
/*
2905
 * Indicates that all surfaces in this creation chain should be given an alpha channel.
2906
 * This flag will be set on primary surface chains that may have no explicit pixel format
2907
 * (and thus take on the format of the current display mode).
2908
 * The driver should infer that all these surfaces have a format having an alpha channel.
2909
 * (e.g. assume D3DFMT_A8R8G8B8 if the display mode is x888.)
2910
 */
2911
#define DDSCAPS2_ENABLEALPHACHANNEL             0x20000000L
2912
 
2913
/*
2914
 * Indicates that all surfaces in this creation chain is extended primary surface format.
2915
 * This flag will be set on extended primary surface chains that always have explicit pixel
2916
 * format and the pixel format is typically GDI (Graphics Device Interface) couldn't handle,
2917
 * thus only used with fullscreen application. (e.g. D3DFMT_A2R10G10B10 format)
2918
 */
2919
#define DDSCAPS2_EXTENDEDFORMATPRIMARY          0x40000000L
2920
 
2921
/*
2922
 * Indicates that all surfaces in this creation chain is additional primary surface.
2923
 * This flag will be set on primary surface chains which must present on the adapter
2924
 * id provided on dwCaps4. Typically this will be used to create secondary primary surface
2925
 * on DualView display adapter.
2926
 */
2927
#define DDSCAPS2_ADDITIONALPRIMARY              0x80000000L
2928
 
2929
/*
2930
 * This is a mask that indicates the set of bits that may be set
2931
 * at createsurface time to indicate number of samples per pixel
2932
 * when multisampling
2933
 */
2934
#define DDSCAPS3_MULTISAMPLE_MASK               0x0000001FL
2935
 
2936
/*
2937
 * This is a mask that indicates the set of bits that may be set
2938
 * at createsurface time to indicate the quality level of rendering
2939
 * for the current number of samples per pixel
2940
 */
2941
#define DDSCAPS3_MULTISAMPLE_QUALITY_MASK       0x000000E0L
2942
#define DDSCAPS3_MULTISAMPLE_QUALITY_SHIFT      5
2943
 
2944
/*
2945
 * This bit is reserved for internal use
2946
 */
2947
#define DDSCAPS3_RESERVED1                      0x00000100L
2948
 
2949
/*
2950
 * This bit is reserved for internal use
2951
 */
2952
#define DDSCAPS3_RESERVED2                      0x00000200L
2953
 
2954
/*
2955
 * This indicates whether this surface has light-weight miplevels
2956
 */
2957
#define DDSCAPS3_LIGHTWEIGHTMIPMAP              0x00000400L
2958
 
2959
/*
2960
 * This indicates that the mipsublevels for this surface are auto-generated
2961
 */
2962
#define DDSCAPS3_AUTOGENMIPMAP                  0x00000800L
2963
 
2964
/*
2965
 * This indicates that the mipsublevels for this surface are auto-generated
2966
 */
2967
#define DDSCAPS3_DMAP                           0x00001000L
2968
 
2969
/* D3D9Ex only -- */
2970
#if !defined(D3D_DISABLE_9EX)
2971
 
2972
/*
2973
 * This indicates that this surface is to be shared by processes
2974
 */
2975
#define DDSCAPS3_CREATESHAREDRESOURCE           0x00002000L
2976
 
2977
/*
2978
 * This indicates that this surface need to be initialized before being
2979
 * shared, this bit implies that this surface is read only after initialization
2980
 * absence of this bit implies that this surface allows both read and write
2981
 */
2982
#define DDSCAPS3_READONLYRESOURCE               0x00004000L
2983
 
2984
/*
2985
 * This indicates that this surface is to share an existing video memory with
2986
 * another surface created with DDSCAPS3_CREATESHAREDRESOURCE, This bit is never
2987
 * used with DDSCAPS3_CREATESHAREDRESOURCE
2988
 */
2989
#define DDSCAPS3_OPENSHAREDRESOURCE             0x00008000L
2990
 
2991
#endif // !D3D_DISABLE_9EX
2992
/* -- D3D9Ex only */
2993
 
2994
 
2995
 /****************************************************************************
2996
 *
2997
 * DIRECTDRAW DRIVER CAPABILITY FLAGS
2998
 *
2999
 ****************************************************************************/
3000
 
3001
/*
3002
 * Display hardware has 3D acceleration.
3003
 */
3004
#define DDCAPS_3D                       0x00000001l
3005
 
3006
/*
3007
 * Indicates that DirectDraw will support only dest rectangles that are aligned
3008
 * on DIRECTDRAWCAPS.dwAlignBoundaryDest boundaries of the surface, respectively.
3009
 * READ ONLY.
3010
 */
3011
#define DDCAPS_ALIGNBOUNDARYDEST        0x00000002l
3012
 
3013
/*
3014
 * Indicates that DirectDraw will support only source rectangles  whose sizes in
3015
 * BYTEs are DIRECTDRAWCAPS.dwAlignSizeDest multiples, respectively.  READ ONLY.
3016
 */
3017
#define DDCAPS_ALIGNSIZEDEST            0x00000004l
3018
/*
3019
 * Indicates that DirectDraw will support only source rectangles that are aligned
3020
 * on DIRECTDRAWCAPS.dwAlignBoundarySrc boundaries of the surface, respectively.
3021
 * READ ONLY.
3022
 */
3023
#define DDCAPS_ALIGNBOUNDARYSRC         0x00000008l
3024
 
3025
/*
3026
 * Indicates that DirectDraw will support only source rectangles  whose sizes in
3027
 * BYTEs are DIRECTDRAWCAPS.dwAlignSizeSrc multiples, respectively.  READ ONLY.
3028
 */
3029
#define DDCAPS_ALIGNSIZESRC             0x00000010l
3030
 
3031
/*
3032
 * Indicates that DirectDraw will create video memory surfaces that have a stride
3033
 * alignment equal to DIRECTDRAWCAPS.dwAlignStride.  READ ONLY.
3034
 */
3035
#define DDCAPS_ALIGNSTRIDE              0x00000020l
3036
 
3037
/*
3038
 * Display hardware is capable of blt operations.
3039
 */
3040
#define DDCAPS_BLT                      0x00000040l
3041
 
3042
/*
3043
 * Display hardware is capable of asynchronous blt operations.
3044
 */
3045
#define DDCAPS_BLTQUEUE                 0x00000080l
3046
 
3047
/*
3048
 * Display hardware is capable of color space conversions during the blt operation.
3049
 */
3050
#define DDCAPS_BLTFOURCC                0x00000100l
3051
 
3052
/*
3053
 * Display hardware is capable of stretching during blt operations.
3054
 */
3055
#define DDCAPS_BLTSTRETCH               0x00000200l
3056
 
3057
/*
3058
 * Display hardware is shared with GDI.
3059
 */
3060
#define DDCAPS_GDI                      0x00000400l
3061
 
3062
/*
3063
 * Display hardware can overlay.
3064
 */
3065
#define DDCAPS_OVERLAY                  0x00000800l
3066
 
3067
/*
3068
 * Set if display hardware supports overlays but can not clip them.
3069
 */
3070
#define DDCAPS_OVERLAYCANTCLIP          0x00001000l
3071
 
3072
/*
3073
 * Indicates that overlay hardware is capable of color space conversions during
3074
 * the overlay operation.
3075
 */
3076
#define DDCAPS_OVERLAYFOURCC            0x00002000l
3077
 
3078
/*
3079
 * Indicates that stretching can be done by the overlay hardware.
3080
 */
3081
#define DDCAPS_OVERLAYSTRETCH           0x00004000l
3082
 
3083
/*
3084
 * Indicates that unique DirectDrawPalettes can be created for DirectDrawSurfaces
3085
 * other than the primary surface.
3086
 */
3087
#define DDCAPS_PALETTE                  0x00008000l
3088
 
3089
/*
3090
 * Indicates that palette changes can be syncd with the veritcal refresh.
3091
 */
3092
#define DDCAPS_PALETTEVSYNC             0x00010000l
3093
 
3094
/*
3095
 * Display hardware can return the current scan line.
3096
 */
3097
#define DDCAPS_READSCANLINE             0x00020000l
3098
 
3099
 
3100
/*
3101
 * This flag used to bo DDCAPS_STEREOVIEW, which is now obsolete
3102
 */
3103
#define DDCAPS_RESERVED1                0x00040000l
3104
 
3105
/*
3106
 * Display hardware is capable of generating a vertical blank interrupt.
3107
 */
3108
#define DDCAPS_VBI                      0x00080000l
3109
 
3110
/*
3111
 * Supports the use of z buffers with blt operations.
3112
 */
3113
#define DDCAPS_ZBLTS                    0x00100000l
3114
 
3115
/*
3116
 * Supports Z Ordering of overlays.
3117
 */
3118
#define DDCAPS_ZOVERLAYS                0x00200000l
3119
 
3120
/*
3121
 * Supports color key
3122
 */
3123
#define DDCAPS_COLORKEY                 0x00400000l
3124
 
3125
/*
3126
 * Supports alpha surfaces
3127
 */
3128
#define DDCAPS_ALPHA                    0x00800000l
3129
 
3130
/*
3131
 * colorkey is hardware assisted(DDCAPS_COLORKEY will also be set)
3132
 */
3133
#define DDCAPS_COLORKEYHWASSIST         0x01000000l
3134
 
3135
/*
3136
 * no hardware support at all
3137
 */
3138
#define DDCAPS_NOHARDWARE               0x02000000l
3139
 
3140
/*
3141
 * Display hardware is capable of color fill with bltter
3142
 */
3143
#define DDCAPS_BLTCOLORFILL             0x04000000l
3144
 
3145
/*
3146
 * Display hardware is bank switched, and potentially very slow at
3147
 * random access to VRAM.
3148
 */
3149
#define DDCAPS_BANKSWITCHED             0x08000000l
3150
 
3151
/*
3152
 * Display hardware is capable of depth filling Z-buffers with bltter
3153
 */
3154
#define DDCAPS_BLTDEPTHFILL             0x10000000l
3155
 
3156
/*
3157
 * Display hardware is capable of clipping while bltting.
3158
 */
3159
#define DDCAPS_CANCLIP                  0x20000000l
3160
 
3161
/*
3162
 * Display hardware is capable of clipping while stretch bltting.
3163
 */
3164
#define DDCAPS_CANCLIPSTRETCHED         0x40000000l
3165
 
3166
/*
3167
 * Display hardware is capable of bltting to or from system memory
3168
 */
3169
#define DDCAPS_CANBLTSYSMEM             0x80000000l
3170
 
3171
 
3172
 /****************************************************************************
3173
 *
3174
 * MORE DIRECTDRAW DRIVER CAPABILITY FLAGS (dwCaps2)
3175
 *
3176
 ****************************************************************************/
3177
 
3178
/*
3179
 * Display hardware is certified
3180
 */
3181
#define DDCAPS2_CERTIFIED              0x00000001l
3182
 
3183
/*
3184
 * Driver cannot interleave 2D operations (lock and blt) to surfaces with
3185
 * Direct3D rendering operations between calls to BeginScene() and EndScene()
3186
 */
3187
#define DDCAPS2_NO2DDURING3DSCENE       0x00000002l
3188
 
3189
/*
3190
 * Display hardware contains a video port
3191
 */
3192
#define DDCAPS2_VIDEOPORT               0x00000004l
3193
 
3194
/*
3195
 * The overlay can be automatically flipped according to the video port
3196
 * VSYNCs, providing automatic doubled buffered display of video port
3197
 * data using an overlay
3198
 */
3199
#define DDCAPS2_AUTOFLIPOVERLAY         0x00000008l
3200
 
3201
/*
3202
 * Overlay can display each field of interlaced data individually while
3203
 * it is interleaved in memory without causing jittery artifacts.
3204
 */
3205
#define DDCAPS2_CANBOBINTERLEAVED       0x00000010l
3206
 
3207
/*
3208
 * Overlay can display each field of interlaced data individually while
3209
 * it is not interleaved in memory without causing jittery artifacts.
3210
 */
3211
#define DDCAPS2_CANBOBNONINTERLEAVED    0x00000020l
3212
 
3213
/*
3214
 * The overlay surface contains color controls (brightness, sharpness, etc.)
3215
 */
3216
#define DDCAPS2_COLORCONTROLOVERLAY     0x00000040l
3217
 
3218
/*
3219
 * The primary surface contains color controls (gamma, etc.)
3220
 */
3221
#define DDCAPS2_COLORCONTROLPRIMARY     0x00000080l
3222
 
3223
/*
3224
 * RGBZ -> RGB supported for 16:16 RGB:Z
3225
 */
3226
#define DDCAPS2_CANDROPZ16BIT           0x00000100l
3227
 
3228
/*
3229
 * Driver supports non-local video memory.
3230
 */
3231
#define DDCAPS2_NONLOCALVIDMEM          0x00000200l
3232
 
3233
/*
3234
 * Dirver supports non-local video memory but has different capabilities for
3235
 * non-local video memory surfaces. If this bit is set then so must
3236
 * DDCAPS2_NONLOCALVIDMEM.
3237
 */
3238
#define DDCAPS2_NONLOCALVIDMEMCAPS      0x00000400l
3239
 
3240
/*
3241
 * Driver neither requires nor prefers surfaces to be pagelocked when performing
3242
 * blts involving system memory surfaces
3243
 */
3244
#define DDCAPS2_NOPAGELOCKREQUIRED      0x00000800l
3245
 
3246
/*
3247
 * Driver can create surfaces which are wider than the primary surface
3248
 */
3249
#define DDCAPS2_WIDESURFACES            0x00001000l
3250
 
3251
/*
3252
 * Driver supports bob without using a video port by handling the
3253
 * DDFLIP_ODD and DDFLIP_EVEN flags specified in Flip.
3254
 */
3255
#define DDCAPS2_CANFLIPODDEVEN          0x00002000l
3256
 
3257
/*
3258
 * Driver supports bob using hardware
3259
 */
3260
#define DDCAPS2_CANBOBHARDWARE          0x00004000l
3261
 
3262
/*
3263
 * Driver supports bltting any FOURCC surface to another surface of the same FOURCC
3264
 */
3265
#define DDCAPS2_COPYFOURCC              0x00008000l
3266
 
3267
 
3268
/*
3269
 * Driver supports loadable gamma ramps for the primary surface
3270
 */
3271
#define DDCAPS2_PRIMARYGAMMA            0x00020000l
3272
 
3273
/*
3274
 * Driver can render in windowed mode.
3275
 */
3276
#define DDCAPS2_CANRENDERWINDOWED       0x00080000l
3277
 
3278
/*
3279
 * A calibrator is available to adjust the gamma ramp according to the
3280
 * physical display properties so that the result will be identical on
3281
 * all calibrated systems.
3282
 */
3283
#define DDCAPS2_CANCALIBRATEGAMMA       0x00100000l
3284
 
3285
/*
3286
 * Indicates that the driver will respond to DDFLIP_INTERVALn flags
3287
 */
3288
#define DDCAPS2_FLIPINTERVAL            0x00200000l
3289
 
3290
/*
3291
 * Indicates that the driver will respond to DDFLIP_NOVSYNC
3292
 */
3293
#define DDCAPS2_FLIPNOVSYNC             0x00400000l
3294
 
3295
/*
3296
 * Driver supports management of video memory, if this flag is ON,
3297
 * driver manages the texture if requested with DDSCAPS2_TEXTUREMANAGE on
3298
 * DirectX manages the texture if this flag is OFF and surface has DDSCAPS2_TEXTUREMANAGE on
3299
 */
3300
#define DDCAPS2_CANMANAGETEXTURE        0x00800000l
3301
 
3302
/*
3303
 * The Direct3D texture manager uses this cap to decide whether to put managed
3304
 * surfaces in non-local video memory. If the cap is set, the texture manager will
3305
 * put managed surfaces in non-local vidmem. Drivers that cannot texture from
3306
 * local vidmem SHOULD NOT set this cap.
3307
 */
3308
#define DDCAPS2_TEXMANINNONLOCALVIDMEM  0x01000000l
3309
 
3310
/*
3311
 * Indicates that the driver supports DX7 type of stereo in at least one mode (which may
3312
 * not necessarily be the current mode). Applications should use IDirectDraw7 (or higher)
3313
 * ::EnumDisplayModes and check the DDSURFACEDESC.ddsCaps.dwCaps2 field for the presence of
3314
 * DDSCAPS2_STEREOSURFACELEFT to check if a particular mode supports stereo. The application
3315
 * can also use IDirectDraw7(or higher)::GetDisplayMode to check the current mode.
3316
 */
3317
#define DDCAPS2_STEREO                  0x02000000L
3318
 
3319
/*
3320
 * This caps bit is intended for internal DirectDraw use.
3321
 * -It is only valid if DDCAPS2_NONLOCALVIDMEMCAPS is set.
3322
 * -If this bit is set, then DDCAPS_CANBLTSYSMEM MUST be set by the driver (and
3323
 *  all the assoicated system memory blt caps must be correct).
3324
 * -It implies that the system->video blt caps in DDCAPS also apply to system to
3325
 *  nonlocal blts. I.e. the dwSVBCaps, dwSVBCKeyCaps, dwSVBFXCaps and dwSVBRops
3326
 *  members of DDCAPS (DDCORECAPS) are filled in correctly.
3327
 * -Any blt from system to nonlocal memory that matches these caps bits will
3328
 *  be passed to the driver.
3329
 *
3330
 * NOTE: This is intended to enable the driver itself to do efficient reordering
3331
 * of textures. This is NOT meant to imply that hardware can write into AGP memory.
3332
 * This operation is not currently supported.
3333
 */
3334
#define DDCAPS2_SYSTONONLOCAL_AS_SYSTOLOCAL   0x04000000L
3335
 
3336
/*
3337
 * was DDCAPS2_PUREHAL
3338
 */
3339
#define DDCAPS2_RESERVED1                     0x08000000L
3340
 
3341
/*
3342
 * Driver supports management of video memory, if this flag is ON,
3343
 * driver manages the resource if requested with DDSCAPS2_TEXTUREMANAGE on
3344
 * DirectX manages the resource if this flag is OFF and surface has DDSCAPS2_TEXTUREMANAGE on
3345
 */
3346
#define DDCAPS2_CANMANAGERESOURCE             0x10000000L
3347
 
3348
/*
3349
 * Driver supports dynamic textures. This will allow the application to set
3350
 * D3DUSAGE_DYNAMIC (DDSCAPS2_HINTDYNAMIC for drivers) at texture create time.
3351
 * Video memory dynamic textures WILL be lockable by applications. It is
3352
 * expected that these locks will be very efficient (which implies that the
3353
 * driver should always maintain a linear copy, a pointer to which can be
3354
 * quickly handed out to the application).
3355
 */
3356
#define DDCAPS2_DYNAMICTEXTURES               0x20000000L
3357
 
3358
/*
3359
 * Driver supports auto-generation of mipmaps.
3360
 */
3361
#define DDCAPS2_CANAUTOGENMIPMAP              0x40000000L
3362
 
3363
/* D3D9Ex only -- */
3364
#if !defined(D3D_DISABLE_9EX)
3365
 
3366
/*
3367
 * Driver supports sharing of cross process resouces
3368
 */
3369
#define DDCAPS2_CANSHARERESOURCE              0x80000000L
3370
 
3371
#endif // !D3D_DISABLE_9EX
3372
/* -- D3D9Ex only */
3373
 
3374
 
3375
/****************************************************************************
3376
 *
3377
 * DIRECTDRAW FX ALPHA CAPABILITY FLAGS
3378
 *
3379
 ****************************************************************************/
3380
 
3381
/*
3382
 * Supports alpha blending around the edge of a source color keyed surface.
3383
 * For Blt.
3384
 */
3385
#define DDFXALPHACAPS_BLTALPHAEDGEBLEND         0x00000001l
3386
 
3387
/*
3388
 * Supports alpha information in the pixel format.  The bit depth of alpha
3389
 * information in the pixel format can be 1,2,4, or 8.  The alpha value becomes
3390
 * more opaque as the alpha value increases.  (0 is transparent.)
3391
 * For Blt.
3392
 */
3393
#define DDFXALPHACAPS_BLTALPHAPIXELS            0x00000002l
3394
 
3395
/*
3396
 * Supports alpha information in the pixel format.  The bit depth of alpha
3397
 * information in the pixel format can be 1,2,4, or 8.  The alpha value
3398
 * becomes more transparent as the alpha value increases.  (0 is opaque.)
3399
 * This flag can only be set if DDCAPS_ALPHA is set.
3400
 * For Blt.
3401
 */
3402
#define DDFXALPHACAPS_BLTALPHAPIXELSNEG         0x00000004l
3403
 
3404
/*
3405
 * Supports alpha only surfaces.  The bit depth of an alpha only surface can be
3406
 * 1,2,4, or 8.  The alpha value becomes more opaque as the alpha value increases.
3407
 * (0 is transparent.)
3408
 * For Blt.
3409
 */
3410
#define DDFXALPHACAPS_BLTALPHASURFACES          0x00000008l
3411
 
3412
/*
3413
 * The depth of the alpha channel data can range can be 1,2,4, or 8.
3414
 * The NEG suffix indicates that this alpha channel becomes more transparent
3415
 * as the alpha value increases. (0 is opaque.)  This flag can only be set if
3416
 * DDCAPS_ALPHA is set.
3417
 * For Blt.
3418
 */
3419
#define DDFXALPHACAPS_BLTALPHASURFACESNEG       0x00000010l
3420
 
3421
/*
3422
 * Supports alpha blending around the edge of a source color keyed surface.
3423
 * For Overlays.
3424
 */
3425
#define DDFXALPHACAPS_OVERLAYALPHAEDGEBLEND     0x00000020l
3426
 
3427
/*
3428
 * Supports alpha information in the pixel format.  The bit depth of alpha
3429
 * information in the pixel format can be 1,2,4, or 8.  The alpha value becomes
3430
 * more opaque as the alpha value increases.  (0 is transparent.)
3431
 * For Overlays.
3432
 */
3433
#define DDFXALPHACAPS_OVERLAYALPHAPIXELS        0x00000040l
3434
 
3435
/*
3436
 * Supports alpha information in the pixel format.  The bit depth of alpha
3437
 * information in the pixel format can be 1,2,4, or 8.  The alpha value
3438
 * becomes more transparent as the alpha value increases.  (0 is opaque.)
3439
 * This flag can only be set if DDCAPS_ALPHA is set.
3440
 * For Overlays.
3441
 */
3442
#define DDFXALPHACAPS_OVERLAYALPHAPIXELSNEG     0x00000080l
3443
 
3444
/*
3445
 * Supports alpha only surfaces.  The bit depth of an alpha only surface can be
3446
 * 1,2,4, or 8.  The alpha value becomes more opaque as the alpha value increases.
3447
 * (0 is transparent.)
3448
 * For Overlays.
3449
 */
3450
#define DDFXALPHACAPS_OVERLAYALPHASURFACES      0x00000100l
3451
 
3452
/*
3453
 * The depth of the alpha channel data can range can be 1,2,4, or 8.
3454
 * The NEG suffix indicates that this alpha channel becomes more transparent
3455
 * as the alpha value increases. (0 is opaque.)  This flag can only be set if
3456
 * DDCAPS_ALPHA is set.
3457
 * For Overlays.
3458
 */
3459
#define DDFXALPHACAPS_OVERLAYALPHASURFACESNEG   0x00000200l
3460
 
3461
#if DIRECTDRAW_VERSION < 0x0600
3462
#endif  //DIRECTDRAW_VERSION
3463
 
3464
 
3465
/****************************************************************************
3466
 *
3467
 * DIRECTDRAW FX CAPABILITY FLAGS
3468
 *
3469
 ****************************************************************************/
3470
 
3471
/*
3472
 * Uses arithmetic operations to stretch and shrink surfaces during blt
3473
 * rather than pixel doubling techniques.  Along the Y axis.
3474
 */
3475
#define DDFXCAPS_BLTARITHSTRETCHY       0x00000020l
3476
 
3477
/*
3478
 * Uses arithmetic operations to stretch during blt
3479
 * rather than pixel doubling techniques.  Along the Y axis. Only
3480
 * works for x1, x2, etc.
3481
 */
3482
#define DDFXCAPS_BLTARITHSTRETCHYN      0x00000010l
3483
 
3484
/*
3485
 * Supports mirroring left to right in blt.
3486
 */
3487
#define DDFXCAPS_BLTMIRRORLEFTRIGHT     0x00000040l
3488
 
3489
/*
3490
 * Supports mirroring top to bottom in blt.
3491
 */
3492
#define DDFXCAPS_BLTMIRRORUPDOWN        0x00000080l
3493
 
3494
/*
3495
 * Supports arbitrary rotation for blts.
3496
 */
3497
#define DDFXCAPS_BLTROTATION            0x00000100l
3498
 
3499
/*
3500
 * Supports 90 degree rotations for blts.
3501
 */
3502
#define DDFXCAPS_BLTROTATION90          0x00000200l
3503
 
3504
/*
3505
 * DirectDraw supports arbitrary shrinking of a surface along the
3506
 * x axis (horizontal direction) for blts.
3507
 */
3508
#define DDFXCAPS_BLTSHRINKX             0x00000400l
3509
 
3510
/*
3511
 * DirectDraw supports integer shrinking (1x,2x,) of a surface
3512
 * along the x axis (horizontal direction) for blts.
3513
 */
3514
#define DDFXCAPS_BLTSHRINKXN            0x00000800l
3515
 
3516
/*
3517
 * DirectDraw supports arbitrary shrinking of a surface along the
3518
 * y axis (horizontal direction) for blts.
3519
 */
3520
#define DDFXCAPS_BLTSHRINKY             0x00001000l
3521
 
3522
/*
3523
 * DirectDraw supports integer shrinking (1x,2x,) of a surface
3524
 * along the y axis (vertical direction) for blts.
3525
 */
3526
#define DDFXCAPS_BLTSHRINKYN            0x00002000l
3527
 
3528
/*
3529
 * DirectDraw supports arbitrary stretching of a surface along the
3530
 * x axis (horizontal direction) for blts.
3531
 */
3532
#define DDFXCAPS_BLTSTRETCHX            0x00004000l
3533
 
3534
/*
3535
 * DirectDraw supports integer stretching (1x,2x,) of a surface
3536
 * along the x axis (horizontal direction) for blts.
3537
 */
3538
#define DDFXCAPS_BLTSTRETCHXN           0x00008000l
3539
 
3540
/*
3541
 * DirectDraw supports arbitrary stretching of a surface along the
3542
 * y axis (horizontal direction) for blts.
3543
 */
3544
#define DDFXCAPS_BLTSTRETCHY            0x00010000l
3545
 
3546
/*
3547
 * DirectDraw supports integer stretching (1x,2x,) of a surface
3548
 * along the y axis (vertical direction) for blts.
3549
 */
3550
#define DDFXCAPS_BLTSTRETCHYN           0x00020000l
3551
 
3552
/*
3553
 * Uses arithmetic operations to stretch and shrink surfaces during
3554
 * overlay rather than pixel doubling techniques.  Along the Y axis
3555
 * for overlays.
3556
 */
3557
#define DDFXCAPS_OVERLAYARITHSTRETCHY   0x00040000l
3558
 
3559
/*
3560
 * Uses arithmetic operations to stretch surfaces during
3561
 * overlay rather than pixel doubling techniques.  Along the Y axis
3562
 * for overlays. Only works for x1, x2, etc.
3563
 */
3564
#define DDFXCAPS_OVERLAYARITHSTRETCHYN  0x00000008l
3565
 
3566
/*
3567
 * DirectDraw supports arbitrary shrinking of a surface along the
3568
 * x axis (horizontal direction) for overlays.
3569
 */
3570
#define DDFXCAPS_OVERLAYSHRINKX         0x00080000l
3571
 
3572
/*
3573
 * DirectDraw supports integer shrinking (1x,2x,) of a surface
3574
 * along the x axis (horizontal direction) for overlays.
3575
 */
3576
#define DDFXCAPS_OVERLAYSHRINKXN        0x00100000l
3577
 
3578
/*
3579
 * DirectDraw supports arbitrary shrinking of a surface along the
3580
 * y axis (horizontal direction) for overlays.
3581
 */
3582
#define DDFXCAPS_OVERLAYSHRINKY         0x00200000l
3583
 
3584
/*
3585
 * DirectDraw supports integer shrinking (1x,2x,) of a surface
3586
 * along the y axis (vertical direction) for overlays.
3587
 */
3588
#define DDFXCAPS_OVERLAYSHRINKYN        0x00400000l
3589
 
3590
/*
3591
 * DirectDraw supports arbitrary stretching of a surface along the
3592
 * x axis (horizontal direction) for overlays.
3593
 */
3594
#define DDFXCAPS_OVERLAYSTRETCHX        0x00800000l
3595
 
3596
/*
3597
 * DirectDraw supports integer stretching (1x,2x,) of a surface
3598
 * along the x axis (horizontal direction) for overlays.
3599
 */
3600
#define DDFXCAPS_OVERLAYSTRETCHXN       0x01000000l
3601
 
3602
/*
3603
 * DirectDraw supports arbitrary stretching of a surface along the
3604
 * y axis (horizontal direction) for overlays.
3605
 */
3606
#define DDFXCAPS_OVERLAYSTRETCHY        0x02000000l
3607
 
3608
/*
3609
 * DirectDraw supports integer stretching (1x,2x,) of a surface
3610
 * along the y axis (vertical direction) for overlays.
3611
 */
3612
#define DDFXCAPS_OVERLAYSTRETCHYN       0x04000000l
3613
 
3614
/*
3615
 * DirectDraw supports mirroring of overlays across the vertical axis
3616
 */
3617
#define DDFXCAPS_OVERLAYMIRRORLEFTRIGHT 0x08000000l
3618
 
3619
/*
3620
 * DirectDraw supports mirroring of overlays across the horizontal axis
3621
 */
3622
#define DDFXCAPS_OVERLAYMIRRORUPDOWN    0x10000000l
3623
 
3624
/*
3625
 * DirectDraw supports deinterlacing of overlay surfaces
3626
 */
3627
#define DDFXCAPS_OVERLAYDEINTERLACE             0x20000000l
3628
 
3629
/*
3630
 * Driver can do alpha blending for blits.
3631
 */
3632
#define DDFXCAPS_BLTALPHA               0x00000001l
3633
 
3634
 
3635
/*
3636
 * Driver can do surface-reconstruction filtering for warped blits.
3637
 */
3638
#define DDFXCAPS_BLTFILTER              DDFXCAPS_BLTARITHSTRETCHY
3639
 
3640
/*
3641
 * Driver can do alpha blending for overlays.
3642
 */
3643
#define DDFXCAPS_OVERLAYALPHA           0x00000004l
3644
 
3645
 
3646
/*
3647
 * Driver can do surface-reconstruction filtering for warped overlays.
3648
 */
3649
#define DDFXCAPS_OVERLAYFILTER          DDFXCAPS_OVERLAYARITHSTRETCHY
3650
 
3651
/****************************************************************************
3652
 *
3653
 * DIRECTDRAW STEREO VIEW CAPABILITIES
3654
 *
3655
 ****************************************************************************/
3656
 
3657
/*
3658
 * This flag used to be DDSVCAPS_ENIGMA, which is now obsolete
3659
 */
3660
 
3661
#define DDSVCAPS_RESERVED1              0x00000001l
3662
 
3663
/*
3664
 * This flag used to be DDSVCAPS_FLICKER, which is now obsolete
3665
 */
3666
#define DDSVCAPS_RESERVED2              0x00000002l
3667
 
3668
/*
3669
 * This flag used to be DDSVCAPS_REDBLUE, which is now obsolete
3670
 */
3671
#define DDSVCAPS_RESERVED3              0x00000004l
3672
 
3673
/*
3674
 * This flag used to be DDSVCAPS_SPLIT, which is now obsolete
3675
 */
3676
#define DDSVCAPS_RESERVED4              0x00000008l
3677
 
3678
/*
3679
 * The stereo view is accomplished with switching technology
3680
 */
3681
 
3682
#define DDSVCAPS_STEREOSEQUENTIAL       0x00000010L
3683
 
3684
 
3685
 
3686
/****************************************************************************
3687
 *
3688
 * DIRECTDRAWPALETTE CAPABILITIES
3689
 *
3690
 ****************************************************************************/
3691
 
3692
/*
3693
 * Index is 4 bits.  There are sixteen color entries in the palette table.
3694
 */
3695
#define DDPCAPS_4BIT                    0x00000001l
3696
 
3697
/*
3698
 * Index is onto a 8 bit color index.  This field is only valid with the
3699
 * DDPCAPS_1BIT, DDPCAPS_2BIT or DDPCAPS_4BIT capability and the target
3700
 * surface is in 8bpp. Each color entry is one byte long and is an index
3701
 * into destination surface's 8bpp palette.
3702
 */
3703
#define DDPCAPS_8BITENTRIES             0x00000002l
3704
 
3705
/*
3706
 * Index is 8 bits.  There are 256 color entries in the palette table.
3707
 */
3708
#define DDPCAPS_8BIT                    0x00000004l
3709
 
3710
/*
3711
 * Indicates that this DIRECTDRAWPALETTE should use the palette color array
3712
 * passed into the lpDDColorArray parameter to initialize the DIRECTDRAWPALETTE
3713
 * object.
3714
 * This flag is obsolete. DirectDraw always initializes the color array from
3715
 * the lpDDColorArray parameter. The definition remains for source-level
3716
 * compatibility.
3717
 */
3718
#define DDPCAPS_INITIALIZE              0x00000000l
3719
 
3720
/*
3721
 * This palette is the one attached to the primary surface.  Changing this
3722
 * table has immediate effect on the display unless DDPSETPAL_VSYNC is specified
3723
 * and supported.
3724
 */
3725
#define DDPCAPS_PRIMARYSURFACE          0x00000010l
3726
 
3727
/*
3728
 * This palette is the one attached to the primary surface left.  Changing
3729
 * this table has immediate effect on the display for the left eye unless
3730
 * DDPSETPAL_VSYNC is specified and supported.
3731
 */
3732
#define DDPCAPS_PRIMARYSURFACELEFT      0x00000020l
3733
 
3734
/*
3735
 * This palette can have all 256 entries defined
3736
 */
3737
#define DDPCAPS_ALLOW256                0x00000040l
3738
 
3739
/*
3740
 * This palette can have modifications to it synced with the monitors
3741
 * refresh rate.
3742
 */
3743
#define DDPCAPS_VSYNC                   0x00000080l
3744
 
3745
/*
3746
 * Index is 1 bit.  There are two color entries in the palette table.
3747
 */
3748
#define DDPCAPS_1BIT                    0x00000100l
3749
 
3750
/*
3751
 * Index is 2 bit.  There are four color entries in the palette table.
3752
 */
3753
#define DDPCAPS_2BIT                    0x00000200l
3754
 
3755
/*
3756
 * The peFlags member of PALETTEENTRY denotes an 8 bit alpha value
3757
 */
3758
#define DDPCAPS_ALPHA                   0x00000400l
3759
 
3760
 
3761
/****************************************************************************
3762
 *
3763
 * DIRECTDRAWPALETTE SETENTRY CONSTANTS
3764
 *
3765
 ****************************************************************************/
3766
 
3767
 
3768
/****************************************************************************
3769
 *
3770
 * DIRECTDRAWPALETTE GETENTRY CONSTANTS
3771
 *
3772
 ****************************************************************************/
3773
 
3774
/* 0 is the only legal value */
3775
 
3776
/****************************************************************************
3777
 *
3778
 * DIRECTDRAWSURFACE SETPRIVATEDATA CONSTANTS
3779
 *
3780
 ****************************************************************************/
3781
 
3782
/*
3783
 * The passed pointer is an IUnknown ptr. The cbData argument to SetPrivateData
3784
 * must be set to sizeof(IUnknown*). DirectDraw will call AddRef through this
3785
 * pointer and Release when the private data is destroyed. This includes when
3786
 * the surface or palette is destroyed before such priovate data is destroyed.
3787
 */
3788
#define DDSPD_IUNKNOWNPOINTER           0x00000001L
3789
 
3790
/*
3791
 * Private data is only valid for the current state of the object,
3792
 * as determined by the uniqueness value.
3793
 */
3794
#define DDSPD_VOLATILE                  0x00000002L
3795
 
3796
 
3797
/****************************************************************************
3798
 *
3799
 * DIRECTDRAWSURFACE SETPALETTE CONSTANTS
3800
 *
3801
 ****************************************************************************/
3802
 
3803
 
3804
/****************************************************************************
3805
 *
3806
 * DIRECTDRAW BITDEPTH CONSTANTS
3807
 *
3808
 * NOTE:  These are only used to indicate supported bit depths.   These
3809
 * are flags only, they are not to be used as an actual bit depth.   The
3810
 * absolute numbers 1, 2, 4, 8, 16, 24 and 32 are used to indicate actual
3811
 * bit depths in a surface or for changing the display mode.
3812
 *
3813
 ****************************************************************************/
3814
 
3815
/*
3816
 * 1 bit per pixel.
3817
 */
3818
#define DDBD_1                  0x00004000l
3819
 
3820
/*
3821
 * 2 bits per pixel.
3822
 */
3823
#define DDBD_2                  0x00002000l
3824
 
3825
/*
3826
 * 4 bits per pixel.
3827
 */
3828
#define DDBD_4                  0x00001000l
3829
 
3830
/*
3831
 * 8 bits per pixel.
3832
 */
3833
#define DDBD_8                  0x00000800l
3834
 
3835
/*
3836
 * 16 bits per pixel.
3837
 */
3838
#define DDBD_16                 0x00000400l
3839
 
3840
/*
3841
 * 24 bits per pixel.
3842
 */
3843
#define DDBD_24                 0X00000200l
3844
 
3845
/*
3846
 * 32 bits per pixel.
3847
 */
3848
#define DDBD_32                 0x00000100l
3849
 
3850
/****************************************************************************
3851
 *
3852
 * DIRECTDRAWSURFACE SET/GET COLOR KEY FLAGS
3853
 *
3854
 ****************************************************************************/
3855
 
3856
/*
3857
 * Set if the structure contains a color space.  Not set if the structure
3858
 * contains a single color key.
3859
 */
3860
#define DDCKEY_COLORSPACE       0x00000001l
3861
 
3862
/*
3863
 * Set if the structure specifies a color key or color space which is to be
3864
 * used as a destination color key for blt operations.
3865
 */
3866
#define DDCKEY_DESTBLT          0x00000002l
3867
 
3868
/*
3869
 * Set if the structure specifies a color key or color space which is to be
3870
 * used as a destination color key for overlay operations.
3871
 */
3872
#define DDCKEY_DESTOVERLAY      0x00000004l
3873
 
3874
/*
3875
 * Set if the structure specifies a color key or color space which is to be
3876
 * used as a source color key for blt operations.
3877
 */
3878
#define DDCKEY_SRCBLT           0x00000008l
3879
 
3880
/*
3881
 * Set if the structure specifies a color key or color space which is to be
3882
 * used as a source color key for overlay operations.
3883
 */
3884
#define DDCKEY_SRCOVERLAY       0x00000010l
3885
 
3886
 
3887
/****************************************************************************
3888
 *
3889
 * DIRECTDRAW COLOR KEY CAPABILITY FLAGS
3890
 *
3891
 ****************************************************************************/
3892
 
3893
/*
3894
 * Supports transparent blting using a color key to identify the replaceable
3895
 * bits of the destination surface for RGB colors.
3896
 */
3897
#define DDCKEYCAPS_DESTBLT                      0x00000001l
3898
 
3899
/*
3900
 * Supports transparent blting using a color space to identify the replaceable
3901
 * bits of the destination surface for RGB colors.
3902
 */
3903
#define DDCKEYCAPS_DESTBLTCLRSPACE              0x00000002l
3904
 
3905
/*
3906
 * Supports transparent blting using a color space to identify the replaceable
3907
 * bits of the destination surface for YUV colors.
3908
 */
3909
#define DDCKEYCAPS_DESTBLTCLRSPACEYUV           0x00000004l
3910
 
3911
/*
3912
 * Supports transparent blting using a color key to identify the replaceable
3913
 * bits of the destination surface for YUV colors.
3914
 */
3915
#define DDCKEYCAPS_DESTBLTYUV                   0x00000008l
3916
 
3917
/*
3918
 * Supports overlaying using colorkeying of the replaceable bits of the surface
3919
 * being overlayed for RGB colors.
3920
 */
3921
#define DDCKEYCAPS_DESTOVERLAY                  0x00000010l
3922
 
3923
/*
3924
 * Supports a color space as the color key for the destination for RGB colors.
3925
 */
3926
#define DDCKEYCAPS_DESTOVERLAYCLRSPACE          0x00000020l
3927
 
3928
/*
3929
 * Supports a color space as the color key for the destination for YUV colors.
3930
 */
3931
#define DDCKEYCAPS_DESTOVERLAYCLRSPACEYUV       0x00000040l
3932
 
3933
/*
3934
 * Supports only one active destination color key value for visible overlay
3935
 * surfaces.
3936
 */
3937
#define DDCKEYCAPS_DESTOVERLAYONEACTIVE         0x00000080l
3938
 
3939
/*
3940
 * Supports overlaying using colorkeying of the replaceable bits of the
3941
 * surface being overlayed for YUV colors.
3942
 */
3943
#define DDCKEYCAPS_DESTOVERLAYYUV               0x00000100l
3944
 
3945
/*
3946
 * Supports transparent blting using the color key for the source with
3947
 * this surface for RGB colors.
3948
 */
3949
#define DDCKEYCAPS_SRCBLT                       0x00000200l
3950
 
3951
/*
3952
 * Supports transparent blting using a color space for the source with
3953
 * this surface for RGB colors.
3954
 */
3955
#define DDCKEYCAPS_SRCBLTCLRSPACE               0x00000400l
3956
 
3957
/*
3958
 * Supports transparent blting using a color space for the source with
3959
 * this surface for YUV colors.
3960
 */
3961
#define DDCKEYCAPS_SRCBLTCLRSPACEYUV            0x00000800l
3962
 
3963
/*
3964
 * Supports transparent blting using the color key for the source with
3965
 * this surface for YUV colors.
3966
 */
3967
#define DDCKEYCAPS_SRCBLTYUV                    0x00001000l
3968
 
3969
/*
3970
 * Supports overlays using the color key for the source with this
3971
 * overlay surface for RGB colors.
3972
 */
3973
#define DDCKEYCAPS_SRCOVERLAY                   0x00002000l
3974
 
3975
/*
3976
 * Supports overlays using a color space as the source color key for
3977
 * the overlay surface for RGB colors.
3978
 */
3979
#define DDCKEYCAPS_SRCOVERLAYCLRSPACE           0x00004000l
3980
 
3981
/*
3982
 * Supports overlays using a color space as the source color key for
3983
 * the overlay surface for YUV colors.
3984
 */
3985
#define DDCKEYCAPS_SRCOVERLAYCLRSPACEYUV        0x00008000l
3986
 
3987
/*
3988
 * Supports only one active source color key value for visible
3989
 * overlay surfaces.
3990
 */
3991
#define DDCKEYCAPS_SRCOVERLAYONEACTIVE          0x00010000l
3992
 
3993
/*
3994
 * Supports overlays using the color key for the source with this
3995
 * overlay surface for YUV colors.
3996
 */
3997
#define DDCKEYCAPS_SRCOVERLAYYUV                0x00020000l
3998
 
3999
/*
4000
 * there are no bandwidth trade-offs for using colorkey with an overlay
4001
 */
4002
#define DDCKEYCAPS_NOCOSTOVERLAY                0x00040000l
4003
 
4004
 
4005
/****************************************************************************
4006
 *
4007
 * DIRECTDRAW PIXELFORMAT FLAGS
4008
 *
4009
 ****************************************************************************/
4010
 
4011
/*
4012
 * The surface has alpha channel information in the pixel format.
4013
 */
4014
#define DDPF_ALPHAPIXELS                        0x00000001l
4015
 
4016
/*
4017
 * The pixel format contains alpha only information
4018
 */
4019
#define DDPF_ALPHA                              0x00000002l
4020
 
4021
/*
4022
 * The FourCC code is valid.
4023
 */
4024
#define DDPF_FOURCC                             0x00000004l
4025
 
4026
/*
4027
 * The surface is 4-bit color indexed.
4028
 */
4029
#define DDPF_PALETTEINDEXED4                    0x00000008l
4030
 
4031
/*
4032
 * The surface is indexed into a palette which stores indices
4033
 * into the destination surface's 8-bit palette.
4034
 */
4035
#define DDPF_PALETTEINDEXEDTO8                  0x00000010l
4036
 
4037
/*
4038
 * The surface is 8-bit color indexed.
4039
 */
4040
#define DDPF_PALETTEINDEXED8                    0x00000020l
4041
 
4042
/*
4043
 * The RGB data in the pixel format structure is valid.
4044
 */
4045
#define DDPF_RGB                                0x00000040l
4046
 
4047
/*
4048
 * The surface will accept pixel data in the format specified
4049
 * and compress it during the write.
4050
 */
4051
#define DDPF_COMPRESSED                         0x00000080l
4052
 
4053
/*
4054
 * The surface will accept RGB data and translate it during
4055
 * the write to YUV data.  The format of the data to be written
4056
 * will be contained in the pixel format structure.  The DDPF_RGB
4057
 * flag will be set.
4058
 */
4059
#define DDPF_RGBTOYUV                           0x00000100l
4060
 
4061
/*
4062
 * pixel format is YUV - YUV data in pixel format struct is valid
4063
 */
4064
#define DDPF_YUV                                0x00000200l
4065
 
4066
/*
4067
 * pixel format is a z buffer only surface
4068
 */
4069
#define DDPF_ZBUFFER                            0x00000400l
4070
 
4071
/*
4072
 * The surface is 1-bit color indexed.
4073
 */
4074
#define DDPF_PALETTEINDEXED1                    0x00000800l
4075
 
4076
/*
4077
 * The surface is 2-bit color indexed.
4078
 */
4079
#define DDPF_PALETTEINDEXED2                    0x00001000l
4080
 
4081
/*
4082
 * The surface contains Z information in the pixels
4083
 */
4084
#define DDPF_ZPIXELS                            0x00002000l
4085
 
4086
/*
4087
 * The surface contains stencil information along with Z
4088
 */
4089
#define DDPF_STENCILBUFFER                      0x00004000l
4090
 
4091
/*
4092
 * Premultiplied alpha format -- the color components have been
4093
 * premultiplied by the alpha component.
4094
 */
4095
#define DDPF_ALPHAPREMULT                       0x00008000l
4096
 
4097
 
4098
/*
4099
 * Luminance data in the pixel format is valid.
4100
 * Use this flag for luminance-only or luminance+alpha surfaces,
4101
 * the bit depth is then ddpf.dwLuminanceBitCount.
4102
 */
4103
#define DDPF_LUMINANCE                          0x00020000l
4104
 
4105
/*
4106
 * Luminance data in the pixel format is valid.
4107
 * Use this flag when hanging luminance off bumpmap surfaces,
4108
 * the bit mask for the luminance portion of the pixel is then
4109
 * ddpf.dwBumpLuminanceBitMask
4110
 */
4111
#define DDPF_BUMPLUMINANCE                      0x00040000l
4112
 
4113
/*
4114
 * Bump map dUdV data in the pixel format is valid.
4115
 */
4116
#define DDPF_BUMPDUDV                           0x00080000l
4117
 
4118
 
4119
/*===========================================================================
4120
 *
4121
 *
4122
 * DIRECTDRAW CALLBACK FLAGS
4123
 *
4124
 *
4125
 *==========================================================================*/
4126
 
4127
/****************************************************************************
4128
 *
4129
 * DIRECTDRAW ENUMSURFACES FLAGS
4130
 *
4131
 ****************************************************************************/
4132
 
4133
/*
4134
 * Enumerate all of the surfaces that meet the search criterion.
4135
 */
4136
#define DDENUMSURFACES_ALL                      0x00000001l
4137
 
4138
/*
4139
 * A search hit is a surface that matches the surface description.
4140
 */
4141
#define DDENUMSURFACES_MATCH                    0x00000002l
4142
 
4143
/*
4144
 * A search hit is a surface that does not match the surface description.
4145
 */
4146
#define DDENUMSURFACES_NOMATCH                  0x00000004l
4147
 
4148
/*
4149
 * Enumerate the first surface that can be created which meets the search criterion.
4150
 */
4151
#define DDENUMSURFACES_CANBECREATED             0x00000008l
4152
 
4153
/*
4154
 * Enumerate the surfaces that already exist that meet the search criterion.
4155
 */
4156
#define DDENUMSURFACES_DOESEXIST                0x00000010l
4157
 
4158
 
4159
/****************************************************************************
4160
 *
4161
 * DIRECTDRAW SETDISPLAYMODE FLAGS
4162
 *
4163
 ****************************************************************************/
4164
 
4165
/*
4166
 * The desired mode is a standard VGA mode
4167
 */
4168
#define DDSDM_STANDARDVGAMODE                   0x00000001l
4169
 
4170
 
4171
/****************************************************************************
4172
 *
4173
 * DIRECTDRAW ENUMDISPLAYMODES FLAGS
4174
 *
4175
 ****************************************************************************/
4176
 
4177
/*
4178
 * Enumerate Modes with different refresh rates.  EnumDisplayModes guarantees
4179
 * that a particular mode will be enumerated only once.  This flag specifies whether
4180
 * the refresh rate is taken into account when determining if a mode is unique.
4181
 */
4182
#define DDEDM_REFRESHRATES                      0x00000001l
4183
 
4184
/*
4185
 * Enumerate VGA modes. Specify this flag if you wish to enumerate supported VGA
4186
 * modes such as mode 0x13 in addition to the usual ModeX modes (which are always
4187
 * enumerated if the application has previously called SetCooperativeLevel with the
4188
 * DDSCL_ALLOWMODEX flag set).
4189
 */
4190
#define DDEDM_STANDARDVGAMODES                  0x00000002L
4191
 
4192
 
4193
/****************************************************************************
4194
 *
4195
 * DIRECTDRAW SETCOOPERATIVELEVEL FLAGS
4196
 *
4197
 ****************************************************************************/
4198
 
4199
/*
4200
 * Exclusive mode owner will be responsible for the entire primary surface.
4201
 * GDI can be ignored. used with DD
4202
 */
4203
#define DDSCL_FULLSCREEN                        0x00000001l
4204
 
4205
/*
4206
 * allow CTRL_ALT_DEL to work while in fullscreen exclusive mode
4207
 */
4208
#define DDSCL_ALLOWREBOOT                       0x00000002l
4209
 
4210
/*
4211
 * prevents DDRAW from modifying the application window.
4212
 * prevents DDRAW from minimize/restore the application window on activation.
4213
 */
4214
#define DDSCL_NOWINDOWCHANGES                   0x00000004l
4215
 
4216
/*
4217
 * app wants to work as a regular Windows application
4218
 */
4219
#define DDSCL_NORMAL                            0x00000008l
4220
 
4221
/*
4222
 * app wants exclusive access
4223
 */
4224
#define DDSCL_EXCLUSIVE                         0x00000010l
4225
 
4226
 
4227
/*
4228
 * app can deal with non-windows display modes
4229
 */
4230
#define DDSCL_ALLOWMODEX                        0x00000040l
4231
 
4232
/*
4233
 * this window will receive the focus messages
4234
 */
4235
#define DDSCL_SETFOCUSWINDOW                    0x00000080l
4236
 
4237
/*
4238
 * this window is associated with the DDRAW object and will
4239
 * cover the screen in fullscreen mode
4240
 */
4241
#define DDSCL_SETDEVICEWINDOW                   0x00000100l
4242
 
4243
/*
4244
 * app wants DDRAW to create a window to be associated with the
4245
 * DDRAW object
4246
 */
4247
#define DDSCL_CREATEDEVICEWINDOW                0x00000200l
4248
 
4249
/*
4250
 * App explicitly asks DDRAW/D3D to be multithread safe. This makes D3D
4251
 * take the global crtisec more frequently.
4252
 */
4253
#define DDSCL_MULTITHREADED                     0x00000400l
4254
 
4255
/*
4256
 * App specifies that it would like to keep the FPU set up for optimal Direct3D
4257
 * performance (single precision and exceptions disabled) so Direct3D
4258
 * does not need to explicitly set the FPU each time. This is assumed by
4259
 * default in DirectX 7. See also DDSCL_FPUPRESERVE
4260
 */
4261
#define DDSCL_FPUSETUP                          0x00000800l
4262
 
4263
/*
4264
 * App specifies that it needs either double precision FPU or FPU exceptions
4265
 * enabled. This makes Direct3D explicitly set the FPU state eah time it is
4266
 * called. Setting the flag will reduce Direct3D performance. The flag is
4267
 * assumed by default in DirectX 6 and earlier. See also DDSCL_FPUSETUP
4268
 */
4269
#define DDSCL_FPUPRESERVE                          0x00001000l
4270
 
4271
 
4272
/****************************************************************************
4273
 *
4274
 * DIRECTDRAW BLT FLAGS
4275
 *
4276
 ****************************************************************************/
4277
 
4278
/*
4279
 * Use the alpha information in the pixel format or the alpha channel surface
4280
 * attached to the destination surface as the alpha channel for this blt.
4281
 */
4282
#define DDBLT_ALPHADEST                         0x00000001l
4283
 
4284
/*
4285
 * Use the dwConstAlphaDest field in the DDBLTFX structure as the alpha channel
4286
 * for the destination surface for this blt.
4287
 */
4288
#define DDBLT_ALPHADESTCONSTOVERRIDE            0x00000002l
4289
 
4290
/*
4291
 * The NEG suffix indicates that the destination surface becomes more
4292
 * transparent as the alpha value increases. (0 is opaque)
4293
 */
4294
#define DDBLT_ALPHADESTNEG                      0x00000004l
4295
 
4296
/*
4297
 * Use the lpDDSAlphaDest field in the DDBLTFX structure as the alpha
4298
 * channel for the destination for this blt.
4299
 */
4300
#define DDBLT_ALPHADESTSURFACEOVERRIDE          0x00000008l
4301
 
4302
/*
4303
 * Use the dwAlphaEdgeBlend field in the DDBLTFX structure as the alpha channel
4304
 * for the edges of the image that border the color key colors.
4305
 */
4306
#define DDBLT_ALPHAEDGEBLEND                    0x00000010l
4307
 
4308
/*
4309
 * Use the alpha information in the pixel format or the alpha channel surface
4310
 * attached to the source surface as the alpha channel for this blt.
4311
 */
4312
#define DDBLT_ALPHASRC                          0x00000020l
4313
 
4314
/*
4315
 * Use the dwConstAlphaSrc field in the DDBLTFX structure as the alpha channel
4316
 * for the source for this blt.
4317
 */
4318
#define DDBLT_ALPHASRCCONSTOVERRIDE             0x00000040l
4319
 
4320
/*
4321
 * The NEG suffix indicates that the source surface becomes more transparent
4322
 * as the alpha value increases. (0 is opaque)
4323
 */
4324
#define DDBLT_ALPHASRCNEG                       0x00000080l
4325
 
4326
/*
4327
 * Use the lpDDSAlphaSrc field in the DDBLTFX structure as the alpha channel
4328
 * for the source for this blt.
4329
 */
4330
#define DDBLT_ALPHASRCSURFACEOVERRIDE           0x00000100l
4331
 
4332
/*
4333
 * Do this blt asynchronously through the FIFO in the order received.  If
4334
 * there is no room in the hardware FIFO fail the call.
4335
 */
4336
#define DDBLT_ASYNC                             0x00000200l
4337
 
4338
/*
4339
 * Uses the dwFillColor field in the DDBLTFX structure as the RGB color
4340
 * to fill the destination rectangle on the destination surface with.
4341
 */
4342
#define DDBLT_COLORFILL                         0x00000400l
4343
 
4344
/*
4345
 * Uses the dwDDFX field in the DDBLTFX structure to specify the effects
4346
 * to use for the blt.
4347
 */
4348
#define DDBLT_DDFX                              0x00000800l
4349
 
4350
/*
4351
 * Uses the dwDDROPS field in the DDBLTFX structure to specify the ROPS
4352
 * that are not part of the Win32 API.
4353
 */
4354
#define DDBLT_DDROPS                            0x00001000l
4355
 
4356
/*
4357
 * Use the color key associated with the destination surface.
4358
 */
4359
#define DDBLT_KEYDEST                           0x00002000l
4360
 
4361
/*
4362
 * Use the dckDestColorkey field in the DDBLTFX structure as the color key
4363
 * for the destination surface.
4364
 */
4365
#define DDBLT_KEYDESTOVERRIDE                   0x00004000l
4366
 
4367
/*
4368
 * Use the color key associated with the source surface.
4369
 */
4370
#define DDBLT_KEYSRC                            0x00008000l
4371
 
4372
/*
4373
 * Use the dckSrcColorkey field in the DDBLTFX structure as the color key
4374
 * for the source surface.
4375
 */
4376
#define DDBLT_KEYSRCOVERRIDE                    0x00010000l
4377
 
4378
/*
4379
 * Use the dwROP field in the DDBLTFX structure for the raster operation
4380
 * for this blt.  These ROPs are the same as the ones defined in the Win32 API.
4381
 */
4382
#define DDBLT_ROP                               0x00020000l
4383
 
4384
/*
4385
 * Use the dwRotationAngle field in the DDBLTFX structure as the angle
4386
 * (specified in 1/100th of a degree) to rotate the surface.
4387
 */
4388
#define DDBLT_ROTATIONANGLE                     0x00040000l
4389
 
4390
/*
4391
 * Z-buffered blt using the z-buffers attached to the source and destination
4392
 * surfaces and the dwZBufferOpCode field in the DDBLTFX structure as the
4393
 * z-buffer opcode.
4394
 */
4395
#define DDBLT_ZBUFFER                           0x00080000l
4396
 
4397
/*
4398
 * Z-buffered blt using the dwConstDest Zfield and the dwZBufferOpCode field
4399
 * in the DDBLTFX structure as the z-buffer and z-buffer opcode respectively
4400
 * for the destination.
4401
 */
4402
#define DDBLT_ZBUFFERDESTCONSTOVERRIDE          0x00100000l
4403
 
4404
/*
4405
 * Z-buffered blt using the lpDDSDestZBuffer field and the dwZBufferOpCode
4406
 * field in the DDBLTFX structure as the z-buffer and z-buffer opcode
4407
 * respectively for the destination.
4408
 */
4409
#define DDBLT_ZBUFFERDESTOVERRIDE               0x00200000l
4410
 
4411
/*
4412
 * Z-buffered blt using the dwConstSrcZ field and the dwZBufferOpCode field
4413
 * in the DDBLTFX structure as the z-buffer and z-buffer opcode respectively
4414
 * for the source.
4415
 */
4416
#define DDBLT_ZBUFFERSRCCONSTOVERRIDE           0x00400000l
4417
 
4418
/*
4419
 * Z-buffered blt using the lpDDSSrcZBuffer field and the dwZBufferOpCode
4420
 * field in the DDBLTFX structure as the z-buffer and z-buffer opcode
4421
 * respectively for the source.
4422
 */
4423
#define DDBLT_ZBUFFERSRCOVERRIDE                0x00800000l
4424
 
4425
/*
4426
 * wait until the device is ready to handle the blt
4427
 * this will cause blt to not return DDERR_WASSTILLDRAWING
4428
 */
4429
#define DDBLT_WAIT                              0x01000000l
4430
 
4431
/*
4432
 * Uses the dwFillDepth field in the DDBLTFX structure as the depth value
4433
 * to fill the destination rectangle on the destination Z-buffer surface
4434
 * with.
4435
 */
4436
#define DDBLT_DEPTHFILL                         0x02000000l
4437
 
4438
 
4439
/*
4440
 * Return immediately (with DDERR_WASSTILLDRAWING) if the device is not
4441
 * ready to schedule the blt at the time Blt() is called.
4442
 */
4443
#define DDBLT_DONOTWAIT                         0x08000000l
4444
 
4445
/*
4446
 * These flags indicate a presentation blt (i.e. a blt
4447
 * that moves surface contents from an offscreen back buffer to the primary
4448
 * surface). The driver is not allowed to "queue"  more than three such blts.
4449
 * The "end" of the presentation blt is indicated, since the
4450
 * blt may be clipped, in which case the runtime will call the driver with
4451
 * several blts. All blts (even if not clipped) are tagged with DDBLT_PRESENTATION
4452
 * and the last (even if not clipped) additionally with DDBLT_LAST_PRESENTATION.
4453
 * Thus the true rule is that the driver must not schedule a DDBLT_PRESENTATION
4454
 * blt if there are 3 or more DDBLT_PRESENTLAST blts in the hardware pipe.
4455
 * If there are such blts in the pipe, the driver should return DDERR_WASSTILLDRAWING
4456
 * until the oldest queued DDBLT_LAST_PRESENTATION blts has been retired (i.e. the
4457
 * pixels have been actually written to the primary surface). Once the oldest blt
4458
 * has been retired, the driver is free to schedule the current blt.
4459
 * The goal is to provide a mechanism whereby the device's hardware queue never
4460
 * gets more than 3 frames ahead of the frames being generated by the application.
4461
 * When excessive queueing occurs, applications become unusable because the application
4462
 * visibly lags user input, and such problems make windowed interactive applications impossible.
4463
 * Some drivers may not have sufficient knowledge of their hardware's FIFO to know
4464
 * when a certain blt has been retired. Such drivers should code cautiously, and
4465
 * simply not allow any frames to be queued at all. DDBLT_LAST_PRESENTATION should cause
4466
 * such drivers to return DDERR_WASSTILLDRAWING until the accelerator is completely
4467
 * finished- exactly as if the application had called Lock on the source surface
4468
 * before calling Blt.
4469
 * In other words, the driver is allowed and encouraged to
4470
 * generate as much latency as it can, but never more than 3 frames worth.
4471
 * Implementation detail: Drivers should count blts against the SOURCE surface, not
4472
 * against the primary surface. This enables multiple parallel windowed application
4473
 * to function more optimally.
4474
 * This flag is passed only to DX8 or higher drivers.
4475
 *
4476
 * APPLICATIONS DO NOT SET THESE FLAGS. THEY ARE SET BY THE DIRECTDRAW RUNTIME.
4477
 *
4478
 */
4479
#define DDBLT_PRESENTATION                      0x10000000l
4480
#define DDBLT_LAST_PRESENTATION                 0x20000000l
4481
 
4482
/*
4483
 * If DDBLT_EXTENDED_FLAGS is set, then the driver should re-interpret
4484
 * other flags according to the definitions that follow.
4485
 * For example, bit 0 (0x00000001L) means DDBLT_ALPHADEST, unless
4486
 * DDBLT_EXTENDED_FLAGS is also set, in which case bit 0 means
4487
 * DDBLT_EXTENDED_LINEAR_CONTENT.
4488
 * Only DirectX9 and higher drivers will be given extended blt flags.
4489
 * Only flags explicitly mentioned here should be re-interpreted.
4490
 * All other flags retain their original meanings.
4491
 *
4492
 * List of re-interpreted flags:
4493
 *
4494
 * Bit Hex value   New meaning                                  old meaning
4495
 * ---------------------------------------------------------------
4496
 *  2  0x00000004  DDBLT_EXTENDED_LINEAR_CONTENT                DDBLT_ALPHADESTNEG
4497
 *  4  0x00000010  DDBLT_EXTENDED_PRESENTATION_STRETCHFACTOR    DDBLT_ALPHAEDGEBLEND
4498
 *
4499
 *
4500
 * NOTE: APPLICATIONS SHOULD NOT SET THIS FLAG. THIS FLAG IS INTENDED
4501
 * FOR USE BY THE DIRECT3D RUNTIME.
4502
 */
4503
#define DDBLT_EXTENDED_FLAGS                    0x40000000l
4504
 
4505
/*
4506
 * EXTENDED FLAG. SEE DEFINITION OF DDBLT_EXTENDED_FLAGS.
4507
 * This flag indidcates that the source surface contains content in a
4508
 * linear color space. The driver may perform gamma correction to the
4509
 * desktop color space (i.e. sRGB, gamma 2.2) as part of this blt.
4510
 * If the device can perform such a conversion as part of the copy,
4511
 * the driver should also set D3DCAPS3_LINEAR_TO_SRGB_PRESENTATION
4512
 *
4513
 * NOTE: APPLICATIONS SHOULD NOT SET THIS FLAG. THIS FLAG IS INTENDED
4514
 * FOR USE BY THE DIRECT3D RUNTIME. Use IDirect3DSwapChain9::Present
4515
 * and specify D3DPRESENT_LINEAR_CONTENT in order to use this functionality.
4516
 */
4517
#define DDBLT_EXTENDED_LINEAR_CONTENT           0x00000004l
4518
 
4519
 
4520
/****************************************************************************
4521
 *
4522
 * BLTFAST FLAGS
4523
 *
4524
 ****************************************************************************/
4525
 
4526
#define DDBLTFAST_NOCOLORKEY                    0x00000000
4527
#define DDBLTFAST_SRCCOLORKEY                   0x00000001
4528
#define DDBLTFAST_DESTCOLORKEY                  0x00000002
4529
#define DDBLTFAST_WAIT                          0x00000010
4530
#define DDBLTFAST_DONOTWAIT                     0x00000020
4531
 
4532
/****************************************************************************
4533
 *
4534
 * FLIP FLAGS
4535
 *
4536
 ****************************************************************************/
4537
 
4538
#define DDFLIP_WAIT                          0x00000001L
4539
 
4540
/*
4541
 * Indicates that the target surface contains the even field of video data.
4542
 * This flag is only valid with an overlay surface.
4543
 */
4544
#define DDFLIP_EVEN                          0x00000002L
4545
 
4546
/*
4547
 * Indicates that the target surface contains the odd field of video data.
4548
 * This flag is only valid with an overlay surface.
4549
 */
4550
#define DDFLIP_ODD                           0x00000004L
4551
 
4552
/*
4553
 * Causes DirectDraw to perform the physical flip immediately and return
4554
 * to the application. Typically, what was the front buffer but is now the back
4555
 * buffer will still be visible (depending on timing) until the next vertical
4556
 * retrace. Subsequent operations involving the two flipped surfaces will
4557
 * not check to see if the physical flip has finished (i.e. will not return
4558
 * DDERR_WASSTILLDRAWING for that reason (but may for other reasons)).
4559
 * This allows an application to perform Flips at a higher frequency than the
4560
 * monitor refresh rate, but may introduce visible artifacts.
4561
 * Only effective if DDCAPS2_FLIPNOVSYNC is set. If that bit is not set,
4562
 * DDFLIP_NOVSYNC has no effect.
4563
 */
4564
#define DDFLIP_NOVSYNC                       0x00000008L
4565
 
4566
 
4567
/*
4568
 * Flip Interval Flags. These flags indicate how many vertical retraces to wait between
4569
 * each flip. The default is one. DirectDraw will return DDERR_WASSTILLDRAWING for each
4570
 * surface involved in the flip until the specified number of vertical retraces has
4571
 * ocurred. Only effective if DDCAPS2_FLIPINTERVAL is set. If that bit is not set,
4572
 * DDFLIP_INTERVALn has no effect.
4573
 */
4574
 
4575
/*
4576
 * DirectDraw will flip on every other vertical sync
4577
 */
4578
#define DDFLIP_INTERVAL2                     0x02000000L
4579
 
4580
 
4581
/*
4582
 * DirectDraw will flip on every third vertical sync
4583
 */
4584
#define DDFLIP_INTERVAL3                     0x03000000L
4585
 
4586
 
4587
/*
4588
 * DirectDraw will flip on every fourth vertical sync
4589
 */
4590
#define DDFLIP_INTERVAL4                     0x04000000L
4591
 
4592
/*
4593
 * DirectDraw will flip and display a main stereo surface
4594
 */
4595
#define DDFLIP_STEREO                        0x00000010L
4596
 
4597
/*
4598
 * On IDirectDrawSurface7 and higher interfaces, the default is DDFLIP_WAIT. If you wish
4599
 * to override the default and use time when the accelerator is busy (as denoted by
4600
 * the DDERR_WASSTILLDRAWING return code) then use DDFLIP_DONOTWAIT.
4601
 */
4602
#define DDFLIP_DONOTWAIT                     0x00000020L
4603
 
4604
 
4605
/****************************************************************************
4606
 *
4607
 * DIRECTDRAW SURFACE OVERLAY FLAGS
4608
 *
4609
 ****************************************************************************/
4610
 
4611
/*
4612
 * Use the alpha information in the pixel format or the alpha channel surface
4613
 * attached to the destination surface as the alpha channel for the
4614
 * destination overlay.
4615
 */
4616
#define DDOVER_ALPHADEST                        0x00000001l
4617
 
4618
/*
4619
 * Use the dwConstAlphaDest field in the DDOVERLAYFX structure as the
4620
 * destination alpha channel for this overlay.
4621
 */
4622
#define DDOVER_ALPHADESTCONSTOVERRIDE           0x00000002l
4623
 
4624
/*
4625
 * The NEG suffix indicates that the destination surface becomes more
4626
 * transparent as the alpha value increases.
4627
 */
4628
#define DDOVER_ALPHADESTNEG                     0x00000004l
4629
 
4630
/*
4631
 * Use the lpDDSAlphaDest field in the DDOVERLAYFX structure as the alpha
4632
 * channel destination for this overlay.
4633
 */
4634
#define DDOVER_ALPHADESTSURFACEOVERRIDE         0x00000008l
4635
 
4636
/*
4637
 * Use the dwAlphaEdgeBlend field in the DDOVERLAYFX structure as the alpha
4638
 * channel for the edges of the image that border the color key colors.
4639
 */
4640
#define DDOVER_ALPHAEDGEBLEND                   0x00000010l
4641
 
4642
/*
4643
 * Use the alpha information in the pixel format or the alpha channel surface
4644
 * attached to the source surface as the source alpha channel for this overlay.
4645
 */
4646
#define DDOVER_ALPHASRC                         0x00000020l
4647
 
4648
/*
4649
 * Use the dwConstAlphaSrc field in the DDOVERLAYFX structure as the source
4650
 * alpha channel for this overlay.
4651
 */
4652
#define DDOVER_ALPHASRCCONSTOVERRIDE            0x00000040l
4653
 
4654
/*
4655
 * The NEG suffix indicates that the source surface becomes more transparent
4656
 * as the alpha value increases.
4657
 */
4658
#define DDOVER_ALPHASRCNEG                      0x00000080l
4659
 
4660
/*
4661
 * Use the lpDDSAlphaSrc field in the DDOVERLAYFX structure as the alpha channel
4662
 * source for this overlay.
4663
 */
4664
#define DDOVER_ALPHASRCSURFACEOVERRIDE          0x00000100l
4665
 
4666
/*
4667
 * Turn this overlay off.
4668
 */
4669
#define DDOVER_HIDE                             0x00000200l
4670
 
4671
/*
4672
 * Use the color key associated with the destination surface.
4673
 */
4674
#define DDOVER_KEYDEST                          0x00000400l
4675
 
4676
/*
4677
 * Use the dckDestColorkey field in the DDOVERLAYFX structure as the color key
4678
 * for the destination surface
4679
 */
4680
#define DDOVER_KEYDESTOVERRIDE                  0x00000800l
4681
 
4682
/*
4683
 * Use the color key associated with the source surface.
4684
 */
4685
#define DDOVER_KEYSRC                           0x00001000l
4686
 
4687
/*
4688
 * Use the dckSrcColorkey field in the DDOVERLAYFX structure as the color key
4689
 * for the source surface.
4690
 */
4691
#define DDOVER_KEYSRCOVERRIDE                   0x00002000l
4692
 
4693
/*
4694
 * Turn this overlay on.
4695
 */
4696
#define DDOVER_SHOW                             0x00004000l
4697
 
4698
/*
4699
 * Add a dirty rect to an emulated overlayed surface.
4700
 */
4701
#define DDOVER_ADDDIRTYRECT                     0x00008000l
4702
 
4703
/*
4704
 * Redraw all dirty rects on an emulated overlayed surface.
4705
 */
4706
#define DDOVER_REFRESHDIRTYRECTS                0x00010000l
4707
 
4708
/*
4709
 * Redraw the entire surface on an emulated overlayed surface.
4710
 */
4711
#define DDOVER_REFRESHALL                      0x00020000l
4712
 
4713
 
4714
/*
4715
 * Use the overlay FX flags to define special overlay FX
4716
 */
4717
#define DDOVER_DDFX                             0x00080000l
4718
 
4719
/*
4720
 * Autoflip the overlay when ever the video port autoflips
4721
 */
4722
#define DDOVER_AUTOFLIP                         0x00100000l
4723
 
4724
/*
4725
 * Display each field of video port data individually without
4726
 * causing any jittery artifacts
4727
 */
4728
#define DDOVER_BOB                              0x00200000l
4729
 
4730
/*
4731
 * Indicates that bob/weave decisions should not be overridden by other
4732
 * interfaces.
4733
 */
4734
#define DDOVER_OVERRIDEBOBWEAVE                 0x00400000l
4735
 
4736
/*
4737
 * Indicates that the surface memory is composed of interleaved fields.
4738
 */
4739
#define DDOVER_INTERLEAVED                      0x00800000l
4740
 
4741
/*
4742
 * Indicates that bob will be performed using hardware rather than
4743
 * software or emulated.
4744
 */
4745
#define DDOVER_BOBHARDWARE                      0x01000000l
4746
 
4747
/*
4748
 * Indicates that overlay FX structure contains valid ARGB scaling factors.
4749
 */
4750
#define DDOVER_ARGBSCALEFACTORS                 0x02000000l
4751
 
4752
/*
4753
 * Indicates that ARGB scaling factors can be degraded to fit driver capabilities.
4754
 */
4755
#define DDOVER_DEGRADEARGBSCALING               0x04000000l
4756
 
4757
 
4758
#ifdef  COMBOX_SANDBOX
4759
#define DX_LONGHORN_PRESERVEDC
4760
#endif
4761
 
4762
#ifdef DX_LONGHORN_PRESERVEDC
4763
 
4764
/****************************************************************************
4765
 *
4766
 * DIRECTDRAWSURFACE SETSURFACEDESC FLAGS
4767
 *
4768
 ****************************************************************************/
4769
 
4770
/*
4771
 * The default.  The GDI DC will be tore down.
4772
 */
4773
#define DDSETSURFACEDESC_RECREATEDC             0x00000000L     // default
4774
 
4775
/*
4776
 * The default.  The GDI DC will be kept.
4777
 */
4778
#define DDSETSURFACEDESC_PRESERVEDC             0x00000001L
4779
 
4780
 
4781
#endif // DX_LONGHORN_PRESERVEDC
4782
 
4783
/****************************************************************************
4784
 *
4785
 * DIRECTDRAWSURFACE LOCK FLAGS
4786
 *
4787
 ****************************************************************************/
4788
 
4789
/*
4790
 * The default.  Set to indicate that Lock should return a valid memory pointer
4791
 * to the top of the specified rectangle.  If no rectangle is specified then a
4792
 * pointer to the top of the surface is returned.
4793
 */
4794
#define DDLOCK_SURFACEMEMORYPTR                 0x00000000L     // default
4795
 
4796
/*
4797
 * Set to indicate that Lock should wait until it can obtain a valid memory
4798
 * pointer before returning.  If this bit is set, Lock will never return
4799
 * DDERR_WASSTILLDRAWING.
4800
 */
4801
#define DDLOCK_WAIT                             0x00000001L
4802
 
4803
/*
4804
 * Set if an event handle is being passed to Lock.  Lock will trigger the event
4805
 * when it can return the surface memory pointer requested.
4806
 */
4807
#define DDLOCK_EVENT                            0x00000002L
4808
 
4809
/*
4810
 * Indicates that the surface being locked will only be read from.
4811
 */
4812
#define DDLOCK_READONLY                         0x00000010L
4813
 
4814
/*
4815
 * Indicates that the surface being locked will only be written to
4816
 */
4817
#define DDLOCK_WRITEONLY                        0x00000020L
4818
 
4819
 
4820
/*
4821
 * Indicates that a system wide lock should not be taken when this surface
4822
 * is locked. This has several advantages (cursor responsiveness, ability
4823
 * to call more Windows functions, easier debugging) when locking video
4824
 * memory surfaces. However, an application specifying this flag must
4825
 * comply with a number of conditions documented in the help file.
4826
 * Furthermore, this flag cannot be specified when locking the primary.
4827
 */
4828
#define DDLOCK_NOSYSLOCK                        0x00000800L
4829
 
4830
/*
4831
 * Used only with Direct3D Vertex Buffer Locks. Indicates that no vertices
4832
 * that were referred to in Draw*PrimtiveVB calls since the start of the
4833
 * frame (or the last lock without this flag) will be modified during the
4834
 * lock. This can be useful when one is only appending data to the vertex
4835
 * buffer
4836
 */
4837
#define DDLOCK_NOOVERWRITE                      0x00001000L
4838
 
4839
/*
4840
 * Indicates that no assumptions will be made about the contents of the
4841
 * surface or vertex buffer during this lock.
4842
 * This enables two things:
4843
 * -    Direct3D or the driver may provide an alternative memory
4844
 *      area as the vertex buffer. This is useful when one plans to clear the
4845
 *      contents of the vertex buffer and fill in new data.
4846
 * -    Drivers sometimes store surface data in a re-ordered format.
4847
 *      When the application locks the surface, the driver is forced to un-re-order
4848
 *      the surface data before allowing the application to see the surface contents.
4849
 *      This flag is a hint to the driver that it can skip the un-re-ordering process
4850
 *      since the application plans to overwrite every single pixel in the surface
4851
 *      or locked rectangle (and so erase any un-re-ordered pixels anyway).
4852
 *      Applications should always set this flag when they intend to overwrite the entire
4853
 *      surface or locked rectangle.
4854
 */
4855
#define DDLOCK_DISCARDCONTENTS                  0x00002000L
4856
 /*
4857
  * DDLOCK_OKTOSWAP is an older, less informative name for DDLOCK_DISCARDCONTENTS
4858
  */
4859
#define DDLOCK_OKTOSWAP                         0x00002000L
4860
 
4861
/*
4862
 * On IDirectDrawSurface7 and higher interfaces, the default is DDLOCK_WAIT. If you wish
4863
 * to override the default and use time when the accelerator is busy (as denoted by
4864
 * the DDERR_WASSTILLDRAWING return code) then use DDLOCK_DONOTWAIT.
4865
 */
4866
#define DDLOCK_DONOTWAIT                        0x00004000L
4867
 
4868
/*
4869
 * This indicates volume texture lock with front and back specified.
4870
 */
4871
#define DDLOCK_HASVOLUMETEXTUREBOXRECT          0x00008000L
4872
 
4873
/*
4874
 * This indicates that the driver should not update dirty rect information for this lock.
4875
 */
4876
#define DDLOCK_NODIRTYUPDATE                    0x00010000L
4877
 
4878
 
4879
/****************************************************************************
4880
 *
4881
 * DIRECTDRAWSURFACE PAGELOCK FLAGS
4882
 *
4883
 ****************************************************************************/
4884
 
4885
/*
4886
 * No flags defined at present
4887
 */
4888
 
4889
 
4890
/****************************************************************************
4891
 *
4892
 * DIRECTDRAWSURFACE PAGEUNLOCK FLAGS
4893
 *
4894
 ****************************************************************************/
4895
 
4896
/*
4897
 * No flags defined at present
4898
 */
4899
 
4900
 
4901
/****************************************************************************
4902
 *
4903
 * DIRECTDRAWSURFACE BLT FX FLAGS
4904
 *
4905
 ****************************************************************************/
4906
 
4907
/*
4908
 * If stretching, use arithmetic stretching along the Y axis for this blt.
4909
 */
4910
#define DDBLTFX_ARITHSTRETCHY                   0x00000001l
4911
 
4912
/*
4913
 * Do this blt mirroring the surface left to right.  Spin the
4914
 * surface around its y-axis.
4915
 */
4916
#define DDBLTFX_MIRRORLEFTRIGHT                 0x00000002l
4917
 
4918
/*
4919
 * Do this blt mirroring the surface up and down.  Spin the surface
4920
 * around its x-axis.
4921
 */
4922
#define DDBLTFX_MIRRORUPDOWN                    0x00000004l
4923
 
4924
/*
4925
 * Schedule this blt to avoid tearing.
4926
 */
4927
#define DDBLTFX_NOTEARING                       0x00000008l
4928
 
4929
/*
4930
 * Do this blt rotating the surface one hundred and eighty degrees.
4931
 */
4932
#define DDBLTFX_ROTATE180                       0x00000010l
4933
 
4934
/*
4935
 * Do this blt rotating the surface two hundred and seventy degrees.
4936
 */
4937
#define DDBLTFX_ROTATE270                       0x00000020l
4938
 
4939
/*
4940
 * Do this blt rotating the surface ninety degrees.
4941
 */
4942
#define DDBLTFX_ROTATE90                        0x00000040l
4943
 
4944
/*
4945
 * Do this z blt using dwZBufferLow and dwZBufferHigh as  range values
4946
 * specified to limit the bits copied from the source surface.
4947
 */
4948
#define DDBLTFX_ZBUFFERRANGE                    0x00000080l
4949
 
4950
/*
4951
 * Do this z blt adding the dwZBufferBaseDest to each of the sources z values
4952
 * before comparing it with the desting z values.
4953
 */
4954
#define DDBLTFX_ZBUFFERBASEDEST                 0x00000100l
4955
 
4956
/****************************************************************************
4957
 *
4958
 * DIRECTDRAWSURFACE OVERLAY FX FLAGS
4959
 *
4960
 ****************************************************************************/
4961
 
4962
/*
4963
 * If stretching, use arithmetic stretching along the Y axis for this overlay.
4964
 */
4965
#define DDOVERFX_ARITHSTRETCHY                  0x00000001l
4966
 
4967
/*
4968
 * Mirror the overlay across the vertical axis
4969
 */
4970
#define DDOVERFX_MIRRORLEFTRIGHT                0x00000002l
4971
 
4972
/*
4973
 * Mirror the overlay across the horizontal axis
4974
 */
4975
#define DDOVERFX_MIRRORUPDOWN                   0x00000004l
4976
 
4977
/*
4978
 * Deinterlace the overlay, if possible
4979
 */
4980
#define DDOVERFX_DEINTERLACE                    0x00000008l
4981
 
4982
 
4983
/****************************************************************************
4984
 *
4985
 * DIRECTDRAW WAITFORVERTICALBLANK FLAGS
4986
 *
4987
 ****************************************************************************/
4988
 
4989
/*
4990
 * return when the vertical blank interval begins
4991
 */
4992
#define DDWAITVB_BLOCKBEGIN                     0x00000001l
4993
 
4994
/*
4995
 * set up an event to trigger when the vertical blank begins
4996
 */
4997
#define DDWAITVB_BLOCKBEGINEVENT                0x00000002l
4998
 
4999
/*
5000
 * return when the vertical blank interval ends and display begins
5001
 */
5002
#define DDWAITVB_BLOCKEND                       0x00000004l
5003
 
5004
/****************************************************************************
5005
 *
5006
 * DIRECTDRAW GETFLIPSTATUS FLAGS
5007
 *
5008
 ****************************************************************************/
5009
 
5010
/*
5011
 * is it OK to flip now?
5012
 */
5013
#define DDGFS_CANFLIP                   0x00000001l
5014
 
5015
/*
5016
 * is the last flip finished?
5017
 */
5018
#define DDGFS_ISFLIPDONE                0x00000002l
5019
 
5020
/****************************************************************************
5021
 *
5022
 * DIRECTDRAW GETBLTSTATUS FLAGS
5023
 *
5024
 ****************************************************************************/
5025
 
5026
/*
5027
 * is it OK to blt now?
5028
 */
5029
#define DDGBS_CANBLT                    0x00000001l
5030
 
5031
/*
5032
 * is the blt to the surface finished?
5033
 */
5034
#define DDGBS_ISBLTDONE                 0x00000002l
5035
 
5036
 
5037
/****************************************************************************
5038
 *
5039
 * DIRECTDRAW ENUMOVERLAYZORDER FLAGS
5040
 *
5041
 ****************************************************************************/
5042
 
5043
/*
5044
 * Enumerate overlays back to front.
5045
 */
5046
#define DDENUMOVERLAYZ_BACKTOFRONT      0x00000000l
5047
 
5048
/*
5049
 * Enumerate overlays front to back
5050
 */
5051
#define DDENUMOVERLAYZ_FRONTTOBACK      0x00000001l
5052
 
5053
/****************************************************************************
5054
 *
5055
 * DIRECTDRAW UPDATEOVERLAYZORDER FLAGS
5056
 *
5057
 ****************************************************************************/
5058
 
5059
/*
5060
 * Send overlay to front
5061
 */
5062
#define DDOVERZ_SENDTOFRONT             0x00000000l
5063
 
5064
/*
5065
 * Send overlay to back
5066
 */
5067
#define DDOVERZ_SENDTOBACK              0x00000001l
5068
 
5069
/*
5070
 * Move Overlay forward
5071
 */
5072
#define DDOVERZ_MOVEFORWARD             0x00000002l
5073
 
5074
/*
5075
 * Move Overlay backward
5076
 */
5077
#define DDOVERZ_MOVEBACKWARD            0x00000003l
5078
 
5079
/*
5080
 * Move Overlay in front of relative surface
5081
 */
5082
#define DDOVERZ_INSERTINFRONTOF         0x00000004l
5083
 
5084
/*
5085
 * Move Overlay in back of relative surface
5086
 */
5087
#define DDOVERZ_INSERTINBACKOF          0x00000005l
5088
 
5089
 
5090
/****************************************************************************
5091
 *
5092
 * DIRECTDRAW SETGAMMARAMP FLAGS
5093
 *
5094
 ****************************************************************************/
5095
 
5096
/*
5097
 * Request calibrator to adjust the gamma ramp according to the physical
5098
 * properties of the display so that the result should appear identical
5099
 * on all systems.
5100
 */
5101
#define DDSGR_CALIBRATE                        0x00000001L
5102
 
5103
 
5104
/****************************************************************************
5105
 *
5106
 * DIRECTDRAW STARTMODETEST FLAGS
5107
 *
5108
 ****************************************************************************/
5109
 
5110
/*
5111
 * Indicates that the mode being tested has passed
5112
 */
5113
#define DDSMT_ISTESTREQUIRED                   0x00000001L
5114
 
5115
 
5116
/****************************************************************************
5117
 *
5118
 * DIRECTDRAW EVALUATEMODE FLAGS
5119
 *
5120
 ****************************************************************************/
5121
 
5122
/*
5123
 * Indicates that the mode being tested has passed
5124
 */
5125
#define DDEM_MODEPASSED                        0x00000001L
5126
 
5127
/*
5128
 * Indicates that the mode being tested has failed
5129
 */
5130
#define DDEM_MODEFAILED                        0x00000002L
5131
 
5132
 
5133
/*===========================================================================
5134
 *
5135
 *
5136
 * DIRECTDRAW RETURN CODES
5137
 *
5138
 * The return values from DirectDraw Commands and Surface that return an HRESULT
5139
 * are codes from DirectDraw concerning the results of the action
5140
 * requested by DirectDraw.
5141
 *
5142
 *==========================================================================*/
5143
 
5144
/*
5145
 * Status is OK
5146
 *
5147
 * Issued by: DirectDraw Commands and all callbacks
5148
 */
5149
#define DD_OK                                   S_OK
5150
#define DD_FALSE                                S_FALSE
5151
 
5152
/****************************************************************************
5153
 *
5154
 * DIRECTDRAW ENUMCALLBACK RETURN VALUES
5155
 *
5156
 * EnumCallback returns are used to control the flow of the DIRECTDRAW and
5157
 * DIRECTDRAWSURFACE object enumerations.   They can only be returned by
5158
 * enumeration callback routines.
5159
 *
5160
 ****************************************************************************/
5161
 
5162
/*
5163
 * stop the enumeration
5164
 */
5165
#define DDENUMRET_CANCEL                        0
5166
 
5167
/*
5168
 * continue the enumeration
5169
 */
5170
#define DDENUMRET_OK                            1
5171
 
5172
/****************************************************************************
5173
 *
5174
 * DIRECTDRAW ERRORS
5175
 *
5176
 * Errors are represented by negative values and cannot be combined.
5177
 *
5178
 ****************************************************************************/
5179
 
5180
/*
5181
 * This object is already initialized
5182
 */
5183
#define DDERR_ALREADYINITIALIZED                MAKE_DDHRESULT( 5 )
5184
 
5185
/*
5186
 * This surface can not be attached to the requested surface.
5187
 */
5188
#define DDERR_CANNOTATTACHSURFACE               MAKE_DDHRESULT( 10 )
5189
 
5190
/*
5191
 * This surface can not be detached from the requested surface.
5192
 */
5193
#define DDERR_CANNOTDETACHSURFACE               MAKE_DDHRESULT( 20 )
5194
 
5195
/*
5196
 * Support is currently not available.
5197
 */
5198
#define DDERR_CURRENTLYNOTAVAIL                 MAKE_DDHRESULT( 40 )
5199
 
5200
/*
5201
 * An exception was encountered while performing the requested operation
5202
 */
5203
#define DDERR_EXCEPTION                         MAKE_DDHRESULT( 55 )
5204
 
5205
/*
5206
 * Generic failure.
5207
 */
5208
#define DDERR_GENERIC                           E_FAIL
5209
 
5210
/*
5211
 * Height of rectangle provided is not a multiple of reqd alignment
5212
 */
5213
#define DDERR_HEIGHTALIGN                       MAKE_DDHRESULT( 90 )
5214
 
5215
/*
5216
 * Unable to match primary surface creation request with existing
5217
 * primary surface.
5218
 */
5219
#define DDERR_INCOMPATIBLEPRIMARY               MAKE_DDHRESULT( 95 )
5220
 
5221
/*
5222
 * One or more of the caps bits passed to the callback are incorrect.
5223
 */
5224
#define DDERR_INVALIDCAPS                       MAKE_DDHRESULT( 100 )
5225
 
5226
/*
5227
 * DirectDraw does not support provided Cliplist.
5228
 */
5229
#define DDERR_INVALIDCLIPLIST                   MAKE_DDHRESULT( 110 )
5230
 
5231
/*
5232
 * DirectDraw does not support the requested mode
5233
 */
5234
#define DDERR_INVALIDMODE                       MAKE_DDHRESULT( 120 )
5235
 
5236
/*
5237
 * DirectDraw received a pointer that was an invalid DIRECTDRAW object.
5238
 */
5239
#define DDERR_INVALIDOBJECT                     MAKE_DDHRESULT( 130 )
5240
 
5241
/*
5242
 * One or more of the parameters passed to the callback function are
5243
 * incorrect.
5244
 */
5245
#define DDERR_INVALIDPARAMS                     E_INVALIDARG
5246
 
5247
/*
5248
 * pixel format was invalid as specified
5249
 */
5250
#define DDERR_INVALIDPIXELFORMAT                MAKE_DDHRESULT( 145 )
5251
 
5252
/*
5253
 * Rectangle provided was invalid.
5254
 */
5255
#define DDERR_INVALIDRECT                       MAKE_DDHRESULT( 150 )
5256
 
5257
/*
5258
 * Operation could not be carried out because one or more surfaces are locked
5259
 */
5260
#define DDERR_LOCKEDSURFACES                    MAKE_DDHRESULT( 160 )
5261
 
5262
/*
5263
 * There is no 3D present.
5264
 */
5265
#define DDERR_NO3D                              MAKE_DDHRESULT( 170 )
5266
 
5267
/*
5268
 * Operation could not be carried out because there is no alpha accleration
5269
 * hardware present or available.
5270
 */
5271
#define DDERR_NOALPHAHW                         MAKE_DDHRESULT( 180 )
5272
 
5273
/*
5274
 * Operation could not be carried out because there is no stereo
5275
 * hardware present or available.
5276
 */
5277
#define DDERR_NOSTEREOHARDWARE          MAKE_DDHRESULT( 181 )
5278
 
5279
/*
5280
 * Operation could not be carried out because there is no hardware
5281
 * present which supports stereo surfaces
5282
 */
5283
#define DDERR_NOSURFACELEFT                             MAKE_DDHRESULT( 182 )
5284
 
5285
 
5286
 
5287
/*
5288
 * no clip list available
5289
 */
5290
#define DDERR_NOCLIPLIST                        MAKE_DDHRESULT( 205 )
5291
 
5292
/*
5293
 * Operation could not be carried out because there is no color conversion
5294
 * hardware present or available.
5295
 */
5296
#define DDERR_NOCOLORCONVHW                     MAKE_DDHRESULT( 210 )
5297
 
5298
/*
5299
 * Create function called without DirectDraw object method SetCooperativeLevel
5300
 * being called.
5301
 */
5302
#define DDERR_NOCOOPERATIVELEVELSET             MAKE_DDHRESULT( 212 )
5303
 
5304
/*
5305
 * Surface doesn't currently have a color key
5306
 */
5307
#define DDERR_NOCOLORKEY                        MAKE_DDHRESULT( 215 )
5308
 
5309
/*
5310
 * Operation could not be carried out because there is no hardware support
5311
 * of the dest color key.
5312
 */
5313
#define DDERR_NOCOLORKEYHW                      MAKE_DDHRESULT( 220 )
5314
 
5315
/*
5316
 * No DirectDraw support possible with current display driver
5317
 */
5318
#define DDERR_NODIRECTDRAWSUPPORT               MAKE_DDHRESULT( 222 )
5319
 
5320
/*
5321
 * Operation requires the application to have exclusive mode but the
5322
 * application does not have exclusive mode.
5323
 */
5324
#define DDERR_NOEXCLUSIVEMODE                   MAKE_DDHRESULT( 225 )
5325
 
5326
/*
5327
 * Flipping visible surfaces is not supported.
5328
 */
5329
#define DDERR_NOFLIPHW                          MAKE_DDHRESULT( 230 )
5330
 
5331
/*
5332
 * There is no GDI present.
5333
 */
5334
#define DDERR_NOGDI                             MAKE_DDHRESULT( 240 )
5335
 
5336
/*
5337
 * Operation could not be carried out because there is no hardware present
5338
 * or available.
5339
 */
5340
#define DDERR_NOMIRRORHW                        MAKE_DDHRESULT( 250 )
5341
 
5342
/*
5343
 * Requested item was not found
5344
 */
5345
#define DDERR_NOTFOUND                          MAKE_DDHRESULT( 255 )
5346
 
5347
/*
5348
 * Operation could not be carried out because there is no overlay hardware
5349
 * present or available.
5350
 */
5351
#define DDERR_NOOVERLAYHW                       MAKE_DDHRESULT( 260 )
5352
 
5353
/*
5354
 * Operation could not be carried out because the source and destination
5355
 * rectangles are on the same surface and overlap each other.
5356
 */
5357
#define DDERR_OVERLAPPINGRECTS                  MAKE_DDHRESULT( 270 )
5358
 
5359
/*
5360
 * Operation could not be carried out because there is no appropriate raster
5361
 * op hardware present or available.
5362
 */
5363
#define DDERR_NORASTEROPHW                      MAKE_DDHRESULT( 280 )
5364
 
5365
/*
5366
 * Operation could not be carried out because there is no rotation hardware
5367
 * present or available.
5368
 */
5369
#define DDERR_NOROTATIONHW                      MAKE_DDHRESULT( 290 )
5370
 
5371
/*
5372
 * Operation could not be carried out because there is no hardware support
5373
 * for stretching
5374
 */
5375
#define DDERR_NOSTRETCHHW                       MAKE_DDHRESULT( 310 )
5376
 
5377
/*
5378
 * DirectDrawSurface is not in 4 bit color palette and the requested operation
5379
 * requires 4 bit color palette.
5380
 */
5381
#define DDERR_NOT4BITCOLOR                      MAKE_DDHRESULT( 316 )
5382
 
5383
/*
5384
 * DirectDrawSurface is not in 4 bit color index palette and the requested
5385
 * operation requires 4 bit color index palette.
5386
 */
5387
#define DDERR_NOT4BITCOLORINDEX                 MAKE_DDHRESULT( 317 )
5388
 
5389
/*
5390
 * DirectDraw Surface is not in 8 bit color mode and the requested operation
5391
 * requires 8 bit color.
5392
 */
5393
#define DDERR_NOT8BITCOLOR                      MAKE_DDHRESULT( 320 )
5394
 
5395
/*
5396
 * Operation could not be carried out because there is no texture mapping
5397
 * hardware present or available.
5398
 */
5399
#define DDERR_NOTEXTUREHW                       MAKE_DDHRESULT( 330 )
5400
 
5401
/*
5402
 * Operation could not be carried out because there is no hardware support
5403
 * for vertical blank synchronized operations.
5404
 */
5405
#define DDERR_NOVSYNCHW                         MAKE_DDHRESULT( 335 )
5406
 
5407
/*
5408
 * Operation could not be carried out because there is no hardware support
5409
 * for zbuffer blting.
5410
 */
5411
#define DDERR_NOZBUFFERHW                       MAKE_DDHRESULT( 340 )
5412
 
5413
/*
5414
 * Overlay surfaces could not be z layered based on their BltOrder because
5415
 * the hardware does not support z layering of overlays.
5416
 */
5417
#define DDERR_NOZOVERLAYHW                      MAKE_DDHRESULT( 350 )
5418
 
5419
/*
5420
 * The hardware needed for the requested operation has already been
5421
 * allocated.
5422
 */
5423
#define DDERR_OUTOFCAPS                         MAKE_DDHRESULT( 360 )
5424
 
5425
/*
5426
 * DirectDraw does not have enough memory to perform the operation.
5427
 */
5428
#define DDERR_OUTOFMEMORY                       E_OUTOFMEMORY
5429
 
5430
/*
5431
 * DirectDraw does not have enough memory to perform the operation.
5432
 */
5433
#define DDERR_OUTOFVIDEOMEMORY                  MAKE_DDHRESULT( 380 )
5434
 
5435
/*
5436
 * hardware does not support clipped overlays
5437
 */
5438
#define DDERR_OVERLAYCANTCLIP                   MAKE_DDHRESULT( 382 )
5439
 
5440
/*
5441
 * Can only have ony color key active at one time for overlays
5442
 */
5443
#define DDERR_OVERLAYCOLORKEYONLYONEACTIVE      MAKE_DDHRESULT( 384 )
5444
 
5445
/*
5446
 * Access to this palette is being refused because the palette is already
5447
 * locked by another thread.
5448
 */
5449
#define DDERR_PALETTEBUSY                       MAKE_DDHRESULT( 387 )
5450
 
5451
/*
5452
 * No src color key specified for this operation.
5453
 */
5454
#define DDERR_COLORKEYNOTSET                    MAKE_DDHRESULT( 400 )
5455
 
5456
/*
5457
 * This surface is already attached to the surface it is being attached to.
5458
 */
5459
#define DDERR_SURFACEALREADYATTACHED            MAKE_DDHRESULT( 410 )
5460
 
5461
/*
5462
 * This surface is already a dependency of the surface it is being made a
5463
 * dependency of.
5464
 */
5465
#define DDERR_SURFACEALREADYDEPENDENT           MAKE_DDHRESULT( 420 )
5466
 
5467
/*
5468
 * Access to this surface is being refused because the surface is already
5469
 * locked by another thread.
5470
 */
5471
#define DDERR_SURFACEBUSY                       MAKE_DDHRESULT( 430 )
5472
 
5473
/*
5474
 * Access to this surface is being refused because no driver exists
5475
 * which can supply a pointer to the surface.
5476
 * This is most likely to happen when attempting to lock the primary
5477
 * surface when no DCI provider is present.
5478
 * Will also happen on attempts to lock an optimized surface.
5479
 */
5480
#define DDERR_CANTLOCKSURFACE                   MAKE_DDHRESULT( 435 )
5481
 
5482
/*
5483
 * Access to Surface refused because Surface is obscured.
5484
 */
5485
#define DDERR_SURFACEISOBSCURED                 MAKE_DDHRESULT( 440 )
5486
 
5487
/*
5488
 * Access to this surface is being refused because the surface is gone.
5489
 * The DIRECTDRAWSURFACE object representing this surface should
5490
 * have Restore called on it.
5491
 */
5492
#define DDERR_SURFACELOST                       MAKE_DDHRESULT( 450 )
5493
 
5494
/*
5495
 * The requested surface is not attached.
5496
 */
5497
#define DDERR_SURFACENOTATTACHED                MAKE_DDHRESULT( 460 )
5498
 
5499
/*
5500
 * Height requested by DirectDraw is too large.
5501
 */
5502
#define DDERR_TOOBIGHEIGHT                      MAKE_DDHRESULT( 470 )
5503
 
5504
/*
5505
 * Size requested by DirectDraw is too large --  The individual height and
5506
 * width are OK.
5507
 */
5508
#define DDERR_TOOBIGSIZE                        MAKE_DDHRESULT( 480 )
5509
 
5510
/*
5511
 * Width requested by DirectDraw is too large.
5512
 */
5513
#define DDERR_TOOBIGWIDTH                       MAKE_DDHRESULT( 490 )
5514
 
5515
/*
5516
 * Action not supported.
5517
 */
5518
#define DDERR_UNSUPPORTED                       E_NOTIMPL
5519
 
5520
/*
5521
 * Pixel format requested is unsupported by DirectDraw
5522
 */
5523
#define DDERR_UNSUPPORTEDFORMAT                 MAKE_DDHRESULT( 510 )
5524
 
5525
/*
5526
 * Bitmask in the pixel format requested is unsupported by DirectDraw
5527
 */
5528
#define DDERR_UNSUPPORTEDMASK                   MAKE_DDHRESULT( 520 )
5529
 
5530
/*
5531
 * The specified stream contains invalid data
5532
 */
5533
#define DDERR_INVALIDSTREAM                     MAKE_DDHRESULT( 521 )
5534
 
5535
/*
5536
 * vertical blank is in progress
5537
 */
5538
#define DDERR_VERTICALBLANKINPROGRESS           MAKE_DDHRESULT( 537 )
5539
 
5540
/*
5541
 * Informs DirectDraw that the previous Blt which is transfering information
5542
 * to or from this Surface is incomplete.
5543
 */
5544
#define DDERR_WASSTILLDRAWING                   MAKE_DDHRESULT( 540 )
5545
 
5546
 
5547
/*
5548
 * The specified surface type requires specification of the COMPLEX flag
5549
 */
5550
#define DDERR_DDSCAPSCOMPLEXREQUIRED            MAKE_DDHRESULT( 542 )
5551
 
5552
 
5553
/*
5554
 * Rectangle provided was not horizontally aligned on reqd. boundary
5555
 */
5556
#define DDERR_XALIGN                            MAKE_DDHRESULT( 560 )
5557
 
5558
/*
5559
 * The GUID passed to DirectDrawCreate is not a valid DirectDraw driver
5560
 * identifier.
5561
 */
5562
#define DDERR_INVALIDDIRECTDRAWGUID             MAKE_DDHRESULT( 561 )
5563
 
5564
/*
5565
 * A DirectDraw object representing this driver has already been created
5566
 * for this process.
5567
 */
5568
#define DDERR_DIRECTDRAWALREADYCREATED          MAKE_DDHRESULT( 562 )
5569
 
5570
/*
5571
 * A hardware only DirectDraw object creation was attempted but the driver
5572
 * did not support any hardware.
5573
 */
5574
#define DDERR_NODIRECTDRAWHW                    MAKE_DDHRESULT( 563 )
5575
 
5576
/*
5577
 * this process already has created a primary surface
5578
 */
5579
#define DDERR_PRIMARYSURFACEALREADYEXISTS       MAKE_DDHRESULT( 564 )
5580
 
5581
/*
5582
 * software emulation not available.
5583
 */
5584
#define DDERR_NOEMULATION                       MAKE_DDHRESULT( 565 )
5585
 
5586
/*
5587
 * region passed to Clipper::GetClipList is too small.
5588
 */
5589
#define DDERR_REGIONTOOSMALL                    MAKE_DDHRESULT( 566 )
5590
 
5591
/*
5592
 * an attempt was made to set a clip list for a clipper objec that
5593
 * is already monitoring an hwnd.
5594
 */
5595
#define DDERR_CLIPPERISUSINGHWND                MAKE_DDHRESULT( 567 )
5596
 
5597
/*
5598
 * No clipper object attached to surface object
5599
 */
5600
#define DDERR_NOCLIPPERATTACHED                 MAKE_DDHRESULT( 568 )
5601
 
5602
/*
5603
 * Clipper notification requires an HWND or
5604
 * no HWND has previously been set as the CooperativeLevel HWND.
5605
 */
5606
#define DDERR_NOHWND                            MAKE_DDHRESULT( 569 )
5607
 
5608
/*
5609
 * HWND used by DirectDraw CooperativeLevel has been subclassed,
5610
 * this prevents DirectDraw from restoring state.
5611
 */
5612
#define DDERR_HWNDSUBCLASSED                    MAKE_DDHRESULT( 570 )
5613
 
5614
/*
5615
 * The CooperativeLevel HWND has already been set.
5616
 * It can not be reset while the process has surfaces or palettes created.
5617
 */
5618
#define DDERR_HWNDALREADYSET                    MAKE_DDHRESULT( 571 )
5619
 
5620
/*
5621
 * No palette object attached to this surface.
5622
 */
5623
#define DDERR_NOPALETTEATTACHED                 MAKE_DDHRESULT( 572 )
5624
 
5625
/*
5626
 * No hardware support for 16 or 256 color palettes.
5627
 */
5628
#define DDERR_NOPALETTEHW                       MAKE_DDHRESULT( 573 )
5629
 
5630
/*
5631
 * If a clipper object is attached to the source surface passed into a
5632
 * BltFast call.
5633
 */
5634
#define DDERR_BLTFASTCANTCLIP                   MAKE_DDHRESULT( 574 )
5635
 
5636
/*
5637
 * No blter.
5638
 */
5639
#define DDERR_NOBLTHW                           MAKE_DDHRESULT( 575 )
5640
 
5641
/*
5642
 * No DirectDraw ROP hardware.
5643
 */
5644
#define DDERR_NODDROPSHW                        MAKE_DDHRESULT( 576 )
5645
 
5646
/*
5647
 * returned when GetOverlayPosition is called on a hidden overlay
5648
 */
5649
#define DDERR_OVERLAYNOTVISIBLE                 MAKE_DDHRESULT( 577 )
5650
 
5651
/*
5652
 * returned when GetOverlayPosition is called on a overlay that UpdateOverlay
5653
 * has never been called on to establish a destionation.
5654
 */
5655
#define DDERR_NOOVERLAYDEST                     MAKE_DDHRESULT( 578 )
5656
 
5657
/*
5658
 * returned when the position of the overlay on the destionation is no longer
5659
 * legal for that destionation.
5660
 */
5661
#define DDERR_INVALIDPOSITION                   MAKE_DDHRESULT( 579 )
5662
 
5663
/*
5664
 * returned when an overlay member is called for a non-overlay surface
5665
 */
5666
#define DDERR_NOTAOVERLAYSURFACE                MAKE_DDHRESULT( 580 )
5667
 
5668
/*
5669
 * An attempt was made to set the cooperative level when it was already
5670
 * set to exclusive.
5671
 */
5672
#define DDERR_EXCLUSIVEMODEALREADYSET           MAKE_DDHRESULT( 581 )
5673
 
5674
/*
5675
 * An attempt has been made to flip a surface that is not flippable.
5676
 */
5677
#define DDERR_NOTFLIPPABLE                      MAKE_DDHRESULT( 582 )
5678
 
5679
/*
5680
 * Can't duplicate primary & 3D surfaces, or surfaces that are implicitly
5681
 * created.
5682
 */
5683
#define DDERR_CANTDUPLICATE                     MAKE_DDHRESULT( 583 )
5684
 
5685
/*
5686
 * Surface was not locked.  An attempt to unlock a surface that was not
5687
 * locked at all, or by this process, has been attempted.
5688
 */
5689
#define DDERR_NOTLOCKED                         MAKE_DDHRESULT( 584 )
5690
 
5691
/*
5692
 * Windows can not create any more DCs, or a DC was requested for a paltte-indexed
5693
 * surface when the surface had no palette AND the display mode was not palette-indexed
5694
 * (in this case DirectDraw cannot select a proper palette into the DC)
5695
 */
5696
#define DDERR_CANTCREATEDC                      MAKE_DDHRESULT( 585 )
5697
 
5698
/*
5699
 * No DC was ever created for this surface.
5700
 */
5701
#define DDERR_NODC                              MAKE_DDHRESULT( 586 )
5702
 
5703
/*
5704
 * This surface can not be restored because it was created in a different
5705
 * mode.
5706
 */
5707
#define DDERR_WRONGMODE                         MAKE_DDHRESULT( 587 )
5708
 
5709
/*
5710
 * This surface can not be restored because it is an implicitly created
5711
 * surface.
5712
 */
5713
#define DDERR_IMPLICITLYCREATED                 MAKE_DDHRESULT( 588 )
5714
 
5715
/*
5716
 * The surface being used is not a palette-based surface
5717
 */
5718
#define DDERR_NOTPALETTIZED                     MAKE_DDHRESULT( 589 )
5719
 
5720
 
5721
/*
5722
 * The display is currently in an unsupported mode
5723
 */
5724
#define DDERR_UNSUPPORTEDMODE                   MAKE_DDHRESULT( 590 )
5725
 
5726
/*
5727
 * Operation could not be carried out because there is no mip-map
5728
 * texture mapping hardware present or available.
5729
 */
5730
#define DDERR_NOMIPMAPHW                        MAKE_DDHRESULT( 591 )
5731
 
5732
/*
5733
 * The requested action could not be performed because the surface was of
5734
 * the wrong type.
5735
 */
5736
#define DDERR_INVALIDSURFACETYPE                MAKE_DDHRESULT( 592 )
5737
 
5738
 
5739
/*
5740
 * Device does not support optimized surfaces, therefore no video memory optimized surfaces
5741
 */
5742
#define DDERR_NOOPTIMIZEHW                      MAKE_DDHRESULT( 600 )
5743
 
5744
/*
5745
 * Surface is an optimized surface, but has not yet been allocated any memory
5746
 */
5747
#define DDERR_NOTLOADED                         MAKE_DDHRESULT( 601 )
5748
 
5749
/*
5750
 * Attempt was made to create or set a device window without first setting
5751
 * the focus window
5752
 */
5753
#define DDERR_NOFOCUSWINDOW                     MAKE_DDHRESULT( 602 )
5754
 
5755
/*
5756
 * Attempt was made to set a palette on a mipmap sublevel
5757
 */
5758
#define DDERR_NOTONMIPMAPSUBLEVEL               MAKE_DDHRESULT( 603 )
5759
 
5760
/*
5761
 * A DC has already been returned for this surface. Only one DC can be
5762
 * retrieved per surface.
5763
 */
5764
#define DDERR_DCALREADYCREATED                  MAKE_DDHRESULT( 620 )
5765
 
5766
/*
5767
 * An attempt was made to allocate non-local video memory from a device
5768
 * that does not support non-local video memory.
5769
 */
5770
#define DDERR_NONONLOCALVIDMEM                  MAKE_DDHRESULT( 630 )
5771
 
5772
/*
5773
 * The attempt to page lock a surface failed.
5774
 */
5775
#define DDERR_CANTPAGELOCK                      MAKE_DDHRESULT( 640 )
5776
 
5777
 
5778
/*
5779
 * The attempt to page unlock a surface failed.
5780
 */
5781
#define DDERR_CANTPAGEUNLOCK                    MAKE_DDHRESULT( 660 )
5782
 
5783
/*
5784
 * An attempt was made to page unlock a surface with no outstanding page locks.
5785
 */
5786
#define DDERR_NOTPAGELOCKED                     MAKE_DDHRESULT( 680 )
5787
 
5788
/*
5789
 * There is more data available than the specified buffer size could hold
5790
 */
5791
#define DDERR_MOREDATA                          MAKE_DDHRESULT( 690 )
5792
 
5793
/*
5794
 * The data has expired and is therefore no longer valid.
5795
 */
5796
#define DDERR_EXPIRED                           MAKE_DDHRESULT( 691 )
5797
 
5798
/*
5799
 * The mode test has finished executing.
5800
 */
5801
#define DDERR_TESTFINISHED                      MAKE_DDHRESULT( 692 )
5802
 
5803
/*
5804
 * The mode test has switched to a new mode.
5805
 */
5806
#define DDERR_NEWMODE                           MAKE_DDHRESULT( 693 )
5807
 
5808
/*
5809
 * D3D has not yet been initialized.
5810
 */
5811
#define DDERR_D3DNOTINITIALIZED                 MAKE_DDHRESULT( 694 )
5812
 
5813
/*
5814
 * The video port is not active
5815
 */
5816
#define DDERR_VIDEONOTACTIVE                    MAKE_DDHRESULT( 695 )
5817
 
5818
/*
5819
 * The monitor does not have EDID data.
5820
 */
5821
#define DDERR_NOMONITORINFORMATION              MAKE_DDHRESULT( 696 )
5822
 
5823
/*
5824
 * The driver does not enumerate display mode refresh rates.
5825
 */
5826
#define DDERR_NODRIVERSUPPORT                   MAKE_DDHRESULT( 697 )
5827
 
5828
/*
5829
 * Surfaces created by one direct draw device cannot be used directly by
5830
 * another direct draw device.
5831
 */
5832
#define DDERR_DEVICEDOESNTOWNSURFACE            MAKE_DDHRESULT( 699 )
5833
 
5834
 
5835
 
5836
/*
5837
 * An attempt was made to invoke an interface member of a DirectDraw object
5838
 * created by CoCreateInstance() before it was initialized.
5839
 */
5840
#define DDERR_NOTINITIALIZED                    CO_E_NOTINITIALIZED
5841
 
5842
 
5843
/* Alpha bit depth constants */
5844
 
5845
 
5846
#ifdef __cplusplus
5847
};
5848
#endif
5849
 
5850
#ifdef ENABLE_NAMELESS_UNION_PRAGMA
5851
#pragma warning(default:4201)
5852
#endif
5853
 
5854
#endif //__DDRAW_INCLUDED__
5855
 
5856