⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ddraw.h

📁 quake的sdl移植
💻 H
📖 第 1 页 / 共 5 页
字号:
/*==========================================================================; * *  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 + -