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