~swag/armagetronad/0.2.9-sty+ct+ap-fork

« back to all changes in this revision

Viewing changes to win32/directx/include/ddraw.h

  • Committer: SwagTron
  • Date: 2019-03-03 20:57:16 UTC
  • Revision ID: swagtron-20190303205716-nk32wtrusb3tum54
As far as I am aware, compiling 2.9 sty+ct+ap was incredibly difficult and impossible without using older versions merged with the latest revision (thanks to Nelg's help). Created a proper win32 folder, a readme file, and made it simple to compile for windows.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*==========================================================================;
 
2
 *
 
3
 *  Copyright (C) 1994-1997 Microsoft Corporation.  All Rights Reserved.
 
4
 *
 
5
 *  File:       ddraw.h
 
6
 *  Content:    DirectDraw include file
 
7
 *
 
8
 ***************************************************************************/
 
9
 
 
10
#ifndef __DDRAW_INCLUDED__
 
11
#define __DDRAW_INCLUDED__
 
12
 
 
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
 * This is a mask that indicates the set of bits that may be set
 
2903
 * at createsurface time to indicate number of samples per pixel
 
2904
 * when multisampling
 
2905
 */
 
2906
#define DDSCAPS3_MULTISAMPLE_MASK               0x0000001FL
 
2907
 
 
2908
 
 
2909
 /****************************************************************************
 
2910
 *
 
2911
 * DIRECTDRAW DRIVER CAPABILITY FLAGS
 
2912
 *
 
2913
 ****************************************************************************/
 
2914
 
 
2915
/*
 
2916
 * Display hardware has 3D acceleration.
 
2917
 */
 
2918
#define DDCAPS_3D                       0x00000001l
 
2919
 
 
2920
/*
 
2921
 * Indicates that DirectDraw will support only dest rectangles that are aligned
 
2922
 * on DIRECTDRAWCAPS.dwAlignBoundaryDest boundaries of the surface, respectively.
 
2923
 * READ ONLY.
 
2924
 */
 
2925
#define DDCAPS_ALIGNBOUNDARYDEST        0x00000002l
 
2926
 
 
2927
/*
 
2928
 * Indicates that DirectDraw will support only source rectangles  whose sizes in
 
2929
 * BYTEs are DIRECTDRAWCAPS.dwAlignSizeDest multiples, respectively.  READ ONLY.
 
2930
 */
 
2931
#define DDCAPS_ALIGNSIZEDEST            0x00000004l
 
2932
/*
 
2933
 * Indicates that DirectDraw will support only source rectangles that are aligned
 
2934
 * on DIRECTDRAWCAPS.dwAlignBoundarySrc boundaries of the surface, respectively.
 
2935
 * READ ONLY.
 
2936
 */
 
2937
#define DDCAPS_ALIGNBOUNDARYSRC         0x00000008l
 
2938
 
 
2939
/*
 
2940
 * Indicates that DirectDraw will support only source rectangles  whose sizes in
 
2941
 * BYTEs are DIRECTDRAWCAPS.dwAlignSizeSrc multiples, respectively.  READ ONLY.
 
2942
 */
 
2943
#define DDCAPS_ALIGNSIZESRC             0x00000010l
 
2944
 
 
2945
/*
 
2946
 * Indicates that DirectDraw will create video memory surfaces that have a stride
 
2947
 * alignment equal to DIRECTDRAWCAPS.dwAlignStride.  READ ONLY.
 
2948
 */
 
2949
#define DDCAPS_ALIGNSTRIDE              0x00000020l
 
2950
 
 
2951
/*
 
2952
 * Display hardware is capable of blt operations.
 
2953
 */
 
2954
#define DDCAPS_BLT                      0x00000040l
 
2955
 
 
2956
/*
 
2957
 * Display hardware is capable of asynchronous blt operations.
 
2958
 */
 
2959
#define DDCAPS_BLTQUEUE                 0x00000080l
 
2960
 
 
2961
/*
 
2962
 * Display hardware is capable of color space conversions during the blt operation.
 
2963
 */
 
2964
#define DDCAPS_BLTFOURCC                0x00000100l
 
2965
 
 
2966
/*
 
2967
 * Display hardware is capable of stretching during blt operations.
 
2968
 */
 
2969
#define DDCAPS_BLTSTRETCH               0x00000200l
 
2970
 
 
2971
/*
 
2972
 * Display hardware is shared with GDI.
 
2973
 */
 
2974
#define DDCAPS_GDI                      0x00000400l
 
2975
 
 
2976
/*
 
2977
 * Display hardware can overlay.
 
2978
 */
 
2979
#define DDCAPS_OVERLAY                  0x00000800l
 
2980
 
 
2981
/*
 
2982
 * Set if display hardware supports overlays but can not clip them.
 
2983
 */
 
2984
#define DDCAPS_OVERLAYCANTCLIP          0x00001000l
 
2985
 
 
2986
/*
 
2987
 * Indicates that overlay hardware is capable of color space conversions during
 
2988
 * the overlay operation.
 
2989
 */
 
2990
#define DDCAPS_OVERLAYFOURCC            0x00002000l
 
2991
 
 
2992
/*
 
2993
 * Indicates that stretching can be done by the overlay hardware.
 
2994
 */
 
2995
#define DDCAPS_OVERLAYSTRETCH           0x00004000l
 
2996
 
 
2997
/*
 
2998
 * Indicates that unique DirectDrawPalettes can be created for DirectDrawSurfaces
 
2999
 * other than the primary surface.
 
3000
 */
 
3001
#define DDCAPS_PALETTE                  0x00008000l
 
3002
 
 
3003
/*
 
3004
 * Indicates that palette changes can be syncd with the veritcal refresh.
 
3005
 */
 
3006
#define DDCAPS_PALETTEVSYNC             0x00010000l
 
3007
 
 
3008
/*
 
3009
 * Display hardware can return the current scan line.
 
3010
 */
 
3011
#define DDCAPS_READSCANLINE             0x00020000l
 
3012
 
 
3013
 
 
3014
/*
 
3015
 * This flag used to bo DDCAPS_STEREOVIEW, which is now obsolete
 
3016
 */
 
3017
#define DDCAPS_RESERVED1                0x00040000l
 
3018
 
 
3019
/*
 
3020
 * Display hardware is capable of generating a vertical blank interrupt.
 
3021
 */
 
3022
#define DDCAPS_VBI                      0x00080000l
 
3023
 
 
3024
/*
 
3025
 * Supports the use of z buffers with blt operations.
 
3026
 */
 
3027
#define DDCAPS_ZBLTS                    0x00100000l
 
3028
 
 
3029
/*
 
3030
 * Supports Z Ordering of overlays.
 
3031
 */
 
3032
#define DDCAPS_ZOVERLAYS                0x00200000l
 
3033
 
 
3034
/*
 
3035
 * Supports color key
 
3036
 */
 
3037
#define DDCAPS_COLORKEY                 0x00400000l
 
3038
 
 
3039
/*
 
3040
 * Supports alpha surfaces
 
3041
 */
 
3042
#define DDCAPS_ALPHA                    0x00800000l
 
3043
 
 
3044
/*
 
3045
 * colorkey is hardware assisted(DDCAPS_COLORKEY will also be set)
 
3046
 */
 
3047
#define DDCAPS_COLORKEYHWASSIST         0x01000000l
 
3048
 
 
3049
/*
 
3050
 * no hardware support at all
 
3051
 */
 
3052
#define DDCAPS_NOHARDWARE               0x02000000l
 
3053
 
 
3054
/*
 
3055
 * Display hardware is capable of color fill with bltter
 
3056
 */
 
3057
#define DDCAPS_BLTCOLORFILL             0x04000000l
 
3058
 
 
3059
/*
 
3060
 * Display hardware is bank switched, and potentially very slow at
 
3061
 * random access to VRAM.
 
3062
 */
 
3063
#define DDCAPS_BANKSWITCHED             0x08000000l
 
3064
 
 
3065
/*
 
3066
 * Display hardware is capable of depth filling Z-buffers with bltter
 
3067
 */
 
3068
#define DDCAPS_BLTDEPTHFILL             0x10000000l
 
3069
 
 
3070
/*
 
3071
 * Display hardware is capable of clipping while bltting.
 
3072
 */
 
3073
#define DDCAPS_CANCLIP                  0x20000000l
 
3074
 
 
3075
/*
 
3076
 * Display hardware is capable of clipping while stretch bltting.
 
3077
 */
 
3078
#define DDCAPS_CANCLIPSTRETCHED         0x40000000l
 
3079
 
 
3080
/*
 
3081
 * Display hardware is capable of bltting to or from system memory
 
3082
 */
 
3083
#define DDCAPS_CANBLTSYSMEM             0x80000000l
 
3084
 
 
3085
 
 
3086
 /****************************************************************************
 
3087
 *
 
3088
 * MORE DIRECTDRAW DRIVER CAPABILITY FLAGS (dwCaps2)
 
3089
 *
 
3090
 ****************************************************************************/
 
3091
 
 
3092
/*
 
3093
 * Display hardware is certified
 
3094
 */
 
3095
#define DDCAPS2_CERTIFIED              0x00000001l
 
3096
 
 
3097
/*
 
3098
 * Driver cannot interleave 2D operations (lock and blt) to surfaces with
 
3099
 * Direct3D rendering operations between calls to BeginScene() and EndScene()
 
3100
 */
 
3101
#define DDCAPS2_NO2DDURING3DSCENE       0x00000002l
 
3102
 
 
3103
/*
 
3104
 * Display hardware contains a video port
 
3105
 */
 
3106
#define DDCAPS2_VIDEOPORT               0x00000004l
 
3107
 
 
3108
/*
 
3109
 * The overlay can be automatically flipped according to the video port
 
3110
 * VSYNCs, providing automatic doubled buffered display of video port
 
3111
 * data using an overlay
 
3112
 */
 
3113
#define DDCAPS2_AUTOFLIPOVERLAY         0x00000008l
 
3114
 
 
3115
/*
 
3116
 * Overlay can display each field of interlaced data individually while
 
3117
 * it is interleaved in memory without causing jittery artifacts.
 
3118
 */
 
3119
#define DDCAPS2_CANBOBINTERLEAVED       0x00000010l
 
3120
 
 
3121
/*
 
3122
 * Overlay can display each field of interlaced data individually while
 
3123
 * it is not interleaved in memory without causing jittery artifacts.
 
3124
 */
 
3125
#define DDCAPS2_CANBOBNONINTERLEAVED    0x00000020l
 
3126
 
 
3127
/*
 
3128
 * The overlay surface contains color controls (brightness, sharpness, etc.)
 
3129
 */
 
3130
#define DDCAPS2_COLORCONTROLOVERLAY     0x00000040l
 
3131
 
 
3132
/*
 
3133
 * The primary surface contains color controls (gamma, etc.)
 
3134
 */
 
3135
#define DDCAPS2_COLORCONTROLPRIMARY     0x00000080l
 
3136
 
 
3137
/*
 
3138
 * RGBZ -> RGB supported for 16:16 RGB:Z
 
3139
 */
 
3140
#define DDCAPS2_CANDROPZ16BIT           0x00000100l
 
3141
 
 
3142
/*
 
3143
 * Driver supports non-local video memory.
 
3144
 */
 
3145
#define DDCAPS2_NONLOCALVIDMEM          0x00000200l
 
3146
 
 
3147
/*
 
3148
 * Dirver supports non-local video memory but has different capabilities for
 
3149
 * non-local video memory surfaces. If this bit is set then so must
 
3150
 * DDCAPS2_NONLOCALVIDMEM.
 
3151
 */
 
3152
#define DDCAPS2_NONLOCALVIDMEMCAPS      0x00000400l
 
3153
 
 
3154
/*
 
3155
 * Driver neither requires nor prefers surfaces to be pagelocked when performing
 
3156
 * blts involving system memory surfaces
 
3157
 */
 
3158
#define DDCAPS2_NOPAGELOCKREQUIRED      0x00000800l
 
3159
 
 
3160
/*
 
3161
 * Driver can create surfaces which are wider than the primary surface
 
3162
 */
 
3163
#define DDCAPS2_WIDESURFACES            0x00001000l
 
3164
 
 
3165
/*
 
3166
 * Driver supports bob without using a video port by handling the
 
3167
 * DDFLIP_ODD and DDFLIP_EVEN flags specified in Flip.
 
3168
 */
 
3169
#define DDCAPS2_CANFLIPODDEVEN          0x00002000l
 
3170
 
 
3171
/*
 
3172
 * Driver supports bob using hardware
 
3173
 */
 
3174
#define DDCAPS2_CANBOBHARDWARE          0x00004000l
 
3175
 
 
3176
/*
 
3177
 * Driver supports bltting any FOURCC surface to another surface of the same FOURCC
 
3178
 */
 
3179
#define DDCAPS2_COPYFOURCC              0x00008000l
 
3180
 
 
3181
 
 
3182
/*
 
3183
 * Driver supports loadable gamma ramps for the primary surface
 
3184
 */
 
3185
#define DDCAPS2_PRIMARYGAMMA            0x00020000l
 
3186
 
 
3187
/*
 
3188
 * Driver can render in windowed mode.
 
3189
 */
 
3190
#define DDCAPS2_CANRENDERWINDOWED       0x00080000l
 
3191
 
 
3192
/*
 
3193
 * A calibrator is available to adjust the gamma ramp according to the
 
3194
 * physical display properties so that the result will be identical on
 
3195
 * all calibrated systems.
 
3196
 */
 
3197
#define DDCAPS2_CANCALIBRATEGAMMA       0x00100000l
 
3198
 
 
3199
/*
 
3200
 * Indicates that the driver will respond to DDFLIP_INTERVALn flags
 
3201
 */
 
3202
#define DDCAPS2_FLIPINTERVAL            0x00200000l
 
3203
 
 
3204
/*
 
3205
 * Indicates that the driver will respond to DDFLIP_NOVSYNC
 
3206
 */
 
3207
#define DDCAPS2_FLIPNOVSYNC             0x00400000l
 
3208
 
 
3209
/*
 
3210
 * Driver supports management of video memory, if this flag is ON,
 
3211
 * driver manages the texture if requested with DDSCAPS2_TEXTUREMANAGE on
 
3212
 * DirectX manages the texture if this flag is OFF and surface has DDSCAPS2_TEXTUREMANAGE on
 
3213
 */
 
3214
#define DDCAPS2_CANMANAGETEXTURE        0x00800000l
 
3215
 
 
3216
/*
 
3217
 * The Direct3D texture manager uses this cap to decide whether to put managed
 
3218
 * surfaces in non-local video memory. If the cap is set, the texture manager will
 
3219
 * put managed surfaces in non-local vidmem. Drivers that cannot texture from
 
3220
 * local vidmem SHOULD NOT set this cap.
 
3221
 */
 
3222
#define DDCAPS2_TEXMANINNONLOCALVIDMEM  0x01000000l
 
3223
 
 
3224
/*
 
3225
 * Indicates that the driver supports DX7 type of stereo in at least one mode (which may
 
3226
 * not necessarily be the current mode). Applications should use IDirectDraw7 (or higher)
 
3227
 * ::EnumDisplayModes and check the DDSURFACEDESC.ddsCaps.dwCaps2 field for the presence of
 
3228
 * DDSCAPS2_STEREOSURFACELEFT to check if a particular mode supports stereo. The application
 
3229
 * can also use IDirectDraw7(or higher)::GetDisplayMode to check the current mode.
 
3230
 */
 
3231
#define DDCAPS2_STEREO                  0x02000000L
 
3232
 
 
3233
/*
 
3234
 * This caps bit is intended for internal DirectDraw use.
 
3235
 * -It is only valid if DDCAPS2_NONLOCALVIDMEMCAPS is set.
 
3236
 * -If this bit is set, then DDCAPS_CANBLTSYSMEM MUST be set by the driver (and
 
3237
 *  all the assoicated system memory blt caps must be correct).
 
3238
 * -It implies that the system->video blt caps in DDCAPS also apply to system to
 
3239
 *  nonlocal blts. I.e. the dwSVBCaps, dwSVBCKeyCaps, dwSVBFXCaps and dwSVBRops
 
3240
 *  members of DDCAPS (DDCORECAPS) are filled in correctly.
 
3241
 * -Any blt from system to nonlocal memory that matches these caps bits will
 
3242
 *  be passed to the driver.
 
3243
 *
 
3244
 * NOTE: This is intended to enable the driver itself to do efficient reordering
 
3245
 * of textures. This is NOT meant to imply that hardware can write into AGP memory.
 
3246
 * This operation is not currently supported.
 
3247
 */
 
3248
#define DDCAPS2_SYSTONONLOCAL_AS_SYSTOLOCAL   0x04000000L
 
3249
 
 
3250
/*
 
3251
 * Indicates that the driver can support PUREHAL.
 
3252
 */
 
3253
#define DDCAPS2_PUREHAL                       0x08000000L
 
3254
 
 
3255
 
 
3256
/****************************************************************************
 
3257
 *
 
3258
 * DIRECTDRAW FX ALPHA CAPABILITY FLAGS
 
3259
 *
 
3260
 ****************************************************************************/
 
3261
 
 
3262
/*
 
3263
 * Supports alpha blending around the edge of a source color keyed surface.
 
3264
 * For Blt.
 
3265
 */
 
3266
#define DDFXALPHACAPS_BLTALPHAEDGEBLEND         0x00000001l
 
3267
 
 
3268
/*
 
3269
 * Supports alpha information in the pixel format.  The bit depth of alpha
 
3270
 * information in the pixel format can be 1,2,4, or 8.  The alpha value becomes
 
3271
 * more opaque as the alpha value increases.  (0 is transparent.)
 
3272
 * For Blt.
 
3273
 */
 
3274
#define DDFXALPHACAPS_BLTALPHAPIXELS            0x00000002l
 
3275
 
 
3276
/*
 
3277
 * Supports alpha information in the pixel format.  The bit depth of alpha
 
3278
 * information in the pixel format can be 1,2,4, or 8.  The alpha value
 
3279
 * becomes more transparent as the alpha value increases.  (0 is opaque.)
 
3280
 * This flag can only be set if DDCAPS_ALPHA is set.
 
3281
 * For Blt.
 
3282
 */
 
3283
#define DDFXALPHACAPS_BLTALPHAPIXELSNEG         0x00000004l
 
3284
 
 
3285
/*
 
3286
 * Supports alpha only surfaces.  The bit depth of an alpha only surface can be
 
3287
 * 1,2,4, or 8.  The alpha value becomes more opaque as the alpha value increases.
 
3288
 * (0 is transparent.)
 
3289
 * For Blt.
 
3290
 */
 
3291
#define DDFXALPHACAPS_BLTALPHASURFACES          0x00000008l
 
3292
 
 
3293
/*
 
3294
 * The depth of the alpha channel data can range can be 1,2,4, or 8.
 
3295
 * The NEG suffix indicates that this alpha channel becomes more transparent
 
3296
 * as the alpha value increases. (0 is opaque.)  This flag can only be set if
 
3297
 * DDCAPS_ALPHA is set.
 
3298
 * For Blt.
 
3299
 */
 
3300
#define DDFXALPHACAPS_BLTALPHASURFACESNEG       0x00000010l
 
3301
 
 
3302
/*
 
3303
 * Supports alpha blending around the edge of a source color keyed surface.
 
3304
 * For Overlays.
 
3305
 */
 
3306
#define DDFXALPHACAPS_OVERLAYALPHAEDGEBLEND     0x00000020l
 
3307
 
 
3308
/*
 
3309
 * Supports alpha information in the pixel format.  The bit depth of alpha
 
3310
 * information in the pixel format can be 1,2,4, or 8.  The alpha value becomes
 
3311
 * more opaque as the alpha value increases.  (0 is transparent.)
 
3312
 * For Overlays.
 
3313
 */
 
3314
#define DDFXALPHACAPS_OVERLAYALPHAPIXELS        0x00000040l
 
3315
 
 
3316
/*
 
3317
 * Supports alpha information in the pixel format.  The bit depth of alpha
 
3318
 * information in the pixel format can be 1,2,4, or 8.  The alpha value
 
3319
 * becomes more transparent as the alpha value increases.  (0 is opaque.)
 
3320
 * This flag can only be set if DDCAPS_ALPHA is set.
 
3321
 * For Overlays.
 
3322
 */
 
3323
#define DDFXALPHACAPS_OVERLAYALPHAPIXELSNEG     0x00000080l
 
3324
 
 
3325
/*
 
3326
 * Supports alpha only surfaces.  The bit depth of an alpha only surface can be
 
3327
 * 1,2,4, or 8.  The alpha value becomes more opaque as the alpha value increases.
 
3328
 * (0 is transparent.)
 
3329
 * For Overlays.
 
3330
 */
 
3331
#define DDFXALPHACAPS_OVERLAYALPHASURFACES      0x00000100l
 
3332
 
 
3333
/*
 
3334
 * The depth of the alpha channel data can range can be 1,2,4, or 8.
 
3335
 * The NEG suffix indicates that this alpha channel becomes more transparent
 
3336
 * as the alpha value increases. (0 is opaque.)  This flag can only be set if
 
3337
 * DDCAPS_ALPHA is set.
 
3338
 * For Overlays.
 
3339
 */
 
3340
#define DDFXALPHACAPS_OVERLAYALPHASURFACESNEG   0x00000200l
 
3341
 
 
3342
#if DIRECTDRAW_VERSION < 0x0600
 
3343
#endif  //DIRECTDRAW_VERSION
 
3344
 
 
3345
 
 
3346
/****************************************************************************
 
3347
 *
 
3348
 * DIRECTDRAW FX CAPABILITY FLAGS
 
3349
 *
 
3350
 ****************************************************************************/
 
3351
 
 
3352
/*
 
3353
 * Uses arithmetic operations to stretch and shrink surfaces during blt
 
3354
 * rather than pixel doubling techniques.  Along the Y axis.
 
3355
 */
 
3356
#define DDFXCAPS_BLTARITHSTRETCHY       0x00000020l
 
3357
 
 
3358
/*
 
3359
 * Uses arithmetic operations to stretch during blt
 
3360
 * rather than pixel doubling techniques.  Along the Y axis. Only
 
3361
 * works for x1, x2, etc.
 
3362
 */
 
3363
#define DDFXCAPS_BLTARITHSTRETCHYN      0x00000010l
 
3364
 
 
3365
/*
 
3366
 * Supports mirroring left to right in blt.
 
3367
 */
 
3368
#define DDFXCAPS_BLTMIRRORLEFTRIGHT     0x00000040l
 
3369
 
 
3370
/*
 
3371
 * Supports mirroring top to bottom in blt.
 
3372
 */
 
3373
#define DDFXCAPS_BLTMIRRORUPDOWN        0x00000080l
 
3374
 
 
3375
/*
 
3376
 * Supports arbitrary rotation for blts.
 
3377
 */
 
3378
#define DDFXCAPS_BLTROTATION            0x00000100l
 
3379
 
 
3380
/*
 
3381
 * Supports 90 degree rotations for blts.
 
3382
 */
 
3383
#define DDFXCAPS_BLTROTATION90          0x00000200l
 
3384
 
 
3385
/*
 
3386
 * DirectDraw supports arbitrary shrinking of a surface along the
 
3387
 * x axis (horizontal direction) for blts.
 
3388
 */
 
3389
#define DDFXCAPS_BLTSHRINKX             0x00000400l
 
3390
 
 
3391
/*
 
3392
 * DirectDraw supports integer shrinking (1x,2x,) of a surface
 
3393
 * along the x axis (horizontal direction) for blts.
 
3394
 */
 
3395
#define DDFXCAPS_BLTSHRINKXN            0x00000800l
 
3396
 
 
3397
/*
 
3398
 * DirectDraw supports arbitrary shrinking of a surface along the
 
3399
 * y axis (horizontal direction) for blts.
 
3400
 */
 
3401
#define DDFXCAPS_BLTSHRINKY             0x00001000l
 
3402
 
 
3403
/*
 
3404
 * DirectDraw supports integer shrinking (1x,2x,) of a surface
 
3405
 * along the y axis (vertical direction) for blts.
 
3406
 */
 
3407
#define DDFXCAPS_BLTSHRINKYN            0x00002000l
 
3408
 
 
3409
/*
 
3410
 * DirectDraw supports arbitrary stretching of a surface along the
 
3411
 * x axis (horizontal direction) for blts.
 
3412
 */
 
3413
#define DDFXCAPS_BLTSTRETCHX            0x00004000l
 
3414
 
 
3415
/*
 
3416
 * DirectDraw supports integer stretching (1x,2x,) of a surface
 
3417
 * along the x axis (horizontal direction) for blts.
 
3418
 */
 
3419
#define DDFXCAPS_BLTSTRETCHXN           0x00008000l
 
3420
 
 
3421
/*
 
3422
 * DirectDraw supports arbitrary stretching of a surface along the
 
3423
 * y axis (horizontal direction) for blts.
 
3424
 */
 
3425
#define DDFXCAPS_BLTSTRETCHY            0x00010000l
 
3426
 
 
3427
/*
 
3428
 * DirectDraw supports integer stretching (1x,2x,) of a surface
 
3429
 * along the y axis (vertical direction) for blts.
 
3430
 */
 
3431
#define DDFXCAPS_BLTSTRETCHYN           0x00020000l
 
3432
 
 
3433
/*
 
3434
 * Uses arithmetic operations to stretch and shrink surfaces during
 
3435
 * overlay rather than pixel doubling techniques.  Along the Y axis
 
3436
 * for overlays.
 
3437
 */
 
3438
#define DDFXCAPS_OVERLAYARITHSTRETCHY   0x00040000l
 
3439
 
 
3440
/*
 
3441
 * Uses arithmetic operations to stretch surfaces during
 
3442
 * overlay rather than pixel doubling techniques.  Along the Y axis
 
3443
 * for overlays. Only works for x1, x2, etc.
 
3444
 */
 
3445
#define DDFXCAPS_OVERLAYARITHSTRETCHYN  0x00000008l
 
3446
 
 
3447
/*
 
3448
 * DirectDraw supports arbitrary shrinking of a surface along the
 
3449
 * x axis (horizontal direction) for overlays.
 
3450
 */
 
3451
#define DDFXCAPS_OVERLAYSHRINKX         0x00080000l
 
3452
 
 
3453
/*
 
3454
 * DirectDraw supports integer shrinking (1x,2x,) of a surface
 
3455
 * along the x axis (horizontal direction) for overlays.
 
3456
 */
 
3457
#define DDFXCAPS_OVERLAYSHRINKXN        0x00100000l
 
3458
 
 
3459
/*
 
3460
 * DirectDraw supports arbitrary shrinking of a surface along the
 
3461
 * y axis (horizontal direction) for overlays.
 
3462
 */
 
3463
#define DDFXCAPS_OVERLAYSHRINKY         0x00200000l
 
3464
 
 
3465
/*
 
3466
 * DirectDraw supports integer shrinking (1x,2x,) of a surface
 
3467
 * along the y axis (vertical direction) for overlays.
 
3468
 */
 
3469
#define DDFXCAPS_OVERLAYSHRINKYN        0x00400000l
 
3470
 
 
3471
/*
 
3472
 * DirectDraw supports arbitrary stretching of a surface along the
 
3473
 * x axis (horizontal direction) for overlays.
 
3474
 */
 
3475
#define DDFXCAPS_OVERLAYSTRETCHX        0x00800000l
 
3476
 
 
3477
/*
 
3478
 * DirectDraw supports integer stretching (1x,2x,) of a surface
 
3479
 * along the x axis (horizontal direction) for overlays.
 
3480
 */
 
3481
#define DDFXCAPS_OVERLAYSTRETCHXN       0x01000000l
 
3482
 
 
3483
/*
 
3484
 * DirectDraw supports arbitrary stretching of a surface along the
 
3485
 * y axis (horizontal direction) for overlays.
 
3486
 */
 
3487
#define DDFXCAPS_OVERLAYSTRETCHY        0x02000000l
 
3488
 
 
3489
/*
 
3490
 * DirectDraw supports integer stretching (1x,2x,) of a surface
 
3491
 * along the y axis (vertical direction) for overlays.
 
3492
 */
 
3493
#define DDFXCAPS_OVERLAYSTRETCHYN       0x04000000l
 
3494
 
 
3495
/*
 
3496
 * DirectDraw supports mirroring of overlays across the vertical axis
 
3497
 */
 
3498
#define DDFXCAPS_OVERLAYMIRRORLEFTRIGHT 0x08000000l
 
3499
 
 
3500
/*
 
3501
 * DirectDraw supports mirroring of overlays across the horizontal axis
 
3502
 */
 
3503
#define DDFXCAPS_OVERLAYMIRRORUPDOWN    0x10000000l
 
3504
 
 
3505
/*
 
3506
 * DirectDraw supports deinterlacing of overlay surfaces
 
3507
 */
 
3508
#define DDFXCAPS_OVERLAYDEINTERLACE             0x20000000l
 
3509
 
 
3510
/*
 
3511
 * Driver can do alpha blending for blits.
 
3512
 */
 
3513
#define DDFXCAPS_BLTALPHA               0x00000001l
 
3514
 
 
3515
 
 
3516
/*
 
3517
 * Driver can do surface-reconstruction filtering for warped blits.
 
3518
 */
 
3519
#define DDFXCAPS_BLTFILTER              DDFXCAPS_BLTARITHSTRETCHY
 
3520
 
 
3521
/*
 
3522
 * Driver can do alpha blending for overlays.
 
3523
 */
 
3524
#define DDFXCAPS_OVERLAYALPHA           0x00000004l
 
3525
 
 
3526
 
 
3527
/*
 
3528
 * Driver can do surface-reconstruction filtering for warped overlays.
 
3529
 */
 
3530
#define DDFXCAPS_OVERLAYFILTER          DDFXCAPS_OVERLAYARITHSTRETCHY
 
3531
 
 
3532
/****************************************************************************
 
3533
 *
 
3534
 * DIRECTDRAW STEREO VIEW CAPABILITIES
 
3535
 *
 
3536
 ****************************************************************************/
 
3537
 
 
3538
/*
 
3539
 * This flag used to be DDSVCAPS_ENIGMA, which is now obsolete
 
3540
 */
 
3541
 
 
3542
#define DDSVCAPS_RESERVED1              0x00000001l
 
3543
 
 
3544
/*
 
3545
 * This flag used to be DDSVCAPS_FLICKER, which is now obsolete
 
3546
 */
 
3547
#define DDSVCAPS_RESERVED2              0x00000002l
 
3548
 
 
3549
/*
 
3550
 * This flag used to be DDSVCAPS_REDBLUE, which is now obsolete
 
3551
 */
 
3552
#define DDSVCAPS_RESERVED3              0x00000004l
 
3553
 
 
3554
/*
 
3555
 * This flag used to be DDSVCAPS_SPLIT, which is now obsolete
 
3556
 */
 
3557
#define DDSVCAPS_RESERVED4              0x00000008l
 
3558
 
 
3559
/*
 
3560
 * The stereo view is accomplished with switching technology
 
3561
 */
 
3562
 
 
3563
#define DDSVCAPS_STEREOSEQUENTIAL       0x00000010L
 
3564
 
 
3565
 
 
3566
 
 
3567
 
 
3568
/****************************************************************************
 
3569
 *
 
3570
 * DIRECTDRAWPALETTE CAPABILITIES
 
3571
 *
 
3572
 ****************************************************************************/
 
3573
 
 
3574
/*
 
3575
 * Index is 4 bits.  There are sixteen color entries in the palette table.
 
3576
 */
 
3577
#define DDPCAPS_4BIT                    0x00000001l
 
3578
 
 
3579
/*
 
3580
 * Index is onto a 8 bit color index.  This field is only valid with the
 
3581
 * DDPCAPS_1BIT, DDPCAPS_2BIT or DDPCAPS_4BIT capability and the target
 
3582
 * surface is in 8bpp. Each color entry is one byte long and is an index
 
3583
 * into destination surface's 8bpp palette.
 
3584
 */
 
3585
#define DDPCAPS_8BITENTRIES             0x00000002l
 
3586
 
 
3587
/*
 
3588
 * Index is 8 bits.  There are 256 color entries in the palette table.
 
3589
 */
 
3590
#define DDPCAPS_8BIT                    0x00000004l
 
3591
 
 
3592
/*
 
3593
 * Indicates that this DIRECTDRAWPALETTE should use the palette color array
 
3594
 * passed into the lpDDColorArray parameter to initialize the DIRECTDRAWPALETTE
 
3595
 * object.
 
3596
 * This flag is obsolete. DirectDraw always initializes the color array from
 
3597
 * the lpDDColorArray parameter. The definition remains for source-level
 
3598
 * compatibility.
 
3599
 */
 
3600
#define DDPCAPS_INITIALIZE              0x00000000l
 
3601
 
 
3602
/*
 
3603
 * This palette is the one attached to the primary surface.  Changing this
 
3604
 * table has immediate effect on the display unless DDPSETPAL_VSYNC is specified
 
3605
 * and supported.
 
3606
 */
 
3607
#define DDPCAPS_PRIMARYSURFACE          0x00000010l
 
3608
 
 
3609
/*
 
3610
 * This palette is the one attached to the primary surface left.  Changing
 
3611
 * this table has immediate effect on the display for the left eye unless
 
3612
 * DDPSETPAL_VSYNC is specified and supported.
 
3613
 */
 
3614
#define DDPCAPS_PRIMARYSURFACELEFT      0x00000020l
 
3615
 
 
3616
/*
 
3617
 * This palette can have all 256 entries defined
 
3618
 */
 
3619
#define DDPCAPS_ALLOW256                0x00000040l
 
3620
 
 
3621
/*
 
3622
 * This palette can have modifications to it synced with the monitors
 
3623
 * refresh rate.
 
3624
 */
 
3625
#define DDPCAPS_VSYNC                   0x00000080l
 
3626
 
 
3627
/*
 
3628
 * Index is 1 bit.  There are two color entries in the palette table.
 
3629
 */
 
3630
#define DDPCAPS_1BIT                    0x00000100l
 
3631
 
 
3632
/*
 
3633
 * Index is 2 bit.  There are four color entries in the palette table.
 
3634
 */
 
3635
#define DDPCAPS_2BIT                    0x00000200l
 
3636
 
 
3637
/*
 
3638
 * The peFlags member of PALETTEENTRY denotes an 8 bit alpha value
 
3639
 */
 
3640
#define DDPCAPS_ALPHA                   0x00000400l
 
3641
 
 
3642
 
 
3643
/****************************************************************************
 
3644
 *
 
3645
 * DIRECTDRAWPALETTE SETENTRY CONSTANTS
 
3646
 *
 
3647
 ****************************************************************************/
 
3648
 
 
3649
 
 
3650
/****************************************************************************
 
3651
 *
 
3652
 * DIRECTDRAWPALETTE GETENTRY CONSTANTS
 
3653
 *
 
3654
 ****************************************************************************/
 
3655
 
 
3656
/* 0 is the only legal value */
 
3657
 
 
3658
/****************************************************************************
 
3659
 *
 
3660
 * DIRECTDRAWSURFACE SETPRIVATEDATA CONSTANTS
 
3661
 *
 
3662
 ****************************************************************************/
 
3663
 
 
3664
/*
 
3665
 * The passed pointer is an IUnknown ptr. The cbData argument to SetPrivateData
 
3666
 * must be set to sizeof(IUnknown*). DirectDraw will call AddRef through this
 
3667
 * pointer and Release when the private data is destroyed. This includes when
 
3668
 * the surface or palette is destroyed before such priovate data is destroyed.
 
3669
 */
 
3670
#define DDSPD_IUNKNOWNPOINTER           0x00000001L
 
3671
 
 
3672
/*
 
3673
 * Private data is only valid for the current state of the object,
 
3674
 * as determined by the uniqueness value.
 
3675
 */
 
3676
#define DDSPD_VOLATILE                  0x00000002L
 
3677
 
 
3678
 
 
3679
/****************************************************************************
 
3680
 *
 
3681
 * DIRECTDRAWSURFACE SETPALETTE CONSTANTS
 
3682
 *
 
3683
 ****************************************************************************/
 
3684
 
 
3685
 
 
3686
/****************************************************************************
 
3687
 *
 
3688
 * DIRECTDRAW BITDEPTH CONSTANTS
 
3689
 *
 
3690
 * NOTE:  These are only used to indicate supported bit depths.   These
 
3691
 * are flags only, they are not to be used as an actual bit depth.   The
 
3692
 * absolute numbers 1, 2, 4, 8, 16, 24 and 32 are used to indicate actual
 
3693
 * bit depths in a surface or for changing the display mode.
 
3694
 *
 
3695
 ****************************************************************************/
 
3696
 
 
3697
/*
 
3698
 * 1 bit per pixel.
 
3699
 */
 
3700
#define DDBD_1                  0x00004000l
 
3701
 
 
3702
/*
 
3703
 * 2 bits per pixel.
 
3704
 */
 
3705
#define DDBD_2                  0x00002000l
 
3706
 
 
3707
/*
 
3708
 * 4 bits per pixel.
 
3709
 */
 
3710
#define DDBD_4                  0x00001000l
 
3711
 
 
3712
/*
 
3713
 * 8 bits per pixel.
 
3714
 */
 
3715
#define DDBD_8                  0x00000800l
 
3716
 
 
3717
/*
 
3718
 * 16 bits per pixel.
 
3719
 */
 
3720
#define DDBD_16                 0x00000400l
 
3721
 
 
3722
/*
 
3723
 * 24 bits per pixel.
 
3724
 */
 
3725
#define DDBD_24                 0X00000200l
 
3726
 
 
3727
/*
 
3728
 * 32 bits per pixel.
 
3729
 */
 
3730
#define DDBD_32                 0x00000100l
 
3731
 
 
3732
/****************************************************************************
 
3733
 *
 
3734
 * DIRECTDRAWSURFACE SET/GET COLOR KEY FLAGS
 
3735
 *
 
3736
 ****************************************************************************/
 
3737
 
 
3738
/*
 
3739
 * Set if the structure contains a color space.  Not set if the structure
 
3740
 * contains a single color key.
 
3741
 */
 
3742
#define DDCKEY_COLORSPACE       0x00000001l
 
3743
 
 
3744
/*
 
3745
 * Set if the structure specifies a color key or color space which is to be
 
3746
 * used as a destination color key for blt operations.
 
3747
 */
 
3748
#define DDCKEY_DESTBLT          0x00000002l
 
3749
 
 
3750
/*
 
3751
 * Set if the structure specifies a color key or color space which is to be
 
3752
 * used as a destination color key for overlay operations.
 
3753
 */
 
3754
#define DDCKEY_DESTOVERLAY      0x00000004l
 
3755
 
 
3756
/*
 
3757
 * Set if the structure specifies a color key or color space which is to be
 
3758
 * used as a source color key for blt operations.
 
3759
 */
 
3760
#define DDCKEY_SRCBLT           0x00000008l
 
3761
 
 
3762
/*
 
3763
 * Set if the structure specifies a color key or color space which is to be
 
3764
 * used as a source color key for overlay operations.
 
3765
 */
 
3766
#define DDCKEY_SRCOVERLAY       0x00000010l
 
3767
 
 
3768
 
 
3769
/****************************************************************************
 
3770
 *
 
3771
 * DIRECTDRAW COLOR KEY CAPABILITY FLAGS
 
3772
 *
 
3773
 ****************************************************************************/
 
3774
 
 
3775
/*
 
3776
 * Supports transparent blting using a color key to identify the replaceable
 
3777
 * bits of the destination surface for RGB colors.
 
3778
 */
 
3779
#define DDCKEYCAPS_DESTBLT                      0x00000001l
 
3780
 
 
3781
/*
 
3782
 * Supports transparent blting using a color space to identify the replaceable
 
3783
 * bits of the destination surface for RGB colors.
 
3784
 */
 
3785
#define DDCKEYCAPS_DESTBLTCLRSPACE              0x00000002l
 
3786
 
 
3787
/*
 
3788
 * Supports transparent blting using a color space to identify the replaceable
 
3789
 * bits of the destination surface for YUV colors.
 
3790
 */
 
3791
#define DDCKEYCAPS_DESTBLTCLRSPACEYUV           0x00000004l
 
3792
 
 
3793
/*
 
3794
 * Supports transparent blting using a color key to identify the replaceable
 
3795
 * bits of the destination surface for YUV colors.
 
3796
 */
 
3797
#define DDCKEYCAPS_DESTBLTYUV                   0x00000008l
 
3798
 
 
3799
/*
 
3800
 * Supports overlaying using colorkeying of the replaceable bits of the surface
 
3801
 * being overlayed for RGB colors.
 
3802
 */
 
3803
#define DDCKEYCAPS_DESTOVERLAY                  0x00000010l
 
3804
 
 
3805
/*
 
3806
 * Supports a color space as the color key for the destination for RGB colors.
 
3807
 */
 
3808
#define DDCKEYCAPS_DESTOVERLAYCLRSPACE          0x00000020l
 
3809
 
 
3810
/*
 
3811
 * Supports a color space as the color key for the destination for YUV colors.
 
3812
 */
 
3813
#define DDCKEYCAPS_DESTOVERLAYCLRSPACEYUV       0x00000040l
 
3814
 
 
3815
/*
 
3816
 * Supports only one active destination color key value for visible overlay
 
3817
 * surfaces.
 
3818
 */
 
3819
#define DDCKEYCAPS_DESTOVERLAYONEACTIVE         0x00000080l
 
3820
 
 
3821
/*
 
3822
 * Supports overlaying using colorkeying of the replaceable bits of the
 
3823
 * surface being overlayed for YUV colors.
 
3824
 */
 
3825
#define DDCKEYCAPS_DESTOVERLAYYUV               0x00000100l
 
3826
 
 
3827
/*
 
3828
 * Supports transparent blting using the color key for the source with
 
3829
 * this surface for RGB colors.
 
3830
 */
 
3831
#define DDCKEYCAPS_SRCBLT                       0x00000200l
 
3832
 
 
3833
/*
 
3834
 * Supports transparent blting using a color space for the source with
 
3835
 * this surface for RGB colors.
 
3836
 */
 
3837
#define DDCKEYCAPS_SRCBLTCLRSPACE               0x00000400l
 
3838
 
 
3839
/*
 
3840
 * Supports transparent blting using a color space for the source with
 
3841
 * this surface for YUV colors.
 
3842
 */
 
3843
#define DDCKEYCAPS_SRCBLTCLRSPACEYUV            0x00000800l
 
3844
 
 
3845
/*
 
3846
 * Supports transparent blting using the color key for the source with
 
3847
 * this surface for YUV colors.
 
3848
 */
 
3849
#define DDCKEYCAPS_SRCBLTYUV                    0x00001000l
 
3850
 
 
3851
/*
 
3852
 * Supports overlays using the color key for the source with this
 
3853
 * overlay surface for RGB colors.
 
3854
 */
 
3855
#define DDCKEYCAPS_SRCOVERLAY                   0x00002000l
 
3856
 
 
3857
/*
 
3858
 * Supports overlays using a color space as the source color key for
 
3859
 * the overlay surface for RGB colors.
 
3860
 */
 
3861
#define DDCKEYCAPS_SRCOVERLAYCLRSPACE           0x00004000l
 
3862
 
 
3863
/*
 
3864
 * Supports overlays using a color space as the source color key for
 
3865
 * the overlay surface for YUV colors.
 
3866
 */
 
3867
#define DDCKEYCAPS_SRCOVERLAYCLRSPACEYUV        0x00008000l
 
3868
 
 
3869
/*
 
3870
 * Supports only one active source color key value for visible
 
3871
 * overlay surfaces.
 
3872
 */
 
3873
#define DDCKEYCAPS_SRCOVERLAYONEACTIVE          0x00010000l
 
3874
 
 
3875
/*
 
3876
 * Supports overlays using the color key for the source with this
 
3877
 * overlay surface for YUV colors.
 
3878
 */
 
3879
#define DDCKEYCAPS_SRCOVERLAYYUV                0x00020000l
 
3880
 
 
3881
/*
 
3882
 * there are no bandwidth trade-offs for using colorkey with an overlay
 
3883
 */
 
3884
#define DDCKEYCAPS_NOCOSTOVERLAY                0x00040000l
 
3885
 
 
3886
 
 
3887
/****************************************************************************
 
3888
 *
 
3889
 * DIRECTDRAW PIXELFORMAT FLAGS
 
3890
 *
 
3891
 ****************************************************************************/
 
3892
 
 
3893
/*
 
3894
 * The surface has alpha channel information in the pixel format.
 
3895
 */
 
3896
#define DDPF_ALPHAPIXELS                        0x00000001l
 
3897
 
 
3898
/*
 
3899
 * The pixel format contains alpha only information
 
3900
 */
 
3901
#define DDPF_ALPHA                              0x00000002l
 
3902
 
 
3903
/*
 
3904
 * The FourCC code is valid.
 
3905
 */
 
3906
#define DDPF_FOURCC                             0x00000004l
 
3907
 
 
3908
/*
 
3909
 * The surface is 4-bit color indexed.
 
3910
 */
 
3911
#define DDPF_PALETTEINDEXED4                    0x00000008l
 
3912
 
 
3913
/*
 
3914
 * The surface is indexed into a palette which stores indices
 
3915
 * into the destination surface's 8-bit palette.
 
3916
 */
 
3917
#define DDPF_PALETTEINDEXEDTO8                  0x00000010l
 
3918
 
 
3919
/*
 
3920
 * The surface is 8-bit color indexed.
 
3921
 */
 
3922
#define DDPF_PALETTEINDEXED8                    0x00000020l
 
3923
 
 
3924
/*
 
3925
 * The RGB data in the pixel format structure is valid.
 
3926
 */
 
3927
#define DDPF_RGB                                0x00000040l
 
3928
 
 
3929
/*
 
3930
 * The surface will accept pixel data in the format specified
 
3931
 * and compress it during the write.
 
3932
 */
 
3933
#define DDPF_COMPRESSED                         0x00000080l
 
3934
 
 
3935
/*
 
3936
 * The surface will accept RGB data and translate it during
 
3937
 * the write to YUV data.  The format of the data to be written
 
3938
 * will be contained in the pixel format structure.  The DDPF_RGB
 
3939
 * flag will be set.
 
3940
 */
 
3941
#define DDPF_RGBTOYUV                           0x00000100l
 
3942
 
 
3943
/*
 
3944
 * pixel format is YUV - YUV data in pixel format struct is valid
 
3945
 */
 
3946
#define DDPF_YUV                                0x00000200l
 
3947
 
 
3948
/*
 
3949
 * pixel format is a z buffer only surface
 
3950
 */
 
3951
#define DDPF_ZBUFFER                            0x00000400l
 
3952
 
 
3953
/*
 
3954
 * The surface is 1-bit color indexed.
 
3955
 */
 
3956
#define DDPF_PALETTEINDEXED1                    0x00000800l
 
3957
 
 
3958
/*
 
3959
 * The surface is 2-bit color indexed.
 
3960
 */
 
3961
#define DDPF_PALETTEINDEXED2                    0x00001000l
 
3962
 
 
3963
/*
 
3964
 * The surface contains Z information in the pixels
 
3965
 */
 
3966
#define DDPF_ZPIXELS                            0x00002000l
 
3967
 
 
3968
/*
 
3969
 * The surface contains stencil information along with Z
 
3970
 */
 
3971
#define DDPF_STENCILBUFFER                      0x00004000l
 
3972
 
 
3973
/*
 
3974
 * Premultiplied alpha format -- the color components have been
 
3975
 * premultiplied by the alpha component.
 
3976
 */
 
3977
#define DDPF_ALPHAPREMULT                       0x00008000l
 
3978
 
 
3979
 
 
3980
/*
 
3981
 * Luminance data in the pixel format is valid.
 
3982
 * Use this flag for luminance-only or luminance+alpha surfaces,
 
3983
 * the bit depth is then ddpf.dwLuminanceBitCount.
 
3984
 */
 
3985
#define DDPF_LUMINANCE                          0x00020000l
 
3986
 
 
3987
/*
 
3988
 * Luminance data in the pixel format is valid.
 
3989
 * Use this flag when hanging luminance off bumpmap surfaces,
 
3990
 * the bit mask for the luminance portion of the pixel is then
 
3991
 * ddpf.dwBumpLuminanceBitMask
 
3992
 */
 
3993
#define DDPF_BUMPLUMINANCE                      0x00040000l
 
3994
 
 
3995
/*
 
3996
 * Bump map dUdV data in the pixel format is valid.
 
3997
 */
 
3998
#define DDPF_BUMPDUDV                           0x00080000l
 
3999
 
 
4000
 
 
4001
/*===========================================================================
 
4002
 *
 
4003
 *
 
4004
 * DIRECTDRAW CALLBACK FLAGS
 
4005
 *
 
4006
 *
 
4007
 *==========================================================================*/
 
4008
 
 
4009
/****************************************************************************
 
4010
 *
 
4011
 * DIRECTDRAW ENUMSURFACES FLAGS
 
4012
 *
 
4013
 ****************************************************************************/
 
4014
 
 
4015
/*
 
4016
 * Enumerate all of the surfaces that meet the search criterion.
 
4017
 */
 
4018
#define DDENUMSURFACES_ALL                      0x00000001l
 
4019
 
 
4020
/*
 
4021
 * A search hit is a surface that matches the surface description.
 
4022
 */
 
4023
#define DDENUMSURFACES_MATCH                    0x00000002l
 
4024
 
 
4025
/*
 
4026
 * A search hit is a surface that does not match the surface description.
 
4027
 */
 
4028
#define DDENUMSURFACES_NOMATCH                  0x00000004l
 
4029
 
 
4030
/*
 
4031
 * Enumerate the first surface that can be created which meets the search criterion.
 
4032
 */
 
4033
#define DDENUMSURFACES_CANBECREATED             0x00000008l
 
4034
 
 
4035
/*
 
4036
 * Enumerate the surfaces that already exist that meet the search criterion.
 
4037
 */
 
4038
#define DDENUMSURFACES_DOESEXIST                0x00000010l
 
4039
 
 
4040
 
 
4041
/****************************************************************************
 
4042
 *
 
4043
 * DIRECTDRAW SETDISPLAYMODE FLAGS
 
4044
 *
 
4045
 ****************************************************************************/
 
4046
 
 
4047
/*
 
4048
 * The desired mode is a standard VGA mode
 
4049
 */
 
4050
#define DDSDM_STANDARDVGAMODE                   0x00000001l
 
4051
 
 
4052
 
 
4053
/****************************************************************************
 
4054
 *
 
4055
 * DIRECTDRAW ENUMDISPLAYMODES FLAGS
 
4056
 *
 
4057
 ****************************************************************************/
 
4058
 
 
4059
/*
 
4060
 * Enumerate Modes with different refresh rates.  EnumDisplayModes guarantees
 
4061
 * that a particular mode will be enumerated only once.  This flag specifies whether
 
4062
 * the refresh rate is taken into account when determining if a mode is unique.
 
4063
 */
 
4064
#define DDEDM_REFRESHRATES                      0x00000001l
 
4065
 
 
4066
/*
 
4067
 * Enumerate VGA modes. Specify this flag if you wish to enumerate supported VGA
 
4068
 * modes such as mode 0x13 in addition to the usual ModeX modes (which are always
 
4069
 * enumerated if the application has previously called SetCooperativeLevel with the
 
4070
 * DDSCL_ALLOWMODEX flag set).
 
4071
 */
 
4072
#define DDEDM_STANDARDVGAMODES                  0x00000002L
 
4073
 
 
4074
 
 
4075
/****************************************************************************
 
4076
 *
 
4077
 * DIRECTDRAW SETCOOPERATIVELEVEL FLAGS
 
4078
 *
 
4079
 ****************************************************************************/
 
4080
 
 
4081
/*
 
4082
 * Exclusive mode owner will be responsible for the entire primary surface.
 
4083
 * GDI can be ignored. used with DD
 
4084
 */
 
4085
#define DDSCL_FULLSCREEN                        0x00000001l
 
4086
 
 
4087
/*
 
4088
 * allow CTRL_ALT_DEL to work while in fullscreen exclusive mode
 
4089
 */
 
4090
#define DDSCL_ALLOWREBOOT                       0x00000002l
 
4091
 
 
4092
/*
 
4093
 * prevents DDRAW from modifying the application window.
 
4094
 * prevents DDRAW from minimize/restore the application window on activation.
 
4095
 */
 
4096
#define DDSCL_NOWINDOWCHANGES                   0x00000004l
 
4097
 
 
4098
/*
 
4099
 * app wants to work as a regular Windows application
 
4100
 */
 
4101
#define DDSCL_NORMAL                            0x00000008l
 
4102
 
 
4103
/*
 
4104
 * app wants exclusive access
 
4105
 */
 
4106
#define DDSCL_EXCLUSIVE                         0x00000010l
 
4107
 
 
4108
 
 
4109
/*
 
4110
 * app can deal with non-windows display modes
 
4111
 */
 
4112
#define DDSCL_ALLOWMODEX                        0x00000040l
 
4113
 
 
4114
/*
 
4115
 * this window will receive the focus messages
 
4116
 */
 
4117
#define DDSCL_SETFOCUSWINDOW                    0x00000080l
 
4118
 
 
4119
/*
 
4120
 * this window is associated with the DDRAW object and will
 
4121
 * cover the screen in fullscreen mode
 
4122
 */
 
4123
#define DDSCL_SETDEVICEWINDOW                   0x00000100l
 
4124
 
 
4125
/*
 
4126
 * app wants DDRAW to create a window to be associated with the
 
4127
 * DDRAW object
 
4128
 */
 
4129
#define DDSCL_CREATEDEVICEWINDOW                0x00000200l
 
4130
 
 
4131
/*
 
4132
 * App explicitly asks DDRAW/D3D to be multithread safe. This makes D3D
 
4133
 * take the global crtisec more frequently.
 
4134
 */
 
4135
#define DDSCL_MULTITHREADED                     0x00000400l
 
4136
 
 
4137
/*
 
4138
 * App specifies that it would like to keep the FPU set up for optimal Direct3D
 
4139
 * performance (single precision and exceptions disabled) so Direct3D
 
4140
 * does not need to explicitly set the FPU each time. This is assumed by
 
4141
 * default in DirectX 7. See also DDSCL_FPUPRESERVE
 
4142
 */
 
4143
#define DDSCL_FPUSETUP                          0x00000800l
 
4144
 
 
4145
/*
 
4146
 * App specifies that it needs either double precision FPU or FPU exceptions
 
4147
 * enabled. This makes Direct3D explicitly set the FPU state eah time it is
 
4148
 * called. Setting the flag will reduce Direct3D performance. The flag is
 
4149
 * assumed by default in DirectX 6 and earlier. See also DDSCL_FPUSETUP
 
4150
 */
 
4151
#define DDSCL_FPUPRESERVE                          0x00001000l
 
4152
 
 
4153
 
 
4154
/****************************************************************************
 
4155
 *
 
4156
 * DIRECTDRAW BLT FLAGS
 
4157
 *
 
4158
 ****************************************************************************/
 
4159
 
 
4160
/*
 
4161
 * Use the alpha information in the pixel format or the alpha channel surface
 
4162
 * attached to the destination surface as the alpha channel for this blt.
 
4163
 */
 
4164
#define DDBLT_ALPHADEST                         0x00000001l
 
4165
 
 
4166
/*
 
4167
 * Use the dwConstAlphaDest field in the DDBLTFX structure as the alpha channel
 
4168
 * for the destination surface for this blt.
 
4169
 */
 
4170
#define DDBLT_ALPHADESTCONSTOVERRIDE            0x00000002l
 
4171
 
 
4172
/*
 
4173
 * The NEG suffix indicates that the destination surface becomes more
 
4174
 * transparent as the alpha value increases. (0 is opaque)
 
4175
 */
 
4176
#define DDBLT_ALPHADESTNEG                      0x00000004l
 
4177
 
 
4178
/*
 
4179
 * Use the lpDDSAlphaDest field in the DDBLTFX structure as the alpha
 
4180
 * channel for the destination for this blt.
 
4181
 */
 
4182
#define DDBLT_ALPHADESTSURFACEOVERRIDE          0x00000008l
 
4183
 
 
4184
/*
 
4185
 * Use the dwAlphaEdgeBlend field in the DDBLTFX structure as the alpha channel
 
4186
 * for the edges of the image that border the color key colors.
 
4187
 */
 
4188
#define DDBLT_ALPHAEDGEBLEND                    0x00000010l
 
4189
 
 
4190
/*
 
4191
 * Use the alpha information in the pixel format or the alpha channel surface
 
4192
 * attached to the source surface as the alpha channel for this blt.
 
4193
 */
 
4194
#define DDBLT_ALPHASRC                          0x00000020l
 
4195
 
 
4196
/*
 
4197
 * Use the dwConstAlphaSrc field in the DDBLTFX structure as the alpha channel
 
4198
 * for the source for this blt.
 
4199
 */
 
4200
#define DDBLT_ALPHASRCCONSTOVERRIDE             0x00000040l
 
4201
 
 
4202
/*
 
4203
 * The NEG suffix indicates that the source surface becomes more transparent
 
4204
 * as the alpha value increases. (0 is opaque)
 
4205
 */
 
4206
#define DDBLT_ALPHASRCNEG                       0x00000080l
 
4207
 
 
4208
/*
 
4209
 * Use the lpDDSAlphaSrc field in the DDBLTFX structure as the alpha channel
 
4210
 * for the source for this blt.
 
4211
 */
 
4212
#define DDBLT_ALPHASRCSURFACEOVERRIDE           0x00000100l
 
4213
 
 
4214
/*
 
4215
 * Do this blt asynchronously through the FIFO in the order received.  If
 
4216
 * there is no room in the hardware FIFO fail the call.
 
4217
 */
 
4218
#define DDBLT_ASYNC                             0x00000200l
 
4219
 
 
4220
/*
 
4221
 * Uses the dwFillColor field in the DDBLTFX structure as the RGB color
 
4222
 * to fill the destination rectangle on the destination surface with.
 
4223
 */
 
4224
#define DDBLT_COLORFILL                         0x00000400l
 
4225
 
 
4226
/*
 
4227
 * Uses the dwDDFX field in the DDBLTFX structure to specify the effects
 
4228
 * to use for the blt.
 
4229
 */
 
4230
#define DDBLT_DDFX                              0x00000800l
 
4231
 
 
4232
/*
 
4233
 * Uses the dwDDROPS field in the DDBLTFX structure to specify the ROPS
 
4234
 * that are not part of the Win32 API.
 
4235
 */
 
4236
#define DDBLT_DDROPS                            0x00001000l
 
4237
 
 
4238
/*
 
4239
 * Use the color key associated with the destination surface.
 
4240
 */
 
4241
#define DDBLT_KEYDEST                           0x00002000l
 
4242
 
 
4243
/*
 
4244
 * Use the dckDestColorkey field in the DDBLTFX structure as the color key
 
4245
 * for the destination surface.
 
4246
 */
 
4247
#define DDBLT_KEYDESTOVERRIDE                   0x00004000l
 
4248
 
 
4249
/*
 
4250
 * Use the color key associated with the source surface.
 
4251
 */
 
4252
#define DDBLT_KEYSRC                            0x00008000l
 
4253
 
 
4254
/*
 
4255
 * Use the dckSrcColorkey field in the DDBLTFX structure as the color key
 
4256
 * for the source surface.
 
4257
 */
 
4258
#define DDBLT_KEYSRCOVERRIDE                    0x00010000l
 
4259
 
 
4260
/*
 
4261
 * Use the dwROP field in the DDBLTFX structure for the raster operation
 
4262
 * for this blt.  These ROPs are the same as the ones defined in the Win32 API.
 
4263
 */
 
4264
#define DDBLT_ROP                               0x00020000l
 
4265
 
 
4266
/*
 
4267
 * Use the dwRotationAngle field in the DDBLTFX structure as the angle
 
4268
 * (specified in 1/100th of a degree) to rotate the surface.
 
4269
 */
 
4270
#define DDBLT_ROTATIONANGLE                     0x00040000l
 
4271
 
 
4272
/*
 
4273
 * Z-buffered blt using the z-buffers attached to the source and destination
 
4274
 * surfaces and the dwZBufferOpCode field in the DDBLTFX structure as the
 
4275
 * z-buffer opcode.
 
4276
 */
 
4277
#define DDBLT_ZBUFFER                           0x00080000l
 
4278
 
 
4279
/*
 
4280
 * Z-buffered blt using the dwConstDest Zfield and the dwZBufferOpCode field
 
4281
 * in the DDBLTFX structure as the z-buffer and z-buffer opcode respectively
 
4282
 * for the destination.
 
4283
 */
 
4284
#define DDBLT_ZBUFFERDESTCONSTOVERRIDE          0x00100000l
 
4285
 
 
4286
/*
 
4287
 * Z-buffered blt using the lpDDSDestZBuffer field and the dwZBufferOpCode
 
4288
 * field in the DDBLTFX structure as the z-buffer and z-buffer opcode
 
4289
 * respectively for the destination.
 
4290
 */
 
4291
#define DDBLT_ZBUFFERDESTOVERRIDE               0x00200000l
 
4292
 
 
4293
/*
 
4294
 * Z-buffered blt using the dwConstSrcZ field and the dwZBufferOpCode field
 
4295
 * in the DDBLTFX structure as the z-buffer and z-buffer opcode respectively
 
4296
 * for the source.
 
4297
 */
 
4298
#define DDBLT_ZBUFFERSRCCONSTOVERRIDE           0x00400000l
 
4299
 
 
4300
/*
 
4301
 * Z-buffered blt using the lpDDSSrcZBuffer field and the dwZBufferOpCode
 
4302
 * field in the DDBLTFX structure as the z-buffer and z-buffer opcode
 
4303
 * respectively for the source.
 
4304
 */
 
4305
#define DDBLT_ZBUFFERSRCOVERRIDE                0x00800000l
 
4306
 
 
4307
/*
 
4308
 * wait until the device is ready to handle the blt
 
4309
 * this will cause blt to not return DDERR_WASSTILLDRAWING
 
4310
 */
 
4311
#define DDBLT_WAIT                              0x01000000l
 
4312
 
 
4313
/*
 
4314
 * Uses the dwFillDepth field in the DDBLTFX structure as the depth value
 
4315
 * to fill the destination rectangle on the destination Z-buffer surface
 
4316
 * with.
 
4317
 */
 
4318
#define DDBLT_DEPTHFILL                         0x02000000l
 
4319
 
 
4320
 
 
4321
/*
 
4322
 * wait until the device is ready to handle the blt
 
4323
 * this will cause blt to not return DDERR_WASSTILLDRAWING
 
4324
 */
 
4325
#define DDBLT_DONOTWAIT                         0x08000000l
 
4326
 
 
4327
/*
 
4328
 * These flags indicate a presentation blt (i.e. a blt
 
4329
 * that moves surface contents from an offscreen back buffer to the primary
 
4330
 * surface). The driver is not allowed to "queue"  more than three such blts.
 
4331
 * The "end" of the presentation blt is indicated, since the
 
4332
 * blt may be clipped, in which case the runtime will call the driver with 
 
4333
 * several blts. All blts (even if not clipped) are tagged with DDBLT_PRESENTATION
 
4334
 * and the last (even if not clipped) additionally with DDBLT_LAST_PRESENTATION.
 
4335
 * Thus the true rule is that the driver must not schedule a DDBLT_PRESENTATION
 
4336
 * blt if there are 3 or more DDBLT_PRESENTLAST blts in the hardware pipe.
 
4337
 * If there are such blts in the pipe, the driver should return DDERR_WASSTILLDRAWING
 
4338
 * until the oldest queued DDBLT_LAST_PRESENTATION blts has been retired (i.e. the
 
4339
 * pixels have been actually written to the primary surface). Once the oldest blt
 
4340
 * has been retired, the driver is free to schedule the current blt.
 
4341
 * The goal is to provide a mechanism whereby the device's hardware queue never
 
4342
 * gets more than 3 frames ahead of the frames being generated by the application.
 
4343
 * When excessive queueing occurs, applications become unusable because the application
 
4344
 * visibly lags user input, and such problems make windowed interactive applications impossible.
 
4345
 * Some drivers may not have sufficient knowledge of their hardware's FIFO to know
 
4346
 * when a certain blt has been retired. Such drivers should code cautiously, and 
 
4347
 * simply not allow any frames to be queued at all. DDBLT_LAST_PRESENTATION should cause
 
4348
 * such drivers to return DDERR_WASSTILLDRAWING until the accelerator is completely
 
4349
 * finished- exactly as if the application had called Lock on the source surface
 
4350
 * before calling Blt. 
 
4351
 * In other words, the driver is allowed and encouraged to 
 
4352
 * generate as much latency as it can, but never more than 3 frames worth.
 
4353
 * Implementation detail: Drivers should count blts against the SOURCE surface, not
 
4354
 * against the primary surface. This enables multiple parallel windowed application
 
4355
 * to function more optimally.
 
4356
 * This flag is passed only to DX8 or higher drivers.
 
4357
 *
 
4358
 * APPLICATIONS DO NOT SET THESE FLAGS. THEY ARE SET BY THE DIRECTDRAW RUNTIME.
 
4359
 * 
 
4360
 */
 
4361
#define DDBLT_PRESENTATION                      0x10000000l
 
4362
#define DDBLT_LAST_PRESENTATION                 0x20000000l
 
4363
 
 
4364
 
 
4365
 
 
4366
/****************************************************************************
 
4367
 *
 
4368
 * BLTFAST FLAGS
 
4369
 *
 
4370
 ****************************************************************************/
 
4371
 
 
4372
#define DDBLTFAST_NOCOLORKEY                    0x00000000
 
4373
#define DDBLTFAST_SRCCOLORKEY                   0x00000001
 
4374
#define DDBLTFAST_DESTCOLORKEY                  0x00000002
 
4375
#define DDBLTFAST_WAIT                          0x00000010
 
4376
#define DDBLTFAST_DONOTWAIT                     0x00000020
 
4377
 
 
4378
/****************************************************************************
 
4379
 *
 
4380
 * FLIP FLAGS
 
4381
 *
 
4382
 ****************************************************************************/
 
4383
 
 
4384
#define DDFLIP_WAIT                          0x00000001L
 
4385
 
 
4386
/*
 
4387
 * Indicates that the target surface contains the even field of video data.
 
4388
 * This flag is only valid with an overlay surface.
 
4389
 */
 
4390
#define DDFLIP_EVEN                          0x00000002L
 
4391
 
 
4392
/*
 
4393
 * Indicates that the target surface contains the odd field of video data.
 
4394
 * This flag is only valid with an overlay surface.
 
4395
 */
 
4396
#define DDFLIP_ODD                           0x00000004L
 
4397
 
 
4398
/*
 
4399
 * Causes DirectDraw to perform the physical flip immediately and return
 
4400
 * to the application. Typically, what was the front buffer but is now the back
 
4401
 * buffer will still be visible (depending on timing) until the next vertical
 
4402
 * retrace. Subsequent operations involving the two flipped surfaces will
 
4403
 * not check to see if the physical flip has finished (i.e. will not return
 
4404
 * DDERR_WASSTILLDRAWING for that reason (but may for other reasons)).
 
4405
 * This allows an application to perform Flips at a higher frequency than the
 
4406
 * monitor refresh rate, but may introduce visible artifacts.
 
4407
 * Only effective if DDCAPS2_FLIPNOVSYNC is set. If that bit is not set,
 
4408
 * DDFLIP_NOVSYNC has no effect.
 
4409
 */
 
4410
#define DDFLIP_NOVSYNC                       0x00000008L
 
4411
 
 
4412
 
 
4413
/*
 
4414
 * Flip Interval Flags. These flags indicate how many vertical retraces to wait between
 
4415
 * each flip. The default is one. DirectDraw will return DDERR_WASSTILLDRAWING for each
 
4416
 * surface involved in the flip until the specified number of vertical retraces has
 
4417
 * ocurred. Only effective if DDCAPS2_FLIPINTERVAL is set. If that bit is not set,
 
4418
 * DDFLIP_INTERVALn has no effect.
 
4419
 */
 
4420
 
 
4421
/*
 
4422
 * DirectDraw will flip on every other vertical sync
 
4423
 */
 
4424
#define DDFLIP_INTERVAL2                     0x02000000L
 
4425
 
 
4426
 
 
4427
/*
 
4428
 * DirectDraw will flip on every third vertical sync
 
4429
 */
 
4430
#define DDFLIP_INTERVAL3                     0x03000000L
 
4431
 
 
4432
 
 
4433
/*
 
4434
 * DirectDraw will flip on every fourth vertical sync
 
4435
 */
 
4436
#define DDFLIP_INTERVAL4                     0x04000000L
 
4437
 
 
4438
/*
 
4439
 * DirectDraw will flip and display a main stereo surface
 
4440
 */
 
4441
#define DDFLIP_STEREO                        0x00000010L
 
4442
 
 
4443
/*
 
4444
 * On IDirectDrawSurface7 and higher interfaces, the default is DDFLIP_WAIT. If you wish
 
4445
 * to override the default and use time when the accelerator is busy (as denoted by
 
4446
 * the DDERR_WASSTILLDRAWING return code) then use DDFLIP_DONOTWAIT.
 
4447
 */
 
4448
#define DDFLIP_DONOTWAIT                     0x00000020L
 
4449
 
 
4450
 
 
4451
/****************************************************************************
 
4452
 *
 
4453
 * DIRECTDRAW SURFACE OVERLAY FLAGS
 
4454
 *
 
4455
 ****************************************************************************/
 
4456
 
 
4457
/*
 
4458
 * Use the alpha information in the pixel format or the alpha channel surface
 
4459
 * attached to the destination surface as the alpha channel for the
 
4460
 * destination overlay.
 
4461
 */
 
4462
#define DDOVER_ALPHADEST                        0x00000001l
 
4463
 
 
4464
/*
 
4465
 * Use the dwConstAlphaDest field in the DDOVERLAYFX structure as the
 
4466
 * destination alpha channel for this overlay.
 
4467
 */
 
4468
#define DDOVER_ALPHADESTCONSTOVERRIDE           0x00000002l
 
4469
 
 
4470
/*
 
4471
 * The NEG suffix indicates that the destination surface becomes more
 
4472
 * transparent as the alpha value increases.
 
4473
 */
 
4474
#define DDOVER_ALPHADESTNEG                     0x00000004l
 
4475
 
 
4476
/*
 
4477
 * Use the lpDDSAlphaDest field in the DDOVERLAYFX structure as the alpha
 
4478
 * channel destination for this overlay.
 
4479
 */
 
4480
#define DDOVER_ALPHADESTSURFACEOVERRIDE         0x00000008l
 
4481
 
 
4482
/*
 
4483
 * Use the dwAlphaEdgeBlend field in the DDOVERLAYFX structure as the alpha
 
4484
 * channel for the edges of the image that border the color key colors.
 
4485
 */
 
4486
#define DDOVER_ALPHAEDGEBLEND                   0x00000010l
 
4487
 
 
4488
/*
 
4489
 * Use the alpha information in the pixel format or the alpha channel surface
 
4490
 * attached to the source surface as the source alpha channel for this overlay.
 
4491
 */
 
4492
#define DDOVER_ALPHASRC                         0x00000020l
 
4493
 
 
4494
/*
 
4495
 * Use the dwConstAlphaSrc field in the DDOVERLAYFX structure as the source
 
4496
 * alpha channel for this overlay.
 
4497
 */
 
4498
#define DDOVER_ALPHASRCCONSTOVERRIDE            0x00000040l
 
4499
 
 
4500
/*
 
4501
 * The NEG suffix indicates that the source surface becomes more transparent
 
4502
 * as the alpha value increases.
 
4503
 */
 
4504
#define DDOVER_ALPHASRCNEG                      0x00000080l
 
4505
 
 
4506
/*
 
4507
 * Use the lpDDSAlphaSrc field in the DDOVERLAYFX structure as the alpha channel
 
4508
 * source for this overlay.
 
4509
 */
 
4510
#define DDOVER_ALPHASRCSURFACEOVERRIDE          0x00000100l
 
4511
 
 
4512
/*
 
4513
 * Turn this overlay off.
 
4514
 */
 
4515
#define DDOVER_HIDE                             0x00000200l
 
4516
 
 
4517
/*
 
4518
 * Use the color key associated with the destination surface.
 
4519
 */
 
4520
#define DDOVER_KEYDEST                          0x00000400l
 
4521
 
 
4522
/*
 
4523
 * Use the dckDestColorkey field in the DDOVERLAYFX structure as the color key
 
4524
 * for the destination surface
 
4525
 */
 
4526
#define DDOVER_KEYDESTOVERRIDE                  0x00000800l
 
4527
 
 
4528
/*
 
4529
 * Use the color key associated with the source surface.
 
4530
 */
 
4531
#define DDOVER_KEYSRC                           0x00001000l
 
4532
 
 
4533
/*
 
4534
 * Use the dckSrcColorkey field in the DDOVERLAYFX structure as the color key
 
4535
 * for the source surface.
 
4536
 */
 
4537
#define DDOVER_KEYSRCOVERRIDE                   0x00002000l
 
4538
 
 
4539
/*
 
4540
 * Turn this overlay on.
 
4541
 */
 
4542
#define DDOVER_SHOW                             0x00004000l
 
4543
 
 
4544
/*
 
4545
 * Add a dirty rect to an emulated overlayed surface.
 
4546
 */
 
4547
#define DDOVER_ADDDIRTYRECT                     0x00008000l
 
4548
 
 
4549
/*
 
4550
 * Redraw all dirty rects on an emulated overlayed surface.
 
4551
 */
 
4552
#define DDOVER_REFRESHDIRTYRECTS                0x00010000l
 
4553
 
 
4554
/*
 
4555
 * Redraw the entire surface on an emulated overlayed surface.
 
4556
 */
 
4557
#define DDOVER_REFRESHALL                      0x00020000l
 
4558
 
 
4559
 
 
4560
/*
 
4561
 * Use the overlay FX flags to define special overlay FX
 
4562
 */
 
4563
#define DDOVER_DDFX                             0x00080000l
 
4564
 
 
4565
/*
 
4566
 * Autoflip the overlay when ever the video port autoflips
 
4567
 */
 
4568
#define DDOVER_AUTOFLIP                         0x00100000l
 
4569
 
 
4570
/*
 
4571
 * Display each field of video port data individually without
 
4572
 * causing any jittery artifacts
 
4573
 */
 
4574
#define DDOVER_BOB                              0x00200000l
 
4575
 
 
4576
/*
 
4577
 * Indicates that bob/weave decisions should not be overridden by other
 
4578
 * interfaces.
 
4579
 */
 
4580
#define DDOVER_OVERRIDEBOBWEAVE                 0x00400000l
 
4581
 
 
4582
/*
 
4583
 * Indicates that the surface memory is composed of interleaved fields.
 
4584
 */
 
4585
#define DDOVER_INTERLEAVED                      0x00800000l
 
4586
 
 
4587
/*
 
4588
 * Indicates that bob will be performed using hardware rather than
 
4589
 * software or emulated.
 
4590
 */
 
4591
#define DDOVER_BOBHARDWARE                      0x01000000l
 
4592
 
 
4593
/*
 
4594
 * Indicates that overlay FX structure contains valid ARGB scaling factors.
 
4595
 */
 
4596
#define DDOVER_ARGBSCALEFACTORS                 0x02000000l
 
4597
 
 
4598
/*
 
4599
 * Indicates that ARGB scaling factors can be degraded to fit driver capabilities.
 
4600
 */
 
4601
#define DDOVER_DEGRADEARGBSCALING               0x04000000l
 
4602
 
 
4603
 
 
4604
/****************************************************************************
 
4605
 *
 
4606
 * DIRECTDRAWSURFACE LOCK FLAGS
 
4607
 *
 
4608
 ****************************************************************************/
 
4609
 
 
4610
/*
 
4611
 * The default.  Set to indicate that Lock should return a valid memory pointer
 
4612
 * to the top of the specified rectangle.  If no rectangle is specified then a
 
4613
 * pointer to the top of the surface is returned.
 
4614
 */
 
4615
#define DDLOCK_SURFACEMEMORYPTR                 0x00000000L     // default
 
4616
 
 
4617
/*
 
4618
 * Set to indicate that Lock should wait until it can obtain a valid memory
 
4619
 * pointer before returning.  If this bit is set, Lock will never return
 
4620
 * DDERR_WASSTILLDRAWING.
 
4621
 */
 
4622
#define DDLOCK_WAIT                             0x00000001L
 
4623
 
 
4624
/*
 
4625
 * Set if an event handle is being passed to Lock.  Lock will trigger the event
 
4626
 * when it can return the surface memory pointer requested.
 
4627
 */
 
4628
#define DDLOCK_EVENT                            0x00000002L
 
4629
 
 
4630
/*
 
4631
 * Indicates that the surface being locked will only be read from.
 
4632
 */
 
4633
#define DDLOCK_READONLY                         0x00000010L
 
4634
 
 
4635
/*
 
4636
 * Indicates that the surface being locked will only be written to
 
4637
 */
 
4638
#define DDLOCK_WRITEONLY                        0x00000020L
 
4639
 
 
4640
 
 
4641
/*
 
4642
 * Indicates that a system wide lock should not be taken when this surface
 
4643
 * is locked. This has several advantages (cursor responsiveness, ability
 
4644
 * to call more Windows functions, easier debugging) when locking video
 
4645
 * memory surfaces. However, an application specifying this flag must
 
4646
 * comply with a number of conditions documented in the help file.
 
4647
 * Furthermore, this flag cannot be specified when locking the primary.
 
4648
 */
 
4649
#define DDLOCK_NOSYSLOCK                        0x00000800L
 
4650
 
 
4651
/*
 
4652
 * Used only with Direct3D Vertex Buffer Locks. Indicates that no vertices
 
4653
 * that were referred to in Draw*PrimtiveVB calls since the start of the
 
4654
 * frame (or the last lock without this flag) will be modified during the
 
4655
 * lock. This can be useful when one is only appending data to the vertex
 
4656
 * buffer
 
4657
 */
 
4658
#define DDLOCK_NOOVERWRITE                      0x00001000L
 
4659
 
 
4660
/*
 
4661
 * Indicates that no assumptions will be made about the contents of the
 
4662
 * surface or vertex buffer during this lock.
 
4663
 * This enables two things:
 
4664
 * -    Direct3D or the driver may provide an alternative memory
 
4665
 *      area as the vertex buffer. This is useful when one plans to clear the
 
4666
 *      contents of the vertex buffer and fill in new data.
 
4667
 * -    Drivers sometimes store surface data in a re-ordered format.
 
4668
 *      When the application locks the surface, the driver is forced to un-re-order
 
4669
 *      the surface data before allowing the application to see the surface contents.
 
4670
 *      This flag is a hint to the driver that it can skip the un-re-ordering process
 
4671
 *      since the application plans to overwrite every single pixel in the surface
 
4672
 *      or locked rectangle (and so erase any un-re-ordered pixels anyway).
 
4673
 *      Applications should always set this flag when they intend to overwrite the entire
 
4674
 *      surface or locked rectangle.
 
4675
 */
 
4676
#define DDLOCK_DISCARDCONTENTS                  0x00002000L
 
4677
 /*
 
4678
  * DDLOCK_OKTOSWAP is an older, less informative name for DDLOCK_DISCARDCONTENTS
 
4679
  */
 
4680
#define DDLOCK_OKTOSWAP                         0x00002000L
 
4681
 
 
4682
/*
 
4683
 * On IDirectDrawSurface7 and higher interfaces, the default is DDLOCK_WAIT. If you wish
 
4684
 * to override the default and use time when the accelerator is busy (as denoted by
 
4685
 * the DDERR_WASSTILLDRAWING return code) then use DDLOCK_DONOTWAIT.
 
4686
 */
 
4687
#define DDLOCK_DONOTWAIT                        0x00004000L
 
4688
 
 
4689
 
 
4690
 
 
4691
/****************************************************************************
 
4692
 *
 
4693
 * DIRECTDRAWSURFACE PAGELOCK FLAGS
 
4694
 *
 
4695
 ****************************************************************************/
 
4696
 
 
4697
/*
 
4698
 * No flags defined at present
 
4699
 */
 
4700
 
 
4701
 
 
4702
/****************************************************************************
 
4703
 *
 
4704
 * DIRECTDRAWSURFACE PAGEUNLOCK FLAGS
 
4705
 *
 
4706
 ****************************************************************************/
 
4707
 
 
4708
/*
 
4709
 * No flags defined at present
 
4710
 */
 
4711
 
 
4712
 
 
4713
/****************************************************************************
 
4714
 *
 
4715
 * DIRECTDRAWSURFACE BLT FX FLAGS
 
4716
 *
 
4717
 ****************************************************************************/
 
4718
 
 
4719
/*
 
4720
 * If stretching, use arithmetic stretching along the Y axis for this blt.
 
4721
 */
 
4722
#define DDBLTFX_ARITHSTRETCHY                   0x00000001l
 
4723
 
 
4724
/*
 
4725
 * Do this blt mirroring the surface left to right.  Spin the
 
4726
 * surface around its y-axis.
 
4727
 */
 
4728
#define DDBLTFX_MIRRORLEFTRIGHT                 0x00000002l
 
4729
 
 
4730
/*
 
4731
 * Do this blt mirroring the surface up and down.  Spin the surface
 
4732
 * around its x-axis.
 
4733
 */
 
4734
#define DDBLTFX_MIRRORUPDOWN                    0x00000004l
 
4735
 
 
4736
/*
 
4737
 * Schedule this blt to avoid tearing.
 
4738
 */
 
4739
#define DDBLTFX_NOTEARING                       0x00000008l
 
4740
 
 
4741
/*
 
4742
 * Do this blt rotating the surface one hundred and eighty degrees.
 
4743
 */
 
4744
#define DDBLTFX_ROTATE180                       0x00000010l
 
4745
 
 
4746
/*
 
4747
 * Do this blt rotating the surface two hundred and seventy degrees.
 
4748
 */
 
4749
#define DDBLTFX_ROTATE270                       0x00000020l
 
4750
 
 
4751
/*
 
4752
 * Do this blt rotating the surface ninety degrees.
 
4753
 */
 
4754
#define DDBLTFX_ROTATE90                        0x00000040l
 
4755
 
 
4756
/*
 
4757
 * Do this z blt using dwZBufferLow and dwZBufferHigh as  range values
 
4758
 * specified to limit the bits copied from the source surface.
 
4759
 */
 
4760
#define DDBLTFX_ZBUFFERRANGE                    0x00000080l
 
4761
 
 
4762
/*
 
4763
 * Do this z blt adding the dwZBufferBaseDest to each of the sources z values
 
4764
 * before comparing it with the desting z values.
 
4765
 */
 
4766
#define DDBLTFX_ZBUFFERBASEDEST                 0x00000100l
 
4767
 
 
4768
/****************************************************************************
 
4769
 *
 
4770
 * DIRECTDRAWSURFACE OVERLAY FX FLAGS
 
4771
 *
 
4772
 ****************************************************************************/
 
4773
 
 
4774
/*
 
4775
 * If stretching, use arithmetic stretching along the Y axis for this overlay.
 
4776
 */
 
4777
#define DDOVERFX_ARITHSTRETCHY                  0x00000001l
 
4778
 
 
4779
/*
 
4780
 * Mirror the overlay across the vertical axis
 
4781
 */
 
4782
#define DDOVERFX_MIRRORLEFTRIGHT                0x00000002l
 
4783
 
 
4784
/*
 
4785
 * Mirror the overlay across the horizontal axis
 
4786
 */
 
4787
#define DDOVERFX_MIRRORUPDOWN                   0x00000004l
 
4788
 
 
4789
/*
 
4790
 * Deinterlace the overlay, if possible
 
4791
 */
 
4792
#define DDOVERFX_DEINTERLACE                    0x00000008l
 
4793
 
 
4794
 
 
4795
/****************************************************************************
 
4796
 *
 
4797
 * DIRECTDRAW WAITFORVERTICALBLANK FLAGS
 
4798
 *
 
4799
 ****************************************************************************/
 
4800
 
 
4801
/*
 
4802
 * return when the vertical blank interval begins
 
4803
 */
 
4804
#define DDWAITVB_BLOCKBEGIN                     0x00000001l
 
4805
 
 
4806
/*
 
4807
 * set up an event to trigger when the vertical blank begins
 
4808
 */
 
4809
#define DDWAITVB_BLOCKBEGINEVENT                0x00000002l
 
4810
 
 
4811
/*
 
4812
 * return when the vertical blank interval ends and display begins
 
4813
 */
 
4814
#define DDWAITVB_BLOCKEND                       0x00000004l
 
4815
 
 
4816
/****************************************************************************
 
4817
 *
 
4818
 * DIRECTDRAW GETFLIPSTATUS FLAGS
 
4819
 *
 
4820
 ****************************************************************************/
 
4821
 
 
4822
/*
 
4823
 * is it OK to flip now?
 
4824
 */
 
4825
#define DDGFS_CANFLIP                   0x00000001l
 
4826
 
 
4827
/*
 
4828
 * is the last flip finished?
 
4829
 */
 
4830
#define DDGFS_ISFLIPDONE                0x00000002l
 
4831
 
 
4832
/****************************************************************************
 
4833
 *
 
4834
 * DIRECTDRAW GETBLTSTATUS FLAGS
 
4835
 *
 
4836
 ****************************************************************************/
 
4837
 
 
4838
/*
 
4839
 * is it OK to blt now?
 
4840
 */
 
4841
#define DDGBS_CANBLT                    0x00000001l
 
4842
 
 
4843
/*
 
4844
 * is the blt to the surface finished?
 
4845
 */
 
4846
#define DDGBS_ISBLTDONE                 0x00000002l
 
4847
 
 
4848
 
 
4849
/****************************************************************************
 
4850
 *
 
4851
 * DIRECTDRAW ENUMOVERLAYZORDER FLAGS
 
4852
 *
 
4853
 ****************************************************************************/
 
4854
 
 
4855
/*
 
4856
 * Enumerate overlays back to front.
 
4857
 */
 
4858
#define DDENUMOVERLAYZ_BACKTOFRONT      0x00000000l
 
4859
 
 
4860
/*
 
4861
 * Enumerate overlays front to back
 
4862
 */
 
4863
#define DDENUMOVERLAYZ_FRONTTOBACK      0x00000001l
 
4864
 
 
4865
/****************************************************************************
 
4866
 *
 
4867
 * DIRECTDRAW UPDATEOVERLAYZORDER FLAGS
 
4868
 *
 
4869
 ****************************************************************************/
 
4870
 
 
4871
/*
 
4872
 * Send overlay to front
 
4873
 */
 
4874
#define DDOVERZ_SENDTOFRONT             0x00000000l
 
4875
 
 
4876
/*
 
4877
 * Send overlay to back
 
4878
 */
 
4879
#define DDOVERZ_SENDTOBACK              0x00000001l
 
4880
 
 
4881
/*
 
4882
 * Move Overlay forward
 
4883
 */
 
4884
#define DDOVERZ_MOVEFORWARD             0x00000002l
 
4885
 
 
4886
/*
 
4887
 * Move Overlay backward
 
4888
 */
 
4889
#define DDOVERZ_MOVEBACKWARD            0x00000003l
 
4890
 
 
4891
/*
 
4892
 * Move Overlay in front of relative surface
 
4893
 */
 
4894
#define DDOVERZ_INSERTINFRONTOF         0x00000004l
 
4895
 
 
4896
/*
 
4897
 * Move Overlay in back of relative surface
 
4898
 */
 
4899
#define DDOVERZ_INSERTINBACKOF          0x00000005l
 
4900
 
 
4901
 
 
4902
/****************************************************************************
 
4903
 *
 
4904
 * DIRECTDRAW SETGAMMARAMP FLAGS
 
4905
 *
 
4906
 ****************************************************************************/
 
4907
 
 
4908
/*
 
4909
 * Request calibrator to adjust the gamma ramp according to the physical
 
4910
 * properties of the display so that the result should appear identical
 
4911
 * on all systems.
 
4912
 */
 
4913
#define DDSGR_CALIBRATE                        0x00000001L
 
4914
 
 
4915
 
 
4916
/****************************************************************************
 
4917
 *
 
4918
 * DIRECTDRAW STARTMODETEST FLAGS
 
4919
 *
 
4920
 ****************************************************************************/
 
4921
 
 
4922
/*
 
4923
 * Indicates that the mode being tested has passed
 
4924
 */
 
4925
#define DDSMT_ISTESTREQUIRED                   0x00000001L
 
4926
 
 
4927
 
 
4928
/****************************************************************************
 
4929
 *
 
4930
 * DIRECTDRAW EVALUATEMODE FLAGS
 
4931
 *
 
4932
 ****************************************************************************/
 
4933
 
 
4934
/*
 
4935
 * Indicates that the mode being tested has passed
 
4936
 */
 
4937
#define DDEM_MODEPASSED                        0x00000001L
 
4938
 
 
4939
/*
 
4940
 * Indicates that the mode being tested has failed
 
4941
 */
 
4942
#define DDEM_MODEFAILED                        0x00000002L
 
4943
 
 
4944
 
 
4945
/*===========================================================================
 
4946
 *
 
4947
 *
 
4948
 * DIRECTDRAW RETURN CODES
 
4949
 *
 
4950
 * The return values from DirectDraw Commands and Surface that return an HRESULT
 
4951
 * are codes from DirectDraw concerning the results of the action
 
4952
 * requested by DirectDraw.
 
4953
 *
 
4954
 *==========================================================================*/
 
4955
 
 
4956
/*
 
4957
 * Status is OK
 
4958
 *
 
4959
 * Issued by: DirectDraw Commands and all callbacks
 
4960
 */
 
4961
#define DD_OK                                   0
 
4962
#define DD_FALSE                                S_FALSE
 
4963
 
 
4964
/****************************************************************************
 
4965
 *
 
4966
 * DIRECTDRAW ENUMCALLBACK RETURN VALUES
 
4967
 *
 
4968
 * EnumCallback returns are used to control the flow of the DIRECTDRAW and
 
4969
 * DIRECTDRAWSURFACE object enumerations.   They can only be returned by
 
4970
 * enumeration callback routines.
 
4971
 *
 
4972
 ****************************************************************************/
 
4973
 
 
4974
/*
 
4975
 * stop the enumeration
 
4976
 */
 
4977
#define DDENUMRET_CANCEL                        0
 
4978
 
 
4979
/*
 
4980
 * continue the enumeration
 
4981
 */
 
4982
#define DDENUMRET_OK                            1
 
4983
 
 
4984
/****************************************************************************
 
4985
 *
 
4986
 * DIRECTDRAW ERRORS
 
4987
 *
 
4988
 * Errors are represented by negative values and cannot be combined.
 
4989
 *
 
4990
 ****************************************************************************/
 
4991
 
 
4992
/*
 
4993
 * This object is already initialized
 
4994
 */
 
4995
#define DDERR_ALREADYINITIALIZED                MAKE_DDHRESULT( 5 )
 
4996
 
 
4997
/*
 
4998
 * This surface can not be attached to the requested surface.
 
4999
 */
 
5000
#define DDERR_CANNOTATTACHSURFACE               MAKE_DDHRESULT( 10 )
 
5001
 
 
5002
/*
 
5003
 * This surface can not be detached from the requested surface.
 
5004
 */
 
5005
#define DDERR_CANNOTDETACHSURFACE               MAKE_DDHRESULT( 20 )
 
5006
 
 
5007
/*
 
5008
 * Support is currently not available.
 
5009
 */
 
5010
#define DDERR_CURRENTLYNOTAVAIL                 MAKE_DDHRESULT( 40 )
 
5011
 
 
5012
/*
 
5013
 * An exception was encountered while performing the requested operation
 
5014
 */
 
5015
#define DDERR_EXCEPTION                         MAKE_DDHRESULT( 55 )
 
5016
 
 
5017
/*
 
5018
 * Generic failure.
 
5019
 */
 
5020
#define DDERR_GENERIC                           E_FAIL
 
5021
 
 
5022
/*
 
5023
 * Height of rectangle provided is not a multiple of reqd alignment
 
5024
 */
 
5025
#define DDERR_HEIGHTALIGN                       MAKE_DDHRESULT( 90 )
 
5026
 
 
5027
/*
 
5028
 * Unable to match primary surface creation request with existing
 
5029
 * primary surface.
 
5030
 */
 
5031
#define DDERR_INCOMPATIBLEPRIMARY               MAKE_DDHRESULT( 95 )
 
5032
 
 
5033
/*
 
5034
 * One or more of the caps bits passed to the callback are incorrect.
 
5035
 */
 
5036
#define DDERR_INVALIDCAPS                       MAKE_DDHRESULT( 100 )
 
5037
 
 
5038
/*
 
5039
 * DirectDraw does not support provided Cliplist.
 
5040
 */
 
5041
#define DDERR_INVALIDCLIPLIST                   MAKE_DDHRESULT( 110 )
 
5042
 
 
5043
/*
 
5044
 * DirectDraw does not support the requested mode
 
5045
 */
 
5046
#define DDERR_INVALIDMODE                       MAKE_DDHRESULT( 120 )
 
5047
 
 
5048
/*
 
5049
 * DirectDraw received a pointer that was an invalid DIRECTDRAW object.
 
5050
 */
 
5051
#define DDERR_INVALIDOBJECT                     MAKE_DDHRESULT( 130 )
 
5052
 
 
5053
/*
 
5054
 * One or more of the parameters passed to the callback function are
 
5055
 * incorrect.
 
5056
 */
 
5057
#define DDERR_INVALIDPARAMS                     E_INVALIDARG
 
5058
 
 
5059
/*
 
5060
 * pixel format was invalid as specified
 
5061
 */
 
5062
#define DDERR_INVALIDPIXELFORMAT                MAKE_DDHRESULT( 145 )
 
5063
 
 
5064
/*
 
5065
 * Rectangle provided was invalid.
 
5066
 */
 
5067
#define DDERR_INVALIDRECT                       MAKE_DDHRESULT( 150 )
 
5068
 
 
5069
/*
 
5070
 * Operation could not be carried out because one or more surfaces are locked
 
5071
 */
 
5072
#define DDERR_LOCKEDSURFACES                    MAKE_DDHRESULT( 160 )
 
5073
 
 
5074
/*
 
5075
 * There is no 3D present.
 
5076
 */
 
5077
#define DDERR_NO3D                              MAKE_DDHRESULT( 170 )
 
5078
 
 
5079
/*
 
5080
 * Operation could not be carried out because there is no alpha accleration
 
5081
 * hardware present or available.
 
5082
 */
 
5083
#define DDERR_NOALPHAHW                         MAKE_DDHRESULT( 180 )
 
5084
 
 
5085
/*
 
5086
 * Operation could not be carried out because there is no stereo
 
5087
 * hardware present or available.
 
5088
 */
 
5089
#define DDERR_NOSTEREOHARDWARE          MAKE_DDHRESULT( 181 )
 
5090
 
 
5091
/*
 
5092
 * Operation could not be carried out because there is no hardware
 
5093
 * present which supports stereo surfaces
 
5094
 */
 
5095
#define DDERR_NOSURFACELEFT                             MAKE_DDHRESULT( 182 )
 
5096
 
 
5097
 
 
5098
 
 
5099
/*
 
5100
 * no clip list available
 
5101
 */
 
5102
#define DDERR_NOCLIPLIST                        MAKE_DDHRESULT( 205 )
 
5103
 
 
5104
/*
 
5105
 * Operation could not be carried out because there is no color conversion
 
5106
 * hardware present or available.
 
5107
 */
 
5108
#define DDERR_NOCOLORCONVHW                     MAKE_DDHRESULT( 210 )
 
5109
 
 
5110
/*
 
5111
 * Create function called without DirectDraw object method SetCooperativeLevel
 
5112
 * being called.
 
5113
 */
 
5114
#define DDERR_NOCOOPERATIVELEVELSET             MAKE_DDHRESULT( 212 )
 
5115
 
 
5116
/*
 
5117
 * Surface doesn't currently have a color key
 
5118
 */
 
5119
#define DDERR_NOCOLORKEY                        MAKE_DDHRESULT( 215 )
 
5120
 
 
5121
/*
 
5122
 * Operation could not be carried out because there is no hardware support
 
5123
 * of the dest color key.
 
5124
 */
 
5125
#define DDERR_NOCOLORKEYHW                      MAKE_DDHRESULT( 220 )
 
5126
 
 
5127
/*
 
5128
 * No DirectDraw support possible with current display driver
 
5129
 */
 
5130
#define DDERR_NODIRECTDRAWSUPPORT               MAKE_DDHRESULT( 222 )
 
5131
 
 
5132
/*
 
5133
 * Operation requires the application to have exclusive mode but the
 
5134
 * application does not have exclusive mode.
 
5135
 */
 
5136
#define DDERR_NOEXCLUSIVEMODE                   MAKE_DDHRESULT( 225 )
 
5137
 
 
5138
/*
 
5139
 * Flipping visible surfaces is not supported.
 
5140
 */
 
5141
#define DDERR_NOFLIPHW                          MAKE_DDHRESULT( 230 )
 
5142
 
 
5143
/*
 
5144
 * There is no GDI present.
 
5145
 */
 
5146
#define DDERR_NOGDI                             MAKE_DDHRESULT( 240 )
 
5147
 
 
5148
/*
 
5149
 * Operation could not be carried out because there is no hardware present
 
5150
 * or available.
 
5151
 */
 
5152
#define DDERR_NOMIRRORHW                        MAKE_DDHRESULT( 250 )
 
5153
 
 
5154
/*
 
5155
 * Requested item was not found
 
5156
 */
 
5157
#define DDERR_NOTFOUND                          MAKE_DDHRESULT( 255 )
 
5158
 
 
5159
/*
 
5160
 * Operation could not be carried out because there is no overlay hardware
 
5161
 * present or available.
 
5162
 */
 
5163
#define DDERR_NOOVERLAYHW                       MAKE_DDHRESULT( 260 )
 
5164
 
 
5165
/*
 
5166
 * Operation could not be carried out because the source and destination
 
5167
 * rectangles are on the same surface and overlap each other.
 
5168
 */
 
5169
#define DDERR_OVERLAPPINGRECTS                  MAKE_DDHRESULT( 270 )
 
5170
 
 
5171
/*
 
5172
 * Operation could not be carried out because there is no appropriate raster
 
5173
 * op hardware present or available.
 
5174
 */
 
5175
#define DDERR_NORASTEROPHW                      MAKE_DDHRESULT( 280 )
 
5176
 
 
5177
/*
 
5178
 * Operation could not be carried out because there is no rotation hardware
 
5179
 * present or available.
 
5180
 */
 
5181
#define DDERR_NOROTATIONHW                      MAKE_DDHRESULT( 290 )
 
5182
 
 
5183
/*
 
5184
 * Operation could not be carried out because there is no hardware support
 
5185
 * for stretching
 
5186
 */
 
5187
#define DDERR_NOSTRETCHHW                       MAKE_DDHRESULT( 310 )
 
5188
 
 
5189
/*
 
5190
 * DirectDrawSurface is not in 4 bit color palette and the requested operation
 
5191
 * requires 4 bit color palette.
 
5192
 */
 
5193
#define DDERR_NOT4BITCOLOR                      MAKE_DDHRESULT( 316 )
 
5194
 
 
5195
/*
 
5196
 * DirectDrawSurface is not in 4 bit color index palette and the requested
 
5197
 * operation requires 4 bit color index palette.
 
5198
 */
 
5199
#define DDERR_NOT4BITCOLORINDEX                 MAKE_DDHRESULT( 317 )
 
5200
 
 
5201
/*
 
5202
 * DirectDraw Surface is not in 8 bit color mode and the requested operation
 
5203
 * requires 8 bit color.
 
5204
 */
 
5205
#define DDERR_NOT8BITCOLOR                      MAKE_DDHRESULT( 320 )
 
5206
 
 
5207
/*
 
5208
 * Operation could not be carried out because there is no texture mapping
 
5209
 * hardware present or available.
 
5210
 */
 
5211
#define DDERR_NOTEXTUREHW                       MAKE_DDHRESULT( 330 )
 
5212
 
 
5213
/*
 
5214
 * Operation could not be carried out because there is no hardware support
 
5215
 * for vertical blank synchronized operations.
 
5216
 */
 
5217
#define DDERR_NOVSYNCHW                         MAKE_DDHRESULT( 335 )
 
5218
 
 
5219
/*
 
5220
 * Operation could not be carried out because there is no hardware support
 
5221
 * for zbuffer blting.
 
5222
 */
 
5223
#define DDERR_NOZBUFFERHW                       MAKE_DDHRESULT( 340 )
 
5224
 
 
5225
/*
 
5226
 * Overlay surfaces could not be z layered based on their BltOrder because
 
5227
 * the hardware does not support z layering of overlays.
 
5228
 */
 
5229
#define DDERR_NOZOVERLAYHW                      MAKE_DDHRESULT( 350 )
 
5230
 
 
5231
/*
 
5232
 * The hardware needed for the requested operation has already been
 
5233
 * allocated.
 
5234
 */
 
5235
#define DDERR_OUTOFCAPS                         MAKE_DDHRESULT( 360 )
 
5236
 
 
5237
/*
 
5238
 * DirectDraw does not have enough memory to perform the operation.
 
5239
 */
 
5240
#define DDERR_OUTOFMEMORY                       E_OUTOFMEMORY
 
5241
 
 
5242
/*
 
5243
 * DirectDraw does not have enough memory to perform the operation.
 
5244
 */
 
5245
#define DDERR_OUTOFVIDEOMEMORY                  MAKE_DDHRESULT( 380 )
 
5246
 
 
5247
/*
 
5248
 * hardware does not support clipped overlays
 
5249
 */
 
5250
#define DDERR_OVERLAYCANTCLIP                   MAKE_DDHRESULT( 382 )
 
5251
 
 
5252
/*
 
5253
 * Can only have ony color key active at one time for overlays
 
5254
 */
 
5255
#define DDERR_OVERLAYCOLORKEYONLYONEACTIVE      MAKE_DDHRESULT( 384 )
 
5256
 
 
5257
/*
 
5258
 * Access to this palette is being refused because the palette is already
 
5259
 * locked by another thread.
 
5260
 */
 
5261
#define DDERR_PALETTEBUSY                       MAKE_DDHRESULT( 387 )
 
5262
 
 
5263
/*
 
5264
 * No src color key specified for this operation.
 
5265
 */
 
5266
#define DDERR_COLORKEYNOTSET                    MAKE_DDHRESULT( 400 )
 
5267
 
 
5268
/*
 
5269
 * This surface is already attached to the surface it is being attached to.
 
5270
 */
 
5271
#define DDERR_SURFACEALREADYATTACHED            MAKE_DDHRESULT( 410 )
 
5272
 
 
5273
/*
 
5274
 * This surface is already a dependency of the surface it is being made a
 
5275
 * dependency of.
 
5276
 */
 
5277
#define DDERR_SURFACEALREADYDEPENDENT           MAKE_DDHRESULT( 420 )
 
5278
 
 
5279
/*
 
5280
 * Access to this surface is being refused because the surface is already
 
5281
 * locked by another thread.
 
5282
 */
 
5283
#define DDERR_SURFACEBUSY                       MAKE_DDHRESULT( 430 )
 
5284
 
 
5285
/*
 
5286
 * Access to this surface is being refused because no driver exists
 
5287
 * which can supply a pointer to the surface.
 
5288
 * This is most likely to happen when attempting to lock the primary
 
5289
 * surface when no DCI provider is present.
 
5290
 * Will also happen on attempts to lock an optimized surface.
 
5291
 */
 
5292
#define DDERR_CANTLOCKSURFACE                   MAKE_DDHRESULT( 435 )
 
5293
 
 
5294
/*
 
5295
 * Access to Surface refused because Surface is obscured.
 
5296
 */
 
5297
#define DDERR_SURFACEISOBSCURED                 MAKE_DDHRESULT( 440 )
 
5298
 
 
5299
/*
 
5300
 * Access to this surface is being refused because the surface is gone.
 
5301
 * The DIRECTDRAWSURFACE object representing this surface should
 
5302
 * have Restore called on it.
 
5303
 */
 
5304
#define DDERR_SURFACELOST                       MAKE_DDHRESULT( 450 )
 
5305
 
 
5306
/*
 
5307
 * The requested surface is not attached.
 
5308
 */
 
5309
#define DDERR_SURFACENOTATTACHED                MAKE_DDHRESULT( 460 )
 
5310
 
 
5311
/*
 
5312
 * Height requested by DirectDraw is too large.
 
5313
 */
 
5314
#define DDERR_TOOBIGHEIGHT                      MAKE_DDHRESULT( 470 )
 
5315
 
 
5316
/*
 
5317
 * Size requested by DirectDraw is too large --  The individual height and
 
5318
 * width are OK.
 
5319
 */
 
5320
#define DDERR_TOOBIGSIZE                        MAKE_DDHRESULT( 480 )
 
5321
 
 
5322
/*
 
5323
 * Width requested by DirectDraw is too large.
 
5324
 */
 
5325
#define DDERR_TOOBIGWIDTH                       MAKE_DDHRESULT( 490 )
 
5326
 
 
5327
/*
 
5328
 * Action not supported.
 
5329
 */
 
5330
#define DDERR_UNSUPPORTED                       E_NOTIMPL
 
5331
 
 
5332
/*
 
5333
 * Pixel format requested is unsupported by DirectDraw
 
5334
 */
 
5335
#define DDERR_UNSUPPORTEDFORMAT                 MAKE_DDHRESULT( 510 )
 
5336
 
 
5337
/*
 
5338
 * Bitmask in the pixel format requested is unsupported by DirectDraw
 
5339
 */
 
5340
#define DDERR_UNSUPPORTEDMASK                   MAKE_DDHRESULT( 520 )
 
5341
 
 
5342
/*
 
5343
 * The specified stream contains invalid data
 
5344
 */
 
5345
#define DDERR_INVALIDSTREAM                     MAKE_DDHRESULT( 521 )
 
5346
 
 
5347
/*
 
5348
 * vertical blank is in progress
 
5349
 */
 
5350
#define DDERR_VERTICALBLANKINPROGRESS           MAKE_DDHRESULT( 537 )
 
5351
 
 
5352
/*
 
5353
 * Informs DirectDraw that the previous Blt which is transfering information
 
5354
 * to or from this Surface is incomplete.
 
5355
 */
 
5356
#define DDERR_WASSTILLDRAWING                   MAKE_DDHRESULT( 540 )
 
5357
 
 
5358
 
 
5359
/*
 
5360
 * The specified surface type requires specification of the COMPLEX flag
 
5361
 */
 
5362
#define DDERR_DDSCAPSCOMPLEXREQUIRED            MAKE_DDHRESULT( 542 )
 
5363
 
 
5364
 
 
5365
/*
 
5366
 * Rectangle provided was not horizontally aligned on reqd. boundary
 
5367
 */
 
5368
#define DDERR_XALIGN                            MAKE_DDHRESULT( 560 )
 
5369
 
 
5370
/*
 
5371
 * The GUID passed to DirectDrawCreate is not a valid DirectDraw driver
 
5372
 * identifier.
 
5373
 */
 
5374
#define DDERR_INVALIDDIRECTDRAWGUID             MAKE_DDHRESULT( 561 )
 
5375
 
 
5376
/*
 
5377
 * A DirectDraw object representing this driver has already been created
 
5378
 * for this process.
 
5379
 */
 
5380
#define DDERR_DIRECTDRAWALREADYCREATED          MAKE_DDHRESULT( 562 )
 
5381
 
 
5382
/*
 
5383
 * A hardware only DirectDraw object creation was attempted but the driver
 
5384
 * did not support any hardware.
 
5385
 */
 
5386
#define DDERR_NODIRECTDRAWHW                    MAKE_DDHRESULT( 563 )
 
5387
 
 
5388
/*
 
5389
 * this process already has created a primary surface
 
5390
 */
 
5391
#define DDERR_PRIMARYSURFACEALREADYEXISTS       MAKE_DDHRESULT( 564 )
 
5392
 
 
5393
/*
 
5394
 * software emulation not available.
 
5395
 */
 
5396
#define DDERR_NOEMULATION                       MAKE_DDHRESULT( 565 )
 
5397
 
 
5398
/*
 
5399
 * region passed to Clipper::GetClipList is too small.
 
5400
 */
 
5401
#define DDERR_REGIONTOOSMALL                    MAKE_DDHRESULT( 566 )
 
5402
 
 
5403
/*
 
5404
 * an attempt was made to set a clip list for a clipper objec that
 
5405
 * is already monitoring an hwnd.
 
5406
 */
 
5407
#define DDERR_CLIPPERISUSINGHWND                MAKE_DDHRESULT( 567 )
 
5408
 
 
5409
/*
 
5410
 * No clipper object attached to surface object
 
5411
 */
 
5412
#define DDERR_NOCLIPPERATTACHED                 MAKE_DDHRESULT( 568 )
 
5413
 
 
5414
/*
 
5415
 * Clipper notification requires an HWND or
 
5416
 * no HWND has previously been set as the CooperativeLevel HWND.
 
5417
 */
 
5418
#define DDERR_NOHWND                            MAKE_DDHRESULT( 569 )
 
5419
 
 
5420
/*
 
5421
 * HWND used by DirectDraw CooperativeLevel has been subclassed,
 
5422
 * this prevents DirectDraw from restoring state.
 
5423
 */
 
5424
#define DDERR_HWNDSUBCLASSED                    MAKE_DDHRESULT( 570 )
 
5425
 
 
5426
/*
 
5427
 * The CooperativeLevel HWND has already been set.
 
5428
 * It can not be reset while the process has surfaces or palettes created.
 
5429
 */
 
5430
#define DDERR_HWNDALREADYSET                    MAKE_DDHRESULT( 571 )
 
5431
 
 
5432
/*
 
5433
 * No palette object attached to this surface.
 
5434
 */
 
5435
#define DDERR_NOPALETTEATTACHED                 MAKE_DDHRESULT( 572 )
 
5436
 
 
5437
/*
 
5438
 * No hardware support for 16 or 256 color palettes.
 
5439
 */
 
5440
#define DDERR_NOPALETTEHW                       MAKE_DDHRESULT( 573 )
 
5441
 
 
5442
/*
 
5443
 * If a clipper object is attached to the source surface passed into a
 
5444
 * BltFast call.
 
5445
 */
 
5446
#define DDERR_BLTFASTCANTCLIP                   MAKE_DDHRESULT( 574 )
 
5447
 
 
5448
/*
 
5449
 * No blter.
 
5450
 */
 
5451
#define DDERR_NOBLTHW                           MAKE_DDHRESULT( 575 )
 
5452
 
 
5453
/*
 
5454
 * No DirectDraw ROP hardware.
 
5455
 */
 
5456
#define DDERR_NODDROPSHW                        MAKE_DDHRESULT( 576 )
 
5457
 
 
5458
/*
 
5459
 * returned when GetOverlayPosition is called on a hidden overlay
 
5460
 */
 
5461
#define DDERR_OVERLAYNOTVISIBLE                 MAKE_DDHRESULT( 577 )
 
5462
 
 
5463
/*
 
5464
 * returned when GetOverlayPosition is called on a overlay that UpdateOverlay
 
5465
 * has never been called on to establish a destionation.
 
5466
 */
 
5467
#define DDERR_NOOVERLAYDEST                     MAKE_DDHRESULT( 578 )
 
5468
 
 
5469
/*
 
5470
 * returned when the position of the overlay on the destionation is no longer
 
5471
 * legal for that destionation.
 
5472
 */
 
5473
#define DDERR_INVALIDPOSITION                   MAKE_DDHRESULT( 579 )
 
5474
 
 
5475
/*
 
5476
 * returned when an overlay member is called for a non-overlay surface
 
5477
 */
 
5478
#define DDERR_NOTAOVERLAYSURFACE                MAKE_DDHRESULT( 580 )
 
5479
 
 
5480
/*
 
5481
 * An attempt was made to set the cooperative level when it was already
 
5482
 * set to exclusive.
 
5483
 */
 
5484
#define DDERR_EXCLUSIVEMODEALREADYSET           MAKE_DDHRESULT( 581 )
 
5485
 
 
5486
/*
 
5487
 * An attempt has been made to flip a surface that is not flippable.
 
5488
 */
 
5489
#define DDERR_NOTFLIPPABLE                      MAKE_DDHRESULT( 582 )
 
5490
 
 
5491
/*
 
5492
 * Can't duplicate primary & 3D surfaces, or surfaces that are implicitly
 
5493
 * created.
 
5494
 */
 
5495
#define DDERR_CANTDUPLICATE                     MAKE_DDHRESULT( 583 )
 
5496
 
 
5497
/*
 
5498
 * Surface was not locked.  An attempt to unlock a surface that was not
 
5499
 * locked at all, or by this process, has been attempted.
 
5500
 */
 
5501
#define DDERR_NOTLOCKED                         MAKE_DDHRESULT( 584 )
 
5502
 
 
5503
/*
 
5504
 * Windows can not create any more DCs, or a DC was requested for a paltte-indexed
 
5505
 * surface when the surface had no palette AND the display mode was not palette-indexed
 
5506
 * (in this case DirectDraw cannot select a proper palette into the DC)
 
5507
 */
 
5508
#define DDERR_CANTCREATEDC                      MAKE_DDHRESULT( 585 )
 
5509
 
 
5510
/*
 
5511
 * No DC was ever created for this surface.
 
5512
 */
 
5513
#define DDERR_NODC                              MAKE_DDHRESULT( 586 )
 
5514
 
 
5515
/*
 
5516
 * This surface can not be restored because it was created in a different
 
5517
 * mode.
 
5518
 */
 
5519
#define DDERR_WRONGMODE                         MAKE_DDHRESULT( 587 )
 
5520
 
 
5521
/*
 
5522
 * This surface can not be restored because it is an implicitly created
 
5523
 * surface.
 
5524
 */
 
5525
#define DDERR_IMPLICITLYCREATED                 MAKE_DDHRESULT( 588 )
 
5526
 
 
5527
/*
 
5528
 * The surface being used is not a palette-based surface
 
5529
 */
 
5530
#define DDERR_NOTPALETTIZED                     MAKE_DDHRESULT( 589 )
 
5531
 
 
5532
 
 
5533
/*
 
5534
 * The display is currently in an unsupported mode
 
5535
 */
 
5536
#define DDERR_UNSUPPORTEDMODE                   MAKE_DDHRESULT( 590 )
 
5537
 
 
5538
/*
 
5539
 * Operation could not be carried out because there is no mip-map
 
5540
 * texture mapping hardware present or available.
 
5541
 */
 
5542
#define DDERR_NOMIPMAPHW                        MAKE_DDHRESULT( 591 )
 
5543
 
 
5544
/*
 
5545
 * The requested action could not be performed because the surface was of
 
5546
 * the wrong type.
 
5547
 */
 
5548
#define DDERR_INVALIDSURFACETYPE                MAKE_DDHRESULT( 592 )
 
5549
 
 
5550
 
 
5551
/*
 
5552
 * Device does not support optimized surfaces, therefore no video memory optimized surfaces
 
5553
 */
 
5554
#define DDERR_NOOPTIMIZEHW                      MAKE_DDHRESULT( 600 )
 
5555
 
 
5556
/*
 
5557
 * Surface is an optimized surface, but has not yet been allocated any memory
 
5558
 */
 
5559
#define DDERR_NOTLOADED                         MAKE_DDHRESULT( 601 )
 
5560
 
 
5561
/*
 
5562
 * Attempt was made to create or set a device window without first setting
 
5563
 * the focus window
 
5564
 */
 
5565
#define DDERR_NOFOCUSWINDOW                     MAKE_DDHRESULT( 602 )
 
5566
 
 
5567
/*
 
5568
 * Attempt was made to set a palette on a mipmap sublevel
 
5569
 */
 
5570
#define DDERR_NOTONMIPMAPSUBLEVEL               MAKE_DDHRESULT( 603 )
 
5571
 
 
5572
/*
 
5573
 * A DC has already been returned for this surface. Only one DC can be
 
5574
 * retrieved per surface.
 
5575
 */
 
5576
#define DDERR_DCALREADYCREATED                  MAKE_DDHRESULT( 620 )
 
5577
 
 
5578
/*
 
5579
 * An attempt was made to allocate non-local video memory from a device
 
5580
 * that does not support non-local video memory.
 
5581
 */
 
5582
#define DDERR_NONONLOCALVIDMEM                  MAKE_DDHRESULT( 630 )
 
5583
 
 
5584
/*
 
5585
 * The attempt to page lock a surface failed.
 
5586
 */
 
5587
#define DDERR_CANTPAGELOCK                      MAKE_DDHRESULT( 640 )
 
5588
 
 
5589
 
 
5590
/*
 
5591
 * The attempt to page unlock a surface failed.
 
5592
 */
 
5593
#define DDERR_CANTPAGEUNLOCK                    MAKE_DDHRESULT( 660 )
 
5594
 
 
5595
/*
 
5596
 * An attempt was made to page unlock a surface with no outstanding page locks.
 
5597
 */
 
5598
#define DDERR_NOTPAGELOCKED                     MAKE_DDHRESULT( 680 )
 
5599
 
 
5600
/*
 
5601
 * There is more data available than the specified buffer size could hold
 
5602
 */
 
5603
#define DDERR_MOREDATA                          MAKE_DDHRESULT( 690 )
 
5604
 
 
5605
/*
 
5606
 * The data has expired and is therefore no longer valid.
 
5607
 */
 
5608
#define DDERR_EXPIRED                           MAKE_DDHRESULT( 691 )
 
5609
 
 
5610
/*
 
5611
 * The mode test has finished executing.
 
5612
 */
 
5613
#define DDERR_TESTFINISHED                      MAKE_DDHRESULT( 692 )
 
5614
 
 
5615
/*
 
5616
 * The mode test has switched to a new mode.
 
5617
 */
 
5618
#define DDERR_NEWMODE                           MAKE_DDHRESULT( 693 )
 
5619
 
 
5620
/*
 
5621
 * D3D has not yet been initialized.
 
5622
 */
 
5623
#define DDERR_D3DNOTINITIALIZED                 MAKE_DDHRESULT( 694 )
 
5624
 
 
5625
/*
 
5626
 * The video port is not active
 
5627
 */
 
5628
#define DDERR_VIDEONOTACTIVE                    MAKE_DDHRESULT( 695 )
 
5629
 
 
5630
/*
 
5631
 * The monitor does not have EDID data.
 
5632
 */
 
5633
#define DDERR_NOMONITORINFORMATION              MAKE_DDHRESULT( 696 )
 
5634
 
 
5635
/*
 
5636
 * The driver does not enumerate display mode refresh rates.
 
5637
 */
 
5638
#define DDERR_NODRIVERSUPPORT                   MAKE_DDHRESULT( 697 )
 
5639
 
 
5640
/*
 
5641
 * Surfaces created by one direct draw device cannot be used directly by
 
5642
 * another direct draw device.
 
5643
 */
 
5644
#define DDERR_DEVICEDOESNTOWNSURFACE            MAKE_DDHRESULT( 699 )
 
5645
 
 
5646
 
 
5647
 
 
5648
/*
 
5649
 * An attempt was made to invoke an interface member of a DirectDraw object
 
5650
 * created by CoCreateInstance() before it was initialized.
 
5651
 */
 
5652
#define DDERR_NOTINITIALIZED                    CO_E_NOTINITIALIZED
 
5653
 
 
5654
 
 
5655
/* Alpha bit depth constants */
 
5656
 
 
5657
 
 
5658
#ifdef __cplusplus
 
5659
};
 
5660
#endif
 
5661
 
 
5662
#ifdef ENABLE_NAMELESS_UNION_PRAGMA
 
5663
#pragma warning(default:4201)
 
5664
#endif
 
5665
 
 
5666
#endif //__DDRAW_INCLUDED__
 
5667
 
 
5668