📄 ddraw.h
字号:
/*==========================================================================; * * Copyright (C) 1994-1996 Microsoft Corporation. All Rights Reserved. * * File: ddraw.h * Content: DirectDraw include file * ***************************************************************************/#ifndef __DDRAW_INCLUDED__#define __DDRAW_INCLUDED__#if defined( _WIN32 ) && !defined( _NO_COM )#define COM_NO_WINDOWS_H#include <objbase.h>#else#define IUnknown void#define CO_E_NOTINITIALIZED 0x800401F0L#endif#define _FACDD 0x876#define MAKE_DDHRESULT( code ) MAKE_HRESULT( 1, _FACDD, code )#ifdef __cplusplusextern "C" {#endif/* * 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_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_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_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 ); #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 IDirectDrawSurface FAR *LPDIRECTDRAWSURFACE;typedef struct IDirectDrawSurface2 FAR *LPDIRECTDRAWSURFACE2;typedef struct IDirectDrawPalette FAR *LPDIRECTDRAWPALETTE;typedef struct IDirectDrawClipper FAR *LPDIRECTDRAWCLIPPER;typedef struct _DDFXROP FAR *LPDDFXROP;typedef struct _DDSURFACEDESC FAR *LPDDSURFACEDESC;/* * 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 ); #ifdef UNICODE typedef LPDDENUMCALLBACKW LPDDENUMCALLBACK; #define DirectDrawEnumerate DirectDrawEnumerateW #else typedef LPDDENUMCALLBACKA LPDDENUMCALLBACK; #define DirectDrawEnumerate DirectDrawEnumerateA #endif extern HRESULT WINAPI DirectDrawCreate( GUID FAR *lpGUID, LPDIRECTDRAW FAR *lplpDD, IUnknown FAR *pUnkOuter ); extern HRESULT WINAPI DirectDrawCreateClipper( DWORD dwFlags, LPDIRECTDRAWCLIPPER FAR *lplpDDClipper, IUnknown FAR *pUnkOuter ); #ifdef WINNT //This is the user-mode entry stub to the kernel mode procedure. extern HRESULT NtDirectDrawCreate( GUID FAR *lpGUID, HANDLE *lplpDD, IUnknown FAR *pUnkOuter ); #endif#endif#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#ifdef WINNTtypedef long HRESULT;#endif//#ifndef WINNTtypedef HRESULT (FAR PASCAL * LPDDENUMMODESCALLBACK)(LPDDSURFACEDESC, LPVOID);typedef HRESULT (FAR PASCAL * LPDDENUMSURFACESCALLBACK)(LPDIRECTDRAWSURFACE, LPDDSURFACEDESC, LPVOID);//#endif/* * 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 }; 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 }; 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 }; 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 }; union { DWORD dwFillColor; // color in RGB or Palettized DWORD dwFillDepth; // depth value for z-buffer LPDIRECTDRAWSURFACE lpDDSPattern; // Surface to use as pattern }; 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; /* * DDCAPS */#define DD_ROP_SPACE (256/32) // space required to store ROP arraytypedef struct _DDCAPS{ 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;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 (BD_4,8,16,24,32) DWORD dwYUVBitCount; // how many bits per pixel (BD_4,8,16,24,32) DWORD dwZBufferBitDepth; // how many bits for z buffers (BD_8,16,24,32) DWORD dwAlphaBitDepth; // how many bits for alpha channels (BD_1,2,4,8) }; union { DWORD dwRBitMask; // mask for red bit DWORD dwYBitMask; // mask for Y bits }; union { DWORD dwGBitMask; // mask for green bits DWORD dwUBitMask; // mask for U bits }; union { DWORD dwBBitMask; // mask for blue bits DWORD dwVBitMask; // mask for V bits }; union { DWORD dwRGBAlphaBitMask; // mask for alpha channel DWORD dwYUVAlphaBitMask; // mask for alpha channel };} 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 }; 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 }; 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;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -