/common/dx9/include/ddraw.h
C Header | 5792 lines | 2442 code | 768 blank | 2582 comment | 30 complexity | 209238b7eba186d89ce68d626fa25e5a MD5 | raw file
Large files files are truncated, but you can click here to view the full file
- /*==========================================================================;
- *
- * Copyright (C) Microsoft Corporation. All Rights Reserved.
- *
- * File: ddraw.h
- * Content: DirectDraw include file
- *
- ***************************************************************************/
-
- #ifndef __DDRAW_INCLUDED__
- #define __DDRAW_INCLUDED__
-
- //Disable the nameless union warning when building internally
- #undef ENABLE_NAMELESS_UNION_PRAGMA
- #ifdef DIRECTX_REDIST
- #define ENABLE_NAMELESS_UNION_PRAGMA
- #endif
-
- #ifdef ENABLE_NAMELESS_UNION_PRAGMA
- #pragma warning(disable:4201)
- #endif
-
- /*
- * If you wish an application built against the newest version of DirectDraw
- * to run against an older DirectDraw run time then define DIRECTDRAW_VERSION
- * to be the earlies version of DirectDraw you wish to run against. For,
- * example if you wish an application to run against a DX 3 runtime define
- * DIRECTDRAW_VERSION to be 0x0300.
- */
- #ifndef DIRECTDRAW_VERSION
- #define DIRECTDRAW_VERSION 0x0700
- #endif /* DIRECTDRAW_VERSION */
-
- #if defined( _WIN32 ) && !defined( _NO_COM )
- #define COM_NO_WINDOWS_H
- #include <objbase.h>
- #else
- #define IUnknown void
- #if !defined( NT_BUILD_ENVIRONMENT ) && !defined(WINNT)
- #define CO_E_NOTINITIALIZED 0x800401F0L
- #endif
- #endif
-
- #define _FACDD 0x876
- #define MAKE_DDHRESULT( code ) MAKE_HRESULT( 1, _FACDD, code )
-
- #ifdef __cplusplus
- extern "C" {
- #endif
-
- //
- // For compilers that don't support nameless unions, do a
- //
- // #define NONAMELESSUNION
- //
- // before #include <ddraw.h>
- //
- #ifndef DUMMYUNIONNAMEN
- #if defined(__cplusplus) || !defined(NONAMELESSUNION)
- #define DUMMYUNIONNAMEN(n)
- #else
- #define DUMMYUNIONNAMEN(n) u##n
- #endif
- #endif
-
- #ifndef MAKEFOURCC
- #define MAKEFOURCC(ch0, ch1, ch2, ch3) \
- ((DWORD)(BYTE)(ch0) | ((DWORD)(BYTE)(ch1) << 8) | \
- ((DWORD)(BYTE)(ch2) << 16) | ((DWORD)(BYTE)(ch3) << 24 ))
- #endif //defined(MAKEFOURCC)
-
- /*
- * FOURCC codes for DX compressed-texture pixel formats
- */
- #define FOURCC_DXT1 (MAKEFOURCC('D','X','T','1'))
- #define FOURCC_DXT2 (MAKEFOURCC('D','X','T','2'))
- #define FOURCC_DXT3 (MAKEFOURCC('D','X','T','3'))
- #define FOURCC_DXT4 (MAKEFOURCC('D','X','T','4'))
- #define FOURCC_DXT5 (MAKEFOURCC('D','X','T','5'))
-
- /*
- * GUIDS used by DirectDraw objects
- */
- #if defined( _WIN32 ) && !defined( _NO_COM )
-
- DEFINE_GUID( CLSID_DirectDraw, 0xD7B70EE0,0x4340,0x11CF,0xB0,0x63,0x00,0x20,0xAF,0xC2,0xCD,0x35 );
- DEFINE_GUID( CLSID_DirectDraw7, 0x3c305196,0x50db,0x11d3,0x9c,0xfe,0x00,0xc0,0x4f,0xd9,0x30,0xc5 );
- DEFINE_GUID( CLSID_DirectDrawClipper, 0x593817A0,0x7DB3,0x11CF,0xA2,0xDE,0x00,0xAA,0x00,0xb9,0x33,0x56 );
- DEFINE_GUID( IID_IDirectDraw, 0x6C14DB80,0xA733,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60 );
- DEFINE_GUID( IID_IDirectDraw2, 0xB3A6F3E0,0x2B43,0x11CF,0xA2,0xDE,0x00,0xAA,0x00,0xB9,0x33,0x56 );
- DEFINE_GUID( IID_IDirectDraw4, 0x9c59509a,0x39bd,0x11d1,0x8c,0x4a,0x00,0xc0,0x4f,0xd9,0x30,0xc5 );
- DEFINE_GUID( IID_IDirectDraw7, 0x15e65ec0,0x3b9c,0x11d2,0xb9,0x2f,0x00,0x60,0x97,0x97,0xea,0x5b );
- DEFINE_GUID( IID_IDirectDrawSurface, 0x6C14DB81,0xA733,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60 );
- DEFINE_GUID( IID_IDirectDrawSurface2, 0x57805885,0x6eec,0x11cf,0x94,0x41,0xa8,0x23,0x03,0xc1,0x0e,0x27 );
- DEFINE_GUID( IID_IDirectDrawSurface3, 0xDA044E00,0x69B2,0x11D0,0xA1,0xD5,0x00,0xAA,0x00,0xB8,0xDF,0xBB );
- DEFINE_GUID( IID_IDirectDrawSurface4, 0x0B2B8630,0xAD35,0x11D0,0x8E,0xA6,0x00,0x60,0x97,0x97,0xEA,0x5B );
- DEFINE_GUID( IID_IDirectDrawSurface7, 0x06675a80,0x3b9b,0x11d2,0xb9,0x2f,0x00,0x60,0x97,0x97,0xea,0x5b );
- DEFINE_GUID( IID_IDirectDrawPalette, 0x6C14DB84,0xA733,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60 );
- DEFINE_GUID( IID_IDirectDrawClipper, 0x6C14DB85,0xA733,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60 );
- DEFINE_GUID( IID_IDirectDrawColorControl, 0x4B9F0EE0,0x0D7E,0x11D0,0x9B,0x06,0x00,0xA0,0xC9,0x03,0xA3,0xB8 );
- DEFINE_GUID( IID_IDirectDrawGammaControl, 0x69C11C3E,0xB46B,0x11D1,0xAD,0x7A,0x00,0xC0,0x4F,0xC2,0x9B,0x4E );
-
- #endif
-
- /*============================================================================
- *
- * DirectDraw Structures
- *
- * Various structures used to invoke DirectDraw.
- *
- *==========================================================================*/
-
- struct IDirectDraw;
- struct IDirectDrawSurface;
- struct IDirectDrawPalette;
- struct IDirectDrawClipper;
-
- typedef struct IDirectDraw FAR *LPDIRECTDRAW;
- typedef struct IDirectDraw2 FAR *LPDIRECTDRAW2;
- typedef struct IDirectDraw4 FAR *LPDIRECTDRAW4;
- typedef struct IDirectDraw7 FAR *LPDIRECTDRAW7;
- typedef struct IDirectDrawSurface FAR *LPDIRECTDRAWSURFACE;
- typedef struct IDirectDrawSurface2 FAR *LPDIRECTDRAWSURFACE2;
- typedef struct IDirectDrawSurface3 FAR *LPDIRECTDRAWSURFACE3;
- typedef struct IDirectDrawSurface4 FAR *LPDIRECTDRAWSURFACE4;
- typedef struct IDirectDrawSurface7 FAR *LPDIRECTDRAWSURFACE7;
- typedef struct IDirectDrawPalette FAR *LPDIRECTDRAWPALETTE;
- typedef struct IDirectDrawClipper FAR *LPDIRECTDRAWCLIPPER;
- typedef struct IDirectDrawColorControl FAR *LPDIRECTDRAWCOLORCONTROL;
- typedef struct IDirectDrawGammaControl FAR *LPDIRECTDRAWGAMMACONTROL;
-
- typedef struct _DDFXROP FAR *LPDDFXROP;
- typedef struct _DDSURFACEDESC FAR *LPDDSURFACEDESC;
- typedef struct _DDSURFACEDESC2 FAR *LPDDSURFACEDESC2;
- typedef struct _DDCOLORCONTROL FAR *LPDDCOLORCONTROL;
-
- /*
- * API's
- */
- #if (defined (WIN32) || defined( _WIN32 ) ) && !defined( _NO_COM )
- //#if defined( _WIN32 ) && !defined( _NO_ENUM )
- typedef BOOL (FAR PASCAL * LPDDENUMCALLBACKA)(GUID FAR *, LPSTR, LPSTR, LPVOID);
- typedef BOOL (FAR PASCAL * LPDDENUMCALLBACKW)(GUID FAR *, LPWSTR, LPWSTR, LPVOID);
- extern HRESULT WINAPI DirectDrawEnumerateW( LPDDENUMCALLBACKW lpCallback, LPVOID lpContext );
- extern HRESULT WINAPI DirectDrawEnumerateA( LPDDENUMCALLBACKA lpCallback, LPVOID lpContext );
- /*
- * Protect against old SDKs
- */
- #if !defined(HMONITOR_DECLARED) && (WINVER < 0x0500)
- #define HMONITOR_DECLARED
- DECLARE_HANDLE(HMONITOR);
- #endif
- typedef BOOL (FAR PASCAL * LPDDENUMCALLBACKEXA)(GUID FAR *, LPSTR, LPSTR, LPVOID, HMONITOR);
- typedef BOOL (FAR PASCAL * LPDDENUMCALLBACKEXW)(GUID FAR *, LPWSTR, LPWSTR, LPVOID, HMONITOR);
- extern HRESULT WINAPI DirectDrawEnumerateExW( LPDDENUMCALLBACKEXW lpCallback, LPVOID lpContext, DWORD dwFlags);
- extern HRESULT WINAPI DirectDrawEnumerateExA( LPDDENUMCALLBACKEXA lpCallback, LPVOID lpContext, DWORD dwFlags);
- typedef HRESULT (WINAPI * LPDIRECTDRAWENUMERATEEXA)( LPDDENUMCALLBACKEXA lpCallback, LPVOID lpContext, DWORD dwFlags);
- typedef HRESULT (WINAPI * LPDIRECTDRAWENUMERATEEXW)( LPDDENUMCALLBACKEXW lpCallback, LPVOID lpContext, DWORD dwFlags);
-
- #ifdef UNICODE
- typedef LPDDENUMCALLBACKW LPDDENUMCALLBACK;
- #define DirectDrawEnumerate DirectDrawEnumerateW
- typedef LPDDENUMCALLBACKEXW LPDDENUMCALLBACKEX;
- typedef LPDIRECTDRAWENUMERATEEXW LPDIRECTDRAWENUMERATEEX;
- #define DirectDrawEnumerateEx DirectDrawEnumerateExW
- #else
- typedef LPDDENUMCALLBACKA LPDDENUMCALLBACK;
- #define DirectDrawEnumerate DirectDrawEnumerateA
- typedef LPDDENUMCALLBACKEXA LPDDENUMCALLBACKEX;
- typedef LPDIRECTDRAWENUMERATEEXA LPDIRECTDRAWENUMERATEEX;
- #define DirectDrawEnumerateEx DirectDrawEnumerateExA
- #endif
- extern HRESULT WINAPI DirectDrawCreate( GUID FAR *lpGUID, LPDIRECTDRAW FAR *lplpDD, IUnknown FAR *pUnkOuter );
- extern HRESULT WINAPI DirectDrawCreateEx( GUID FAR * lpGuid, LPVOID *lplpDD, REFIID iid,IUnknown FAR *pUnkOuter );
- extern HRESULT WINAPI DirectDrawCreateClipper( DWORD dwFlags, LPDIRECTDRAWCLIPPER FAR *lplpDDClipper, IUnknown FAR *pUnkOuter );
- #endif
- /*
- * Flags for DirectDrawEnumerateEx
- * DirectDrawEnumerateEx supercedes DirectDrawEnumerate. You must use GetProcAddress to
- * obtain a function pointer (of type LPDIRECTDRAWENUMERATEEX) to DirectDrawEnumerateEx.
- * By default, only the primary display device is enumerated.
- * DirectDrawEnumerate is equivalent to DirectDrawEnumerate(,,DDENUM_NONDISPLAYDEVICES)
- */
-
- /*
- * This flag causes enumeration of any GDI display devices which are part of
- * the Windows Desktop
- */
- #define DDENUM_ATTACHEDSECONDARYDEVICES 0x00000001L
-
- /*
- * This flag causes enumeration of any GDI display devices which are not
- * part of the Windows Desktop
- */
- #define DDENUM_DETACHEDSECONDARYDEVICES 0x00000002L
-
- /*
- * This flag causes enumeration of non-display devices
- */
- #define DDENUM_NONDISPLAYDEVICES 0x00000004L
-
-
- #define REGSTR_KEY_DDHW_DESCRIPTION "Description"
- #define REGSTR_KEY_DDHW_DRIVERNAME "DriverName"
- #define REGSTR_PATH_DDHW "Hardware\\DirectDrawDrivers"
-
- #define DDCREATE_HARDWAREONLY 0x00000001l
- #define DDCREATE_EMULATIONONLY 0x00000002l
-
- #if defined(WINNT) || !defined(WIN32)
- typedef long HRESULT;
- #endif
-
- //#ifndef WINNT
- typedef HRESULT (FAR PASCAL * LPDDENUMMODESCALLBACK)(LPDDSURFACEDESC, LPVOID);
- typedef HRESULT (FAR PASCAL * LPDDENUMMODESCALLBACK2)(LPDDSURFACEDESC2, LPVOID);
- typedef HRESULT (FAR PASCAL * LPDDENUMSURFACESCALLBACK)(LPDIRECTDRAWSURFACE, LPDDSURFACEDESC, LPVOID);
- typedef HRESULT (FAR PASCAL * LPDDENUMSURFACESCALLBACK2)(LPDIRECTDRAWSURFACE4, LPDDSURFACEDESC2, LPVOID);
- typedef HRESULT (FAR PASCAL * LPDDENUMSURFACESCALLBACK7)(LPDIRECTDRAWSURFACE7, LPDDSURFACEDESC2, LPVOID);
- //#endif
-
- /*
- * Generic pixel format with 8-bit RGB and alpha components
- */
- typedef struct _DDARGB
- {
- BYTE blue;
- BYTE green;
- BYTE red;
- BYTE alpha;
- } DDARGB;
-
- typedef DDARGB FAR *LPDDARGB;
-
- /*
- * This version of the structure remains for backwards source compatibility.
- * The DDARGB structure is the one that should be used for all DirectDraw APIs.
- */
- typedef struct _DDRGBA
- {
- BYTE red;
- BYTE green;
- BYTE blue;
- BYTE alpha;
- } DDRGBA;
-
- typedef DDRGBA FAR *LPDDRGBA;
-
-
- /*
- * DDCOLORKEY
- */
- typedef struct _DDCOLORKEY
- {
- DWORD dwColorSpaceLowValue; // low boundary of color space that is to
- // be treated as Color Key, inclusive
- DWORD dwColorSpaceHighValue; // high boundary of color space that is
- // to be treated as Color Key, inclusive
- } DDCOLORKEY;
-
- typedef DDCOLORKEY FAR* LPDDCOLORKEY;
-
- /*
- * DDBLTFX
- * Used to pass override information to the DIRECTDRAWSURFACE callback Blt.
- */
- typedef struct _DDBLTFX
- {
- DWORD dwSize; // size of structure
- DWORD dwDDFX; // FX operations
- DWORD dwROP; // Win32 raster operations
- DWORD dwDDROP; // Raster operations new for DirectDraw
- DWORD dwRotationAngle; // Rotation angle for blt
- DWORD dwZBufferOpCode; // ZBuffer compares
- DWORD dwZBufferLow; // Low limit of Z buffer
- DWORD dwZBufferHigh; // High limit of Z buffer
- DWORD dwZBufferBaseDest; // Destination base value
- DWORD dwZDestConstBitDepth; // Bit depth used to specify Z constant for destination
- union
- {
- DWORD dwZDestConst; // Constant to use as Z buffer for dest
- LPDIRECTDRAWSURFACE lpDDSZBufferDest; // Surface to use as Z buffer for dest
- } DUMMYUNIONNAMEN(1);
- DWORD dwZSrcConstBitDepth; // Bit depth used to specify Z constant for source
- union
- {
- DWORD dwZSrcConst; // Constant to use as Z buffer for src
- LPDIRECTDRAWSURFACE lpDDSZBufferSrc; // Surface to use as Z buffer for src
- } DUMMYUNIONNAMEN(2);
- DWORD dwAlphaEdgeBlendBitDepth; // Bit depth used to specify constant for alpha edge blend
- DWORD dwAlphaEdgeBlend; // Alpha for edge blending
- DWORD dwReserved;
- DWORD dwAlphaDestConstBitDepth; // Bit depth used to specify alpha constant for destination
- union
- {
- DWORD dwAlphaDestConst; // Constant to use as Alpha Channel
- LPDIRECTDRAWSURFACE lpDDSAlphaDest; // Surface to use as Alpha Channel
- } DUMMYUNIONNAMEN(3);
- DWORD dwAlphaSrcConstBitDepth; // Bit depth used to specify alpha constant for source
- union
- {
- DWORD dwAlphaSrcConst; // Constant to use as Alpha Channel
- LPDIRECTDRAWSURFACE lpDDSAlphaSrc; // Surface to use as Alpha Channel
- } DUMMYUNIONNAMEN(4);
- union
- {
- DWORD dwFillColor; // color in RGB or Palettized
- DWORD dwFillDepth; // depth value for z-buffer
- DWORD dwFillPixel; // pixel value for RGBA or RGBZ
- LPDIRECTDRAWSURFACE lpDDSPattern; // Surface to use as pattern
- } DUMMYUNIONNAMEN(5);
- DDCOLORKEY ddckDestColorkey; // DestColorkey override
- DDCOLORKEY ddckSrcColorkey; // SrcColorkey override
- } DDBLTFX;
-
- typedef DDBLTFX FAR* LPDDBLTFX;
-
-
-
- /*
- * DDSCAPS
- */
- typedef struct _DDSCAPS
- {
- DWORD dwCaps; // capabilities of surface wanted
- } DDSCAPS;
-
- typedef DDSCAPS FAR* LPDDSCAPS;
-
-
- /*
- * DDOSCAPS
- */
- typedef struct _DDOSCAPS
- {
- DWORD dwCaps; // capabilities of surface wanted
- } DDOSCAPS;
-
- typedef DDOSCAPS FAR* LPDDOSCAPS;
-
- /*
- * This structure is used internally by DirectDraw.
- */
- typedef struct _DDSCAPSEX
- {
- DWORD dwCaps2;
- DWORD dwCaps3;
- union
- {
- DWORD dwCaps4;
- DWORD dwVolumeDepth;
- } DUMMYUNIONNAMEN(1);
- } DDSCAPSEX, FAR * LPDDSCAPSEX;
-
- /*
- * DDSCAPS2
- */
- typedef struct _DDSCAPS2
- {
- DWORD dwCaps; // capabilities of surface wanted
- DWORD dwCaps2;
- DWORD dwCaps3;
- union
- {
- DWORD dwCaps4;
- DWORD dwVolumeDepth;
- } DUMMYUNIONNAMEN(1);
- } DDSCAPS2;
-
- typedef DDSCAPS2 FAR* LPDDSCAPS2;
-
- /*
- * DDCAPS
- */
- #define DD_ROP_SPACE (256/32) // space required to store ROP array
- /*
- * NOTE: Our choosen structure number scheme is to append a single digit to
- * the end of the structure giving the version that structure is associated
- * with.
- */
-
- /*
- * This structure represents the DDCAPS structure released in DirectDraw 1.0. It is used internally
- * by DirectDraw to interpret caps passed into ddraw by drivers written prior to the release of DirectDraw 2.0.
- * New applications should use the DDCAPS structure defined below.
- */
- typedef struct _DDCAPS_DX1
- {
- DWORD dwSize; // size of the DDDRIVERCAPS structure
- DWORD dwCaps; // driver specific capabilities
- DWORD dwCaps2; // more driver specific capabilites
- DWORD dwCKeyCaps; // color key capabilities of the surface
- DWORD dwFXCaps; // driver specific stretching and effects capabilites
- DWORD dwFXAlphaCaps; // alpha driver specific capabilities
- DWORD dwPalCaps; // palette capabilities
- DWORD dwSVCaps; // stereo vision capabilities
- DWORD dwAlphaBltConstBitDepths; // DDBD_2,4,8
- DWORD dwAlphaBltPixelBitDepths; // DDBD_1,2,4,8
- DWORD dwAlphaBltSurfaceBitDepths; // DDBD_1,2,4,8
- DWORD dwAlphaOverlayConstBitDepths; // DDBD_2,4,8
- DWORD dwAlphaOverlayPixelBitDepths; // DDBD_1,2,4,8
- DWORD dwAlphaOverlaySurfaceBitDepths; // DDBD_1,2,4,8
- DWORD dwZBufferBitDepths; // DDBD_8,16,24,32
- DWORD dwVidMemTotal; // total amount of video memory
- DWORD dwVidMemFree; // amount of free video memory
- DWORD dwMaxVisibleOverlays; // maximum number of visible overlays
- DWORD dwCurrVisibleOverlays; // current number of visible overlays
- DWORD dwNumFourCCCodes; // number of four cc codes
- DWORD dwAlignBoundarySrc; // source rectangle alignment
- DWORD dwAlignSizeSrc; // source rectangle byte size
- DWORD dwAlignBoundaryDest; // dest rectangle alignment
- DWORD dwAlignSizeDest; // dest rectangle byte size
- DWORD dwAlignStrideAlign; // stride alignment
- DWORD dwRops[DD_ROP_SPACE]; // ROPS supported
- DDSCAPS ddsCaps; // DDSCAPS structure has all the general capabilities
- DWORD dwMinOverlayStretch; // minimum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
- DWORD dwMaxOverlayStretch; // maximum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
- DWORD dwMinLiveVideoStretch; // OBSOLETE! This field remains for compatability reasons only
- DWORD dwMaxLiveVideoStretch; // OBSOLETE! This field remains for compatability reasons only
- DWORD dwMinHwCodecStretch; // OBSOLETE! This field remains for compatability reasons only
- DWORD dwMaxHwCodecStretch; // OBSOLETE! This field remains for compatability reasons only
- DWORD dwReserved1; // reserved
- DWORD dwReserved2; // reserved
- DWORD dwReserved3; // reserved
- } DDCAPS_DX1;
-
- typedef DDCAPS_DX1 FAR* LPDDCAPS_DX1;
-
- /*
- * This structure is the DDCAPS structure as it was in version 2 and 3 of Direct X.
- * It is present for back compatability.
- */
- typedef struct _DDCAPS_DX3
- {
- DWORD dwSize; // size of the DDDRIVERCAPS structure
- DWORD dwCaps; // driver specific capabilities
- DWORD dwCaps2; // more driver specific capabilites
- DWORD dwCKeyCaps; // color key capabilities of the surface
- DWORD dwFXCaps; // driver specific stretching and effects capabilites
- DWORD dwFXAlphaCaps; // alpha driver specific capabilities
- DWORD dwPalCaps; // palette capabilities
- DWORD dwSVCaps; // stereo vision capabilities
- DWORD dwAlphaBltConstBitDepths; // DDBD_2,4,8
- DWORD dwAlphaBltPixelBitDepths; // DDBD_1,2,4,8
- DWORD dwAlphaBltSurfaceBitDepths; // DDBD_1,2,4,8
- DWORD dwAlphaOverlayConstBitDepths; // DDBD_2,4,8
- DWORD dwAlphaOverlayPixelBitDepths; // DDBD_1,2,4,8
- DWORD dwAlphaOverlaySurfaceBitDepths; // DDBD_1,2,4,8
- DWORD dwZBufferBitDepths; // DDBD_8,16,24,32
- DWORD dwVidMemTotal; // total amount of video memory
- DWORD dwVidMemFree; // amount of free video memory
- DWORD dwMaxVisibleOverlays; // maximum number of visible overlays
- DWORD dwCurrVisibleOverlays; // current number of visible overlays
- DWORD dwNumFourCCCodes; // number of four cc codes
- DWORD dwAlignBoundarySrc; // source rectangle alignment
- DWORD dwAlignSizeSrc; // source rectangle byte size
- DWORD dwAlignBoundaryDest; // dest rectangle alignment
- DWORD dwAlignSizeDest; // dest rectangle byte size
- DWORD dwAlignStrideAlign; // stride alignment
- DWORD dwRops[DD_ROP_SPACE]; // ROPS supported
- DDSCAPS ddsCaps; // DDSCAPS structure has all the general capabilities
- DWORD dwMinOverlayStretch; // minimum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
- DWORD dwMaxOverlayStretch; // maximum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
- DWORD dwMinLiveVideoStretch; // minimum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
- DWORD dwMaxLiveVideoStretch; // maximum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
- DWORD dwMinHwCodecStretch; // minimum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
- DWORD dwMaxHwCodecStretch; // maximum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
- DWORD dwReserved1; // reserved
- DWORD dwReserved2; // reserved
- DWORD dwReserved3; // reserved
- DWORD dwSVBCaps; // driver specific capabilities for System->Vmem blts
- DWORD dwSVBCKeyCaps; // driver color key capabilities for System->Vmem blts
- DWORD dwSVBFXCaps; // driver FX capabilities for System->Vmem blts
- DWORD dwSVBRops[DD_ROP_SPACE];// ROPS supported for System->Vmem blts
- DWORD dwVSBCaps; // driver specific capabilities for Vmem->System blts
- DWORD dwVSBCKeyCaps; // driver color key capabilities for Vmem->System blts
- DWORD dwVSBFXCaps; // driver FX capabilities for Vmem->System blts
- DWORD dwVSBRops[DD_ROP_SPACE];// ROPS supported for Vmem->System blts
- DWORD dwSSBCaps; // driver specific capabilities for System->System blts
- DWORD dwSSBCKeyCaps; // driver color key capabilities for System->System blts
- DWORD dwSSBFXCaps; // driver FX capabilities for System->System blts
- DWORD dwSSBRops[DD_ROP_SPACE];// ROPS supported for System->System blts
- DWORD dwReserved4; // reserved
- DWORD dwReserved5; // reserved
- DWORD dwReserved6; // reserved
- } DDCAPS_DX3;
- typedef DDCAPS_DX3 FAR* LPDDCAPS_DX3;
-
- /*
- * This structure is the DDCAPS structure as it was in version 5 of Direct X.
- * It is present for back compatability.
- */
- typedef struct _DDCAPS_DX5
- {
- /* 0*/ DWORD dwSize; // size of the DDDRIVERCAPS structure
- /* 4*/ DWORD dwCaps; // driver specific capabilities
- /* 8*/ DWORD dwCaps2; // more driver specific capabilites
- /* c*/ DWORD dwCKeyCaps; // color key capabilities of the surface
- /* 10*/ DWORD dwFXCaps; // driver specific stretching and effects capabilites
- /* 14*/ DWORD dwFXAlphaCaps; // alpha driver specific capabilities
- /* 18*/ DWORD dwPalCaps; // palette capabilities
- /* 1c*/ DWORD dwSVCaps; // stereo vision capabilities
- /* 20*/ DWORD dwAlphaBltConstBitDepths; // DDBD_2,4,8
- /* 24*/ DWORD dwAlphaBltPixelBitDepths; // DDBD_1,2,4,8
- /* 28*/ DWORD dwAlphaBltSurfaceBitDepths; // DDBD_1,2,4,8
- /* 2c*/ DWORD dwAlphaOverlayConstBitDepths; // DDBD_2,4,8
- /* 30*/ DWORD dwAlphaOverlayPixelBitDepths; // DDBD_1,2,4,8
- /* 34*/ DWORD dwAlphaOverlaySurfaceBitDepths; // DDBD_1,2,4,8
- /* 38*/ DWORD dwZBufferBitDepths; // DDBD_8,16,24,32
- /* 3c*/ DWORD dwVidMemTotal; // total amount of video memory
- /* 40*/ DWORD dwVidMemFree; // amount of free video memory
- /* 44*/ DWORD dwMaxVisibleOverlays; // maximum number of visible overlays
- /* 48*/ DWORD dwCurrVisibleOverlays; // current number of visible overlays
- /* 4c*/ DWORD dwNumFourCCCodes; // number of four cc codes
- /* 50*/ DWORD dwAlignBoundarySrc; // source rectangle alignment
- /* 54*/ DWORD dwAlignSizeSrc; // source rectangle byte size
- /* 58*/ DWORD dwAlignBoundaryDest; // dest rectangle alignment
- /* 5c*/ DWORD dwAlignSizeDest; // dest rectangle byte size
- /* 60*/ DWORD dwAlignStrideAlign; // stride alignment
- /* 64*/ DWORD dwRops[DD_ROP_SPACE]; // ROPS supported
- /* 84*/ DDSCAPS ddsCaps; // DDSCAPS structure has all the general capabilities
- /* 88*/ DWORD dwMinOverlayStretch; // minimum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
- /* 8c*/ DWORD dwMaxOverlayStretch; // maximum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
- /* 90*/ DWORD dwMinLiveVideoStretch; // minimum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
- /* 94*/ DWORD dwMaxLiveVideoStretch; // maximum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
- /* 98*/ DWORD dwMinHwCodecStretch; // minimum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
- /* 9c*/ DWORD dwMaxHwCodecStretch; // maximum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
- /* a0*/ DWORD dwReserved1; // reserved
- /* a4*/ DWORD dwReserved2; // reserved
- /* a8*/ DWORD dwReserved3; // reserved
- /* ac*/ DWORD dwSVBCaps; // driver specific capabilities for System->Vmem blts
- /* b0*/ DWORD dwSVBCKeyCaps; // driver color key capabilities for System->Vmem blts
- /* b4*/ DWORD dwSVBFXCaps; // driver FX capabilities for System->Vmem blts
- /* b8*/ DWORD dwSVBRops[DD_ROP_SPACE];// ROPS supported for System->Vmem blts
- /* d8*/ DWORD dwVSBCaps; // driver specific capabilities for Vmem->System blts
- /* dc*/ DWORD dwVSBCKeyCaps; // driver color key capabilities for Vmem->System blts
- /* e0*/ DWORD dwVSBFXCaps; // driver FX capabilities for Vmem->System blts
- /* e4*/ DWORD dwVSBRops[DD_ROP_SPACE];// ROPS supported for Vmem->System blts
- /*104*/ DWORD dwSSBCaps; // driver specific capabilities for System->System blts
- /*108*/ DWORD dwSSBCKeyCaps; // driver color key capabilities for System->System blts
- /*10c*/ DWORD dwSSBFXCaps; // driver FX capabilities for System->System blts
- /*110*/ DWORD dwSSBRops[DD_ROP_SPACE];// ROPS supported for System->System blts
- // Members added for DX5:
- /*130*/ DWORD dwMaxVideoPorts; // maximum number of usable video ports
- /*134*/ DWORD dwCurrVideoPorts; // current number of video ports used
- /*138*/ DWORD dwSVBCaps2; // more driver specific capabilities for System->Vmem blts
- /*13c*/ DWORD dwNLVBCaps; // driver specific capabilities for non-local->local vidmem blts
- /*140*/ DWORD dwNLVBCaps2; // more driver specific capabilities non-local->local vidmem blts
- /*144*/ DWORD dwNLVBCKeyCaps; // driver color key capabilities for non-local->local vidmem blts
- /*148*/ DWORD dwNLVBFXCaps; // driver FX capabilities for non-local->local blts
- /*14c*/ DWORD dwNLVBRops[DD_ROP_SPACE]; // ROPS supported for non-local->local blts
- } DDCAPS_DX5;
- typedef DDCAPS_DX5 FAR* LPDDCAPS_DX5;
-
- typedef struct _DDCAPS_DX6
- {
- /* 0*/ DWORD dwSize; // size of the DDDRIVERCAPS structure
- /* 4*/ DWORD dwCaps; // driver specific capabilities
- /* 8*/ DWORD dwCaps2; // more driver specific capabilites
- /* c*/ DWORD dwCKeyCaps; // color key capabilities of the surface
- /* 10*/ DWORD dwFXCaps; // driver specific stretching and effects capabilites
- /* 14*/ DWORD dwFXAlphaCaps; // alpha caps
- /* 18*/ DWORD dwPalCaps; // palette capabilities
- /* 1c*/ DWORD dwSVCaps; // stereo vision capabilities
- /* 20*/ DWORD dwAlphaBltConstBitDepths; // DDBD_2,4,8
- /* 24*/ DWORD dwAlphaBltPixelBitDepths; // DDBD_1,2,4,8
- /* 28*/ DWORD dwAlphaBltSurfaceBitDepths; // DDBD_1,2,4,8
- /* 2c*/ DWORD dwAlphaOverlayConstBitDepths; // DDBD_2,4,8
- /* 30*/ DWORD dwAlphaOverlayPixelBitDepths; // DDBD_1,2,4,8
- /* 34*/ DWORD dwAlphaOverlaySurfaceBitDepths; // DDBD_1,2,4,8
- /* 38*/ DWORD dwZBufferBitDepths; // DDBD_8,16,24,32
- /* 3c*/ DWORD dwVidMemTotal; // total amount of video memory
- /* 40*/ DWORD dwVidMemFree; // amount of free video memory
- /* 44*/ DWORD dwMaxVisibleOverlays; // maximum number of visible overlays
- /* 48*/ DWORD dwCurrVisibleOverlays; // current number of visible overlays
- /* 4c*/ DWORD dwNumFourCCCodes; // number of four cc codes
- /* 50*/ DWORD dwAlignBoundarySrc; // source rectangle alignment
- /* 54*/ DWORD dwAlignSizeSrc; // source rectangle byte size
- /* 58*/ DWORD dwAlignBoundaryDest; // dest rectangle alignment
- /* 5c*/ DWORD dwAlignSizeDest; // dest rectangle byte size
- /* 60*/ DWORD dwAlignStrideAlign; // stride alignment
- /* 64*/ DWORD dwRops[DD_ROP_SPACE]; // ROPS supported
- /* 84*/ DDSCAPS ddsOldCaps; // Was DDSCAPS ddsCaps. ddsCaps is of type DDSCAPS2 for DX6
- /* 88*/ DWORD dwMinOverlayStretch; // minimum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
- /* 8c*/ DWORD dwMaxOverlayStretch; // maximum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
- /* 90*/ DWORD dwMinLiveVideoStretch; // minimum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
- /* 94*/ DWORD dwMaxLiveVideoStretch; // maximum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
- /* 98*/ DWORD dwMinHwCodecStretch; // minimum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
- /* 9c*/ DWORD dwMaxHwCodecStretch; // maximum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
- /* a0*/ DWORD dwReserved1; // reserved
- /* a4*/ DWORD dwReserved2; // reserved
- /* a8*/ DWORD dwReserved3; // reserved
- /* ac*/ DWORD dwSVBCaps; // driver specific capabilities for System->Vmem blts
- /* b0*/ DWORD dwSVBCKeyCaps; // driver color key capabilities for System->Vmem blts
- /* b4*/ DWORD dwSVBFXCaps; // driver FX capabilities for System->Vmem blts
- /* b8*/ DWORD dwSVBRops[DD_ROP_SPACE];// ROPS supported for System->Vmem blts
- /* d8*/ DWORD dwVSBCaps; // driver specific capabilities for Vmem->System blts
- /* dc*/ DWORD dwVSBCKeyCaps; // driver color key capabilities for Vmem->System blts
- /* e0*/ DWORD dwVSBFXCaps; // driver FX capabilities for Vmem->System blts
- /* e4*/ DWORD dwVSBRops[DD_ROP_SPACE];// ROPS supported for Vmem->System blts
- /*104*/ DWORD dwSSBCaps; // driver specific capabilities for System->System blts
- /*108*/ DWORD dwSSBCKeyCaps; // driver color key capabilities for System->System blts
- /*10c*/ DWORD dwSSBFXCaps; // driver FX capabilities for System->System blts
- /*110*/ DWORD dwSSBRops[DD_ROP_SPACE];// ROPS supported for System->System blts
- /*130*/ DWORD dwMaxVideoPorts; // maximum number of usable video ports
- /*134*/ DWORD dwCurrVideoPorts; // current number of video ports used
- /*138*/ DWORD dwSVBCaps2; // more driver specific capabilities for System->Vmem blts
- /*13c*/ DWORD dwNLVBCaps; // driver specific capabilities for non-local->local vidmem blts
- /*140*/ DWORD dwNLVBCaps2; // more driver specific capabilities non-local->local vidmem blts
- /*144*/ DWORD dwNLVBCKeyCaps; // driver color key capabilities for non-local->local vidmem blts
- /*148*/ DWORD dwNLVBFXCaps; // driver FX capabilities for non-local->local blts
- /*14c*/ DWORD dwNLVBRops[DD_ROP_SPACE]; // ROPS supported for non-local->local blts
- // Members added for DX6 release
- /*16c*/ DDSCAPS2 ddsCaps; // Surface Caps
- } DDCAPS_DX6;
- typedef DDCAPS_DX6 FAR* LPDDCAPS_DX6;
-
- typedef struct _DDCAPS_DX7
- {
- /* 0*/ DWORD dwSize; // size of the DDDRIVERCAPS structure
- /* 4*/ DWORD dwCaps; // driver specific capabilities
- /* 8*/ DWORD dwCaps2; // more driver specific capabilites
- /* c*/ DWORD dwCKeyCaps; // color key capabilities of the surface
- /* 10*/ DWORD dwFXCaps; // driver specific stretching and effects capabilites
- /* 14*/ DWORD dwFXAlphaCaps; // alpha driver specific capabilities
- /* 18*/ DWORD dwPalCaps; // palette capabilities
- /* 1c*/ DWORD dwSVCaps; // stereo vision capabilities
- /* 20*/ DWORD dwAlphaBltConstBitDepths; // DDBD_2,4,8
- /* 24*/ DWORD dwAlphaBltPixelBitDepths; // DDBD_1,2,4,8
- /* 28*/ DWORD dwAlphaBltSurfaceBitDepths; // DDBD_1,2,4,8
- /* 2c*/ DWORD dwAlphaOverlayConstBitDepths; // DDBD_2,4,8
- /* 30*/ DWORD dwAlphaOverlayPixelBitDepths; // DDBD_1,2,4,8
- /* 34*/ DWORD dwAlphaOverlaySurfaceBitDepths; // DDBD_1,2,4,8
- /* 38*/ DWORD dwZBufferBitDepths; // DDBD_8,16,24,32
- /* 3c*/ DWORD dwVidMemTotal; // total amount of video memory
- /* 40*/ DWORD dwVidMemFree; // amount of free video memory
- /* 44*/ DWORD dwMaxVisibleOverlays; // maximum number of visible overlays
- /* 48*/ DWORD dwCurrVisibleOverlays; // current number of visible overlays
- /* 4c*/ DWORD dwNumFourCCCodes; // number of four cc codes
- /* 50*/ DWORD dwAlignBoundarySrc; // source rectangle alignment
- /* 54*/ DWORD dwAlignSizeSrc; // source rectangle byte size
- /* 58*/ DWORD dwAlignBoundaryDest; // dest rectangle alignment
- /* 5c*/ DWORD dwAlignSizeDest; // dest rectangle byte size
- /* 60*/ DWORD dwAlignStrideAlign; // stride alignment
- /* 64*/ DWORD dwRops[DD_ROP_SPACE]; // ROPS supported
- /* 84*/ DDSCAPS ddsOldCaps; // Was DDSCAPS ddsCaps. ddsCaps is of type DDSCAPS2 for DX6
- /* 88*/ DWORD dwMinOverlayStretch; // minimum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
- /* 8c*/ DWORD dwMaxOverlayStretch; // maximum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
- /* 90*/ DWORD dwMinLiveVideoStretch; // minimum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
- /* 94*/ DWORD dwMaxLiveVideoStretch; // maximum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
- /* 98*/ DWORD dwMinHwCodecStretch; // minimum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
- /* 9c*/ DWORD dwMaxHwCodecStretch; // maximum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
- /* a0*/ DWORD dwReserved1; // reserved
- /* a4*/ DWORD dwReserved2; // reserved
- /* a8*/ DWORD dwReserved3; // reserved
- /* ac*/ DWORD dwSVBCaps; // driver specific capabilities for System->Vmem blts
- /* b0*/ DWORD dwSVBCKeyCaps; // driver color key capabilities for System->Vmem blts
- /* b4*/ DWORD dwSVBFXCaps; // driver FX capabilities for System->Vmem blts
- /* b8*/ DWORD dwSVBRops[DD_ROP_SPACE];// ROPS supported for System->Vmem blts
- /* d8*/ DWORD dwVSBCaps; // driver specific capabilities for Vmem->System blts
- /* dc*/ DWORD dwVSBCKeyCaps; // driver color key capabilities for Vmem->System blts
- /* e0*/ DWORD dwVSBFXCaps; // driver FX capabilities for Vmem->System blts
- /* e4*/ DWORD dwVSBRops[DD_ROP_SPACE];// ROPS supported for Vmem->System blts
- /*104*/ DWORD dwSSBCaps; // driver specific capabilities for System->System blts
- /*108*/ DWORD dwSSBCKeyCaps; // driver color key capabilities for System->System blts
- /*10c*/ DWORD dwSSBFXCaps; // driver FX capabilities for System->System blts
- /*110*/ DWORD dwSSBRops[DD_ROP_SPACE];// ROPS supported for System->System blts
- /*130*/ DWORD dwMaxVideoPorts; // maximum number of usable video ports
- /*134*/ DWORD dwCurrVideoPorts; // current number of video ports used
- /*138*/ DWORD dwSVBCaps2; // more driver specific capabilities for System->Vmem blts
- /*13c*/ DWORD dwNLVBCaps; // driver specific capabilities for non-local->local vidmem blts
- /*140*/ DWORD dwNLVBCaps2; // more driver specific capabilities non-local->local vidmem blts
- /*144*/ DWORD dwNLVBCKeyCaps; // driver color key capabilities for non-local->local vidmem blts
- /*148*/ DWORD dwNLVBFXCaps; // driver FX capabilities for non-local->local blts
- /*14c*/ DWORD dwNLVBRops[DD_ROP_SPACE]; // ROPS supported for non-local->local blts
- // Members added for DX6 release
- /*16c*/ DDSCAPS2 ddsCaps; // Surface Caps
- } DDCAPS_DX7;
- typedef DDCAPS_DX7 FAR* LPDDCAPS_DX7;
-
-
- #if DIRECTDRAW_VERSION <= 0x300
- typedef DDCAPS_DX3 DDCAPS;
- #elif DIRECTDRAW_VERSION <= 0x500
- typedef DDCAPS_DX5 DDCAPS;
- #elif DIRECTDRAW_VERSION <= 0x600
- typedef DDCAPS_DX6 DDCAPS;
- #else
- typedef DDCAPS_DX7 DDCAPS;
- #endif
-
- typedef DDCAPS FAR* LPDDCAPS;
-
-
-
- /*
- * DDPIXELFORMAT
- */
- typedef struct _DDPIXELFORMAT
- {
- DWORD dwSize; // size of structure
- DWORD dwFlags; // pixel format flags
- DWORD dwFourCC; // (FOURCC code)
- union
- {
- DWORD dwRGBBitCount; // how many bits per pixel
- DWORD dwYUVBitCount; // how many bits per pixel
- DWORD dwZBufferBitDepth; // how many total bits/pixel in z buffer (including any stencil bits)
- DWORD dwAlphaBitDepth; // how many bits for alpha channels
- DWORD dwLuminanceBitCount; // how many bits per pixel
- DWORD dwBumpBitCount; // how many bits per "buxel", total
- DWORD dwPrivateFormatBitCount;// Bits per pixel of private driver formats. Only valid in texture
- // format list and if DDPF_D3DFORMAT is set
- } DUMMYUNIONNAMEN(1);
- union
- {
- DWORD dwRBitMask; // mask for red bit
- DWORD dwYBitMask; // mask for Y bits
- DWORD dwStencilBitDepth; // how many stencil bits (note: dwZBufferBitDepth-dwStencilBitDepth is total Z-only bits)
- DWORD dwLuminanceBitMask; // mask for luminance bits
- DWORD dwBumpDuBitMask; // mask for bump map U delta bits
- DWORD dwOperations; // DDPF_D3DFORMAT Operations
- } DUMMYUNIONNAMEN(2);
- union
- {
- DWORD dwGBitMask; // mask for green bits
- DWORD dwUBitMask; // mask for U bits
- DWORD dwZBitMask; // mask for Z bits
- DWORD dwBumpDvBitMask; // mask for bump map V delta bits
- struct
- {
- WORD wFlipMSTypes; // Multisample methods supported via flip for this D3DFORMAT
- WORD wBltMSTypes; // Multisample methods supported via blt for this D3DFORMAT
- } MultiSampleCaps;
-
- } DUMMYUNIONNAMEN(3);
- union
- {
- DWORD dwBBitMask; // mask for blue bits
- DWORD dwVBitMask; // mask for V bits
- DWORD dwStencilBitMask; // mask for stencil bits
- DWORD dwBumpLuminanceBitMask; // mask for luminance in bump map
- } DUMMYUNIONNAMEN(4);
- union
- {
- DWORD dwRGBAlphaBitMask; // mask for alpha channel
- DWORD dwYUVAlphaBitMask; // mask for alpha channel
- DWORD dwLuminanceAlphaBitMask;// mask for alpha channel
- DWORD dwRGBZBitMask; // mask for Z channel
- DWORD dwYUVZBitMask; // mask for Z channel
- } DUMMYUNIONNAMEN(5);
- } DDPIXELFORMAT;
-
- typedef DDPIXELFORMAT FAR* LPDDPIXELFORMAT;
-
- /*
- * DDOVERLAYFX
- */
- typedef struct _DDOVERLAYFX
- {
- DWORD dwSize; // size of structure
- DWORD dwAlphaEdgeBlendBitDepth; // Bit depth used to specify constant for alpha edge blend
- DWORD dwAlphaEdgeBlend; // Constant to use as alpha for edge blend
- DWORD dwReserved;
- DWORD dwAlphaDestConstBitDepth; // Bit depth used to specify alpha constant for destination
- union
- {
- DWORD dwAlphaDestConst; // Constant to use as alpha channel for dest
- LPDIRECTDRAWSURFACE lpDDSAlphaDest; // Surface to use as alpha channel for dest
- } DUMMYUNIONNAMEN(1);
- DWORD dwAlphaSrcConstBitDepth; // Bit depth used to specify alpha constant for source
- union
- {
- DWORD dwAlphaSrcConst; // Constant to use as alpha channel for src
- LPDIRECTDRAWSURFACE lpDDSAlphaSrc; // Surface to use as alpha channel for src
- } DUMMYUNIONNAMEN(2);
- DDCOLORKEY dckDestColorkey; // DestColorkey override
- DDCOLORKEY dckSrcColorkey; // DestColorkey override
- DWORD dwDDFX; // Overlay FX
- DWORD dwFlags; // flags
- } DDOVERLAYFX;
-
- typedef DDOVERLAYFX FAR *LPDDOVERLAYFX;
-
-
- /*
- * DDBLTBATCH: BltBatch entry structure
- */
- typedef struct _DDBLTBATCH
- {
- LPRECT lprDest;
- LPDIRECTDRAWSURFACE lpDDSSrc;
- LPRECT lprSrc;
- DWORD dwFlags;
- LPDDBLTFX lpDDBltFx;
- } DDBLTBATCH;
-
- typedef DDBLTBATCH FAR * LPDDBLTBATCH;
-
-
- /*
- * DDGAMMARAMP
- */
- typedef struct _DDGAMMARAMP
- {
- WORD red[256];
- WORD green[256];
- WORD blue[256];
- } DDGAMMARAMP;
- typedef DDGAMMARAMP FAR * LPDDGAMMARAMP;
-
- /*
- * This is the structure within which DirectDraw returns data about the current graphics driver and chipset
- */
-
- #define MAX_DDDEVICEID_STRING 512
-
- typedef struct tagDDDEVICEIDENTIFIER
- {
- /*
- * These elements are for presentation to the user only. They should not be used to identify particular
- * drivers, since this is unreliable and many different strings may be associated with the same
- * device, and the same driver from different vendors.
- */
- char szDriver[MAX_DDDEVICEID_STRING];
- char szDescription[MAX_DDDEVICEID_STRING];
-
- /*
- * This element is the version of the DirectDraw/3D driver. It is legal to do <, > comparisons
- * on the whole 64 bits. Caution should be exercised if you use this element to identify problematic
- * drivers. It is recommended that guidDeviceIdentifier is used for this purpose.
- *
- * This version has the form:
- * wProduct = HIWORD(liDriverVersion.HighPart)
- * wVersion = LOWORD(liDriverVersion.HighPart)
- * wSubVersion = HIWORD(liDriverVersion.LowPart)
- * wBuild = LOWORD(liDriverVersion.LowPart)
- */
- #ifdef _WIN32
- LARGE_INTEGER liDriverVersion; /* Defined for applications and other 32 bit components */
- #else
- DWORD dwDriverVersionLowPart; /* Defined for 16 bit driver components */
- DWORD dwDriverVersionHighPart;
- #endif
-
-
- /*
- * These elements can be used to identify particular chipsets. Use with extreme caution.
- * dwVendorId Identifies the manufacturer. May be zero if unknown.
- * dwDeviceId Identifies the type of chipset. May be zero if unknown.
- * dwSubSysId Identifies the subsystem, typically this means the particular board. May be zero if unknown.
- * dwRevision Identifies the revision level of the chipset. May be zero if unknown.
- */
- DWORD dwVendorId;
- DWORD dwDeviceId;
- DWORD dwSubSysId;
- DWORD dwRevision;
-
- /*
- * This element can be used to check changes in driver/chipset. This GUID is a unique identifier for the
- * driver/chipset pair. Use this element if you wish to track changes to the driver/chipset in order to
- * reprofile the graphics subsystem.
- * This element can also be used to identify particular problematic drivers.
- */
- GUID guidDeviceIdentifier;
- } DDDEVICEIDENTIFIER, * LPDDDEVICEIDENTIFIER;
-
- typedef struct tagDDDEVICEIDENTIFIER2
- {
- /*
- * These elements are for presentation to the user only. They should not be used to identify particular
- * drivers, since this is unreliable and many different strings may be associated with the same
- * device, and the same driver from different vendors.
- */
- char szDriver[MAX_DDDEVICEID_STRING];
- char szDescription[MAX_DDDEVICEID_STRING];
-
- /*
- * This element is the version of the DirectDraw/3D driver. It is legal to do <, > comparisons
- * on the whole 64 bits. Caution should be exercised if you use this element to identify problematic
- * drivers. It is recommended that guidDeviceIdentifier is used for this purpose.
- *
- * This version has the form:
- * wProduct = HIWORD(liDriverVersion.HighPart)
- * wVersion = LOWORD(liDriverVersion.HighPart)
- * wSubVersion = HIWORD(liDriverVersion.LowPart)
- * wBuild = LOWORD(liDriverVersion.LowPart)
- */
- #ifdef _WIN32
- LARGE_INTEGER liDriverVersion; /* Defined for applications and other 32 bit components */
- #else
- DWORD dwDriverVersionLowPart; /* Defined for 16 bit driver components */
- DWORD dwDriverVersionHighPart;
- #endif
-
-
- /*
- * These elements can be used to identify particular chipsets. Use with extreme caution.
- * dwVendorId Identifies the manufacturer. May be zero if unknown.
- * dwDeviceId Identifies the type of chipset. May be zero if unknown.
- * dwSubSysId Identifies the subsystem, typically this means the particular board. May be zero if unknown.
- * dwRevision Identifies the revision level of the chipset. May be zero if unknown.
- */
- DWORD dwVendorId;
- DWORD dwDeviceId;
- DWORD dwSubSysId;
- DWORD dwRevision;
-
- /*
- * This element can be used to check changes in driver/chipset. This GUID is a unique identifier for the
- * driver/chipset pair. Use this element if you wish to track changes to the driver/chipset in order to
- * reprofile the graphics subsystem.
- * This element can also be used to identify particular problematic drivers.
- */
- GUID guidDeviceIdentifier;
-
- /*
- * This element is used to determine the Windows Hardware Quality Lab (WHQL)
- * certification level for this driver/device pair.
- */
- DWORD dwWHQLLevel;
-
- } DDDEVICEIDENTIFIER2, * LPDDDEVICEIDENTIFIER2;
-
- /*
- * Flags for the IDirectDraw4::GetDeviceIdentifier method
- */
-
- /*
- * This flag causes GetDeviceIdentifier to return information about the host (typically 2D) adapter in a system equipped
- * with a stacked secondary 3D adapter. Such an adapter appears to the application as if it were part of the
- * host adapter, but is typically physcially located on a separate card. The stacked secondary's information is
- * returned when GetDeviceIdentifier's dwFlags field is zero, since this most accurately reflects the qualities
- * of the DirectDraw object involved.
- */
- #define DDGDI_GETHOSTIDENTIFIER 0x00000001L
-
- /*
- * Macros for interpretting DDEVICEIDENTIFIER2.dwWHQLLevel
- */
- #define GET_WHQL_YEAR( dwWHQLLevel ) \
- ( (dwWHQLLevel) / 0x10000 )
- #define GET_WHQL_MONTH( dwWHQLLevel ) \
- ( ( (dwWHQLLevel) / 0x100 ) & 0x00ff )
- #define GET_WHQL_DAY( dwWHQLLevel ) \
- ( (dwWHQLLevel) & 0xff )
-
-
- /*
- * callbacks
- */
- typedef DWORD (FAR PASCAL *LPCLIPPERCALLBACK)(LPDIRECTDRAWCLIPPER lpDDClipper, HWND hWnd, DWORD code, LPVOID lpContext );
- #ifdef STREAMING
- typedef DWORD (FAR PASCAL *LPSURFACESTREAMINGCALLBACK)(DWORD);
- #endif
-
-
- /*
- * INTERACES FOLLOW:
- * IDirectDraw
- * IDirectDrawClipper
- * IDirectDrawPalette
- * IDirectDrawSurface
- */
-
- /*
- * IDirectDraw
- */
- #if defined( _WIN32 ) && !defined( _NO_COM )
- #undef INTERFACE
- #define INTERFACE IDirectDraw
- DECLARE_INTERFACE_( IDirectDraw, IUnknown )
- {
- /*** IUnknown methods ***/
- STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE;
- STDMETHOD_(ULONG,AddRef) (THIS) PURE;
- STDMETHOD_(ULONG,Release) (THIS) PURE;
- /*** IDirectDraw methods ***/
- STDMETHOD(Compact)(THIS) PURE;
- STDMETHOD(CreateClipper)(THIS_ DWORD, LPDIRECTDRAWCLIPPER FAR*, IUnknown FAR * ) PURE;
- STDMETHOD(CreatePalette)(THIS_ DWORD, LPPALETTEENTRY, LPDIRECTDRAWPALETTE FAR*, IUnknown FAR * ) PURE;
- STDMETHOD(CreateSurface)(THIS_ LPDDSURFACEDESC, LPDIRECTDRAWSURFACE FAR *, IUnknown FAR *) PURE;
- STDMETHOD(DuplicateSurface)( THIS_ LPDIRECTDRAWSURFACE, LPDIRECTDRAWSURFACE FAR * ) PURE;
- STDMETHOD(EnumDisplayModes)( THIS_ DWORD, LPDDSURFACEDESC, LPVOID, LPDDENUMMODESCALLBACK ) PURE;
- STDMETHOD(EnumSurfaces)(THIS_ DWORD, LPDDSURFACEDESC, LPVOID,LPDDENUMSURFACESCALLBACK ) PURE;
- STDMETHOD(FlipToGDISurface)(THIS) PURE;
- STDMETHOD(GetCaps)( THIS_ LPDDCAPS, LPDDCAPS) PURE;
- STDMETHOD(GetDisplayMode)( THIS_ LPDDSURFACEDESC) PURE;
- STDMETHOD(GetFourCCCodes)(THIS_ LPDWORD, LPDWORD ) PURE;
- STDMETHOD(GetGDISurface)(THIS_ LPDIRECTDRAWSURFACE FAR *) PURE;
- STDMETHOD(GetMonitorFrequency)(THIS_ LPDWORD) PURE;
- STDMETHOD(GetScanLine)(THIS_ LPDWORD) PURE;
- STDMETHOD(GetVerticalBlankStatus)(THIS_ LPBOOL ) PURE;
- STDMETHOD(Ini…
Large files files are truncated, but you can click here to view the full file