From 153bfda1175fd421189d0c37d96b81c0a6116b25 Mon Sep 17 00:00:00 2001 From: FunkyFr3sh Date: Thu, 16 Nov 2017 19:19:17 +0100 Subject: [PATCH] compile resources again + cleanup --- .gitignore | 1 + Makefile | 16 +- ddraw video stretching stuff.txt | 3 - ddraw.dll | Bin 165888 -> 0 bytes ddraw.rc | 10 +- ddraw.rc.in | 24 - ddraw.rc.o | 24 - clipper.h => inc/clipper.h | 0 ddraw.h => inc/ddraw.h | 7582 +++++++++++++------------- main.h => inc/main.h | 0 palette.h => inc/palette.h | 0 {include => inc}/png.h | 0 {include => inc}/pngconf.h | 0 surface.h => inc/surface.h | 0 {include => inc}/zconf.h | 0 {include => inc}/zlib.h | 0 clipper.c => src/clipper.c | 0 main.c => src/main.c | 0 mouse.c => src/mouse.c | 0 palette.c => src/palette.c | 0 render.c => src/render.c | 0 render_dummy.c => src/render_dummy.c | 0 render_soft.c => src/render_soft.c | 0 screenshot.c => src/screenshot.c | 0 surface.c => src/surface.c | 0 25 files changed, 3811 insertions(+), 3849 deletions(-) create mode 100644 .gitignore delete mode 100644 ddraw video stretching stuff.txt delete mode 100644 ddraw.dll delete mode 100644 ddraw.rc.in delete mode 100644 ddraw.rc.o rename clipper.h => inc/clipper.h (100%) rename ddraw.h => inc/ddraw.h (97%) rename main.h => inc/main.h (100%) rename palette.h => inc/palette.h (100%) rename {include => inc}/png.h (100%) rename {include => inc}/pngconf.h (100%) rename surface.h => inc/surface.h (100%) rename {include => inc}/zconf.h (100%) rename {include => inc}/zlib.h (100%) rename clipper.c => src/clipper.c (100%) rename main.c => src/main.c (100%) rename mouse.c => src/mouse.c (100%) rename palette.c => src/palette.c (100%) rename render.c => src/render.c (100%) rename render_dummy.c => src/render_dummy.c (100%) rename render_soft.c => src/render_soft.c (100%) rename screenshot.c => src/screenshot.c (100%) rename surface.c => src/surface.c (100%) diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d67e8e7 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +ddraw.dll ddraw.rc ddraw.rc.o diff --git a/Makefile b/Makefile index 573c443..19245e6 100644 --- a/Makefile +++ b/Makefile @@ -1,9 +1,21 @@ CC=gcc -CFLAGS=-DHAVE_LIBPNG -Iinclude -Wall -Wl,--enable-stdcall-fixup -O3 -s +WINDRES=windres +CFLAGS=-DHAVE_LIBPNG -Iinc -Wall -Wl,--enable-stdcall-fixup -O3 -s LIBS=lib/libpng14.a lib/libz.a -lgdi32 -lopengl32 -lwinmm +FILES = src/main.c \ + src/mouse.c \ + src/palette.c \ + src/surface.c \ + src/clipper.c \ + src/render.c \ + src/render_soft.c \ + src/render_dummy.c \ + src/screenshot.c + all: - $(CC) $(CFLAGS) -shared -o ddraw.dll main.c mouse.c palette.c surface.c clipper.c render.c render_soft.c render_dummy.c screenshot.c ddraw.def $(LIBS) + $(WINDRES) -J rc ddraw.rc ddraw.rc.o + $(CC) $(CFLAGS) -shared -o ddraw.dll $(FILES) ddraw.def ddraw.rc.o $(LIBS) clean: rm -f ddraw.dll diff --git a/ddraw video stretching stuff.txt b/ddraw video stretching stuff.txt deleted file mode 100644 index 074c180..0000000 --- a/ddraw video stretching stuff.txt +++ /dev/null @@ -1,3 +0,0 @@ -0x00607D78 = InMovie -0x0065D7BC = IsVQA640 -0x00607D78 = ShouldStretch BYTE (added by 3.03p-iran) \ No newline at end of file diff --git a/ddraw.dll b/ddraw.dll deleted file mode 100644 index 311d6f26ce62f0d817beb7b1a133f47001c5e89b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 165888 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�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 diff --git a/ddraw.rc b/ddraw.rc index aa063b5..402af96 100644 --- a/ddraw.rc +++ b/ddraw.rc @@ -4,16 +4,16 @@ { BLOCK "040904B0" { - VALUE "CompanyName", "Toni Spets" + VALUE "CompanyName", "cncnet.org" VALUE "FileDescription", "DirectDraw replacement for C&C95 and Red Alert" - VALUE "FileVersion", "git~" + VALUE "FileVersion", "1.1.0.0" VALUE "InternalName", "ddraw" - VALUE "LegalCopyright", "Copyright (c) 2010, 2011 Toni Spets" + VALUE "LegalCopyright", "Copyright (c) 2010-2017" VALUE "LegalTrademarks", "" VALUE "OriginalFileName", "ddraw.dll" VALUE "ProductName", "DirectDraw replacement for C&C95 and Red Alert" - VALUE "ProductVersion", "git~" - VALUE "Comments", "http://hifi.iki.fi/cnc-ddraw/" + VALUE "ProductVersion", "1.1.0.0" + VALUE "Comments", "https://cncnet.org" } } diff --git a/ddraw.rc.in b/ddraw.rc.in deleted file mode 100644 index e8db4df..0000000 --- a/ddraw.rc.in +++ /dev/null @@ -1,24 +0,0 @@ -1 VERSIONINFO -{ - BLOCK "StringFileInfo" - { - BLOCK "040904B0" - { - VALUE "CompanyName", "Toni Spets" - VALUE "FileDescription", "DirectDraw replacement for C&C95 and Red Alert" - VALUE "FileVersion", "git~__REV__" - VALUE "InternalName", "ddraw" - VALUE "LegalCopyright", "Copyright (c) 2010, 2011 Toni Spets" - VALUE "LegalTrademarks", "" - VALUE "OriginalFileName", "ddraw.dll" - VALUE "ProductName", "DirectDraw replacement for C&C95 and Red Alert" - VALUE "ProductVersion", "git~__REV__" - VALUE "Comments", "http://hifi.iki.fi/cnc-ddraw/" - } - } - - BLOCK "VarFileInfo" - { - VALUE "Translation", 0x0409, 0x04B0 - } -} diff --git a/ddraw.rc.o b/ddraw.rc.o deleted file mode 100644 index aa063b5..0000000 --- a/ddraw.rc.o +++ /dev/null @@ -1,24 +0,0 @@ -1 VERSIONINFO -{ - BLOCK "StringFileInfo" - { - BLOCK "040904B0" - { - VALUE "CompanyName", "Toni Spets" - VALUE "FileDescription", "DirectDraw replacement for C&C95 and Red Alert" - VALUE "FileVersion", "git~" - VALUE "InternalName", "ddraw" - VALUE "LegalCopyright", "Copyright (c) 2010, 2011 Toni Spets" - VALUE "LegalTrademarks", "" - VALUE "OriginalFileName", "ddraw.dll" - VALUE "ProductName", "DirectDraw replacement for C&C95 and Red Alert" - VALUE "ProductVersion", "git~" - VALUE "Comments", "http://hifi.iki.fi/cnc-ddraw/" - } - } - - BLOCK "VarFileInfo" - { - VALUE "Translation", 0x0409, 0x04B0 - } -} diff --git a/clipper.h b/inc/clipper.h similarity index 100% rename from clipper.h rename to inc/clipper.h diff --git a/ddraw.h b/inc/ddraw.h similarity index 97% rename from ddraw.h rename to inc/ddraw.h index 279d2fa..7923059 100644 --- a/ddraw.h +++ b/inc/ddraw.h @@ -1,3791 +1,3791 @@ -/*==========================================================================; - * - * Copyright (C) 1994-1997 Microsoft Corporation. All Rights Reserved. - * - * File: ddraw.h - * Content: DirectDraw include file - * - ***************************************************************************/ - -#ifndef __DDRAW_INCLUDED__ -#define __DDRAW_INCLUDED__ - -/* - * 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 0x0500 -#endif /* DIRECTDRAW_VERSION */ - -#if defined( _WIN32 ) && !defined( _NO_COM ) -#define COM_NO_WINDOWS_H -#include -#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 - -/* - * 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_IDirectDrawSurface3, 0xDA044E00,0x69B2,0x11D0,0xA1,0xD5,0x00,0xAA,0x00,0xB8,0xDF,0xBB ); - -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 ); - -#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 IDirectDrawSurface3 FAR *LPDIRECTDRAWSURFACE3; - -typedef struct IDirectDrawPalette FAR *LPDIRECTDRAWPALETTE; -typedef struct IDirectDrawClipper FAR *LPDIRECTDRAWCLIPPER; -typedef struct IDirectDrawColorControl FAR *LPDIRECTDRAWCOLORCONTROL; - -typedef struct _DDFXROP FAR *LPDDFXROP; -typedef struct _DDSURFACEDESC FAR *LPDDSURFACEDESC; -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 ); - #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 ); -#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 - -#if defined(WINNT) || !defined(WIN32) -typedef long HRESULT; -#endif - -//#ifndef WINNT -typedef 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 - DWORD dwFillPixel; // pixel value for RGBA or RGBZ - 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 array - -#if DIRECTDRAW_VERSION >= 0x0500 -/* - * 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; -#endif /* DIRECTDRAW_VERSION >= 0x0500 */ - -typedef struct _DDCAPS -{ -/* 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 -#if DIRECTDRAW_VERSION >= 0x0500 -/*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 -#else /* DIRECTDRAW_VERSION >= 0x0500 */ -/*130*/ DWORD dwReserved4; // reserved -/*134*/ DWORD dwReserved5; // reserved -/*138*/ DWORD dwReserved6; // reserved -#endif /* DIRECTDRAW_VERSION >= 0x0500 */ -} 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 - DWORD dwYUVBitCount; // how many bits per pixel - DWORD dwZBufferBitDepth; // how many bits for z buffers - DWORD dwAlphaBitDepth; // how many bits for alpha channels - }; - 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 - DWORD dwRGBZBitMask; // mask for Z channel - DWORD dwYUVZBitMask; // mask for Z 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; - -/* - * 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(Initialize)(THIS_ GUID FAR *) PURE; - STDMETHOD(RestoreDisplayMode)(THIS) PURE; - STDMETHOD(SetCooperativeLevel)(THIS_ HWND, DWORD) PURE; - STDMETHOD(SetDisplayMode)(THIS_ DWORD, DWORD,DWORD) PURE; - STDMETHOD(WaitForVerticalBlank)(THIS_ DWORD, HANDLE ) PURE; -}; - -#if !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectDraw_QueryInterface(p, a, b) (p)->lpVtbl->QueryInterface(p, a, b) -#define IDirectDraw_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IDirectDraw_Release(p) (p)->lpVtbl->Release(p) -#define IDirectDraw_Compact(p) (p)->lpVtbl->Compact(p) -#define IDirectDraw_CreateClipper(p, a, b, c) (p)->lpVtbl->CreateClipper(p, a, b, c) -#define IDirectDraw_CreatePalette(p, a, b, c, d) (p)->lpVtbl->CreatePalette(p, a, b, c, d) -#define IDirectDraw_CreateSurface(p, a, b, c) (p)->lpVtbl->CreateSurface(p, a, b, c) -#define IDirectDraw_DuplicateSurface(p, a, b) (p)->lpVtbl->DuplicateSurface(p, a, b) -#define IDirectDraw_EnumDisplayModes(p, a, b, c, d) (p)->lpVtbl->EnumDisplayModes(p, a, b, c, d) -#define IDirectDraw_EnumSurfaces(p, a, b, c, d) (p)->lpVtbl->EnumSurfaces(p, a, b, c, d) -#define IDirectDraw_FlipToGDISurface(p) (p)->lpVtbl->FlipToGDISurface(p) -#define IDirectDraw_GetCaps(p, a, b) (p)->lpVtbl->GetCaps(p, a, b) -#define IDirectDraw_GetDisplayMode(p, a) (p)->lpVtbl->GetDisplayMode(p, a) -#define IDirectDraw_GetFourCCCodes(p, a, b) (p)->lpVtbl->GetFourCCCodes(p, a, b) -#define IDirectDraw_GetGDISurface(p, a) (p)->lpVtbl->GetGDISurface(p, a) -#define IDirectDraw_GetMonitorFrequency(p, a) (p)->lpVtbl->GetMonitorFrequency(p, a) -#define IDirectDraw_GetScanLine(p, a) (p)->lpVtbl->GetScanLine(p, a) -#define IDirectDraw_GetVerticalBlankStatus(p, a) (p)->lpVtbl->GetVerticalBlankStatus(p, a) -#define IDirectDraw_Initialize(p, a) (p)->lpVtbl->Initialize(p, a) -#define IDirectDraw_RestoreDisplayMode(p) (p)->lpVtbl->RestoreDisplayMode(p) -#define IDirectDraw_SetCooperativeLevel(p, a, b) (p)->lpVtbl->SetCooperativeLevel(p, a, b) -#define IDirectDraw_SetDisplayMode(p, a, b, c) (p)->lpVtbl->SetDisplayMode(p, a, b, c) -#define IDirectDraw_WaitForVerticalBlank(p, a, b) (p)->lpVtbl->WaitForVerticalBlank(p, a, b) -#else -#define IDirectDraw_QueryInterface(p, a, b) (p)->QueryInterface(a, b) -#define IDirectDraw_AddRef(p) (p)->AddRef() -#define IDirectDraw_Release(p) (p)->Release() -#define IDirectDraw_Compact(p) (p)->Compact() -#define IDirectDraw_CreateClipper(p, a, b, c) (p)->CreateClipper(a, b, c) -#define IDirectDraw_CreatePalette(p, a, b, c, d) (p)->CreatePalette(a, b, c, d) -#define IDirectDraw_CreateSurface(p, a, b, c) (p)->CreateSurface(a, b, c) -#define IDirectDraw_DuplicateSurface(p, a, b) (p)->DuplicateSurface(a, b) -#define IDirectDraw_EnumDisplayModes(p, a, b, c, d) (p)->EnumDisplayModes(a, b, c, d) -#define IDirectDraw_EnumSurfaces(p, a, b, c, d) (p)->EnumSurfaces(a, b, c, d) -#define IDirectDraw_FlipToGDISurface(p) (p)->FlipToGDISurface() -#define IDirectDraw_GetCaps(p, a, b) (p)->GetCaps(a, b) -#define IDirectDraw_GetDisplayMode(p, a) (p)->GetDisplayMode(a) -#define IDirectDraw_GetFourCCCodes(p, a, b) (p)->GetFourCCCodes(a, b) -#define IDirectDraw_GetGDISurface(p, a) (p)->GetGDISurface(a) -#define IDirectDraw_GetMonitorFrequency(p, a) (p)->GetMonitorFrequency(a) -#define IDirectDraw_GetScanLine(p, a) (p)->GetScanLine(a) -#define IDirectDraw_GetVerticalBlankStatus(p, a) (p)->GetVerticalBlankStatus(a) -#define IDirectDraw_Initialize(p, a) (p)->Initialize(a) -#define IDirectDraw_RestoreDisplayMode(p) (p)->RestoreDisplayMode() -#define IDirectDraw_SetCooperativeLevel(p, a, b) (p)->SetCooperativeLevel(a, b) -#define IDirectDraw_SetDisplayMode(p, a, b, c) (p)->SetDisplayMode(a, b, c) -#define IDirectDraw_WaitForVerticalBlank(p, a, b) (p)->WaitForVerticalBlank(a, b) -#endif - -#endif - -#if defined( _WIN32 ) && !defined( _NO_COM ) -#undef INTERFACE -#define INTERFACE IDirectDraw2 -DECLARE_INTERFACE_( IDirectDraw2, 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(Initialize)(THIS_ GUID FAR *) PURE; - STDMETHOD(RestoreDisplayMode)(THIS) PURE; - STDMETHOD(SetCooperativeLevel)(THIS_ HWND, DWORD) PURE; - STDMETHOD(SetDisplayMode)(THIS_ DWORD, DWORD,DWORD, DWORD, DWORD) PURE; - STDMETHOD(WaitForVerticalBlank)(THIS_ DWORD, HANDLE ) PURE; - /*** Added in the v2 interface ***/ - STDMETHOD(GetAvailableVidMem)(THIS_ LPDDSCAPS, LPDWORD, LPDWORD) PURE; -}; -#if !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectDraw2_QueryInterface(p, a, b) (p)->lpVtbl->QueryInterface(p, a, b) -#define IDirectDraw2_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IDirectDraw2_Release(p) (p)->lpVtbl->Release(p) -#define IDirectDraw2_Compact(p) (p)->lpVtbl->Compact(p) -#define IDirectDraw2_CreateClipper(p, a, b, c) (p)->lpVtbl->CreateClipper(p, a, b, c) -#define IDirectDraw2_CreatePalette(p, a, b, c, d) (p)->lpVtbl->CreatePalette(p, a, b, c, d) -#define IDirectDraw2_CreateSurface(p, a, b, c) (p)->lpVtbl->CreateSurface(p, a, b, c) -#define IDirectDraw2_DuplicateSurface(p, a, b) (p)->lpVtbl->DuplicateSurface(p, a, b) -#define IDirectDraw2_EnumDisplayModes(p, a, b, c, d) (p)->lpVtbl->EnumDisplayModes(p, a, b, c, d) -#define IDirectDraw2_EnumSurfaces(p, a, b, c, d) (p)->lpVtbl->EnumSurfaces(p, a, b, c, d) -#define IDirectDraw2_FlipToGDISurface(p) (p)->lpVtbl->FlipToGDISurface(p) -#define IDirectDraw2_GetCaps(p, a, b) (p)->lpVtbl->GetCaps(p, a, b) -#define IDirectDraw2_GetDisplayMode(p, a) (p)->lpVtbl->GetDisplayMode(p, a) -#define IDirectDraw2_GetFourCCCodes(p, a, b) (p)->lpVtbl->GetFourCCCodes(p, a, b) -#define IDirectDraw2_GetGDISurface(p, a) (p)->lpVtbl->GetGDISurface(p, a) -#define IDirectDraw2_GetMonitorFrequency(p, a) (p)->lpVtbl->GetMonitorFrequency(p, a) -#define IDirectDraw2_GetScanLine(p, a) (p)->lpVtbl->GetScanLine(p, a) -#define IDirectDraw2_GetVerticalBlankStatus(p, a) (p)->lpVtbl->GetVerticalBlankStatus(p, a) -#define IDirectDraw2_Initialize(p, a) (p)->lpVtbl->Initialize(p, a) -#define IDirectDraw2_RestoreDisplayMode(p) (p)->lpVtbl->RestoreDisplayMode(p) -#define IDirectDraw2_SetCooperativeLevel(p, a, b) (p)->lpVtbl->SetCooperativeLevel(p, a, b) -#define IDirectDraw2_SetDisplayMode(p, a, b, c, d, e) (p)->lpVtbl->SetDisplayMode(p, a, b, c, d, e) -#define IDirectDraw2_WaitForVerticalBlank(p, a, b) (p)->lpVtbl->WaitForVerticalBlank(p, a, b) -#define IDirectDraw2_GetAvailableVidMem(p, a, b, c) (p)->lpVtbl->GetAvailableVidMem(p, a, b, c) -#else -#define IDirectDraw2_QueryInterface(p, a, b) (p)->QueryInterface(a, b) -#define IDirectDraw2_AddRef(p) (p)->AddRef() -#define IDirectDraw2_Release(p) (p)->Release() -#define IDirectDraw2_Compact(p) (p)->Compact() -#define IDirectDraw2_CreateClipper(p, a, b, c) (p)->CreateClipper(a, b, c) -#define IDirectDraw2_CreatePalette(p, a, b, c, d) (p)->CreatePalette(a, b, c, d) -#define IDirectDraw2_CreateSurface(p, a, b, c) (p)->CreateSurface(a, b, c) -#define IDirectDraw2_DuplicateSurface(p, a, b) (p)->DuplicateSurface(a, b) -#define IDirectDraw2_EnumDisplayModes(p, a, b, c, d) (p)->EnumDisplayModes(a, b, c, d) -#define IDirectDraw2_EnumSurfaces(p, a, b, c, d) (p)->EnumSurfaces(a, b, c, d) -#define IDirectDraw2_FlipToGDISurface(p) (p)->FlipToGDISurface() -#define IDirectDraw2_GetCaps(p, a, b) (p)->GetCaps(a, b) -#define IDirectDraw2_GetDisplayMode(p, a) (p)->GetDisplayMode(a) -#define IDirectDraw2_GetFourCCCodes(p, a, b) (p)->GetFourCCCodes(a, b) -#define IDirectDraw2_GetGDISurface(p, a) (p)->GetGDISurface(a) -#define IDirectDraw2_GetMonitorFrequency(p, a) (p)->GetMonitorFrequency(a) -#define IDirectDraw2_GetScanLine(p, a) (p)->GetScanLine(a) -#define IDirectDraw2_GetVerticalBlankStatus(p, a) (p)->GetVerticalBlankStatus(a) -#define IDirectDraw2_Initialize(p, a) (p)->Initialize(a) -#define IDirectDraw2_RestoreDisplayMode(p) (p)->RestoreDisplayMode() -#define IDirectDraw2_SetCooperativeLevel(p, a, b) (p)->SetCooperativeLevel(a, b) -#define IDirectDraw2_SetDisplayMode(p, a, b, c, d, e) (p)->SetDisplayMode(a, b, c, d, e) -#define IDirectDraw2_WaitForVerticalBlank(p, a, b) (p)->WaitForVerticalBlank(a, b) -#define IDirectDraw2_GetAvailableVidMem(p, a, b, c) (p)->GetAvailableVidMem(a, b, c) -#endif - -#endif - -/* - * IDirectDrawPalette - */ -#if defined( _WIN32 ) && !defined( _NO_COM ) -#undef INTERFACE -#define INTERFACE IDirectDrawPalette -DECLARE_INTERFACE_( IDirectDrawPalette, IUnknown ) -{ - /*** IUnknown methods ***/ - STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - /*** IDirectDrawPalette methods ***/ - STDMETHOD(GetCaps)(THIS_ LPDWORD) PURE; - STDMETHOD(GetEntries)(THIS_ DWORD,DWORD,DWORD,LPPALETTEENTRY) PURE; - STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW, DWORD, LPPALETTEENTRY) PURE; - STDMETHOD(SetEntries)(THIS_ DWORD,DWORD,DWORD,LPPALETTEENTRY) PURE; -}; - -#if !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectDrawPalette_QueryInterface(p, a, b) (p)->lpVtbl->QueryInterface(p, a, b) -#define IDirectDrawPalette_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IDirectDrawPalette_Release(p) (p)->lpVtbl->Release(p) -#define IDirectDrawPalette_GetCaps(p, a) (p)->lpVtbl->GetCaps(p, a) -#define IDirectDrawPalette_GetEntries(p, a, b, c, d) (p)->lpVtbl->GetEntries(p, a, b, c, d) -#define IDirectDrawPalette_Initialize(p, a, b, c) (p)->lpVtbl->Initialize(p, a, b, c) -#define IDirectDrawPalette_SetEntries(p, a, b, c, d) (p)->lpVtbl->SetEntries(p, a, b, c, d) -#else -#define IDirectDrawPalette_QueryInterface(p, a, b) (p)->QueryInterface(a, b) -#define IDirectDrawPalette_AddRef(p) (p)->AddRef() -#define IDirectDrawPalette_Release(p) (p)->Release() -#define IDirectDrawPalette_GetCaps(p, a) (p)->GetCaps(a) -#define IDirectDrawPalette_GetEntries(p, a, b, c, d) (p)->GetEntries(a, b, c, d) -#define IDirectDrawPalette_Initialize(p, a, b, c) (p)->Initialize(a, b, c) -#define IDirectDrawPalette_SetEntries(p, a, b, c, d) (p)->SetEntries(a, b, c, d) -#endif - -#endif - -/* - * IDirectDrawClipper - */ -#if defined( _WIN32 ) && !defined( _NO_COM ) -#undef INTERFACE -#define INTERFACE IDirectDrawClipper -DECLARE_INTERFACE_( IDirectDrawClipper, IUnknown ) -{ - /*** IUnknown methods ***/ - STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - /*** IDirectDrawClipper methods ***/ - STDMETHOD(GetClipList)(THIS_ LPRECT, LPRGNDATA, LPDWORD) PURE; - STDMETHOD(GetHWnd)(THIS_ HWND FAR *) PURE; - STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW, DWORD) PURE; - STDMETHOD(IsClipListChanged)(THIS_ BOOL FAR *) PURE; - STDMETHOD(SetClipList)(THIS_ LPRGNDATA,DWORD) PURE; - STDMETHOD(SetHWnd)(THIS_ DWORD, HWND ) PURE; -}; - -#if !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectDrawClipper_QueryInterface(p, a, b) (p)->lpVtbl->QueryInterface(p, a, b) -#define IDirectDrawClipper_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IDirectDrawClipper_Release(p) (p)->lpVtbl->Release(p) -#define IDirectDrawClipper_GetClipList(p, a, b, c) (p)->lpVtbl->GetClipList(p, a, b, c) -#define IDirectDrawClipper_GetHWnd(p, a) (p)->lpVtbl->GetHWnd(p, a) -#define IDirectDrawClipper_Initialize(p, a, b) (p)->lpVtbl->Initialize(p, a, b) -#define IDirectDrawClipper_IsClipListChanged(p, a) (p)->lpVtbl->IsClipListChanged(p, a) -#define IDirectDrawClipper_SetClipList(p, a, b) (p)->lpVtbl->SetClipList(p, a, b) -#define IDirectDrawClipper_SetHWnd(p, a, b) (p)->lpVtbl->SetHWnd(p, a, b) -#else -#define IDirectDrawClipper_QueryInterface(p, a, b) (p)->QueryInterface(a, b) -#define IDirectDrawClipper_AddRef(p) (p)->AddRef() -#define IDirectDrawClipper_Release(p) (p)->Release() -#define IDirectDrawClipper_GetClipList(p, a, b, c) (p)->GetClipList(a, b, c) -#define IDirectDrawClipper_GetHWnd(p, a) (p)->GetHWnd(a) -#define IDirectDrawClipper_Initialize(p, a, b) (p)->Initialize(a, b) -#define IDirectDrawClipper_IsClipListChanged(p, a) (p)->IsClipListChanged(a) -#define IDirectDrawClipper_SetClipList(p, a, b) (p)->SetClipList(a, b) -#define IDirectDrawClipper_SetHWnd(p, a, b) (p)->SetHWnd(a, b) -#endif - -#endif - -/* - * IDirectDrawSurface and related interfaces - */ -#if defined( _WIN32 ) && !defined( _NO_COM ) -#undef INTERFACE -#define INTERFACE IDirectDrawSurface -DECLARE_INTERFACE_( IDirectDrawSurface, IUnknown ) -{ - /*** IUnknown methods ***/ - STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - /*** IDirectDrawSurface methods ***/ - STDMETHOD(AddAttachedSurface)(THIS_ LPDIRECTDRAWSURFACE) PURE; - STDMETHOD(AddOverlayDirtyRect)(THIS_ LPRECT) PURE; - STDMETHOD(Blt)(THIS_ LPRECT,LPDIRECTDRAWSURFACE, LPRECT,DWORD, LPDDBLTFX) PURE; - STDMETHOD(BltBatch)(THIS_ LPDDBLTBATCH, DWORD, DWORD ) PURE; - STDMETHOD(BltFast)(THIS_ DWORD,DWORD,LPDIRECTDRAWSURFACE, LPRECT,DWORD) PURE; - STDMETHOD(DeleteAttachedSurface)(THIS_ DWORD,LPDIRECTDRAWSURFACE) PURE; - STDMETHOD(EnumAttachedSurfaces)(THIS_ LPVOID,LPDDENUMSURFACESCALLBACK) PURE; - STDMETHOD(EnumOverlayZOrders)(THIS_ DWORD,LPVOID,LPDDENUMSURFACESCALLBACK) PURE; - STDMETHOD(Flip)(THIS_ LPDIRECTDRAWSURFACE, DWORD) PURE; - STDMETHOD(GetAttachedSurface)(THIS_ LPDDSCAPS, LPDIRECTDRAWSURFACE FAR *) PURE; - STDMETHOD(GetBltStatus)(THIS_ DWORD) PURE; - STDMETHOD(GetCaps)(THIS_ LPDDSCAPS) PURE; - STDMETHOD(GetClipper)(THIS_ LPDIRECTDRAWCLIPPER FAR*) PURE; - STDMETHOD(GetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE; - STDMETHOD(GetDC)(THIS_ HDC FAR *) PURE; - STDMETHOD(GetFlipStatus)(THIS_ DWORD) PURE; - STDMETHOD(GetOverlayPosition)(THIS_ LPLONG, LPLONG ) PURE; - STDMETHOD(GetPalette)(THIS_ LPDIRECTDRAWPALETTE FAR*) PURE; - STDMETHOD(GetPixelFormat)(THIS_ LPDDPIXELFORMAT) PURE; - STDMETHOD(GetSurfaceDesc)(THIS_ LPDDSURFACEDESC) PURE; - STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW, LPDDSURFACEDESC) PURE; - STDMETHOD(IsLost)(THIS) PURE; - STDMETHOD(Lock)(THIS_ LPRECT,LPDDSURFACEDESC,DWORD,HANDLE) PURE; - STDMETHOD(ReleaseDC)(THIS_ HDC) PURE; - STDMETHOD(Restore)(THIS) PURE; - STDMETHOD(SetClipper)(THIS_ LPDIRECTDRAWCLIPPER) PURE; - STDMETHOD(SetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE; - STDMETHOD(SetOverlayPosition)(THIS_ LONG, LONG ) PURE; - STDMETHOD(SetPalette)(THIS_ LPDIRECTDRAWPALETTE) PURE; - STDMETHOD(Unlock)(THIS_ LPVOID) PURE; - STDMETHOD(UpdateOverlay)(THIS_ LPRECT, LPDIRECTDRAWSURFACE,LPRECT,DWORD, LPDDOVERLAYFX) PURE; - STDMETHOD(UpdateOverlayDisplay)(THIS_ DWORD) PURE; - STDMETHOD(UpdateOverlayZOrder)(THIS_ DWORD, LPDIRECTDRAWSURFACE) PURE; -}; - -#if !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectDrawSurface_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IDirectDrawSurface_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IDirectDrawSurface_Release(p) (p)->lpVtbl->Release(p) -#define IDirectDrawSurface_AddAttachedSurface(p,a) (p)->lpVtbl->AddAttachedSurface(p,a) -#define IDirectDrawSurface_AddOverlayDirtyRect(p,a) (p)->lpVtbl->AddOverlayDirtyRect(p,a) -#define IDirectDrawSurface_Blt(p,a,b,c,d,e) (p)->lpVtbl->Blt(p,a,b,c,d,e) -#define IDirectDrawSurface_BltBatch(p,a,b,c) (p)->lpVtbl->BltBatch(p,a,b,c) -#define IDirectDrawSurface_BltFast(p,a,b,c,d,e) (p)->lpVtbl->BltFast(p,a,b,c,d,e) -#define IDirectDrawSurface_DeleteAttachedSurface(p,a,b) (p)->lpVtbl->DeleteAttachedSurface(p,a,b) -#define IDirectDrawSurface_EnumAttachedSurfaces(p,a,b) (p)->lpVtbl->EnumAttachedSurfaces(p,a,b) -#define IDirectDrawSurface_EnumOverlayZOrders(p,a,b,c) (p)->lpVtbl->EnumOverlayZOrders(p,a,b,c) -#define IDirectDrawSurface_Flip(p,a,b) (p)->lpVtbl->Flip(p,a,b) -#define IDirectDrawSurface_GetAttachedSurface(p,a,b) (p)->lpVtbl->GetAttachedSurface(p,a,b) -#define IDirectDrawSurface_GetBltStatus(p,a) (p)->lpVtbl->GetBltStatus(p,a) -#define IDirectDrawSurface_GetCaps(p,b) (p)->lpVtbl->GetCaps(p,b) -#define IDirectDrawSurface_GetClipper(p,a) (p)->lpVtbl->GetClipper(p,a) -#define IDirectDrawSurface_GetColorKey(p,a,b) (p)->lpVtbl->GetColorKey(p,a,b) -#define IDirectDrawSurface_GetDC(p,a) (p)->lpVtbl->GetDC(p,a) -#define IDirectDrawSurface_GetFlipStatus(p,a) (p)->lpVtbl->GetFlipStatus(p,a) -#define IDirectDrawSurface_GetOverlayPosition(p,a,b) (p)->lpVtbl->GetOverlayPosition(p,a,b) -#define IDirectDrawSurface_GetPalette(p,a) (p)->lpVtbl->GetPalette(p,a) -#define IDirectDrawSurface_GetPixelFormat(p,a) (p)->lpVtbl->GetPixelFormat(p,a) -#define IDirectDrawSurface_GetSurfaceDesc(p,a) (p)->lpVtbl->GetSurfaceDesc(p,a) -#define IDirectDrawSurface_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b) -#define IDirectDrawSurface_IsLost(p) (p)->lpVtbl->IsLost(p) -#define IDirectDrawSurface_Lock(p,a,b,c,d) (p)->lpVtbl->Lock(p,a,b,c,d) -#define IDirectDrawSurface_ReleaseDC(p,a) (p)->lpVtbl->ReleaseDC(p,a) -#define IDirectDrawSurface_Restore(p) (p)->lpVtbl->Restore(p) -#define IDirectDrawSurface_SetClipper(p,a) (p)->lpVtbl->SetClipper(p,a) -#define IDirectDrawSurface_SetColorKey(p,a,b) (p)->lpVtbl->SetColorKey(p,a,b) -#define IDirectDrawSurface_SetOverlayPosition(p,a,b) (p)->lpVtbl->SetOverlayPosition(p,a,b) -#define IDirectDrawSurface_SetPalette(p,a) (p)->lpVtbl->SetPalette(p,a) -#define IDirectDrawSurface_Unlock(p,b) (p)->lpVtbl->Unlock(p,b) -#define IDirectDrawSurface_UpdateOverlay(p,a,b,c,d,e) (p)->lpVtbl->UpdateOverlay(p,a,b,c,d,e) -#define IDirectDrawSurface_UpdateOverlayDisplay(p,a) (p)->lpVtbl->UpdateOverlayDisplay(p,a) -#define IDirectDrawSurface_UpdateOverlayZOrder(p,a,b) (p)->lpVtbl->UpdateOverlayZOrder(p,a,b) -#else -#define IDirectDrawSurface_QueryInterface(p,a,b) (p)->QueryInterface(a,b) -#define IDirectDrawSurface_AddRef(p) (p)->AddRef() -#define IDirectDrawSurface_Release(p) (p)->Release() -#define IDirectDrawSurface_AddAttachedSurface(p,a) (p)->AddAttachedSurface(a) -#define IDirectDrawSurface_AddOverlayDirtyRect(p,a) (p)->AddOverlayDirtyRect(a) -#define IDirectDrawSurface_Blt(p,a,b,c,d,e) (p)->Blt(a,b,c,d,e) -#define IDirectDrawSurface_BltBatch(p,a,b,c) (p)->BltBatch(a,b,c) -#define IDirectDrawSurface_BltFast(p,a,b,c,d,e) (p)->BltFast(a,b,c,d,e) -#define IDirectDrawSurface_DeleteAttachedSurface(p,a,b) (p)->DeleteAttachedSurface(a,b) -#define IDirectDrawSurface_EnumAttachedSurfaces(p,a,b) (p)->EnumAttachedSurfaces(a,b) -#define IDirectDrawSurface_EnumOverlayZOrders(p,a,b,c) (p)->EnumOverlayZOrders(a,b,c) -#define IDirectDrawSurface_Flip(p,a,b) (p)->Flip(a,b) -#define IDirectDrawSurface_GetAttachedSurface(p,a,b) (p)->GetAttachedSurface(a,b) -#define IDirectDrawSurface_GetBltStatus(p,a) (p)->GetBltStatus(a) -#define IDirectDrawSurface_GetCaps(p,b) (p)->GetCaps(b) -#define IDirectDrawSurface_GetClipper(p,a) (p)->GetClipper(a) -#define IDirectDrawSurface_GetColorKey(p,a,b) (p)->GetColorKey(a,b) -#define IDirectDrawSurface_GetDC(p,a) (p)->GetDC(a) -#define IDirectDrawSurface_GetFlipStatus(p,a) (p)->GetFlipStatus(a) -#define IDirectDrawSurface_GetOverlayPosition(p,a,b) (p)->GetOverlayPosition(a,b) -#define IDirectDrawSurface_GetPalette(p,a) (p)->GetPalette(a) -#define IDirectDrawSurface_GetPixelFormat(p,a) (p)->GetPixelFormat(a) -#define IDirectDrawSurface_GetSurfaceDesc(p,a) (p)->GetSurfaceDesc(a) -#define IDirectDrawSurface_Initialize(p,a,b) (p)->Initialize(a,b) -#define IDirectDrawSurface_IsLost(p) (p)->IsLost() -#define IDirectDrawSurface_Lock(p,a,b,c,d) (p)->Lock(a,b,c,d) -#define IDirectDrawSurface_ReleaseDC(p,a) (p)->ReleaseDC(a) -#define IDirectDrawSurface_Restore(p) (p)->Restore() -#define IDirectDrawSurface_SetClipper(p,a) (p)->SetClipper(a) -#define IDirectDrawSurface_SetColorKey(p,a,b) (p)->SetColorKey(a,b) -#define IDirectDrawSurface_SetOverlayPosition(p,a,b) (p)->SetOverlayPosition(a,b) -#define IDirectDrawSurface_SetPalette(p,a) (p)->SetPalette(a) -#define IDirectDrawSurface_Unlock(p,b) (p)->Unlock(b) -#define IDirectDrawSurface_UpdateOverlay(p,a,b,c,d,e) (p)->UpdateOverlay(a,b,c,d,e) -#define IDirectDrawSurface_UpdateOverlayDisplay(p,a) (p)->UpdateOverlayDisplay(a) -#define IDirectDrawSurface_UpdateOverlayZOrder(p,a,b) (p)->UpdateOverlayZOrder(a,b) -#endif - -/* - * IDirectDrawSurface2 and related interfaces - */ -#undef INTERFACE -#define INTERFACE IDirectDrawSurface2 -DECLARE_INTERFACE_( IDirectDrawSurface2, IUnknown ) -{ - /*** IUnknown methods ***/ - STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - /*** IDirectDrawSurface methods ***/ - STDMETHOD(AddAttachedSurface)(THIS_ LPDIRECTDRAWSURFACE2) PURE; - STDMETHOD(AddOverlayDirtyRect)(THIS_ LPRECT) PURE; - STDMETHOD(Blt)(THIS_ LPRECT,LPDIRECTDRAWSURFACE2, LPRECT,DWORD, LPDDBLTFX) PURE; - STDMETHOD(BltBatch)(THIS_ LPDDBLTBATCH, DWORD, DWORD ) PURE; - STDMETHOD(BltFast)(THIS_ DWORD,DWORD,LPDIRECTDRAWSURFACE2, LPRECT,DWORD) PURE; - STDMETHOD(DeleteAttachedSurface)(THIS_ DWORD,LPDIRECTDRAWSURFACE2) PURE; - STDMETHOD(EnumAttachedSurfaces)(THIS_ LPVOID,LPDDENUMSURFACESCALLBACK) PURE; - STDMETHOD(EnumOverlayZOrders)(THIS_ DWORD,LPVOID,LPDDENUMSURFACESCALLBACK) PURE; - STDMETHOD(Flip)(THIS_ LPDIRECTDRAWSURFACE2, DWORD) PURE; - STDMETHOD(GetAttachedSurface)(THIS_ LPDDSCAPS, LPDIRECTDRAWSURFACE2 FAR *) PURE; - STDMETHOD(GetBltStatus)(THIS_ DWORD) PURE; - STDMETHOD(GetCaps)(THIS_ LPDDSCAPS) PURE; - STDMETHOD(GetClipper)(THIS_ LPDIRECTDRAWCLIPPER FAR*) PURE; - STDMETHOD(GetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE; - STDMETHOD(GetDC)(THIS_ HDC FAR *) PURE; - STDMETHOD(GetFlipStatus)(THIS_ DWORD) PURE; - STDMETHOD(GetOverlayPosition)(THIS_ LPLONG, LPLONG ) PURE; - STDMETHOD(GetPalette)(THIS_ LPDIRECTDRAWPALETTE FAR*) PURE; - STDMETHOD(GetPixelFormat)(THIS_ LPDDPIXELFORMAT) PURE; - STDMETHOD(GetSurfaceDesc)(THIS_ LPDDSURFACEDESC) PURE; - STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW, LPDDSURFACEDESC) PURE; - STDMETHOD(IsLost)(THIS) PURE; - STDMETHOD(Lock)(THIS_ LPRECT,LPDDSURFACEDESC,DWORD,HANDLE) PURE; - STDMETHOD(ReleaseDC)(THIS_ HDC) PURE; - STDMETHOD(Restore)(THIS) PURE; - STDMETHOD(SetClipper)(THIS_ LPDIRECTDRAWCLIPPER) PURE; - STDMETHOD(SetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE; - STDMETHOD(SetOverlayPosition)(THIS_ LONG, LONG ) PURE; - STDMETHOD(SetPalette)(THIS_ LPDIRECTDRAWPALETTE) PURE; - STDMETHOD(Unlock)(THIS_ LPVOID) PURE; - STDMETHOD(UpdateOverlay)(THIS_ LPRECT, LPDIRECTDRAWSURFACE2,LPRECT,DWORD, LPDDOVERLAYFX) PURE; - STDMETHOD(UpdateOverlayDisplay)(THIS_ DWORD) PURE; - STDMETHOD(UpdateOverlayZOrder)(THIS_ DWORD, LPDIRECTDRAWSURFACE2) PURE; - /*** Added in the v2 interface ***/ - STDMETHOD(GetDDInterface)(THIS_ LPVOID FAR *) PURE; - STDMETHOD(PageLock)(THIS_ DWORD) PURE; - STDMETHOD(PageUnlock)(THIS_ DWORD) PURE; -}; - -#if !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectDrawSurface2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IDirectDrawSurface2_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IDirectDrawSurface2_Release(p) (p)->lpVtbl->Release(p) -#define IDirectDrawSurface2_AddAttachedSurface(p,a) (p)->lpVtbl->AddAttachedSurface(p,a) -#define IDirectDrawSurface2_AddOverlayDirtyRect(p,a) (p)->lpVtbl->AddOverlayDirtyRect(p,a) -#define IDirectDrawSurface2_Blt(p,a,b,c,d,e) (p)->lpVtbl->Blt(p,a,b,c,d,e) -#define IDirectDrawSurface2_BltBatch(p,a,b,c) (p)->lpVtbl->BltBatch(p,a,b,c) -#define IDirectDrawSurface2_BltFast(p,a,b,c,d,e) (p)->lpVtbl->BltFast(p,a,b,c,d,e) -#define IDirectDrawSurface2_DeleteAttachedSurface(p,a,b) (p)->lpVtbl->DeleteAttachedSurface(p,a,b) -#define IDirectDrawSurface2_EnumAttachedSurfaces(p,a,b) (p)->lpVtbl->EnumAttachedSurfaces(p,a,b) -#define IDirectDrawSurface2_EnumOverlayZOrders(p,a,b,c) (p)->lpVtbl->EnumOverlayZOrders(p,a,b,c) -#define IDirectDrawSurface2_Flip(p,a,b) (p)->lpVtbl->Flip(p,a,b) -#define IDirectDrawSurface2_GetAttachedSurface(p,a,b) (p)->lpVtbl->GetAttachedSurface(p,a,b) -#define IDirectDrawSurface2_GetBltStatus(p,a) (p)->lpVtbl->GetBltStatus(p,a) -#define IDirectDrawSurface2_GetCaps(p,b) (p)->lpVtbl->GetCaps(p,b) -#define IDirectDrawSurface2_GetClipper(p,a) (p)->lpVtbl->GetClipper(p,a) -#define IDirectDrawSurface2_GetColorKey(p,a,b) (p)->lpVtbl->GetColorKey(p,a,b) -#define IDirectDrawSurface2_GetDC(p,a) (p)->lpVtbl->GetDC(p,a) -#define IDirectDrawSurface2_GetFlipStatus(p,a) (p)->lpVtbl->GetFlipStatus(p,a) -#define IDirectDrawSurface2_GetOverlayPosition(p,a,b) (p)->lpVtbl->GetOverlayPosition(p,a,b) -#define IDirectDrawSurface2_GetPalette(p,a) (p)->lpVtbl->GetPalette(p,a) -#define IDirectDrawSurface2_GetPixelFormat(p,a) (p)->lpVtbl->GetPixelFormat(p,a) -#define IDirectDrawSurface2_GetSurfaceDesc(p,a) (p)->lpVtbl->GetSurfaceDesc(p,a) -#define IDirectDrawSurface2_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b) -#define IDirectDrawSurface2_IsLost(p) (p)->lpVtbl->IsLost(p) -#define IDirectDrawSurface2_Lock(p,a,b,c,d) (p)->lpVtbl->Lock(p,a,b,c,d) -#define IDirectDrawSurface2_ReleaseDC(p,a) (p)->lpVtbl->ReleaseDC(p,a) -#define IDirectDrawSurface2_Restore(p) (p)->lpVtbl->Restore(p) -#define IDirectDrawSurface2_SetClipper(p,a) (p)->lpVtbl->SetClipper(p,a) -#define IDirectDrawSurface2_SetColorKey(p,a,b) (p)->lpVtbl->SetColorKey(p,a,b) -#define IDirectDrawSurface2_SetOverlayPosition(p,a,b) (p)->lpVtbl->SetOverlayPosition(p,a,b) -#define IDirectDrawSurface2_SetPalette(p,a) (p)->lpVtbl->SetPalette(p,a) -#define IDirectDrawSurface2_Unlock(p,b) (p)->lpVtbl->Unlock(p,b) -#define IDirectDrawSurface2_UpdateOverlay(p,a,b,c,d,e) (p)->lpVtbl->UpdateOverlay(p,a,b,c,d,e) -#define IDirectDrawSurface2_UpdateOverlayDisplay(p,a) (p)->lpVtbl->UpdateOverlayDisplay(p,a) -#define IDirectDrawSurface2_UpdateOverlayZOrder(p,a,b) (p)->lpVtbl->UpdateOverlayZOrder(p,a,b) -#define IDirectDrawSurface2_GetDDInterface(p,a) (p)->lpVtbl->GetDDInterface(p,a) -#define IDirectDrawSurface2_PageLock(p,a) (p)->lpVtbl->PageLock(p,a) -#define IDirectDrawSurface2_PageUnlock(p,a) (p)->lpVtbl->PageUnlock(p,a) -#else -#define IDirectDrawSurface2_QueryInterface(p,a,b) (p)->QueryInterface(a,b) -#define IDirectDrawSurface2_AddRef(p) (p)->AddRef() -#define IDirectDrawSurface2_Release(p) (p)->Release() -#define IDirectDrawSurface2_AddAttachedSurface(p,a) (p)->AddAttachedSurface(a) -#define IDirectDrawSurface2_AddOverlayDirtyRect(p,a) (p)->AddOverlayDirtyRect(a) -#define IDirectDrawSurface2_Blt(p,a,b,c,d,e) (p)->Blt(a,b,c,d,e) -#define IDirectDrawSurface2_BltBatch(p,a,b,c) (p)->BltBatch(a,b,c) -#define IDirectDrawSurface2_BltFast(p,a,b,c,d,e) (p)->BltFast(a,b,c,d,e) -#define IDirectDrawSurface2_DeleteAttachedSurface(p,a,b) (p)->DeleteAttachedSurface(a,b) -#define IDirectDrawSurface2_EnumAttachedSurfaces(p,a,b) (p)->EnumAttachedSurfaces(a,b) -#define IDirectDrawSurface2_EnumOverlayZOrders(p,a,b,c) (p)->EnumOverlayZOrders(a,b,c) -#define IDirectDrawSurface2_Flip(p,a,b) (p)->Flip(a,b) -#define IDirectDrawSurface2_GetAttachedSurface(p,a,b) (p)->GetAttachedSurface(a,b) -#define IDirectDrawSurface2_GetBltStatus(p,a) (p)->GetBltStatus(a) -#define IDirectDrawSurface2_GetCaps(p,b) (p)->GetCaps(b) -#define IDirectDrawSurface2_GetClipper(p,a) (p)->GetClipper(a) -#define IDirectDrawSurface2_GetColorKey(p,a,b) (p)->GetColorKey(a,b) -#define IDirectDrawSurface2_GetDC(p,a) (p)->GetDC(a) -#define IDirectDrawSurface2_GetFlipStatus(p,a) (p)->GetFlipStatus(a) -#define IDirectDrawSurface2_GetOverlayPosition(p,a,b) (p)->GetOverlayPosition(a,b) -#define IDirectDrawSurface2_GetPalette(p,a) (p)->GetPalette(a) -#define IDirectDrawSurface2_GetPixelFormat(p,a) (p)->GetPixelFormat(a) -#define IDirectDrawSurface2_GetSurfaceDesc(p,a) (p)->GetSurfaceDesc(a) -#define IDirectDrawSurface2_Initialize(p,a,b) (p)->Initialize(a,b) -#define IDirectDrawSurface2_IsLost(p) (p)->IsLost() -#define IDirectDrawSurface2_Lock(p,a,b,c,d) (p)->Lock(a,b,c,d) -#define IDirectDrawSurface2_ReleaseDC(p,a) (p)->ReleaseDC(a) -#define IDirectDrawSurface2_Restore(p) (p)->Restore() -#define IDirectDrawSurface2_SetClipper(p,a) (p)->SetClipper(a) -#define IDirectDrawSurface2_SetColorKey(p,a,b) (p)->SetColorKey(a,b) -#define IDirectDrawSurface2_SetOverlayPosition(p,a,b) (p)->SetOverlayPosition(a,b) -#define IDirectDrawSurface2_SetPalette(p,a) (p)->SetPalette(a) -#define IDirectDrawSurface2_Unlock(p,b) (p)->Unlock(b) -#define IDirectDrawSurface2_UpdateOverlay(p,a,b,c,d,e) (p)->UpdateOverlay(a,b,c,d,e) -#define IDirectDrawSurface2_UpdateOverlayDisplay(p,a) (p)->UpdateOverlayDisplay(a) -#define IDirectDrawSurface2_UpdateOverlayZOrder(p,a,b) (p)->UpdateOverlayZOrder(a,b) -#define IDirectDrawSurface2_GetDDInterface(p,a) (p)->GetDDInterface(a) -#define IDirectDrawSurface2_PageLock(p,a) (p)->PageLock(a) -#define IDirectDrawSurface2_PageUnlock(p,a) (p)->PageUnlock(a) -#endif - -/* - * IDirectDrawSurface3 and related interfaces - */ -#undef INTERFACE -#define INTERFACE IDirectDrawSurface3 -DECLARE_INTERFACE_( IDirectDrawSurface3, IUnknown ) -{ - /*** IUnknown methods ***/ - STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - /*** IDirectDrawSurface methods ***/ - STDMETHOD(AddAttachedSurface)(THIS_ LPDIRECTDRAWSURFACE3) PURE; - STDMETHOD(AddOverlayDirtyRect)(THIS_ LPRECT) PURE; - STDMETHOD(Blt)(THIS_ LPRECT,LPDIRECTDRAWSURFACE3, LPRECT,DWORD, LPDDBLTFX) PURE; - STDMETHOD(BltBatch)(THIS_ LPDDBLTBATCH, DWORD, DWORD ) PURE; - STDMETHOD(BltFast)(THIS_ DWORD,DWORD,LPDIRECTDRAWSURFACE3, LPRECT,DWORD) PURE; - STDMETHOD(DeleteAttachedSurface)(THIS_ DWORD,LPDIRECTDRAWSURFACE3) PURE; - STDMETHOD(EnumAttachedSurfaces)(THIS_ LPVOID,LPDDENUMSURFACESCALLBACK) PURE; - STDMETHOD(EnumOverlayZOrders)(THIS_ DWORD,LPVOID,LPDDENUMSURFACESCALLBACK) PURE; - STDMETHOD(Flip)(THIS_ LPDIRECTDRAWSURFACE3, DWORD) PURE; - STDMETHOD(GetAttachedSurface)(THIS_ LPDDSCAPS, LPDIRECTDRAWSURFACE3 FAR *) PURE; - STDMETHOD(GetBltStatus)(THIS_ DWORD) PURE; - STDMETHOD(GetCaps)(THIS_ LPDDSCAPS) PURE; - STDMETHOD(GetClipper)(THIS_ LPDIRECTDRAWCLIPPER FAR*) PURE; - STDMETHOD(GetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE; - STDMETHOD(GetDC)(THIS_ HDC FAR *) PURE; - STDMETHOD(GetFlipStatus)(THIS_ DWORD) PURE; - STDMETHOD(GetOverlayPosition)(THIS_ LPLONG, LPLONG ) PURE; - STDMETHOD(GetPalette)(THIS_ LPDIRECTDRAWPALETTE FAR*) PURE; - STDMETHOD(GetPixelFormat)(THIS_ LPDDPIXELFORMAT) PURE; - STDMETHOD(GetSurfaceDesc)(THIS_ LPDDSURFACEDESC) PURE; - STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW, LPDDSURFACEDESC) PURE; - STDMETHOD(IsLost)(THIS) PURE; - STDMETHOD(Lock)(THIS_ LPRECT,LPDDSURFACEDESC,DWORD,HANDLE) PURE; - STDMETHOD(ReleaseDC)(THIS_ HDC) PURE; - STDMETHOD(Restore)(THIS) PURE; - STDMETHOD(SetClipper)(THIS_ LPDIRECTDRAWCLIPPER) PURE; - STDMETHOD(SetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE; - STDMETHOD(SetOverlayPosition)(THIS_ LONG, LONG ) PURE; - STDMETHOD(SetPalette)(THIS_ LPDIRECTDRAWPALETTE) PURE; - STDMETHOD(Unlock)(THIS_ LPVOID) PURE; - STDMETHOD(UpdateOverlay)(THIS_ LPRECT, LPDIRECTDRAWSURFACE3,LPRECT,DWORD, LPDDOVERLAYFX) PURE; - STDMETHOD(UpdateOverlayDisplay)(THIS_ DWORD) PURE; - STDMETHOD(UpdateOverlayZOrder)(THIS_ DWORD, LPDIRECTDRAWSURFACE3) PURE; - /*** Added in the v2 interface ***/ - STDMETHOD(GetDDInterface)(THIS_ LPVOID FAR *) PURE; - STDMETHOD(PageLock)(THIS_ DWORD) PURE; - STDMETHOD(PageUnlock)(THIS_ DWORD) PURE; - /*** Added in the V3 interface ***/ - STDMETHOD(SetSurfaceDesc)(THIS_ LPDDSURFACEDESC, DWORD) PURE; -}; - -#if !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectDrawSurface3_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IDirectDrawSurface3_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IDirectDrawSurface3_Release(p) (p)->lpVtbl->Release(p) -#define IDirectDrawSurface3_AddAttachedSurface(p,a) (p)->lpVtbl->AddAttachedSurface(p,a) -#define IDirectDrawSurface3_AddOverlayDirtyRect(p,a) (p)->lpVtbl->AddOverlayDirtyRect(p,a) -#define IDirectDrawSurface3_Blt(p,a,b,c,d,e) (p)->lpVtbl->Blt(p,a,b,c,d,e) -#define IDirectDrawSurface3_BltBatch(p,a,b,c) (p)->lpVtbl->BltBatch(p,a,b,c) -#define IDirectDrawSurface3_BltFast(p,a,b,c,d,e) (p)->lpVtbl->BltFast(p,a,b,c,d,e) -#define IDirectDrawSurface3_DeleteAttachedSurface(p,a,b) (p)->lpVtbl->DeleteAttachedSurface(p,a,b) -#define IDirectDrawSurface3_EnumAttachedSurfaces(p,a,b) (p)->lpVtbl->EnumAttachedSurfaces(p,a,b) -#define IDirectDrawSurface3_EnumOverlayZOrders(p,a,b,c) (p)->lpVtbl->EnumOverlayZOrders(p,a,b,c) -#define IDirectDrawSurface3_Flip(p,a,b) (p)->lpVtbl->Flip(p,a,b) -#define IDirectDrawSurface3_GetAttachedSurface(p,a,b) (p)->lpVtbl->GetAttachedSurface(p,a,b) -#define IDirectDrawSurface3_GetBltStatus(p,a) (p)->lpVtbl->GetBltStatus(p,a) -#define IDirectDrawSurface3_GetCaps(p,b) (p)->lpVtbl->GetCaps(p,b) -#define IDirectDrawSurface3_GetClipper(p,a) (p)->lpVtbl->GetClipper(p,a) -#define IDirectDrawSurface3_GetColorKey(p,a,b) (p)->lpVtbl->GetColorKey(p,a,b) -#define IDirectDrawSurface3_GetDC(p,a) (p)->lpVtbl->GetDC(p,a) -#define IDirectDrawSurface3_GetFlipStatus(p,a) (p)->lpVtbl->GetFlipStatus(p,a) -#define IDirectDrawSurface3_GetOverlayPosition(p,a,b) (p)->lpVtbl->GetOverlayPosition(p,a,b) -#define IDirectDrawSurface3_GetPalette(p,a) (p)->lpVtbl->GetPalette(p,a) -#define IDirectDrawSurface3_GetPixelFormat(p,a) (p)->lpVtbl->GetPixelFormat(p,a) -#define IDirectDrawSurface3_GetSurfaceDesc(p,a) (p)->lpVtbl->GetSurfaceDesc(p,a) -#define IDirectDrawSurface3_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b) -#define IDirectDrawSurface3_IsLost(p) (p)->lpVtbl->IsLost(p) -#define IDirectDrawSurface3_Lock(p,a,b,c,d) (p)->lpVtbl->Lock(p,a,b,c,d) -#define IDirectDrawSurface3_ReleaseDC(p,a) (p)->lpVtbl->ReleaseDC(p,a) -#define IDirectDrawSurface3_Restore(p) (p)->lpVtbl->Restore(p) -#define IDirectDrawSurface3_SetClipper(p,a) (p)->lpVtbl->SetClipper(p,a) -#define IDirectDrawSurface3_SetColorKey(p,a,b) (p)->lpVtbl->SetColorKey(p,a,b) -#define IDirectDrawSurface3_SetOverlayPosition(p,a,b) (p)->lpVtbl->SetOverlayPosition(p,a,b) -#define IDirectDrawSurface3_SetPalette(p,a) (p)->lpVtbl->SetPalette(p,a) -#define IDirectDrawSurface3_Unlock(p,b) (p)->lpVtbl->Unlock(p,b) -#define IDirectDrawSurface3_UpdateOverlay(p,a,b,c,d,e) (p)->lpVtbl->UpdateOverlay(p,a,b,c,d,e) -#define IDirectDrawSurface3_UpdateOverlayDisplay(p,a) (p)->lpVtbl->UpdateOverlayDisplay(p,a) -#define IDirectDrawSurface3_UpdateOverlayZOrder(p,a,b) (p)->lpVtbl->UpdateOverlayZOrder(p,a,b) -#define IDirectDrawSurface3_GetDDInterface(p,a) (p)->lpVtbl->GetDDInterface(p,a) -#define IDirectDrawSurface3_PageLock(p,a) (p)->lpVtbl->PageLock(p,a) -#define IDirectDrawSurface3_PageUnlock(p,a) (p)->lpVtbl->PageUnlock(p,a) -#define IDirectDrawSurface3_SetSurfaceDesc(p,a,b) (p)->lpVtbl->SetSurfaceDesc(p,a,b) -#else -#define IDirectDrawSurface3_QueryInterface(p,a,b) (p)->QueryInterface(a,b) -#define IDirectDrawSurface3_AddRef(p) (p)->AddRef() -#define IDirectDrawSurface3_Release(p) (p)->Release() -#define IDirectDrawSurface3_AddAttachedSurface(p,a) (p)->AddAttachedSurface(a) -#define IDirectDrawSurface3_AddOverlayDirtyRect(p,a) (p)->AddOverlayDirtyRect(a) -#define IDirectDrawSurface3_Blt(p,a,b,c,d,e) (p)->Blt(a,b,c,d,e) -#define IDirectDrawSurface3_BltBatch(p,a,b,c) (p)->BltBatch(a,b,c) -#define IDirectDrawSurface3_BltFast(p,a,b,c,d,e) (p)->BltFast(a,b,c,d,e) -#define IDirectDrawSurface3_DeleteAttachedSurface(p,a,b) (p)->DeleteAttachedSurface(a,b) -#define IDirectDrawSurface3_EnumAttachedSurfaces(p,a,b) (p)->EnumAttachedSurfaces(a,b) -#define IDirectDrawSurface3_EnumOverlayZOrders(p,a,b,c) (p)->EnumOverlayZOrders(a,b,c) -#define IDirectDrawSurface3_Flip(p,a,b) (p)->Flip(a,b) -#define IDirectDrawSurface3_GetAttachedSurface(p,a,b) (p)->GetAttachedSurface(a,b) -#define IDirectDrawSurface3_GetBltStatus(p,a) (p)->GetBltStatus(a) -#define IDirectDrawSurface3_GetCaps(p,b) (p)->GetCaps(b) -#define IDirectDrawSurface3_GetClipper(p,a) (p)->GetClipper(a) -#define IDirectDrawSurface3_GetColorKey(p,a,b) (p)->GetColorKey(a,b) -#define IDirectDrawSurface3_GetDC(p,a) (p)->GetDC(a) -#define IDirectDrawSurface3_GetFlipStatus(p,a) (p)->GetFlipStatus(a) -#define IDirectDrawSurface3_GetOverlayPosition(p,a,b) (p)->GetOverlayPosition(a,b) -#define IDirectDrawSurface3_GetPalette(p,a) (p)->GetPalette(a) -#define IDirectDrawSurface3_GetPixelFormat(p,a) (p)->GetPixelFormat(a) -#define IDirectDrawSurface3_GetSurfaceDesc(p,a) (p)->GetSurfaceDesc(a) -#define IDirectDrawSurface3_Initialize(p,a,b) (p)->Initialize(a,b) -#define IDirectDrawSurface3_IsLost(p) (p)->IsLost() -#define IDirectDrawSurface3_Lock(p,a,b,c,d) (p)->Lock(a,b,c,d) -#define IDirectDrawSurface3_ReleaseDC(p,a) (p)->ReleaseDC(a) -#define IDirectDrawSurface3_Restore(p) (p)->Restore() -#define IDirectDrawSurface3_SetClipper(p,a) (p)->SetClipper(a) -#define IDirectDrawSurface3_SetColorKey(p,a,b) (p)->SetColorKey(a,b) -#define IDirectDrawSurface3_SetOverlayPosition(p,a,b) (p)->SetOverlayPosition(a,b) -#define IDirectDrawSurface3_SetPalette(p,a) (p)->SetPalette(a) -#define IDirectDrawSurface3_Unlock(p,b) (p)->Unlock(b) -#define IDirectDrawSurface3_UpdateOverlay(p,a,b,c,d,e) (p)->UpdateOverlay(a,b,c,d,e) -#define IDirectDrawSurface3_UpdateOverlayDisplay(p,a) (p)->UpdateOverlayDisplay(a) -#define IDirectDrawSurface3_UpdateOverlayZOrder(p,a,b) (p)->UpdateOverlayZOrder(a,b) -#define IDirectDrawSurface3_GetDDInterface(p,a) (p)->GetDDInterface(a) -#define IDirectDrawSurface3_PageLock(p,a) (p)->PageLock(a) -#define IDirectDrawSurface3_PageUnlock(p,a) (p)->PageUnlock(a) -#define IDirectDrawSurface3_SetSurfaceDesc(p,a,b) (p)->SetSurfaceDesc(a,b) -#endif - -/* - * IDirectDrawColorControl - */ -#if defined( _WIN32 ) && !defined( _NO_COM ) -#undef INTERFACE -#define INTERFACE IDirectDrawColorControl -DECLARE_INTERFACE_( IDirectDrawColorControl, IUnknown ) -{ - /*** IUnknown methods ***/ - STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - /*** IDirectDrawColorControl methods ***/ - STDMETHOD(GetColorControls)(THIS_ LPDDCOLORCONTROL) PURE; - STDMETHOD(SetColorControls)(THIS_ LPDDCOLORCONTROL) PURE; -}; - -#if !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectDrawColorControl_QueryInterface(p, a, b) (p)->lpVtbl->QueryInterface(p, a, b) -#define IDirectDrawColorControl_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IDirectDrawColorControl_Release(p) (p)->lpVtbl->Release(p) -#define IDirectDrawColorControl_GetColorControls(p, a) (p)->lpVtbl->GetColorControls(p, a) -#define IDirectDrawColorControl_SetColorControls(p, a) (p)->lpVtbl->SetColorControls(p, a) -#else -#define IDirectDrawColorControl_QueryInterface(p, a, b) (p)->QueryInterface(a, b) -#define IDirectDrawColorControl_AddRef(p) (p)->AddRef() -#define IDirectDrawColorControl_Release(p) (p)->Release() -#define IDirectDrawColorControl_GetColorControls(p, a) (p)->GetColorControls(a) -#define IDirectDrawColorControl_SetColorControls(p, a) (p)->SetColorControls(a) -#endif - -#endif - - - -#endif - - -/* - * DDSURFACEDESC - */ -typedef struct _DDSURFACEDESC -{ - DWORD dwSize; // size of the DDSURFACEDESC structure - DWORD dwFlags; // determines what fields are valid - DWORD dwHeight; // height of surface to be created - DWORD dwWidth; // width of input surface - union - { - LONG lPitch; // distance to start of next line (return value only) - DWORD dwLinearSize; // Formless late-allocated optimized surface size - }; - DWORD dwBackBufferCount; // number of back buffers requested - union - { - DWORD dwMipMapCount; // number of mip-map levels requested - DWORD dwZBufferBitDepth; // depth of Z buffer requested - DWORD dwRefreshRate; // refresh rate (used when display mode is described) - }; - DWORD dwAlphaBitDepth; // depth of alpha buffer requested - DWORD dwReserved; // reserved - LPVOID lpSurface; // pointer to the associated surface memory - DDCOLORKEY ddckCKDestOverlay; // color key for destination overlay use - DDCOLORKEY ddckCKDestBlt; // color key for destination blt use - DDCOLORKEY ddckCKSrcOverlay; // color key for source overlay use - DDCOLORKEY ddckCKSrcBlt; // color key for source blt use - DDPIXELFORMAT ddpfPixelFormat; // pixel format description of the surface - DDSCAPS ddsCaps; // direct draw surface capabilities -} DDSURFACEDESC; - -/* - * ddsCaps field is valid. - */ -#define DDSD_CAPS 0x00000001l // default - -/* - * dwHeight field is valid. - */ -#define DDSD_HEIGHT 0x00000002l - -/* - * dwWidth field is valid. - */ -#define DDSD_WIDTH 0x00000004l - -/* - * lPitch is valid. - */ -#define DDSD_PITCH 0x00000008l - -/* - * dwBackBufferCount is valid. - */ -#define DDSD_BACKBUFFERCOUNT 0x00000020l - -/* - * dwZBufferBitDepth is valid. - */ -#define DDSD_ZBUFFERBITDEPTH 0x00000040l - -/* - * dwAlphaBitDepth is valid. - */ -#define DDSD_ALPHABITDEPTH 0x00000080l - - -/* - * lpSurface is valid. - */ -#define DDSD_LPSURFACE 0x00000800l - -/* - * ddpfPixelFormat is valid. - */ -#define DDSD_PIXELFORMAT 0x00001000l - -/* - * ddckCKDestOverlay is valid. - */ -#define DDSD_CKDESTOVERLAY 0x00002000l - -/* - * ddckCKDestBlt is valid. - */ -#define DDSD_CKDESTBLT 0x00004000l - -/* - * ddckCKSrcOverlay is valid. - */ -#define DDSD_CKSRCOVERLAY 0x00008000l - -/* - * ddckCKSrcBlt is valid. - */ -#define DDSD_CKSRCBLT 0x00010000l - -/* - * dwMipMapCount is valid. - */ -#define DDSD_MIPMAPCOUNT 0x00020000l - - /* - * dwRefreshRate is valid - */ -#define DDSD_REFRESHRATE 0x00040000l - -/* - * dwLinearSize is valid - */ -#define DDSD_LINEARSIZE 0x00080000l - -/* - * All input fields are valid. - */ -#define DDSD_ALL 0x000ff9eel - - -/* - * DDCOLORCONTROL - */ -typedef struct _DDCOLORCONTROL -{ - DWORD dwSize; - DWORD dwFlags; - LONG lBrightness; - LONG lContrast; - LONG lHue; - LONG lSaturation; - LONG lSharpness; - LONG lGamma; - LONG lColorEnable; - DWORD dwReserved1; -} DDCOLORCONTROL; - - -/* - * lBrightness field is valid. - */ -#define DDCOLOR_BRIGHTNESS 0x00000001l - -/* - * lContrast field is valid. - */ -#define DDCOLOR_CONTRAST 0x00000002l - -/* - * lHue field is valid. - */ -#define DDCOLOR_HUE 0x00000004l - -/* - * lSaturation field is valid. - */ -#define DDCOLOR_SATURATION 0x00000008l - -/* - * lSharpness field is valid. - */ -#define DDCOLOR_SHARPNESS 0x00000010l - -/* - * lGamma field is valid. - */ -#define DDCOLOR_GAMMA 0x00000020l - -/* - * lColorEnable field is valid. - */ -#define DDCOLOR_COLORENABLE 0x00000040l - - - -/*============================================================================ - * - * Direct Draw Capability Flags - * - * These flags are used to describe the capabilities of a given Surface. - * All flags are bit flags. - * - *==========================================================================*/ - -/**************************************************************************** - * - * DIRECTDRAWSURFACE CAPABILITY FLAGS - * - ****************************************************************************/ - -/* - * This bit is reserved. It should not be specified. - */ -#define DDSCAPS_RESERVED1 0x00000001l - -/* - * Indicates that this surface contains alpha-only information. - * (To determine if a surface is RGBA/YUVA, the pixel format must be - * interrogated.) - */ -#define DDSCAPS_ALPHA 0x00000002l - -/* - * Indicates that this surface is a backbuffer. It is generally - * set by CreateSurface when the DDSCAPS_FLIP capability bit is set. - * It indicates that this surface is THE back buffer of a surface - * flipping structure. DirectDraw supports N surfaces in a - * surface flipping structure. Only the surface that immediately - * precedeces the DDSCAPS_FRONTBUFFER has this capability bit set. - * The other surfaces are identified as back buffers by the presence - * of the DDSCAPS_FLIP capability, their attachment order, and the - * absence of the DDSCAPS_FRONTBUFFER and DDSCAPS_BACKBUFFER - * capabilities. The bit is sent to CreateSurface when a standalone - * back buffer is being created. This surface could be attached to - * a front buffer and/or back buffers to form a flipping surface - * structure after the CreateSurface call. See AddAttachments for - * a detailed description of the behaviors in this case. - */ -#define DDSCAPS_BACKBUFFER 0x00000004l - -/* - * Indicates a complex surface structure is being described. A - * complex surface structure results in the creation of more than - * one surface. The additional surfaces are attached to the root - * surface. The complex structure can only be destroyed by - * destroying the root. - */ -#define DDSCAPS_COMPLEX 0x00000008l - -/* - * Indicates that this surface is a part of a surface flipping structure. - * When it is passed to CreateSurface the DDSCAPS_FRONTBUFFER and - * DDSCAP_BACKBUFFER bits are not set. They are set by CreateSurface - * on the resulting creations. The dwBackBufferCount field in the - * DDSURFACEDESC structure must be set to at least 1 in order for - * the CreateSurface call to succeed. The DDSCAPS_COMPLEX capability - * must always be set with creating multiple surfaces through CreateSurface. - */ -#define DDSCAPS_FLIP 0x00000010l - -/* - * Indicates that this surface is THE front buffer of a surface flipping - * structure. It is generally set by CreateSurface when the DDSCAPS_FLIP - * capability bit is set. - * If this capability is sent to CreateSurface then a standalonw front buffer - * is created. This surface will not have the DDSCAPS_FLIP capability. - * It can be attached to other back buffers to form a flipping structure. - * See AddAttachments for a detailed description of the behaviors in this - * case. - */ -#define DDSCAPS_FRONTBUFFER 0x00000020l - -/* - * Indicates that this surface is any offscreen surface that is not an overlay, - * texture, zbuffer, front buffer, back buffer, or alpha surface. It is used - * to identify plain vanilla surfaces. - */ -#define DDSCAPS_OFFSCREENPLAIN 0x00000040l - -/* - * Indicates that this surface is an overlay. It may or may not be directly visible - * depending on whether or not it is currently being overlayed onto the primary - * surface. DDSCAPS_VISIBLE can be used to determine whether or not it is being - * overlayed at the moment. - */ -#define DDSCAPS_OVERLAY 0x00000080l - -/* - * Indicates that unique DirectDrawPalette objects can be created and - * attached to this surface. - */ -#define DDSCAPS_PALETTE 0x00000100l - -/* - * Indicates that this surface is the primary surface. The primary - * surface represents what the user is seeing at the moment. - */ -#define DDSCAPS_PRIMARYSURFACE 0x00000200l - -/* - * Indicates that this surface is the primary surface for the left eye. - * The primary surface for the left eye represents what the user is seeing - * at the moment with the users left eye. When this surface is created the - * DDSCAPS_PRIMARYSURFACE represents what the user is seeing with the users - * right eye. - */ -#define DDSCAPS_PRIMARYSURFACELEFT 0x00000400l - -/* - * Indicates that this surface memory was allocated in system memory - */ -#define DDSCAPS_SYSTEMMEMORY 0x00000800l - -/* - * Indicates that this surface can be used as a 3D texture. It does not - * indicate whether or not the surface is being used for that purpose. - */ -#define DDSCAPS_TEXTURE 0x00001000l - -/* - * Indicates that a surface may be a destination for 3D rendering. This - * bit must be set in order to query for a Direct3D Device Interface - * from this surface. - */ -#define DDSCAPS_3DDEVICE 0x00002000l - -/* - * Indicates that this surface exists in video memory. - */ -#define DDSCAPS_VIDEOMEMORY 0x00004000l - -/* - * Indicates that changes made to this surface are immediately visible. - * It is always set for the primary surface and is set for overlays while - * they are being overlayed and texture maps while they are being textured. - */ -#define DDSCAPS_VISIBLE 0x00008000l - -/* - * Indicates that only writes are permitted to the surface. Read accesses - * from the surface may or may not generate a protection fault, but the - * results of a read from this surface will not be meaningful. READ ONLY. - */ -#define DDSCAPS_WRITEONLY 0x00010000l - -/* - * Indicates that this surface is a z buffer. A z buffer does not contain - * displayable information. Instead it contains bit depth information that is - * used to determine which pixels are visible and which are obscured. - */ -#define DDSCAPS_ZBUFFER 0x00020000l - -/* - * Indicates surface will have a DC associated long term - */ -#define DDSCAPS_OWNDC 0x00040000l - -/* - * Indicates surface should be able to receive live video - */ -#define DDSCAPS_LIVEVIDEO 0x00080000l - -/* - * Indicates surface should be able to have a stream decompressed - * to it by the hardware. - */ -#define DDSCAPS_HWCODEC 0x00100000l - -/* - * Surface is a ModeX surface. - * - */ -#define DDSCAPS_MODEX 0x00200000l - -/* - * Indicates surface is one level of a mip-map. This surface will - * be attached to other DDSCAPS_MIPMAP surfaces to form the mip-map. - * This can be done explicitly, by creating a number of surfaces and - * attaching them with AddAttachedSurface or by implicitly by CreateSurface. - * If this bit is set then DDSCAPS_TEXTURE must also be set. - */ -#define DDSCAPS_MIPMAP 0x00400000l - -/* - * This bit is reserved. It should not be specified. - */ -#define DDSCAPS_RESERVED2 0x00800000l - - -/* - * Indicates that memory for the surface is not allocated until the surface - * is loaded (via the Direct3D texture Load() function). - */ -#define DDSCAPS_ALLOCONLOAD 0x04000000l - -/* - * Indicates that the surface will recieve data from a video port. - */ -#define DDSCAPS_VIDEOPORT 0x08000000l - -/* - * Indicates that a video memory surface is resident in true, local video - * memory rather than non-local video memory. If this flag is specified then - * so must DDSCAPS_VIDEOMEMORY. This flag is mutually exclusive with - * DDSCAPS_NONLOCALVIDMEM. - */ -#define DDSCAPS_LOCALVIDMEM 0x10000000l - -/* - * Indicates that a video memory surface is resident in non-local video - * memory rather than true, local video memory. If this flag is specified - * then so must DDSCAPS_VIDEOMEMORY. This flag is mutually exclusive with - * DDSCAPS_LOCALVIDMEM. - */ -#define DDSCAPS_NONLOCALVIDMEM 0x20000000l - -/* - * Indicates that this surface is a standard VGA mode surface, and not a - * ModeX surface. (This flag will never be set in combination with the - * DDSCAPS_MODEX flag). - */ -#define DDSCAPS_STANDARDVGAMODE 0x40000000l - -/* - * Indicates that this surface will be an optimized surface. This flag is - * currently only valid in conjunction with the DDSCAPS_TEXTURE flag. The surface - * will be created without any underlying video memory until loaded. - */ -#define DDSCAPS_OPTIMIZED 0x80000000l - - - - /**************************************************************************** - * - * DIRECTDRAW DRIVER CAPABILITY FLAGS - * - ****************************************************************************/ - -/* - * Display hardware has 3D acceleration. - */ -#define DDCAPS_3D 0x00000001l - -/* - * Indicates that DirectDraw will support only dest rectangles that are aligned - * on DIRECTDRAWCAPS.dwAlignBoundaryDest boundaries of the surface, respectively. - * READ ONLY. - */ -#define DDCAPS_ALIGNBOUNDARYDEST 0x00000002l - -/* - * Indicates that DirectDraw will support only source rectangles whose sizes in - * BYTEs are DIRECTDRAWCAPS.dwAlignSizeDest multiples, respectively. READ ONLY. - */ -#define DDCAPS_ALIGNSIZEDEST 0x00000004l -/* - * Indicates that DirectDraw will support only source rectangles that are aligned - * on DIRECTDRAWCAPS.dwAlignBoundarySrc boundaries of the surface, respectively. - * READ ONLY. - */ -#define DDCAPS_ALIGNBOUNDARYSRC 0x00000008l - -/* - * Indicates that DirectDraw will support only source rectangles whose sizes in - * BYTEs are DIRECTDRAWCAPS.dwAlignSizeSrc multiples, respectively. READ ONLY. - */ -#define DDCAPS_ALIGNSIZESRC 0x00000010l - -/* - * Indicates that DirectDraw will create video memory surfaces that have a stride - * alignment equal to DIRECTDRAWCAPS.dwAlignStride. READ ONLY. - */ -#define DDCAPS_ALIGNSTRIDE 0x00000020l - -/* - * Display hardware is capable of blt operations. - */ -#define DDCAPS_BLT 0x00000040l - -/* - * Display hardware is capable of asynchronous blt operations. - */ -#define DDCAPS_BLTQUEUE 0x00000080l - -/* - * Display hardware is capable of color space conversions during the blt operation. - */ -#define DDCAPS_BLTFOURCC 0x00000100l - -/* - * Display hardware is capable of stretching during blt operations. - */ -#define DDCAPS_BLTSTRETCH 0x00000200l - -/* - * Display hardware is shared with GDI. - */ -#define DDCAPS_GDI 0x00000400l - -/* - * Display hardware can overlay. - */ -#define DDCAPS_OVERLAY 0x00000800l - -/* - * Set if display hardware supports overlays but can not clip them. - */ -#define DDCAPS_OVERLAYCANTCLIP 0x00001000l - -/* - * Indicates that overlay hardware is capable of color space conversions during - * the overlay operation. - */ -#define DDCAPS_OVERLAYFOURCC 0x00002000l - -/* - * Indicates that stretching can be done by the overlay hardware. - */ -#define DDCAPS_OVERLAYSTRETCH 0x00004000l - -/* - * Indicates that unique DirectDrawPalettes can be created for DirectDrawSurfaces - * other than the primary surface. - */ -#define DDCAPS_PALETTE 0x00008000l - -/* - * Indicates that palette changes can be syncd with the veritcal refresh. - */ -#define DDCAPS_PALETTEVSYNC 0x00010000l - -/* - * Display hardware can return the current scan line. - */ -#define DDCAPS_READSCANLINE 0x00020000l - -/* - * Display hardware has stereo vision capabilities. DDSCAPS_PRIMARYSURFACELEFT - * can be created. - */ -#define DDCAPS_STEREOVIEW 0x00040000l - -/* - * Display hardware is capable of generating a vertical blank interrupt. - */ -#define DDCAPS_VBI 0x00080000l - -/* - * Supports the use of z buffers with blt operations. - */ -#define DDCAPS_ZBLTS 0x00100000l - -/* - * Supports Z Ordering of overlays. - */ -#define DDCAPS_ZOVERLAYS 0x00200000l - -/* - * Supports color key - */ -#define DDCAPS_COLORKEY 0x00400000l - -/* - * Supports alpha surfaces - */ -#define DDCAPS_ALPHA 0x00800000l - -/* - * colorkey is hardware assisted(DDCAPS_COLORKEY will also be set) - */ -#define DDCAPS_COLORKEYHWASSIST 0x01000000l - -/* - * no hardware support at all - */ -#define DDCAPS_NOHARDWARE 0x02000000l - -/* - * Display hardware is capable of color fill with bltter - */ -#define DDCAPS_BLTCOLORFILL 0x04000000l - -/* - * Display hardware is bank switched, and potentially very slow at - * random access to VRAM. - */ -#define DDCAPS_BANKSWITCHED 0x08000000l - -/* - * Display hardware is capable of depth filling Z-buffers with bltter - */ -#define DDCAPS_BLTDEPTHFILL 0x10000000l - -/* - * Display hardware is capable of clipping while bltting. - */ -#define DDCAPS_CANCLIP 0x20000000l - -/* - * Display hardware is capable of clipping while stretch bltting. - */ -#define DDCAPS_CANCLIPSTRETCHED 0x40000000l - -/* - * Display hardware is capable of bltting to or from system memory - */ -#define DDCAPS_CANBLTSYSMEM 0x80000000l - - - /**************************************************************************** - * - * MORE DIRECTDRAW DRIVER CAPABILITY FLAGS (dwCaps2) - * - ****************************************************************************/ - -/* - * Display hardware is certified - */ -#define DDCAPS2_CERTIFIED 0x00000001l - -/* - * Driver cannot interleave 2D operations (lock and blt) to surfaces with - * Direct3D rendering operations between calls to BeginScene() and EndScene() - */ -#define DDCAPS2_NO2DDURING3DSCENE 0x00000002l - -/* - * Display hardware contains a video port - */ -#define DDCAPS2_VIDEOPORT 0x00000004l - -/* - * The overlay can be automatically flipped according to the video port - * VSYNCs, providing automatic doubled buffered display of video port - * data using an overlay - */ -#define DDCAPS2_AUTOFLIPOVERLAY 0x00000008l - -/* - * Overlay can display each field of interlaced data individually while - * it is interleaved in memory without causing jittery artifacts. - */ -#define DDCAPS2_CANBOBINTERLEAVED 0x00000010l - -/* - * Overlay can display each field of interlaced data individually while - * it is not interleaved in memory without causing jittery artifacts. - */ -#define DDCAPS2_CANBOBNONINTERLEAVED 0x00000020l - -/* - * The overlay surface contains color controls (brightness, sharpness, etc.) - */ -#define DDCAPS2_COLORCONTROLOVERLAY 0x00000040l - -/* - * The primary surface contains color controls (gamma, etc.) - */ -#define DDCAPS2_COLORCONTROLPRIMARY 0x00000080l - -/* - * RGBZ -> RGB supported for 16:16 RGB:Z - */ -#define DDCAPS2_CANDROPZ16BIT 0x00000100l - -/* - * Driver supports non-local video memory. - */ -#define DDCAPS2_NONLOCALVIDMEM 0x00000200l - -/* - * Dirver supports non-local video memory but has different capabilities for - * non-local video memory surfaces. If this bit is set then so must - * DDCAPS2_NONLOCALVIDMEM. - */ -#define DDCAPS2_NONLOCALVIDMEMCAPS 0x00000400l - -/* - * Driver neither requires nor prefers surfaces to be pagelocked when performing - * blts involving system memory surfaces - */ -#define DDCAPS2_NOPAGELOCKREQUIRED 0x00000800l - -/* - * Driver can create surfaces which are wider than the primary surface - */ -#define DDCAPS2_WIDESURFACES 0x00001000l - -/* - * Driver supports bob using software without using a video port - */ -#define DDCAPS2_CANFLIPODDEVEN 0x00002000l - -/**************************************************************************** - * - * DIRECTDRAW FX ALPHA CAPABILITY FLAGS - * - ****************************************************************************/ - -/* - * Supports alpha blending around the edge of a source color keyed surface. - * For Blt. - */ -#define DDFXALPHACAPS_BLTALPHAEDGEBLEND 0x00000001l - -/* - * Supports alpha information in the pixel format. The bit depth of alpha - * information in the pixel format can be 1,2,4, or 8. The alpha value becomes - * more opaque as the alpha value increases. (0 is transparent.) - * For Blt. - */ -#define DDFXALPHACAPS_BLTALPHAPIXELS 0x00000002l - -/* - * Supports alpha information in the pixel format. The bit depth of alpha - * information in the pixel format can be 1,2,4, or 8. The alpha value - * becomes more transparent as the alpha value increases. (0 is opaque.) - * This flag can only be set if DDCAPS_ALPHA is set. - * For Blt. - */ -#define DDFXALPHACAPS_BLTALPHAPIXELSNEG 0x00000004l - -/* - * Supports alpha only surfaces. The bit depth of an alpha only surface can be - * 1,2,4, or 8. The alpha value becomes more opaque as the alpha value increases. - * (0 is transparent.) - * For Blt. - */ -#define DDFXALPHACAPS_BLTALPHASURFACES 0x00000008l - -/* - * The depth of the alpha channel data can range can be 1,2,4, or 8. - * The NEG suffix indicates that this alpha channel becomes more transparent - * as the alpha value increases. (0 is opaque.) This flag can only be set if - * DDCAPS_ALPHA is set. - * For Blt. - */ -#define DDFXALPHACAPS_BLTALPHASURFACESNEG 0x00000010l - -/* - * Supports alpha blending around the edge of a source color keyed surface. - * For Overlays. - */ -#define DDFXALPHACAPS_OVERLAYALPHAEDGEBLEND 0x00000020l - -/* - * Supports alpha information in the pixel format. The bit depth of alpha - * information in the pixel format can be 1,2,4, or 8. The alpha value becomes - * more opaque as the alpha value increases. (0 is transparent.) - * For Overlays. - */ -#define DDFXALPHACAPS_OVERLAYALPHAPIXELS 0x00000040l - -/* - * Supports alpha information in the pixel format. The bit depth of alpha - * information in the pixel format can be 1,2,4, or 8. The alpha value - * becomes more transparent as the alpha value increases. (0 is opaque.) - * This flag can only be set if DDCAPS_ALPHA is set. - * For Overlays. - */ -#define DDFXALPHACAPS_OVERLAYALPHAPIXELSNEG 0x00000080l - -/* - * Supports alpha only surfaces. The bit depth of an alpha only surface can be - * 1,2,4, or 8. The alpha value becomes more opaque as the alpha value increases. - * (0 is transparent.) - * For Overlays. - */ -#define DDFXALPHACAPS_OVERLAYALPHASURFACES 0x00000100l - -/* - * The depth of the alpha channel data can range can be 1,2,4, or 8. - * The NEG suffix indicates that this alpha channel becomes more transparent - * as the alpha value increases. (0 is opaque.) This flag can only be set if - * DDCAPS_ALPHA is set. - * For Overlays. - */ -#define DDFXALPHACAPS_OVERLAYALPHASURFACESNEG 0x00000200l - -/**************************************************************************** - * - * DIRECTDRAW FX CAPABILITY FLAGS - * - ****************************************************************************/ - -/* - * Uses arithmetic operations to stretch and shrink surfaces during blt - * rather than pixel doubling techniques. Along the Y axis. - */ -#define DDFXCAPS_BLTARITHSTRETCHY 0x00000020l - -/* - * Uses arithmetic operations to stretch during blt - * rather than pixel doubling techniques. Along the Y axis. Only - * works for x1, x2, etc. - */ -#define DDFXCAPS_BLTARITHSTRETCHYN 0x00000010l - -/* - * Supports mirroring left to right in blt. - */ -#define DDFXCAPS_BLTMIRRORLEFTRIGHT 0x00000040l - -/* - * Supports mirroring top to bottom in blt. - */ -#define DDFXCAPS_BLTMIRRORUPDOWN 0x00000080l - -/* - * Supports arbitrary rotation for blts. - */ -#define DDFXCAPS_BLTROTATION 0x00000100l - -/* - * Supports 90 degree rotations for blts. - */ -#define DDFXCAPS_BLTROTATION90 0x00000200l - -/* - * DirectDraw supports arbitrary shrinking of a surface along the - * x axis (horizontal direction) for blts. - */ -#define DDFXCAPS_BLTSHRINKX 0x00000400l - -/* - * DirectDraw supports integer shrinking (1x,2x,) of a surface - * along the x axis (horizontal direction) for blts. - */ -#define DDFXCAPS_BLTSHRINKXN 0x00000800l - -/* - * DirectDraw supports arbitrary shrinking of a surface along the - * y axis (horizontal direction) for blts. - */ -#define DDFXCAPS_BLTSHRINKY 0x00001000l - -/* - * DirectDraw supports integer shrinking (1x,2x,) of a surface - * along the y axis (vertical direction) for blts. - */ -#define DDFXCAPS_BLTSHRINKYN 0x00002000l - -/* - * DirectDraw supports arbitrary stretching of a surface along the - * x axis (horizontal direction) for blts. - */ -#define DDFXCAPS_BLTSTRETCHX 0x00004000l - -/* - * DirectDraw supports integer stretching (1x,2x,) of a surface - * along the x axis (horizontal direction) for blts. - */ -#define DDFXCAPS_BLTSTRETCHXN 0x00008000l - -/* - * DirectDraw supports arbitrary stretching of a surface along the - * y axis (horizontal direction) for blts. - */ -#define DDFXCAPS_BLTSTRETCHY 0x00010000l - -/* - * DirectDraw supports integer stretching (1x,2x,) of a surface - * along the y axis (vertical direction) for blts. - */ -#define DDFXCAPS_BLTSTRETCHYN 0x00020000l - -/* - * Uses arithmetic operations to stretch and shrink surfaces during - * overlay rather than pixel doubling techniques. Along the Y axis - * for overlays. - */ -#define DDFXCAPS_OVERLAYARITHSTRETCHY 0x00040000l - -/* - * Uses arithmetic operations to stretch surfaces during - * overlay rather than pixel doubling techniques. Along the Y axis - * for overlays. Only works for x1, x2, etc. - */ -#define DDFXCAPS_OVERLAYARITHSTRETCHYN 0x00000008l - -/* - * DirectDraw supports arbitrary shrinking of a surface along the - * x axis (horizontal direction) for overlays. - */ -#define DDFXCAPS_OVERLAYSHRINKX 0x00080000l - -/* - * DirectDraw supports integer shrinking (1x,2x,) of a surface - * along the x axis (horizontal direction) for overlays. - */ -#define DDFXCAPS_OVERLAYSHRINKXN 0x00100000l - -/* - * DirectDraw supports arbitrary shrinking of a surface along the - * y axis (horizontal direction) for overlays. - */ -#define DDFXCAPS_OVERLAYSHRINKY 0x00200000l - -/* - * DirectDraw supports integer shrinking (1x,2x,) of a surface - * along the y axis (vertical direction) for overlays. - */ -#define DDFXCAPS_OVERLAYSHRINKYN 0x00400000l - -/* - * DirectDraw supports arbitrary stretching of a surface along the - * x axis (horizontal direction) for overlays. - */ -#define DDFXCAPS_OVERLAYSTRETCHX 0x00800000l - -/* - * DirectDraw supports integer stretching (1x,2x,) of a surface - * along the x axis (horizontal direction) for overlays. - */ -#define DDFXCAPS_OVERLAYSTRETCHXN 0x01000000l - -/* - * DirectDraw supports arbitrary stretching of a surface along the - * y axis (horizontal direction) for overlays. - */ -#define DDFXCAPS_OVERLAYSTRETCHY 0x02000000l - -/* - * DirectDraw supports integer stretching (1x,2x,) of a surface - * along the y axis (vertical direction) for overlays. - */ -#define DDFXCAPS_OVERLAYSTRETCHYN 0x04000000l - -/* - * DirectDraw supports mirroring of overlays across the vertical axis - */ -#define DDFXCAPS_OVERLAYMIRRORLEFTRIGHT 0x08000000l - -/* - * DirectDraw supports mirroring of overlays across the horizontal axis - */ -#define DDFXCAPS_OVERLAYMIRRORUPDOWN 0x10000000l - -/**************************************************************************** - * - * DIRECTDRAW STEREO VIEW CAPABILITIES - * - ****************************************************************************/ - -/* - * The stereo view is accomplished via enigma encoding. - */ -#define DDSVCAPS_ENIGMA 0x00000001l - -/* - * The stereo view is accomplished via high frequency flickering. - */ -#define DDSVCAPS_FLICKER 0x00000002l - -/* - * The stereo view is accomplished via red and blue filters applied - * to the left and right eyes. All images must adapt their colorspaces - * for this process. - */ -#define DDSVCAPS_REDBLUE 0x00000004l - -/* - * The stereo view is accomplished with split screen technology. - */ -#define DDSVCAPS_SPLIT 0x00000008l - -/**************************************************************************** - * - * DIRECTDRAWPALETTE CAPABILITIES - * - ****************************************************************************/ - -/* - * Index is 4 bits. There are sixteen color entries in the palette table. - */ -#define DDPCAPS_4BIT 0x00000001l - -/* - * Index is onto a 8 bit color index. This field is only valid with the - * DDPCAPS_1BIT, DDPCAPS_2BIT or DDPCAPS_4BIT capability and the target - * surface is in 8bpp. Each color entry is one byte long and is an index - * into destination surface's 8bpp palette. - */ -#define DDPCAPS_8BITENTRIES 0x00000002l - -/* - * Index is 8 bits. There are 256 color entries in the palette table. - */ -#define DDPCAPS_8BIT 0x00000004l - -/* - * Indicates that this DIRECTDRAWPALETTE should use the palette color array - * passed into the lpDDColorArray parameter to initialize the DIRECTDRAWPALETTE - * object. - */ -#define DDPCAPS_INITIALIZE 0x00000008l - -/* - * This palette is the one attached to the primary surface. Changing this - * table has immediate effect on the display unless DDPSETPAL_VSYNC is specified - * and supported. - */ -#define DDPCAPS_PRIMARYSURFACE 0x00000010l - -/* - * This palette is the one attached to the primary surface left. Changing - * this table has immediate effect on the display for the left eye unless - * DDPSETPAL_VSYNC is specified and supported. - */ -#define DDPCAPS_PRIMARYSURFACELEFT 0x00000020l - -/* - * This palette can have all 256 entries defined - */ -#define DDPCAPS_ALLOW256 0x00000040l - -/* - * This palette can have modifications to it synced with the monitors - * refresh rate. - */ -#define DDPCAPS_VSYNC 0x00000080l - -/* - * Index is 1 bit. There are two color entries in the palette table. - */ -#define DDPCAPS_1BIT 0x00000100l - -/* - * Index is 2 bit. There are four color entries in the palette table. - */ -#define DDPCAPS_2BIT 0x00000200l - - -/**************************************************************************** - * - * DIRECTDRAWPALETTE SETENTRY CONSTANTS - * - ****************************************************************************/ - - -/**************************************************************************** - * - * DIRECTDRAWPALETTE GETENTRY CONSTANTS - * - ****************************************************************************/ - -/* 0 is the only legal value */ - -/**************************************************************************** - * - * DIRECTDRAWSURFACE SETPALETTE CONSTANTS - * - ****************************************************************************/ - - -/**************************************************************************** - * - * DIRECTDRAW BITDEPTH CONSTANTS - * - * NOTE: These are only used to indicate supported bit depths. These - * are flags only, they are not to be used as an actual bit depth. The - * absolute numbers 1, 2, 4, 8, 16, 24 and 32 are used to indicate actual - * bit depths in a surface or for changing the display mode. - * - ****************************************************************************/ - -/* - * 1 bit per pixel. - */ -#define DDBD_1 0x00004000l - -/* - * 2 bits per pixel. - */ -#define DDBD_2 0x00002000l - -/* - * 4 bits per pixel. - */ -#define DDBD_4 0x00001000l - -/* - * 8 bits per pixel. - */ -#define DDBD_8 0x00000800l - -/* - * 16 bits per pixel. - */ -#define DDBD_16 0x00000400l - -/* - * 24 bits per pixel. - */ -#define DDBD_24 0X00000200l - -/* - * 32 bits per pixel. - */ -#define DDBD_32 0x00000100l - -/**************************************************************************** - * - * DIRECTDRAWSURFACE SET/GET COLOR KEY FLAGS - * - ****************************************************************************/ - -/* - * Set if the structure contains a color space. Not set if the structure - * contains a single color key. - */ -#define DDCKEY_COLORSPACE 0x00000001l - -/* - * Set if the structure specifies a color key or color space which is to be - * used as a destination color key for blt operations. - */ -#define DDCKEY_DESTBLT 0x00000002l - -/* - * Set if the structure specifies a color key or color space which is to be - * used as a destination color key for overlay operations. - */ -#define DDCKEY_DESTOVERLAY 0x00000004l - -/* - * Set if the structure specifies a color key or color space which is to be - * used as a source color key for blt operations. - */ -#define DDCKEY_SRCBLT 0x00000008l - -/* - * Set if the structure specifies a color key or color space which is to be - * used as a source color key for overlay operations. - */ -#define DDCKEY_SRCOVERLAY 0x00000010l - - -/**************************************************************************** - * - * DIRECTDRAW COLOR KEY CAPABILITY FLAGS - * - ****************************************************************************/ - -/* - * Supports transparent blting using a color key to identify the replaceable - * bits of the destination surface for RGB colors. - */ -#define DDCKEYCAPS_DESTBLT 0x00000001l - -/* - * Supports transparent blting using a color space to identify the replaceable - * bits of the destination surface for RGB colors. - */ -#define DDCKEYCAPS_DESTBLTCLRSPACE 0x00000002l - -/* - * Supports transparent blting using a color space to identify the replaceable - * bits of the destination surface for YUV colors. - */ -#define DDCKEYCAPS_DESTBLTCLRSPACEYUV 0x00000004l - -/* - * Supports transparent blting using a color key to identify the replaceable - * bits of the destination surface for YUV colors. - */ -#define DDCKEYCAPS_DESTBLTYUV 0x00000008l - -/* - * Supports overlaying using colorkeying of the replaceable bits of the surface - * being overlayed for RGB colors. - */ -#define DDCKEYCAPS_DESTOVERLAY 0x00000010l - -/* - * Supports a color space as the color key for the destination for RGB colors. - */ -#define DDCKEYCAPS_DESTOVERLAYCLRSPACE 0x00000020l - -/* - * Supports a color space as the color key for the destination for YUV colors. - */ -#define DDCKEYCAPS_DESTOVERLAYCLRSPACEYUV 0x00000040l - -/* - * Supports only one active destination color key value for visible overlay - * surfaces. - */ -#define DDCKEYCAPS_DESTOVERLAYONEACTIVE 0x00000080l - -/* - * Supports overlaying using colorkeying of the replaceable bits of the - * surface being overlayed for YUV colors. - */ -#define DDCKEYCAPS_DESTOVERLAYYUV 0x00000100l - -/* - * Supports transparent blting using the color key for the source with - * this surface for RGB colors. - */ -#define DDCKEYCAPS_SRCBLT 0x00000200l - -/* - * Supports transparent blting using a color space for the source with - * this surface for RGB colors. - */ -#define DDCKEYCAPS_SRCBLTCLRSPACE 0x00000400l - -/* - * Supports transparent blting using a color space for the source with - * this surface for YUV colors. - */ -#define DDCKEYCAPS_SRCBLTCLRSPACEYUV 0x00000800l - -/* - * Supports transparent blting using the color key for the source with - * this surface for YUV colors. - */ -#define DDCKEYCAPS_SRCBLTYUV 0x00001000l - -/* - * Supports overlays using the color key for the source with this - * overlay surface for RGB colors. - */ -#define DDCKEYCAPS_SRCOVERLAY 0x00002000l - -/* - * Supports overlays using a color space as the source color key for - * the overlay surface for RGB colors. - */ -#define DDCKEYCAPS_SRCOVERLAYCLRSPACE 0x00004000l - -/* - * Supports overlays using a color space as the source color key for - * the overlay surface for YUV colors. - */ -#define DDCKEYCAPS_SRCOVERLAYCLRSPACEYUV 0x00008000l - -/* - * Supports only one active source color key value for visible - * overlay surfaces. - */ -#define DDCKEYCAPS_SRCOVERLAYONEACTIVE 0x00010000l - -/* - * Supports overlays using the color key for the source with this - * overlay surface for YUV colors. - */ -#define DDCKEYCAPS_SRCOVERLAYYUV 0x00020000l - -/* - * there are no bandwidth trade-offs for using colorkey with an overlay - */ -#define DDCKEYCAPS_NOCOSTOVERLAY 0x00040000l - - -/**************************************************************************** - * - * DIRECTDRAW PIXELFORMAT FLAGS - * - ****************************************************************************/ - -/* - * The surface has alpha channel information in the pixel format. - */ -#define DDPF_ALPHAPIXELS 0x00000001l - -/* - * The pixel format contains alpha only information - */ -#define DDPF_ALPHA 0x00000002l - -/* - * The FourCC code is valid. - */ -#define DDPF_FOURCC 0x00000004l - -/* - * The surface is 4-bit color indexed. - */ -#define DDPF_PALETTEINDEXED4 0x00000008l - -/* - * The surface is indexed into a palette which stores indices - * into the destination surface's 8-bit palette. - */ -#define DDPF_PALETTEINDEXEDTO8 0x00000010l - -/* - * The surface is 8-bit color indexed. - */ -#define DDPF_PALETTEINDEXED8 0x00000020l - -/* - * The RGB data in the pixel format structure is valid. - */ -#define DDPF_RGB 0x00000040l - -/* - * The surface will accept pixel data in the format specified - * and compress it during the write. - */ -#define DDPF_COMPRESSED 0x00000080l - -/* - * The surface will accept RGB data and translate it during - * the write to YUV data. The format of the data to be written - * will be contained in the pixel format structure. The DDPF_RGB - * flag will be set. - */ -#define DDPF_RGBTOYUV 0x00000100l - -/* - * pixel format is YUV - YUV data in pixel format struct is valid - */ -#define DDPF_YUV 0x00000200l - -/* - * pixel format is a z buffer only surface - */ -#define DDPF_ZBUFFER 0x00000400l - -/* - * The surface is 1-bit color indexed. - */ -#define DDPF_PALETTEINDEXED1 0x00000800l - -/* - * The surface is 2-bit color indexed. - */ -#define DDPF_PALETTEINDEXED2 0x00001000l - -/* - * The surface contains Z information in the pixels - */ -#define DDPF_ZPIXELS 0x00002000l - -/*=========================================================================== - * - * - * DIRECTDRAW CALLBACK FLAGS - * - * - *==========================================================================*/ - -/**************************************************************************** - * - * DIRECTDRAW ENUMSURFACES FLAGS - * - ****************************************************************************/ - -/* - * Enumerate all of the surfaces that meet the search criterion. - */ -#define DDENUMSURFACES_ALL 0x00000001l - -/* - * A search hit is a surface that matches the surface description. - */ -#define DDENUMSURFACES_MATCH 0x00000002l - -/* - * A search hit is a surface that does not match the surface description. - */ -#define DDENUMSURFACES_NOMATCH 0x00000004l - -/* - * Enumerate the first surface that can be created which meets the search criterion. - */ -#define DDENUMSURFACES_CANBECREATED 0x00000008l - -/* - * Enumerate the surfaces that already exist that meet the search criterion. - */ -#define DDENUMSURFACES_DOESEXIST 0x00000010l - - -/**************************************************************************** - * - * DIRECTDRAW SETDISPLAYMODE FLAGS - * - ****************************************************************************/ - -/* - * The desired mode is a standard VGA mode - */ -#define DDSDM_STANDARDVGAMODE 0x00000001l - - - -/**************************************************************************** - * - * DIRECTDRAW ENUMDISPLAYMODES FLAGS - * - ****************************************************************************/ - -/* - * Enumerate Modes with different refresh rates. EnumDisplayModes guarantees - * that a particular mode will be enumerated only once. This flag specifies whether - * the refresh rate is taken into account when determining if a mode is unique. - */ -#define DDEDM_REFRESHRATES 0x00000001l - -/* - * Enumerate VGA modes. Specify this flag if you wish to enumerate supported VGA - * modes such as mode 0x13 in addition to the usual ModeX modes (which are always - * enumerated if the application has previously called SetCooperativeLevel with the - * DDSCL_ALLOWMODEX flag set). - */ -#define DDEDM_STANDARDVGAMODES 0x00000002L - - -/**************************************************************************** - * - * DIRECTDRAW SETCOOPERATIVELEVEL FLAGS - * - ****************************************************************************/ - -/* - * Exclusive mode owner will be responsible for the entire primary surface. - * GDI can be ignored. used with DD - */ -#define DDSCL_FULLSCREEN 0x00000001l - -/* - * allow CTRL_ALT_DEL to work while in fullscreen exclusive mode - */ -#define DDSCL_ALLOWREBOOT 0x00000002l - -/* - * prevents DDRAW from modifying the application window. - * prevents DDRAW from minimize/restore the application window on activation. - */ -#define DDSCL_NOWINDOWCHANGES 0x00000004l - -/* - * app wants to work as a regular Windows application - */ -#define DDSCL_NORMAL 0x00000008l - -/* - * app wants exclusive access - */ -#define DDSCL_EXCLUSIVE 0x00000010l - - -/* - * app can deal with non-windows display modes - */ -#define DDSCL_ALLOWMODEX 0x00000040l - - -/**************************************************************************** - * - * DIRECTDRAW BLT FLAGS - * - ****************************************************************************/ - -/* - * Use the alpha information in the pixel format or the alpha channel surface - * attached to the destination surface as the alpha channel for this blt. - */ -#define DDBLT_ALPHADEST 0x00000001l - -/* - * Use the dwConstAlphaDest field in the DDBLTFX structure as the alpha channel - * for the destination surface for this blt. - */ -#define DDBLT_ALPHADESTCONSTOVERRIDE 0x00000002l - -/* - * The NEG suffix indicates that the destination surface becomes more - * transparent as the alpha value increases. (0 is opaque) - */ -#define DDBLT_ALPHADESTNEG 0x00000004l - -/* - * Use the lpDDSAlphaDest field in the DDBLTFX structure as the alpha - * channel for the destination for this blt. - */ -#define DDBLT_ALPHADESTSURFACEOVERRIDE 0x00000008l - -/* - * Use the dwAlphaEdgeBlend field in the DDBLTFX structure as the alpha channel - * for the edges of the image that border the color key colors. - */ -#define DDBLT_ALPHAEDGEBLEND 0x00000010l - -/* - * Use the alpha information in the pixel format or the alpha channel surface - * attached to the source surface as the alpha channel for this blt. - */ -#define DDBLT_ALPHASRC 0x00000020l - -/* - * Use the dwConstAlphaSrc field in the DDBLTFX structure as the alpha channel - * for the source for this blt. - */ -#define DDBLT_ALPHASRCCONSTOVERRIDE 0x00000040l - -/* - * The NEG suffix indicates that the source surface becomes more transparent - * as the alpha value increases. (0 is opaque) - */ -#define DDBLT_ALPHASRCNEG 0x00000080l - -/* - * Use the lpDDSAlphaSrc field in the DDBLTFX structure as the alpha channel - * for the source for this blt. - */ -#define DDBLT_ALPHASRCSURFACEOVERRIDE 0x00000100l - -/* - * Do this blt asynchronously through the FIFO in the order received. If - * there is no room in the hardware FIFO fail the call. - */ -#define DDBLT_ASYNC 0x00000200l - -/* - * Uses the dwFillColor field in the DDBLTFX structure as the RGB color - * to fill the destination rectangle on the destination surface with. - */ -#define DDBLT_COLORFILL 0x00000400l - -/* - * Uses the dwDDFX field in the DDBLTFX structure to specify the effects - * to use for the blt. - */ -#define DDBLT_DDFX 0x00000800l - -/* - * Uses the dwDDROPS field in the DDBLTFX structure to specify the ROPS - * that are not part of the Win32 API. - */ -#define DDBLT_DDROPS 0x00001000l - -/* - * Use the color key associated with the destination surface. - */ -#define DDBLT_KEYDEST 0x00002000l - -/* - * Use the dckDestColorkey field in the DDBLTFX structure as the color key - * for the destination surface. - */ -#define DDBLT_KEYDESTOVERRIDE 0x00004000l - -/* - * Use the color key associated with the source surface. - */ -#define DDBLT_KEYSRC 0x00008000l - -/* - * Use the dckSrcColorkey field in the DDBLTFX structure as the color key - * for the source surface. - */ -#define DDBLT_KEYSRCOVERRIDE 0x00010000l - -/* - * Use the dwROP field in the DDBLTFX structure for the raster operation - * for this blt. These ROPs are the same as the ones defined in the Win32 API. - */ -#define DDBLT_ROP 0x00020000l - -/* - * Use the dwRotationAngle field in the DDBLTFX structure as the angle - * (specified in 1/100th of a degree) to rotate the surface. - */ -#define DDBLT_ROTATIONANGLE 0x00040000l - -/* - * Z-buffered blt using the z-buffers attached to the source and destination - * surfaces and the dwZBufferOpCode field in the DDBLTFX structure as the - * z-buffer opcode. - */ -#define DDBLT_ZBUFFER 0x00080000l - -/* - * Z-buffered blt using the dwConstDest Zfield and the dwZBufferOpCode field - * in the DDBLTFX structure as the z-buffer and z-buffer opcode respectively - * for the destination. - */ -#define DDBLT_ZBUFFERDESTCONSTOVERRIDE 0x00100000l - -/* - * Z-buffered blt using the lpDDSDestZBuffer field and the dwZBufferOpCode - * field in the DDBLTFX structure as the z-buffer and z-buffer opcode - * respectively for the destination. - */ -#define DDBLT_ZBUFFERDESTOVERRIDE 0x00200000l - -/* - * Z-buffered blt using the dwConstSrcZ field and the dwZBufferOpCode field - * in the DDBLTFX structure as the z-buffer and z-buffer opcode respectively - * for the source. - */ -#define DDBLT_ZBUFFERSRCCONSTOVERRIDE 0x00400000l - -/* - * Z-buffered blt using the lpDDSSrcZBuffer field and the dwZBufferOpCode - * field in the DDBLTFX structure as the z-buffer and z-buffer opcode - * respectively for the source. - */ -#define DDBLT_ZBUFFERSRCOVERRIDE 0x00800000l - -/* - * wait until the device is ready to handle the blt - * this will cause blt to not return DDERR_WASSTILLDRAWING - */ -#define DDBLT_WAIT 0x01000000l - -/* - * Uses the dwFillDepth field in the DDBLTFX structure as the depth value - * to fill the destination rectangle on the destination Z-buffer surface - * with. - */ -#define DDBLT_DEPTHFILL 0x02000000l - - - -/**************************************************************************** - * - * BLTFAST FLAGS - * - ****************************************************************************/ - -#define DDBLTFAST_NOCOLORKEY 0x00000000 -#define DDBLTFAST_SRCCOLORKEY 0x00000001 -#define DDBLTFAST_DESTCOLORKEY 0x00000002 -#define DDBLTFAST_WAIT 0x00000010 - -/**************************************************************************** - * - * FLIP FLAGS - * - ****************************************************************************/ - -#define DDFLIP_WAIT 0x00000001l - -/* - * Indicates that the target surface contains the even field of video data. - * This flag is only valid with an overlay surface. - */ -#define DDFLIP_EVEN 0x00000002l - -/* - * Indicates that the target surface contains the odd field of video data. - * This flag is only valid with an overlay surface. - */ -#define DDFLIP_ODD 0x00000004l - - - -/**************************************************************************** - * - * DIRECTDRAW SURFACE OVERLAY FLAGS - * - ****************************************************************************/ - -/* - * Use the alpha information in the pixel format or the alpha channel surface - * attached to the destination surface as the alpha channel for the - * destination overlay. - */ -#define DDOVER_ALPHADEST 0x00000001l - -/* - * Use the dwConstAlphaDest field in the DDOVERLAYFX structure as the - * destination alpha channel for this overlay. - */ -#define DDOVER_ALPHADESTCONSTOVERRIDE 0x00000002l - -/* - * The NEG suffix indicates that the destination surface becomes more - * transparent as the alpha value increases. - */ -#define DDOVER_ALPHADESTNEG 0x00000004l - -/* - * Use the lpDDSAlphaDest field in the DDOVERLAYFX structure as the alpha - * channel destination for this overlay. - */ -#define DDOVER_ALPHADESTSURFACEOVERRIDE 0x00000008l - -/* - * Use the dwAlphaEdgeBlend field in the DDOVERLAYFX structure as the alpha - * channel for the edges of the image that border the color key colors. - */ -#define DDOVER_ALPHAEDGEBLEND 0x00000010l - -/* - * Use the alpha information in the pixel format or the alpha channel surface - * attached to the source surface as the source alpha channel for this overlay. - */ -#define DDOVER_ALPHASRC 0x00000020l - -/* - * Use the dwConstAlphaSrc field in the DDOVERLAYFX structure as the source - * alpha channel for this overlay. - */ -#define DDOVER_ALPHASRCCONSTOVERRIDE 0x00000040l - -/* - * The NEG suffix indicates that the source surface becomes more transparent - * as the alpha value increases. - */ -#define DDOVER_ALPHASRCNEG 0x00000080l - -/* - * Use the lpDDSAlphaSrc field in the DDOVERLAYFX structure as the alpha channel - * source for this overlay. - */ -#define DDOVER_ALPHASRCSURFACEOVERRIDE 0x00000100l - -/* - * Turn this overlay off. - */ -#define DDOVER_HIDE 0x00000200l - -/* - * Use the color key associated with the destination surface. - */ -#define DDOVER_KEYDEST 0x00000400l - -/* - * Use the dckDestColorkey field in the DDOVERLAYFX structure as the color key - * for the destination surface - */ -#define DDOVER_KEYDESTOVERRIDE 0x00000800l - -/* - * Use the color key associated with the source surface. - */ -#define DDOVER_KEYSRC 0x00001000l - -/* - * Use the dckSrcColorkey field in the DDOVERLAYFX structure as the color key - * for the source surface. - */ -#define DDOVER_KEYSRCOVERRIDE 0x00002000l - -/* - * Turn this overlay on. - */ -#define DDOVER_SHOW 0x00004000l - -/* - * Add a dirty rect to an emulated overlayed surface. - */ -#define DDOVER_ADDDIRTYRECT 0x00008000l - -/* - * Redraw all dirty rects on an emulated overlayed surface. - */ -#define DDOVER_REFRESHDIRTYRECTS 0x00010000l - -/* - * Redraw the entire surface on an emulated overlayed surface. - */ -#define DDOVER_REFRESHALL 0x00020000l - - -/* - * Use the overlay FX flags to define special overlay FX - */ -#define DDOVER_DDFX 0x00080000l - -/* - * Autoflip the overlay when ever the video port autoflips - */ -#define DDOVER_AUTOFLIP 0x00100000l - -/* - * Display each field of video port data individually without - * causing any jittery artifacts - */ -#define DDOVER_BOB 0x00200000l - -/* - * Indicates that bob/weave decisions should not be overridden by other - * interfaces. - */ -#define DDOVER_OVERRIDEBOBWEAVE 0x00400000l - -/* - * Indicates that the surface memory is composed of interleaved fields. - */ -#define DDOVER_INTERLEAVED 0x00800000l - - -/**************************************************************************** - * - * DIRECTDRAWSURFACE LOCK FLAGS - * - ****************************************************************************/ - -/* - * The default. Set to indicate that Lock should return a valid memory pointer - * to the top of the specified rectangle. If no rectangle is specified then a - * pointer to the top of the surface is returned. - */ -#define DDLOCK_SURFACEMEMORYPTR 0x00000000L // default - -/* - * Set to indicate that Lock should wait until it can obtain a valid memory - * pointer before returning. If this bit is set, Lock will never return - * DDERR_WASSTILLDRAWING. - */ -#define DDLOCK_WAIT 0x00000001L - -/* - * Set if an event handle is being passed to Lock. Lock will trigger the event - * when it can return the surface memory pointer requested. - */ -#define DDLOCK_EVENT 0x00000002L - -/* - * Indicates that the surface being locked will only be read from. - */ -#define DDLOCK_READONLY 0x00000010L - -/* - * Indicates that the surface being locked will only be written to - */ -#define DDLOCK_WRITEONLY 0x00000020L - - -/* - * Indicates that a system wide lock should not be taken when this surface - * is locked. This has several advantages (cursor responsiveness, ability - * to call more Windows functions, easier debugging) when locking video - * memory surfaces. However, an application specifying this flag must - * comply with a number of conditions documented in the help file. - * Furthermore, this flag cannot be specified when locking the primary. - */ -#define DDLOCK_NOSYSLOCK 0x00000800L - - -/**************************************************************************** - * - * DIRECTDRAWSURFACE PAGELOCK FLAGS - * - ****************************************************************************/ - -/* - * No flags defined at present - */ - - -/**************************************************************************** - * - * DIRECTDRAWSURFACE PAGEUNLOCK FLAGS - * - ****************************************************************************/ - -/* - * No flags defined at present - */ - - -/**************************************************************************** - * - * DIRECTDRAWSURFACE BLT FX FLAGS - * - ****************************************************************************/ - -/* - * If stretching, use arithmetic stretching along the Y axis for this blt. - */ -#define DDBLTFX_ARITHSTRETCHY 0x00000001l - -/* - * Do this blt mirroring the surface left to right. Spin the - * surface around its y-axis. - */ -#define DDBLTFX_MIRRORLEFTRIGHT 0x00000002l - -/* - * Do this blt mirroring the surface up and down. Spin the surface - * around its x-axis. - */ -#define DDBLTFX_MIRRORUPDOWN 0x00000004l - -/* - * Schedule this blt to avoid tearing. - */ -#define DDBLTFX_NOTEARING 0x00000008l - -/* - * Do this blt rotating the surface one hundred and eighty degrees. - */ -#define DDBLTFX_ROTATE180 0x00000010l - -/* - * Do this blt rotating the surface two hundred and seventy degrees. - */ -#define DDBLTFX_ROTATE270 0x00000020l - -/* - * Do this blt rotating the surface ninety degrees. - */ -#define DDBLTFX_ROTATE90 0x00000040l - -/* - * Do this z blt using dwZBufferLow and dwZBufferHigh as range values - * specified to limit the bits copied from the source surface. - */ -#define DDBLTFX_ZBUFFERRANGE 0x00000080l - -/* - * Do this z blt adding the dwZBufferBaseDest to each of the sources z values - * before comparing it with the desting z values. - */ -#define DDBLTFX_ZBUFFERBASEDEST 0x00000100l - -/**************************************************************************** - * - * DIRECTDRAWSURFACE OVERLAY FX FLAGS - * - ****************************************************************************/ - -/* - * If stretching, use arithmetic stretching along the Y axis for this overlay. - */ -#define DDOVERFX_ARITHSTRETCHY 0x00000001l - -/* - * Mirror the overlay across the vertical axis - */ -#define DDOVERFX_MIRRORLEFTRIGHT 0x00000002l - -/* - * Mirror the overlay across the horizontal axis - */ -#define DDOVERFX_MIRRORUPDOWN 0x00000004l - -/**************************************************************************** - * - * DIRECTDRAW WAITFORVERTICALBLANK FLAGS - * - ****************************************************************************/ - -/* - * return when the vertical blank interval begins - */ -#define DDWAITVB_BLOCKBEGIN 0x00000001l - -/* - * set up an event to trigger when the vertical blank begins - */ -#define DDWAITVB_BLOCKBEGINEVENT 0x00000002l - -/* - * return when the vertical blank interval ends and display begins - */ -#define DDWAITVB_BLOCKEND 0x00000004l - -/**************************************************************************** - * - * DIRECTDRAW GETFLIPSTATUS FLAGS - * - ****************************************************************************/ - -/* - * is it OK to flip now? - */ -#define DDGFS_CANFLIP 0x00000001l - -/* - * is the last flip finished? - */ -#define DDGFS_ISFLIPDONE 0x00000002l - -/**************************************************************************** - * - * DIRECTDRAW GETBLTSTATUS FLAGS - * - ****************************************************************************/ - -/* - * is it OK to blt now? - */ -#define DDGBS_CANBLT 0x00000001l - -/* - * is the blt to the surface finished? - */ -#define DDGBS_ISBLTDONE 0x00000002l - - -/**************************************************************************** - * - * DIRECTDRAW ENUMOVERLAYZORDER FLAGS - * - ****************************************************************************/ - -/* - * Enumerate overlays back to front. - */ -#define DDENUMOVERLAYZ_BACKTOFRONT 0x00000000l - -/* - * Enumerate overlays front to back - */ -#define DDENUMOVERLAYZ_FRONTTOBACK 0x00000001l - -/**************************************************************************** - * - * DIRECTDRAW UPDATEOVERLAYZORDER FLAGS - * - ****************************************************************************/ - -/* - * Send overlay to front - */ -#define DDOVERZ_SENDTOFRONT 0x00000000l - -/* - * Send overlay to back - */ -#define DDOVERZ_SENDTOBACK 0x00000001l - -/* - * Move Overlay forward - */ -#define DDOVERZ_MOVEFORWARD 0x00000002l - -/* - * Move Overlay backward - */ -#define DDOVERZ_MOVEBACKWARD 0x00000003l - -/* - * Move Overlay in front of relative surface - */ -#define DDOVERZ_INSERTINFRONTOF 0x00000004l - -/* - * Move Overlay in back of relative surface - */ -#define DDOVERZ_INSERTINBACKOF 0x00000005l - -/*=========================================================================== - * - * - * DIRECTDRAW RETURN CODES - * - * The return values from DirectDraw Commands and Surface that return an HRESULT - * are codes from DirectDraw concerning the results of the action - * requested by DirectDraw. - * - *==========================================================================*/ - -/* - * Status is OK - * - * Issued by: DirectDraw Commands and all callbacks - */ -#define DD_OK 0 - -/**************************************************************************** - * - * DIRECTDRAW ENUMCALLBACK RETURN VALUES - * - * EnumCallback returns are used to control the flow of the DIRECTDRAW and - * DIRECTDRAWSURFACE object enumerations. They can only be returned by - * enumeration callback routines. - * - ****************************************************************************/ - -/* - * stop the enumeration - */ -#define DDENUMRET_CANCEL 0 - -/* - * continue the enumeration - */ -#define DDENUMRET_OK 1 - -/**************************************************************************** - * - * DIRECTDRAW ERRORS - * - * Errors are represented by negative values and cannot be combined. - * - ****************************************************************************/ - -/* - * This object is already initialized - */ -#define DDERR_ALREADYINITIALIZED MAKE_DDHRESULT( 5 ) - -/* - * This surface can not be attached to the requested surface. - */ -#define DDERR_CANNOTATTACHSURFACE MAKE_DDHRESULT( 10 ) - -/* - * This surface can not be detached from the requested surface. - */ -#define DDERR_CANNOTDETACHSURFACE MAKE_DDHRESULT( 20 ) - -/* - * Support is currently not available. - */ -#define DDERR_CURRENTLYNOTAVAIL MAKE_DDHRESULT( 40 ) - -/* - * An exception was encountered while performing the requested operation - */ -#define DDERR_EXCEPTION MAKE_DDHRESULT( 55 ) - -/* - * Generic failure. - */ -#define DDERR_GENERIC E_FAIL - -/* - * Height of rectangle provided is not a multiple of reqd alignment - */ -#define DDERR_HEIGHTALIGN MAKE_DDHRESULT( 90 ) - -/* - * Unable to match primary surface creation request with existing - * primary surface. - */ -#define DDERR_INCOMPATIBLEPRIMARY MAKE_DDHRESULT( 95 ) - -/* - * One or more of the caps bits passed to the callback are incorrect. - */ -#define DDERR_INVALIDCAPS MAKE_DDHRESULT( 100 ) - -/* - * DirectDraw does not support provided Cliplist. - */ -#define DDERR_INVALIDCLIPLIST MAKE_DDHRESULT( 110 ) - -/* - * DirectDraw does not support the requested mode - */ -#define DDERR_INVALIDMODE MAKE_DDHRESULT( 120 ) - -/* - * DirectDraw received a pointer that was an invalid DIRECTDRAW object. - */ -#define DDERR_INVALIDOBJECT MAKE_DDHRESULT( 130 ) - -/* - * One or more of the parameters passed to the callback function are - * incorrect. - */ -#define DDERR_INVALIDPARAMS E_INVALIDARG - -/* - * pixel format was invalid as specified - */ -#define DDERR_INVALIDPIXELFORMAT MAKE_DDHRESULT( 145 ) - -/* - * Rectangle provided was invalid. - */ -#define DDERR_INVALIDRECT MAKE_DDHRESULT( 150 ) - -/* - * Operation could not be carried out because one or more surfaces are locked - */ -#define DDERR_LOCKEDSURFACES MAKE_DDHRESULT( 160 ) - -/* - * There is no 3D present. - */ -#define DDERR_NO3D MAKE_DDHRESULT( 170 ) - -/* - * Operation could not be carried out because there is no alpha accleration - * hardware present or available. - */ -#define DDERR_NOALPHAHW MAKE_DDHRESULT( 180 ) - - -/* - * no clip list available - */ -#define DDERR_NOCLIPLIST MAKE_DDHRESULT( 205 ) - -/* - * Operation could not be carried out because there is no color conversion - * hardware present or available. - */ -#define DDERR_NOCOLORCONVHW MAKE_DDHRESULT( 210 ) - -/* - * Create function called without DirectDraw object method SetCooperativeLevel - * being called. - */ -#define DDERR_NOCOOPERATIVELEVELSET MAKE_DDHRESULT( 212 ) - -/* - * Surface doesn't currently have a color key - */ -#define DDERR_NOCOLORKEY MAKE_DDHRESULT( 215 ) - -/* - * Operation could not be carried out because there is no hardware support - * of the dest color key. - */ -#define DDERR_NOCOLORKEYHW MAKE_DDHRESULT( 220 ) - -/* - * No DirectDraw support possible with current display driver - */ -#define DDERR_NODIRECTDRAWSUPPORT MAKE_DDHRESULT( 222 ) - -/* - * Operation requires the application to have exclusive mode but the - * application does not have exclusive mode. - */ -#define DDERR_NOEXCLUSIVEMODE MAKE_DDHRESULT( 225 ) - -/* - * Flipping visible surfaces is not supported. - */ -#define DDERR_NOFLIPHW MAKE_DDHRESULT( 230 ) - -/* - * There is no GDI present. - */ -#define DDERR_NOGDI MAKE_DDHRESULT( 240 ) - -/* - * Operation could not be carried out because there is no hardware present - * or available. - */ -#define DDERR_NOMIRRORHW MAKE_DDHRESULT( 250 ) - -/* - * Requested item was not found - */ -#define DDERR_NOTFOUND MAKE_DDHRESULT( 255 ) - -/* - * Operation could not be carried out because there is no overlay hardware - * present or available. - */ -#define DDERR_NOOVERLAYHW MAKE_DDHRESULT( 260 ) - -/* - * Operation could not be carried out because there is no appropriate raster - * op hardware present or available. - */ -#define DDERR_NORASTEROPHW MAKE_DDHRESULT( 280 ) - -/* - * Operation could not be carried out because there is no rotation hardware - * present or available. - */ -#define DDERR_NOROTATIONHW MAKE_DDHRESULT( 290 ) - -/* - * Operation could not be carried out because there is no hardware support - * for stretching - */ -#define DDERR_NOSTRETCHHW MAKE_DDHRESULT( 310 ) - -/* - * DirectDrawSurface is not in 4 bit color palette and the requested operation - * requires 4 bit color palette. - */ -#define DDERR_NOT4BITCOLOR MAKE_DDHRESULT( 316 ) - -/* - * DirectDrawSurface is not in 4 bit color index palette and the requested - * operation requires 4 bit color index palette. - */ -#define DDERR_NOT4BITCOLORINDEX MAKE_DDHRESULT( 317 ) - -/* - * DirectDraw Surface is not in 8 bit color mode and the requested operation - * requires 8 bit color. - */ -#define DDERR_NOT8BITCOLOR MAKE_DDHRESULT( 320 ) - -/* - * Operation could not be carried out because there is no texture mapping - * hardware present or available. - */ -#define DDERR_NOTEXTUREHW MAKE_DDHRESULT( 330 ) - -/* - * Operation could not be carried out because there is no hardware support - * for vertical blank synchronized operations. - */ -#define DDERR_NOVSYNCHW MAKE_DDHRESULT( 335 ) - -/* - * Operation could not be carried out because there is no hardware support - * for zbuffer blting. - */ -#define DDERR_NOZBUFFERHW MAKE_DDHRESULT( 340 ) - -/* - * Overlay surfaces could not be z layered based on their BltOrder because - * the hardware does not support z layering of overlays. - */ -#define DDERR_NOZOVERLAYHW MAKE_DDHRESULT( 350 ) - -/* - * The hardware needed for the requested operation has already been - * allocated. - */ -#define DDERR_OUTOFCAPS MAKE_DDHRESULT( 360 ) - -/* - * DirectDraw does not have enough memory to perform the operation. - */ -#define DDERR_OUTOFMEMORY E_OUTOFMEMORY - -/* - * DirectDraw does not have enough memory to perform the operation. - */ -#define DDERR_OUTOFVIDEOMEMORY MAKE_DDHRESULT( 380 ) - -/* - * hardware does not support clipped overlays - */ -#define DDERR_OVERLAYCANTCLIP MAKE_DDHRESULT( 382 ) - -/* - * Can only have ony color key active at one time for overlays - */ -#define DDERR_OVERLAYCOLORKEYONLYONEACTIVE MAKE_DDHRESULT( 384 ) - -/* - * Access to this palette is being refused because the palette is already - * locked by another thread. - */ -#define DDERR_PALETTEBUSY MAKE_DDHRESULT( 387 ) - -/* - * No src color key specified for this operation. - */ -#define DDERR_COLORKEYNOTSET MAKE_DDHRESULT( 400 ) - -/* - * This surface is already attached to the surface it is being attached to. - */ -#define DDERR_SURFACEALREADYATTACHED MAKE_DDHRESULT( 410 ) - -/* - * This surface is already a dependency of the surface it is being made a - * dependency of. - */ -#define DDERR_SURFACEALREADYDEPENDENT MAKE_DDHRESULT( 420 ) - -/* - * Access to this surface is being refused because the surface is already - * locked by another thread. - */ -#define DDERR_SURFACEBUSY MAKE_DDHRESULT( 430 ) - -/* - * Access to this surface is being refused because no driver exists - * which can supply a pointer to the surface. - * This is most likely to happen when attempting to lock the primary - * surface when no DCI provider is present. - * Will also happen on attempts to lock an optimized surface. - */ -#define DDERR_CANTLOCKSURFACE MAKE_DDHRESULT( 435 ) - -/* - * Access to Surface refused because Surface is obscured. - */ -#define DDERR_SURFACEISOBSCURED MAKE_DDHRESULT( 440 ) - -/* - * Access to this surface is being refused because the surface is gone. - * The DIRECTDRAWSURFACE object representing this surface should - * have Restore called on it. - */ -#define DDERR_SURFACELOST MAKE_DDHRESULT( 450 ) - -/* - * The requested surface is not attached. - */ -#define DDERR_SURFACENOTATTACHED MAKE_DDHRESULT( 460 ) - -/* - * Height requested by DirectDraw is too large. - */ -#define DDERR_TOOBIGHEIGHT MAKE_DDHRESULT( 470 ) - -/* - * Size requested by DirectDraw is too large -- The individual height and - * width are OK. - */ -#define DDERR_TOOBIGSIZE MAKE_DDHRESULT( 480 ) - -/* - * Width requested by DirectDraw is too large. - */ -#define DDERR_TOOBIGWIDTH MAKE_DDHRESULT( 490 ) - -/* - * Action not supported. - */ -#define DDERR_UNSUPPORTED E_NOTIMPL - -/* - * FOURCC format requested is unsupported by DirectDraw - */ -#define DDERR_UNSUPPORTEDFORMAT MAKE_DDHRESULT( 510 ) - -/* - * Bitmask in the pixel format requested is unsupported by DirectDraw - */ -#define DDERR_UNSUPPORTEDMASK MAKE_DDHRESULT( 520 ) - -/* - * vertical blank is in progress - */ -#define DDERR_VERTICALBLANKINPROGRESS MAKE_DDHRESULT( 537 ) - -/* - * Informs DirectDraw that the previous Blt which is transfering information - * to or from this Surface is incomplete. - */ -#define DDERR_WASSTILLDRAWING MAKE_DDHRESULT( 540 ) - - -/* - * Rectangle provided was not horizontally aligned on reqd. boundary - */ -#define DDERR_XALIGN MAKE_DDHRESULT( 560 ) - -/* - * The GUID passed to DirectDrawCreate is not a valid DirectDraw driver - * identifier. - */ -#define DDERR_INVALIDDIRECTDRAWGUID MAKE_DDHRESULT( 561 ) - -/* - * A DirectDraw object representing this driver has already been created - * for this process. - */ -#define DDERR_DIRECTDRAWALREADYCREATED MAKE_DDHRESULT( 562 ) - -/* - * A hardware only DirectDraw object creation was attempted but the driver - * did not support any hardware. - */ -#define DDERR_NODIRECTDRAWHW MAKE_DDHRESULT( 563 ) - -/* - * this process already has created a primary surface - */ -#define DDERR_PRIMARYSURFACEALREADYEXISTS MAKE_DDHRESULT( 564 ) - -/* - * software emulation not available. - */ -#define DDERR_NOEMULATION MAKE_DDHRESULT( 565 ) - -/* - * region passed to Clipper::GetClipList is too small. - */ -#define DDERR_REGIONTOOSMALL MAKE_DDHRESULT( 566 ) - -/* - * an attempt was made to set a clip list for a clipper objec that - * is already monitoring an hwnd. - */ -#define DDERR_CLIPPERISUSINGHWND MAKE_DDHRESULT( 567 ) - -/* - * No clipper object attached to surface object - */ -#define DDERR_NOCLIPPERATTACHED MAKE_DDHRESULT( 568 ) - -/* - * Clipper notification requires an HWND or - * no HWND has previously been set as the CooperativeLevel HWND. - */ -#define DDERR_NOHWND MAKE_DDHRESULT( 569 ) - -/* - * HWND used by DirectDraw CooperativeLevel has been subclassed, - * this prevents DirectDraw from restoring state. - */ -#define DDERR_HWNDSUBCLASSED MAKE_DDHRESULT( 570 ) - -/* - * The CooperativeLevel HWND has already been set. - * It can not be reset while the process has surfaces or palettes created. - */ -#define DDERR_HWNDALREADYSET MAKE_DDHRESULT( 571 ) - -/* - * No palette object attached to this surface. - */ -#define DDERR_NOPALETTEATTACHED MAKE_DDHRESULT( 572 ) - -/* - * No hardware support for 16 or 256 color palettes. - */ -#define DDERR_NOPALETTEHW MAKE_DDHRESULT( 573 ) - -/* - * If a clipper object is attached to the source surface passed into a - * BltFast call. - */ -#define DDERR_BLTFASTCANTCLIP MAKE_DDHRESULT( 574 ) - -/* - * No blter. - */ -#define DDERR_NOBLTHW MAKE_DDHRESULT( 575 ) - -/* - * No DirectDraw ROP hardware. - */ -#define DDERR_NODDROPSHW MAKE_DDHRESULT( 576 ) - -/* - * returned when GetOverlayPosition is called on a hidden overlay - */ -#define DDERR_OVERLAYNOTVISIBLE MAKE_DDHRESULT( 577 ) - -/* - * returned when GetOverlayPosition is called on a overlay that UpdateOverlay - * has never been called on to establish a destionation. - */ -#define DDERR_NOOVERLAYDEST MAKE_DDHRESULT( 578 ) - -/* - * returned when the position of the overlay on the destionation is no longer - * legal for that destionation. - */ -#define DDERR_INVALIDPOSITION MAKE_DDHRESULT( 579 ) - -/* - * returned when an overlay member is called for a non-overlay surface - */ -#define DDERR_NOTAOVERLAYSURFACE MAKE_DDHRESULT( 580 ) - -/* - * An attempt was made to set the cooperative level when it was already - * set to exclusive. - */ -#define DDERR_EXCLUSIVEMODEALREADYSET MAKE_DDHRESULT( 581 ) - -/* - * An attempt has been made to flip a surface that is not flippable. - */ -#define DDERR_NOTFLIPPABLE MAKE_DDHRESULT( 582 ) - -/* - * Can't duplicate primary & 3D surfaces, or surfaces that are implicitly - * created. - */ -#define DDERR_CANTDUPLICATE MAKE_DDHRESULT( 583 ) - -/* - * Surface was not locked. An attempt to unlock a surface that was not - * locked at all, or by this process, has been attempted. - */ -#define DDERR_NOTLOCKED MAKE_DDHRESULT( 584 ) - -/* - * Windows can not create any more DCs - */ -#define DDERR_CANTCREATEDC MAKE_DDHRESULT( 585 ) - -/* - * No DC was ever created for this surface. - */ -#define DDERR_NODC MAKE_DDHRESULT( 586 ) - -/* - * This surface can not be restored because it was created in a different - * mode. - */ -#define DDERR_WRONGMODE MAKE_DDHRESULT( 587 ) - -/* - * This surface can not be restored because it is an implicitly created - * surface. - */ -#define DDERR_IMPLICITLYCREATED MAKE_DDHRESULT( 588 ) - -/* - * The surface being used is not a palette-based surface - */ -#define DDERR_NOTPALETTIZED MAKE_DDHRESULT( 589 ) - - -/* - * The display is currently in an unsupported mode - */ -#define DDERR_UNSUPPORTEDMODE MAKE_DDHRESULT( 590 ) - -/* - * Operation could not be carried out because there is no mip-map - * texture mapping hardware present or available. - */ -#define DDERR_NOMIPMAPHW MAKE_DDHRESULT( 591 ) - -/* - * The requested action could not be performed because the surface was of - * the wrong type. - */ -#define DDERR_INVALIDSURFACETYPE MAKE_DDHRESULT( 592 ) - - - -/* - * Device does not support optimized surfaces, therefore no video memory optimized surfaces - */ -#define DDERR_NOOPTIMIZEHW MAKE_DDHRESULT( 600 ) - -/* - * Surface is an optimized surface, but has not yet been allocated any memory - */ -#define DDERR_NOTLOADED MAKE_DDHRESULT( 601 ) - -/* - * A DC has already been returned for this surface. Only one DC can be - * retrieved per surface. - */ -#define DDERR_DCALREADYCREATED MAKE_DDHRESULT( 620 ) - -/* - * An attempt was made to allocate non-local video memory from a device - * that does not support non-local video memory. - */ -#define DDERR_NONONLOCALVIDMEM MAKE_DDHRESULT( 630 ) - -/* - * The attempt to page lock a surface failed. - */ -#define DDERR_CANTPAGELOCK MAKE_DDHRESULT( 640 ) - -/* - * The attempt to page unlock a surface failed. - */ -#define DDERR_CANTPAGEUNLOCK MAKE_DDHRESULT( 660 ) - -/* - * An attempt was made to page unlock a surface with no outstanding page locks. - */ -#define DDERR_NOTPAGELOCKED MAKE_DDHRESULT( 680 ) - -/* - * There is more data available than the specified buffer size could hold - */ -#define DDERR_MOREDATA MAKE_DDHRESULT( 690 ) - -/* - * The video port is not active - */ -#define DDERR_VIDEONOTACTIVE MAKE_DDHRESULT( 695 ) - -/* - * Surfaces created by one direct draw device cannot be used directly by - * another direct draw device. - */ -#define DDERR_DEVICEDOESNTOWNSURFACE MAKE_DDHRESULT( 699 ) - - -/* - * An attempt was made to invoke an interface member of a DirectDraw object - * created by CoCreateInstance() before it was initialized. - */ -#define DDERR_NOTINITIALIZED CO_E_NOTINITIALIZED - -/* Alpha bit depth constants */ - - -#ifdef __cplusplus -}; -#endif - -#endif +/*==========================================================================; + * + * Copyright (C) 1994-1997 Microsoft Corporation. All Rights Reserved. + * + * File: ddraw.h + * Content: DirectDraw include file + * + ***************************************************************************/ + +#ifndef __DDRAW_INCLUDED__ +#define __DDRAW_INCLUDED__ + +/* + * 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 0x0500 +#endif /* DIRECTDRAW_VERSION */ + +#if defined( _WIN32 ) && !defined( _NO_COM ) +#define COM_NO_WINDOWS_H +#include +#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 + +/* + * 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_IDirectDrawSurface3, 0xDA044E00,0x69B2,0x11D0,0xA1,0xD5,0x00,0xAA,0x00,0xB8,0xDF,0xBB ); + +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 ); + +#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 IDirectDrawSurface3 FAR *LPDIRECTDRAWSURFACE3; + +typedef struct IDirectDrawPalette FAR *LPDIRECTDRAWPALETTE; +typedef struct IDirectDrawClipper FAR *LPDIRECTDRAWCLIPPER; +typedef struct IDirectDrawColorControl FAR *LPDIRECTDRAWCOLORCONTROL; + +typedef struct _DDFXROP FAR *LPDDFXROP; +typedef struct _DDSURFACEDESC FAR *LPDDSURFACEDESC; +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 ); + #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 ); +#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 + +#if defined(WINNT) || !defined(WIN32) +typedef long HRESULT; +#endif + +//#ifndef WINNT +typedef 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 + DWORD dwFillPixel; // pixel value for RGBA or RGBZ + 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 array + +#if DIRECTDRAW_VERSION >= 0x0500 +/* + * 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; +#endif /* DIRECTDRAW_VERSION >= 0x0500 */ + +typedef struct _DDCAPS +{ +/* 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 +#if DIRECTDRAW_VERSION >= 0x0500 +/*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 +#else /* DIRECTDRAW_VERSION >= 0x0500 */ +/*130*/ DWORD dwReserved4; // reserved +/*134*/ DWORD dwReserved5; // reserved +/*138*/ DWORD dwReserved6; // reserved +#endif /* DIRECTDRAW_VERSION >= 0x0500 */ +} 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 + DWORD dwYUVBitCount; // how many bits per pixel + DWORD dwZBufferBitDepth; // how many bits for z buffers + DWORD dwAlphaBitDepth; // how many bits for alpha channels + }; + 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 + DWORD dwRGBZBitMask; // mask for Z channel + DWORD dwYUVZBitMask; // mask for Z 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; + +/* + * 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(Initialize)(THIS_ GUID FAR *) PURE; + STDMETHOD(RestoreDisplayMode)(THIS) PURE; + STDMETHOD(SetCooperativeLevel)(THIS_ HWND, DWORD) PURE; + STDMETHOD(SetDisplayMode)(THIS_ DWORD, DWORD,DWORD) PURE; + STDMETHOD(WaitForVerticalBlank)(THIS_ DWORD, HANDLE ) PURE; +}; + +#if !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectDraw_QueryInterface(p, a, b) (p)->lpVtbl->QueryInterface(p, a, b) +#define IDirectDraw_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IDirectDraw_Release(p) (p)->lpVtbl->Release(p) +#define IDirectDraw_Compact(p) (p)->lpVtbl->Compact(p) +#define IDirectDraw_CreateClipper(p, a, b, c) (p)->lpVtbl->CreateClipper(p, a, b, c) +#define IDirectDraw_CreatePalette(p, a, b, c, d) (p)->lpVtbl->CreatePalette(p, a, b, c, d) +#define IDirectDraw_CreateSurface(p, a, b, c) (p)->lpVtbl->CreateSurface(p, a, b, c) +#define IDirectDraw_DuplicateSurface(p, a, b) (p)->lpVtbl->DuplicateSurface(p, a, b) +#define IDirectDraw_EnumDisplayModes(p, a, b, c, d) (p)->lpVtbl->EnumDisplayModes(p, a, b, c, d) +#define IDirectDraw_EnumSurfaces(p, a, b, c, d) (p)->lpVtbl->EnumSurfaces(p, a, b, c, d) +#define IDirectDraw_FlipToGDISurface(p) (p)->lpVtbl->FlipToGDISurface(p) +#define IDirectDraw_GetCaps(p, a, b) (p)->lpVtbl->GetCaps(p, a, b) +#define IDirectDraw_GetDisplayMode(p, a) (p)->lpVtbl->GetDisplayMode(p, a) +#define IDirectDraw_GetFourCCCodes(p, a, b) (p)->lpVtbl->GetFourCCCodes(p, a, b) +#define IDirectDraw_GetGDISurface(p, a) (p)->lpVtbl->GetGDISurface(p, a) +#define IDirectDraw_GetMonitorFrequency(p, a) (p)->lpVtbl->GetMonitorFrequency(p, a) +#define IDirectDraw_GetScanLine(p, a) (p)->lpVtbl->GetScanLine(p, a) +#define IDirectDraw_GetVerticalBlankStatus(p, a) (p)->lpVtbl->GetVerticalBlankStatus(p, a) +#define IDirectDraw_Initialize(p, a) (p)->lpVtbl->Initialize(p, a) +#define IDirectDraw_RestoreDisplayMode(p) (p)->lpVtbl->RestoreDisplayMode(p) +#define IDirectDraw_SetCooperativeLevel(p, a, b) (p)->lpVtbl->SetCooperativeLevel(p, a, b) +#define IDirectDraw_SetDisplayMode(p, a, b, c) (p)->lpVtbl->SetDisplayMode(p, a, b, c) +#define IDirectDraw_WaitForVerticalBlank(p, a, b) (p)->lpVtbl->WaitForVerticalBlank(p, a, b) +#else +#define IDirectDraw_QueryInterface(p, a, b) (p)->QueryInterface(a, b) +#define IDirectDraw_AddRef(p) (p)->AddRef() +#define IDirectDraw_Release(p) (p)->Release() +#define IDirectDraw_Compact(p) (p)->Compact() +#define IDirectDraw_CreateClipper(p, a, b, c) (p)->CreateClipper(a, b, c) +#define IDirectDraw_CreatePalette(p, a, b, c, d) (p)->CreatePalette(a, b, c, d) +#define IDirectDraw_CreateSurface(p, a, b, c) (p)->CreateSurface(a, b, c) +#define IDirectDraw_DuplicateSurface(p, a, b) (p)->DuplicateSurface(a, b) +#define IDirectDraw_EnumDisplayModes(p, a, b, c, d) (p)->EnumDisplayModes(a, b, c, d) +#define IDirectDraw_EnumSurfaces(p, a, b, c, d) (p)->EnumSurfaces(a, b, c, d) +#define IDirectDraw_FlipToGDISurface(p) (p)->FlipToGDISurface() +#define IDirectDraw_GetCaps(p, a, b) (p)->GetCaps(a, b) +#define IDirectDraw_GetDisplayMode(p, a) (p)->GetDisplayMode(a) +#define IDirectDraw_GetFourCCCodes(p, a, b) (p)->GetFourCCCodes(a, b) +#define IDirectDraw_GetGDISurface(p, a) (p)->GetGDISurface(a) +#define IDirectDraw_GetMonitorFrequency(p, a) (p)->GetMonitorFrequency(a) +#define IDirectDraw_GetScanLine(p, a) (p)->GetScanLine(a) +#define IDirectDraw_GetVerticalBlankStatus(p, a) (p)->GetVerticalBlankStatus(a) +#define IDirectDraw_Initialize(p, a) (p)->Initialize(a) +#define IDirectDraw_RestoreDisplayMode(p) (p)->RestoreDisplayMode() +#define IDirectDraw_SetCooperativeLevel(p, a, b) (p)->SetCooperativeLevel(a, b) +#define IDirectDraw_SetDisplayMode(p, a, b, c) (p)->SetDisplayMode(a, b, c) +#define IDirectDraw_WaitForVerticalBlank(p, a, b) (p)->WaitForVerticalBlank(a, b) +#endif + +#endif + +#if defined( _WIN32 ) && !defined( _NO_COM ) +#undef INTERFACE +#define INTERFACE IDirectDraw2 +DECLARE_INTERFACE_( IDirectDraw2, 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(Initialize)(THIS_ GUID FAR *) PURE; + STDMETHOD(RestoreDisplayMode)(THIS) PURE; + STDMETHOD(SetCooperativeLevel)(THIS_ HWND, DWORD) PURE; + STDMETHOD(SetDisplayMode)(THIS_ DWORD, DWORD,DWORD, DWORD, DWORD) PURE; + STDMETHOD(WaitForVerticalBlank)(THIS_ DWORD, HANDLE ) PURE; + /*** Added in the v2 interface ***/ + STDMETHOD(GetAvailableVidMem)(THIS_ LPDDSCAPS, LPDWORD, LPDWORD) PURE; +}; +#if !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectDraw2_QueryInterface(p, a, b) (p)->lpVtbl->QueryInterface(p, a, b) +#define IDirectDraw2_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IDirectDraw2_Release(p) (p)->lpVtbl->Release(p) +#define IDirectDraw2_Compact(p) (p)->lpVtbl->Compact(p) +#define IDirectDraw2_CreateClipper(p, a, b, c) (p)->lpVtbl->CreateClipper(p, a, b, c) +#define IDirectDraw2_CreatePalette(p, a, b, c, d) (p)->lpVtbl->CreatePalette(p, a, b, c, d) +#define IDirectDraw2_CreateSurface(p, a, b, c) (p)->lpVtbl->CreateSurface(p, a, b, c) +#define IDirectDraw2_DuplicateSurface(p, a, b) (p)->lpVtbl->DuplicateSurface(p, a, b) +#define IDirectDraw2_EnumDisplayModes(p, a, b, c, d) (p)->lpVtbl->EnumDisplayModes(p, a, b, c, d) +#define IDirectDraw2_EnumSurfaces(p, a, b, c, d) (p)->lpVtbl->EnumSurfaces(p, a, b, c, d) +#define IDirectDraw2_FlipToGDISurface(p) (p)->lpVtbl->FlipToGDISurface(p) +#define IDirectDraw2_GetCaps(p, a, b) (p)->lpVtbl->GetCaps(p, a, b) +#define IDirectDraw2_GetDisplayMode(p, a) (p)->lpVtbl->GetDisplayMode(p, a) +#define IDirectDraw2_GetFourCCCodes(p, a, b) (p)->lpVtbl->GetFourCCCodes(p, a, b) +#define IDirectDraw2_GetGDISurface(p, a) (p)->lpVtbl->GetGDISurface(p, a) +#define IDirectDraw2_GetMonitorFrequency(p, a) (p)->lpVtbl->GetMonitorFrequency(p, a) +#define IDirectDraw2_GetScanLine(p, a) (p)->lpVtbl->GetScanLine(p, a) +#define IDirectDraw2_GetVerticalBlankStatus(p, a) (p)->lpVtbl->GetVerticalBlankStatus(p, a) +#define IDirectDraw2_Initialize(p, a) (p)->lpVtbl->Initialize(p, a) +#define IDirectDraw2_RestoreDisplayMode(p) (p)->lpVtbl->RestoreDisplayMode(p) +#define IDirectDraw2_SetCooperativeLevel(p, a, b) (p)->lpVtbl->SetCooperativeLevel(p, a, b) +#define IDirectDraw2_SetDisplayMode(p, a, b, c, d, e) (p)->lpVtbl->SetDisplayMode(p, a, b, c, d, e) +#define IDirectDraw2_WaitForVerticalBlank(p, a, b) (p)->lpVtbl->WaitForVerticalBlank(p, a, b) +#define IDirectDraw2_GetAvailableVidMem(p, a, b, c) (p)->lpVtbl->GetAvailableVidMem(p, a, b, c) +#else +#define IDirectDraw2_QueryInterface(p, a, b) (p)->QueryInterface(a, b) +#define IDirectDraw2_AddRef(p) (p)->AddRef() +#define IDirectDraw2_Release(p) (p)->Release() +#define IDirectDraw2_Compact(p) (p)->Compact() +#define IDirectDraw2_CreateClipper(p, a, b, c) (p)->CreateClipper(a, b, c) +#define IDirectDraw2_CreatePalette(p, a, b, c, d) (p)->CreatePalette(a, b, c, d) +#define IDirectDraw2_CreateSurface(p, a, b, c) (p)->CreateSurface(a, b, c) +#define IDirectDraw2_DuplicateSurface(p, a, b) (p)->DuplicateSurface(a, b) +#define IDirectDraw2_EnumDisplayModes(p, a, b, c, d) (p)->EnumDisplayModes(a, b, c, d) +#define IDirectDraw2_EnumSurfaces(p, a, b, c, d) (p)->EnumSurfaces(a, b, c, d) +#define IDirectDraw2_FlipToGDISurface(p) (p)->FlipToGDISurface() +#define IDirectDraw2_GetCaps(p, a, b) (p)->GetCaps(a, b) +#define IDirectDraw2_GetDisplayMode(p, a) (p)->GetDisplayMode(a) +#define IDirectDraw2_GetFourCCCodes(p, a, b) (p)->GetFourCCCodes(a, b) +#define IDirectDraw2_GetGDISurface(p, a) (p)->GetGDISurface(a) +#define IDirectDraw2_GetMonitorFrequency(p, a) (p)->GetMonitorFrequency(a) +#define IDirectDraw2_GetScanLine(p, a) (p)->GetScanLine(a) +#define IDirectDraw2_GetVerticalBlankStatus(p, a) (p)->GetVerticalBlankStatus(a) +#define IDirectDraw2_Initialize(p, a) (p)->Initialize(a) +#define IDirectDraw2_RestoreDisplayMode(p) (p)->RestoreDisplayMode() +#define IDirectDraw2_SetCooperativeLevel(p, a, b) (p)->SetCooperativeLevel(a, b) +#define IDirectDraw2_SetDisplayMode(p, a, b, c, d, e) (p)->SetDisplayMode(a, b, c, d, e) +#define IDirectDraw2_WaitForVerticalBlank(p, a, b) (p)->WaitForVerticalBlank(a, b) +#define IDirectDraw2_GetAvailableVidMem(p, a, b, c) (p)->GetAvailableVidMem(a, b, c) +#endif + +#endif + +/* + * IDirectDrawPalette + */ +#if defined( _WIN32 ) && !defined( _NO_COM ) +#undef INTERFACE +#define INTERFACE IDirectDrawPalette +DECLARE_INTERFACE_( IDirectDrawPalette, IUnknown ) +{ + /*** IUnknown methods ***/ + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + /*** IDirectDrawPalette methods ***/ + STDMETHOD(GetCaps)(THIS_ LPDWORD) PURE; + STDMETHOD(GetEntries)(THIS_ DWORD,DWORD,DWORD,LPPALETTEENTRY) PURE; + STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW, DWORD, LPPALETTEENTRY) PURE; + STDMETHOD(SetEntries)(THIS_ DWORD,DWORD,DWORD,LPPALETTEENTRY) PURE; +}; + +#if !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectDrawPalette_QueryInterface(p, a, b) (p)->lpVtbl->QueryInterface(p, a, b) +#define IDirectDrawPalette_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IDirectDrawPalette_Release(p) (p)->lpVtbl->Release(p) +#define IDirectDrawPalette_GetCaps(p, a) (p)->lpVtbl->GetCaps(p, a) +#define IDirectDrawPalette_GetEntries(p, a, b, c, d) (p)->lpVtbl->GetEntries(p, a, b, c, d) +#define IDirectDrawPalette_Initialize(p, a, b, c) (p)->lpVtbl->Initialize(p, a, b, c) +#define IDirectDrawPalette_SetEntries(p, a, b, c, d) (p)->lpVtbl->SetEntries(p, a, b, c, d) +#else +#define IDirectDrawPalette_QueryInterface(p, a, b) (p)->QueryInterface(a, b) +#define IDirectDrawPalette_AddRef(p) (p)->AddRef() +#define IDirectDrawPalette_Release(p) (p)->Release() +#define IDirectDrawPalette_GetCaps(p, a) (p)->GetCaps(a) +#define IDirectDrawPalette_GetEntries(p, a, b, c, d) (p)->GetEntries(a, b, c, d) +#define IDirectDrawPalette_Initialize(p, a, b, c) (p)->Initialize(a, b, c) +#define IDirectDrawPalette_SetEntries(p, a, b, c, d) (p)->SetEntries(a, b, c, d) +#endif + +#endif + +/* + * IDirectDrawClipper + */ +#if defined( _WIN32 ) && !defined( _NO_COM ) +#undef INTERFACE +#define INTERFACE IDirectDrawClipper +DECLARE_INTERFACE_( IDirectDrawClipper, IUnknown ) +{ + /*** IUnknown methods ***/ + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + /*** IDirectDrawClipper methods ***/ + STDMETHOD(GetClipList)(THIS_ LPRECT, LPRGNDATA, LPDWORD) PURE; + STDMETHOD(GetHWnd)(THIS_ HWND FAR *) PURE; + STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW, DWORD) PURE; + STDMETHOD(IsClipListChanged)(THIS_ BOOL FAR *) PURE; + STDMETHOD(SetClipList)(THIS_ LPRGNDATA,DWORD) PURE; + STDMETHOD(SetHWnd)(THIS_ DWORD, HWND ) PURE; +}; + +#if !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectDrawClipper_QueryInterface(p, a, b) (p)->lpVtbl->QueryInterface(p, a, b) +#define IDirectDrawClipper_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IDirectDrawClipper_Release(p) (p)->lpVtbl->Release(p) +#define IDirectDrawClipper_GetClipList(p, a, b, c) (p)->lpVtbl->GetClipList(p, a, b, c) +#define IDirectDrawClipper_GetHWnd(p, a) (p)->lpVtbl->GetHWnd(p, a) +#define IDirectDrawClipper_Initialize(p, a, b) (p)->lpVtbl->Initialize(p, a, b) +#define IDirectDrawClipper_IsClipListChanged(p, a) (p)->lpVtbl->IsClipListChanged(p, a) +#define IDirectDrawClipper_SetClipList(p, a, b) (p)->lpVtbl->SetClipList(p, a, b) +#define IDirectDrawClipper_SetHWnd(p, a, b) (p)->lpVtbl->SetHWnd(p, a, b) +#else +#define IDirectDrawClipper_QueryInterface(p, a, b) (p)->QueryInterface(a, b) +#define IDirectDrawClipper_AddRef(p) (p)->AddRef() +#define IDirectDrawClipper_Release(p) (p)->Release() +#define IDirectDrawClipper_GetClipList(p, a, b, c) (p)->GetClipList(a, b, c) +#define IDirectDrawClipper_GetHWnd(p, a) (p)->GetHWnd(a) +#define IDirectDrawClipper_Initialize(p, a, b) (p)->Initialize(a, b) +#define IDirectDrawClipper_IsClipListChanged(p, a) (p)->IsClipListChanged(a) +#define IDirectDrawClipper_SetClipList(p, a, b) (p)->SetClipList(a, b) +#define IDirectDrawClipper_SetHWnd(p, a, b) (p)->SetHWnd(a, b) +#endif + +#endif + +/* + * IDirectDrawSurface and related interfaces + */ +#if defined( _WIN32 ) && !defined( _NO_COM ) +#undef INTERFACE +#define INTERFACE IDirectDrawSurface +DECLARE_INTERFACE_( IDirectDrawSurface, IUnknown ) +{ + /*** IUnknown methods ***/ + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + /*** IDirectDrawSurface methods ***/ + STDMETHOD(AddAttachedSurface)(THIS_ LPDIRECTDRAWSURFACE) PURE; + STDMETHOD(AddOverlayDirtyRect)(THIS_ LPRECT) PURE; + STDMETHOD(Blt)(THIS_ LPRECT,LPDIRECTDRAWSURFACE, LPRECT,DWORD, LPDDBLTFX) PURE; + STDMETHOD(BltBatch)(THIS_ LPDDBLTBATCH, DWORD, DWORD ) PURE; + STDMETHOD(BltFast)(THIS_ DWORD,DWORD,LPDIRECTDRAWSURFACE, LPRECT,DWORD) PURE; + STDMETHOD(DeleteAttachedSurface)(THIS_ DWORD,LPDIRECTDRAWSURFACE) PURE; + STDMETHOD(EnumAttachedSurfaces)(THIS_ LPVOID,LPDDENUMSURFACESCALLBACK) PURE; + STDMETHOD(EnumOverlayZOrders)(THIS_ DWORD,LPVOID,LPDDENUMSURFACESCALLBACK) PURE; + STDMETHOD(Flip)(THIS_ LPDIRECTDRAWSURFACE, DWORD) PURE; + STDMETHOD(GetAttachedSurface)(THIS_ LPDDSCAPS, LPDIRECTDRAWSURFACE FAR *) PURE; + STDMETHOD(GetBltStatus)(THIS_ DWORD) PURE; + STDMETHOD(GetCaps)(THIS_ LPDDSCAPS) PURE; + STDMETHOD(GetClipper)(THIS_ LPDIRECTDRAWCLIPPER FAR*) PURE; + STDMETHOD(GetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE; + STDMETHOD(GetDC)(THIS_ HDC FAR *) PURE; + STDMETHOD(GetFlipStatus)(THIS_ DWORD) PURE; + STDMETHOD(GetOverlayPosition)(THIS_ LPLONG, LPLONG ) PURE; + STDMETHOD(GetPalette)(THIS_ LPDIRECTDRAWPALETTE FAR*) PURE; + STDMETHOD(GetPixelFormat)(THIS_ LPDDPIXELFORMAT) PURE; + STDMETHOD(GetSurfaceDesc)(THIS_ LPDDSURFACEDESC) PURE; + STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW, LPDDSURFACEDESC) PURE; + STDMETHOD(IsLost)(THIS) PURE; + STDMETHOD(Lock)(THIS_ LPRECT,LPDDSURFACEDESC,DWORD,HANDLE) PURE; + STDMETHOD(ReleaseDC)(THIS_ HDC) PURE; + STDMETHOD(Restore)(THIS) PURE; + STDMETHOD(SetClipper)(THIS_ LPDIRECTDRAWCLIPPER) PURE; + STDMETHOD(SetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE; + STDMETHOD(SetOverlayPosition)(THIS_ LONG, LONG ) PURE; + STDMETHOD(SetPalette)(THIS_ LPDIRECTDRAWPALETTE) PURE; + STDMETHOD(Unlock)(THIS_ LPVOID) PURE; + STDMETHOD(UpdateOverlay)(THIS_ LPRECT, LPDIRECTDRAWSURFACE,LPRECT,DWORD, LPDDOVERLAYFX) PURE; + STDMETHOD(UpdateOverlayDisplay)(THIS_ DWORD) PURE; + STDMETHOD(UpdateOverlayZOrder)(THIS_ DWORD, LPDIRECTDRAWSURFACE) PURE; +}; + +#if !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectDrawSurface_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IDirectDrawSurface_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IDirectDrawSurface_Release(p) (p)->lpVtbl->Release(p) +#define IDirectDrawSurface_AddAttachedSurface(p,a) (p)->lpVtbl->AddAttachedSurface(p,a) +#define IDirectDrawSurface_AddOverlayDirtyRect(p,a) (p)->lpVtbl->AddOverlayDirtyRect(p,a) +#define IDirectDrawSurface_Blt(p,a,b,c,d,e) (p)->lpVtbl->Blt(p,a,b,c,d,e) +#define IDirectDrawSurface_BltBatch(p,a,b,c) (p)->lpVtbl->BltBatch(p,a,b,c) +#define IDirectDrawSurface_BltFast(p,a,b,c,d,e) (p)->lpVtbl->BltFast(p,a,b,c,d,e) +#define IDirectDrawSurface_DeleteAttachedSurface(p,a,b) (p)->lpVtbl->DeleteAttachedSurface(p,a,b) +#define IDirectDrawSurface_EnumAttachedSurfaces(p,a,b) (p)->lpVtbl->EnumAttachedSurfaces(p,a,b) +#define IDirectDrawSurface_EnumOverlayZOrders(p,a,b,c) (p)->lpVtbl->EnumOverlayZOrders(p,a,b,c) +#define IDirectDrawSurface_Flip(p,a,b) (p)->lpVtbl->Flip(p,a,b) +#define IDirectDrawSurface_GetAttachedSurface(p,a,b) (p)->lpVtbl->GetAttachedSurface(p,a,b) +#define IDirectDrawSurface_GetBltStatus(p,a) (p)->lpVtbl->GetBltStatus(p,a) +#define IDirectDrawSurface_GetCaps(p,b) (p)->lpVtbl->GetCaps(p,b) +#define IDirectDrawSurface_GetClipper(p,a) (p)->lpVtbl->GetClipper(p,a) +#define IDirectDrawSurface_GetColorKey(p,a,b) (p)->lpVtbl->GetColorKey(p,a,b) +#define IDirectDrawSurface_GetDC(p,a) (p)->lpVtbl->GetDC(p,a) +#define IDirectDrawSurface_GetFlipStatus(p,a) (p)->lpVtbl->GetFlipStatus(p,a) +#define IDirectDrawSurface_GetOverlayPosition(p,a,b) (p)->lpVtbl->GetOverlayPosition(p,a,b) +#define IDirectDrawSurface_GetPalette(p,a) (p)->lpVtbl->GetPalette(p,a) +#define IDirectDrawSurface_GetPixelFormat(p,a) (p)->lpVtbl->GetPixelFormat(p,a) +#define IDirectDrawSurface_GetSurfaceDesc(p,a) (p)->lpVtbl->GetSurfaceDesc(p,a) +#define IDirectDrawSurface_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b) +#define IDirectDrawSurface_IsLost(p) (p)->lpVtbl->IsLost(p) +#define IDirectDrawSurface_Lock(p,a,b,c,d) (p)->lpVtbl->Lock(p,a,b,c,d) +#define IDirectDrawSurface_ReleaseDC(p,a) (p)->lpVtbl->ReleaseDC(p,a) +#define IDirectDrawSurface_Restore(p) (p)->lpVtbl->Restore(p) +#define IDirectDrawSurface_SetClipper(p,a) (p)->lpVtbl->SetClipper(p,a) +#define IDirectDrawSurface_SetColorKey(p,a,b) (p)->lpVtbl->SetColorKey(p,a,b) +#define IDirectDrawSurface_SetOverlayPosition(p,a,b) (p)->lpVtbl->SetOverlayPosition(p,a,b) +#define IDirectDrawSurface_SetPalette(p,a) (p)->lpVtbl->SetPalette(p,a) +#define IDirectDrawSurface_Unlock(p,b) (p)->lpVtbl->Unlock(p,b) +#define IDirectDrawSurface_UpdateOverlay(p,a,b,c,d,e) (p)->lpVtbl->UpdateOverlay(p,a,b,c,d,e) +#define IDirectDrawSurface_UpdateOverlayDisplay(p,a) (p)->lpVtbl->UpdateOverlayDisplay(p,a) +#define IDirectDrawSurface_UpdateOverlayZOrder(p,a,b) (p)->lpVtbl->UpdateOverlayZOrder(p,a,b) +#else +#define IDirectDrawSurface_QueryInterface(p,a,b) (p)->QueryInterface(a,b) +#define IDirectDrawSurface_AddRef(p) (p)->AddRef() +#define IDirectDrawSurface_Release(p) (p)->Release() +#define IDirectDrawSurface_AddAttachedSurface(p,a) (p)->AddAttachedSurface(a) +#define IDirectDrawSurface_AddOverlayDirtyRect(p,a) (p)->AddOverlayDirtyRect(a) +#define IDirectDrawSurface_Blt(p,a,b,c,d,e) (p)->Blt(a,b,c,d,e) +#define IDirectDrawSurface_BltBatch(p,a,b,c) (p)->BltBatch(a,b,c) +#define IDirectDrawSurface_BltFast(p,a,b,c,d,e) (p)->BltFast(a,b,c,d,e) +#define IDirectDrawSurface_DeleteAttachedSurface(p,a,b) (p)->DeleteAttachedSurface(a,b) +#define IDirectDrawSurface_EnumAttachedSurfaces(p,a,b) (p)->EnumAttachedSurfaces(a,b) +#define IDirectDrawSurface_EnumOverlayZOrders(p,a,b,c) (p)->EnumOverlayZOrders(a,b,c) +#define IDirectDrawSurface_Flip(p,a,b) (p)->Flip(a,b) +#define IDirectDrawSurface_GetAttachedSurface(p,a,b) (p)->GetAttachedSurface(a,b) +#define IDirectDrawSurface_GetBltStatus(p,a) (p)->GetBltStatus(a) +#define IDirectDrawSurface_GetCaps(p,b) (p)->GetCaps(b) +#define IDirectDrawSurface_GetClipper(p,a) (p)->GetClipper(a) +#define IDirectDrawSurface_GetColorKey(p,a,b) (p)->GetColorKey(a,b) +#define IDirectDrawSurface_GetDC(p,a) (p)->GetDC(a) +#define IDirectDrawSurface_GetFlipStatus(p,a) (p)->GetFlipStatus(a) +#define IDirectDrawSurface_GetOverlayPosition(p,a,b) (p)->GetOverlayPosition(a,b) +#define IDirectDrawSurface_GetPalette(p,a) (p)->GetPalette(a) +#define IDirectDrawSurface_GetPixelFormat(p,a) (p)->GetPixelFormat(a) +#define IDirectDrawSurface_GetSurfaceDesc(p,a) (p)->GetSurfaceDesc(a) +#define IDirectDrawSurface_Initialize(p,a,b) (p)->Initialize(a,b) +#define IDirectDrawSurface_IsLost(p) (p)->IsLost() +#define IDirectDrawSurface_Lock(p,a,b,c,d) (p)->Lock(a,b,c,d) +#define IDirectDrawSurface_ReleaseDC(p,a) (p)->ReleaseDC(a) +#define IDirectDrawSurface_Restore(p) (p)->Restore() +#define IDirectDrawSurface_SetClipper(p,a) (p)->SetClipper(a) +#define IDirectDrawSurface_SetColorKey(p,a,b) (p)->SetColorKey(a,b) +#define IDirectDrawSurface_SetOverlayPosition(p,a,b) (p)->SetOverlayPosition(a,b) +#define IDirectDrawSurface_SetPalette(p,a) (p)->SetPalette(a) +#define IDirectDrawSurface_Unlock(p,b) (p)->Unlock(b) +#define IDirectDrawSurface_UpdateOverlay(p,a,b,c,d,e) (p)->UpdateOverlay(a,b,c,d,e) +#define IDirectDrawSurface_UpdateOverlayDisplay(p,a) (p)->UpdateOverlayDisplay(a) +#define IDirectDrawSurface_UpdateOverlayZOrder(p,a,b) (p)->UpdateOverlayZOrder(a,b) +#endif + +/* + * IDirectDrawSurface2 and related interfaces + */ +#undef INTERFACE +#define INTERFACE IDirectDrawSurface2 +DECLARE_INTERFACE_( IDirectDrawSurface2, IUnknown ) +{ + /*** IUnknown methods ***/ + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + /*** IDirectDrawSurface methods ***/ + STDMETHOD(AddAttachedSurface)(THIS_ LPDIRECTDRAWSURFACE2) PURE; + STDMETHOD(AddOverlayDirtyRect)(THIS_ LPRECT) PURE; + STDMETHOD(Blt)(THIS_ LPRECT,LPDIRECTDRAWSURFACE2, LPRECT,DWORD, LPDDBLTFX) PURE; + STDMETHOD(BltBatch)(THIS_ LPDDBLTBATCH, DWORD, DWORD ) PURE; + STDMETHOD(BltFast)(THIS_ DWORD,DWORD,LPDIRECTDRAWSURFACE2, LPRECT,DWORD) PURE; + STDMETHOD(DeleteAttachedSurface)(THIS_ DWORD,LPDIRECTDRAWSURFACE2) PURE; + STDMETHOD(EnumAttachedSurfaces)(THIS_ LPVOID,LPDDENUMSURFACESCALLBACK) PURE; + STDMETHOD(EnumOverlayZOrders)(THIS_ DWORD,LPVOID,LPDDENUMSURFACESCALLBACK) PURE; + STDMETHOD(Flip)(THIS_ LPDIRECTDRAWSURFACE2, DWORD) PURE; + STDMETHOD(GetAttachedSurface)(THIS_ LPDDSCAPS, LPDIRECTDRAWSURFACE2 FAR *) PURE; + STDMETHOD(GetBltStatus)(THIS_ DWORD) PURE; + STDMETHOD(GetCaps)(THIS_ LPDDSCAPS) PURE; + STDMETHOD(GetClipper)(THIS_ LPDIRECTDRAWCLIPPER FAR*) PURE; + STDMETHOD(GetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE; + STDMETHOD(GetDC)(THIS_ HDC FAR *) PURE; + STDMETHOD(GetFlipStatus)(THIS_ DWORD) PURE; + STDMETHOD(GetOverlayPosition)(THIS_ LPLONG, LPLONG ) PURE; + STDMETHOD(GetPalette)(THIS_ LPDIRECTDRAWPALETTE FAR*) PURE; + STDMETHOD(GetPixelFormat)(THIS_ LPDDPIXELFORMAT) PURE; + STDMETHOD(GetSurfaceDesc)(THIS_ LPDDSURFACEDESC) PURE; + STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW, LPDDSURFACEDESC) PURE; + STDMETHOD(IsLost)(THIS) PURE; + STDMETHOD(Lock)(THIS_ LPRECT,LPDDSURFACEDESC,DWORD,HANDLE) PURE; + STDMETHOD(ReleaseDC)(THIS_ HDC) PURE; + STDMETHOD(Restore)(THIS) PURE; + STDMETHOD(SetClipper)(THIS_ LPDIRECTDRAWCLIPPER) PURE; + STDMETHOD(SetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE; + STDMETHOD(SetOverlayPosition)(THIS_ LONG, LONG ) PURE; + STDMETHOD(SetPalette)(THIS_ LPDIRECTDRAWPALETTE) PURE; + STDMETHOD(Unlock)(THIS_ LPVOID) PURE; + STDMETHOD(UpdateOverlay)(THIS_ LPRECT, LPDIRECTDRAWSURFACE2,LPRECT,DWORD, LPDDOVERLAYFX) PURE; + STDMETHOD(UpdateOverlayDisplay)(THIS_ DWORD) PURE; + STDMETHOD(UpdateOverlayZOrder)(THIS_ DWORD, LPDIRECTDRAWSURFACE2) PURE; + /*** Added in the v2 interface ***/ + STDMETHOD(GetDDInterface)(THIS_ LPVOID FAR *) PURE; + STDMETHOD(PageLock)(THIS_ DWORD) PURE; + STDMETHOD(PageUnlock)(THIS_ DWORD) PURE; +}; + +#if !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectDrawSurface2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IDirectDrawSurface2_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IDirectDrawSurface2_Release(p) (p)->lpVtbl->Release(p) +#define IDirectDrawSurface2_AddAttachedSurface(p,a) (p)->lpVtbl->AddAttachedSurface(p,a) +#define IDirectDrawSurface2_AddOverlayDirtyRect(p,a) (p)->lpVtbl->AddOverlayDirtyRect(p,a) +#define IDirectDrawSurface2_Blt(p,a,b,c,d,e) (p)->lpVtbl->Blt(p,a,b,c,d,e) +#define IDirectDrawSurface2_BltBatch(p,a,b,c) (p)->lpVtbl->BltBatch(p,a,b,c) +#define IDirectDrawSurface2_BltFast(p,a,b,c,d,e) (p)->lpVtbl->BltFast(p,a,b,c,d,e) +#define IDirectDrawSurface2_DeleteAttachedSurface(p,a,b) (p)->lpVtbl->DeleteAttachedSurface(p,a,b) +#define IDirectDrawSurface2_EnumAttachedSurfaces(p,a,b) (p)->lpVtbl->EnumAttachedSurfaces(p,a,b) +#define IDirectDrawSurface2_EnumOverlayZOrders(p,a,b,c) (p)->lpVtbl->EnumOverlayZOrders(p,a,b,c) +#define IDirectDrawSurface2_Flip(p,a,b) (p)->lpVtbl->Flip(p,a,b) +#define IDirectDrawSurface2_GetAttachedSurface(p,a,b) (p)->lpVtbl->GetAttachedSurface(p,a,b) +#define IDirectDrawSurface2_GetBltStatus(p,a) (p)->lpVtbl->GetBltStatus(p,a) +#define IDirectDrawSurface2_GetCaps(p,b) (p)->lpVtbl->GetCaps(p,b) +#define IDirectDrawSurface2_GetClipper(p,a) (p)->lpVtbl->GetClipper(p,a) +#define IDirectDrawSurface2_GetColorKey(p,a,b) (p)->lpVtbl->GetColorKey(p,a,b) +#define IDirectDrawSurface2_GetDC(p,a) (p)->lpVtbl->GetDC(p,a) +#define IDirectDrawSurface2_GetFlipStatus(p,a) (p)->lpVtbl->GetFlipStatus(p,a) +#define IDirectDrawSurface2_GetOverlayPosition(p,a,b) (p)->lpVtbl->GetOverlayPosition(p,a,b) +#define IDirectDrawSurface2_GetPalette(p,a) (p)->lpVtbl->GetPalette(p,a) +#define IDirectDrawSurface2_GetPixelFormat(p,a) (p)->lpVtbl->GetPixelFormat(p,a) +#define IDirectDrawSurface2_GetSurfaceDesc(p,a) (p)->lpVtbl->GetSurfaceDesc(p,a) +#define IDirectDrawSurface2_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b) +#define IDirectDrawSurface2_IsLost(p) (p)->lpVtbl->IsLost(p) +#define IDirectDrawSurface2_Lock(p,a,b,c,d) (p)->lpVtbl->Lock(p,a,b,c,d) +#define IDirectDrawSurface2_ReleaseDC(p,a) (p)->lpVtbl->ReleaseDC(p,a) +#define IDirectDrawSurface2_Restore(p) (p)->lpVtbl->Restore(p) +#define IDirectDrawSurface2_SetClipper(p,a) (p)->lpVtbl->SetClipper(p,a) +#define IDirectDrawSurface2_SetColorKey(p,a,b) (p)->lpVtbl->SetColorKey(p,a,b) +#define IDirectDrawSurface2_SetOverlayPosition(p,a,b) (p)->lpVtbl->SetOverlayPosition(p,a,b) +#define IDirectDrawSurface2_SetPalette(p,a) (p)->lpVtbl->SetPalette(p,a) +#define IDirectDrawSurface2_Unlock(p,b) (p)->lpVtbl->Unlock(p,b) +#define IDirectDrawSurface2_UpdateOverlay(p,a,b,c,d,e) (p)->lpVtbl->UpdateOverlay(p,a,b,c,d,e) +#define IDirectDrawSurface2_UpdateOverlayDisplay(p,a) (p)->lpVtbl->UpdateOverlayDisplay(p,a) +#define IDirectDrawSurface2_UpdateOverlayZOrder(p,a,b) (p)->lpVtbl->UpdateOverlayZOrder(p,a,b) +#define IDirectDrawSurface2_GetDDInterface(p,a) (p)->lpVtbl->GetDDInterface(p,a) +#define IDirectDrawSurface2_PageLock(p,a) (p)->lpVtbl->PageLock(p,a) +#define IDirectDrawSurface2_PageUnlock(p,a) (p)->lpVtbl->PageUnlock(p,a) +#else +#define IDirectDrawSurface2_QueryInterface(p,a,b) (p)->QueryInterface(a,b) +#define IDirectDrawSurface2_AddRef(p) (p)->AddRef() +#define IDirectDrawSurface2_Release(p) (p)->Release() +#define IDirectDrawSurface2_AddAttachedSurface(p,a) (p)->AddAttachedSurface(a) +#define IDirectDrawSurface2_AddOverlayDirtyRect(p,a) (p)->AddOverlayDirtyRect(a) +#define IDirectDrawSurface2_Blt(p,a,b,c,d,e) (p)->Blt(a,b,c,d,e) +#define IDirectDrawSurface2_BltBatch(p,a,b,c) (p)->BltBatch(a,b,c) +#define IDirectDrawSurface2_BltFast(p,a,b,c,d,e) (p)->BltFast(a,b,c,d,e) +#define IDirectDrawSurface2_DeleteAttachedSurface(p,a,b) (p)->DeleteAttachedSurface(a,b) +#define IDirectDrawSurface2_EnumAttachedSurfaces(p,a,b) (p)->EnumAttachedSurfaces(a,b) +#define IDirectDrawSurface2_EnumOverlayZOrders(p,a,b,c) (p)->EnumOverlayZOrders(a,b,c) +#define IDirectDrawSurface2_Flip(p,a,b) (p)->Flip(a,b) +#define IDirectDrawSurface2_GetAttachedSurface(p,a,b) (p)->GetAttachedSurface(a,b) +#define IDirectDrawSurface2_GetBltStatus(p,a) (p)->GetBltStatus(a) +#define IDirectDrawSurface2_GetCaps(p,b) (p)->GetCaps(b) +#define IDirectDrawSurface2_GetClipper(p,a) (p)->GetClipper(a) +#define IDirectDrawSurface2_GetColorKey(p,a,b) (p)->GetColorKey(a,b) +#define IDirectDrawSurface2_GetDC(p,a) (p)->GetDC(a) +#define IDirectDrawSurface2_GetFlipStatus(p,a) (p)->GetFlipStatus(a) +#define IDirectDrawSurface2_GetOverlayPosition(p,a,b) (p)->GetOverlayPosition(a,b) +#define IDirectDrawSurface2_GetPalette(p,a) (p)->GetPalette(a) +#define IDirectDrawSurface2_GetPixelFormat(p,a) (p)->GetPixelFormat(a) +#define IDirectDrawSurface2_GetSurfaceDesc(p,a) (p)->GetSurfaceDesc(a) +#define IDirectDrawSurface2_Initialize(p,a,b) (p)->Initialize(a,b) +#define IDirectDrawSurface2_IsLost(p) (p)->IsLost() +#define IDirectDrawSurface2_Lock(p,a,b,c,d) (p)->Lock(a,b,c,d) +#define IDirectDrawSurface2_ReleaseDC(p,a) (p)->ReleaseDC(a) +#define IDirectDrawSurface2_Restore(p) (p)->Restore() +#define IDirectDrawSurface2_SetClipper(p,a) (p)->SetClipper(a) +#define IDirectDrawSurface2_SetColorKey(p,a,b) (p)->SetColorKey(a,b) +#define IDirectDrawSurface2_SetOverlayPosition(p,a,b) (p)->SetOverlayPosition(a,b) +#define IDirectDrawSurface2_SetPalette(p,a) (p)->SetPalette(a) +#define IDirectDrawSurface2_Unlock(p,b) (p)->Unlock(b) +#define IDirectDrawSurface2_UpdateOverlay(p,a,b,c,d,e) (p)->UpdateOverlay(a,b,c,d,e) +#define IDirectDrawSurface2_UpdateOverlayDisplay(p,a) (p)->UpdateOverlayDisplay(a) +#define IDirectDrawSurface2_UpdateOverlayZOrder(p,a,b) (p)->UpdateOverlayZOrder(a,b) +#define IDirectDrawSurface2_GetDDInterface(p,a) (p)->GetDDInterface(a) +#define IDirectDrawSurface2_PageLock(p,a) (p)->PageLock(a) +#define IDirectDrawSurface2_PageUnlock(p,a) (p)->PageUnlock(a) +#endif + +/* + * IDirectDrawSurface3 and related interfaces + */ +#undef INTERFACE +#define INTERFACE IDirectDrawSurface3 +DECLARE_INTERFACE_( IDirectDrawSurface3, IUnknown ) +{ + /*** IUnknown methods ***/ + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + /*** IDirectDrawSurface methods ***/ + STDMETHOD(AddAttachedSurface)(THIS_ LPDIRECTDRAWSURFACE3) PURE; + STDMETHOD(AddOverlayDirtyRect)(THIS_ LPRECT) PURE; + STDMETHOD(Blt)(THIS_ LPRECT,LPDIRECTDRAWSURFACE3, LPRECT,DWORD, LPDDBLTFX) PURE; + STDMETHOD(BltBatch)(THIS_ LPDDBLTBATCH, DWORD, DWORD ) PURE; + STDMETHOD(BltFast)(THIS_ DWORD,DWORD,LPDIRECTDRAWSURFACE3, LPRECT,DWORD) PURE; + STDMETHOD(DeleteAttachedSurface)(THIS_ DWORD,LPDIRECTDRAWSURFACE3) PURE; + STDMETHOD(EnumAttachedSurfaces)(THIS_ LPVOID,LPDDENUMSURFACESCALLBACK) PURE; + STDMETHOD(EnumOverlayZOrders)(THIS_ DWORD,LPVOID,LPDDENUMSURFACESCALLBACK) PURE; + STDMETHOD(Flip)(THIS_ LPDIRECTDRAWSURFACE3, DWORD) PURE; + STDMETHOD(GetAttachedSurface)(THIS_ LPDDSCAPS, LPDIRECTDRAWSURFACE3 FAR *) PURE; + STDMETHOD(GetBltStatus)(THIS_ DWORD) PURE; + STDMETHOD(GetCaps)(THIS_ LPDDSCAPS) PURE; + STDMETHOD(GetClipper)(THIS_ LPDIRECTDRAWCLIPPER FAR*) PURE; + STDMETHOD(GetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE; + STDMETHOD(GetDC)(THIS_ HDC FAR *) PURE; + STDMETHOD(GetFlipStatus)(THIS_ DWORD) PURE; + STDMETHOD(GetOverlayPosition)(THIS_ LPLONG, LPLONG ) PURE; + STDMETHOD(GetPalette)(THIS_ LPDIRECTDRAWPALETTE FAR*) PURE; + STDMETHOD(GetPixelFormat)(THIS_ LPDDPIXELFORMAT) PURE; + STDMETHOD(GetSurfaceDesc)(THIS_ LPDDSURFACEDESC) PURE; + STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW, LPDDSURFACEDESC) PURE; + STDMETHOD(IsLost)(THIS) PURE; + STDMETHOD(Lock)(THIS_ LPRECT,LPDDSURFACEDESC,DWORD,HANDLE) PURE; + STDMETHOD(ReleaseDC)(THIS_ HDC) PURE; + STDMETHOD(Restore)(THIS) PURE; + STDMETHOD(SetClipper)(THIS_ LPDIRECTDRAWCLIPPER) PURE; + STDMETHOD(SetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE; + STDMETHOD(SetOverlayPosition)(THIS_ LONG, LONG ) PURE; + STDMETHOD(SetPalette)(THIS_ LPDIRECTDRAWPALETTE) PURE; + STDMETHOD(Unlock)(THIS_ LPVOID) PURE; + STDMETHOD(UpdateOverlay)(THIS_ LPRECT, LPDIRECTDRAWSURFACE3,LPRECT,DWORD, LPDDOVERLAYFX) PURE; + STDMETHOD(UpdateOverlayDisplay)(THIS_ DWORD) PURE; + STDMETHOD(UpdateOverlayZOrder)(THIS_ DWORD, LPDIRECTDRAWSURFACE3) PURE; + /*** Added in the v2 interface ***/ + STDMETHOD(GetDDInterface)(THIS_ LPVOID FAR *) PURE; + STDMETHOD(PageLock)(THIS_ DWORD) PURE; + STDMETHOD(PageUnlock)(THIS_ DWORD) PURE; + /*** Added in the V3 interface ***/ + STDMETHOD(SetSurfaceDesc)(THIS_ LPDDSURFACEDESC, DWORD) PURE; +}; + +#if !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectDrawSurface3_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IDirectDrawSurface3_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IDirectDrawSurface3_Release(p) (p)->lpVtbl->Release(p) +#define IDirectDrawSurface3_AddAttachedSurface(p,a) (p)->lpVtbl->AddAttachedSurface(p,a) +#define IDirectDrawSurface3_AddOverlayDirtyRect(p,a) (p)->lpVtbl->AddOverlayDirtyRect(p,a) +#define IDirectDrawSurface3_Blt(p,a,b,c,d,e) (p)->lpVtbl->Blt(p,a,b,c,d,e) +#define IDirectDrawSurface3_BltBatch(p,a,b,c) (p)->lpVtbl->BltBatch(p,a,b,c) +#define IDirectDrawSurface3_BltFast(p,a,b,c,d,e) (p)->lpVtbl->BltFast(p,a,b,c,d,e) +#define IDirectDrawSurface3_DeleteAttachedSurface(p,a,b) (p)->lpVtbl->DeleteAttachedSurface(p,a,b) +#define IDirectDrawSurface3_EnumAttachedSurfaces(p,a,b) (p)->lpVtbl->EnumAttachedSurfaces(p,a,b) +#define IDirectDrawSurface3_EnumOverlayZOrders(p,a,b,c) (p)->lpVtbl->EnumOverlayZOrders(p,a,b,c) +#define IDirectDrawSurface3_Flip(p,a,b) (p)->lpVtbl->Flip(p,a,b) +#define IDirectDrawSurface3_GetAttachedSurface(p,a,b) (p)->lpVtbl->GetAttachedSurface(p,a,b) +#define IDirectDrawSurface3_GetBltStatus(p,a) (p)->lpVtbl->GetBltStatus(p,a) +#define IDirectDrawSurface3_GetCaps(p,b) (p)->lpVtbl->GetCaps(p,b) +#define IDirectDrawSurface3_GetClipper(p,a) (p)->lpVtbl->GetClipper(p,a) +#define IDirectDrawSurface3_GetColorKey(p,a,b) (p)->lpVtbl->GetColorKey(p,a,b) +#define IDirectDrawSurface3_GetDC(p,a) (p)->lpVtbl->GetDC(p,a) +#define IDirectDrawSurface3_GetFlipStatus(p,a) (p)->lpVtbl->GetFlipStatus(p,a) +#define IDirectDrawSurface3_GetOverlayPosition(p,a,b) (p)->lpVtbl->GetOverlayPosition(p,a,b) +#define IDirectDrawSurface3_GetPalette(p,a) (p)->lpVtbl->GetPalette(p,a) +#define IDirectDrawSurface3_GetPixelFormat(p,a) (p)->lpVtbl->GetPixelFormat(p,a) +#define IDirectDrawSurface3_GetSurfaceDesc(p,a) (p)->lpVtbl->GetSurfaceDesc(p,a) +#define IDirectDrawSurface3_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b) +#define IDirectDrawSurface3_IsLost(p) (p)->lpVtbl->IsLost(p) +#define IDirectDrawSurface3_Lock(p,a,b,c,d) (p)->lpVtbl->Lock(p,a,b,c,d) +#define IDirectDrawSurface3_ReleaseDC(p,a) (p)->lpVtbl->ReleaseDC(p,a) +#define IDirectDrawSurface3_Restore(p) (p)->lpVtbl->Restore(p) +#define IDirectDrawSurface3_SetClipper(p,a) (p)->lpVtbl->SetClipper(p,a) +#define IDirectDrawSurface3_SetColorKey(p,a,b) (p)->lpVtbl->SetColorKey(p,a,b) +#define IDirectDrawSurface3_SetOverlayPosition(p,a,b) (p)->lpVtbl->SetOverlayPosition(p,a,b) +#define IDirectDrawSurface3_SetPalette(p,a) (p)->lpVtbl->SetPalette(p,a) +#define IDirectDrawSurface3_Unlock(p,b) (p)->lpVtbl->Unlock(p,b) +#define IDirectDrawSurface3_UpdateOverlay(p,a,b,c,d,e) (p)->lpVtbl->UpdateOverlay(p,a,b,c,d,e) +#define IDirectDrawSurface3_UpdateOverlayDisplay(p,a) (p)->lpVtbl->UpdateOverlayDisplay(p,a) +#define IDirectDrawSurface3_UpdateOverlayZOrder(p,a,b) (p)->lpVtbl->UpdateOverlayZOrder(p,a,b) +#define IDirectDrawSurface3_GetDDInterface(p,a) (p)->lpVtbl->GetDDInterface(p,a) +#define IDirectDrawSurface3_PageLock(p,a) (p)->lpVtbl->PageLock(p,a) +#define IDirectDrawSurface3_PageUnlock(p,a) (p)->lpVtbl->PageUnlock(p,a) +#define IDirectDrawSurface3_SetSurfaceDesc(p,a,b) (p)->lpVtbl->SetSurfaceDesc(p,a,b) +#else +#define IDirectDrawSurface3_QueryInterface(p,a,b) (p)->QueryInterface(a,b) +#define IDirectDrawSurface3_AddRef(p) (p)->AddRef() +#define IDirectDrawSurface3_Release(p) (p)->Release() +#define IDirectDrawSurface3_AddAttachedSurface(p,a) (p)->AddAttachedSurface(a) +#define IDirectDrawSurface3_AddOverlayDirtyRect(p,a) (p)->AddOverlayDirtyRect(a) +#define IDirectDrawSurface3_Blt(p,a,b,c,d,e) (p)->Blt(a,b,c,d,e) +#define IDirectDrawSurface3_BltBatch(p,a,b,c) (p)->BltBatch(a,b,c) +#define IDirectDrawSurface3_BltFast(p,a,b,c,d,e) (p)->BltFast(a,b,c,d,e) +#define IDirectDrawSurface3_DeleteAttachedSurface(p,a,b) (p)->DeleteAttachedSurface(a,b) +#define IDirectDrawSurface3_EnumAttachedSurfaces(p,a,b) (p)->EnumAttachedSurfaces(a,b) +#define IDirectDrawSurface3_EnumOverlayZOrders(p,a,b,c) (p)->EnumOverlayZOrders(a,b,c) +#define IDirectDrawSurface3_Flip(p,a,b) (p)->Flip(a,b) +#define IDirectDrawSurface3_GetAttachedSurface(p,a,b) (p)->GetAttachedSurface(a,b) +#define IDirectDrawSurface3_GetBltStatus(p,a) (p)->GetBltStatus(a) +#define IDirectDrawSurface3_GetCaps(p,b) (p)->GetCaps(b) +#define IDirectDrawSurface3_GetClipper(p,a) (p)->GetClipper(a) +#define IDirectDrawSurface3_GetColorKey(p,a,b) (p)->GetColorKey(a,b) +#define IDirectDrawSurface3_GetDC(p,a) (p)->GetDC(a) +#define IDirectDrawSurface3_GetFlipStatus(p,a) (p)->GetFlipStatus(a) +#define IDirectDrawSurface3_GetOverlayPosition(p,a,b) (p)->GetOverlayPosition(a,b) +#define IDirectDrawSurface3_GetPalette(p,a) (p)->GetPalette(a) +#define IDirectDrawSurface3_GetPixelFormat(p,a) (p)->GetPixelFormat(a) +#define IDirectDrawSurface3_GetSurfaceDesc(p,a) (p)->GetSurfaceDesc(a) +#define IDirectDrawSurface3_Initialize(p,a,b) (p)->Initialize(a,b) +#define IDirectDrawSurface3_IsLost(p) (p)->IsLost() +#define IDirectDrawSurface3_Lock(p,a,b,c,d) (p)->Lock(a,b,c,d) +#define IDirectDrawSurface3_ReleaseDC(p,a) (p)->ReleaseDC(a) +#define IDirectDrawSurface3_Restore(p) (p)->Restore() +#define IDirectDrawSurface3_SetClipper(p,a) (p)->SetClipper(a) +#define IDirectDrawSurface3_SetColorKey(p,a,b) (p)->SetColorKey(a,b) +#define IDirectDrawSurface3_SetOverlayPosition(p,a,b) (p)->SetOverlayPosition(a,b) +#define IDirectDrawSurface3_SetPalette(p,a) (p)->SetPalette(a) +#define IDirectDrawSurface3_Unlock(p,b) (p)->Unlock(b) +#define IDirectDrawSurface3_UpdateOverlay(p,a,b,c,d,e) (p)->UpdateOverlay(a,b,c,d,e) +#define IDirectDrawSurface3_UpdateOverlayDisplay(p,a) (p)->UpdateOverlayDisplay(a) +#define IDirectDrawSurface3_UpdateOverlayZOrder(p,a,b) (p)->UpdateOverlayZOrder(a,b) +#define IDirectDrawSurface3_GetDDInterface(p,a) (p)->GetDDInterface(a) +#define IDirectDrawSurface3_PageLock(p,a) (p)->PageLock(a) +#define IDirectDrawSurface3_PageUnlock(p,a) (p)->PageUnlock(a) +#define IDirectDrawSurface3_SetSurfaceDesc(p,a,b) (p)->SetSurfaceDesc(a,b) +#endif + +/* + * IDirectDrawColorControl + */ +#if defined( _WIN32 ) && !defined( _NO_COM ) +#undef INTERFACE +#define INTERFACE IDirectDrawColorControl +DECLARE_INTERFACE_( IDirectDrawColorControl, IUnknown ) +{ + /*** IUnknown methods ***/ + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + /*** IDirectDrawColorControl methods ***/ + STDMETHOD(GetColorControls)(THIS_ LPDDCOLORCONTROL) PURE; + STDMETHOD(SetColorControls)(THIS_ LPDDCOLORCONTROL) PURE; +}; + +#if !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectDrawColorControl_QueryInterface(p, a, b) (p)->lpVtbl->QueryInterface(p, a, b) +#define IDirectDrawColorControl_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IDirectDrawColorControl_Release(p) (p)->lpVtbl->Release(p) +#define IDirectDrawColorControl_GetColorControls(p, a) (p)->lpVtbl->GetColorControls(p, a) +#define IDirectDrawColorControl_SetColorControls(p, a) (p)->lpVtbl->SetColorControls(p, a) +#else +#define IDirectDrawColorControl_QueryInterface(p, a, b) (p)->QueryInterface(a, b) +#define IDirectDrawColorControl_AddRef(p) (p)->AddRef() +#define IDirectDrawColorControl_Release(p) (p)->Release() +#define IDirectDrawColorControl_GetColorControls(p, a) (p)->GetColorControls(a) +#define IDirectDrawColorControl_SetColorControls(p, a) (p)->SetColorControls(a) +#endif + +#endif + + + +#endif + + +/* + * DDSURFACEDESC + */ +typedef struct _DDSURFACEDESC +{ + DWORD dwSize; // size of the DDSURFACEDESC structure + DWORD dwFlags; // determines what fields are valid + DWORD dwHeight; // height of surface to be created + DWORD dwWidth; // width of input surface + union + { + LONG lPitch; // distance to start of next line (return value only) + DWORD dwLinearSize; // Formless late-allocated optimized surface size + }; + DWORD dwBackBufferCount; // number of back buffers requested + union + { + DWORD dwMipMapCount; // number of mip-map levels requested + DWORD dwZBufferBitDepth; // depth of Z buffer requested + DWORD dwRefreshRate; // refresh rate (used when display mode is described) + }; + DWORD dwAlphaBitDepth; // depth of alpha buffer requested + DWORD dwReserved; // reserved + LPVOID lpSurface; // pointer to the associated surface memory + DDCOLORKEY ddckCKDestOverlay; // color key for destination overlay use + DDCOLORKEY ddckCKDestBlt; // color key for destination blt use + DDCOLORKEY ddckCKSrcOverlay; // color key for source overlay use + DDCOLORKEY ddckCKSrcBlt; // color key for source blt use + DDPIXELFORMAT ddpfPixelFormat; // pixel format description of the surface + DDSCAPS ddsCaps; // direct draw surface capabilities +} DDSURFACEDESC; + +/* + * ddsCaps field is valid. + */ +#define DDSD_CAPS 0x00000001l // default + +/* + * dwHeight field is valid. + */ +#define DDSD_HEIGHT 0x00000002l + +/* + * dwWidth field is valid. + */ +#define DDSD_WIDTH 0x00000004l + +/* + * lPitch is valid. + */ +#define DDSD_PITCH 0x00000008l + +/* + * dwBackBufferCount is valid. + */ +#define DDSD_BACKBUFFERCOUNT 0x00000020l + +/* + * dwZBufferBitDepth is valid. + */ +#define DDSD_ZBUFFERBITDEPTH 0x00000040l + +/* + * dwAlphaBitDepth is valid. + */ +#define DDSD_ALPHABITDEPTH 0x00000080l + + +/* + * lpSurface is valid. + */ +#define DDSD_LPSURFACE 0x00000800l + +/* + * ddpfPixelFormat is valid. + */ +#define DDSD_PIXELFORMAT 0x00001000l + +/* + * ddckCKDestOverlay is valid. + */ +#define DDSD_CKDESTOVERLAY 0x00002000l + +/* + * ddckCKDestBlt is valid. + */ +#define DDSD_CKDESTBLT 0x00004000l + +/* + * ddckCKSrcOverlay is valid. + */ +#define DDSD_CKSRCOVERLAY 0x00008000l + +/* + * ddckCKSrcBlt is valid. + */ +#define DDSD_CKSRCBLT 0x00010000l + +/* + * dwMipMapCount is valid. + */ +#define DDSD_MIPMAPCOUNT 0x00020000l + + /* + * dwRefreshRate is valid + */ +#define DDSD_REFRESHRATE 0x00040000l + +/* + * dwLinearSize is valid + */ +#define DDSD_LINEARSIZE 0x00080000l + +/* + * All input fields are valid. + */ +#define DDSD_ALL 0x000ff9eel + + +/* + * DDCOLORCONTROL + */ +typedef struct _DDCOLORCONTROL +{ + DWORD dwSize; + DWORD dwFlags; + LONG lBrightness; + LONG lContrast; + LONG lHue; + LONG lSaturation; + LONG lSharpness; + LONG lGamma; + LONG lColorEnable; + DWORD dwReserved1; +} DDCOLORCONTROL; + + +/* + * lBrightness field is valid. + */ +#define DDCOLOR_BRIGHTNESS 0x00000001l + +/* + * lContrast field is valid. + */ +#define DDCOLOR_CONTRAST 0x00000002l + +/* + * lHue field is valid. + */ +#define DDCOLOR_HUE 0x00000004l + +/* + * lSaturation field is valid. + */ +#define DDCOLOR_SATURATION 0x00000008l + +/* + * lSharpness field is valid. + */ +#define DDCOLOR_SHARPNESS 0x00000010l + +/* + * lGamma field is valid. + */ +#define DDCOLOR_GAMMA 0x00000020l + +/* + * lColorEnable field is valid. + */ +#define DDCOLOR_COLORENABLE 0x00000040l + + + +/*============================================================================ + * + * Direct Draw Capability Flags + * + * These flags are used to describe the capabilities of a given Surface. + * All flags are bit flags. + * + *==========================================================================*/ + +/**************************************************************************** + * + * DIRECTDRAWSURFACE CAPABILITY FLAGS + * + ****************************************************************************/ + +/* + * This bit is reserved. It should not be specified. + */ +#define DDSCAPS_RESERVED1 0x00000001l + +/* + * Indicates that this surface contains alpha-only information. + * (To determine if a surface is RGBA/YUVA, the pixel format must be + * interrogated.) + */ +#define DDSCAPS_ALPHA 0x00000002l + +/* + * Indicates that this surface is a backbuffer. It is generally + * set by CreateSurface when the DDSCAPS_FLIP capability bit is set. + * It indicates that this surface is THE back buffer of a surface + * flipping structure. DirectDraw supports N surfaces in a + * surface flipping structure. Only the surface that immediately + * precedeces the DDSCAPS_FRONTBUFFER has this capability bit set. + * The other surfaces are identified as back buffers by the presence + * of the DDSCAPS_FLIP capability, their attachment order, and the + * absence of the DDSCAPS_FRONTBUFFER and DDSCAPS_BACKBUFFER + * capabilities. The bit is sent to CreateSurface when a standalone + * back buffer is being created. This surface could be attached to + * a front buffer and/or back buffers to form a flipping surface + * structure after the CreateSurface call. See AddAttachments for + * a detailed description of the behaviors in this case. + */ +#define DDSCAPS_BACKBUFFER 0x00000004l + +/* + * Indicates a complex surface structure is being described. A + * complex surface structure results in the creation of more than + * one surface. The additional surfaces are attached to the root + * surface. The complex structure can only be destroyed by + * destroying the root. + */ +#define DDSCAPS_COMPLEX 0x00000008l + +/* + * Indicates that this surface is a part of a surface flipping structure. + * When it is passed to CreateSurface the DDSCAPS_FRONTBUFFER and + * DDSCAP_BACKBUFFER bits are not set. They are set by CreateSurface + * on the resulting creations. The dwBackBufferCount field in the + * DDSURFACEDESC structure must be set to at least 1 in order for + * the CreateSurface call to succeed. The DDSCAPS_COMPLEX capability + * must always be set with creating multiple surfaces through CreateSurface. + */ +#define DDSCAPS_FLIP 0x00000010l + +/* + * Indicates that this surface is THE front buffer of a surface flipping + * structure. It is generally set by CreateSurface when the DDSCAPS_FLIP + * capability bit is set. + * If this capability is sent to CreateSurface then a standalonw front buffer + * is created. This surface will not have the DDSCAPS_FLIP capability. + * It can be attached to other back buffers to form a flipping structure. + * See AddAttachments for a detailed description of the behaviors in this + * case. + */ +#define DDSCAPS_FRONTBUFFER 0x00000020l + +/* + * Indicates that this surface is any offscreen surface that is not an overlay, + * texture, zbuffer, front buffer, back buffer, or alpha surface. It is used + * to identify plain vanilla surfaces. + */ +#define DDSCAPS_OFFSCREENPLAIN 0x00000040l + +/* + * Indicates that this surface is an overlay. It may or may not be directly visible + * depending on whether or not it is currently being overlayed onto the primary + * surface. DDSCAPS_VISIBLE can be used to determine whether or not it is being + * overlayed at the moment. + */ +#define DDSCAPS_OVERLAY 0x00000080l + +/* + * Indicates that unique DirectDrawPalette objects can be created and + * attached to this surface. + */ +#define DDSCAPS_PALETTE 0x00000100l + +/* + * Indicates that this surface is the primary surface. The primary + * surface represents what the user is seeing at the moment. + */ +#define DDSCAPS_PRIMARYSURFACE 0x00000200l + +/* + * Indicates that this surface is the primary surface for the left eye. + * The primary surface for the left eye represents what the user is seeing + * at the moment with the users left eye. When this surface is created the + * DDSCAPS_PRIMARYSURFACE represents what the user is seeing with the users + * right eye. + */ +#define DDSCAPS_PRIMARYSURFACELEFT 0x00000400l + +/* + * Indicates that this surface memory was allocated in system memory + */ +#define DDSCAPS_SYSTEMMEMORY 0x00000800l + +/* + * Indicates that this surface can be used as a 3D texture. It does not + * indicate whether or not the surface is being used for that purpose. + */ +#define DDSCAPS_TEXTURE 0x00001000l + +/* + * Indicates that a surface may be a destination for 3D rendering. This + * bit must be set in order to query for a Direct3D Device Interface + * from this surface. + */ +#define DDSCAPS_3DDEVICE 0x00002000l + +/* + * Indicates that this surface exists in video memory. + */ +#define DDSCAPS_VIDEOMEMORY 0x00004000l + +/* + * Indicates that changes made to this surface are immediately visible. + * It is always set for the primary surface and is set for overlays while + * they are being overlayed and texture maps while they are being textured. + */ +#define DDSCAPS_VISIBLE 0x00008000l + +/* + * Indicates that only writes are permitted to the surface. Read accesses + * from the surface may or may not generate a protection fault, but the + * results of a read from this surface will not be meaningful. READ ONLY. + */ +#define DDSCAPS_WRITEONLY 0x00010000l + +/* + * Indicates that this surface is a z buffer. A z buffer does not contain + * displayable information. Instead it contains bit depth information that is + * used to determine which pixels are visible and which are obscured. + */ +#define DDSCAPS_ZBUFFER 0x00020000l + +/* + * Indicates surface will have a DC associated long term + */ +#define DDSCAPS_OWNDC 0x00040000l + +/* + * Indicates surface should be able to receive live video + */ +#define DDSCAPS_LIVEVIDEO 0x00080000l + +/* + * Indicates surface should be able to have a stream decompressed + * to it by the hardware. + */ +#define DDSCAPS_HWCODEC 0x00100000l + +/* + * Surface is a ModeX surface. + * + */ +#define DDSCAPS_MODEX 0x00200000l + +/* + * Indicates surface is one level of a mip-map. This surface will + * be attached to other DDSCAPS_MIPMAP surfaces to form the mip-map. + * This can be done explicitly, by creating a number of surfaces and + * attaching them with AddAttachedSurface or by implicitly by CreateSurface. + * If this bit is set then DDSCAPS_TEXTURE must also be set. + */ +#define DDSCAPS_MIPMAP 0x00400000l + +/* + * This bit is reserved. It should not be specified. + */ +#define DDSCAPS_RESERVED2 0x00800000l + + +/* + * Indicates that memory for the surface is not allocated until the surface + * is loaded (via the Direct3D texture Load() function). + */ +#define DDSCAPS_ALLOCONLOAD 0x04000000l + +/* + * Indicates that the surface will recieve data from a video port. + */ +#define DDSCAPS_VIDEOPORT 0x08000000l + +/* + * Indicates that a video memory surface is resident in true, local video + * memory rather than non-local video memory. If this flag is specified then + * so must DDSCAPS_VIDEOMEMORY. This flag is mutually exclusive with + * DDSCAPS_NONLOCALVIDMEM. + */ +#define DDSCAPS_LOCALVIDMEM 0x10000000l + +/* + * Indicates that a video memory surface is resident in non-local video + * memory rather than true, local video memory. If this flag is specified + * then so must DDSCAPS_VIDEOMEMORY. This flag is mutually exclusive with + * DDSCAPS_LOCALVIDMEM. + */ +#define DDSCAPS_NONLOCALVIDMEM 0x20000000l + +/* + * Indicates that this surface is a standard VGA mode surface, and not a + * ModeX surface. (This flag will never be set in combination with the + * DDSCAPS_MODEX flag). + */ +#define DDSCAPS_STANDARDVGAMODE 0x40000000l + +/* + * Indicates that this surface will be an optimized surface. This flag is + * currently only valid in conjunction with the DDSCAPS_TEXTURE flag. The surface + * will be created without any underlying video memory until loaded. + */ +#define DDSCAPS_OPTIMIZED 0x80000000l + + + + /**************************************************************************** + * + * DIRECTDRAW DRIVER CAPABILITY FLAGS + * + ****************************************************************************/ + +/* + * Display hardware has 3D acceleration. + */ +#define DDCAPS_3D 0x00000001l + +/* + * Indicates that DirectDraw will support only dest rectangles that are aligned + * on DIRECTDRAWCAPS.dwAlignBoundaryDest boundaries of the surface, respectively. + * READ ONLY. + */ +#define DDCAPS_ALIGNBOUNDARYDEST 0x00000002l + +/* + * Indicates that DirectDraw will support only source rectangles whose sizes in + * BYTEs are DIRECTDRAWCAPS.dwAlignSizeDest multiples, respectively. READ ONLY. + */ +#define DDCAPS_ALIGNSIZEDEST 0x00000004l +/* + * Indicates that DirectDraw will support only source rectangles that are aligned + * on DIRECTDRAWCAPS.dwAlignBoundarySrc boundaries of the surface, respectively. + * READ ONLY. + */ +#define DDCAPS_ALIGNBOUNDARYSRC 0x00000008l + +/* + * Indicates that DirectDraw will support only source rectangles whose sizes in + * BYTEs are DIRECTDRAWCAPS.dwAlignSizeSrc multiples, respectively. READ ONLY. + */ +#define DDCAPS_ALIGNSIZESRC 0x00000010l + +/* + * Indicates that DirectDraw will create video memory surfaces that have a stride + * alignment equal to DIRECTDRAWCAPS.dwAlignStride. READ ONLY. + */ +#define DDCAPS_ALIGNSTRIDE 0x00000020l + +/* + * Display hardware is capable of blt operations. + */ +#define DDCAPS_BLT 0x00000040l + +/* + * Display hardware is capable of asynchronous blt operations. + */ +#define DDCAPS_BLTQUEUE 0x00000080l + +/* + * Display hardware is capable of color space conversions during the blt operation. + */ +#define DDCAPS_BLTFOURCC 0x00000100l + +/* + * Display hardware is capable of stretching during blt operations. + */ +#define DDCAPS_BLTSTRETCH 0x00000200l + +/* + * Display hardware is shared with GDI. + */ +#define DDCAPS_GDI 0x00000400l + +/* + * Display hardware can overlay. + */ +#define DDCAPS_OVERLAY 0x00000800l + +/* + * Set if display hardware supports overlays but can not clip them. + */ +#define DDCAPS_OVERLAYCANTCLIP 0x00001000l + +/* + * Indicates that overlay hardware is capable of color space conversions during + * the overlay operation. + */ +#define DDCAPS_OVERLAYFOURCC 0x00002000l + +/* + * Indicates that stretching can be done by the overlay hardware. + */ +#define DDCAPS_OVERLAYSTRETCH 0x00004000l + +/* + * Indicates that unique DirectDrawPalettes can be created for DirectDrawSurfaces + * other than the primary surface. + */ +#define DDCAPS_PALETTE 0x00008000l + +/* + * Indicates that palette changes can be syncd with the veritcal refresh. + */ +#define DDCAPS_PALETTEVSYNC 0x00010000l + +/* + * Display hardware can return the current scan line. + */ +#define DDCAPS_READSCANLINE 0x00020000l + +/* + * Display hardware has stereo vision capabilities. DDSCAPS_PRIMARYSURFACELEFT + * can be created. + */ +#define DDCAPS_STEREOVIEW 0x00040000l + +/* + * Display hardware is capable of generating a vertical blank interrupt. + */ +#define DDCAPS_VBI 0x00080000l + +/* + * Supports the use of z buffers with blt operations. + */ +#define DDCAPS_ZBLTS 0x00100000l + +/* + * Supports Z Ordering of overlays. + */ +#define DDCAPS_ZOVERLAYS 0x00200000l + +/* + * Supports color key + */ +#define DDCAPS_COLORKEY 0x00400000l + +/* + * Supports alpha surfaces + */ +#define DDCAPS_ALPHA 0x00800000l + +/* + * colorkey is hardware assisted(DDCAPS_COLORKEY will also be set) + */ +#define DDCAPS_COLORKEYHWASSIST 0x01000000l + +/* + * no hardware support at all + */ +#define DDCAPS_NOHARDWARE 0x02000000l + +/* + * Display hardware is capable of color fill with bltter + */ +#define DDCAPS_BLTCOLORFILL 0x04000000l + +/* + * Display hardware is bank switched, and potentially very slow at + * random access to VRAM. + */ +#define DDCAPS_BANKSWITCHED 0x08000000l + +/* + * Display hardware is capable of depth filling Z-buffers with bltter + */ +#define DDCAPS_BLTDEPTHFILL 0x10000000l + +/* + * Display hardware is capable of clipping while bltting. + */ +#define DDCAPS_CANCLIP 0x20000000l + +/* + * Display hardware is capable of clipping while stretch bltting. + */ +#define DDCAPS_CANCLIPSTRETCHED 0x40000000l + +/* + * Display hardware is capable of bltting to or from system memory + */ +#define DDCAPS_CANBLTSYSMEM 0x80000000l + + + /**************************************************************************** + * + * MORE DIRECTDRAW DRIVER CAPABILITY FLAGS (dwCaps2) + * + ****************************************************************************/ + +/* + * Display hardware is certified + */ +#define DDCAPS2_CERTIFIED 0x00000001l + +/* + * Driver cannot interleave 2D operations (lock and blt) to surfaces with + * Direct3D rendering operations between calls to BeginScene() and EndScene() + */ +#define DDCAPS2_NO2DDURING3DSCENE 0x00000002l + +/* + * Display hardware contains a video port + */ +#define DDCAPS2_VIDEOPORT 0x00000004l + +/* + * The overlay can be automatically flipped according to the video port + * VSYNCs, providing automatic doubled buffered display of video port + * data using an overlay + */ +#define DDCAPS2_AUTOFLIPOVERLAY 0x00000008l + +/* + * Overlay can display each field of interlaced data individually while + * it is interleaved in memory without causing jittery artifacts. + */ +#define DDCAPS2_CANBOBINTERLEAVED 0x00000010l + +/* + * Overlay can display each field of interlaced data individually while + * it is not interleaved in memory without causing jittery artifacts. + */ +#define DDCAPS2_CANBOBNONINTERLEAVED 0x00000020l + +/* + * The overlay surface contains color controls (brightness, sharpness, etc.) + */ +#define DDCAPS2_COLORCONTROLOVERLAY 0x00000040l + +/* + * The primary surface contains color controls (gamma, etc.) + */ +#define DDCAPS2_COLORCONTROLPRIMARY 0x00000080l + +/* + * RGBZ -> RGB supported for 16:16 RGB:Z + */ +#define DDCAPS2_CANDROPZ16BIT 0x00000100l + +/* + * Driver supports non-local video memory. + */ +#define DDCAPS2_NONLOCALVIDMEM 0x00000200l + +/* + * Dirver supports non-local video memory but has different capabilities for + * non-local video memory surfaces. If this bit is set then so must + * DDCAPS2_NONLOCALVIDMEM. + */ +#define DDCAPS2_NONLOCALVIDMEMCAPS 0x00000400l + +/* + * Driver neither requires nor prefers surfaces to be pagelocked when performing + * blts involving system memory surfaces + */ +#define DDCAPS2_NOPAGELOCKREQUIRED 0x00000800l + +/* + * Driver can create surfaces which are wider than the primary surface + */ +#define DDCAPS2_WIDESURFACES 0x00001000l + +/* + * Driver supports bob using software without using a video port + */ +#define DDCAPS2_CANFLIPODDEVEN 0x00002000l + +/**************************************************************************** + * + * DIRECTDRAW FX ALPHA CAPABILITY FLAGS + * + ****************************************************************************/ + +/* + * Supports alpha blending around the edge of a source color keyed surface. + * For Blt. + */ +#define DDFXALPHACAPS_BLTALPHAEDGEBLEND 0x00000001l + +/* + * Supports alpha information in the pixel format. The bit depth of alpha + * information in the pixel format can be 1,2,4, or 8. The alpha value becomes + * more opaque as the alpha value increases. (0 is transparent.) + * For Blt. + */ +#define DDFXALPHACAPS_BLTALPHAPIXELS 0x00000002l + +/* + * Supports alpha information in the pixel format. The bit depth of alpha + * information in the pixel format can be 1,2,4, or 8. The alpha value + * becomes more transparent as the alpha value increases. (0 is opaque.) + * This flag can only be set if DDCAPS_ALPHA is set. + * For Blt. + */ +#define DDFXALPHACAPS_BLTALPHAPIXELSNEG 0x00000004l + +/* + * Supports alpha only surfaces. The bit depth of an alpha only surface can be + * 1,2,4, or 8. The alpha value becomes more opaque as the alpha value increases. + * (0 is transparent.) + * For Blt. + */ +#define DDFXALPHACAPS_BLTALPHASURFACES 0x00000008l + +/* + * The depth of the alpha channel data can range can be 1,2,4, or 8. + * The NEG suffix indicates that this alpha channel becomes more transparent + * as the alpha value increases. (0 is opaque.) This flag can only be set if + * DDCAPS_ALPHA is set. + * For Blt. + */ +#define DDFXALPHACAPS_BLTALPHASURFACESNEG 0x00000010l + +/* + * Supports alpha blending around the edge of a source color keyed surface. + * For Overlays. + */ +#define DDFXALPHACAPS_OVERLAYALPHAEDGEBLEND 0x00000020l + +/* + * Supports alpha information in the pixel format. The bit depth of alpha + * information in the pixel format can be 1,2,4, or 8. The alpha value becomes + * more opaque as the alpha value increases. (0 is transparent.) + * For Overlays. + */ +#define DDFXALPHACAPS_OVERLAYALPHAPIXELS 0x00000040l + +/* + * Supports alpha information in the pixel format. The bit depth of alpha + * information in the pixel format can be 1,2,4, or 8. The alpha value + * becomes more transparent as the alpha value increases. (0 is opaque.) + * This flag can only be set if DDCAPS_ALPHA is set. + * For Overlays. + */ +#define DDFXALPHACAPS_OVERLAYALPHAPIXELSNEG 0x00000080l + +/* + * Supports alpha only surfaces. The bit depth of an alpha only surface can be + * 1,2,4, or 8. The alpha value becomes more opaque as the alpha value increases. + * (0 is transparent.) + * For Overlays. + */ +#define DDFXALPHACAPS_OVERLAYALPHASURFACES 0x00000100l + +/* + * The depth of the alpha channel data can range can be 1,2,4, or 8. + * The NEG suffix indicates that this alpha channel becomes more transparent + * as the alpha value increases. (0 is opaque.) This flag can only be set if + * DDCAPS_ALPHA is set. + * For Overlays. + */ +#define DDFXALPHACAPS_OVERLAYALPHASURFACESNEG 0x00000200l + +/**************************************************************************** + * + * DIRECTDRAW FX CAPABILITY FLAGS + * + ****************************************************************************/ + +/* + * Uses arithmetic operations to stretch and shrink surfaces during blt + * rather than pixel doubling techniques. Along the Y axis. + */ +#define DDFXCAPS_BLTARITHSTRETCHY 0x00000020l + +/* + * Uses arithmetic operations to stretch during blt + * rather than pixel doubling techniques. Along the Y axis. Only + * works for x1, x2, etc. + */ +#define DDFXCAPS_BLTARITHSTRETCHYN 0x00000010l + +/* + * Supports mirroring left to right in blt. + */ +#define DDFXCAPS_BLTMIRRORLEFTRIGHT 0x00000040l + +/* + * Supports mirroring top to bottom in blt. + */ +#define DDFXCAPS_BLTMIRRORUPDOWN 0x00000080l + +/* + * Supports arbitrary rotation for blts. + */ +#define DDFXCAPS_BLTROTATION 0x00000100l + +/* + * Supports 90 degree rotations for blts. + */ +#define DDFXCAPS_BLTROTATION90 0x00000200l + +/* + * DirectDraw supports arbitrary shrinking of a surface along the + * x axis (horizontal direction) for blts. + */ +#define DDFXCAPS_BLTSHRINKX 0x00000400l + +/* + * DirectDraw supports integer shrinking (1x,2x,) of a surface + * along the x axis (horizontal direction) for blts. + */ +#define DDFXCAPS_BLTSHRINKXN 0x00000800l + +/* + * DirectDraw supports arbitrary shrinking of a surface along the + * y axis (horizontal direction) for blts. + */ +#define DDFXCAPS_BLTSHRINKY 0x00001000l + +/* + * DirectDraw supports integer shrinking (1x,2x,) of a surface + * along the y axis (vertical direction) for blts. + */ +#define DDFXCAPS_BLTSHRINKYN 0x00002000l + +/* + * DirectDraw supports arbitrary stretching of a surface along the + * x axis (horizontal direction) for blts. + */ +#define DDFXCAPS_BLTSTRETCHX 0x00004000l + +/* + * DirectDraw supports integer stretching (1x,2x,) of a surface + * along the x axis (horizontal direction) for blts. + */ +#define DDFXCAPS_BLTSTRETCHXN 0x00008000l + +/* + * DirectDraw supports arbitrary stretching of a surface along the + * y axis (horizontal direction) for blts. + */ +#define DDFXCAPS_BLTSTRETCHY 0x00010000l + +/* + * DirectDraw supports integer stretching (1x,2x,) of a surface + * along the y axis (vertical direction) for blts. + */ +#define DDFXCAPS_BLTSTRETCHYN 0x00020000l + +/* + * Uses arithmetic operations to stretch and shrink surfaces during + * overlay rather than pixel doubling techniques. Along the Y axis + * for overlays. + */ +#define DDFXCAPS_OVERLAYARITHSTRETCHY 0x00040000l + +/* + * Uses arithmetic operations to stretch surfaces during + * overlay rather than pixel doubling techniques. Along the Y axis + * for overlays. Only works for x1, x2, etc. + */ +#define DDFXCAPS_OVERLAYARITHSTRETCHYN 0x00000008l + +/* + * DirectDraw supports arbitrary shrinking of a surface along the + * x axis (horizontal direction) for overlays. + */ +#define DDFXCAPS_OVERLAYSHRINKX 0x00080000l + +/* + * DirectDraw supports integer shrinking (1x,2x,) of a surface + * along the x axis (horizontal direction) for overlays. + */ +#define DDFXCAPS_OVERLAYSHRINKXN 0x00100000l + +/* + * DirectDraw supports arbitrary shrinking of a surface along the + * y axis (horizontal direction) for overlays. + */ +#define DDFXCAPS_OVERLAYSHRINKY 0x00200000l + +/* + * DirectDraw supports integer shrinking (1x,2x,) of a surface + * along the y axis (vertical direction) for overlays. + */ +#define DDFXCAPS_OVERLAYSHRINKYN 0x00400000l + +/* + * DirectDraw supports arbitrary stretching of a surface along the + * x axis (horizontal direction) for overlays. + */ +#define DDFXCAPS_OVERLAYSTRETCHX 0x00800000l + +/* + * DirectDraw supports integer stretching (1x,2x,) of a surface + * along the x axis (horizontal direction) for overlays. + */ +#define DDFXCAPS_OVERLAYSTRETCHXN 0x01000000l + +/* + * DirectDraw supports arbitrary stretching of a surface along the + * y axis (horizontal direction) for overlays. + */ +#define DDFXCAPS_OVERLAYSTRETCHY 0x02000000l + +/* + * DirectDraw supports integer stretching (1x,2x,) of a surface + * along the y axis (vertical direction) for overlays. + */ +#define DDFXCAPS_OVERLAYSTRETCHYN 0x04000000l + +/* + * DirectDraw supports mirroring of overlays across the vertical axis + */ +#define DDFXCAPS_OVERLAYMIRRORLEFTRIGHT 0x08000000l + +/* + * DirectDraw supports mirroring of overlays across the horizontal axis + */ +#define DDFXCAPS_OVERLAYMIRRORUPDOWN 0x10000000l + +/**************************************************************************** + * + * DIRECTDRAW STEREO VIEW CAPABILITIES + * + ****************************************************************************/ + +/* + * The stereo view is accomplished via enigma encoding. + */ +#define DDSVCAPS_ENIGMA 0x00000001l + +/* + * The stereo view is accomplished via high frequency flickering. + */ +#define DDSVCAPS_FLICKER 0x00000002l + +/* + * The stereo view is accomplished via red and blue filters applied + * to the left and right eyes. All images must adapt their colorspaces + * for this process. + */ +#define DDSVCAPS_REDBLUE 0x00000004l + +/* + * The stereo view is accomplished with split screen technology. + */ +#define DDSVCAPS_SPLIT 0x00000008l + +/**************************************************************************** + * + * DIRECTDRAWPALETTE CAPABILITIES + * + ****************************************************************************/ + +/* + * Index is 4 bits. There are sixteen color entries in the palette table. + */ +#define DDPCAPS_4BIT 0x00000001l + +/* + * Index is onto a 8 bit color index. This field is only valid with the + * DDPCAPS_1BIT, DDPCAPS_2BIT or DDPCAPS_4BIT capability and the target + * surface is in 8bpp. Each color entry is one byte long and is an index + * into destination surface's 8bpp palette. + */ +#define DDPCAPS_8BITENTRIES 0x00000002l + +/* + * Index is 8 bits. There are 256 color entries in the palette table. + */ +#define DDPCAPS_8BIT 0x00000004l + +/* + * Indicates that this DIRECTDRAWPALETTE should use the palette color array + * passed into the lpDDColorArray parameter to initialize the DIRECTDRAWPALETTE + * object. + */ +#define DDPCAPS_INITIALIZE 0x00000008l + +/* + * This palette is the one attached to the primary surface. Changing this + * table has immediate effect on the display unless DDPSETPAL_VSYNC is specified + * and supported. + */ +#define DDPCAPS_PRIMARYSURFACE 0x00000010l + +/* + * This palette is the one attached to the primary surface left. Changing + * this table has immediate effect on the display for the left eye unless + * DDPSETPAL_VSYNC is specified and supported. + */ +#define DDPCAPS_PRIMARYSURFACELEFT 0x00000020l + +/* + * This palette can have all 256 entries defined + */ +#define DDPCAPS_ALLOW256 0x00000040l + +/* + * This palette can have modifications to it synced with the monitors + * refresh rate. + */ +#define DDPCAPS_VSYNC 0x00000080l + +/* + * Index is 1 bit. There are two color entries in the palette table. + */ +#define DDPCAPS_1BIT 0x00000100l + +/* + * Index is 2 bit. There are four color entries in the palette table. + */ +#define DDPCAPS_2BIT 0x00000200l + + +/**************************************************************************** + * + * DIRECTDRAWPALETTE SETENTRY CONSTANTS + * + ****************************************************************************/ + + +/**************************************************************************** + * + * DIRECTDRAWPALETTE GETENTRY CONSTANTS + * + ****************************************************************************/ + +/* 0 is the only legal value */ + +/**************************************************************************** + * + * DIRECTDRAWSURFACE SETPALETTE CONSTANTS + * + ****************************************************************************/ + + +/**************************************************************************** + * + * DIRECTDRAW BITDEPTH CONSTANTS + * + * NOTE: These are only used to indicate supported bit depths. These + * are flags only, they are not to be used as an actual bit depth. The + * absolute numbers 1, 2, 4, 8, 16, 24 and 32 are used to indicate actual + * bit depths in a surface or for changing the display mode. + * + ****************************************************************************/ + +/* + * 1 bit per pixel. + */ +#define DDBD_1 0x00004000l + +/* + * 2 bits per pixel. + */ +#define DDBD_2 0x00002000l + +/* + * 4 bits per pixel. + */ +#define DDBD_4 0x00001000l + +/* + * 8 bits per pixel. + */ +#define DDBD_8 0x00000800l + +/* + * 16 bits per pixel. + */ +#define DDBD_16 0x00000400l + +/* + * 24 bits per pixel. + */ +#define DDBD_24 0X00000200l + +/* + * 32 bits per pixel. + */ +#define DDBD_32 0x00000100l + +/**************************************************************************** + * + * DIRECTDRAWSURFACE SET/GET COLOR KEY FLAGS + * + ****************************************************************************/ + +/* + * Set if the structure contains a color space. Not set if the structure + * contains a single color key. + */ +#define DDCKEY_COLORSPACE 0x00000001l + +/* + * Set if the structure specifies a color key or color space which is to be + * used as a destination color key for blt operations. + */ +#define DDCKEY_DESTBLT 0x00000002l + +/* + * Set if the structure specifies a color key or color space which is to be + * used as a destination color key for overlay operations. + */ +#define DDCKEY_DESTOVERLAY 0x00000004l + +/* + * Set if the structure specifies a color key or color space which is to be + * used as a source color key for blt operations. + */ +#define DDCKEY_SRCBLT 0x00000008l + +/* + * Set if the structure specifies a color key or color space which is to be + * used as a source color key for overlay operations. + */ +#define DDCKEY_SRCOVERLAY 0x00000010l + + +/**************************************************************************** + * + * DIRECTDRAW COLOR KEY CAPABILITY FLAGS + * + ****************************************************************************/ + +/* + * Supports transparent blting using a color key to identify the replaceable + * bits of the destination surface for RGB colors. + */ +#define DDCKEYCAPS_DESTBLT 0x00000001l + +/* + * Supports transparent blting using a color space to identify the replaceable + * bits of the destination surface for RGB colors. + */ +#define DDCKEYCAPS_DESTBLTCLRSPACE 0x00000002l + +/* + * Supports transparent blting using a color space to identify the replaceable + * bits of the destination surface for YUV colors. + */ +#define DDCKEYCAPS_DESTBLTCLRSPACEYUV 0x00000004l + +/* + * Supports transparent blting using a color key to identify the replaceable + * bits of the destination surface for YUV colors. + */ +#define DDCKEYCAPS_DESTBLTYUV 0x00000008l + +/* + * Supports overlaying using colorkeying of the replaceable bits of the surface + * being overlayed for RGB colors. + */ +#define DDCKEYCAPS_DESTOVERLAY 0x00000010l + +/* + * Supports a color space as the color key for the destination for RGB colors. + */ +#define DDCKEYCAPS_DESTOVERLAYCLRSPACE 0x00000020l + +/* + * Supports a color space as the color key for the destination for YUV colors. + */ +#define DDCKEYCAPS_DESTOVERLAYCLRSPACEYUV 0x00000040l + +/* + * Supports only one active destination color key value for visible overlay + * surfaces. + */ +#define DDCKEYCAPS_DESTOVERLAYONEACTIVE 0x00000080l + +/* + * Supports overlaying using colorkeying of the replaceable bits of the + * surface being overlayed for YUV colors. + */ +#define DDCKEYCAPS_DESTOVERLAYYUV 0x00000100l + +/* + * Supports transparent blting using the color key for the source with + * this surface for RGB colors. + */ +#define DDCKEYCAPS_SRCBLT 0x00000200l + +/* + * Supports transparent blting using a color space for the source with + * this surface for RGB colors. + */ +#define DDCKEYCAPS_SRCBLTCLRSPACE 0x00000400l + +/* + * Supports transparent blting using a color space for the source with + * this surface for YUV colors. + */ +#define DDCKEYCAPS_SRCBLTCLRSPACEYUV 0x00000800l + +/* + * Supports transparent blting using the color key for the source with + * this surface for YUV colors. + */ +#define DDCKEYCAPS_SRCBLTYUV 0x00001000l + +/* + * Supports overlays using the color key for the source with this + * overlay surface for RGB colors. + */ +#define DDCKEYCAPS_SRCOVERLAY 0x00002000l + +/* + * Supports overlays using a color space as the source color key for + * the overlay surface for RGB colors. + */ +#define DDCKEYCAPS_SRCOVERLAYCLRSPACE 0x00004000l + +/* + * Supports overlays using a color space as the source color key for + * the overlay surface for YUV colors. + */ +#define DDCKEYCAPS_SRCOVERLAYCLRSPACEYUV 0x00008000l + +/* + * Supports only one active source color key value for visible + * overlay surfaces. + */ +#define DDCKEYCAPS_SRCOVERLAYONEACTIVE 0x00010000l + +/* + * Supports overlays using the color key for the source with this + * overlay surface for YUV colors. + */ +#define DDCKEYCAPS_SRCOVERLAYYUV 0x00020000l + +/* + * there are no bandwidth trade-offs for using colorkey with an overlay + */ +#define DDCKEYCAPS_NOCOSTOVERLAY 0x00040000l + + +/**************************************************************************** + * + * DIRECTDRAW PIXELFORMAT FLAGS + * + ****************************************************************************/ + +/* + * The surface has alpha channel information in the pixel format. + */ +#define DDPF_ALPHAPIXELS 0x00000001l + +/* + * The pixel format contains alpha only information + */ +#define DDPF_ALPHA 0x00000002l + +/* + * The FourCC code is valid. + */ +#define DDPF_FOURCC 0x00000004l + +/* + * The surface is 4-bit color indexed. + */ +#define DDPF_PALETTEINDEXED4 0x00000008l + +/* + * The surface is indexed into a palette which stores indices + * into the destination surface's 8-bit palette. + */ +#define DDPF_PALETTEINDEXEDTO8 0x00000010l + +/* + * The surface is 8-bit color indexed. + */ +#define DDPF_PALETTEINDEXED8 0x00000020l + +/* + * The RGB data in the pixel format structure is valid. + */ +#define DDPF_RGB 0x00000040l + +/* + * The surface will accept pixel data in the format specified + * and compress it during the write. + */ +#define DDPF_COMPRESSED 0x00000080l + +/* + * The surface will accept RGB data and translate it during + * the write to YUV data. The format of the data to be written + * will be contained in the pixel format structure. The DDPF_RGB + * flag will be set. + */ +#define DDPF_RGBTOYUV 0x00000100l + +/* + * pixel format is YUV - YUV data in pixel format struct is valid + */ +#define DDPF_YUV 0x00000200l + +/* + * pixel format is a z buffer only surface + */ +#define DDPF_ZBUFFER 0x00000400l + +/* + * The surface is 1-bit color indexed. + */ +#define DDPF_PALETTEINDEXED1 0x00000800l + +/* + * The surface is 2-bit color indexed. + */ +#define DDPF_PALETTEINDEXED2 0x00001000l + +/* + * The surface contains Z information in the pixels + */ +#define DDPF_ZPIXELS 0x00002000l + +/*=========================================================================== + * + * + * DIRECTDRAW CALLBACK FLAGS + * + * + *==========================================================================*/ + +/**************************************************************************** + * + * DIRECTDRAW ENUMSURFACES FLAGS + * + ****************************************************************************/ + +/* + * Enumerate all of the surfaces that meet the search criterion. + */ +#define DDENUMSURFACES_ALL 0x00000001l + +/* + * A search hit is a surface that matches the surface description. + */ +#define DDENUMSURFACES_MATCH 0x00000002l + +/* + * A search hit is a surface that does not match the surface description. + */ +#define DDENUMSURFACES_NOMATCH 0x00000004l + +/* + * Enumerate the first surface that can be created which meets the search criterion. + */ +#define DDENUMSURFACES_CANBECREATED 0x00000008l + +/* + * Enumerate the surfaces that already exist that meet the search criterion. + */ +#define DDENUMSURFACES_DOESEXIST 0x00000010l + + +/**************************************************************************** + * + * DIRECTDRAW SETDISPLAYMODE FLAGS + * + ****************************************************************************/ + +/* + * The desired mode is a standard VGA mode + */ +#define DDSDM_STANDARDVGAMODE 0x00000001l + + + +/**************************************************************************** + * + * DIRECTDRAW ENUMDISPLAYMODES FLAGS + * + ****************************************************************************/ + +/* + * Enumerate Modes with different refresh rates. EnumDisplayModes guarantees + * that a particular mode will be enumerated only once. This flag specifies whether + * the refresh rate is taken into account when determining if a mode is unique. + */ +#define DDEDM_REFRESHRATES 0x00000001l + +/* + * Enumerate VGA modes. Specify this flag if you wish to enumerate supported VGA + * modes such as mode 0x13 in addition to the usual ModeX modes (which are always + * enumerated if the application has previously called SetCooperativeLevel with the + * DDSCL_ALLOWMODEX flag set). + */ +#define DDEDM_STANDARDVGAMODES 0x00000002L + + +/**************************************************************************** + * + * DIRECTDRAW SETCOOPERATIVELEVEL FLAGS + * + ****************************************************************************/ + +/* + * Exclusive mode owner will be responsible for the entire primary surface. + * GDI can be ignored. used with DD + */ +#define DDSCL_FULLSCREEN 0x00000001l + +/* + * allow CTRL_ALT_DEL to work while in fullscreen exclusive mode + */ +#define DDSCL_ALLOWREBOOT 0x00000002l + +/* + * prevents DDRAW from modifying the application window. + * prevents DDRAW from minimize/restore the application window on activation. + */ +#define DDSCL_NOWINDOWCHANGES 0x00000004l + +/* + * app wants to work as a regular Windows application + */ +#define DDSCL_NORMAL 0x00000008l + +/* + * app wants exclusive access + */ +#define DDSCL_EXCLUSIVE 0x00000010l + + +/* + * app can deal with non-windows display modes + */ +#define DDSCL_ALLOWMODEX 0x00000040l + + +/**************************************************************************** + * + * DIRECTDRAW BLT FLAGS + * + ****************************************************************************/ + +/* + * Use the alpha information in the pixel format or the alpha channel surface + * attached to the destination surface as the alpha channel for this blt. + */ +#define DDBLT_ALPHADEST 0x00000001l + +/* + * Use the dwConstAlphaDest field in the DDBLTFX structure as the alpha channel + * for the destination surface for this blt. + */ +#define DDBLT_ALPHADESTCONSTOVERRIDE 0x00000002l + +/* + * The NEG suffix indicates that the destination surface becomes more + * transparent as the alpha value increases. (0 is opaque) + */ +#define DDBLT_ALPHADESTNEG 0x00000004l + +/* + * Use the lpDDSAlphaDest field in the DDBLTFX structure as the alpha + * channel for the destination for this blt. + */ +#define DDBLT_ALPHADESTSURFACEOVERRIDE 0x00000008l + +/* + * Use the dwAlphaEdgeBlend field in the DDBLTFX structure as the alpha channel + * for the edges of the image that border the color key colors. + */ +#define DDBLT_ALPHAEDGEBLEND 0x00000010l + +/* + * Use the alpha information in the pixel format or the alpha channel surface + * attached to the source surface as the alpha channel for this blt. + */ +#define DDBLT_ALPHASRC 0x00000020l + +/* + * Use the dwConstAlphaSrc field in the DDBLTFX structure as the alpha channel + * for the source for this blt. + */ +#define DDBLT_ALPHASRCCONSTOVERRIDE 0x00000040l + +/* + * The NEG suffix indicates that the source surface becomes more transparent + * as the alpha value increases. (0 is opaque) + */ +#define DDBLT_ALPHASRCNEG 0x00000080l + +/* + * Use the lpDDSAlphaSrc field in the DDBLTFX structure as the alpha channel + * for the source for this blt. + */ +#define DDBLT_ALPHASRCSURFACEOVERRIDE 0x00000100l + +/* + * Do this blt asynchronously through the FIFO in the order received. If + * there is no room in the hardware FIFO fail the call. + */ +#define DDBLT_ASYNC 0x00000200l + +/* + * Uses the dwFillColor field in the DDBLTFX structure as the RGB color + * to fill the destination rectangle on the destination surface with. + */ +#define DDBLT_COLORFILL 0x00000400l + +/* + * Uses the dwDDFX field in the DDBLTFX structure to specify the effects + * to use for the blt. + */ +#define DDBLT_DDFX 0x00000800l + +/* + * Uses the dwDDROPS field in the DDBLTFX structure to specify the ROPS + * that are not part of the Win32 API. + */ +#define DDBLT_DDROPS 0x00001000l + +/* + * Use the color key associated with the destination surface. + */ +#define DDBLT_KEYDEST 0x00002000l + +/* + * Use the dckDestColorkey field in the DDBLTFX structure as the color key + * for the destination surface. + */ +#define DDBLT_KEYDESTOVERRIDE 0x00004000l + +/* + * Use the color key associated with the source surface. + */ +#define DDBLT_KEYSRC 0x00008000l + +/* + * Use the dckSrcColorkey field in the DDBLTFX structure as the color key + * for the source surface. + */ +#define DDBLT_KEYSRCOVERRIDE 0x00010000l + +/* + * Use the dwROP field in the DDBLTFX structure for the raster operation + * for this blt. These ROPs are the same as the ones defined in the Win32 API. + */ +#define DDBLT_ROP 0x00020000l + +/* + * Use the dwRotationAngle field in the DDBLTFX structure as the angle + * (specified in 1/100th of a degree) to rotate the surface. + */ +#define DDBLT_ROTATIONANGLE 0x00040000l + +/* + * Z-buffered blt using the z-buffers attached to the source and destination + * surfaces and the dwZBufferOpCode field in the DDBLTFX structure as the + * z-buffer opcode. + */ +#define DDBLT_ZBUFFER 0x00080000l + +/* + * Z-buffered blt using the dwConstDest Zfield and the dwZBufferOpCode field + * in the DDBLTFX structure as the z-buffer and z-buffer opcode respectively + * for the destination. + */ +#define DDBLT_ZBUFFERDESTCONSTOVERRIDE 0x00100000l + +/* + * Z-buffered blt using the lpDDSDestZBuffer field and the dwZBufferOpCode + * field in the DDBLTFX structure as the z-buffer and z-buffer opcode + * respectively for the destination. + */ +#define DDBLT_ZBUFFERDESTOVERRIDE 0x00200000l + +/* + * Z-buffered blt using the dwConstSrcZ field and the dwZBufferOpCode field + * in the DDBLTFX structure as the z-buffer and z-buffer opcode respectively + * for the source. + */ +#define DDBLT_ZBUFFERSRCCONSTOVERRIDE 0x00400000l + +/* + * Z-buffered blt using the lpDDSSrcZBuffer field and the dwZBufferOpCode + * field in the DDBLTFX structure as the z-buffer and z-buffer opcode + * respectively for the source. + */ +#define DDBLT_ZBUFFERSRCOVERRIDE 0x00800000l + +/* + * wait until the device is ready to handle the blt + * this will cause blt to not return DDERR_WASSTILLDRAWING + */ +#define DDBLT_WAIT 0x01000000l + +/* + * Uses the dwFillDepth field in the DDBLTFX structure as the depth value + * to fill the destination rectangle on the destination Z-buffer surface + * with. + */ +#define DDBLT_DEPTHFILL 0x02000000l + + + +/**************************************************************************** + * + * BLTFAST FLAGS + * + ****************************************************************************/ + +#define DDBLTFAST_NOCOLORKEY 0x00000000 +#define DDBLTFAST_SRCCOLORKEY 0x00000001 +#define DDBLTFAST_DESTCOLORKEY 0x00000002 +#define DDBLTFAST_WAIT 0x00000010 + +/**************************************************************************** + * + * FLIP FLAGS + * + ****************************************************************************/ + +#define DDFLIP_WAIT 0x00000001l + +/* + * Indicates that the target surface contains the even field of video data. + * This flag is only valid with an overlay surface. + */ +#define DDFLIP_EVEN 0x00000002l + +/* + * Indicates that the target surface contains the odd field of video data. + * This flag is only valid with an overlay surface. + */ +#define DDFLIP_ODD 0x00000004l + + + +/**************************************************************************** + * + * DIRECTDRAW SURFACE OVERLAY FLAGS + * + ****************************************************************************/ + +/* + * Use the alpha information in the pixel format or the alpha channel surface + * attached to the destination surface as the alpha channel for the + * destination overlay. + */ +#define DDOVER_ALPHADEST 0x00000001l + +/* + * Use the dwConstAlphaDest field in the DDOVERLAYFX structure as the + * destination alpha channel for this overlay. + */ +#define DDOVER_ALPHADESTCONSTOVERRIDE 0x00000002l + +/* + * The NEG suffix indicates that the destination surface becomes more + * transparent as the alpha value increases. + */ +#define DDOVER_ALPHADESTNEG 0x00000004l + +/* + * Use the lpDDSAlphaDest field in the DDOVERLAYFX structure as the alpha + * channel destination for this overlay. + */ +#define DDOVER_ALPHADESTSURFACEOVERRIDE 0x00000008l + +/* + * Use the dwAlphaEdgeBlend field in the DDOVERLAYFX structure as the alpha + * channel for the edges of the image that border the color key colors. + */ +#define DDOVER_ALPHAEDGEBLEND 0x00000010l + +/* + * Use the alpha information in the pixel format or the alpha channel surface + * attached to the source surface as the source alpha channel for this overlay. + */ +#define DDOVER_ALPHASRC 0x00000020l + +/* + * Use the dwConstAlphaSrc field in the DDOVERLAYFX structure as the source + * alpha channel for this overlay. + */ +#define DDOVER_ALPHASRCCONSTOVERRIDE 0x00000040l + +/* + * The NEG suffix indicates that the source surface becomes more transparent + * as the alpha value increases. + */ +#define DDOVER_ALPHASRCNEG 0x00000080l + +/* + * Use the lpDDSAlphaSrc field in the DDOVERLAYFX structure as the alpha channel + * source for this overlay. + */ +#define DDOVER_ALPHASRCSURFACEOVERRIDE 0x00000100l + +/* + * Turn this overlay off. + */ +#define DDOVER_HIDE 0x00000200l + +/* + * Use the color key associated with the destination surface. + */ +#define DDOVER_KEYDEST 0x00000400l + +/* + * Use the dckDestColorkey field in the DDOVERLAYFX structure as the color key + * for the destination surface + */ +#define DDOVER_KEYDESTOVERRIDE 0x00000800l + +/* + * Use the color key associated with the source surface. + */ +#define DDOVER_KEYSRC 0x00001000l + +/* + * Use the dckSrcColorkey field in the DDOVERLAYFX structure as the color key + * for the source surface. + */ +#define DDOVER_KEYSRCOVERRIDE 0x00002000l + +/* + * Turn this overlay on. + */ +#define DDOVER_SHOW 0x00004000l + +/* + * Add a dirty rect to an emulated overlayed surface. + */ +#define DDOVER_ADDDIRTYRECT 0x00008000l + +/* + * Redraw all dirty rects on an emulated overlayed surface. + */ +#define DDOVER_REFRESHDIRTYRECTS 0x00010000l + +/* + * Redraw the entire surface on an emulated overlayed surface. + */ +#define DDOVER_REFRESHALL 0x00020000l + + +/* + * Use the overlay FX flags to define special overlay FX + */ +#define DDOVER_DDFX 0x00080000l + +/* + * Autoflip the overlay when ever the video port autoflips + */ +#define DDOVER_AUTOFLIP 0x00100000l + +/* + * Display each field of video port data individually without + * causing any jittery artifacts + */ +#define DDOVER_BOB 0x00200000l + +/* + * Indicates that bob/weave decisions should not be overridden by other + * interfaces. + */ +#define DDOVER_OVERRIDEBOBWEAVE 0x00400000l + +/* + * Indicates that the surface memory is composed of interleaved fields. + */ +#define DDOVER_INTERLEAVED 0x00800000l + + +/**************************************************************************** + * + * DIRECTDRAWSURFACE LOCK FLAGS + * + ****************************************************************************/ + +/* + * The default. Set to indicate that Lock should return a valid memory pointer + * to the top of the specified rectangle. If no rectangle is specified then a + * pointer to the top of the surface is returned. + */ +#define DDLOCK_SURFACEMEMORYPTR 0x00000000L // default + +/* + * Set to indicate that Lock should wait until it can obtain a valid memory + * pointer before returning. If this bit is set, Lock will never return + * DDERR_WASSTILLDRAWING. + */ +#define DDLOCK_WAIT 0x00000001L + +/* + * Set if an event handle is being passed to Lock. Lock will trigger the event + * when it can return the surface memory pointer requested. + */ +#define DDLOCK_EVENT 0x00000002L + +/* + * Indicates that the surface being locked will only be read from. + */ +#define DDLOCK_READONLY 0x00000010L + +/* + * Indicates that the surface being locked will only be written to + */ +#define DDLOCK_WRITEONLY 0x00000020L + + +/* + * Indicates that a system wide lock should not be taken when this surface + * is locked. This has several advantages (cursor responsiveness, ability + * to call more Windows functions, easier debugging) when locking video + * memory surfaces. However, an application specifying this flag must + * comply with a number of conditions documented in the help file. + * Furthermore, this flag cannot be specified when locking the primary. + */ +#define DDLOCK_NOSYSLOCK 0x00000800L + + +/**************************************************************************** + * + * DIRECTDRAWSURFACE PAGELOCK FLAGS + * + ****************************************************************************/ + +/* + * No flags defined at present + */ + + +/**************************************************************************** + * + * DIRECTDRAWSURFACE PAGEUNLOCK FLAGS + * + ****************************************************************************/ + +/* + * No flags defined at present + */ + + +/**************************************************************************** + * + * DIRECTDRAWSURFACE BLT FX FLAGS + * + ****************************************************************************/ + +/* + * If stretching, use arithmetic stretching along the Y axis for this blt. + */ +#define DDBLTFX_ARITHSTRETCHY 0x00000001l + +/* + * Do this blt mirroring the surface left to right. Spin the + * surface around its y-axis. + */ +#define DDBLTFX_MIRRORLEFTRIGHT 0x00000002l + +/* + * Do this blt mirroring the surface up and down. Spin the surface + * around its x-axis. + */ +#define DDBLTFX_MIRRORUPDOWN 0x00000004l + +/* + * Schedule this blt to avoid tearing. + */ +#define DDBLTFX_NOTEARING 0x00000008l + +/* + * Do this blt rotating the surface one hundred and eighty degrees. + */ +#define DDBLTFX_ROTATE180 0x00000010l + +/* + * Do this blt rotating the surface two hundred and seventy degrees. + */ +#define DDBLTFX_ROTATE270 0x00000020l + +/* + * Do this blt rotating the surface ninety degrees. + */ +#define DDBLTFX_ROTATE90 0x00000040l + +/* + * Do this z blt using dwZBufferLow and dwZBufferHigh as range values + * specified to limit the bits copied from the source surface. + */ +#define DDBLTFX_ZBUFFERRANGE 0x00000080l + +/* + * Do this z blt adding the dwZBufferBaseDest to each of the sources z values + * before comparing it with the desting z values. + */ +#define DDBLTFX_ZBUFFERBASEDEST 0x00000100l + +/**************************************************************************** + * + * DIRECTDRAWSURFACE OVERLAY FX FLAGS + * + ****************************************************************************/ + +/* + * If stretching, use arithmetic stretching along the Y axis for this overlay. + */ +#define DDOVERFX_ARITHSTRETCHY 0x00000001l + +/* + * Mirror the overlay across the vertical axis + */ +#define DDOVERFX_MIRRORLEFTRIGHT 0x00000002l + +/* + * Mirror the overlay across the horizontal axis + */ +#define DDOVERFX_MIRRORUPDOWN 0x00000004l + +/**************************************************************************** + * + * DIRECTDRAW WAITFORVERTICALBLANK FLAGS + * + ****************************************************************************/ + +/* + * return when the vertical blank interval begins + */ +#define DDWAITVB_BLOCKBEGIN 0x00000001l + +/* + * set up an event to trigger when the vertical blank begins + */ +#define DDWAITVB_BLOCKBEGINEVENT 0x00000002l + +/* + * return when the vertical blank interval ends and display begins + */ +#define DDWAITVB_BLOCKEND 0x00000004l + +/**************************************************************************** + * + * DIRECTDRAW GETFLIPSTATUS FLAGS + * + ****************************************************************************/ + +/* + * is it OK to flip now? + */ +#define DDGFS_CANFLIP 0x00000001l + +/* + * is the last flip finished? + */ +#define DDGFS_ISFLIPDONE 0x00000002l + +/**************************************************************************** + * + * DIRECTDRAW GETBLTSTATUS FLAGS + * + ****************************************************************************/ + +/* + * is it OK to blt now? + */ +#define DDGBS_CANBLT 0x00000001l + +/* + * is the blt to the surface finished? + */ +#define DDGBS_ISBLTDONE 0x00000002l + + +/**************************************************************************** + * + * DIRECTDRAW ENUMOVERLAYZORDER FLAGS + * + ****************************************************************************/ + +/* + * Enumerate overlays back to front. + */ +#define DDENUMOVERLAYZ_BACKTOFRONT 0x00000000l + +/* + * Enumerate overlays front to back + */ +#define DDENUMOVERLAYZ_FRONTTOBACK 0x00000001l + +/**************************************************************************** + * + * DIRECTDRAW UPDATEOVERLAYZORDER FLAGS + * + ****************************************************************************/ + +/* + * Send overlay to front + */ +#define DDOVERZ_SENDTOFRONT 0x00000000l + +/* + * Send overlay to back + */ +#define DDOVERZ_SENDTOBACK 0x00000001l + +/* + * Move Overlay forward + */ +#define DDOVERZ_MOVEFORWARD 0x00000002l + +/* + * Move Overlay backward + */ +#define DDOVERZ_MOVEBACKWARD 0x00000003l + +/* + * Move Overlay in front of relative surface + */ +#define DDOVERZ_INSERTINFRONTOF 0x00000004l + +/* + * Move Overlay in back of relative surface + */ +#define DDOVERZ_INSERTINBACKOF 0x00000005l + +/*=========================================================================== + * + * + * DIRECTDRAW RETURN CODES + * + * The return values from DirectDraw Commands and Surface that return an HRESULT + * are codes from DirectDraw concerning the results of the action + * requested by DirectDraw. + * + *==========================================================================*/ + +/* + * Status is OK + * + * Issued by: DirectDraw Commands and all callbacks + */ +#define DD_OK 0 + +/**************************************************************************** + * + * DIRECTDRAW ENUMCALLBACK RETURN VALUES + * + * EnumCallback returns are used to control the flow of the DIRECTDRAW and + * DIRECTDRAWSURFACE object enumerations. They can only be returned by + * enumeration callback routines. + * + ****************************************************************************/ + +/* + * stop the enumeration + */ +#define DDENUMRET_CANCEL 0 + +/* + * continue the enumeration + */ +#define DDENUMRET_OK 1 + +/**************************************************************************** + * + * DIRECTDRAW ERRORS + * + * Errors are represented by negative values and cannot be combined. + * + ****************************************************************************/ + +/* + * This object is already initialized + */ +#define DDERR_ALREADYINITIALIZED MAKE_DDHRESULT( 5 ) + +/* + * This surface can not be attached to the requested surface. + */ +#define DDERR_CANNOTATTACHSURFACE MAKE_DDHRESULT( 10 ) + +/* + * This surface can not be detached from the requested surface. + */ +#define DDERR_CANNOTDETACHSURFACE MAKE_DDHRESULT( 20 ) + +/* + * Support is currently not available. + */ +#define DDERR_CURRENTLYNOTAVAIL MAKE_DDHRESULT( 40 ) + +/* + * An exception was encountered while performing the requested operation + */ +#define DDERR_EXCEPTION MAKE_DDHRESULT( 55 ) + +/* + * Generic failure. + */ +#define DDERR_GENERIC E_FAIL + +/* + * Height of rectangle provided is not a multiple of reqd alignment + */ +#define DDERR_HEIGHTALIGN MAKE_DDHRESULT( 90 ) + +/* + * Unable to match primary surface creation request with existing + * primary surface. + */ +#define DDERR_INCOMPATIBLEPRIMARY MAKE_DDHRESULT( 95 ) + +/* + * One or more of the caps bits passed to the callback are incorrect. + */ +#define DDERR_INVALIDCAPS MAKE_DDHRESULT( 100 ) + +/* + * DirectDraw does not support provided Cliplist. + */ +#define DDERR_INVALIDCLIPLIST MAKE_DDHRESULT( 110 ) + +/* + * DirectDraw does not support the requested mode + */ +#define DDERR_INVALIDMODE MAKE_DDHRESULT( 120 ) + +/* + * DirectDraw received a pointer that was an invalid DIRECTDRAW object. + */ +#define DDERR_INVALIDOBJECT MAKE_DDHRESULT( 130 ) + +/* + * One or more of the parameters passed to the callback function are + * incorrect. + */ +#define DDERR_INVALIDPARAMS E_INVALIDARG + +/* + * pixel format was invalid as specified + */ +#define DDERR_INVALIDPIXELFORMAT MAKE_DDHRESULT( 145 ) + +/* + * Rectangle provided was invalid. + */ +#define DDERR_INVALIDRECT MAKE_DDHRESULT( 150 ) + +/* + * Operation could not be carried out because one or more surfaces are locked + */ +#define DDERR_LOCKEDSURFACES MAKE_DDHRESULT( 160 ) + +/* + * There is no 3D present. + */ +#define DDERR_NO3D MAKE_DDHRESULT( 170 ) + +/* + * Operation could not be carried out because there is no alpha accleration + * hardware present or available. + */ +#define DDERR_NOALPHAHW MAKE_DDHRESULT( 180 ) + + +/* + * no clip list available + */ +#define DDERR_NOCLIPLIST MAKE_DDHRESULT( 205 ) + +/* + * Operation could not be carried out because there is no color conversion + * hardware present or available. + */ +#define DDERR_NOCOLORCONVHW MAKE_DDHRESULT( 210 ) + +/* + * Create function called without DirectDraw object method SetCooperativeLevel + * being called. + */ +#define DDERR_NOCOOPERATIVELEVELSET MAKE_DDHRESULT( 212 ) + +/* + * Surface doesn't currently have a color key + */ +#define DDERR_NOCOLORKEY MAKE_DDHRESULT( 215 ) + +/* + * Operation could not be carried out because there is no hardware support + * of the dest color key. + */ +#define DDERR_NOCOLORKEYHW MAKE_DDHRESULT( 220 ) + +/* + * No DirectDraw support possible with current display driver + */ +#define DDERR_NODIRECTDRAWSUPPORT MAKE_DDHRESULT( 222 ) + +/* + * Operation requires the application to have exclusive mode but the + * application does not have exclusive mode. + */ +#define DDERR_NOEXCLUSIVEMODE MAKE_DDHRESULT( 225 ) + +/* + * Flipping visible surfaces is not supported. + */ +#define DDERR_NOFLIPHW MAKE_DDHRESULT( 230 ) + +/* + * There is no GDI present. + */ +#define DDERR_NOGDI MAKE_DDHRESULT( 240 ) + +/* + * Operation could not be carried out because there is no hardware present + * or available. + */ +#define DDERR_NOMIRRORHW MAKE_DDHRESULT( 250 ) + +/* + * Requested item was not found + */ +#define DDERR_NOTFOUND MAKE_DDHRESULT( 255 ) + +/* + * Operation could not be carried out because there is no overlay hardware + * present or available. + */ +#define DDERR_NOOVERLAYHW MAKE_DDHRESULT( 260 ) + +/* + * Operation could not be carried out because there is no appropriate raster + * op hardware present or available. + */ +#define DDERR_NORASTEROPHW MAKE_DDHRESULT( 280 ) + +/* + * Operation could not be carried out because there is no rotation hardware + * present or available. + */ +#define DDERR_NOROTATIONHW MAKE_DDHRESULT( 290 ) + +/* + * Operation could not be carried out because there is no hardware support + * for stretching + */ +#define DDERR_NOSTRETCHHW MAKE_DDHRESULT( 310 ) + +/* + * DirectDrawSurface is not in 4 bit color palette and the requested operation + * requires 4 bit color palette. + */ +#define DDERR_NOT4BITCOLOR MAKE_DDHRESULT( 316 ) + +/* + * DirectDrawSurface is not in 4 bit color index palette and the requested + * operation requires 4 bit color index palette. + */ +#define DDERR_NOT4BITCOLORINDEX MAKE_DDHRESULT( 317 ) + +/* + * DirectDraw Surface is not in 8 bit color mode and the requested operation + * requires 8 bit color. + */ +#define DDERR_NOT8BITCOLOR MAKE_DDHRESULT( 320 ) + +/* + * Operation could not be carried out because there is no texture mapping + * hardware present or available. + */ +#define DDERR_NOTEXTUREHW MAKE_DDHRESULT( 330 ) + +/* + * Operation could not be carried out because there is no hardware support + * for vertical blank synchronized operations. + */ +#define DDERR_NOVSYNCHW MAKE_DDHRESULT( 335 ) + +/* + * Operation could not be carried out because there is no hardware support + * for zbuffer blting. + */ +#define DDERR_NOZBUFFERHW MAKE_DDHRESULT( 340 ) + +/* + * Overlay surfaces could not be z layered based on their BltOrder because + * the hardware does not support z layering of overlays. + */ +#define DDERR_NOZOVERLAYHW MAKE_DDHRESULT( 350 ) + +/* + * The hardware needed for the requested operation has already been + * allocated. + */ +#define DDERR_OUTOFCAPS MAKE_DDHRESULT( 360 ) + +/* + * DirectDraw does not have enough memory to perform the operation. + */ +#define DDERR_OUTOFMEMORY E_OUTOFMEMORY + +/* + * DirectDraw does not have enough memory to perform the operation. + */ +#define DDERR_OUTOFVIDEOMEMORY MAKE_DDHRESULT( 380 ) + +/* + * hardware does not support clipped overlays + */ +#define DDERR_OVERLAYCANTCLIP MAKE_DDHRESULT( 382 ) + +/* + * Can only have ony color key active at one time for overlays + */ +#define DDERR_OVERLAYCOLORKEYONLYONEACTIVE MAKE_DDHRESULT( 384 ) + +/* + * Access to this palette is being refused because the palette is already + * locked by another thread. + */ +#define DDERR_PALETTEBUSY MAKE_DDHRESULT( 387 ) + +/* + * No src color key specified for this operation. + */ +#define DDERR_COLORKEYNOTSET MAKE_DDHRESULT( 400 ) + +/* + * This surface is already attached to the surface it is being attached to. + */ +#define DDERR_SURFACEALREADYATTACHED MAKE_DDHRESULT( 410 ) + +/* + * This surface is already a dependency of the surface it is being made a + * dependency of. + */ +#define DDERR_SURFACEALREADYDEPENDENT MAKE_DDHRESULT( 420 ) + +/* + * Access to this surface is being refused because the surface is already + * locked by another thread. + */ +#define DDERR_SURFACEBUSY MAKE_DDHRESULT( 430 ) + +/* + * Access to this surface is being refused because no driver exists + * which can supply a pointer to the surface. + * This is most likely to happen when attempting to lock the primary + * surface when no DCI provider is present. + * Will also happen on attempts to lock an optimized surface. + */ +#define DDERR_CANTLOCKSURFACE MAKE_DDHRESULT( 435 ) + +/* + * Access to Surface refused because Surface is obscured. + */ +#define DDERR_SURFACEISOBSCURED MAKE_DDHRESULT( 440 ) + +/* + * Access to this surface is being refused because the surface is gone. + * The DIRECTDRAWSURFACE object representing this surface should + * have Restore called on it. + */ +#define DDERR_SURFACELOST MAKE_DDHRESULT( 450 ) + +/* + * The requested surface is not attached. + */ +#define DDERR_SURFACENOTATTACHED MAKE_DDHRESULT( 460 ) + +/* + * Height requested by DirectDraw is too large. + */ +#define DDERR_TOOBIGHEIGHT MAKE_DDHRESULT( 470 ) + +/* + * Size requested by DirectDraw is too large -- The individual height and + * width are OK. + */ +#define DDERR_TOOBIGSIZE MAKE_DDHRESULT( 480 ) + +/* + * Width requested by DirectDraw is too large. + */ +#define DDERR_TOOBIGWIDTH MAKE_DDHRESULT( 490 ) + +/* + * Action not supported. + */ +#define DDERR_UNSUPPORTED E_NOTIMPL + +/* + * FOURCC format requested is unsupported by DirectDraw + */ +#define DDERR_UNSUPPORTEDFORMAT MAKE_DDHRESULT( 510 ) + +/* + * Bitmask in the pixel format requested is unsupported by DirectDraw + */ +#define DDERR_UNSUPPORTEDMASK MAKE_DDHRESULT( 520 ) + +/* + * vertical blank is in progress + */ +#define DDERR_VERTICALBLANKINPROGRESS MAKE_DDHRESULT( 537 ) + +/* + * Informs DirectDraw that the previous Blt which is transfering information + * to or from this Surface is incomplete. + */ +#define DDERR_WASSTILLDRAWING MAKE_DDHRESULT( 540 ) + + +/* + * Rectangle provided was not horizontally aligned on reqd. boundary + */ +#define DDERR_XALIGN MAKE_DDHRESULT( 560 ) + +/* + * The GUID passed to DirectDrawCreate is not a valid DirectDraw driver + * identifier. + */ +#define DDERR_INVALIDDIRECTDRAWGUID MAKE_DDHRESULT( 561 ) + +/* + * A DirectDraw object representing this driver has already been created + * for this process. + */ +#define DDERR_DIRECTDRAWALREADYCREATED MAKE_DDHRESULT( 562 ) + +/* + * A hardware only DirectDraw object creation was attempted but the driver + * did not support any hardware. + */ +#define DDERR_NODIRECTDRAWHW MAKE_DDHRESULT( 563 ) + +/* + * this process already has created a primary surface + */ +#define DDERR_PRIMARYSURFACEALREADYEXISTS MAKE_DDHRESULT( 564 ) + +/* + * software emulation not available. + */ +#define DDERR_NOEMULATION MAKE_DDHRESULT( 565 ) + +/* + * region passed to Clipper::GetClipList is too small. + */ +#define DDERR_REGIONTOOSMALL MAKE_DDHRESULT( 566 ) + +/* + * an attempt was made to set a clip list for a clipper objec that + * is already monitoring an hwnd. + */ +#define DDERR_CLIPPERISUSINGHWND MAKE_DDHRESULT( 567 ) + +/* + * No clipper object attached to surface object + */ +#define DDERR_NOCLIPPERATTACHED MAKE_DDHRESULT( 568 ) + +/* + * Clipper notification requires an HWND or + * no HWND has previously been set as the CooperativeLevel HWND. + */ +#define DDERR_NOHWND MAKE_DDHRESULT( 569 ) + +/* + * HWND used by DirectDraw CooperativeLevel has been subclassed, + * this prevents DirectDraw from restoring state. + */ +#define DDERR_HWNDSUBCLASSED MAKE_DDHRESULT( 570 ) + +/* + * The CooperativeLevel HWND has already been set. + * It can not be reset while the process has surfaces or palettes created. + */ +#define DDERR_HWNDALREADYSET MAKE_DDHRESULT( 571 ) + +/* + * No palette object attached to this surface. + */ +#define DDERR_NOPALETTEATTACHED MAKE_DDHRESULT( 572 ) + +/* + * No hardware support for 16 or 256 color palettes. + */ +#define DDERR_NOPALETTEHW MAKE_DDHRESULT( 573 ) + +/* + * If a clipper object is attached to the source surface passed into a + * BltFast call. + */ +#define DDERR_BLTFASTCANTCLIP MAKE_DDHRESULT( 574 ) + +/* + * No blter. + */ +#define DDERR_NOBLTHW MAKE_DDHRESULT( 575 ) + +/* + * No DirectDraw ROP hardware. + */ +#define DDERR_NODDROPSHW MAKE_DDHRESULT( 576 ) + +/* + * returned when GetOverlayPosition is called on a hidden overlay + */ +#define DDERR_OVERLAYNOTVISIBLE MAKE_DDHRESULT( 577 ) + +/* + * returned when GetOverlayPosition is called on a overlay that UpdateOverlay + * has never been called on to establish a destionation. + */ +#define DDERR_NOOVERLAYDEST MAKE_DDHRESULT( 578 ) + +/* + * returned when the position of the overlay on the destionation is no longer + * legal for that destionation. + */ +#define DDERR_INVALIDPOSITION MAKE_DDHRESULT( 579 ) + +/* + * returned when an overlay member is called for a non-overlay surface + */ +#define DDERR_NOTAOVERLAYSURFACE MAKE_DDHRESULT( 580 ) + +/* + * An attempt was made to set the cooperative level when it was already + * set to exclusive. + */ +#define DDERR_EXCLUSIVEMODEALREADYSET MAKE_DDHRESULT( 581 ) + +/* + * An attempt has been made to flip a surface that is not flippable. + */ +#define DDERR_NOTFLIPPABLE MAKE_DDHRESULT( 582 ) + +/* + * Can't duplicate primary & 3D surfaces, or surfaces that are implicitly + * created. + */ +#define DDERR_CANTDUPLICATE MAKE_DDHRESULT( 583 ) + +/* + * Surface was not locked. An attempt to unlock a surface that was not + * locked at all, or by this process, has been attempted. + */ +#define DDERR_NOTLOCKED MAKE_DDHRESULT( 584 ) + +/* + * Windows can not create any more DCs + */ +#define DDERR_CANTCREATEDC MAKE_DDHRESULT( 585 ) + +/* + * No DC was ever created for this surface. + */ +#define DDERR_NODC MAKE_DDHRESULT( 586 ) + +/* + * This surface can not be restored because it was created in a different + * mode. + */ +#define DDERR_WRONGMODE MAKE_DDHRESULT( 587 ) + +/* + * This surface can not be restored because it is an implicitly created + * surface. + */ +#define DDERR_IMPLICITLYCREATED MAKE_DDHRESULT( 588 ) + +/* + * The surface being used is not a palette-based surface + */ +#define DDERR_NOTPALETTIZED MAKE_DDHRESULT( 589 ) + + +/* + * The display is currently in an unsupported mode + */ +#define DDERR_UNSUPPORTEDMODE MAKE_DDHRESULT( 590 ) + +/* + * Operation could not be carried out because there is no mip-map + * texture mapping hardware present or available. + */ +#define DDERR_NOMIPMAPHW MAKE_DDHRESULT( 591 ) + +/* + * The requested action could not be performed because the surface was of + * the wrong type. + */ +#define DDERR_INVALIDSURFACETYPE MAKE_DDHRESULT( 592 ) + + + +/* + * Device does not support optimized surfaces, therefore no video memory optimized surfaces + */ +#define DDERR_NOOPTIMIZEHW MAKE_DDHRESULT( 600 ) + +/* + * Surface is an optimized surface, but has not yet been allocated any memory + */ +#define DDERR_NOTLOADED MAKE_DDHRESULT( 601 ) + +/* + * A DC has already been returned for this surface. Only one DC can be + * retrieved per surface. + */ +#define DDERR_DCALREADYCREATED MAKE_DDHRESULT( 620 ) + +/* + * An attempt was made to allocate non-local video memory from a device + * that does not support non-local video memory. + */ +#define DDERR_NONONLOCALVIDMEM MAKE_DDHRESULT( 630 ) + +/* + * The attempt to page lock a surface failed. + */ +#define DDERR_CANTPAGELOCK MAKE_DDHRESULT( 640 ) + +/* + * The attempt to page unlock a surface failed. + */ +#define DDERR_CANTPAGEUNLOCK MAKE_DDHRESULT( 660 ) + +/* + * An attempt was made to page unlock a surface with no outstanding page locks. + */ +#define DDERR_NOTPAGELOCKED MAKE_DDHRESULT( 680 ) + +/* + * There is more data available than the specified buffer size could hold + */ +#define DDERR_MOREDATA MAKE_DDHRESULT( 690 ) + +/* + * The video port is not active + */ +#define DDERR_VIDEONOTACTIVE MAKE_DDHRESULT( 695 ) + +/* + * Surfaces created by one direct draw device cannot be used directly by + * another direct draw device. + */ +#define DDERR_DEVICEDOESNTOWNSURFACE MAKE_DDHRESULT( 699 ) + + +/* + * An attempt was made to invoke an interface member of a DirectDraw object + * created by CoCreateInstance() before it was initialized. + */ +#define DDERR_NOTINITIALIZED CO_E_NOTINITIALIZED + +/* Alpha bit depth constants */ + + +#ifdef __cplusplus +}; +#endif + +#endif diff --git a/main.h b/inc/main.h similarity index 100% rename from main.h rename to inc/main.h diff --git a/palette.h b/inc/palette.h similarity index 100% rename from palette.h rename to inc/palette.h diff --git a/include/png.h b/inc/png.h similarity index 100% rename from include/png.h rename to inc/png.h diff --git a/include/pngconf.h b/inc/pngconf.h similarity index 100% rename from include/pngconf.h rename to inc/pngconf.h diff --git a/surface.h b/inc/surface.h similarity index 100% rename from surface.h rename to inc/surface.h diff --git a/include/zconf.h b/inc/zconf.h similarity index 100% rename from include/zconf.h rename to inc/zconf.h diff --git a/include/zlib.h b/inc/zlib.h similarity index 100% rename from include/zlib.h rename to inc/zlib.h diff --git a/clipper.c b/src/clipper.c similarity index 100% rename from clipper.c rename to src/clipper.c diff --git a/main.c b/src/main.c similarity index 100% rename from main.c rename to src/main.c diff --git a/mouse.c b/src/mouse.c similarity index 100% rename from mouse.c rename to src/mouse.c diff --git a/palette.c b/src/palette.c similarity index 100% rename from palette.c rename to src/palette.c diff --git a/render.c b/src/render.c similarity index 100% rename from render.c rename to src/render.c diff --git a/render_dummy.c b/src/render_dummy.c similarity index 100% rename from render_dummy.c rename to src/render_dummy.c diff --git a/render_soft.c b/src/render_soft.c similarity index 100% rename from render_soft.c rename to src/render_soft.c diff --git a/screenshot.c b/src/screenshot.c similarity index 100% rename from screenshot.c rename to src/screenshot.c diff --git a/surface.c b/src/surface.c similarity index 100% rename from surface.c rename to src/surface.c