Subversion Repositories pentevo

Rev

Details | Last modification | View Log | RSS feed

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