{******************************************************************************} {* *} {* Copyright (C) Microsoft Corporation. All Rights Reserved. *} {* *} {* Files: ddraw.h dvp.h *} {* Content: DirectDraw and DirectDrawVideoPort include files *} {* *} {* DirectX 9.0 Delphi / FreePascal adaptation by Alexey Barkovoy *} {* E-Mail: directx@clootie.ru *} {* *} {* Modified: 07-Sep-2003 *} {* *} {* Based upon : *} {* DirectX 7.0 Object Pascal adaptation by *} {* Erik Unger, e-Mail: DelphiDirectX@next-reality.com *} {* *} {* Latest version can be downloaded from: *} {* http://www.clootie.ru *} {* http://sourceforge.net/projects/delphi-dx9sdk *} {* *} {******************************************************************************} { } { Obtained through: Joint Endeavour of Delphi Innovators (Project JEDI) } { } { The contents of this file are used with permission, subject to the Mozilla } { Public License Version 1.1 (the "License"); you may not use this file except } { in compliance with the License. You may obtain a copy of the License at } { http://www.mozilla.org/MPL/MPL-1.1.html } { } { Software distributed under the License is distributed on an "AS IS" basis, } { WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for } { the specific language governing rights and limitations under the License. } { } { Alternatively, the contents of this file may be used under the terms of the } { GNU Lesser General Public License (the "LGPL License"), in which case the } { provisions of the LGPL License are applicable instead of those above. } { If you wish to allow use of your version of this file only under the terms } { of the LGPL License and not to allow others to use your version of this file } { under the MPL, indicate your decision by deleting the provisions above and } { replace them with the notice and other provisions required by the LGPL } { License. If you do not delete the provisions above, a recipient may use } { your version of this file under either the MPL or the LGPL License. } { } { For more information about the LGPL: http://www.gnu.org/copyleft/lesser.html } { } {******************************************************************************} /////////////////////////////////////////////////////////////////////////////// // Notes: //---------------------------------------------------------------------------- // Possible input defines for this file, mapped to original C values: // DIRECTDRAW_VERSION_7 : DIRECTDRAW_VERSION = 0x0700, // DIRECTDRAW_VERSION_6 : DIRECTDRAW_VERSION = 0x0600, // DIRECTDRAW_VERSION_5 : DIRECTDRAW_VERSION = 0x0500, // DIRECTDRAW_VERSION_3 : DIRECTDRAW_VERSION = 0x0300, // DIRECTDRAW_VERSION_LESS_3 : DIRECTDRAW_VERSION < 0x0300, // // By default DIRECTDRAW_VERSION_7 (DIRECTDRAW_VERSION = 0x0700) is assumed // // Also you can use generic DIRECTXx defines, so: // DIRECTX7 equal to DIRECTDRAW_VERSION_7; // DIRECTX6 equal to DIRECTDRAW_VERSION_6; // DIRECTX5 equal to DIRECTDRAW_VERSION_5; // DIRECTX3 equal to DIRECTDRAW_VERSION_3 /////////////////////////////////////////////////////////////////////////////// unit DirectDraw; interface {$I DirectX.inc} //////////////////////////////////////////////////////////////////////// // Global level dynamic loading support {$IFDEF DYNAMIC_LINK_ALL} {$DEFINE DIRECTDRAW_DYNAMIC_LINK} {$ENDIF} {$IFDEF DYNAMIC_LINK_EXPLICIT_ALL} {$DEFINE DIRECTDRAW_DYNAMIC_LINK_EXPLICIT} {$ENDIF} // Remove "dots" below to force some kind of dynamic linking {.$DEFINE DIRECTDRAW_DYNAMIC_LINK} {.$DEFINE DIRECTDRAW_DYNAMIC_LINK_EXPLICIT} //////////////////////////////////////////////////////////////////////// // Assume for what DirectDraw version we will compile headers {$IFDEF DIRECTX7} {$DEFINE DIRECTDRAW_VERSION_7} {$ENDIF} {$IFDEF DIRECTX6} {$DEFINE DIRECTDRAW_VERSION_6} {$ENDIF} {$IFDEF DIRECTX5} {$DEFINE DIRECTDRAW_VERSION_5} {$ENDIF} {$IFDEF DIRECTX3} {$DEFINE DIRECTDRAW_VERSION_3} {$ENDIF} {$IFNDEF DIRECTDRAW_VERSION_7} {$IFNDEF DIRECTDRAW_VERSION_6} {$IFNDEF DIRECTDRAW_VERSION_5} {$IFNDEF DIRECTDRAW_VERSION_3} {$IFNDEF DIRECTDRAW_VERSION_LESS_3} {$DEFINE DIRECTDRAW_VERSION_7} // Compiling for DirectDraw7 by default {$ENDIF} {$ENDIF} {$ENDIF} {$ENDIF} {$ENDIF} //////////////////////////////////////////////////////////////////////// // Emit conditionals to C++Builder compiler {$IFDEF DIRECTDRAW_VERSION_LESS_3} {$HPPEMIT '#define DIRECTDRAW_VERSION 0x0100'} {$ENDIF} {$IFDEF DIRECTDRAW_VERSION_3} {$HPPEMIT '#define DIRECTDRAW_VERSION 0x0300'} {$ENDIF} {$IFDEF DIRECTDRAW_VERSION_5} {$HPPEMIT '#define DIRECTDRAW_VERSION 0x0500'} {$ENDIF} {$IFDEF DIRECTDRAW_VERSION_6} {$HPPEMIT '#define DIRECTDRAW_VERSION 0x0600'} {$ENDIF} {$IFDEF DIRECTDRAW_VERSION_7} {$HPPEMIT '#define DIRECTDRAW_VERSION 0x0700'} {$ENDIF} //////////////////////////////////////////////////////////////////////// // Define symbols for '<=' comparision {$IFDEF DIRECTDRAW_VERSION_7} {$DEFINE DIRECTDRAW_VERSION_6} {$ENDIF} {$IFDEF DIRECTDRAW_VERSION_6} {$DEFINE DIRECTDRAW_VERSION_5} {$ENDIF} {$IFDEF DIRECTDRAW_VERSION_5} {$DEFINE DIRECTDRAW_VERSION_3} {$ENDIF} {$IFDEF DIRECTDRAW_VERSION_3} {$DEFINE DIRECTDRAW_VERSION_LESS_3} {$ENDIF} (*$HPPEMIT '#include "ddraw.h"' *) (*$HPPEMIT '#include "dvp.h"' *) uses Windows; (*==========================================================================; * * Copyright (C) Microsoft Corporation. All Rights Reserved. * * File: ddraw.h * Content: DirectDraw include file * ***************************************************************************) function MAKEFOURCC(ch0, ch1, ch2, ch3: Char): DWORD; {$EXTERNALSYM MAKEFOURCC} (* * FOURCC codes for DX compressed-texture pixel formats *) const //#define FOURCC_DXT1 (MAKEFOURCC('D','X','T','1')) FOURCC_DXT1 = DWORD(Byte('D') or (Byte('X') shl 8) or (Byte('T') shl 16) or (Byte('1') shl 24)); {$EXTERNALSYM FOURCC_DXT1} //#define FOURCC_DXT2 (MAKEFOURCC('D','X','T','2')) FOURCC_DXT2 = DWORD(Byte('D') or (Byte('X') shl 8) or (Byte('T') shl 16) or (Byte('2') shl 24)); {$EXTERNALSYM FOURCC_DXT2} //#define FOURCC_DXT3 (MAKEFOURCC('D','X','T','3')) FOURCC_DXT3 = DWORD(Byte('D') or (Byte('X') shl 8) or (Byte('T') shl 16) or (Byte('3') shl 24)); {$EXTERNALSYM FOURCC_DXT3} //#define FOURCC_DXT4 (MAKEFOURCC('D','X','T','4')) FOURCC_DXT4 = DWORD(Byte('D') or (Byte('X') shl 8) or (Byte('T') shl 16) or (Byte('4') shl 24)); {$EXTERNALSYM FOURCC_DXT4} //#define FOURCC_DXT5 (MAKEFOURCC('D','X','T','5')) FOURCC_DXT5 = DWORD(Byte('D') or (Byte('X') shl 8) or (Byte('T') shl 16) or (Byte('5') shl 24)); {$EXTERNALSYM FOURCC_DXT5} (* * GUIDS used by DirectDraw objects *) const CLSID_DirectDraw: TGUID = '{D7B70EE0-4340-11CF-B063-0020AFC2CD35}'; {$EXTERNALSYM CLSID_DirectDraw} CLSID_DirectDraw7: TGUID = '{3c305196-50db-11d3-9cfe-00c04fd930c5}'; {$EXTERNALSYM CLSID_DirectDraw7} CLSID_DirectDrawClipper: TGUID = '{593817A0-7DB3-11CF-A2DE-00AA00b93356}'; {$EXTERNALSYM CLSID_DirectDrawClipper} (* These GUID's defined later by typedefing to Delphi interfaces DEFINE_GUID( IID_IDirectDraw, 0x6C14DB80,0xA733,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60 ); DEFINE_GUID( IID_IDirectDraw2, 0xB3A6F3E0,0x2B43,0x11CF,0xA2,0xDE,0x00,0xAA,0x00,0xB9,0x33,0x56 ); DEFINE_GUID( IID_IDirectDraw4, 0x9c59509a,0x39bd,0x11d1,0x8c,0x4a,0x00,0xc0,0x4f,0xd9,0x30,0xc5 ); DEFINE_GUID( IID_IDirectDraw7, 0x15e65ec0,0x3b9c,0x11d2,0xb9,0x2f,0x00,0x60,0x97,0x97,0xea,0x5b ); DEFINE_GUID( IID_IDirectDrawSurface, 0x6C14DB81,0xA733,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60 ); DEFINE_GUID( IID_IDirectDrawSurface2, 0x57805885,0x6eec,0x11cf,0x94,0x41,0xa8,0x23,0x03,0xc1,0x0e,0x27 ); DEFINE_GUID( IID_IDirectDrawSurface3, 0xDA044E00,0x69B2,0x11D0,0xA1,0xD5,0x00,0xAA,0x00,0xB8,0xDF,0xBB ); DEFINE_GUID( IID_IDirectDrawSurface4, 0x0B2B8630,0xAD35,0x11D0,0x8E,0xA6,0x00,0x60,0x97,0x97,0xEA,0x5B ); DEFINE_GUID( IID_IDirectDrawSurface7, 0x06675a80,0x3b9b,0x11d2,0xb9,0x2f,0x00,0x60,0x97,0x97,0xea,0x5b ); DEFINE_GUID( IID_IDirectDrawPalette, 0x6C14DB84,0xA733,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60 ); DEFINE_GUID( IID_IDirectDrawClipper, 0x6C14DB85,0xA733,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60 ); DEFINE_GUID( IID_IDirectDrawColorControl, 0x4B9F0EE0,0x0D7E,0x11D0,0x9B,0x06,0x00,0xA0,0xC9,0x03,0xA3,0xB8 ); DEFINE_GUID( IID_IDirectDrawGammaControl, 0x69C11C3E,0xB46B,0x11D1,0xAD,0x7A,0x00,0xC0,0x4F,0xC2,0x9B,0x4E ); *) const DD_ROP_SPACE = (256 div 32); // space required to store ROP array {$EXTERNALSYM DD_ROP_SPACE} MAX_DDDEVICEID_STRING = 512; {$EXTERNALSYM MAX_DDDEVICEID_STRING} (*============================================================================ * * DirectDraw Structures * * Various structures used to invoke DirectDraw. * *==========================================================================*) var NilGUID : TGUID = '{00000000-0000-0000-0000-000000000000}'; type //Clootie: This was originally in Erik Unger headers - don't know why, so leave it alone TRefGUID = packed record case Integer of 1: (guid : PGUID); 2: (dwFlags : DWORD); end; REFGUID = PGUID; {$EXTERNALSYM REFGUID} {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectDraw);'} {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectDraw2);'} {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectDraw4);'} {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectDraw7);'} {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectDrawSurface);'} {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectDrawSurface2);'} {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectDrawSurface3);'} {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectDrawSurface4);'} {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectDrawSurface7);'} {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectDrawPalette);'} {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectDrawClipper);'} {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectDrawColorControl);'} {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectDrawGammaControl);'} IDirectDraw = interface; {$EXTERNALSYM IDirectDraw} IDirectDraw2 = interface; {$EXTERNALSYM IDirectDraw2} IDirectDraw4 = interface; {$EXTERNALSYM IDirectDraw4} IDirectDraw7 = interface; {$EXTERNALSYM IDirectDraw7} IDirectDrawSurface = interface; {$EXTERNALSYM IDirectDrawSurface} IDirectDrawSurface2 = interface; {$EXTERNALSYM IDirectDrawSurface2} IDirectDrawSurface3 = interface; {$EXTERNALSYM IDirectDrawSurface3} IDirectDrawSurface4 = interface; {$EXTERNALSYM IDirectDrawSurface4} IDirectDrawSurface7 = interface; {$EXTERNALSYM IDirectDrawSurface7} IDirectDrawPalette = interface; {$EXTERNALSYM IDirectDrawPalette} IDirectDrawClipper = interface; {$EXTERNALSYM IDirectDrawClipper} IDirectDrawColorControl = interface; {$EXTERNALSYM IDirectDrawColorControl} IDirectDrawGammaControl = interface; {$EXTERNALSYM IDirectDrawGammaControl} (* * Generic pixel format with 8-bit RGB and alpha components *) PDDARGB = ^TDDARGB; _DDARGB = packed record blue: Byte; green: Byte; red: Byte; alpha: Byte; end; {$EXTERNALSYM _DDARGB} DDARGB = _DDARGB; {$EXTERNALSYM DDARGB} TDDARGB = _DDARGB; (* * This version of the structure remains for backwards source compatibility. * The DDARGB structure is the one that should be used for all DirectDraw APIs. *) PDDRGBA = ^TDDRGBA; _DDRGBA = packed record red : Byte; green : Byte; blue : Byte; alpha : Byte; end; {$EXTERNALSYM _DDRGBA} DDRGBA = _DDRGBA; {$EXTERNALSYM DDRGBA} TDDRGBA = _DDRGBA; (* * TDDColorKey *) PDDColorKey = ^TDDColorKey; _DDCOLORKEY = packed record dwColorSpaceLowValue: DWORD; // low boundary of color space that is to // be treated as Color Key, inclusive dwColorSpaceHighValue: DWORD; // high boundary of color space that is // to be treated as Color Key, inclusive end; {$EXTERNALSYM _DDCOLORKEY} DDCOLORKEY = _DDCOLORKEY; {$EXTERNALSYM DDCOLORKEY} TDDColorKey = _DDCOLORKEY; // Delphi 5 and up don't allow interfaces in variant records // so we have to use pointers instead (which can be type-casted into interfaces): PDirectDrawSurface = Pointer; (* * TDDBltFX * Used to pass override information to the DIRECTDRAWSURFACE callback Blt. *) PDDBltFX = ^TDDBltFX; _DDBLTFX = packed record dwSize : DWORD; // size of structure dwDDFX : DWORD; // FX operations dwROP : DWORD; // Win32 raster operations dwDDROP : DWORD; // Raster operations new for DirectDraw dwRotationAngle : DWORD; // Rotation angle for blt dwZBufferOpCode : DWORD; // ZBuffer compares dwZBufferLow : DWORD; // Low limit of Z buffer dwZBufferHigh : DWORD; // High limit of Z buffer dwZBufferBaseDest : DWORD; // Destination base value dwZDestConstBitDepth : DWORD; // Bit depth used to specify Z constant for destination case Integer of 0: ( dwZDestConst : DWORD // Constant to use as Z buffer for dest ); 1: ( lpDDSZBufferDest : PDirectDrawSurface; // Surface to use as Z buffer for dest dwZSrcConstBitDepth : DWORD; // Bit depth used to specify Z constant for source case integer of 0: ( dwZSrcConst : DWORD; // Constant to use as Z buffer for src ); 1: ( lpDDSZBufferSrc : PDirectDrawSurface; // Surface to use as Z buffer for src dwAlphaEdgeBlendBitDepth : DWORD; // Bit depth used to specify constant for alpha edge blend dwAlphaEdgeBlend : DWORD; // Alpha for edge blending dwReserved : DWORD; dwAlphaDestConstBitDepth : DWORD; // Bit depth used to specify alpha constant for destination case integer of 0: ( dwAlphaDestConst : DWORD; // Constant to use as Alpha Channel ); 1: ( lpDDSAlphaDest : PDirectDrawSurface; // Surface to use as Alpha Channel dwAlphaSrcConstBitDepth : DWORD; // Bit depth used to specify alpha constant for source case integer of 0: ( dwAlphaSrcConst : DWORD; // Constant to use as Alpha Channel ); 1: ( lpDDSAlphaSrc : PDirectDrawSurface; // Surface to use as Alpha Channel case integer of 0: ( dwFillColor : DWORD; // color in RGB or Palettized ); 1: ( dwFillDepth : DWORD; // depth value for z-buffer ); 2: ( dwFillPixel : DWORD; // pixel value ); 3: ( lpDDSPattern : PDirectDrawSurface; // Surface to use as pattern ddckDestColorkey : TDDColorKey; // DestColorkey override ddckSrcColorkey : TDDColorKey; // SrcColorkey override ) ) ) ) ) end; {$EXTERNALSYM _DDBLTFX} DDBLTFX = _DDBLTFX; {$EXTERNALSYM DDBLTFX} TDDBltFX = _DDBLTFX; (* * TDDSCaps *) PDDSCaps = ^TDDSCaps; _DDSCAPS = packed record dwCaps: DWORD; // capabilities of surface wanted end; {$EXTERNALSYM _DDSCAPS} DDSCAPS = _DDSCAPS; {$EXTERNALSYM DDSCAPS} TDDSCaps = _DDSCAPS; (* * TDDOSCaps *) PDDOSCaps = ^TDDOSCaps; _DDOSCAPS = packed record dwCaps: DWORD; // capabilities of surface wanted end; {$EXTERNALSYM _DDOSCAPS} DDOSCAPS = _DDOSCAPS; {$EXTERNALSYM DDOSCAPS} TDDOSCaps = _DDOSCAPS; (* * This structure is used internally by DirectDraw. *) PDDSCapsEx = ^TDDSCapsEx; _DDSCAPSEX = packed record dwCaps2 : DWORD; dwCaps3 : DWORD; dwCaps4 : DWORD; end; {$EXTERNALSYM _DDSCAPSEX} DDSCAPSEX = _DDSCAPSEX; {$EXTERNALSYM DDSCAPSEX} TDDSCapsEx = _DDSCAPSEX; (* * TDDSCaps2 *) PDDSCaps2 = ^TDDSCaps2; _DDSCAPS2 = packed record dwCaps: DWORD; // capabilities of surface wanted dwCaps2 : DWORD; dwCaps3 : DWORD; dwCaps4 : DWORD; end; {$EXTERNALSYM _DDSCAPS2} DDSCAPS2 = _DDSCAPS2; {$EXTERNALSYM DDSCAPS2} TDDSCaps2 = _DDSCAPS2; (* * NOTE: Our choosen structure number scheme is to append a single digit to * the end of the structure giving the version that structure is associated * with. *) (* * This structure represents the DDCAPS structure released in DirectDraw 1.0. It is used internally * by DirectDraw to interpret caps passed into ddraw by drivers written prior to the release of DirectDraw 2.0. * New applications should use the DDCAPS structure defined below. *) PDDCaps_DX1 = ^TDDCaps_DX1; _DDCAPS_DX1 = packed record dwSize: DWORD; // size of the DDDRIVERCAPS structure dwCaps: DWORD; // driver specific capabilities dwCaps2: DWORD; // more driver specific capabilites dwCKeyCaps: DWORD; // color key capabilities of the surface dwFXCaps: DWORD; // driver specific stretching and effects capabilites dwFXAlphaCaps: DWORD; // alpha driver specific capabilities dwPalCaps: DWORD; // palette capabilities dwSVCaps: DWORD; // stereo vision capabilities dwAlphaBltConstBitDepths: DWORD; // DDBD_2,4,8 dwAlphaBltPixelBitDepths: DWORD; // DDBD_1,2,4,8 dwAlphaBltSurfaceBitDepths: DWORD; // DDBD_1,2,4,8 dwAlphaOverlayConstBitDepths: DWORD; // DDBD_2,4,8 dwAlphaOverlayPixelBitDepths: DWORD; // DDBD_1,2,4,8 dwAlphaOverlaySurfaceBitDepths: DWORD; // DDBD_1,2,4,8 dwZBufferBitDepths: DWORD; // DDBD_8,16,24,32 dwVidMemTotal: DWORD; // total amount of video memory dwVidMemFree: DWORD; // amount of free video memory dwMaxVisibleOverlays: DWORD; // maximum number of visible overlays dwCurrVisibleOverlays: DWORD; // current number of visible overlays dwNumFourCCCodes: DWORD; // number of four cc codes dwAlignBoundarySrc: DWORD; // source rectangle alignment dwAlignSizeSrc: DWORD; // source rectangle byte size dwAlignBoundaryDest: DWORD; // dest rectangle alignment dwAlignSizeDest: DWORD; // dest rectangle byte size dwAlignStrideAlign: DWORD; // stride alignment dwRops: Array [0..DD_ROP_SPACE-1] of DWORD; // ROPS supported ddsCaps: TDDSCaps; // TDDSCaps structure has all the general capabilities dwMinOverlayStretch: DWORD; // minimum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 dwMaxOverlayStretch: DWORD; // maximum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 dwMinLiveVideoStretch: DWORD; // minimum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 dwMaxLiveVideoStretch: DWORD; // maximum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 dwMinHwCodecStretch: DWORD; // minimum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 dwMaxHwCodecStretch: DWORD; // maximum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 dwReserved1: DWORD; // reserved dwReserved2: DWORD; // reserved dwReserved3: DWORD; // reserved end; {$EXTERNALSYM _DDCAPS_DX1} DDCAPS_DX1 = _DDCAPS_DX1; {$EXTERNALSYM DDCAPS_DX1} TDDCaps_DX1 = _DDCAPS_DX1; (* * This structure is the TDDCaps structure as it was in version 2 and 3 of Direct X. * It is present for back compatability. *) PDDCaps_DX3 = ^TDDCaps_DX3; _DDCAPS_DX3 = packed record dwSize: DWORD; // size of the DDDRIVERCAPS structure dwCaps: DWORD; // driver specific capabilities dwCaps2: DWORD; // more driver specific capabilites dwCKeyCaps: DWORD; // color key capabilities of the surface dwFXCaps: DWORD; // driver specific stretching and effects capabilites dwFXAlphaCaps: DWORD; // alpha driver specific capabilities dwPalCaps: DWORD; // palette capabilities dwSVCaps: DWORD; // stereo vision capabilities dwAlphaBltConstBitDepths: DWORD; // DDBD_2,4,8 dwAlphaBltPixelBitDepths: DWORD; // DDBD_1,2,4,8 dwAlphaBltSurfaceBitDepths: DWORD; // DDBD_1,2,4,8 dwAlphaOverlayConstBitDepths: DWORD; // DDBD_2,4,8 dwAlphaOverlayPixelBitDepths: DWORD; // DDBD_1,2,4,8 dwAlphaOverlaySurfaceBitDepths: DWORD; // DDBD_1,2,4,8 dwZBufferBitDepths: DWORD; // DDBD_8,16,24,32 dwVidMemTotal: DWORD; // total amount of video memory dwVidMemFree: DWORD; // amount of free video memory dwMaxVisibleOverlays: DWORD; // maximum number of visible overlays dwCurrVisibleOverlays: DWORD; // current number of visible overlays dwNumFourCCCodes: DWORD; // number of four cc codes dwAlignBoundarySrc: DWORD; // source rectangle alignment dwAlignSizeSrc: DWORD; // source rectangle byte size dwAlignBoundaryDest: DWORD; // dest rectangle alignment dwAlignSizeDest: DWORD; // dest rectangle byte size dwAlignStrideAlign: DWORD; // stride alignment dwRops: Array [0..DD_ROP_SPACE-1] of DWORD; // ROPS supported ddsCaps: TDDSCaps; // TDDSCaps structure has all the general capabilities dwMinOverlayStretch: DWORD; // minimum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 dwMaxOverlayStretch: DWORD; // maximum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 dwMinLiveVideoStretch: DWORD; // minimum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 dwMaxLiveVideoStretch: DWORD; // maximum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 dwMinHwCodecStretch: DWORD; // minimum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 dwMaxHwCodecStretch: DWORD; // maximum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 dwReserved1: DWORD; // reserved dwReserved2: DWORD; // reserved dwReserved3: DWORD; // reserved dwSVBCaps: DWORD; // driver specific capabilities for System->Vmem blts dwSVBCKeyCaps: DWORD; // driver color key capabilities for System->Vmem blts dwSVBFXCaps: DWORD; // driver FX capabilities for System->Vmem blts dwSVBRops: array[0..DD_ROP_SPACE-1] of DWORD;// ROPS supported for System->Vmem blts dwVSBCaps: DWORD; // driver specific capabilities for Vmem->System blts dwVSBCKeyCaps: DWORD; // driver color key capabilities for Vmem->System blts dwVSBFXCaps: DWORD; // driver FX capabilities for Vmem->System blts dwVSBRops: array[0..DD_ROP_SPACE-1] of DWORD;// ROPS supported for Vmem->System blts dwSSBCaps: DWORD; // driver specific capabilities for System->System blts dwSSBCKeyCaps: DWORD; // driver color key capabilities for System->System blts dwSSBFXCaps: DWORD; // driver FX capabilities for System->System blts dwSSBRops: array[0..DD_ROP_SPACE-1] of DWORD;// ROPS supported for System->System blts dwReserved4 : DWORD; dwReserved5 : DWORD; dwReserved6 : DWORD; end; {$EXTERNALSYM _DDCAPS_DX3} DDCAPS_DX3 = _DDCAPS_DX3; {$EXTERNALSYM DDCAPS_DX3} TDDCaps_DX3 = _DDCAPS_DX3; (* * This structure is the TDDCaps structure as it was in version 5 of Direct X. * It is present for back compatability. *) PDDCaps_DX5 = ^TDDCaps_DX5; _DDCAPS_DX5 = packed record dwSize: DWORD; // size of the DDDRIVERCAPS structure dwCaps: DWORD; // driver specific capabilities dwCaps2: DWORD; // more driver specific capabilites dwCKeyCaps: DWORD; // color key capabilities of the surface dwFXCaps: DWORD; // driver specific stretching and effects capabilites dwFXAlphaCaps: DWORD; // alpha driver specific capabilities dwPalCaps: DWORD; // palette capabilities dwSVCaps: DWORD; // stereo vision capabilities dwAlphaBltConstBitDepths: DWORD; // DDBD_2,4,8 dwAlphaBltPixelBitDepths: DWORD; // DDBD_1,2,4,8 dwAlphaBltSurfaceBitDepths: DWORD; // DDBD_1,2,4,8 dwAlphaOverlayConstBitDepths: DWORD; // DDBD_2,4,8 dwAlphaOverlayPixelBitDepths: DWORD; // DDBD_1,2,4,8 dwAlphaOverlaySurfaceBitDepths: DWORD; // DDBD_1,2,4,8 dwZBufferBitDepths: DWORD; // DDBD_8,16,24,32 dwVidMemTotal: DWORD; // total amount of video memory dwVidMemFree: DWORD; // amount of free video memory dwMaxVisibleOverlays: DWORD; // maximum number of visible overlays dwCurrVisibleOverlays: DWORD; // current number of visible overlays dwNumFourCCCodes: DWORD; // number of four cc codes dwAlignBoundarySrc: DWORD; // source rectangle alignment dwAlignSizeSrc: DWORD; // source rectangle byte size dwAlignBoundaryDest: DWORD; // dest rectangle alignment dwAlignSizeDest: DWORD; // dest rectangle byte size dwAlignStrideAlign: DWORD; // stride alignment dwRops: Array [0..DD_ROP_SPACE-1] of DWORD; // ROPS supported ddsCaps: TDDSCaps; // TDDSCaps structure has all the general capabilities dwMinOverlayStretch: DWORD; // minimum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 dwMaxOverlayStretch: DWORD; // maximum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 dwMinLiveVideoStretch: DWORD; // minimum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 dwMaxLiveVideoStretch: DWORD; // maximum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 dwMinHwCodecStretch: DWORD; // minimum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 dwMaxHwCodecStretch: DWORD; // maximum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 dwReserved1: DWORD; // reserved dwReserved2: DWORD; // reserved dwReserved3: DWORD; // reserved dwSVBCaps: DWORD; // driver specific capabilities for System->Vmem blts dwSVBCKeyCaps: DWORD; // driver color key capabilities for System->Vmem blts dwSVBFXCaps: DWORD; // driver FX capabilities for System->Vmem blts dwSVBRops: Array [0..DD_ROP_SPACE-1] of DWORD;// ROPS supported for System->Vmem blts dwVSBCaps: DWORD; // driver specific capabilities for Vmem->System blts dwVSBCKeyCaps: DWORD; // driver color key capabilities for Vmem->System blts dwVSBFXCaps: DWORD; // driver FX capabilities for Vmem->System blts dwVSBRops: Array [0..DD_ROP_SPACE-1] of DWORD;// ROPS supported for Vmem->System blts dwSSBCaps: DWORD; // driver specific capabilities for System->System blts dwSSBCKeyCaps: DWORD; // driver color key capabilities for System->System blts dwSSBFXCaps: DWORD; // driver FX capabilities for System->System blts dwSSBRops: Array [0..DD_ROP_SPACE-1] of DWORD;// ROPS supported for System->System blts // Members added for DX5: dwMaxVideoPorts: DWORD; // maximum number of usable video ports dwCurrVideoPorts: DWORD; // current number of video ports used dwSVBCaps2: DWORD; // more driver specific capabilities for System->Vmem blts dwNLVBCaps: DWORD; // driver specific capabilities for non-local->local vidmem blts dwNLVBCaps2: DWORD; // more driver specific capabilities non-local->local vidmem blts dwNLVBCKeyCaps: DWORD; // driver color key capabilities for non-local->local vidmem blts dwNLVBFXCaps: DWORD; // driver FX capabilities for non-local->local blts dwNLVBRops: Array [0..DD_ROP_SPACE-1] of DWORD; // ROPS supported for non-local->local blts end; {$EXTERNALSYM _DDCAPS_DX5} DDCAPS_DX5 = _DDCAPS_DX5; {$EXTERNALSYM DDCAPS_DX5} TDDCaps_DX5 = _DDCAPS_DX5; PDDCaps_DX6 = ^TDDCaps_DX6; _DDCAPS_DX6 = packed record dwSize: DWORD; // size of the DDDRIVERCAPS structure dwCaps: DWORD; // driver specific capabilities dwCaps2: DWORD; // more driver specific capabilites dwCKeyCaps: DWORD; // color key capabilities of the surface dwFXCaps: DWORD; // driver specific stretching and effects capabilites dwFXAlphaCaps: DWORD; // alpha driver specific capabilities dwPalCaps: DWORD; // palette capabilities dwSVCaps: DWORD; // stereo vision capabilities dwAlphaBltConstBitDepths: DWORD; // DDBD_2,4,8 dwAlphaBltPixelBitDepths: DWORD; // DDBD_1,2,4,8 dwAlphaBltSurfaceBitDepths: DWORD; // DDBD_1,2,4,8 dwAlphaOverlayConstBitDepths: DWORD; // DDBD_2,4,8 dwAlphaOverlayPixelBitDepths: DWORD; // DDBD_1,2,4,8 dwAlphaOverlaySurfaceBitDepths: DWORD; // DDBD_1,2,4,8 dwZBufferBitDepths: DWORD; // DDBD_8,16,24,32 dwVidMemTotal: DWORD; // total amount of video memory dwVidMemFree: DWORD; // amount of free video memory dwMaxVisibleOverlays: DWORD; // maximum number of visible overlays dwCurrVisibleOverlays: DWORD; // current number of visible overlays dwNumFourCCCodes: DWORD; // number of four cc codes dwAlignBoundarySrc: DWORD; // source rectangle alignment dwAlignSizeSrc: DWORD; // source rectangle byte size dwAlignBoundaryDest: DWORD; // dest rectangle alignment dwAlignSizeDest: DWORD; // dest rectangle byte size dwAlignStrideAlign: DWORD; // stride alignment dwRops: Array [0..DD_ROP_SPACE-1] of DWORD; // ROPS supported ddsOldCaps: TDDSCaps; // Was dssCaps: TDDSCaps. ddsCaps is of type TDDScaps2 for DX6 dwMinOverlayStretch: DWORD; // minimum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 dwMaxOverlayStretch: DWORD; // maximum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 dwMinLiveVideoStretch: DWORD; // minimum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 dwMaxLiveVideoStretch: DWORD; // maximum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 dwMinHwCodecStretch: DWORD; // minimum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 dwMaxHwCodecStretch: DWORD; // maximum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 dwReserved1: DWORD; // reserved dwReserved2: DWORD; // reserved dwReserved3: DWORD; // reserved dwSVBCaps: DWORD; // driver specific capabilities for System->Vmem blts dwSVBCKeyCaps: DWORD; // driver color key capabilities for System->Vmem blts dwSVBFXCaps: DWORD; // driver FX capabilities for System->Vmem blts dwSVBRops: Array [0..DD_ROP_SPACE-1] of DWORD;// ROPS supported for System->Vmem blts dwVSBCaps: DWORD; // driver specific capabilities for Vmem->System blts dwVSBCKeyCaps: DWORD; // driver color key capabilities for Vmem->System blts dwVSBFXCaps: DWORD; // driver FX capabilities for Vmem->System blts dwVSBRops: Array [0..DD_ROP_SPACE-1] of DWORD;// ROPS supported for Vmem->System blts dwSSBCaps: DWORD; // driver specific capabilities for System->System blts dwSSBCKeyCaps: DWORD; // driver color key capabilities for System->System blts dwSSBFXCaps: DWORD; // driver FX capabilities for System->System blts dwSSBRops: Array [0..DD_ROP_SPACE-1] of DWORD;// ROPS supported for System->System blts // Members added for DX5: dwMaxVideoPorts: DWORD; // maximum number of usable video ports dwCurrVideoPorts: DWORD; // current number of video ports used dwSVBCaps2: DWORD; // more driver specific capabilities for System->Vmem blts dwNLVBCaps: DWORD; // driver specific capabilities for non-local->local vidmem blts dwNLVBCaps2: DWORD; // more driver specific capabilities non-local->local vidmem blts dwNLVBCKeyCaps: DWORD; // driver color key capabilities for non-local->local vidmem blts dwNLVBFXCaps: DWORD; // driver FX capabilities for non-local->local blts dwNLVBRops: Array [0..DD_ROP_SPACE-1] of DWORD; // ROPS supported for non-local->local blts // Members added for DX6 release ddsCaps : TDDSCaps2 ; // Surface Caps end; {$EXTERNALSYM _DDCAPS_DX6} DDCAPS_DX6 = _DDCAPS_DX6; {$EXTERNALSYM DDCAPS_DX6} TDDCaps_DX6 = _DDCAPS_DX6; _DDCAPS_DX7 = TDDCaps_DX6; {$EXTERNALSYM _DDCAPS_DX7} DDCAPS_DX7 = _DDCAPS_DX7; {$EXTERNALSYM DDCAPS_DX7} PDDCaps_DX7 = ^TDDCaps_DX7; TDDCaps_DX7 = TDDCaps_DX6; {$IFDEF DIRECTDRAW_VERSION_7} PDDCaps = PDDCaps_DX7; TDDCaps = TDDCaps_DX7; {$ELSE} {$IFDEF DIRECTDRAW_VERSION_6} PDDCaps = PDDCaps_DX6; TDDCaps = TDDCaps_DX6; {$ELSE} {$IFDEF DIRECTDRAW_VERSION_5} PDDCaps = PDDCaps_DX5; TDDCaps = TDDCaps_DX5; {$ELSE} {$IFDEF DIRECTDRAW_VERSION_3} PDDCaps = PDDCaps_DX3; TDDCaps = TDDCaps_DX3; {$ELSE} PDDCaps = PDDCaps_DX1; TDDCaps = TDDCaps_DX1; {$ENDIF} {$ENDIF} {$ENDIF} {$ENDIF} (* * TDDPixelFormat *) PDDPixelFormat = ^TDDPixelFormat; _DDPIXELFORMAT = packed record dwSize: DWORD; // size of structure dwFlags: DWORD; // pixel format flags dwFourCC: DWORD; // (FOURCC code) case Integer of 1: ( dwRGBBitCount : DWORD; // how many bits per pixel dwRBitMask : DWORD; // mask for red bit dwGBitMask : DWORD; // mask for green bits dwBBitMask : DWORD; // mask for blue bits dwRGBAlphaBitMask : DWORD; // mask for alpha channel ); 2: ( dwYUVBitCount : DWORD; // how many bits per pixel dwYBitMask : DWORD; // mask for Y bits dwUBitMask : DWORD; // mask for U bits dwVBitMask : DWORD; // mask for V bits dwYUVAlphaBitMask : DWORD; // mask for alpha channel ); 3: ( dwZBufferBitDepth : DWORD; // how many total bits/pixel in z buffer (including any stencil bits) dwStencilBitDepth : DWORD; // how many stencil bits (note: dwZBufferBitDepth-dwStencilBitDepth is total Z-only bits) dwZBitMask : DWORD; // mask for Z bits dwStencilBitMask : DWORD; // mask for stencil bits dwLuminanceAlphaBitMask : DWORD; // mask for alpha channel ); 4: ( dwAlphaBitDepth : DWORD; // how many bits for alpha channels dwLuminanceBitMask : DWORD; // mask for luminance bits dwBumpDvBitMask : DWORD; // mask for bump map V delta bits dwBumpLuminanceBitMask : DWORD; // mask for luminance in bump map dwRGBZBitMask : DWORD; // mask for Z channel ); 5: ( dwLuminanceBitCount : DWORD; // how many bits per pixel dwBumpDuBitMask : DWORD; // mask for bump map U delta bits Fill1, Fill2 : DWORD; dwYUVZBitMask : DWORD; // mask for Z channel ); 6: ( dwBumpBitCount : DWORD; // how many bits per "buxel", total ); end; {$EXTERNALSYM _DDPIXELFORMAT} DDPIXELFORMAT = _DDPIXELFORMAT; {$EXTERNALSYM DDPIXELFORMAT} TDDPixelFormat = _DDPIXELFORMAT; // These definitions are for compatibility with Erik Unger original conversion PDDPixelFormat_DX3 = PDDPixelFormat; TDDPixelFormat_DX3 = TDDPixelFormat; PDDPixelFormat_DX5 = PDDPixelFormat; TDDPixelFormat_DX5 = TDDPixelFormat; PDDPixelFormat_DX6 = PDDPixelFormat; TDDPixelFormat_DX6 = TDDPixelFormat; PDDPixelFormat_DX7 = PDDPixelFormat; TDDPixelFormat_DX7 = TDDPixelFormat; (* * TDDOverlayFX *) PDDOverlayFX = ^TDDOverlayFX; _DDOVERLAYFX = packed record dwSize: DWORD; // size of structure dwAlphaEdgeBlendBitDepth: DWORD; // Bit depth used to specify constant for alpha edge blend dwAlphaEdgeBlend: DWORD; // Constant to use as alpha for edge blend dwReserved: DWORD; dwAlphaDestConstBitDepth: DWORD; // Bit depth used to specify alpha constant for destination case Integer of 0: ( dwAlphaDestConst: DWORD; // Constant to use as alpha channel for dest dwAlphaSrcConstBitDepth: DWORD; // Bit depth used to specify alpha constant for source dwAlphaSrcConst: DWORD; // Constant to use as alpha channel for src dckDestColorkey: TDDColorKey; // DestColorkey override dckSrcColorkey: TDDColorKey; // DestColorkey override dwDDFX: DWORD; // Overlay FX dwFlags: DWORD; // flags ); 1: ( lpDDSAlphaDest: PDirectDrawSurface; // Surface to use as alpha channel for dest filler: DWORD; lpDDSAlphaSrc: PDirectDrawSurface; // Surface to use as alpha channel for src ); end; {$EXTERNALSYM _DDOVERLAYFX} DDOVERLAYFX = _DDOVERLAYFX; {$EXTERNALSYM DDOVERLAYFX} TDDOverlayFX = _DDOVERLAYFX; (* * TDDBltBatch: BltBatch entry structure *) PDDBltBatch = ^TDDBltBatch; _DDBLTBATCH = packed record lprDest: PRect; lpDDSSrc: IDirectDrawSurface; lprSrc: PRect; dwFlags: DWORD; lpDDBltFx: TDDBltFX; end; {$EXTERNALSYM _DDBLTBATCH} DDBLTBATCH = _DDBLTBATCH; {$EXTERNALSYM DDBLTBATCH} TDDBltBatch = _DDBLTBATCH; (* * TDDGammaRamp *) PDDGammaRamp = ^TDDGammaRamp; _DDGAMMARAMP = packed record red : array[0..255] of WORD; green : array[0..255] of WORD; blue : array[0..255] of WORD; end; {$EXTERNALSYM _DDGAMMARAMP} DDGAMMARAMP = _DDGAMMARAMP; {$EXTERNALSYM DDGAMMARAMP} TDDGammaRamp = _DDGAMMARAMP; (* * This is the structure within which DirectDraw returns data about the current graphics driver and chipset *) PDDDeviceIdentifier = ^TDDDeviceIdentifier; tagDDDEVICEIDENTIFIER = packed record // // These elements are for presentation to the user only. They should not be used to identify particular // drivers, since this is unreliable and many different strings may be associated with the same // device, and the same driver from different vendors. // szDriver: array[0..MAX_DDDEVICEID_STRING-1] of Char; szDescription: array[0..MAX_DDDEVICEID_STRING-1] of Char; // // This element is the version of the DirectDraw/3D driver. It is legal to do <, > comparisons // on the whole 64 bits. Caution should be exercised if you use this element to identify problematic // drivers. It is recommended that guidDeviceIdentifier is used for this purpose. // // This version has the form: // wProduct = HIWORD(liDriverVersion.HighPart) // wVersion = LOWORD(liDriverVersion.HighPart) // wSubVersion = HIWORD(liDriverVersion.LowPart) // wBuild = LOWORD(liDriverVersion.LowPart) // liDriverVersion: TLargeInteger; // Defined for applications and other 32 bit components // // These elements can be used to identify particular chipsets. Use with extreme caution. // dwVendorId Identifies the manufacturer. May be zero if unknown. // dwDeviceId Identifies the type of chipset. May be zero if unknown. // dwSubSysId Identifies the subsystem, typically this means the particular board. May be zero if unknown. // dwRevision Identifies the revision level of the chipset. May be zero if unknown. // dwVendorId: DWORD; dwDeviceId: DWORD; dwSubSysId: DWORD; dwRevision: DWORD; // // This element can be used to check changes in driver/chipset. This GUID is a unique identifier for the // driver/chipset pair. Use this element if you wish to track changes to the driver/chipset in order to // reprofile the graphics subsystem. // This element can also be used to identify particular problematic drivers. // guidDeviceIdentifier: TGUID; end; {$EXTERNALSYM tagDDDEVICEIDENTIFIER} DDDEVICEIDENTIFIER = tagDDDEVICEIDENTIFIER; {$EXTERNALSYM DDDEVICEIDENTIFIER} TDDDeviceIdentifier = tagDDDEVICEIDENTIFIER; PDDDeviceIdentifier2 = ^TDDDeviceIdentifier2; tagDDDEVICEIDENTIFIER2 = packed record // // These elements are for presentation to the user only. They should not be used to identify particular // drivers, since this is unreliable and many different strings may be associated with the same // device, and the same driver from different vendors. // szDriver: array[0..MAX_DDDEVICEID_STRING-1] of Char; szDescription: array[0..MAX_DDDEVICEID_STRING-1] of Char; // // This element is the version of the DirectDraw/3D driver. It is legal to do <, > comparisons // on the whole 64 bits. Caution should be exercised if you use this element to identify problematic // drivers. It is recommended that guidDeviceIdentifier is used for this purpose. // // This version has the form: // wProduct = HIWORD(liDriverVersion.HighPart) // wVersion = LOWORD(liDriverVersion.HighPart) // wSubVersion = HIWORD(liDriverVersion.LowPart) // wBuild = LOWORD(liDriverVersion.LowPart) // liDriverVersion: TLargeInteger; // Defined for applications and other 32 bit components // // These elements can be used to identify particular chipsets. Use with extreme caution. // dwVendorId Identifies the manufacturer. May be zero if unknown. // dwDeviceId Identifies the type of chipset. May be zero if unknown. // dwSubSysId Identifies the subsystem, typically this means the particular board. May be zero if unknown. // dwRevision Identifies the revision level of the chipset. May be zero if unknown. // dwVendorId: DWORD; dwDeviceId: DWORD; dwSubSysId: DWORD; dwRevision: DWORD; // // This element can be used to check changes in driver/chipset. This GUID is a unique identifier for the // driver/chipset pair. Use this element if you wish to track changes to the driver/chipset in order to // reprofile the graphics subsystem. // This element can also be used to identify particular problematic drivers. // guidDeviceIdentifier: TGUID; (* * This element is used to determine the Windows Hardware Quality Lab (WHQL) * certification level for this driver/device pair. *) dwWHQLLevel: DWORD; end; {$EXTERNALSYM tagDDDEVICEIDENTIFIER2} DDDEVICEIDENTIFIER2 = tagDDDEVICEIDENTIFIER2; {$EXTERNALSYM DDDEVICEIDENTIFIER2} TDDDeviceIdentifier2 = tagDDDEVICEIDENTIFIER2; (* * callbacks *) TClipperCallback = function(lpDDClipper: IDirectDrawClipper; hWnd: HWND; Code: DWORD; lpContext: Pointer): HResult; stdcall; {$NODEFINE TClipperCallback} {$HPPEMIT 'typedef LPCLIPPERCALLBACK TClipperCallback;'} TSurfacesStreamingCallback = function(arg: DWORD): HResult; stdcall; {$NODEFINE TSurfacesStreamingCallback} (* * TDDSurfaceDesc *) PDDSurfaceDesc = ^TDDSurfaceDesc; _DDSURFACEDESC = packed record dwSize: DWORD; // size of the TDDSurfaceDesc structure dwFlags: DWORD; // determines what fields are valid dwHeight: DWORD; // height of surface to be created dwWidth: DWORD; // width of input surface case Integer of 0: ( dwLinearSize: DWORD; // unused at the moment ); 1: ( lPitch: Longint; // distance to start of next line (return value only) dwBackBufferCount: DWORD; // number of back buffers requested case Integer of 0: ( dwMipMapCount: DWORD; // number of mip-map levels requested dwAlphaBitDepth: DWORD; // depth of alpha buffer requested dwReserved: DWORD; // reserved lpSurface: Pointer; // pointer to the associated surface memory ddckCKDestOverlay: TDDColorKey; // color key for destination overlay use ddckCKDestBlt: TDDColorKey; // color key for destination blt use ddckCKSrcOverlay: TDDColorKey; // color key for source overlay use ddckCKSrcBlt: TDDColorKey; // color key for source blt use ddpfPixelFormat: TDDPixelFormat; // pixel format description of the surface ddsCaps: TDDSCaps; // direct draw surface capabilities ); 1: ( dwZBufferBitDepth: DWORD; // depth of Z buffer requested ); 2: ( dwRefreshRate: DWORD; // refresh rate (used when display mode is described) ); ); end; {$EXTERNALSYM _DDSURFACEDESC} DDSURFACEDESC = _DDSURFACEDESC; {$EXTERNALSYM DDSURFACEDESC} TDDSurfaceDesc = _DDSURFACEDESC; // These definitions are for compatibility with Erik Unger original conversion PDDSurfaceDesc_DX5 = PDDSurfaceDesc; TDDSurfaceDesc_DX5 = TDDSurfaceDesc; PDDSurfaceDesc_DX6 = PDDSurfaceDesc; TDDSurfaceDesc_DX6 = TDDSurfaceDesc; (* * TDDSurfaceDesc2 *) PDDSurfaceDesc2 = ^TDDSurfaceDesc2; _DDSURFACEDESC2 = packed record dwSize: DWORD; // size of the TDDSurfaceDesc structure dwFlags: DWORD; // determines what fields are valid dwHeight: DWORD; // height of surface to be created dwWidth: DWORD; // width of input surface case Integer of 0: ( lPitch : Longint; // distance to start of next line (return value only) ); 1: ( dwLinearSize : DWORD; // Formless late-allocated optimized surface size dwBackBufferCount: DWORD; // number of back buffers requested case Integer of 0: ( dwMipMapCount: DWORD; // number of mip-map levels requested dwAlphaBitDepth: DWORD; // depth of alpha buffer requested dwReserved: DWORD; // reserved lpSurface: Pointer; // pointer to the associated surface memory ddckCKDestOverlay: TDDColorKey; // color key for destination overlay use ddckCKDestBlt: TDDColorKey; // color key for destination blt use ddckCKSrcOverlay: TDDColorKey; // color key for source overlay use ddckCKSrcBlt: TDDColorKey; // color key for source blt use ddpfPixelFormat: TDDPixelFormat; // pixel format description of the surface ddsCaps: TDDSCaps2; // direct draw surface capabilities dwTextureStage: DWORD; // stage in multitexture cascade ); 1: ( dwRefreshRate: DWORD; // refresh rate (used when display mode is described) ); ); end; {$EXTERNALSYM _DDSURFACEDESC2} DDSURFACEDESC2 = _DDSURFACEDESC2; {$EXTERNALSYM DDSURFACEDESC2} TDDSurfaceDesc2 = _DDSURFACEDESC2; (* * TDDOptSurfaceDesc *) PDDOptSurfaceDesc = ^TDDOptSurfaceDesc; _DDOPTSURFACEDESC = packed record dwSize : DWORD; // size of the DDOPTSURFACEDESC structure dwFlags : DWORD; // determines what fields are valid ddSCaps : TDDSCaps2; // Common caps like: Memory type ddOSCaps : TDDOSCaps; // Common caps like: Memory type guid : TGUID; // Compression technique GUID dwCompressionRatio : DWORD; // Compression ratio end; {$EXTERNALSYM _DDOPTSURFACEDESC} DDOPTSURFACEDESC = _DDOPTSURFACEDESC; {$EXTERNALSYM DDOPTSURFACEDESC} TDDOptSurfaceDesc = _DDOPTSURFACEDESC; (* * DDCOLORCONTROL *) PDDColorControl = ^TDDColorControl; _DDCOLORCONTROL = packed record dwSize: DWORD; dwFlags: DWORD; lBrightness: Longint; lContrast: Longint; lHue: Longint; lSaturation: Longint; lSharpness: Longint; lGamma: Longint; lColorEnable: Longint; dwReserved1: DWORD; end; {$EXTERNALSYM _DDCOLORCONTROL} DDCOLORCONTROL = _DDCOLORCONTROL; {$EXTERNALSYM DDCOLORCONTROL} TDDColorControl = _DDCOLORCONTROL; (* * callbacks *) //{$IFNDEF WINNT} TDDEnumModesCallback = function (const lpDDSurfaceDesc: TDDSurfaceDesc; lpContext: Pointer): HResult; stdcall; {$NODEFINE TDDEnumModesCallback} {$HPPEMIT 'typedef LPCLIPPERCALLBACK TDDEnumModesCallback;'} TDDEnumModesCallback2 = function (const lpDDSurfaceDesc: TDDSurfaceDesc2; lpContext: Pointer): HResult; stdcall; {$NODEFINE TDDEnumModesCallback2} {$HPPEMIT 'typedef LPDDENUMMODESCALLBACK2 TDDEnumModesCallback2;'} TDDEnumSurfacesCallback = function (lpDDSurface: IDirectDrawSurface; const lpDDSurfaceDesc: TDDSurfaceDesc; lpContext: Pointer): HResult; stdcall; {$NODEFINE TDDEnumSurfacesCallback} {$HPPEMIT 'typedef LPDDENUMSURFACESCALLBACK TDDEnumSurfacesCallback;'} TDDEnumSurfacesCallback2 = function (lpDDSurface: IDirectDrawSurface4; const lpDDSurfaceDesc: TDDSurfaceDesc2; lpContext: Pointer): HResult; stdcall; {$NODEFINE TDDEnumSurfacesCallback2} {$HPPEMIT 'typedef LPDDENUMSURFACESCALLBACK2 TDDEnumSurfacesCallback2;'} TDDEnumSurfacesCallback7 = function (lpDDSurface: IDirectDrawSurface7; const lpDDSurfaceDesc: TDDSurfaceDesc2; lpContext: Pointer): HResult; stdcall; {$NODEFINE TDDEnumSurfacesCallback7} {$HPPEMIT 'typedef LPDDENUMSURFACESCALLBACK7 TDDEnumSurfacesCallback7;'} //{$ENDIF} (* * INTERACES FOLLOW: * IDirectDraw * IDirectDrawClipper * IDirectDrawPalette * IDirectDrawSurface *) (* * IDirectDraw *) IDirectDraw = interface(IUnknown) ['{6C14DB80-A733-11CE-A521-0020AF0BE560}'] (*** IDirectDraw methods ***) function Compact: HResult; stdcall; function CreateClipper(dwFlags: DWORD; out lplpDDClipper: IDirectDrawClipper; pUnkOuter: IUnknown): HResult; stdcall; function CreatePalette(dwFlags: DWORD; lpColorTable: Pointer; out lplpDDPalette: IDirectDrawPalette; pUnkOuter: IUnknown): HResult; stdcall; function CreateSurface(var lpDDSurfaceDesc: TDDSurfaceDesc; out lplpDDSurface: IDirectDrawSurface; pUnkOuter: IUnknown): HResult; stdcall; function DuplicateSurface(lpDDSurface: IDirectDrawSurface; out lplpDupDDSurface: IDirectDrawSurface): HResult; stdcall; function EnumDisplayModes(dwFlags: DWORD; lpDDSurfaceDesc: PDDSurfaceDesc; lpContext: Pointer; lpEnumModesCallback: TDDEnumModesCallback): HResult; stdcall; function EnumSurfaces(dwFlags: DWORD; const lpDDSD: TDDSurfaceDesc; lpContext: Pointer; lpEnumCallback: TDDEnumSurfacesCallback) : HResult; stdcall; function FlipToGDISurface: HResult; stdcall; function GetCaps(lpDDDriverCaps: PDDCaps; lpDDHELCaps: PDDCaps): HResult; stdcall; function GetDisplayMode(out lpDDSurfaceDesc: TDDSurfaceDesc): HResult; stdcall; function GetFourCCCodes(var lpNumCodes: DWORD; lpCodes: PDWORD): HResult; stdcall; function GetGDISurface(out lplpGDIDDSSurface: IDirectDrawSurface): HResult; stdcall; function GetMonitorFrequency(out lpdwFrequency: DWORD): HResult; stdcall; function GetScanLine(out lpdwScanLine: DWORD): HResult; stdcall; function GetVerticalBlankStatus(out lpbIsInVB: BOOL): HResult; stdcall; function Initialize(lpGUID: PGUID): HResult; stdcall; function RestoreDisplayMode: HResult; stdcall; function SetCooperativeLevel(hWnd: HWND; dwFlags: DWORD): HResult; stdcall; (*** Warning! SetDisplayMode differs between DirectDraw 1 and DirectDraw 2 ***) function SetDisplayMode(dwWidth: DWORD; dwHeight: DWORD; dwBpp: DWORD): HResult; stdcall; function WaitForVerticalBlank(dwFlags: DWORD; hEvent: THandle): HResult; stdcall; end; IDirectDraw2 = interface(IUnknown) ['{B3A6F3E0-2B43-11CF-A2DE-00AA00B93356}'] (*** IDirectDraw methods ***) function Compact: HResult; stdcall; function CreateClipper(dwFlags: DWORD; out lplpDDClipper: IDirectDrawClipper; pUnkOuter: IUnknown): HResult; stdcall; function CreatePalette(dwFlags: DWORD; lpColorTable: Pointer; out lplpDDPalette: IDirectDrawPalette; pUnkOuter: IUnknown): HResult; stdcall; function CreateSurface(var lpDDSurfaceDesc: TDDSurfaceDesc; out lplpDDSurface: IDirectDrawSurface; pUnkOuter: IUnknown): HResult; stdcall; function DuplicateSurface(lpDDSurface: IDirectDrawSurface; out lplpDupDDSurface: IDirectDrawSurface): HResult; stdcall; function EnumDisplayModes(dwFlags: DWORD; lpDDSurfaceDesc: PDDSurfaceDesc; lpContext: Pointer; lpEnumModesCallback: TDDEnumModesCallback): HResult; stdcall; function EnumSurfaces(dwFlags: DWORD; var lpDDSD: TDDSurfaceDesc; lpContext: Pointer; lpEnumCallback: TDDEnumSurfacesCallback): HResult; stdcall; function FlipToGDISurface: HResult; stdcall; function GetCaps(lpDDDriverCaps: PDDCaps; lpDDHELCaps: PDDCaps): HResult; stdcall; function GetDisplayMode(out lpDDSurfaceDesc: TDDSurfaceDesc): HResult; stdcall; function GetFourCCCodes(var lpNumCodes: DWORD; lpCodes: PDWORD): HResult; stdcall; function GetGDISurface(out lplpGDIDDSSurface: IDirectDrawSurface): HResult; stdcall; function GetMonitorFrequency(out lpdwFrequency: DWORD): HResult; stdcall; function GetScanLine(out lpdwScanLine: DWORD): HResult; stdcall; function GetVerticalBlankStatus(out lpbIsInVB: BOOL): HResult; stdcall; function Initialize(lpGUID: PGUID): HResult; stdcall; function RestoreDisplayMode: HResult; stdcall; function SetCooperativeLevel(hWnd: HWND; dwFlags: DWORD): HResult; stdcall; function SetDisplayMode(dwWidth: DWORD; dwHeight: DWORD; dwBPP: DWORD; dwRefreshRate: DWORD; dwFlags: DWORD): HResult; stdcall; function WaitForVerticalBlank(dwFlags: DWORD; hEvent: THandle): HResult; stdcall; (*** Added in the v2 interface ***) function GetAvailableVidMem(var lpDDSCaps: TDDSCaps; out lpdwTotal, lpdwFree: DWORD): HResult; stdcall; end; IDirectDraw4 = interface(IUnknown) ['{9c59509a-39bd-11d1-8c4a-00c04fd930c5}'] (*** IDirectDraw methods ***) function Compact: HResult; stdcall; function CreateClipper(dwFlags: DWORD; out lplpDDClipper: IDirectDrawClipper; pUnkOuter: IUnknown): HResult; stdcall; function CreatePalette(dwFlags: DWORD; lpColorTable: Pointer; out lplpDDPalette: IDirectDrawPalette; pUnkOuter: IUnknown): HResult; stdcall; function CreateSurface(const lpDDSurfaceDesc: TDDSurfaceDesc2; out lplpDDSurface: IDirectDrawSurface4; pUnkOuter: IUnknown): HResult; stdcall; function DuplicateSurface(lpDDSurface: IDirectDrawSurface4; out lplpDupDDSurface: IDirectDrawSurface4): HResult; stdcall; function EnumDisplayModes(dwFlags: DWORD; lpDDSurfaceDesc: PDDSurfaceDesc2; lpContext: Pointer; lpEnumModesCallback: TDDEnumModesCallback2): HResult; stdcall; function EnumSurfaces(dwFlags: DWORD; const lpDDSD: TDDSurfaceDesc2; lpContext: Pointer; lpEnumCallback: TDDEnumSurfacesCallback2): HResult; stdcall; function FlipToGDISurface: HResult; stdcall; function GetCaps(lpDDDriverCaps: PDDCaps; lpDDHELCaps: PDDCaps): HResult; stdcall; function GetDisplayMode(out lpDDSurfaceDesc: TDDSurfaceDesc2): HResult; stdcall; function GetFourCCCodes(var lpNumCodes: DWORD; lpCodes: PDWORD): HResult; stdcall; function GetGDISurface(out lplpGDIDDSSurface: IDirectDrawSurface4): HResult; stdcall; function GetMonitorFrequency(out lpdwFrequency: DWORD): HResult; stdcall; function GetScanLine(out lpdwScanLine: DWORD): HResult; stdcall; function GetVerticalBlankStatus(out lpbIsInVB: BOOL): HResult; stdcall; function Initialize(lpGUID: PGUID): HResult; stdcall; function RestoreDisplayMode: HResult; stdcall; function SetCooperativeLevel(hWnd: HWND; dwFlags: DWORD): HResult; stdcall; function SetDisplayMode(dwWidth: DWORD; dwHeight: DWORD; dwBPP: DWORD; dwRefreshRate: DWORD; dwFlags: DWORD): HResult; stdcall; function WaitForVerticalBlank(dwFlags: DWORD; hEvent: THandle): HResult; stdcall; (*** Added in the v2 interface ***) function GetAvailableVidMem(const lpDDSCaps: TDDSCaps2; out lpdwTotal, lpdwFree: DWORD): HResult; stdcall; (*** Added in the V4 Interface ***) function GetSurfaceFromDC(hdc: Windows.HDC; out lpDDS4: IDirectDrawSurface4): HResult; stdcall; function RestoreAllSurfaces: HResult; stdcall; function TestCooperativeLevel: HResult; stdcall; function GetDeviceIdentifier(out lpdddi: TDDDeviceIdentifier; dwFlags: DWORD): HResult; stdcall; end; IDirectDraw7 = interface(IUnknown) ['{15e65ec0-3b9c-11d2-b92f-00609797ea5b}'] (*** IDirectDraw methods ***) function Compact: HResult; stdcall; function CreateClipper(dwFlags: DWORD; out lplpDDClipper: IDirectDrawClipper; pUnkOuter: IUnknown): HResult; stdcall; function CreatePalette(dwFlags: DWORD; lpColorTable: Pointer; out lplpDDPalette: IDirectDrawPalette; pUnkOuter: IUnknown): HResult; stdcall; function CreateSurface(const lpDDSurfaceDesc: TDDSurfaceDesc2; out lplpDDSurface: IDirectDrawSurface7; pUnkOuter: IUnknown): HResult; stdcall; function DuplicateSurface(lpDDSurface: IDirectDrawSurface7; out lplpDupDDSurface: IDirectDrawSurface7): HResult; stdcall; function EnumDisplayModes(dwFlags: DWORD; lpDDSurfaceDesc: PDDSurfaceDesc2; lpContext: Pointer; lpEnumModesCallback: TDDEnumModesCallback2): HResult; stdcall; function EnumSurfaces(dwFlags: DWORD; const lpDDSD: TDDSurfaceDesc2; lpContext: Pointer; lpEnumCallback: TDDEnumSurfacesCallback7) : HResult; stdcall; function FlipToGDISurface: HResult; stdcall; function GetCaps(lpDDDriverCaps: PDDCaps; lpDDHELCaps: PDDCaps): HResult; stdcall; function GetDisplayMode(out lpDDSurfaceDesc: TDDSurfaceDesc2): HResult; stdcall; function GetFourCCCodes(var lpNumCodes: DWORD; lpCodes: PDWORD): HResult; stdcall; function GetGDISurface(out lplpGDIDDSSurface: IDirectDrawSurface7) : HResult; stdcall; function GetMonitorFrequency(out lpdwFrequency: DWORD): HResult; stdcall; function GetScanLine(out lpdwScanLine: DWORD): HResult; stdcall; function GetVerticalBlankStatus(out lpbIsInVB: BOOL): HResult; stdcall; function Initialize(lpGUID: PGUID): HResult; stdcall; function RestoreDisplayMode: HResult; stdcall; function SetCooperativeLevel(hWnd: HWND; dwFlags: DWORD): HResult; stdcall; function SetDisplayMode(dwWidth: DWORD; dwHeight: DWORD; dwBPP: DWORD; dwRefreshRate: DWORD; dwFlags: DWORD): HResult; stdcall; function WaitForVerticalBlank(dwFlags: DWORD; hEvent: THandle) : HResult; stdcall; (*** Added in the v2 interface ***) function GetAvailableVidMem(const lpDDSCaps: TDDSCaps2; out lpdwTotal, lpdwFree: DWORD): HResult; stdcall; (*** Added in the V4 Interface ***) function GetSurfaceFromDC(hdc: Windows.HDC; out lpDDS: IDirectDrawSurface7): HResult; stdcall; function RestoreAllSurfaces: HResult; stdcall; function TestCooperativeLevel: HResult; stdcall; function GetDeviceIdentifier(out lpdddi: TDDDeviceIdentifier2; dwFlags: DWORD): HResult; stdcall; function StartModeTest(const lpModesToTest; dwNumEntries, dwFlags: DWORD): HResult; stdcall; function EvaluateMode(dwFlags: DWORD; out pSecondsUntilTimeout: DWORD): HResult; stdcall; end; (* * IDirectDrawPalette *) IDirectDrawPalette = interface(IUnknown) ['{6C14DB84-A733-11CE-A521-0020AF0BE560}'] (*** IDirectDrawPalette methods ***) function GetCaps(out lpdwCaps: DWORD): HResult; stdcall; function GetEntries(dwFlags: DWORD; dwBase: DWORD; dwNumEntries: DWORD; lpEntries: Pointer): HResult; stdcall; function Initialize(lpDD: IDirectDraw; dwFlags: DWORD; lpDDColorTable: Pointer): HResult; stdcall; function SetEntries(dwFlags: DWORD; dwStartingEntry: DWORD; dwCount: DWORD; lpEntries: Pointer): HResult; stdcall; end; (* * IDirectDrawClipper *) IDirectDrawClipper = interface(IUnknown) ['{6C14DB85-A733-11CE-A521-0020AF0BE560}'] (*** IDirectDrawClipper methods ***) function GetClipList(lpRect: PRect; lpClipList: PRgnData; var lpdwSize: DWORD): HResult; stdcall; function GetHWnd(out lphWnd: HWND): HResult; stdcall; function Initialize(lpDD: IDirectDraw; dwFlags: DWORD): HResult; stdcall; function IsClipListChanged(out lpbChanged: BOOL): HResult; stdcall; function SetClipList(lpClipList: PRgnData; dwFlags: DWORD): HResult; stdcall; function SetHWnd(dwFlags: DWORD; hWnd: HWND): HResult; stdcall; end; (* * IDirectDrawSurface and related interfaces *) IDirectDrawSurface = interface(IUnknown) ['{6C14DB81-A733-11CE-A521-0020AF0BE560}'] (*** IDirectDrawSurface methods ***) function AddAttachedSurface(lpDDSAttachedSurface: IDirectDrawSurface) : HResult; stdcall; function AddOverlayDirtyRect(const lpRect: TRect): HResult; stdcall; function Blt(lpDestRect: PRect; lpDDSrcSurface: IDirectDrawSurface; lpSrcRect: PRect; dwFlags: DWORD; lpDDBltFx: PDDBltFX): HResult; stdcall; function BltBatch(const lpDDBltBatch: TDDBltBatch; dwCount: DWORD; dwFlags: DWORD): HResult; stdcall; function BltFast(dwX: DWORD; dwY: DWORD; lpDDSrcSurface: IDirectDrawSurface; lpSrcRect: PRect; dwTrans: DWORD): HResult; stdcall; function DeleteAttachedSurface(dwFlags: DWORD; lpDDSAttachedSurface: IDirectDrawSurface): HResult; stdcall; function EnumAttachedSurfaces(lpContext: Pointer; lpEnumSurfacesCallback: TDDEnumSurfacesCallback): HResult; stdcall; function EnumOverlayZOrders(dwFlags: DWORD; lpContext: Pointer; lpfnCallback: TDDEnumSurfacesCallback): HResult; stdcall; function Flip(lpDDSurfaceTargetOverride: IDirectDrawSurface; dwFlags: DWORD): HResult; stdcall; function GetAttachedSurface(var lpDDSCaps: TDDSCaps; (*out*)var lplpDDAttachedSurface: IDirectDrawSurface): HResult; stdcall; function GetBltStatus(dwFlags: DWORD): HResult; stdcall; function GetCaps(out lpDDSCaps: TDDSCaps): HResult; stdcall; function GetClipper(out lplpDDClipper: IDirectDrawClipper): HResult; stdcall; function GetColorKey(dwFlags: DWORD; out lpDDColorKey: TDDColorKey) : HResult; stdcall; function GetDC(out lphDC: HDC): HResult; stdcall; function GetFlipStatus(dwFlags: DWORD): HResult; stdcall; function GetOverlayPosition(out lplX, lplY: Longint): HResult; stdcall; function GetPalette(out lplpDDPalette: IDirectDrawPalette): HResult; stdcall; function GetPixelFormat(out lpDDPixelFormat: TDDPixelFormat): HResult; stdcall; function GetSurfaceDesc(out lpDDSurfaceDesc: TDDSurfaceDesc): HResult; stdcall; function Initialize(lpDD: IDirectDraw; out lpDDSurfaceDesc: TDDSurfaceDesc): HResult; stdcall; function IsLost: HResult; stdcall; function Lock(lpDestRect: PRect; out lpDDSurfaceDesc: TDDSurfaceDesc; dwFlags: DWORD; hEvent: THandle): HResult; stdcall; function ReleaseDC(hDC: Windows.HDC): HResult; stdcall; function _Restore: HResult; stdcall; function SetClipper(lpDDClipper: IDirectDrawClipper): HResult; stdcall; function SetColorKey(dwFlags: DWORD; lpDDColorKey: PDDColorKey) : HResult; stdcall; function SetOverlayPosition(lX, lY: Longint): HResult; stdcall; function SetPalette(lpDDPalette: IDirectDrawPalette): HResult; stdcall; function Unlock(lpSurfaceData: Pointer): HResult; stdcall; function UpdateOverlay(lpSrcRect: PRect; lpDDDestSurface: IDirectDrawSurface; lpDestRect: PRect; dwFlags: DWORD; lpDDOverlayFx: PDDOverlayFX): HResult; stdcall; function UpdateOverlayDisplay(dwFlags: DWORD): HResult; stdcall; function UpdateOverlayZOrder(dwFlags: DWORD; lpDDSReference: IDirectDrawSurface): HResult; stdcall; end; (* * IDirectDrawSurface2 and related interfaces *) IDirectDrawSurface2 = interface(IUnknown) ['{57805885-6eec-11cf-9441-a82303c10e27}'] (*** IDirectDrawSurface methods ***) function AddAttachedSurface(lpDDSAttachedSurface: IDirectDrawSurface2) : HResult; stdcall; function AddOverlayDirtyRect(const lpRect: TRect): HResult; stdcall; function Blt(lpDestRect: PRect; lpDDSrcSurface: IDirectDrawSurface2; lpSrcRect: PRect; dwFlags: DWORD; lpDDBltFx: PDDBltFX): HResult; stdcall; function BltBatch(const lpDDBltBatch: TDDBltBatch; dwCount: DWORD; dwFlags: DWORD): HResult; stdcall; function BltFast(dwX: DWORD; dwY: DWORD; lpDDSrcSurface: IDirectDrawSurface2; lpSrcRect: PRect; dwTrans: DWORD): HResult; stdcall; function DeleteAttachedSurface(dwFlags: DWORD; lpDDSAttachedSurface: IDirectDrawSurface2): HResult; stdcall; function EnumAttachedSurfaces(lpContext: Pointer; lpEnumSurfacesCallback: TDDEnumSurfacesCallback): HResult; stdcall; function EnumOverlayZOrders(dwFlags: DWORD; lpContext: Pointer; lpfnCallback: TDDEnumSurfacesCallback): HResult; stdcall; function Flip(lpDDSurfaceTargetOverride: IDirectDrawSurface2; dwFlags: DWORD): HResult; stdcall; function GetAttachedSurface(var lpDDSCaps: TDDSCaps; out lplpDDAttachedSurface: IDirectDrawSurface2): HResult; stdcall; function GetBltStatus(dwFlags: DWORD): HResult; stdcall; function GetCaps(out lpDDSCaps: TDDSCaps): HResult; stdcall; function GetClipper(out lplpDDClipper: IDirectDrawClipper): HResult; stdcall; function GetColorKey(dwFlags: DWORD; out lpDDColorKey: TDDColorKey) : HResult; stdcall; function GetDC(out lphDC: HDC): HResult; stdcall; function GetFlipStatus(dwFlags: DWORD): HResult; stdcall; function GetOverlayPosition(out lplX, lplY: Longint): HResult; stdcall; function GetPalette(out lplpDDPalette: IDirectDrawPalette): HResult; stdcall; function GetPixelFormat(out lpDDPixelFormat: TDDPixelFormat): HResult; stdcall; function GetSurfaceDesc(out lpDDSurfaceDesc: TDDSurfaceDesc): HResult; stdcall; function Initialize(lpDD: IDirectDraw; out lpDDSurfaceDesc: TDDSurfaceDesc): HResult; stdcall; function IsLost: HResult; stdcall; function Lock(lpDestRect: PRect; out lpDDSurfaceDesc: TDDSurfaceDesc; dwFlags: DWORD; hEvent: THandle): HResult; stdcall; function ReleaseDC(hDC: Windows.HDC): HResult; stdcall; function _Restore: HResult; stdcall; function SetClipper(lpDDClipper: IDirectDrawClipper): HResult; stdcall; function SetColorKey(dwFlags: DWORD; lpDDColorKey: PDDColorKey) : HResult; stdcall; function SetOverlayPosition(lX, lY: Longint): HResult; stdcall; function SetPalette(lpDDPalette: IDirectDrawPalette): HResult; stdcall; function Unlock(lpSurfaceData: Pointer): HResult; stdcall; function UpdateOverlay(lpSrcRect: PRect; lpDDDestSurface: IDirectDrawSurface2; lpDestRect: PRect; dwFlags: DWORD; lpDDOverlayFx: PDDOverlayFX): HResult; stdcall; function UpdateOverlayDisplay(dwFlags: DWORD): HResult; stdcall; function UpdateOverlayZOrder(dwFlags: DWORD; lpDDSReference: IDirectDrawSurface2): HResult; stdcall; (*** Added in the v2 interface ***) function GetDDInterface(var lplpDD: IDirectDraw): HResult; stdcall; function PageLock(dwFlags: DWORD): HResult; stdcall; function PageUnlock(dwFlags: DWORD): HResult; stdcall; end; IDirectDrawSurface3 = interface(IUnknown) ['{DA044E00-69B2-11D0-A1D5-00AA00B8DFBB}'] (*** IDirectDrawSurface methods ***) function AddAttachedSurface(lpDDSAttachedSurface: IDirectDrawSurface3) : HResult; stdcall; function AddOverlayDirtyRect(const lpRect: TRect): HResult; stdcall; function Blt(lpDestRect: PRect; lpDDSrcSurface: IDirectDrawSurface3; lpSrcRect: PRect; dwFlags: DWORD; lpDDBltFx: PDDBltFX): HResult; stdcall; function BltBatch(const lpDDBltBatch: TDDBltBatch; dwCount: DWORD; dwFlags: DWORD): HResult; stdcall; function BltFast(dwX: DWORD; dwY: DWORD; lpDDSrcSurface: IDirectDrawSurface3; lpSrcRect: PRect; dwTrans: DWORD): HResult; stdcall; function DeleteAttachedSurface(dwFlags: DWORD; lpDDSAttachedSurface: IDirectDrawSurface3): HResult; stdcall; function EnumAttachedSurfaces(lpContext: Pointer; lpEnumSurfacesCallback: TDDEnumSurfacesCallback): HResult; stdcall; function EnumOverlayZOrders(dwFlags: DWORD; lpContext: Pointer; lpfnCallback: TDDEnumSurfacesCallback): HResult; stdcall; function Flip(lpDDSurfaceTargetOverride: IDirectDrawSurface3; dwFlags: DWORD): HResult; stdcall; function GetAttachedSurface(var lpDDSCaps: TDDSCaps; out lplpDDAttachedSurface: IDirectDrawSurface3): HResult; stdcall; function GetBltStatus(dwFlags: DWORD): HResult; stdcall; function GetCaps(out lpDDSCaps: TDDSCaps): HResult; stdcall; function GetClipper(out lplpDDClipper: IDirectDrawClipper): HResult; stdcall; function GetColorKey(dwFlags: DWORD; out lpDDColorKey: TDDColorKey) : HResult; stdcall; function GetDC(out lphDC: HDC): HResult; stdcall; function GetFlipStatus(dwFlags: DWORD): HResult; stdcall; function GetOverlayPosition(out lplX, lplY: Longint): HResult; stdcall; function GetPalette(out lplpDDPalette: IDirectDrawPalette): HResult; stdcall; function GetPixelFormat(out lpDDPixelFormat: TDDPixelFormat): HResult; stdcall; function GetSurfaceDesc(out lpDDSurfaceDesc: TDDSurfaceDesc): HResult; stdcall; function Initialize(lpDD: IDirectDraw; out lpDDSurfaceDesc: TDDSurfaceDesc): HResult; stdcall; function IsLost: HResult; stdcall; function Lock(lpDestRect: PRect; out lpDDSurfaceDesc: TDDSurfaceDesc; dwFlags: DWORD; hEvent: THandle): HResult; stdcall; function ReleaseDC(hDC: Windows.HDC): HResult; stdcall; function _Restore: HResult; stdcall; function SetClipper(lpDDClipper: IDirectDrawClipper): HResult; stdcall; function SetColorKey(dwFlags: DWORD; lpDDColorKey: PDDColorKey) : HResult; stdcall; function SetOverlayPosition(lX, lY: Longint): HResult; stdcall; function SetPalette(lpDDPalette: IDirectDrawPalette): HResult; stdcall; function Unlock(lpSurfaceData: Pointer): HResult; stdcall; function UpdateOverlay(lpSrcRect: PRect; lpDDDestSurface: IDirectDrawSurface3; lpDestRect: PRect; dwFlags: DWORD; lpDDOverlayFx: PDDOverlayFX): HResult; stdcall; function UpdateOverlayDisplay(dwFlags: DWORD): HResult; stdcall; function UpdateOverlayZOrder(dwFlags: DWORD; lpDDSReference: IDirectDrawSurface3): HResult; stdcall; (*** Added in the v2 interface ***) function GetDDInterface(out lplpDD: IDirectDraw): HResult; stdcall; function PageLock(dwFlags: DWORD): HResult; stdcall; function PageUnlock(dwFlags: DWORD): HResult; stdcall; (*** Added in the V3 interface ***) function SetSurfaceDesc(const lpddsd: TDDSurfaceDesc; dwFlags: DWORD): HResult; stdcall; end; (* * IDirectDrawSurface4 and related interfaces *) IDirectDrawSurface4 = interface(IUnknown) ['{0B2B8630-AD35-11D0-8EA6-00609797EA5B}'] (*** IDirectDrawSurface methods ***) function AddAttachedSurface(lpDDSAttachedSurface: IDirectDrawSurface4) : HResult; stdcall; function AddOverlayDirtyRect(const lpRect: TRect): HResult; stdcall; function Blt(lpDestRect: PRect; lpDDSrcSurface: IDirectDrawSurface4; lpSrcRect: PRect; dwFlags: DWORD; lpDDBltFx: PDDBltFX): HResult; stdcall; function BltBatch(const lpDDBltBatch: TDDBltBatch; dwCount: DWORD; dwFlags: DWORD): HResult; stdcall; function BltFast(dwX: DWORD; dwY: DWORD; lpDDSrcSurface: IDirectDrawSurface4; lpSrcRect: PRect; dwTrans: DWORD): HResult; stdcall; function DeleteAttachedSurface(dwFlags: DWORD; lpDDSAttachedSurface: IDirectDrawSurface4): HResult; stdcall; function EnumAttachedSurfaces(lpContext: Pointer; lpEnumSurfacesCallback: TDDEnumSurfacesCallback2): HResult; stdcall; function EnumOverlayZOrders(dwFlags: DWORD; lpContext: Pointer; lpfnCallback: TDDEnumSurfacesCallback2): HResult; stdcall; function Flip(lpDDSurfaceTargetOverride: IDirectDrawSurface4; dwFlags: DWORD): HResult; stdcall; function GetAttachedSurface(const lpDDSCaps: TDDSCaps2; out lplpDDAttachedSurface: IDirectDrawSurface4): HResult; stdcall; function GetBltStatus(dwFlags: DWORD): HResult; stdcall; function GetCaps(out lpDDSCaps: TDDSCaps2): HResult; stdcall; function GetClipper(out lplpDDClipper: IDirectDrawClipper): HResult; stdcall; function GetColorKey(dwFlags: DWORD; out lpDDColorKey: TDDColorKey) : HResult; stdcall; function GetDC(out lphDC: HDC): HResult; stdcall; function GetFlipStatus(dwFlags: DWORD): HResult; stdcall; function GetOverlayPosition(out lplX, lplY: Longint): HResult; stdcall; function GetPalette(out lplpDDPalette: IDirectDrawPalette): HResult; stdcall; function GetPixelFormat(out lpDDPixelFormat: TDDPixelFormat): HResult; stdcall; function GetSurfaceDesc(out lpDDSurfaceDesc: TDDSurfaceDesc2): HResult; stdcall; function Initialize(lpDD: IDirectDraw; out lpDDSurfaceDesc: TDDSurfaceDesc2): HResult; stdcall; function IsLost: HResult; stdcall; function Lock(lpDestRect: PRect; out lpDDSurfaceDesc: TDDSurfaceDesc2; dwFlags: DWORD; hEvent: THandle): HResult; stdcall; function ReleaseDC(hDC: Windows.HDC): HResult; stdcall; function _Restore: HResult; stdcall; function SetClipper(lpDDClipper: IDirectDrawClipper): HResult; stdcall; function SetColorKey(dwFlags: DWORD; lpDDColorKey: PDDColorKey) : HResult; stdcall; function SetOverlayPosition(lX, lY: Longint): HResult; stdcall; function SetPalette(lpDDPalette: IDirectDrawPalette): HResult; stdcall; function Unlock(lpRect: PRect): HResult; stdcall; function UpdateOverlay(lpSrcRect: PRect; lpDDDestSurface: IDirectDrawSurface4; lpDestRect: PRect; dwFlags: DWORD; lpDDOverlayFx: PDDOverlayFX): HResult; stdcall; function UpdateOverlayDisplay(dwFlags: DWORD): HResult; stdcall; function UpdateOverlayZOrder(dwFlags: DWORD; lpDDSReference: IDirectDrawSurface4): HResult; stdcall; (*** Added in the v2 interface ***) function GetDDInterface(out lplpDD: IUnknown): HResult; stdcall; function PageLock(dwFlags: DWORD): HResult; stdcall; function PageUnlock(dwFlags: DWORD): HResult; stdcall; (*** Added in the V3 interface ***) function SetSurfaceDesc(const lpddsd2: TDDSurfaceDesc2; dwFlags: DWORD): HResult; stdcall; (*** Added in the v4 interface ***) function SetPrivateData(const guidTag: TGUID; lpData: Pointer; cbSize: DWORD; dwFlags: DWORD): HResult; stdcall; function GetPrivateData(const guidTag: TGUID; lpBuffer: Pointer; var lpcbBufferSize: DWORD): HResult; stdcall; function FreePrivateData(const guidTag: TGUID): HResult; stdcall; function GetUniquenessValue(out lpValue: DWORD): HResult; stdcall; function ChangeUniquenessValue: HResult; stdcall; end; IDirectDrawSurface7 = interface(IUnknown) ['{06675a80-3b9b-11d2-b92f-00609797ea5b}'] (*** IDirectDrawSurface methods ***) function AddAttachedSurface(lpDDSAttachedSurface: IDirectDrawSurface7) : HResult; stdcall; function AddOverlayDirtyRect(const lpRect: TRect): HResult; stdcall; function Blt(lpDestRect: PRect; lpDDSrcSurface: IDirectDrawSurface7; lpSrcRect: PRect; dwFlags: DWORD; lpDDBltFx: PDDBltFX): HResult; stdcall; function BltBatch(const lpDDBltBatch: TDDBltBatch; dwCount: DWORD; dwFlags: DWORD): HResult; stdcall; function BltFast(dwX: DWORD; dwY: DWORD; lpDDSrcSurface: IDirectDrawSurface7; lpSrcRect: PRect; dwTrans: DWORD): HResult; stdcall; function DeleteAttachedSurface(dwFlags: DWORD; lpDDSAttachedSurface: IDirectDrawSurface7): HResult; stdcall; function EnumAttachedSurfaces(lpContext: Pointer; lpEnumSurfacesCallback: TDDEnumSurfacesCallback7): HResult; stdcall; function EnumOverlayZOrders(dwFlags: DWORD; lpContext: Pointer; lpfnCallback: TDDEnumSurfacesCallback7): HResult; stdcall; function Flip(lpDDSurfaceTargetOverride: IDirectDrawSurface7; dwFlags: DWORD): HResult; stdcall; function GetAttachedSurface(const lpDDSCaps: TDDSCaps2; out lplpDDAttachedSurface: IDirectDrawSurface7): HResult; stdcall; function GetBltStatus(dwFlags: DWORD): HResult; stdcall; function GetCaps(out lpDDSCaps: TDDSCaps2): HResult; stdcall; function GetClipper(out lplpDDClipper: IDirectDrawClipper): HResult; stdcall; function GetColorKey(dwFlags: DWORD; out lpDDColorKey: TDDColorKey) : HResult; stdcall; function GetDC(out lphDC: HDC): HResult; stdcall; function GetFlipStatus(dwFlags: DWORD): HResult; stdcall; function GetOverlayPosition(out lplX, lplY: Longint): HResult; stdcall; function GetPalette(out lplpDDPalette: IDirectDrawPalette): HResult; stdcall; function GetPixelFormat(out lpDDPixelFormat: TDDPixelFormat): HResult; stdcall; function GetSurfaceDesc(out lpDDSurfaceDesc: TDDSurfaceDesc2): HResult; stdcall; function Initialize(lpDD: IDirectDraw; out lpDDSurfaceDesc: TDDSurfaceDesc2): HResult; stdcall; function IsLost: HResult; stdcall; function Lock(lpDestRect: PRect; out lpDDSurfaceDesc: TDDSurfaceDesc2; dwFlags: DWORD; hEvent: THandle): HResult; stdcall; function ReleaseDC(hDC: Windows.HDC): HResult; stdcall; function _Restore: HResult; stdcall; function SetClipper(lpDDClipper: IDirectDrawClipper): HResult; stdcall; function SetColorKey(dwFlags: DWORD; lpDDColorKey: PDDColorKey) : HResult; stdcall; function SetOverlayPosition(lX, lY: Longint): HResult; stdcall; function SetPalette(lpDDPalette: IDirectDrawPalette): HResult; stdcall; function Unlock(lpRect: PRect): HResult; stdcall; function UpdateOverlay(lpSrcRect: PRect; lpDDDestSurface: IDirectDrawSurface7; lpDestRect: PRect; dwFlags: DWORD; lpDDOverlayFx: PDDOverlayFX): HResult; stdcall; function UpdateOverlayDisplay(dwFlags: DWORD): HResult; stdcall; function UpdateOverlayZOrder(dwFlags: DWORD; lpDDSReference: IDirectDrawSurface7): HResult; stdcall; (*** Added in the v2 interface ***) function GetDDInterface(out lplpDD: IUnknown): HResult; stdcall; function PageLock(dwFlags: DWORD): HResult; stdcall; function PageUnlock(dwFlags: DWORD): HResult; stdcall; (*** Added in the V3 interface ***) function SetSurfaceDesc(const lpddsd2: TDDSurfaceDesc2; dwFlags: DWORD): HResult; stdcall; (*** Added in the v4 interface ***) function SetPrivateData(const guidTag: TGUID; lpData: Pointer; cbSize: DWORD; dwFlags: DWORD): HResult; stdcall; function GetPrivateData(const guidTag: TGUID; lpBuffer: Pointer; var lpcbBufferSize: DWORD): HResult; stdcall; function FreePrivateData(const guidTag: TGUID): HResult; stdcall; function GetUniquenessValue(out lpValue: DWORD): HResult; stdcall; function ChangeUniquenessValue: HResult; stdcall; (*** Moved Texture7 methods here ***) function SetPriority(dwPriority: DWORD): HResult; stdcall; function GetPriority(out lpdwPriority: DWORD): HResult; stdcall; function SetLOD(dwMaxLOD: DWORD): HResult; stdcall; function GetLOD(out lpdwMaxLOD: DWORD): HResult; stdcall; end; IDirectDrawColorControl = interface(IUnknown) ['{4B9F0EE0-0D7E-11D0-9B06-00A0C903A3B8}'] function GetColorControls(out lpColorControl: TDDColorControl): HResult; stdcall; function SetColorControls(const lpColorControl: TDDColorControl): HResult; stdcall; end; (* * IDirectDrawGammaControl *) IDirectDrawGammaControl = interface(IUnknown) ['{69C11C3E-B46B-11D1-AD7A-00C04FC29B4E}'] function GetGammaRamp(dwFlags: DWORD; out lpRampData: TDDGammaRamp): HResult; stdcall; function SetGammaRamp(dwFlags: DWORD; const lpRampData: TDDGammaRamp): HResult; stdcall; end; type IID_IDirectDraw = IDirectDraw; {$EXTERNALSYM IID_IDirectDraw} IID_IDirectDraw2 = IDirectDraw2; {$EXTERNALSYM IID_IDirectDraw2} IID_IDirectDraw4 = IDirectDraw4; {$EXTERNALSYM IID_IDirectDraw4} IID_IDirectDraw7 = IDirectDraw7; {$EXTERNALSYM IID_IDirectDraw7} IID_IDirectDrawSurface = IDirectDrawSurface; {$EXTERNALSYM IID_IDirectDrawSurface} IID_IDirectDrawSurface2 = IDirectDrawSurface2; {$EXTERNALSYM IID_IDirectDrawSurface2} IID_IDirectDrawSurface3 = IDirectDrawSurface3; {$EXTERNALSYM IID_IDirectDrawSurface3} IID_IDirectDrawSurface4 = IDirectDrawSurface4; {$EXTERNALSYM IID_IDirectDrawSurface4} IID_IDirectDrawSurface7 = IDirectDrawSurface7; {$EXTERNALSYM IID_IDirectDrawSurface7} IID_IDirectDrawPalette = IDirectDrawPalette; {$EXTERNALSYM IID_IDirectDrawPalette} IID_IDirectDrawClipper = IDirectDrawClipper; {$EXTERNALSYM IID_IDirectDrawClipper} IID_IDirectDrawColorControl = IDirectDrawColorControl; {$EXTERNALSYM IID_IDirectDrawColorControl} IID_IDirectDrawGammaControl = IDirectDrawGammaControl; {$EXTERNALSYM IID_IDirectDrawGammaControl} const (* * ddsCaps field is valid. *) DDSD_CAPS = $00000001; // default {$EXTERNALSYM DDSD_CAPS} (* * dwHeight field is valid. *) DDSD_HEIGHT = $00000002; {$EXTERNALSYM DDSD_HEIGHT} (* * dwWidth field is valid. *) DDSD_WIDTH = $00000004; {$EXTERNALSYM DDSD_WIDTH} (* * lPitch is valid. *) DDSD_PITCH = $00000008; {$EXTERNALSYM DDSD_PITCH} (* * dwBackBufferCount is valid. *) DDSD_BACKBUFFERCOUNT = $00000020; {$EXTERNALSYM DDSD_BACKBUFFERCOUNT} (* * dwZBufferBitDepth is valid. (shouldnt be used in DDSURFACEDESC2) *) DDSD_ZBUFFERBITDEPTH = $00000040; {$EXTERNALSYM DDSD_ZBUFFERBITDEPTH} (* * dwAlphaBitDepth is valid. *) DDSD_ALPHABITDEPTH = $00000080; {$EXTERNALSYM DDSD_ALPHABITDEPTH} (* * lpSurface is valid. *) DDSD_LPSURFACE = $00000800; {$EXTERNALSYM DDSD_LPSURFACE} (* * ddpfPixelFormat is valid. *) DDSD_PIXELFORMAT = $00001000; {$EXTERNALSYM DDSD_PIXELFORMAT} (* * ddckCKDestOverlay is valid. *) DDSD_CKDESTOVERLAY = $00002000; {$EXTERNALSYM DDSD_CKDESTOVERLAY} (* * ddckCKDestBlt is valid. *) DDSD_CKDESTBLT = $00004000; {$EXTERNALSYM DDSD_CKDESTBLT} (* * ddckCKSrcOverlay is valid. *) DDSD_CKSRCOVERLAY = $00008000; {$EXTERNALSYM DDSD_CKSRCOVERLAY} (* * ddckCKSrcBlt is valid. *) DDSD_CKSRCBLT = $00010000; {$EXTERNALSYM DDSD_CKSRCBLT} (* * dwMipMapCount is valid. *) DDSD_MIPMAPCOUNT = $00020000; {$EXTERNALSYM DDSD_MIPMAPCOUNT} (* * dwRefreshRate is valid *) DDSD_REFRESHRATE = $00040000; {$EXTERNALSYM DDSD_REFRESHRATE} (* * dwLinearSize is valid *) DDSD_LINEARSIZE = $00080000; {$EXTERNALSYM DDSD_LINEARSIZE} (* * dwTextureStage is valid *) DDSD_TEXTURESTAGE = $00100000; {$EXTERNALSYM DDSD_TEXTURESTAGE} (* * dwFVF is valid *) DDSD_FVF = $00200000; {$EXTERNALSYM DDSD_FVF} (* * dwSrcVBHandle is valid *) DDSD_SRCVBHANDLE = $00400000; {$EXTERNALSYM DDSD_SRCVBHANDLE} (* * dwDepth is valid *) DDSD_DEPTH = $00800000; {$EXTERNALSYM DDSD_DEPTH} (* * All input fields are valid. *) DDSD_ALL = $00fff9ee; {$EXTERNALSYM DDSD_ALL} (* * guid field is valid. *) DDOSD_GUID = $00000001; {$EXTERNALSYM DDOSD_GUID} (* * dwCompressionRatio field is valid. *) DDOSD_COMPRESSION_RATIO = $00000002; {$EXTERNALSYM DDOSD_COMPRESSION_RATIO} (* * ddSCaps field is valid. *) DDOSD_SCAPS = $00000004; {$EXTERNALSYM DDOSD_SCAPS} (* * ddOSCaps field is valid. *) DDOSD_OSCAPS = $00000008; {$EXTERNALSYM DDOSD_OSCAPS} (* * All input fields are valid. *) DDOSD_ALL = $0000000f; {$EXTERNALSYM DDOSD_ALL} (* * The surface's optimized pixelformat is compressed *) DDOSDCAPS_OPTCOMPRESSED = $00000001; {$EXTERNALSYM DDOSDCAPS_OPTCOMPRESSED} (* * The surface's optimized pixelformat is reordered *) DDOSDCAPS_OPTREORDERED = $00000002; {$EXTERNALSYM DDOSDCAPS_OPTREORDERED} (* * The opt surface is a monolithic mipmap *) DDOSDCAPS_MONOLITHICMIPMAP = $00000004; {$EXTERNALSYM DDOSDCAPS_MONOLITHICMIPMAP} (* * The valid Surf caps: * DDSCAPS_SYSTEMMEMORY = $00000800; * DDSCAPS_VIDEOMEMORY = $00004000; * DDSCAPS_LOCALVIDMEM = $10000000; * DDSCAPS_NONLOCALVIDMEM = $20000000; *) DDOSDCAPS_VALIDSCAPS = $30004800; {$EXTERNALSYM DDOSDCAPS_VALIDSCAPS} (* * The valid OptSurf caps *) DDOSDCAPS_VALIDOSCAPS = $00000007; {$EXTERNALSYM DDOSDCAPS_VALIDOSCAPS} (* * DDCOLORCONTROL *) (* * lBrightness field is valid. *) DDCOLOR_BRIGHTNESS = $00000001; {$EXTERNALSYM DDCOLOR_BRIGHTNESS} (* * lContrast field is valid. *) DDCOLOR_CONTRAST = $00000002; {$EXTERNALSYM DDCOLOR_CONTRAST} (* * lHue field is valid. *) DDCOLOR_HUE = $00000004; {$EXTERNALSYM DDCOLOR_HUE} (* * lSaturation field is valid. *) DDCOLOR_SATURATION = $00000008; {$EXTERNALSYM DDCOLOR_SATURATION} (* * lSharpness field is valid. *) DDCOLOR_SHARPNESS = $00000010; {$EXTERNALSYM DDCOLOR_SHARPNESS} (* * lGamma field is valid. *) DDCOLOR_GAMMA = $00000020; {$EXTERNALSYM DDCOLOR_GAMMA} (* * lColorEnable field is valid. *) DDCOLOR_COLORENABLE = $00000040; {$EXTERNALSYM DDCOLOR_COLORENABLE} (*============================================================================ * * 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 currently has no meaning. *) DDSCAPS_RESERVED1 = $00000001; {$EXTERNALSYM DDSCAPS_RESERVED1} (* * Indicates that this surface contains alpha-only information. * (To determine if a surface is RGBA/YUVA, the pixel format must be * interrogated.) *) DDSCAPS_ALPHA = $00000002; {$EXTERNALSYM DDSCAPS_ALPHA} (* * 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. *) DDSCAPS_BACKBUFFER = $00000004; {$EXTERNALSYM DDSCAPS_BACKBUFFER} (* * 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. *) DDSCAPS_COMPLEX = $00000008; {$EXTERNALSYM DDSCAPS_COMPLEX} (* * 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 * TDDSurfaceDesc 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. *) DDSCAPS_FLIP = $00000010; {$EXTERNALSYM DDSCAPS_FLIP} (* * 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. *) DDSCAPS_FRONTBUFFER = $00000020; {$EXTERNALSYM DDSCAPS_FRONTBUFFER} (* * 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. *) DDSCAPS_OFFSCREENPLAIN = $00000040; {$EXTERNALSYM DDSCAPS_OFFSCREENPLAIN} (* * 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. *) DDSCAPS_OVERLAY = $00000080; {$EXTERNALSYM DDSCAPS_OVERLAY} (* * Indicates that unique DirectDrawPalette objects can be created and * attached to this surface. *) DDSCAPS_PALETTE = $00000100; {$EXTERNALSYM DDSCAPS_PALETTE} (* * Indicates that this surface is the primary surface. The primary * surface represents what the user is seeing at the moment. *) DDSCAPS_PRIMARYSURFACE = $00000200; {$EXTERNALSYM DDSCAPS_PRIMARYSURFACE} (* * This flag used to be DDSCAPS_PRIMARYSURFACELEFT, which is now * obsolete. *) DDSCAPS_RESERVED3 = $00000400; {$EXTERNALSYM DDSCAPS_RESERVED3} DDSCAPS_PRIMARYSURFACELEFT = DDSCAPS_RESERVED3; {$EXTERNALSYM DDSCAPS_PRIMARYSURFACELEFT} (* * Indicates that this surface memory was allocated in system memory *) DDSCAPS_SYSTEMMEMORY = $00000800; {$EXTERNALSYM DDSCAPS_SYSTEMMEMORY} (* * 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. *) DDSCAPS_TEXTURE = $00001000; {$EXTERNALSYM DDSCAPS_TEXTURE} (* * 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. *) DDSCAPS_3DDEVICE = $00002000; {$EXTERNALSYM DDSCAPS_3DDEVICE} (* * Indicates that this surface exists in video memory. *) DDSCAPS_VIDEOMEMORY = $00004000; {$EXTERNALSYM DDSCAPS_VIDEOMEMORY} (* * 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. *) DDSCAPS_VISIBLE = $00008000; {$EXTERNALSYM DDSCAPS_VISIBLE} (* * 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. *) DDSCAPS_WRITEONLY = $00010000; {$EXTERNALSYM DDSCAPS_WRITEONLY} (* * 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. *) DDSCAPS_ZBUFFER = $00020000; {$EXTERNALSYM DDSCAPS_ZBUFFER} (* * Indicates surface will have a DC associated long term *) DDSCAPS_OWNDC = $00040000; {$EXTERNALSYM DDSCAPS_OWNDC} (* * Indicates surface should be able to receive live video *) DDSCAPS_LIVEVIDEO = $00080000; {$EXTERNALSYM DDSCAPS_LIVEVIDEO} (* * Indicates surface should be able to have a stream decompressed * to it by the hardware. *) DDSCAPS_HWCODEC = $00100000; {$EXTERNALSYM DDSCAPS_HWCODEC} (* * Surface is a ModeX surface. * *) DDSCAPS_MODEX = $00200000; {$EXTERNALSYM DDSCAPS_MODEX} (* * 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. *) DDSCAPS_MIPMAP = $00400000; {$EXTERNALSYM DDSCAPS_MIPMAP} (* * This bit is reserved. It should not be specified. *) DDSCAPS_RESERVED2 = $00800000; {$EXTERNALSYM DDSCAPS_RESERVED2} (* * Indicates that memory for the surface is not allocated until the surface * is loaded (via the Direct3D texture Load() function). *) DDSCAPS_ALLOCONLOAD = $04000000; {$EXTERNALSYM DDSCAPS_ALLOCONLOAD} (* * Indicates that the surface will recieve data from a video port. *) DDSCAPS_VIDEOPORT = $08000000; {$EXTERNALSYM DDSCAPS_VIDEOPORT} (* * 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. *) DDSCAPS_LOCALVIDMEM = $10000000; {$EXTERNALSYM DDSCAPS_LOCALVIDMEM} (* * 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. *) DDSCAPS_NONLOCALVIDMEM = $20000000; {$EXTERNALSYM DDSCAPS_NONLOCALVIDMEM} (* * 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). *) DDSCAPS_STANDARDVGAMODE = $40000000; {$EXTERNALSYM DDSCAPS_STANDARDVGAMODE} (* * 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. *) DDSCAPS_OPTIMIZED = $80000000; {$EXTERNALSYM DDSCAPS_OPTIMIZED} (* * This bit is reserved *) DDSCAPS2_RESERVED4 = $00000002; {$EXTERNALSYM DDSCAPS2_RESERVED4} DDSCAPS2_HARDWAREDEINTERLACE = $00000000; {$EXTERNALSYM DDSCAPS2_HARDWAREDEINTERLACE} (* * Indicates to the driver that this surface will be locked very frequently * (for procedural textures, dynamic lightmaps, etc). Surfaces with this cap * set must also have DDSCAPS_TEXTURE. This cap cannot be used with * DDSCAPS2_HINTSTATIC and DDSCAPS2_OPAQUE. *) DDSCAPS2_HINTDYNAMIC = $00000004; {$EXTERNALSYM DDSCAPS2_HINTDYNAMIC} (* * Indicates to the driver that this surface can be re-ordered/retiled on * load. This operation will not change the size of the texture. It is * relatively fast and symmetrical, since the application may lock these * bits (although it will take a performance hit when doing so). Surfaces * with this cap set must also have DDSCAPS_TEXTURE. This cap cannot be * used with DDSCAPS2_HINTDYNAMIC and DDSCAPS2_OPAQUE. *) DDSCAPS2_HINTSTATIC = $00000008; {$EXTERNALSYM DDSCAPS2_HINTSTATIC} (* * Indicates that the client would like this texture surface to be managed by the * DirectDraw/Direct3D runtime. Surfaces with this cap set must also have * DDSCAPS_TEXTURE and DDSCAPS_SYSTEMMEMORY. *) DDSCAPS2_TEXTUREMANAGE = $00000010; {$EXTERNALSYM DDSCAPS2_TEXTUREMANAGE} (* * These bits are reserved for internal use *) DDSCAPS2_RESERVED1 = $00000020; {$EXTERNALSYM DDSCAPS2_RESERVED1} DDSCAPS2_RESERVED2 = $00000040; {$EXTERNALSYM DDSCAPS2_RESERVED2} (* * Indicates to the driver that this surface will never be locked again. * The driver is free to optimize this surface via retiling and actual compression. * All calls to Lock() or Blts from this surface will fail. Surfaces with this * cap set must also have DDSCAPS_TEXTURE. This cap cannot be used with * DDSCAPS2_HINTDYNAMIC and DDSCAPS2_HINTSTATIC. *) DDSCAPS2_OPAQUE = $00000080; {$EXTERNALSYM DDSCAPS2_OPAQUE} (* * Applications should set this bit at CreateSurface time to indicate that they * intend to use antialiasing. Only valid if DDSCAPS_3DDEVICE is also set. *) DDSCAPS2_HINTANTIALIASING = $00000100; {$EXTERNALSYM DDSCAPS2_HINTANTIALIASING} (* * This flag is used at CreateSurface time to indicate that this set of * surfaces is a cubic environment map *) DDSCAPS2_CUBEMAP = $00000200; {$EXTERNALSYM DDSCAPS2_CUBEMAP} (* * These flags preform two functions: * - At CreateSurface time, they define which of the six cube faces are * required by the application. * - After creation, each face in the cubemap will have exactly one of these * bits set. *) DDSCAPS2_CUBEMAP_POSITIVEX = $00000400; {$EXTERNALSYM DDSCAPS2_CUBEMAP_POSITIVEX} DDSCAPS2_CUBEMAP_NEGATIVEX = $00000800; {$EXTERNALSYM DDSCAPS2_CUBEMAP_NEGATIVEX} DDSCAPS2_CUBEMAP_POSITIVEY = $00001000; {$EXTERNALSYM DDSCAPS2_CUBEMAP_POSITIVEY} DDSCAPS2_CUBEMAP_NEGATIVEY = $00002000; {$EXTERNALSYM DDSCAPS2_CUBEMAP_NEGATIVEY} DDSCAPS2_CUBEMAP_POSITIVEZ = $00004000; {$EXTERNALSYM DDSCAPS2_CUBEMAP_POSITIVEZ} DDSCAPS2_CUBEMAP_NEGATIVEZ = $00008000; {$EXTERNALSYM DDSCAPS2_CUBEMAP_NEGATIVEZ} (* * This macro may be used to specify all faces of a cube map at CreateSurface time *) DDSCAPS2_CUBEMAP_ALLFACES = ( DDSCAPS2_CUBEMAP_POSITIVEX or DDSCAPS2_CUBEMAP_NEGATIVEX or DDSCAPS2_CUBEMAP_POSITIVEY or DDSCAPS2_CUBEMAP_NEGATIVEY or DDSCAPS2_CUBEMAP_POSITIVEZ or DDSCAPS2_CUBEMAP_NEGATIVEZ ); {$EXTERNALSYM DDSCAPS2_CUBEMAP_ALLFACES} (* * This flag is an additional flag which is present on mipmap sublevels from DX7 onwards * It enables easier use of GetAttachedSurface rather than EnumAttachedSurfaces for surface * constructs such as Cube Maps, wherein there are more than one mipmap surface attached * to the root surface. * This caps bit is ignored by CreateSurface *) DDSCAPS2_MIPMAPSUBLEVEL = $00010000; {$EXTERNALSYM DDSCAPS2_MIPMAPSUBLEVEL} (* This flag indicates that the texture should be managed by D3D only *) DDSCAPS2_D3DTEXTUREMANAGE = $00020000; {$EXTERNALSYM DDSCAPS2_D3DTEXTUREMANAGE} (* This flag indicates that the managed surface can be safely lost *) DDSCAPS2_DONOTPERSIST = $00040000; {$EXTERNALSYM DDSCAPS2_DONOTPERSIST} (* indicates that this surface is part of a stereo flipping chain *) DDSCAPS2_STEREOSURFACELEFT = $00080000; {$EXTERNALSYM DDSCAPS2_STEREOSURFACELEFT} (* * Indicates that the surface is a volume. * Can be combined with DDSCAPS_MIPMAP to indicate a multi-level volume *) DDSCAPS2_VOLUME = $00200000; {$EXTERNALSYM DDSCAPS2_VOLUME} (* * Indicates that the surface may be locked multiple times by the application. * This cap cannot be used with DDSCAPS2_OPAQUE. *) DDSCAPS2_NOTUSERLOCKABLE = $00400000; {$EXTERNALSYM DDSCAPS2_NOTUSERLOCKABLE} (* * Indicates that the vertex buffer data can be used to render points and * point sprites. *) DDSCAPS2_POINTS = $00800000; {$EXTERNALSYM DDSCAPS2_POINTS} (* * Indicates that the vertex buffer data can be used to render rt pactches. *) DDSCAPS2_RTPATCHES = $01000000; {$EXTERNALSYM DDSCAPS2_RTPATCHES} (* * Indicates that the vertex buffer data can be used to render n patches. *) DDSCAPS2_NPATCHES = $02000000; {$EXTERNALSYM DDSCAPS2_NPATCHES} (* * This bit is reserved for internal use *) DDSCAPS2_RESERVED3 = $04000000; {$EXTERNALSYM DDSCAPS2_RESERVED3} (* * Indicates that the contents of the backbuffer do not have to be preserved * the contents of the backbuffer after they are presented. *) DDSCAPS2_DISCARDBACKBUFFER = $10000000; {$EXTERNALSYM DDSCAPS2_DISCARDBACKBUFFER} (* * Indicates that all surfaces in this creation chain should be given an alpha channel. * This flag will be set on primary surface chains that may have no explicit pixel format * (and thus take on the format of the current display mode). * The driver should infer that all these surfaces have a format having an alpha channel. * (e.g. assume D3DFMT_A8R8G8B8 if the display mode is x888.) *) DDSCAPS2_ENABLEALPHACHANNEL = $20000000; {$EXTERNALSYM DDSCAPS2_ENABLEALPHACHANNEL} (* * Indicates that all surfaces in this creation chain is extended primary surface format. * This flag will be set on extended primary surface chains that always have explicit pixel * format and the pixel format is typically GDI (Graphics Device Interface) couldn't handle, * thus only used with fullscreen application. (e.g. D3DFMT_A2R10G10B10 format) *) DDSCAPS2_EXTENDEDFORMATPRIMARY = $40000000; {$EXTERNALSYM DDSCAPS2_EXTENDEDFORMATPRIMARY} (* * Indicates that all surfaces in this creation chain is additional primary surface. * This flag will be set on primary surface chains which must present on the adapter * id provided on dwCaps4. Typically this will be used to create secondary primary surface * on DualView display adapter. *) DDSCAPS2_ADDITIONALPRIMARY = $80000000; {$EXTERNALSYM DDSCAPS2_ADDITIONALPRIMARY} (* * This is a mask that indicates the set of bits that may be set * at createsurface time to indicate number of samples per pixel * when multisampling *) DDSCAPS3_MULTISAMPLE_MASK = $0000001F; {$EXTERNALSYM DDSCAPS3_MULTISAMPLE_MASK} (* * This is a mask that indicates the set of bits that may be set * at createsurface time to indicate the quality level of rendering * for the current number of samples per pixel *) DDSCAPS3_MULTISAMPLE_QUALITY_MASK = $000000E0; {$EXTERNALSYM DDSCAPS3_MULTISAMPLE_QUALITY_MASK} DDSCAPS3_MULTISAMPLE_QUALITY_SHIFT = 5; {$EXTERNALSYM DDSCAPS3_MULTISAMPLE_QUALITY_SHIFT} (* * This bit is reserved for internal use *) DDSCAPS3_RESERVED1 = $00000100; {$EXTERNALSYM DDSCAPS3_RESERVED1} (* * This bit is reserved for internal use *) DDSCAPS3_RESERVED2 = $00000200; {$EXTERNALSYM DDSCAPS3_RESERVED2} (* * This indicates whether this surface has light-weight miplevels *) DDSCAPS3_LIGHTWEIGHTMIPMAP = $00000400; {$EXTERNALSYM DDSCAPS3_LIGHTWEIGHTMIPMAP} (* * This indicates that the mipsublevels for this surface are auto-generated *) DDSCAPS3_AUTOGENMIPMAP = $00000800; {$EXTERNALSYM DDSCAPS3_AUTOGENMIPMAP} (* * This indicates that the mipsublevels for this surface are auto-generated *) DDSCAPS3_DMAP = $00001000; {$EXTERNALSYM DDSCAPS3_DMAP} {$IFDEF DIRECT3D_VERSION_9_VISTA} (* * This indicates that this surface is to be shared by processes *) DDSCAPS3_CREATESHAREDRESOURCE = $00002000; {$EXTERNALSYM DDSCAPS3_CREATESHAREDRESOURCE} (* * This indicates that this surface need to be initialized before being * shared, this bit implies that this surface is read only after initialization * absence of this bit implies that this surface allows both read and write *) DDSCAPS3_READONLYRESOURCE = $00004000; {$EXTERNALSYM DDSCAPS3_READONLYRESOURCE} (* * This indicates that this surface is to share an existing video memory with * another surface created with DDSCAPS3_CREATESHAREDRESOURCE, This bit is never * used with DDSCAPS3_CREATESHAREDRESOURCE *) DDSCAPS3_OPENSHAREDRESOURCE = $00008000; {$EXTERNALSYM DDSCAPS3_OPENSHAREDRESOURCE} {$ENDIF} (**************************************************************************** * * DIRECTDRAW DRIVER CAPABILITY FLAGS * ****************************************************************************) (* * Display hardware has 3D acceleration. *) DDCAPS_3D = $00000001; {$EXTERNALSYM DDCAPS_3D} (* * Indicates that DirectDraw will support only dest rectangles that are aligned * on DIRECTDRAWCAPS.dwAlignBoundaryDest boundaries of the surface, respectively. * READ ONLY. *) DDCAPS_ALIGNBOUNDARYDEST = $00000002; {$EXTERNALSYM DDCAPS_ALIGNBOUNDARYDEST} (* * Indicates that DirectDraw will support only source rectangles whose sizes in * BYTEs are DIRECTDRAWCAPS.dwAlignSizeDest multiples, respectively. READ ONLY. *) DDCAPS_ALIGNSIZEDEST = $00000004; {$EXTERNALSYM DDCAPS_ALIGNSIZEDEST} (* * Indicates that DirectDraw will support only source rectangles that are aligned * on DIRECTDRAWCAPS.dwAlignBoundarySrc boundaries of the surface, respectively. * READ ONLY. *) DDCAPS_ALIGNBOUNDARYSRC = $00000008; {$EXTERNALSYM DDCAPS_ALIGNBOUNDARYSRC} (* * Indicates that DirectDraw will support only source rectangles whose sizes in * BYTEs are DIRECTDRAWCAPS.dwAlignSizeSrc multiples, respectively. READ ONLY. *) DDCAPS_ALIGNSIZESRC = $00000010; {$EXTERNALSYM DDCAPS_ALIGNSIZESRC} (* * Indicates that DirectDraw will create video memory surfaces that have a stride * alignment equal to DIRECTDRAWCAPS.dwAlignStride. READ ONLY. *) DDCAPS_ALIGNSTRIDE = $00000020; {$EXTERNALSYM DDCAPS_ALIGNSTRIDE} (* * Display hardware is capable of blt operations. *) DDCAPS_BLT = $00000040; {$EXTERNALSYM DDCAPS_BLT} (* * Display hardware is capable of asynchronous blt operations. *) DDCAPS_BLTQUEUE = $00000080; {$EXTERNALSYM DDCAPS_BLTQUEUE} (* * Display hardware is capable of color space conversions during the blt operation. *) DDCAPS_BLTFOURCC = $00000100; {$EXTERNALSYM DDCAPS_BLTFOURCC} (* * Display hardware is capable of stretching during blt operations. *) DDCAPS_BLTSTRETCH = $00000200; {$EXTERNALSYM DDCAPS_BLTSTRETCH} (* * Display hardware is shared with GDI. *) DDCAPS_GDI = $00000400; {$EXTERNALSYM DDCAPS_GDI} (* * Display hardware can overlay. *) DDCAPS_OVERLAY = $00000800; {$EXTERNALSYM DDCAPS_OVERLAY} (* * Set if display hardware supports overlays but can not clip them. *) DDCAPS_OVERLAYCANTCLIP = $00001000; {$EXTERNALSYM DDCAPS_OVERLAYCANTCLIP} (* * Indicates that overlay hardware is capable of color space conversions during * the overlay operation. *) DDCAPS_OVERLAYFOURCC = $00002000; {$EXTERNALSYM DDCAPS_OVERLAYFOURCC} (* * Indicates that stretching can be done by the overlay hardware. *) DDCAPS_OVERLAYSTRETCH = $00004000; {$EXTERNALSYM DDCAPS_OVERLAYSTRETCH} (* * Indicates that unique DirectDrawPalettes can be created for DirectDrawSurfaces * other than the primary surface. *) DDCAPS_PALETTE = $00008000; {$EXTERNALSYM DDCAPS_PALETTE} (* * Indicates that palette changes can be syncd with the veritcal refresh. *) DDCAPS_PALETTEVSYNC = $00010000; {$EXTERNALSYM DDCAPS_PALETTEVSYNC} (* * Display hardware can return the current scan line. *) DDCAPS_READSCANLINE = $00020000; {$EXTERNALSYM DDCAPS_READSCANLINE} (* * This flag used to bo DDCAPS_STEREOVIEW, which is now obsolete *) DDCAPS_RESERVED1 = $00040000; {$EXTERNALSYM DDCAPS_RESERVED1} (* * Display hardware is capable of generating a vertical blank interrupt. *) DDCAPS_VBI = $00080000; {$EXTERNALSYM DDCAPS_VBI} (* * Supports the use of z buffers with blt operations. *) DDCAPS_ZBLTS = $00100000; {$EXTERNALSYM DDCAPS_ZBLTS} (* * Supports Z Ordering of overlays. *) DDCAPS_ZOVERLAYS = $00200000; {$EXTERNALSYM DDCAPS_ZOVERLAYS} (* * Supports color key *) DDCAPS_COLORKEY = $00400000; {$EXTERNALSYM DDCAPS_COLORKEY} (* * Supports alpha surfaces *) DDCAPS_ALPHA = $00800000; {$EXTERNALSYM DDCAPS_ALPHA} (* * colorkey is hardware assisted(DDCAPS_COLORKEY will also be set) *) DDCAPS_COLORKEYHWASSIST = $01000000; {$EXTERNALSYM DDCAPS_COLORKEYHWASSIST} (* * no hardware support at all *) DDCAPS_NOHARDWARE = $02000000; {$EXTERNALSYM DDCAPS_NOHARDWARE} (* * Display hardware is capable of color fill with bltter *) DDCAPS_BLTCOLORFILL = $04000000; {$EXTERNALSYM DDCAPS_BLTCOLORFILL} (* * Display hardware is bank switched, and potentially very slow at * random access to VRAM. *) DDCAPS_BANKSWITCHED = $08000000; {$EXTERNALSYM DDCAPS_BANKSWITCHED} (* * Display hardware is capable of depth filling Z-buffers with bltter *) DDCAPS_BLTDEPTHFILL = $10000000; {$EXTERNALSYM DDCAPS_BLTDEPTHFILL} (* * Display hardware is capable of clipping while bltting. *) DDCAPS_CANCLIP = $20000000; {$EXTERNALSYM DDCAPS_CANCLIP} (* * Display hardware is capable of clipping while stretch bltting. *) DDCAPS_CANCLIPSTRETCHED = $40000000; {$EXTERNALSYM DDCAPS_CANCLIPSTRETCHED} (* * Display hardware is capable of bltting to or from system memory *) DDCAPS_CANBLTSYSMEM = $80000000; {$EXTERNALSYM DDCAPS_CANBLTSYSMEM} (**************************************************************************** * * MORE DIRECTDRAW DRIVER CAPABILITY FLAGS (dwCaps2) * ****************************************************************************) (* * Display hardware is certified *) DDCAPS2_CERTIFIED = $00000001; {$EXTERNALSYM DDCAPS2_CERTIFIED} (* * Driver cannot interleave 2D operations (lock and blt) to surfaces with * Direct3D rendering operations between calls to BeginScene() and EndScene() *) DDCAPS2_NO2DDURING3DSCENE = $00000002; {$EXTERNALSYM DDCAPS2_NO2DDURING3DSCENE} (* * Display hardware contains a video port *) DDCAPS2_VIDEOPORT = $00000004; {$EXTERNALSYM DDCAPS2_VIDEOPORT} (* * The overlay can be automatically flipped according to the video port * VSYNCs, providing automatic doubled buffered display of video port * data using an overlay *) DDCAPS2_AUTOFLIPOVERLAY = $00000008; {$EXTERNALSYM DDCAPS2_AUTOFLIPOVERLAY} (* * Overlay can display each field of interlaced data individually while * it is interleaved in memory without causing jittery artifacts. *) DDCAPS2_CANBOBINTERLEAVED = $00000010; {$EXTERNALSYM DDCAPS2_CANBOBINTERLEAVED} (* * Overlay can display each field of interlaced data individually while * it is not interleaved in memory without causing jittery artifacts. *) DDCAPS2_CANBOBNONINTERLEAVED = $00000020; {$EXTERNALSYM DDCAPS2_CANBOBNONINTERLEAVED} (* * The overlay surface contains color controls (brightness, sharpness, etc.) *) DDCAPS2_COLORCONTROLOVERLAY = $00000040; {$EXTERNALSYM DDCAPS2_COLORCONTROLOVERLAY} (* * The primary surface contains color controls (gamma, etc.) *) DDCAPS2_COLORCONTROLPRIMARY = $00000080; {$EXTERNALSYM DDCAPS2_COLORCONTROLPRIMARY} (* * RGBZ -> RGB supported for 16:16 RGB:Z *) DDCAPS2_CANDROPZ16BIT = $00000100; {$EXTERNALSYM DDCAPS2_CANDROPZ16BIT} (* * Driver supports non-local video memory. *) DDCAPS2_NONLOCALVIDMEM = $00000200; {$EXTERNALSYM DDCAPS2_NONLOCALVIDMEM} (* * 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. *) DDCAPS2_NONLOCALVIDMEMCAPS = $00000400; {$EXTERNALSYM DDCAPS2_NONLOCALVIDMEMCAPS} (* * Driver neither requires nor prefers surfaces to be pagelocked when performing * blts involving system memory surfaces *) DDCAPS2_NOPAGELOCKREQUIRED = $00000800; {$EXTERNALSYM DDCAPS2_NOPAGELOCKREQUIRED} (* * Driver can create surfaces which are wider than the primary surface *) DDCAPS2_WIDESURFACES = $00001000; {$EXTERNALSYM DDCAPS2_WIDESURFACES} (* * Driver supports bob without using a video port by handling the * DDFLIP_ODD and DDFLIP_EVEN flags specified in Flip. *) DDCAPS2_CANFLIPODDEVEN = $00002000; {$EXTERNALSYM DDCAPS2_CANFLIPODDEVEN} (* * Driver supports bob using hardware *) DDCAPS2_CANBOBHARDWARE = $00004000; {$EXTERNALSYM DDCAPS2_CANBOBHARDWARE} (* * Driver supports bltting any FOURCC surface to another surface of the same FOURCC *) DDCAPS2_COPYFOURCC = $00008000; {$EXTERNALSYM DDCAPS2_COPYFOURCC} (* * Driver supports loadable gamma ramps for the primary surface *) DDCAPS2_PRIMARYGAMMA = $00020000; {$EXTERNALSYM DDCAPS2_PRIMARYGAMMA} (* * Driver can render in windowed mode. *) DDCAPS2_CANRENDERWINDOWED = $00080000; {$EXTERNALSYM DDCAPS2_CANRENDERWINDOWED} (* * A calibrator is available to adjust the gamma ramp according to the * physical display properties so that the result will be identical on * all calibrated systems. *) DDCAPS2_CANCALIBRATEGAMMA = $00100000; {$EXTERNALSYM DDCAPS2_CANCALIBRATEGAMMA} (* * Indicates that the driver will respond to DDFLIP_INTERVALn flags *) DDCAPS2_FLIPINTERVAL = $00200000; {$EXTERNALSYM DDCAPS2_FLIPINTERVAL} (* * Indicates that the driver will respond to DDFLIP_NOVSYNC *) DDCAPS2_FLIPNOVSYNC = $00400000; {$EXTERNALSYM DDCAPS2_FLIPNOVSYNC} (* * Driver supports management of video memory, if this flag is ON, * driver manages the texture if requested with DDSCAPS2_TEXTUREMANAGE on * DirectX manages the texture if this flag is OFF and surface has DDSCAPS2_TEXTUREMANAGE on *) DDCAPS2_CANMANAGETEXTURE = $00800000; {$EXTERNALSYM DDCAPS2_CANMANAGETEXTURE} (* * The Direct3D texture manager uses this cap to decide whether to put managed * surfaces in non-local video memory. If the cap is set, the texture manager will * put managed surfaces in non-local vidmem. Drivers that cannot texture from * local vidmem SHOULD NOT set this cap. *) DDCAPS2_TEXMANINNONLOCALVIDMEM = $01000000; {$EXTERNALSYM DDCAPS2_TEXMANINNONLOCALVIDMEM} (* * Indicates that the driver supports DX7 type of stereo in at least one mode (which may * not necessarily be the current mode). Applications should use IDirectDraw7 (or higher) * ::EnumDisplayModes and check the DDSURFACEDESC.ddsCaps.dwCaps2 field for the presence of * DDSCAPS2_STEREOSURFACELEFT to check if a particular mode supports stereo. The application * can also use IDirectDraw7(or higher)::GetDisplayMode to check the current mode. *) DDCAPS2_STEREO = $02000000; {$EXTERNALSYM DDCAPS2_STEREO} (* * This caps bit is intended for internal DirectDraw use. * -It is only valid if DDCAPS2_NONLOCALVIDMEMCAPS is set. * -If this bit is set, then DDCAPS_CANBLTSYSMEM MUST be set by the driver (and * all the assoicated system memory blt caps must be correct). * -It implies that the system->video blt caps in DDCAPS also apply to system to * nonlocal blts. I.e. the dwSVBCaps, dwSVBCKeyCaps, dwSVBFXCaps and dwSVBRops * members of DDCAPS (DDCORECAPS) are filled in correctly. * -Any blt from system to nonlocal memory that matches these caps bits will * be passed to the driver. * * NOTE: This is intended to enable the driver itself to do efficient reordering * of textures. This is NOT meant to imply that hardware can write into AGP memory. * This operation is not currently supported. *) DDCAPS2_SYSTONONLOCAL_AS_SYSTOLOCAL = $04000000; {$EXTERNALSYM DDCAPS2_SYSTONONLOCAL_AS_SYSTOLOCAL} (* * was DDCAPS2_PUREHAL *) DDCAPS2_RESERVED1 = $08000000; {$EXTERNALSYM DDCAPS2_RESERVED1} (* * Driver supports management of video memory, if this flag is ON, * driver manages the resource if requested with DDSCAPS2_TEXTUREMANAGE on * DirectX manages the resource if this flag is OFF and surface has DDSCAPS2_TEXTUREMANAGE on *) DDCAPS2_CANMANAGERESOURCE = $10000000; {$EXTERNALSYM DDCAPS2_CANMANAGERESOURCE} (* * Driver supports dynamic textures. This will allow the application to set * D3DUSAGE_DYNAMIC (DDSCAPS2_HINTDYNAMIC for drivers) at texture create time. * Video memory dynamic textures WILL be lockable by applications. It is * expected that these locks will be very efficient (which implies that the * driver should always maintain a linear copy, a pointer to which can be * quickly handed out to the application). *) DDCAPS2_DYNAMICTEXTURES = $20000000; {$EXTERNALSYM DDCAPS2_DYNAMICTEXTURES} (* * Driver supports auto-generation of mipmaps. *) DDCAPS2_CANAUTOGENMIPMAP = $40000000; {$EXTERNALSYM DDCAPS2_CANAUTOGENMIPMAP} {$IFDEF DIRECT3D_VERSION_9_VISTA} (* * Driver supports sharing of cross process resouces *) DDCAPS2_CANSHARERESOURCE = $80000000; {$EXTERNALSYM DDCAPS2_CANSHARERESOURCE} {$ENDIF} (**************************************************************************** * * DIRECTDRAW FX ALPHA CAPABILITY FLAGS * ****************************************************************************) (* * Supports alpha blending around the edge of a source color keyed surface. * For Blt. *) DDFXALPHACAPS_BLTALPHAEDGEBLEND = $00000001; {$EXTERNALSYM DDFXALPHACAPS_BLTALPHAEDGEBLEND} (* * 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. *) DDFXALPHACAPS_BLTALPHAPIXELS = $00000002; {$EXTERNALSYM DDFXALPHACAPS_BLTALPHAPIXELS} (* * 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. *) DDFXALPHACAPS_BLTALPHAPIXELSNEG = $00000004; {$EXTERNALSYM DDFXALPHACAPS_BLTALPHAPIXELSNEG} (* * 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. *) DDFXALPHACAPS_BLTALPHASURFACES = $00000008; {$EXTERNALSYM DDFXALPHACAPS_BLTALPHASURFACES} (* * 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. *) DDFXALPHACAPS_BLTALPHASURFACESNEG = $00000010; {$EXTERNALSYM DDFXALPHACAPS_BLTALPHASURFACESNEG} (* * Supports alpha blending around the edge of a source color keyed surface. * For Overlays. *) DDFXALPHACAPS_OVERLAYALPHAEDGEBLEND = $00000020; {$EXTERNALSYM DDFXALPHACAPS_OVERLAYALPHAEDGEBLEND} (* * 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. *) DDFXALPHACAPS_OVERLAYALPHAPIXELS = $00000040; {$EXTERNALSYM DDFXALPHACAPS_OVERLAYALPHAPIXELS} (* * 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. *) DDFXALPHACAPS_OVERLAYALPHAPIXELSNEG = $00000080; {$EXTERNALSYM DDFXALPHACAPS_OVERLAYALPHAPIXELSNEG} (* * 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. *) DDFXALPHACAPS_OVERLAYALPHASURFACES = $00000100; {$EXTERNALSYM DDFXALPHACAPS_OVERLAYALPHASURFACES} (* * 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. *) DDFXALPHACAPS_OVERLAYALPHASURFACESNEG = $00000200; {$EXTERNALSYM DDFXALPHACAPS_OVERLAYALPHASURFACESNEG} (**************************************************************************** * * DIRECTDRAW FX CAPABILITY FLAGS * ****************************************************************************) (* * Uses arithmetic operations to stretch and shrink surfaces during blt * rather than pixel doubling techniques. Along the Y axis. *) DDFXCAPS_BLTARITHSTRETCHY = $00000020; {$EXTERNALSYM DDFXCAPS_BLTARITHSTRETCHY} (* * Uses arithmetic operations to stretch during blt * rather than pixel doubling techniques. Along the Y axis. Only * works for x1, x2, etc. *) DDFXCAPS_BLTARITHSTRETCHYN = $00000010; {$EXTERNALSYM DDFXCAPS_BLTARITHSTRETCHYN} (* * Supports mirroring left to right in blt. *) DDFXCAPS_BLTMIRRORLEFTRIGHT = $00000040; {$EXTERNALSYM DDFXCAPS_BLTMIRRORLEFTRIGHT} (* * Supports mirroring top to bottom in blt. *) DDFXCAPS_BLTMIRRORUPDOWN = $00000080; {$EXTERNALSYM DDFXCAPS_BLTMIRRORUPDOWN} (* * Supports arbitrary rotation for blts. *) DDFXCAPS_BLTROTATION = $00000100; {$EXTERNALSYM DDFXCAPS_BLTROTATION} (* * Supports 90 degree rotations for blts. *) DDFXCAPS_BLTROTATION90 = $00000200; {$EXTERNALSYM DDFXCAPS_BLTROTATION90} (* * DirectDraw supports arbitrary shrinking of a surface along the * x axis (horizontal direction) for blts. *) DDFXCAPS_BLTSHRINKX = $00000400; {$EXTERNALSYM DDFXCAPS_BLTSHRINKX} (* * DirectDraw supports integer shrinking (1x,2x,) of a surface * along the x axis (horizontal direction) for blts. *) DDFXCAPS_BLTSHRINKXN = $00000800; {$EXTERNALSYM DDFXCAPS_BLTSHRINKXN} (* * DirectDraw supports arbitrary shrinking of a surface along the * y axis (horizontal direction) for blts. *) DDFXCAPS_BLTSHRINKY = $00001000; {$EXTERNALSYM DDFXCAPS_BLTSHRINKY} (* * DirectDraw supports integer shrinking (1x,2x,) of a surface * along the y axis (vertical direction) for blts. *) DDFXCAPS_BLTSHRINKYN = $00002000; {$EXTERNALSYM DDFXCAPS_BLTSHRINKYN} (* * DirectDraw supports arbitrary stretching of a surface along the * x axis (horizontal direction) for blts. *) DDFXCAPS_BLTSTRETCHX = $00004000; {$EXTERNALSYM DDFXCAPS_BLTSTRETCHX} (* * DirectDraw supports integer stretching (1x,2x,) of a surface * along the x axis (horizontal direction) for blts. *) DDFXCAPS_BLTSTRETCHXN = $00008000; {$EXTERNALSYM DDFXCAPS_BLTSTRETCHXN} (* * DirectDraw supports arbitrary stretching of a surface along the * y axis (horizontal direction) for blts. *) DDFXCAPS_BLTSTRETCHY = $00010000; {$EXTERNALSYM DDFXCAPS_BLTSTRETCHY} (* * DirectDraw supports integer stretching (1x,2x,) of a surface * along the y axis (vertical direction) for blts. *) DDFXCAPS_BLTSTRETCHYN = $00020000; {$EXTERNALSYM DDFXCAPS_BLTSTRETCHYN} (* * Uses arithmetic operations to stretch and shrink surfaces during * overlay rather than pixel doubling techniques. Along the Y axis * for overlays. *) DDFXCAPS_OVERLAYARITHSTRETCHY = $00040000; {$EXTERNALSYM DDFXCAPS_OVERLAYARITHSTRETCHY} (* * 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. *) DDFXCAPS_OVERLAYARITHSTRETCHYN = $00000008; {$EXTERNALSYM DDFXCAPS_OVERLAYARITHSTRETCHYN} (* * DirectDraw supports arbitrary shrinking of a surface along the * x axis (horizontal direction) for overlays. *) DDFXCAPS_OVERLAYSHRINKX = $00080000; {$EXTERNALSYM DDFXCAPS_OVERLAYSHRINKX} (* * DirectDraw supports integer shrinking (1x,2x,) of a surface * along the x axis (horizontal direction) for overlays. *) DDFXCAPS_OVERLAYSHRINKXN = $00100000; {$EXTERNALSYM DDFXCAPS_OVERLAYSHRINKXN} (* * DirectDraw supports arbitrary shrinking of a surface along the * y axis (horizontal direction) for overlays. *) DDFXCAPS_OVERLAYSHRINKY = $00200000; {$EXTERNALSYM DDFXCAPS_OVERLAYSHRINKY} (* * DirectDraw supports integer shrinking (1x,2x,) of a surface * along the y axis (vertical direction) for overlays. *) DDFXCAPS_OVERLAYSHRINKYN = $00400000; {$EXTERNALSYM DDFXCAPS_OVERLAYSHRINKYN} (* * DirectDraw supports arbitrary stretching of a surface along the * x axis (horizontal direction) for overlays. *) DDFXCAPS_OVERLAYSTRETCHX = $00800000; {$EXTERNALSYM DDFXCAPS_OVERLAYSTRETCHX} (* * DirectDraw supports integer stretching (1x,2x,) of a surface * along the x axis (horizontal direction) for overlays. *) DDFXCAPS_OVERLAYSTRETCHXN = $01000000; {$EXTERNALSYM DDFXCAPS_OVERLAYSTRETCHXN} (* * DirectDraw supports arbitrary stretching of a surface along the * y axis (horizontal direction) for overlays. *) DDFXCAPS_OVERLAYSTRETCHY = $02000000; {$EXTERNALSYM DDFXCAPS_OVERLAYSTRETCHY} (* * DirectDraw supports integer stretching (1x,2x,) of a surface * along the y axis (vertical direction) for overlays. *) DDFXCAPS_OVERLAYSTRETCHYN = $04000000; {$EXTERNALSYM DDFXCAPS_OVERLAYSTRETCHYN} (* * DirectDraw supports mirroring of overlays across the vertical axis *) DDFXCAPS_OVERLAYMIRRORLEFTRIGHT = $08000000; {$EXTERNALSYM DDFXCAPS_OVERLAYMIRRORLEFTRIGHT} (* * DirectDraw supports mirroring of overlays across the horizontal axis *) DDFXCAPS_OVERLAYMIRRORUPDOWN = $10000000; {$EXTERNALSYM DDFXCAPS_OVERLAYMIRRORUPDOWN} (* * DirectDraw supports deinterlacing of overlay surfaces *) DDFXCAPS_OVERLAYDEINTERLACE = $20000000; {$EXTERNALSYM DDFXCAPS_OVERLAYDEINTERLACE} (* * Driver can do alpha blending for blits. *) DDFXCAPS_BLTALPHA = $00000001; {$EXTERNALSYM DDFXCAPS_BLTALPHA} (* * Driver can do geometric transformations (or warps) for blits. *) DDFXCAPS_BLTTRANSFORM = $00000002; {$EXTERNALSYM DDFXCAPS_BLTTRANSFORM} (* * Driver can do surface-reconstruction filtering for warped blits. *) DDFXCAPS_BLTFILTER = DDFXCAPS_BLTARITHSTRETCHY; {$EXTERNALSYM DDFXCAPS_BLTFILTER} (* * Driver can do alpha blending for overlays. *) DDFXCAPS_OVERLAYALPHA = $00000004; {$EXTERNALSYM DDFXCAPS_OVERLAYALPHA} (* * Driver can do geometric transformations (or warps) for overlays. *) DDFXCAPS_OVERLAYTRANSFORM = $20000000; {$EXTERNALSYM DDFXCAPS_OVERLAYTRANSFORM} (* * Driver can do surface-reconstruction filtering for warped overlays. *) DDFXCAPS_OVERLAYFILTER = DDFXCAPS_OVERLAYARITHSTRETCHY; {$EXTERNALSYM DDFXCAPS_OVERLAYFILTER} (**************************************************************************** * * DIRECTDRAW STEREO VIEW CAPABILITIES * ****************************************************************************) (* * This flag used to be DDSVCAPS_ENIGMA, which is now obsolete *) DDSVCAPS_RESERVED1 = $00000001; {$EXTERNALSYM DDSVCAPS_RESERVED1} (* * This flag used to be DDSVCAPS_FLICKER, which is now obsolete *) DDSVCAPS_RESERVED2 = $00000002; {$EXTERNALSYM DDSVCAPS_RESERVED2} (* * This flag used to be DDSVCAPS_REDBLUE, which is now obsolete *) DDSVCAPS_RESERVED3 = $00000004; {$EXTERNALSYM DDSVCAPS_RESERVED3} (* * This flag used to be DDSVCAPS_SPLIT, which is now obsolete *) DDSVCAPS_RESERVED4 = $00000008; {$EXTERNALSYM DDSVCAPS_RESERVED4} (* * The stereo view is accomplished with switching technology *) DDSVCAPS_STEREOSEQUENTIAL = $00000010; {$EXTERNALSYM DDSVCAPS_STEREOSEQUENTIAL} (**************************************************************************** * * DIRECTDRAWPALETTE CAPABILITIES * ****************************************************************************) (* * Index is 4 bits. There are sixteen color entries in the palette table. *) DDPCAPS_4BIT = $00000001; {$EXTERNALSYM DDPCAPS_4BIT} (* * 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. *) DDPCAPS_8BITENTRIES = $00000002; {$EXTERNALSYM DDPCAPS_8BITENTRIES} (* * Index is 8 bits. There are 256 color entries in the palette table. *) DDPCAPS_8BIT = $00000004; {$EXTERNALSYM DDPCAPS_8BIT} (* * Indicates that this DIRECTDRAWPALETTE should use the palette color array * passed into the lpDDColorArray parameter to initialize the DIRECTDRAWPALETTE * object. * This flag is obsolete. DirectDraw always initializes the color array from * the lpDDColorArray parameter. The definition remains for source-level * compatibility. *) DDPCAPS_INITIALIZE = $00000008; {$EXTERNALSYM DDPCAPS_INITIALIZE} (* * 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. *) DDPCAPS_PRIMARYSURFACE = $00000010; {$EXTERNALSYM DDPCAPS_PRIMARYSURFACE} (* * 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. *) DDPCAPS_PRIMARYSURFACELEFT = $00000020; {$EXTERNALSYM DDPCAPS_PRIMARYSURFACELEFT} (* * This palette can have all 256 entries defined *) DDPCAPS_ALLOW256 = $00000040; {$EXTERNALSYM DDPCAPS_ALLOW256} (* * This palette can have modifications to it synced with the monitors * refresh rate. *) DDPCAPS_VSYNC = $00000080; {$EXTERNALSYM DDPCAPS_VSYNC} (* * Index is 1 bit. There are two color entries in the palette table. *) DDPCAPS_1BIT = $00000100; {$EXTERNALSYM DDPCAPS_1BIT} (* * Index is 2 bit. There are four color entries in the palette table. *) DDPCAPS_2BIT = $00000200; {$EXTERNALSYM DDPCAPS_2BIT} (* * The peFlags member of PALETTEENTRY denotes an 8 bit alpha value *) DDPCAPS_ALPHA = $00000400; {$EXTERNALSYM DDPCAPS_ALPHA} (**************************************************************************** * * DIRECTDRAWPALETTE SETENTRY CONSTANTS * ****************************************************************************) (**************************************************************************** * * DIRECTDRAWPALETTE GETENTRY CONSTANTS * ****************************************************************************) (* 0 is the only legal value *) (**************************************************************************** * * DIRECTDRAWSURFACE SETPRIVATEDATA CONSTANTS * ****************************************************************************) (* * The passed pointer is an IUnknown ptr. The cbData argument to SetPrivateData * must be set to SizeOf(IUnknown^). DirectDraw will call AddRef through this * pointer and Release when the private data is destroyed. This includes when * the surface or palette is destroyed before such priovate data is destroyed. *) DDSPD_IUNKNOWNPOINTER = $00000001; {$EXTERNALSYM DDSPD_IUNKNOWNPOINTER} (* * Private data is only valid for the current state of the object, * as determined by the uniqueness value. *) DDSPD_VOLATILE = $00000002; {$EXTERNALSYM DDSPD_VOLATILE} (**************************************************************************** * * 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. *) DDBD_1 = $00004000; {$EXTERNALSYM DDBD_1} (* * 2 bits per pixel. *) DDBD_2 = $00002000; {$EXTERNALSYM DDBD_2} (* * 4 bits per pixel. *) DDBD_4 = $00001000; {$EXTERNALSYM DDBD_4} (* * 8 bits per pixel. *) DDBD_8 = $00000800; {$EXTERNALSYM DDBD_8} (* * 16 bits per pixel. *) DDBD_16 = $00000400; {$EXTERNALSYM DDBD_16} (* * 24 bits per pixel. *) DDBD_24 = $00000200; {$EXTERNALSYM DDBD_24} (* * 32 bits per pixel. *) DDBD_32 = $00000100; {$EXTERNALSYM DDBD_32} (**************************************************************************** * * DIRECTDRAWSURFACE SET/GET COLOR KEY FLAGS * ****************************************************************************) (* * Set if the structure contains a color space. Not set if the structure * contains a single color key. *) DDCKEY_COLORSPACE = $00000001; {$EXTERNALSYM DDCKEY_COLORSPACE} (* * Set if the structure specifies a color key or color space which is to be * used as a destination color key for blt operations. *) DDCKEY_DESTBLT = $00000002; {$EXTERNALSYM DDCKEY_DESTBLT} (* * Set if the structure specifies a color key or color space which is to be * used as a destination color key for overlay operations. *) DDCKEY_DESTOVERLAY = $00000004; {$EXTERNALSYM DDCKEY_DESTOVERLAY} (* * Set if the structure specifies a color key or color space which is to be * used as a source color key for blt operations. *) DDCKEY_SRCBLT = $00000008; {$EXTERNALSYM DDCKEY_SRCBLT} (* * Set if the structure specifies a color key or color space which is to be * used as a source color key for overlay operations. *) DDCKEY_SRCOVERLAY = $00000010; {$EXTERNALSYM DDCKEY_SRCOVERLAY} (**************************************************************************** * * DIRECTDRAW COLOR KEY CAPABILITY FLAGS * ****************************************************************************) (* * Supports transparent blting using a color key to identify the replaceable * bits of the destination surface for RGB colors. *) DDCKEYCAPS_DESTBLT = $00000001; {$EXTERNALSYM DDCKEYCAPS_DESTBLT} (* * Supports transparent blting using a color space to identify the replaceable * bits of the destination surface for RGB colors. *) DDCKEYCAPS_DESTBLTCLRSPACE = $00000002; {$EXTERNALSYM DDCKEYCAPS_DESTBLTCLRSPACE} (* * Supports transparent blting using a color space to identify the replaceable * bits of the destination surface for YUV colors. *) DDCKEYCAPS_DESTBLTCLRSPACEYUV = $00000004; {$EXTERNALSYM DDCKEYCAPS_DESTBLTCLRSPACEYUV} (* * Supports transparent blting using a color key to identify the replaceable * bits of the destination surface for YUV colors. *) DDCKEYCAPS_DESTBLTYUV = $00000008; {$EXTERNALSYM DDCKEYCAPS_DESTBLTYUV} (* * Supports overlaying using colorkeying of the replaceable bits of the surface * being overlayed for RGB colors. *) DDCKEYCAPS_DESTOVERLAY = $00000010; {$EXTERNALSYM DDCKEYCAPS_DESTOVERLAY} (* * Supports a color space as the color key for the destination for RGB colors. *) DDCKEYCAPS_DESTOVERLAYCLRSPACE = $00000020; {$EXTERNALSYM DDCKEYCAPS_DESTOVERLAYCLRSPACE} (* * Supports a color space as the color key for the destination for YUV colors. *) DDCKEYCAPS_DESTOVERLAYCLRSPACEYUV = $00000040; {$EXTERNALSYM DDCKEYCAPS_DESTOVERLAYCLRSPACEYUV} (* * Supports only one active destination color key value for visible overlay * surfaces. *) DDCKEYCAPS_DESTOVERLAYONEACTIVE = $00000080; {$EXTERNALSYM DDCKEYCAPS_DESTOVERLAYONEACTIVE} (* * Supports overlaying using colorkeying of the replaceable bits of the * surface being overlayed for YUV colors. *) DDCKEYCAPS_DESTOVERLAYYUV = $00000100; {$EXTERNALSYM DDCKEYCAPS_DESTOVERLAYYUV} (* * Supports transparent blting using the color key for the source with * this surface for RGB colors. *) DDCKEYCAPS_SRCBLT = $00000200; {$EXTERNALSYM DDCKEYCAPS_SRCBLT} (* * Supports transparent blting using a color space for the source with * this surface for RGB colors. *) DDCKEYCAPS_SRCBLTCLRSPACE = $00000400; {$EXTERNALSYM DDCKEYCAPS_SRCBLTCLRSPACE} (* * Supports transparent blting using a color space for the source with * this surface for YUV colors. *) DDCKEYCAPS_SRCBLTCLRSPACEYUV = $00000800; {$EXTERNALSYM DDCKEYCAPS_SRCBLTCLRSPACEYUV} (* * Supports transparent blting using the color key for the source with * this surface for YUV colors. *) DDCKEYCAPS_SRCBLTYUV = $00001000; {$EXTERNALSYM DDCKEYCAPS_SRCBLTYUV} (* * Supports overlays using the color key for the source with this * overlay surface for RGB colors. *) DDCKEYCAPS_SRCOVERLAY = $00002000; {$EXTERNALSYM DDCKEYCAPS_SRCOVERLAY} (* * Supports overlays using a color space as the source color key for * the overlay surface for RGB colors. *) DDCKEYCAPS_SRCOVERLAYCLRSPACE = $00004000; {$EXTERNALSYM DDCKEYCAPS_SRCOVERLAYCLRSPACE} (* * Supports overlays using a color space as the source color key for * the overlay surface for YUV colors. *) DDCKEYCAPS_SRCOVERLAYCLRSPACEYUV = $00008000; {$EXTERNALSYM DDCKEYCAPS_SRCOVERLAYCLRSPACEYUV} (* * Supports only one active source color key value for visible * overlay surfaces. *) DDCKEYCAPS_SRCOVERLAYONEACTIVE = $00010000; {$EXTERNALSYM DDCKEYCAPS_SRCOVERLAYONEACTIVE} (* * Supports overlays using the color key for the source with this * overlay surface for YUV colors. *) DDCKEYCAPS_SRCOVERLAYYUV = $00020000; {$EXTERNALSYM DDCKEYCAPS_SRCOVERLAYYUV} (* * there are no bandwidth trade-offs for using colorkey with an overlay *) DDCKEYCAPS_NOCOSTOVERLAY = $00040000; {$EXTERNALSYM DDCKEYCAPS_NOCOSTOVERLAY} (**************************************************************************** * * DIRECTDRAW PIXELFORMAT FLAGS * ****************************************************************************) (* * The surface has alpha channel information in the pixel format. *) DDPF_ALPHAPIXELS = $00000001; {$EXTERNALSYM DDPF_ALPHAPIXELS} (* * The pixel format contains alpha only information *) DDPF_ALPHA = $00000002; {$EXTERNALSYM DDPF_ALPHA} (* * The FourCC code is valid. *) DDPF_FOURCC = $00000004; {$EXTERNALSYM DDPF_FOURCC} (* * The surface is 4-bit color indexed. *) DDPF_PALETTEINDEXED4 = $00000008; {$EXTERNALSYM DDPF_PALETTEINDEXED4} (* * The surface is indexed into a palette which stores indices * into the destination surface's 8-bit palette. *) DDPF_PALETTEINDEXEDTO8 = $00000010; {$EXTERNALSYM DDPF_PALETTEINDEXEDTO8} (* * The surface is 8-bit color indexed. *) DDPF_PALETTEINDEXED8 = $00000020; {$EXTERNALSYM DDPF_PALETTEINDEXED8} (* * The RGB data in the pixel format structure is valid. *) DDPF_RGB = $00000040; {$EXTERNALSYM DDPF_RGB} (* * The surface will accept pixel data in the format specified * and compress it during the write. *) DDPF_COMPRESSED = $00000080; {$EXTERNALSYM DDPF_COMPRESSED} (* * 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. *) DDPF_RGBTOYUV = $00000100; {$EXTERNALSYM DDPF_RGBTOYUV} (* * pixel format is YUV - YUV data in pixel format struct is valid *) DDPF_YUV = $00000200; {$EXTERNALSYM DDPF_YUV} (* * pixel format is a z buffer only surface *) DDPF_ZBUFFER = $00000400; {$EXTERNALSYM DDPF_ZBUFFER} (* * The surface is 1-bit color indexed. *) DDPF_PALETTEINDEXED1 = $00000800; {$EXTERNALSYM DDPF_PALETTEINDEXED1} (* * The surface is 2-bit color indexed. *) DDPF_PALETTEINDEXED2 = $00001000; {$EXTERNALSYM DDPF_PALETTEINDEXED2} (* * The surface contains Z information in the pixels *) DDPF_ZPIXELS = $00002000; {$EXTERNALSYM DDPF_ZPIXELS} (* * The surface contains stencil information along with Z *) DDPF_STENCILBUFFER = $00004000; {$EXTERNALSYM DDPF_STENCILBUFFER} (* * Premultiplied alpha format -- the color components have been * premultiplied by the alpha component. *) DDPF_ALPHAPREMULT = $00008000; {$EXTERNALSYM DDPF_ALPHAPREMULT} (* * Luminance data in the pixel format is valid. * Use this flag for luminance-only or luminance+alpha surfaces, * the bit depth is then ddpf.dwLuminanceBitCount. *) DDPF_LUMINANCE = $00020000; {$EXTERNALSYM DDPF_LUMINANCE} (* * Luminance data in the pixel format is valid. * Use this flag when hanging luminance off bumpmap surfaces, * the bit mask for the luminance portion of the pixel is then * ddpf.dwBumpLuminanceBitMask *) DDPF_BUMPLUMINANCE = $00040000; {$EXTERNALSYM DDPF_BUMPLUMINANCE} (* * Bump map dUdV data in the pixel format is valid. *) DDPF_BUMPDUDV = $00080000; {$EXTERNALSYM DDPF_BUMPDUDV} (*=========================================================================== * * * DIRECTDRAW CALLBACK FLAGS * * *==========================================================================*) (**************************************************************************** * * DIRECTDRAW ENUMSURFACES FLAGS * ****************************************************************************) (* * Enumerate all of the surfaces that meet the search criterion. *) DDENUMSURFACES_ALL = $00000001; {$EXTERNALSYM DDENUMSURFACES_ALL} {$EXTERNALSYM DDENUMSURFACES_ALL} (* * A search hit is a surface that matches the surface description. *) DDENUMSURFACES_MATCH = $00000002; {$EXTERNALSYM DDENUMSURFACES_MATCH} (* * A search hit is a surface that does not match the surface description. *) DDENUMSURFACES_NOMATCH = $00000004; {$EXTERNALSYM DDENUMSURFACES_NOMATCH} (* * Enumerate the first surface that can be created which meets the search criterion. *) DDENUMSURFACES_CANBECREATED = $00000008; {$EXTERNALSYM DDENUMSURFACES_CANBECREATED} (* * Enumerate the surfaces that already exist that meet the search criterion. *) DDENUMSURFACES_DOESEXIST = $00000010; {$EXTERNALSYM DDENUMSURFACES_DOESEXIST} (**************************************************************************** * * DIRECTDRAW SETDISPLAYMODE FLAGS * ****************************************************************************) (* * The desired mode is a standard VGA mode *) DDSDM_STANDARDVGAMODE = $00000001; {$EXTERNALSYM DDSDM_STANDARDVGAMODE} (**************************************************************************** * * 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. *) DDEDM_REFRESHRATES = $00000001; {$EXTERNALSYM DDEDM_REFRESHRATES} (* * 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). *) DDEDM_STANDARDVGAMODES = $00000002; {$EXTERNALSYM DDEDM_STANDARDVGAMODES} (**************************************************************************** * * DIRECTDRAW SETCOOPERATIVELEVEL FLAGS * ****************************************************************************) (* * Exclusive mode owner will be responsible for the entire primary surface. * GDI can be ignored. used with DD *) DDSCL_FULLSCREEN = $00000001; {$EXTERNALSYM DDSCL_FULLSCREEN} (* * allow CTRL_ALT_DEL to work while in fullscreen exclusive mode *) DDSCL_ALLOWREBOOT = $00000002; {$EXTERNALSYM DDSCL_ALLOWREBOOT} (* * prevents DDRAW from modifying the application window. * prevents DDRAW from minimize/restore the application window on activation. *) DDSCL_NOWINDOWCHANGES = $00000004; {$EXTERNALSYM DDSCL_NOWINDOWCHANGES} (* * app wants to work as a regular Windows application *) DDSCL_NORMAL = $00000008; {$EXTERNALSYM DDSCL_NORMAL} (* * app wants exclusive access *) DDSCL_EXCLUSIVE = $00000010; {$EXTERNALSYM DDSCL_EXCLUSIVE} (* * app can deal with non-windows display modes *) DDSCL_ALLOWMODEX = $00000040; {$EXTERNALSYM DDSCL_ALLOWMODEX} (* * this window will receive the focus messages *) DDSCL_SETFOCUSWINDOW = $00000080; {$EXTERNALSYM DDSCL_SETFOCUSWINDOW} (* * this window is associated with the DDRAW object and will * cover the screen in fullscreen mode *) DDSCL_SETDEVICEWINDOW = $00000100; {$EXTERNALSYM DDSCL_SETDEVICEWINDOW} (* * app wants DDRAW to create a window to be associated with the * DDRAW object *) DDSCL_CREATEDEVICEWINDOW = $00000200; {$EXTERNALSYM DDSCL_CREATEDEVICEWINDOW} (* * App explicitly asks DDRAW/D3D to be multithread safe. This makes D3D * take the global crtisec more frequently. *) DDSCL_MULTITHREADED = $00000400; {$EXTERNALSYM DDSCL_MULTITHREADED} (* * App specifies that it would like to keep the FPU set up for optimal Direct3D * performance (single precision and exceptions disabled) so Direct3D * does not need to explicitly set the FPU each time. This is assumed by * default in DirectX 7. See also DDSCL_FPUPRESERVE *) DDSCL_FPUSETUP = $00000800; {$EXTERNALSYM DDSCL_FPUSETUP} (* * App specifies that it needs either double precision FPU or FPU exceptions * enabled. This makes Direct3D explicitly set the FPU state eah time it is * called. Setting the flag will reduce Direct3D performance. The flag is * assumed by default in DirectX 6 and earlier. See also DDSCL_FPUSETUP *) DDSCL_FPUPRESERVE = $00001000; {$EXTERNALSYM DDSCL_FPUPRESERVE} (**************************************************************************** * * 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. *) DDBLT_ALPHADEST = $00000001; {$EXTERNALSYM DDBLT_ALPHADEST} (* * Use the dwConstAlphaDest field in the DDBLTFX structure as the alpha channel * for the destination surface for this blt. *) DDBLT_ALPHADESTCONSTOVERRIDE = $00000002; {$EXTERNALSYM DDBLT_ALPHADESTCONSTOVERRIDE} (* * The NEG suffix indicates that the destination surface becomes more * transparent as the alpha value increases. (0 is opaque) *) DDBLT_ALPHADESTNEG = $00000004; {$EXTERNALSYM DDBLT_ALPHADESTNEG} (* * Use the lpDDSAlphaDest field in the DDBLTFX structure as the alpha * channel for the destination for this blt. *) DDBLT_ALPHADESTSURFACEOVERRIDE = $00000008; {$EXTERNALSYM DDBLT_ALPHADESTSURFACEOVERRIDE} (* * Use the dwAlphaEdgeBlend field in the DDBLTFX structure as the alpha channel * for the edges of the image that border the color key colors. *) DDBLT_ALPHAEDGEBLEND = $00000010; {$EXTERNALSYM DDBLT_ALPHAEDGEBLEND} (* * 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. *) DDBLT_ALPHASRC = $00000020; {$EXTERNALSYM DDBLT_ALPHASRC} (* * Use the dwConstAlphaSrc field in the DDBLTFX structure as the alpha channel * for the source for this blt. *) DDBLT_ALPHASRCCONSTOVERRIDE = $00000040; {$EXTERNALSYM DDBLT_ALPHASRCCONSTOVERRIDE} (* * The NEG suffix indicates that the source surface becomes more transparent * as the alpha value increases. (0 is opaque) *) DDBLT_ALPHASRCNEG = $00000080; {$EXTERNALSYM DDBLT_ALPHASRCNEG} (* * Use the lpDDSAlphaSrc field in the DDBLTFX structure as the alpha channel * for the source for this blt. *) DDBLT_ALPHASRCSURFACEOVERRIDE = $00000100; {$EXTERNALSYM DDBLT_ALPHASRCSURFACEOVERRIDE} (* * Do this blt asynchronously through the FIFO in the order received. If * there is no room in the hardware FIFO fail the call. *) DDBLT_ASYNC = $00000200; {$EXTERNALSYM DDBLT_ASYNC} (* * Uses the dwFillColor field in the DDBLTFX structure as the RGB color * to fill the destination rectangle on the destination surface with. *) DDBLT_COLORFILL = $00000400; {$EXTERNALSYM DDBLT_COLORFILL} (* * Uses the dwDDFX field in the DDBLTFX structure to specify the effects * to use for the blt. *) DDBLT_DDFX = $00000800; {$EXTERNALSYM DDBLT_DDFX} (* * Uses the dwDDROPS field in the DDBLTFX structure to specify the ROPS * that are not part of the Win32 API. *) DDBLT_DDROPS = $00001000; {$EXTERNALSYM DDBLT_DDROPS} (* * Use the color key associated with the destination surface. *) DDBLT_KEYDEST = $00002000; {$EXTERNALSYM DDBLT_KEYDEST} (* * Use the dckDestColorkey field in the DDBLTFX structure as the color key * for the destination surface. *) DDBLT_KEYDESTOVERRIDE = $00004000; {$EXTERNALSYM DDBLT_KEYDESTOVERRIDE} (* * Use the color key associated with the source surface. *) DDBLT_KEYSRC = $00008000; {$EXTERNALSYM DDBLT_KEYSRC} (* * Use the dckSrcColorkey field in the DDBLTFX structure as the color key * for the source surface. *) DDBLT_KEYSRCOVERRIDE = $00010000; {$EXTERNALSYM DDBLT_KEYSRCOVERRIDE} (* * 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. *) DDBLT_ROP = $00020000; {$EXTERNALSYM DDBLT_ROP} (* * Use the dwRotationAngle field in the DDBLTFX structure as the angle * (specified in 1/100th of a degree) to rotate the surface. *) DDBLT_ROTATIONANGLE = $00040000; {$EXTERNALSYM DDBLT_ROTATIONANGLE} (* * 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. *) DDBLT_ZBUFFER = $00080000; {$EXTERNALSYM DDBLT_ZBUFFER} (* * 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. *) DDBLT_ZBUFFERDESTCONSTOVERRIDE = $00100000; {$EXTERNALSYM DDBLT_ZBUFFERDESTCONSTOVERRIDE} (* * 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. *) DDBLT_ZBUFFERDESTOVERRIDE = $00200000; {$EXTERNALSYM DDBLT_ZBUFFERDESTOVERRIDE} (* * 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. *) DDBLT_ZBUFFERSRCCONSTOVERRIDE = $00400000; {$EXTERNALSYM DDBLT_ZBUFFERSRCCONSTOVERRIDE} (* * 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. *) DDBLT_ZBUFFERSRCOVERRIDE = $00800000; {$EXTERNALSYM DDBLT_ZBUFFERSRCOVERRIDE} (* * wait until the device is ready to handle the blt * this will cause blt to not return DDERR_WASSTILLDRAWING *) DDBLT_WAIT = $01000000; {$EXTERNALSYM DDBLT_WAIT} (* * Uses the dwFillDepth field in the DDBLTFX structure as the depth value * to fill the destination rectangle on the destination Z-buffer surface * with. *) DDBLT_DEPTHFILL = $02000000; {$EXTERNALSYM DDBLT_DEPTHFILL} (* * Return immediately (with DDERR_WASSTILLDRAWING) if the device is not * ready to schedule the blt at the time Blt() is called. *) DDBLT_DONOTWAIT = $08000000; {$EXTERNALSYM DDBLT_DONOTWAIT} (* * These flags indicate a presentation blt (i.e. a blt * that moves surface contents from an offscreen back buffer to the primary * surface). The driver is not allowed to "queue" more than three such blts. * The "end" of the presentation blt is indicated, since the * blt may be clipped, in which case the runtime will call the driver with * several blts. All blts (even if not clipped) are tagged with DDBLT_PRESENTATION * and the last (even if not clipped) additionally with DDBLT_LAST_PRESENTATION. * Thus the true rule is that the driver must not schedule a DDBLT_PRESENTATION * blt if there are 3 or more DDBLT_PRESENTLAST blts in the hardware pipe. * If there are such blts in the pipe, the driver should return DDERR_WASSTILLDRAWING * until the oldest queued DDBLT_LAST_PRESENTATION blts has been retired (i.e. the * pixels have been actually written to the primary surface). Once the oldest blt * has been retired, the driver is free to schedule the current blt. * The goal is to provide a mechanism whereby the device's hardware queue never * gets more than 3 frames ahead of the frames being generated by the application. * When excessive queueing occurs, applications become unusable because the application * visibly lags user input, and such problems make windowed interactive applications impossible. * Some drivers may not have sufficient knowledge of their hardware's FIFO to know * when a certain blt has been retired. Such drivers should code cautiously, and * simply not allow any frames to be queued at all. DDBLT_LAST_PRESENTATION should cause * such drivers to return DDERR_WASSTILLDRAWING until the accelerator is completely * finished- exactly as if the application had called Lock on the source surface * before calling Blt. * In other words, the driver is allowed and encouraged to * generate as much latency as it can, but never more than 3 frames worth. * Implementation detail: Drivers should count blts against the SOURCE surface, not * against the primary surface. This enables multiple parallel windowed application * to function more optimally. * This flag is passed only to DX8 or higher drivers. * * APPLICATIONS DO NOT SET THESE FLAGS. THEY ARE SET BY THE DIRECTDRAW RUNTIME. * *) DDBLT_PRESENTATION = $10000000; {$EXTERNALSYM DDBLT_PRESENTATION} DDBLT_LAST_PRESENTATION = $20000000; {$EXTERNALSYM DDBLT_LAST_PRESENTATION} (* * If DDBLT_EXTENDED_FLAGS is set, then the driver should re-interpret * other flags according to the definitions that follow. * For example, bit 0 (0x00000001L) means DDBLT_ALPHADEST, unless * DDBLT_EXTENDED_FLAGS is also set, in which case bit 0 means * DDBLT_EXTENDED_LINEAR_CONTENT. * Only DirectX9 and higher drivers will be given extended blt flags. * Only flags explicitly mentioned here should be re-interpreted. * All other flags retain their original meanings. * * List of re-interpreted flags: * * Bit Hex value New meaning old meaning * --------------------------------------------------------------- * 2 0x00000004 DDBLT_EXTENDED_LINEAR_CONTENT DDBLT_ALPHADESTNEG * 4 0x00000010 DDBLT_EXTENDED_PRESENTATION_STRETCHFACTOR DDBLT_ALPHAEDGEBLEND * * * NOTE: APPLICATIONS SHOULD NOT SET THIS FLAG. THIS FLAG IS INTENDED * FOR USE BY THE DIRECT3D RUNTIME. *) DDBLT_EXTENDED_FLAGS = $40000000; {$EXTERNALSYM DDBLT_EXTENDED_FLAGS} (* * EXTENDED FLAG. SEE DEFINITION OF DDBLT_EXTENDED_FLAGS. * This flag indidcates that the source surface contains content in a * linear color space. The driver may perform gamma correction to the * desktop color space (i.e. sRGB, gamma 2.2) as part of this blt. * If the device can perform such a conversion as part of the copy, * the driver should also set D3DCAPS3_LINEAR_TO_SRGB_PRESENTATION * * NOTE: APPLICATIONS SHOULD NOT SET THIS FLAG. THIS FLAG IS INTENDED * FOR USE BY THE DIRECT3D RUNTIME. Use IDirect3DSwapChain9::Present * and specify D3DPRESENT_LINEAR_CONTENT in order to use this functionality. *) DDBLT_EXTENDED_LINEAR_CONTENT = $00000004; {$EXTERNALSYM DDBLT_EXTENDED_LINEAR_CONTENT} (**************************************************************************** * * BLTFAST FLAGS * ****************************************************************************) DDBLTFAST_NOCOLORKEY = $00000000; {$EXTERNALSYM DDBLTFAST_NOCOLORKEY} DDBLTFAST_SRCCOLORKEY = $00000001; {$EXTERNALSYM DDBLTFAST_SRCCOLORKEY} DDBLTFAST_DESTCOLORKEY = $00000002; {$EXTERNALSYM DDBLTFAST_DESTCOLORKEY} DDBLTFAST_WAIT = $00000010; {$EXTERNALSYM DDBLTFAST_WAIT} DDBLTFAST_DONOTWAIT = $00000020; {$EXTERNALSYM DDBLTFAST_DONOTWAIT} (**************************************************************************** * * FLIP FLAGS * ****************************************************************************) DDFLIP_WAIT = $00000001; {$EXTERNALSYM DDFLIP_WAIT} (* * Indicates that the target surface contains the even field of video data. * This flag is only valid with an overlay surface. *) DDFLIP_EVEN = $00000002; {$EXTERNALSYM DDFLIP_EVEN} (* * Indicates that the target surface contains the odd field of video data. * This flag is only valid with an overlay surface. *) DDFLIP_ODD = $00000004; {$EXTERNALSYM DDFLIP_ODD} (* * Causes DirectDraw to perform the physical flip immediately and return * to the application. Typically, what was the front buffer but is now the back * buffer will still be visible (depending on timing) until the next vertical * retrace. Subsequent operations involving the two flipped surfaces will * not check to see if the physical flip has finished (i.e. will not return * DDERR_WASSTILLDRAWING for that reason (but may for other reasons)). * This allows an application to perform Flips at a higher frequency than the * monitor refresh rate, but may introduce visible artifacts. * Only effective if DDCAPS2_FLIPNOVSYNC is set. If that bit is not set, * DDFLIP_NOVSYNC has no effect. *) DDFLIP_NOVSYNC = $00000008; {$EXTERNALSYM DDFLIP_NOVSYNC} (* * Flip Interval Flags. These flags indicate how many vertical retraces to wait between * each flip. The default is one. DirectDraw will return DDERR_WASSTILLDRAWING for each * surface involved in the flip until the specified number of vertical retraces has * ocurred. Only effective if DDCAPS2_FLIPINTERVAL is set. If that bit is not set, * DDFLIP_INTERVALn has no effect. *) (* * DirectDraw will flip on every other vertical sync *) DDFLIP_INTERVAL2 = $02000000; {$EXTERNALSYM DDFLIP_INTERVAL2} (* * DirectDraw will flip on every third vertical sync *) DDFLIP_INTERVAL3 = $03000000; {$EXTERNALSYM DDFLIP_INTERVAL3} (* * DirectDraw will flip on every fourth vertical sync *) DDFLIP_INTERVAL4 = $04000000; {$EXTERNALSYM DDFLIP_INTERVAL4} (* * DirectDraw will flip and display a main stereo surface *) DDFLIP_STEREO = $00000010; {$EXTERNALSYM DDFLIP_STEREO} (* * On IDirectDrawSurface7 and higher interfaces, the default is DDFLIP_WAIT. If you wish * to override the default and use time when the accelerator is busy (as denoted by * the DDERR_WASSTILLDRAWING return code) then use DDFLIP_DONOTWAIT. *) DDFLIP_DONOTWAIT = $00000020; {$EXTERNALSYM DDFLIP_DONOTWAIT} (**************************************************************************** * * 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. *) DDOVER_ALPHADEST = $00000001; {$EXTERNALSYM DDOVER_ALPHADEST} (* * Use the dwConstAlphaDest field in the DDOVERLAYFX structure as the * destination alpha channel for this overlay. *) DDOVER_ALPHADESTCONSTOVERRIDE = $00000002; {$EXTERNALSYM DDOVER_ALPHADESTCONSTOVERRIDE} (* * The NEG suffix indicates that the destination surface becomes more * transparent as the alpha value increases. *) DDOVER_ALPHADESTNEG = $00000004; {$EXTERNALSYM DDOVER_ALPHADESTNEG} (* * Use the lpDDSAlphaDest field in the DDOVERLAYFX structure as the alpha * channel destination for this overlay. *) DDOVER_ALPHADESTSURFACEOVERRIDE = $00000008; {$EXTERNALSYM DDOVER_ALPHADESTSURFACEOVERRIDE} (* * Use the dwAlphaEdgeBlend field in the DDOVERLAYFX structure as the alpha * channel for the edges of the image that border the color key colors. *) DDOVER_ALPHAEDGEBLEND = $00000010; {$EXTERNALSYM DDOVER_ALPHAEDGEBLEND} (* * 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. *) DDOVER_ALPHASRC = $00000020; {$EXTERNALSYM DDOVER_ALPHASRC} (* * Use the dwConstAlphaSrc field in the DDOVERLAYFX structure as the source * alpha channel for this overlay. *) DDOVER_ALPHASRCCONSTOVERRIDE = $00000040; {$EXTERNALSYM DDOVER_ALPHASRCCONSTOVERRIDE} (* * The NEG suffix indicates that the source surface becomes more transparent * as the alpha value increases. *) DDOVER_ALPHASRCNEG = $00000080; {$EXTERNALSYM DDOVER_ALPHASRCNEG} (* * Use the lpDDSAlphaSrc field in the DDOVERLAYFX structure as the alpha channel * source for this overlay. *) DDOVER_ALPHASRCSURFACEOVERRIDE = $00000100; {$EXTERNALSYM DDOVER_ALPHASRCSURFACEOVERRIDE} (* * Turn this overlay off. *) DDOVER_HIDE = $00000200; {$EXTERNALSYM DDOVER_HIDE} (* * Use the color key associated with the destination surface. *) DDOVER_KEYDEST = $00000400; {$EXTERNALSYM DDOVER_KEYDEST} (* * Use the dckDestColorkey field in the DDOVERLAYFX structure as the color key * for the destination surface *) DDOVER_KEYDESTOVERRIDE = $00000800; {$EXTERNALSYM DDOVER_KEYDESTOVERRIDE} (* * Use the color key associated with the source surface. *) DDOVER_KEYSRC = $00001000; {$EXTERNALSYM DDOVER_KEYSRC} (* * Use the dckSrcColorkey field in the DDOVERLAYFX structure as the color key * for the source surface. *) DDOVER_KEYSRCOVERRIDE = $00002000; {$EXTERNALSYM DDOVER_KEYSRCOVERRIDE} (* * Turn this overlay on. *) DDOVER_SHOW = $00004000; {$EXTERNALSYM DDOVER_SHOW} (* * Add a dirty rect to an emulated overlayed surface. *) DDOVER_ADDDIRTYRECT = $00008000; {$EXTERNALSYM DDOVER_ADDDIRTYRECT} (* * Redraw all dirty rects on an emulated overlayed surface. *) DDOVER_REFRESHDIRTYRECTS = $00010000; {$EXTERNALSYM DDOVER_REFRESHDIRTYRECTS} (* * Redraw the entire surface on an emulated overlayed surface. *) DDOVER_REFRESHALL = $00020000; {$EXTERNALSYM DDOVER_REFRESHALL} (* * Use the overlay FX flags to define special overlay FX *) DDOVER_DDFX = $00080000; {$EXTERNALSYM DDOVER_DDFX} (* * Autoflip the overlay when ever the video port autoflips *) DDOVER_AUTOFLIP = $00100000; {$EXTERNALSYM DDOVER_AUTOFLIP} (* * Display each field of video port data individually without * causing any jittery artifacts *) DDOVER_BOB = $00200000; {$EXTERNALSYM DDOVER_BOB} (* * Indicates that bob/weave decisions should not be overridden by other * interfaces. *) DDOVER_OVERRIDEBOBWEAVE = $00400000; {$EXTERNALSYM DDOVER_OVERRIDEBOBWEAVE} (* * Indicates that the surface memory is composed of interleaved fields. *) DDOVER_INTERLEAVED = $00800000; {$EXTERNALSYM DDOVER_INTERLEAVED} (* * Indicates that bob will be performed using hardware rather than * software or emulated. *) DDOVER_BOBHARDWARE = $01000000; {$EXTERNALSYM DDOVER_BOBHARDWARE} (* * Indicates that overlay FX structure contains valid ARGB scaling factors. *) DDOVER_ARGBSCALEFACTORS = $02000000; {$EXTERNALSYM DDOVER_ARGBSCALEFACTORS} (* * Indicates that ARGB scaling factors can be degraded to fit driver capabilities. *) DDOVER_DEGRADEARGBSCALING = $04000000; {$EXTERNALSYM DDOVER_DEGRADEARGBSCALING} {$IFDEF DIRECT3D_VERSION_9_VISTA} (**************************************************************************** * * DIRECTDRAWSURFACE SETSURFACEDESC FLAGS * ****************************************************************************) (* * The default. The GDI DC will be tore down. *) DDSETSURFACEDESC_RECREATEDC = $00000000; // default {$EXTERNALSYM DDSETSURFACEDESC_RECREATEDC} (* * The default. The GDI DC will be kept. *) DDSETSURFACEDESC_PRESERVEDC = $00000001; {$EXTERNALSYM DDSETSURFACEDESC_PRESERVEDC} {$ENDIF} (**************************************************************************** * * 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. *) DDLOCK_SURFACEMEMORYPTR = $00000000; // = default {$EXTERNALSYM DDLOCK_SURFACEMEMORYPTR} (* * 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. *) DDLOCK_WAIT = $00000001; {$EXTERNALSYM DDLOCK_WAIT} (* * Set if an event handle is being passed to Lock. Lock will trigger the event * when it can return the surface memory pointer requested. *) DDLOCK_EVENT = $00000002; {$EXTERNALSYM DDLOCK_EVENT} (* * Indicates that the surface being locked will only be read from. *) DDLOCK_READONLY = $00000010; {$EXTERNALSYM DDLOCK_READONLY} (* * Indicates that the surface being locked will only be written to *) DDLOCK_WRITEONLY = $00000020; {$EXTERNALSYM DDLOCK_WRITEONLY} (* * 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. *) DDLOCK_NOSYSLOCK = $00000800; {$EXTERNALSYM DDLOCK_NOSYSLOCK} (* * Used only with Direct3D Vertex Buffer Locks. Indicates that no vertices * that were referred to in Draw*PrimtiveVB calls since the start of the * frame (or the last lock without this flag) will be modified during the * lock. This can be useful when one is only appending data to the vertex * buffer *) DDLOCK_NOOVERWRITE = $00001000; {$EXTERNALSYM DDLOCK_NOOVERWRITE} (* * Indicates that no assumptions will be made about the contents of the * surface or vertex buffer during this lock. * This enables two things: * - Direct3D or the driver may provide an alternative memory * area as the vertex buffer. This is useful when one plans to clear the * contents of the vertex buffer and fill in new data. * - Drivers sometimes store surface data in a re-ordered format. * When the application locks the surface, the driver is forced to un-re-order * the surface data before allowing the application to see the surface contents. * This flag is a hint to the driver that it can skip the un-re-ordering process * since the application plans to overwrite every single pixel in the surface * or locked rectangle (and so erase any un-re-ordered pixels anyway). * Applications should always set this flag when they intend to overwrite the entire * surface or locked rectangle. *) DDLOCK_DISCARDCONTENTS = $00002000; {$EXTERNALSYM DDLOCK_DISCARDCONTENTS} (* * DDLOCK_OKTOSWAP is an older, less informative name for DDLOCK_DISCARDCONTENTS *) DDLOCK_OKTOSWAP = $00002000; {$EXTERNALSYM DDLOCK_OKTOSWAP} (* * On IDirectDrawSurface7 and higher interfaces, the default is DDLOCK_WAIT. If you wish * to override the default and use time when the accelerator is busy (as denoted by * the DDERR_WASSTILLDRAWING return code) then use DDLOCK_DONOTWAIT. *) DDLOCK_DONOTWAIT = $00004000; {$EXTERNALSYM DDLOCK_DONOTWAIT} (* * This indicates volume texture lock with front and back specified. *) DDLOCK_HASVOLUMETEXTUREBOXRECT = $00008000; {$EXTERNALSYM DDLOCK_HASVOLUMETEXTUREBOXRECT} (* * This indicates that the driver should not update dirty rect information for this lock. *) DDLOCK_NODIRTYUPDATE = $00010000; {$EXTERNALSYM DDLOCK_NODIRTYUPDATE} (**************************************************************************** * * 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. *) DDBLTFX_ARITHSTRETCHY = $00000001; {$EXTERNALSYM DDBLTFX_ARITHSTRETCHY} (* * Do this blt mirroring the surface left to right. Spin the * surface around its y-axis. *) DDBLTFX_MIRRORLEFTRIGHT = $00000002; {$EXTERNALSYM DDBLTFX_MIRRORLEFTRIGHT} (* * Do this blt mirroring the surface up and down. Spin the surface * around its x-axis. *) DDBLTFX_MIRRORUPDOWN = $00000004; {$EXTERNALSYM DDBLTFX_MIRRORUPDOWN} (* * Schedule this blt to avoid tearing. *) DDBLTFX_NOTEARING = $00000008; {$EXTERNALSYM DDBLTFX_NOTEARING} (* * Do this blt rotating the surface one hundred and eighty degrees. *) DDBLTFX_ROTATE180 = $00000010; {$EXTERNALSYM DDBLTFX_ROTATE180} (* * Do this blt rotating the surface two hundred and seventy degrees. *) DDBLTFX_ROTATE270 = $00000020; {$EXTERNALSYM DDBLTFX_ROTATE270} (* * Do this blt rotating the surface ninety degrees. *) DDBLTFX_ROTATE90 = $00000040; {$EXTERNALSYM DDBLTFX_ROTATE90} (* * Do this z blt using dwZBufferLow and dwZBufferHigh as range values * specified to limit the bits copied from the source surface. *) DDBLTFX_ZBUFFERRANGE = $00000080; {$EXTERNALSYM DDBLTFX_ZBUFFERRANGE} (* * Do this z blt adding the dwZBufferBaseDest to each of the sources z values * before comparing it with the desting z values. *) DDBLTFX_ZBUFFERBASEDEST = $00000100; {$EXTERNALSYM DDBLTFX_ZBUFFERBASEDEST} (**************************************************************************** * * DIRECTDRAWSURFACE OVERLAY FX FLAGS * ****************************************************************************) (* * If stretching, use arithmetic stretching along the Y axis for this overlay. *) DDOVERFX_ARITHSTRETCHY = $00000001; {$EXTERNALSYM DDOVERFX_ARITHSTRETCHY} (* * Mirror the overlay across the vertical axis *) DDOVERFX_MIRRORLEFTRIGHT = $00000002; {$EXTERNALSYM DDOVERFX_MIRRORLEFTRIGHT} (* * Mirror the overlay across the horizontal axis *) DDOVERFX_MIRRORUPDOWN = $00000004; {$EXTERNALSYM DDOVERFX_MIRRORUPDOWN} (* * Deinterlace the overlay, if possible *) DDOVERFX_DEINTERLACE = $00000008; {$EXTERNALSYM DDOVERFX_DEINTERLACE} (**************************************************************************** * * DIRECTDRAW WAITFORVERTICALBLANK FLAGS * ****************************************************************************) (* * return when the vertical blank interval begins *) DDWAITVB_BLOCKBEGIN = $00000001; {$EXTERNALSYM DDWAITVB_BLOCKBEGIN} (* * set up an event to trigger when the vertical blank begins *) DDWAITVB_BLOCKBEGINEVENT = $00000002; {$EXTERNALSYM DDWAITVB_BLOCKBEGINEVENT} (* * return when the vertical blank interval ends and display begins *) DDWAITVB_BLOCKEND = $00000004; {$EXTERNALSYM DDWAITVB_BLOCKEND} (**************************************************************************** * * DIRECTDRAW GETFLIPSTATUS FLAGS * ****************************************************************************) (* * is it OK to flip now? *) DDGFS_CANFLIP = $00000001; {$EXTERNALSYM DDGFS_CANFLIP} (* * is the last flip finished? *) DDGFS_ISFLIPDONE = $00000002; {$EXTERNALSYM DDGFS_ISFLIPDONE} (**************************************************************************** * * DIRECTDRAW GETBLTSTATUS FLAGS * ****************************************************************************) (* * is it OK to blt now? *) DDGBS_CANBLT = $00000001; {$EXTERNALSYM DDGBS_CANBLT} (* * is the blt to the surface finished? *) DDGBS_ISBLTDONE = $00000002; {$EXTERNALSYM DDGBS_ISBLTDONE} (**************************************************************************** * * DIRECTDRAW ENUMOVERLAYZORDER FLAGS * ****************************************************************************) (* * Enumerate overlays back to front. *) DDENUMOVERLAYZ_BACKTOFRONT = $00000000; {$EXTERNALSYM DDENUMOVERLAYZ_BACKTOFRONT} (* * Enumerate overlays front to back *) DDENUMOVERLAYZ_FRONTTOBACK = $00000001; {$EXTERNALSYM DDENUMOVERLAYZ_FRONTTOBACK} (**************************************************************************** * * DIRECTDRAW UPDATEOVERLAYZORDER FLAGS * ****************************************************************************) (* * Send overlay to front *) DDOVERZ_SENDTOFRONT = $00000000; {$EXTERNALSYM DDOVERZ_SENDTOFRONT} (* * Send overlay to back *) DDOVERZ_SENDTOBACK = $00000001; {$EXTERNALSYM DDOVERZ_SENDTOBACK} (* * Move Overlay forward *) DDOVERZ_MOVEFORWARD = $00000002; {$EXTERNALSYM DDOVERZ_MOVEFORWARD} (* * Move Overlay backward *) DDOVERZ_MOVEBACKWARD = $00000003; {$EXTERNALSYM DDOVERZ_MOVEBACKWARD} (* * Move Overlay in front of relative surface *) DDOVERZ_INSERTINFRONTOF = $00000004; {$EXTERNALSYM DDOVERZ_INSERTINFRONTOF} (* * Move Overlay in back of relative surface *) DDOVERZ_INSERTINBACKOF = $00000005; {$EXTERNALSYM DDOVERZ_INSERTINBACKOF} (**************************************************************************** * * DIRECTDRAW SETGAMMARAMP FLAGS * ****************************************************************************) (* * Request calibrator to adjust the gamma ramp according to the physical * properties of the display so that the result should appear identical * on all systems. *) DDSGR_CALIBRATE = $00000001; {$EXTERNALSYM DDSGR_CALIBRATE} (**************************************************************************** * * DIRECTDRAW STARTMODETEST FLAGS * ****************************************************************************) (* * Indicates that the mode being tested has passed *) DDSMT_ISTESTREQUIRED = $00000001; {$EXTERNALSYM DDSMT_ISTESTREQUIRED} (**************************************************************************** * * DIRECTDRAW EVALUATEMODE FLAGS * ****************************************************************************) (* * Indicates that the mode being tested has passed *) DDEM_MODEPASSED = $00000001; {$EXTERNALSYM DDEM_MODEPASSED} (* * Indicates that the mode being tested has failed *) DDEM_MODEFAILED = $00000002; {$EXTERNALSYM DDEM_MODEFAILED} (*=========================================================================== * * * 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 *) DD_OK = 0; {$EXTERNALSYM DD_OK} DD_FALSE = S_FALSE; {$EXTERNALSYM DD_FALSE} (**************************************************************************** * * 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 *) DDENUMRET_CANCEL = 0; {$EXTERNALSYM DDENUMRET_CANCEL} (* * continue the enumeration *) DDENUMRET_OK = 1; {$EXTERNALSYM DDENUMRET_OK} (**************************************************************************** * * DIRECTDRAW ERRORS * * Errors are represented by negative values and cannot be combined. * ****************************************************************************) const _FACDD = $876; {$EXTERNALSYM _FACDD} _MAKE_DDHRESULT = HResult(1 shl 31) or HResult(_FACDD shl 16); //#define MAKE_DDHRESULT( code ) MAKE_HRESULT( 1, _FACDD, code ) function MAKE_DDHRESULT(Code: DWORD): HResult; {$EXTERNALSYM MAKE_DDHRESULT} const (* * This object is already initialized *) DDERR_ALREADYINITIALIZED = HResult(_MAKE_DDHRESULT + 5); {$EXTERNALSYM DDERR_ALREADYINITIALIZED} (* * This surface can not be attached to the requested surface. *) DDERR_CANNOTATTACHSURFACE = HResult(_MAKE_DDHRESULT + 10); {$EXTERNALSYM DDERR_CANNOTATTACHSURFACE} (* * This surface can not be detached from the requested surface. *) DDERR_CANNOTDETACHSURFACE = HResult(_MAKE_DDHRESULT + 20); {$EXTERNALSYM DDERR_CANNOTDETACHSURFACE} (* * Support is currently not available. *) DDERR_CURRENTLYNOTAVAIL = HResult(_MAKE_DDHRESULT + 40); {$EXTERNALSYM DDERR_CURRENTLYNOTAVAIL} (* * An exception was encountered while performing the requested operation *) DDERR_EXCEPTION = HResult(_MAKE_DDHRESULT + 55); {$EXTERNALSYM DDERR_EXCEPTION} (* * Generic failure. *) DDERR_GENERIC = E_FAIL; {$EXTERNALSYM DDERR_GENERIC} (* * Height of rectangle provided is not a multiple of reqd alignment *) DDERR_HEIGHTALIGN = HResult(_MAKE_DDHRESULT + 90); {$EXTERNALSYM DDERR_HEIGHTALIGN} (* * Unable to match primary surface creation request with existing * primary surface. *) DDERR_INCOMPATIBLEPRIMARY = HResult(_MAKE_DDHRESULT + 95); {$EXTERNALSYM DDERR_INCOMPATIBLEPRIMARY} (* * One or more of the caps bits passed to the callback are incorrect. *) DDERR_INVALIDCAPS = HResult(_MAKE_DDHRESULT + 100); {$EXTERNALSYM DDERR_INVALIDCAPS} (* * DirectDraw does not support provided Cliplist. *) DDERR_INVALIDCLIPLIST = HResult(_MAKE_DDHRESULT + 110); {$EXTERNALSYM DDERR_INVALIDCLIPLIST} (* * DirectDraw does not support the requested mode *) DDERR_INVALIDMODE = HResult(_MAKE_DDHRESULT + 120); {$EXTERNALSYM DDERR_INVALIDMODE} (* * DirectDraw received a pointer that was an invalid DIRECTDRAW object. *) DDERR_INVALIDOBJECT = HResult(_MAKE_DDHRESULT + 130); {$EXTERNALSYM DDERR_INVALIDOBJECT} (* * One or more of the parameters passed to the callback function are * incorrect. *) DDERR_INVALIDPARAMS = E_INVALIDARG; {$EXTERNALSYM DDERR_INVALIDPARAMS} (* * pixel format was invalid as specified *) DDERR_INVALIDPIXELFORMAT = HResult(_MAKE_DDHRESULT + 145); {$EXTERNALSYM DDERR_INVALIDPIXELFORMAT} (* * Rectangle provided was invalid. *) DDERR_INVALIDRECT = HResult(_MAKE_DDHRESULT + 150); {$EXTERNALSYM DDERR_INVALIDRECT} (* * Operation could not be carried out because one or more surfaces are locked *) DDERR_LOCKEDSURFACES = HResult(_MAKE_DDHRESULT + 160); {$EXTERNALSYM DDERR_LOCKEDSURFACES} (* * There is no 3D present. *) DDERR_NO3D = HResult(_MAKE_DDHRESULT + 170); {$EXTERNALSYM DDERR_NO3D} (* * Operation could not be carried out because there is no alpha accleration * hardware present or available. *) DDERR_NOALPHAHW = HResult(_MAKE_DDHRESULT + 180); {$EXTERNALSYM DDERR_NOALPHAHW} (* * Operation could not be carried out because there is no stereo * hardware present or available. *) DDERR_NOSTEREOHARDWARE = HResult(_MAKE_DDHRESULT + 181); {$EXTERNALSYM DDERR_NOSTEREOHARDWARE} (* * Operation could not be carried out because there is no hardware * present which supports stereo surfaces *) DDERR_NOSURFACELEFT = HResult(_MAKE_DDHRESULT + 182); {$EXTERNALSYM DDERR_NOSURFACELEFT} (* * no clip list available *) DDERR_NOCLIPLIST = HResult(_MAKE_DDHRESULT + 205); {$EXTERNALSYM DDERR_NOCLIPLIST} (* * Operation could not be carried out because there is no color conversion * hardware present or available. *) DDERR_NOCOLORCONVHW = HResult(_MAKE_DDHRESULT + 210); {$EXTERNALSYM DDERR_NOCOLORCONVHW} (* * Create function called without DirectDraw object method SetCooperativeLevel * being called. *) DDERR_NOCOOPERATIVELEVELSET = HResult(_MAKE_DDHRESULT + 212); {$EXTERNALSYM DDERR_NOCOOPERATIVELEVELSET} (* * Surface doesn't currently have a color key *) DDERR_NOCOLORKEY = HResult(_MAKE_DDHRESULT + 215); {$EXTERNALSYM DDERR_NOCOLORKEY} (* * Operation could not be carried out because there is no hardware support * of the dest color key. *) DDERR_NOCOLORKEYHW = HResult(_MAKE_DDHRESULT + 220); {$EXTERNALSYM DDERR_NOCOLORKEYHW} (* * No DirectDraw support possible with current display driver *) DDERR_NODIRECTDRAWSUPPORT = HResult(_MAKE_DDHRESULT + 222); {$EXTERNALSYM DDERR_NODIRECTDRAWSUPPORT} (* * Operation requires the application to have exclusive mode but the * application does not have exclusive mode. *) DDERR_NOEXCLUSIVEMODE = HResult(_MAKE_DDHRESULT + 225); {$EXTERNALSYM DDERR_NOEXCLUSIVEMODE} (* * Flipping visible surfaces is not supported. *) DDERR_NOFLIPHW = HResult(_MAKE_DDHRESULT + 230); {$EXTERNALSYM DDERR_NOFLIPHW} (* * There is no GDI present. *) DDERR_NOGDI = HResult(_MAKE_DDHRESULT + 240); {$EXTERNALSYM DDERR_NOGDI} (* * Operation could not be carried out because there is no hardware present * or available. *) DDERR_NOMIRRORHW = HResult(_MAKE_DDHRESULT + 250); {$EXTERNALSYM DDERR_NOMIRRORHW} (* * Requested item was not found *) DDERR_NOTFOUND = HResult(_MAKE_DDHRESULT + 255); {$EXTERNALSYM DDERR_NOTFOUND} (* * Operation could not be carried out because there is no overlay hardware * present or available. *) DDERR_NOOVERLAYHW = HResult(_MAKE_DDHRESULT + 260); {$EXTERNALSYM DDERR_NOOVERLAYHW} (* * Operation could not be carried out because the source and destination * rectangles are on the same surface and overlap each other. *) DDERR_OVERLAPPINGRECTS = HResult(_MAKE_DDHRESULT + 270); {$EXTERNALSYM DDERR_OVERLAPPINGRECTS} (* * Operation could not be carried out because there is no appropriate raster * op hardware present or available. *) DDERR_NORASTEROPHW = HResult(_MAKE_DDHRESULT + 280); {$EXTERNALSYM DDERR_NORASTEROPHW} (* * Operation could not be carried out because there is no rotation hardware * present or available. *) DDERR_NOROTATIONHW = HResult(_MAKE_DDHRESULT + 290); {$EXTERNALSYM DDERR_NOROTATIONHW} (* * Operation could not be carried out because there is no hardware support * for stretching *) DDERR_NOSTRETCHHW = HResult(_MAKE_DDHRESULT + 310); {$EXTERNALSYM DDERR_NOSTRETCHHW} (* * DirectDrawSurface is not in 4 bit color palette and the requested operation * requires 4 bit color palette. *) DDERR_NOT4BITCOLOR = HResult(_MAKE_DDHRESULT + 316); {$EXTERNALSYM DDERR_NOT4BITCOLOR} (* * DirectDrawSurface is not in 4 bit color index palette and the requested * operation requires 4 bit color index palette. *) DDERR_NOT4BITCOLORINDEX = HResult(_MAKE_DDHRESULT + 317); {$EXTERNALSYM DDERR_NOT4BITCOLORINDEX} (* * DirectDraw Surface is not in 8 bit color mode and the requested operation * requires 8 bit color. *) DDERR_NOT8BITCOLOR = HResult(_MAKE_DDHRESULT + 320); {$EXTERNALSYM DDERR_NOT8BITCOLOR} (* * Operation could not be carried out because there is no texture mapping * hardware present or available. *) DDERR_NOTEXTUREHW = HResult(_MAKE_DDHRESULT + 330); {$EXTERNALSYM DDERR_NOTEXTUREHW} (* * Operation could not be carried out because there is no hardware support * for vertical blank synchronized operations. *) DDERR_NOVSYNCHW = HResult(_MAKE_DDHRESULT + 335); {$EXTERNALSYM DDERR_NOVSYNCHW} (* * Operation could not be carried out because there is no hardware support * for zbuffer blting. *) DDERR_NOZBUFFERHW = HResult(_MAKE_DDHRESULT + 340); {$EXTERNALSYM DDERR_NOZBUFFERHW} (* * Overlay surfaces could not be z layered based on their BltOrder because * the hardware does not support z layering of overlays. *) DDERR_NOZOVERLAYHW = HResult(_MAKE_DDHRESULT + 350); {$EXTERNALSYM DDERR_NOZOVERLAYHW} (* * The hardware needed for the requested operation has already been * allocated. *) DDERR_OUTOFCAPS = HResult(_MAKE_DDHRESULT + 360); {$EXTERNALSYM DDERR_OUTOFCAPS} (* * DirectDraw does not have enough memory to perform the operation. *) DDERR_OUTOFMEMORY = E_OUTOFMEMORY; {$EXTERNALSYM DDERR_OUTOFMEMORY} (* * DirectDraw does not have enough memory to perform the operation. *) DDERR_OUTOFVIDEOMEMORY = HResult(_MAKE_DDHRESULT + 380); {$EXTERNALSYM DDERR_OUTOFVIDEOMEMORY} (* * hardware does not support clipped overlays *) DDERR_OVERLAYCANTCLIP = HResult(_MAKE_DDHRESULT + 382); {$EXTERNALSYM DDERR_OVERLAYCANTCLIP} (* * Can only have ony color key active at one time for overlays *) DDERR_OVERLAYCOLORKEYONLYONEACTIVE = HResult(_MAKE_DDHRESULT + 384); {$EXTERNALSYM DDERR_OVERLAYCOLORKEYONLYONEACTIVE} (* * Access to this palette is being refused because the palette is already * locked by another thread. *) DDERR_PALETTEBUSY = HResult(_MAKE_DDHRESULT + 387); {$EXTERNALSYM DDERR_PALETTEBUSY} (* * No src color key specified for this operation. *) DDERR_COLORKEYNOTSET = HResult(_MAKE_DDHRESULT + 400); {$EXTERNALSYM DDERR_COLORKEYNOTSET} (* * This surface is already attached to the surface it is being attached to. *) DDERR_SURFACEALREADYATTACHED = HResult(_MAKE_DDHRESULT + 410); {$EXTERNALSYM DDERR_SURFACEALREADYATTACHED} (* * This surface is already a dependency of the surface it is being made a * dependency of. *) DDERR_SURFACEALREADYDEPENDENT = HResult(_MAKE_DDHRESULT + 420); {$EXTERNALSYM DDERR_SURFACEALREADYDEPENDENT} (* * Access to this surface is being refused because the surface is already * locked by another thread. *) DDERR_SURFACEBUSY = HResult(_MAKE_DDHRESULT + 430); {$EXTERNALSYM DDERR_SURFACEBUSY} (* * 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. *) DDERR_CANTLOCKSURFACE = HResult(_MAKE_DDHRESULT + 435); {$EXTERNALSYM DDERR_CANTLOCKSURFACE} (* * Access to Surface refused because Surface is obscured. *) DDERR_SURFACEISOBSCURED = HResult(_MAKE_DDHRESULT + 440); {$EXTERNALSYM DDERR_SURFACEISOBSCURED} (* * Access to this surface is being refused because the surface is gone. * The DIRECTDRAWSURFACE object representing this surface should * have Restore called on it. *) DDERR_SURFACELOST = HResult(_MAKE_DDHRESULT + 450); {$EXTERNALSYM DDERR_SURFACELOST} (* * The requested surface is not attached. *) DDERR_SURFACENOTATTACHED = HResult(_MAKE_DDHRESULT + 460); {$EXTERNALSYM DDERR_SURFACENOTATTACHED} (* * Height requested by DirectDraw is too large. *) DDERR_TOOBIGHEIGHT = HResult(_MAKE_DDHRESULT + 470); {$EXTERNALSYM DDERR_TOOBIGHEIGHT} (* * Size requested by DirectDraw is too large -- The individual height and * width are OK. *) DDERR_TOOBIGSIZE = HResult(_MAKE_DDHRESULT + 480); {$EXTERNALSYM DDERR_TOOBIGSIZE} (* * Width requested by DirectDraw is too large. *) DDERR_TOOBIGWIDTH = HResult(_MAKE_DDHRESULT + 490); {$EXTERNALSYM DDERR_TOOBIGWIDTH} (* * Action not supported. *) DDERR_UNSUPPORTED = E_NOTIMPL; {$EXTERNALSYM DDERR_UNSUPPORTED} (* * FOURCC format requested is unsupported by DirectDraw *) DDERR_UNSUPPORTEDFORMAT = HResult(_MAKE_DDHRESULT + 510); {$EXTERNALSYM DDERR_UNSUPPORTEDFORMAT} (* * Bitmask in the pixel format requested is unsupported by DirectDraw *) DDERR_UNSUPPORTEDMASK = HResult(_MAKE_DDHRESULT + 520); {$EXTERNALSYM DDERR_UNSUPPORTEDMASK} (* * The specified stream contains invalid data *) DDERR_INVALIDSTREAM = HResult(_MAKE_DDHRESULT + 521); {$EXTERNALSYM DDERR_INVALIDSTREAM} (* * vertical blank is in progress *) DDERR_VERTICALBLANKINPROGRESS = HResult(_MAKE_DDHRESULT + 537); {$EXTERNALSYM DDERR_VERTICALBLANKINPROGRESS} (* * Informs DirectDraw that the previous Blt which is transfering information * to or from this Surface is incomplete. *) DDERR_WASSTILLDRAWING = HResult(_MAKE_DDHRESULT + 540); {$EXTERNALSYM DDERR_WASSTILLDRAWING} (* * The specified surface type requires specification of the COMPLEX flag *) DDERR_DDSCAPSCOMPLEXREQUIRED = HResult(_MAKE_DDHRESULT + 542); {$EXTERNALSYM DDERR_DDSCAPSCOMPLEXREQUIRED} (* * Rectangle provided was not horizontally aligned on reqd. boundary *) DDERR_XALIGN = HResult(_MAKE_DDHRESULT + 560); {$EXTERNALSYM DDERR_XALIGN} (* * The GUID passed to DirectDrawCreate is not a valid DirectDraw driver * identifier. *) DDERR_INVALIDDIRECTDRAWGUID = HResult(_MAKE_DDHRESULT + 561); {$EXTERNALSYM DDERR_INVALIDDIRECTDRAWGUID} (* * A DirectDraw object representing this driver has already been created * for this process. *) DDERR_DIRECTDRAWALREADYCREATED = HResult(_MAKE_DDHRESULT + 562); {$EXTERNALSYM DDERR_DIRECTDRAWALREADYCREATED} (* * A hardware only DirectDraw object creation was attempted but the driver * did not support any hardware. *) DDERR_NODIRECTDRAWHW = HResult(_MAKE_DDHRESULT + 563); {$EXTERNALSYM DDERR_NODIRECTDRAWHW} (* * this process already has created a primary surface *) DDERR_PRIMARYSURFACEALREADYEXISTS = HResult(_MAKE_DDHRESULT + 564); {$EXTERNALSYM DDERR_PRIMARYSURFACEALREADYEXISTS} (* * software emulation not available. *) DDERR_NOEMULATION = HResult(_MAKE_DDHRESULT + 565); {$EXTERNALSYM DDERR_NOEMULATION} (* * region passed to Clipper::GetClipList is too small. *) DDERR_REGIONTOOSMALL = HResult(_MAKE_DDHRESULT + 566); {$EXTERNALSYM DDERR_REGIONTOOSMALL} (* * an attempt was made to set a clip list for a clipper objec that * is already monitoring an hwnd. *) DDERR_CLIPPERISUSINGHWND = HResult(_MAKE_DDHRESULT + 567); {$EXTERNALSYM DDERR_CLIPPERISUSINGHWND} (* * No clipper object attached to surface object *) DDERR_NOCLIPPERATTACHED = HResult(_MAKE_DDHRESULT + 568); {$EXTERNALSYM DDERR_NOCLIPPERATTACHED} (* * Clipper notification requires an HWND or * no HWND has previously been set as the CooperativeLevel HWND. *) DDERR_NOHWND = HResult(_MAKE_DDHRESULT + 569); {$EXTERNALSYM DDERR_NOHWND} (* * HWND used by DirectDraw CooperativeLevel has been subclassed, * this prevents DirectDraw from restoring state. *) DDERR_HWNDSUBCLASSED = HResult(_MAKE_DDHRESULT + 570); {$EXTERNALSYM DDERR_HWNDSUBCLASSED} (* * The CooperativeLevel HWND has already been set. * It can not be reset while the process has surfaces or palettes created. *) DDERR_HWNDALREADYSET = HResult(_MAKE_DDHRESULT + 571); {$EXTERNALSYM DDERR_HWNDALREADYSET} (* * No palette object attached to this surface. *) DDERR_NOPALETTEATTACHED = HResult(_MAKE_DDHRESULT + 572); {$EXTERNALSYM DDERR_NOPALETTEATTACHED} (* * No hardware support for 16 or 256 color palettes. *) DDERR_NOPALETTEHW = HResult(_MAKE_DDHRESULT + 573); {$EXTERNALSYM DDERR_NOPALETTEHW} (* * If a clipper object is attached to the source surface passed into a * BltFast call. *) DDERR_BLTFASTCANTCLIP = HResult(_MAKE_DDHRESULT + 574); {$EXTERNALSYM DDERR_BLTFASTCANTCLIP} (* * No blter. *) DDERR_NOBLTHW = HResult(_MAKE_DDHRESULT + 575); {$EXTERNALSYM DDERR_NOBLTHW} (* * No DirectDraw ROP hardware. *) DDERR_NODDROPSHW = HResult(_MAKE_DDHRESULT + 576); {$EXTERNALSYM DDERR_NODDROPSHW} (* * returned when GetOverlayPosition is called on a hidden overlay *) DDERR_OVERLAYNOTVISIBLE = HResult(_MAKE_DDHRESULT + 577); {$EXTERNALSYM DDERR_OVERLAYNOTVISIBLE} (* * returned when GetOverlayPosition is called on a overlay that UpdateOverlay * has never been called on to establish a destionation. *) DDERR_NOOVERLAYDEST = HResult(_MAKE_DDHRESULT + 578); {$EXTERNALSYM DDERR_NOOVERLAYDEST} (* * returned when the position of the overlay on the destionation is no longer * legal for that destionation. *) DDERR_INVALIDPOSITION = HResult(_MAKE_DDHRESULT + 579); {$EXTERNALSYM DDERR_INVALIDPOSITION} (* * returned when an overlay member is called for a non-overlay surface *) DDERR_NOTAOVERLAYSURFACE = HResult(_MAKE_DDHRESULT + 580); {$EXTERNALSYM DDERR_NOTAOVERLAYSURFACE} (* * An attempt was made to set the cooperative level when it was already * set to exclusive. *) DDERR_EXCLUSIVEMODEALREADYSET = HResult(_MAKE_DDHRESULT + 581); {$EXTERNALSYM DDERR_EXCLUSIVEMODEALREADYSET} (* * An attempt has been made to flip a surface that is not flippable. *) DDERR_NOTFLIPPABLE = HResult(_MAKE_DDHRESULT + 582); {$EXTERNALSYM DDERR_NOTFLIPPABLE} (* * Can't duplicate primary & 3D surfaces, or surfaces that are implicitly * created. *) DDERR_CANTDUPLICATE = HResult(_MAKE_DDHRESULT + 583); {$EXTERNALSYM DDERR_CANTDUPLICATE} (* * Surface was not locked. An attempt to unlock a surface that was not * locked at all, or by this process, has been attempted. *) DDERR_NOTLOCKED = HResult(_MAKE_DDHRESULT + 584); {$EXTERNALSYM DDERR_NOTLOCKED} (* * Windows can not create any more DCs, or a DC was requested for a paltte-indexed * surface when the surface had no palette AND the display mode was not palette-indexed * (in this case DirectDraw cannot select a proper palette into the DC) *) DDERR_CANTCREATEDC = HResult(_MAKE_DDHRESULT + 585); {$EXTERNALSYM DDERR_CANTCREATEDC} (* * No DC was ever created for this surface. *) DDERR_NODC = HResult(_MAKE_DDHRESULT + 586); {$EXTERNALSYM DDERR_NODC} (* * This surface can not be restored because it was created in a different * mode. *) DDERR_WRONGMODE = HResult(_MAKE_DDHRESULT + 587); {$EXTERNALSYM DDERR_WRONGMODE} (* * This surface can not be restored because it is an implicitly created * surface. *) DDERR_IMPLICITLYCREATED = HResult(_MAKE_DDHRESULT + 588); {$EXTERNALSYM DDERR_IMPLICITLYCREATED} (* * The surface being used is not a palette-based surface *) DDERR_NOTPALETTIZED = HResult(_MAKE_DDHRESULT + 589); {$EXTERNALSYM DDERR_NOTPALETTIZED} (* * The display is currently in an unsupported mode *) DDERR_UNSUPPORTEDMODE = HResult(_MAKE_DDHRESULT + 590); {$EXTERNALSYM DDERR_UNSUPPORTEDMODE} (* * Operation could not be carried out because there is no mip-map * texture mapping hardware present or available. *) DDERR_NOMIPMAPHW = HResult(_MAKE_DDHRESULT + 591); {$EXTERNALSYM DDERR_NOMIPMAPHW} (* * The requested action could not be performed because the surface was of * the wrong type. *) DDERR_INVALIDSURFACETYPE = HResult(_MAKE_DDHRESULT + 592); {$EXTERNALSYM DDERR_INVALIDSURFACETYPE} (* * Device does not support optimized surfaces, therefore no video memory optimized surfaces *) DDERR_NOOPTIMIZEHW = HResult(_MAKE_DDHRESULT + 600); {$EXTERNALSYM DDERR_NOOPTIMIZEHW} (* * Surface is an optimized surface, but has not yet been allocated any memory *) DDERR_NOTLOADED = HResult(_MAKE_DDHRESULT + 601); {$EXTERNALSYM DDERR_NOTLOADED} (* * Attempt was made to create or set a device window without first setting * the focus window *) DDERR_NOFOCUSWINDOW = HResult(_MAKE_DDHRESULT + 602); {$EXTERNALSYM DDERR_NOFOCUSWINDOW} (* * Attempt was made to set a palette on a mipmap sublevel *) DDERR_NOTONMIPMAPSUBLEVEL = HResult(_MAKE_DDHRESULT + 603); {$EXTERNALSYM DDERR_NOTONMIPMAPSUBLEVEL} (* * A DC has already been returned for this surface. Only one DC can be * retrieved per surface. *) DDERR_DCALREADYCREATED = HResult(_MAKE_DDHRESULT + 620); {$EXTERNALSYM DDERR_DCALREADYCREATED} (* * An attempt was made to allocate non-local video memory from a device * that does not support non-local video memory. *) DDERR_NONONLOCALVIDMEM = HResult(_MAKE_DDHRESULT + 630); {$EXTERNALSYM DDERR_NONONLOCALVIDMEM} (* * The attempt to page lock a surface failed. *) DDERR_CANTPAGELOCK = HResult(_MAKE_DDHRESULT + 640); {$EXTERNALSYM DDERR_CANTPAGELOCK} (* * The attempt to page unlock a surface failed. *) DDERR_CANTPAGEUNLOCK = HResult(_MAKE_DDHRESULT + 660); {$EXTERNALSYM DDERR_CANTPAGEUNLOCK} (* * An attempt was made to page unlock a surface with no outstanding page locks. *) DDERR_NOTPAGELOCKED = HResult(_MAKE_DDHRESULT + 680); {$EXTERNALSYM DDERR_NOTPAGELOCKED} (* * There is more data available than the specified buffer size could hold *) DDERR_MOREDATA = HResult(_MAKE_DDHRESULT + 690); {$EXTERNALSYM DDERR_MOREDATA} (* * The data has expired and is therefore no longer valid. *) DDERR_EXPIRED = HResult(_MAKE_DDHRESULT + 691); {$EXTERNALSYM DDERR_EXPIRED} (* * The mode test has finished executing. *) DDERR_TESTFINISHED = HResult(_MAKE_DDHRESULT + 692); {$EXTERNALSYM DDERR_TESTFINISHED} (* * The mode test has switched to a new mode. *) DDERR_NEWMODE = HResult(_MAKE_DDHRESULT + 693); {$EXTERNALSYM DDERR_NEWMODE} (* * D3D has not yet been initialized. *) DDERR_D3DNOTINITIALIZED = HResult(_MAKE_DDHRESULT + 694); {$EXTERNALSYM DDERR_D3DNOTINITIALIZED} (* * The video port is not active *) DDERR_VIDEONOTACTIVE = HResult(_MAKE_DDHRESULT + 695); {$EXTERNALSYM DDERR_VIDEONOTACTIVE} (* * The monitor does not have EDID data. *) DDERR_NOMONITORINFORMATION = HResult(_MAKE_DDHRESULT + 696); {$EXTERNALSYM DDERR_NOMONITORINFORMATION} (* * The driver does not enumerate display mode refresh rates. *) DDERR_NODRIVERSUPPORT = HResult(_MAKE_DDHRESULT + 697); {$EXTERNALSYM DDERR_NODRIVERSUPPORT} (* * Surfaces created by one direct draw device cannot be used directly by * another direct draw device. *) DDERR_DEVICEDOESNTOWNSURFACE = HResult(_MAKE_DDHRESULT + 699); {$EXTERNALSYM DDERR_DEVICEDOESNTOWNSURFACE} (* * An attempt was made to invoke an interface member of a DirectDraw object * created by CoCreateInstance() before it was initialized. *) DDERR_NOTINITIALIZED = CO_E_NOTINITIALIZED; {$EXTERNALSYM DDERR_NOTINITIALIZED} (* Alpha bit depth constants *) (* * API's *) const DirectDrawDll = 'ddraw.dll'; type HMonitor = THandle; {$EXTERNALSYM HMonitor} TDDEnumCallbackA = function (lpGUID: PGUID; lpDriverDescription: PAnsiChar; lpDriverName: PAnsiChar; lpContext: Pointer): BOOL; stdcall; {$EXTERNALSYM TDDEnumCallbackA} TDDEnumCallbackW = function (lpGUID: PGUID; lpDriverDescription: PWideChar; lpDriverName: PWideChar; lpContext: Pointer): BOOL; stdcall; {$EXTERNALSYM TDDEnumCallbackW} TDDEnumCallback = function (lpGUID: PGUID; lpDriverDescription: PChar; lpDriverName: PChar; lpContext: Pointer): BOOL; stdcall; {$EXTERNALSYM TDDEnumCallback} TDDEnumCallbackExA = function (lpGUID: PGUID; lpDriverDescription: PAnsiChar; lpDriverName: PAnsiChar; lpContext: Pointer; Monitor: HMonitor): BOOL; stdcall; {$EXTERNALSYM TDDEnumCallbackExA} TDDEnumCallbackExW = function (lpGUID: PGUID; lpDriverDescription: PWideChar; lpDriverName: PWideChar; lpContext: Pointer; Monitor: HMonitor): BOOL; stdcall; {$EXTERNALSYM TDDEnumCallbackExW} TDDEnumCallbackEx = function (lpGUID: PGUID; lpDriverDescription: PChar; lpDriverName: PChar; lpContext: Pointer; Monitor: HMonitor): BOOL; stdcall; {$EXTERNALSYM TDDEnumCallbackEx} function DirectDrawLoaded: Boolean; function UnLoadDirectDraw: Boolean; function LoadDirectDraw: Boolean; {$IFDEF DIRECTDRAW_DYNAMIC_LINK} var DirectDrawEnumerateA : function (lpCallback: TDDEnumCallbackA; lpContext: Pointer): HResult; stdcall; {$EXTERNALSYM DirectDrawEnumerateA} DirectDrawEnumerateW : function (lpCallback: TDDEnumCallbackW; lpContext: Pointer): HResult; stdcall; {$EXTERNALSYM DirectDrawEnumerateW} DirectDrawEnumerate : function (lpCallback: TDDEnumCallback; lpContext: Pointer): HResult; stdcall; {$EXTERNALSYM DirectDrawEnumerate} DirectDrawEnumerateExA : function (lpCallback: TDDEnumCallbackExA; lpContext: Pointer; dwFlags: DWORD): HResult; stdcall; {$EXTERNALSYM DirectDrawEnumerateExA} DirectDrawEnumerateExW : function (lpCallback: TDDEnumCallbackExW; lpContext: Pointer; dwFlags: DWORD): HResult; stdcall; {$EXTERNALSYM DirectDrawEnumerateExW} DirectDrawEnumerateEx : function (lpCallback: TDDEnumCallbackEx; lpContext: Pointer; dwFlags: DWORD): HResult; stdcall; {$EXTERNALSYM DirectDrawEnumerateEx} DirectDrawCreate : function (lpGUID: PGUID; out lplpDD: IDirectDraw; pUnkOuter: IUnknown): HResult; stdcall; {$EXTERNALSYM DirectDrawCreate} DirectDrawCreateEx : function (lpGUID: PGUID; out lplpDD: IDirectDraw7; const iid: TGUID; pUnkOuter: IUnknown): HResult; stdcall; {$EXTERNALSYM DirectDrawCreateEx} DirectDrawCreateClipper : function (dwFlags: DWORD; out lplpDDClipper: IDirectDrawClipper; pUnkOuter: IUnknown): HResult; stdcall; {$EXTERNALSYM DirectDrawCreateClipper} {$ELSE} function DirectDrawEnumerateA(lpCallback: TDDEnumCallbackA; lpContext: Pointer): HResult; stdcall; external DirectDrawDll; {$EXTERNALSYM DirectDrawEnumerateA} function DirectDrawEnumerateW(lpCallback: TDDEnumCallbackW; lpContext: Pointer): HResult; stdcall; external DirectDrawDll; {$EXTERNALSYM DirectDrawEnumerateW} function DirectDrawEnumerate(lpCallback: TDDEnumCallback; lpContext: Pointer): HResult; stdcall; external DirectDrawDll name {$IFDEF UNICODE}'DirectDrawEnumerateW'{$ELSE}'DirectDrawEnumerateA'{$ENDIF}; {$EXTERNALSYM DirectDrawEnumerate} function DirectDrawEnumerateExA(lpCallback: TDDEnumCallbackExA; lpContext: Pointer; dwFlags: DWORD): HResult; stdcall; external DirectDrawDll; {$EXTERNALSYM DirectDrawEnumerateExA} function DirectDrawEnumerateExW(lpCallback: TDDEnumCallbackExW; lpContext: Pointer; dwFlags: DWORD): HResult; stdcall; external DirectDrawDll; {$EXTERNALSYM DirectDrawEnumerateExW} function DirectDrawEnumerateEx(lpCallback: TDDEnumCallbackEx; lpContext: Pointer; dwFlags: DWORD): HResult; stdcall; external DirectDrawDll name {$IFDEF UNICODE}'DirectDrawEnumerateExW'{$ELSE}'DirectDrawEnumerateExA'{$ENDIF}; {$EXTERNALSYM DirectDrawEnumerateEx} function DirectDrawCreate(lpGUID: PGUID; out lplpDD: IDirectDraw; pUnkOuter: IUnknown): HResult; stdcall; external DirectDrawDll; {$EXTERNALSYM DirectDrawCreate} function DirectDrawCreateEx(lpGUID: PGUID; out lplpDD: IDirectDraw7; const iid: TGUID; pUnkOuter: IUnknown): HResult; stdcall; external DirectDrawDll; {$EXTERNALSYM DirectDrawCreateEx} function DirectDrawCreateClipper(dwFlags: DWORD; out lplpDDClipper: IDirectDrawClipper; pUnkOuter: IUnknown): HResult; stdcall; external DirectDrawDll; {$EXTERNALSYM DirectDrawCreateClipper} {$ENDIF} const (* * Flags for DirectDrawEnumerateEx * DirectDrawEnumerateEx supercedes DirectDrawEnumerate. You must use GetProcAddress to * obtain a function pointer (of type LPDIRECTDRAWENUMERATEEX) to DirectDrawEnumerateEx. * By default, only the primary display device is enumerated. * DirectDrawEnumerate is equivalent to DirectDrawEnumerate(,,DDENUM_NONDISPLAYDEVICES) *) (* * This flag causes enumeration of any GDI display devices which are part of * the Windows Desktop *) DDENUM_ATTACHEDSECONDARYDEVICES = $00000001; {$EXTERNALSYM DDENUM_ATTACHEDSECONDARYDEVICES} (* * This flag causes enumeration of any GDI display devices which are not * part of the Windows Desktop *) DDENUM_DETACHEDSECONDARYDEVICES = $00000002; {$EXTERNALSYM DDENUM_DETACHEDSECONDARYDEVICES} (* * This flag causes enumeration of non-display devices *) DDENUM_NONDISPLAYDEVICES = $00000004; {$EXTERNALSYM DDENUM_NONDISPLAYDEVICES} REGSTR_KEY_DDHW_DESCRIPTION = 'Description'; {$EXTERNALSYM REGSTR_KEY_DDHW_DESCRIPTION} REGSTR_KEY_DDHW_DRIVERNAME = 'DriverName'; {$EXTERNALSYM REGSTR_KEY_DDHW_DRIVERNAME} REGSTR_PATH_DDHW = 'Hardware\DirectDrawDrivers'; {$EXTERNALSYM REGSTR_PATH_DDHW} DDCREATE_HARDWAREONLY = $00000001; {$EXTERNALSYM DDCREATE_HARDWAREONLY} DDCREATE_EMULATIONONLY = $00000002; {$EXTERNALSYM DDCREATE_EMULATIONONLY} (* * Flags for the IDirectDraw4::GetDeviceIdentifier method *) (* * This flag causes GetDeviceIdentifier to return information about the host (typically 2D) adapter in a system equipped * with a stacked secondary 3D adapter. Such an adapter appears to the application as if it were part of the * host adapter, but is typically physcially located on a separate card. The stacked secondary's information is * returned when GetDeviceIdentifier's dwFlags field is zero, since this most accurately reflects the qualities * of the DirectDraw object involved. *) DDGDI_GETHOSTIDENTIFIER = $00000001; {$EXTERNALSYM DDGDI_GETHOSTIDENTIFIER} (* * Macros for interpretting DDEVICEIDENTIFIER2.dwWHQLLevel *) function GET_WHQL_YEAR(dwWHQLLevel: DWORD): DWORD; {$EXTERNALSYM GET_WHQL_YEAR} function GET_WHQL_MONTH(dwWHQLLevel: DWORD): DWORD; {$EXTERNALSYM GET_WHQL_MONTH} function GET_WHQL_DAY(dwWHQLLevel: DWORD): DWORD; {$EXTERNALSYM GET_WHQL_DAY} (*==========================================================================; * * Copyright (C) 1996-1997 Microsoft Corporation. All Rights Reserved. * * File: dvp.h * Content: DirectDrawVideoPort include file * ***************************************************************************) const (* * GUIDS used by DirectDrawVideoPort objects *) (* IID_IDDVideoPortContainer, IID_IDirectDrawVideoPort, IID_IDirectDrawVideoPortNotify - are defined later in Delphi header *) DDVPTYPE_E_HREFH_VREFH: TGUID = (D1:$54F39980;D2:$DA60;D3:$11CF;D4:($9B,$06,$00,$A0,$C9,$03,$A3,$B8)); {$EXTERNALSYM DDVPTYPE_E_HREFH_VREFH} DDVPTYPE_E_HREFH_VREFL: TGUID = (D1:$92783220;D2:$DA60;D3:$11CF;D4:($9B,$06,$00,$A0,$C9,$03,$A3,$B8)); {$EXTERNALSYM DDVPTYPE_E_HREFH_VREFL} DDVPTYPE_E_HREFL_VREFH: TGUID = (D1:$A07A02E0;D2:$DA60;D3:$11CF;D4:($9B,$06,$00,$A0,$C9,$03,$A3,$B8)); {$EXTERNALSYM DDVPTYPE_E_HREFL_VREFH} DDVPTYPE_E_HREFL_VREFL: TGUID = (D1:$E09C77E0;D2:$DA60;D3:$11CF;D4:($9B,$06,$00,$A0,$C9,$03,$A3,$B8)); {$EXTERNALSYM DDVPTYPE_E_HREFL_VREFL} DDVPTYPE_CCIR656: TGUID = (D1:$FCA326A0;D2:$DA60;D3:$11CF;D4:($9B,$06,$00,$A0,$C9,$03,$A3,$B8)); {$EXTERNALSYM DDVPTYPE_CCIR656} DDVPTYPE_BROOKTREE: TGUID = (D1:$1352A560;D2:$DA61;D3:$11CF;D4:($9B,$06,$00,$A0,$C9,$03,$A3,$B8)); {$EXTERNALSYM DDVPTYPE_BROOKTREE} DDVPTYPE_PHILIPS: TGUID = (D1:$332CF160;D2:$DA61;D3:$11CF;D4:($9B,$06,$00,$A0,$C9,$03,$A3,$B8)); {$EXTERNALSYM DDVPTYPE_PHILIPS} (* * These definitions are required to allow polymorphic structure members (i.e. those * that are referred to both as DWORDs and as pointers) to resolve into a type * of correct size to hold the largest of those two types (i.e. pointer) on 64 bit * systems. For 32 bit environments, ULONG_PTR resolves to a DWORD. *) type ULONG_PTR = DWORD; {$EXTERNALSYM ULONG_PTR} (*============================================================================ * * DirectDraw Structures * * Various structures used to invoke DirectDraw. * *==========================================================================*) type (* * DDVIDEOPORTCONNECT *) PDDVideoPortConnect = ^TDDVideoPortConnect; _DDVIDEOPORTCONNECT = packed record dwSize: DWORD; // size of the TDDVideoPortConnect structure dwPortWidth: DWORD; // Width of the video port guidTypeID: TGUID; // Description of video port connection dwFlags: DWORD; // Connection flags dwReserved1: ULONG_PTR; // Reserved, set to zero. end; {$EXTERNALSYM _DDVIDEOPORTCONNECT} DDVIDEOPORTCONNECT = _DDVIDEOPORTCONNECT; {$EXTERNALSYM DDVIDEOPORTCONNECT} TDDVideoPortConnect = _DDVIDEOPORTCONNECT; (* * DDVIDEOPORTCAPS *) PDDVideoPortCaps = ^TDDVideoPortCaps; _DDVIDEOPORTCAPS = packed record dwSize: DWORD; // size of the TDDVideoPortCaps structure dwFlags: DWORD; // indicates which fields contain data dwMaxWidth: DWORD; // max width of the video port field dwMaxVBIWidth: DWORD; // max width of the VBI data dwMaxHeight: DWORD; // max height of the video port field dwVideoPortID: DWORD; // Video port ID (0 - (dwMaxVideoPorts -1)) dwCaps: DWORD; // Video port capabilities dwFX: DWORD; // More video port capabilities dwNumAutoFlipSurfaces: DWORD; // Number of autoflippable surfaces dwAlignVideoPortBoundary: DWORD; // Byte restriction of placement within the surface dwAlignVideoPortPrescaleWidth: DWORD; // Byte restriction of width after prescaling dwAlignVideoPortCropBoundary: DWORD; // Byte restriction of left cropping dwAlignVideoPortCropWidth: DWORD; // Byte restriction of cropping width dwPreshrinkXStep: DWORD; // Width can be shrunk in steps of 1/x dwPreshrinkYStep: DWORD; // Height can be shrunk in steps of 1/x dwNumVBIAutoFlipSurfaces: DWORD; // Number of VBI autoflippable surfaces allowed dwNumPreferredAutoflip: DWORD; // Optimal number of autoflippable surfaces for hardware wNumFilterTapsX: Word; // Number of taps the prescaler uses in the X direction (0 - no prescale, 1 - replication, etc.) wNumFilterTapsY: Word; // Number of taps the prescaler uses in the Y direction (0 - no prescale, 1 - replication, etc.) end; {$EXTERNALSYM _DDVIDEOPORTCAPS} DDVIDEOPORTCAPS = _DDVIDEOPORTCAPS; {$EXTERNALSYM DDVIDEOPORTCAPS} TDDVideoPortCaps = _DDVIDEOPORTCAPS; const (* * The dwMaxWidth and dwMaxVBIWidth members are valid *) DDVPD_WIDTH = $00000001; {$EXTERNALSYM DDVPD_WIDTH} (* * The dwMaxHeight member is valid *) DDVPD_HEIGHT = $00000002; {$EXTERNALSYM DDVPD_HEIGHT} (* * The dwVideoPortID member is valid *) DDVPD_ID = $00000004; {$EXTERNALSYM DDVPD_ID} (* * The dwCaps member is valid *) DDVPD_CAPS = $00000008; {$EXTERNALSYM DDVPD_CAPS} (* * The dwFX member is valid *) DDVPD_FX = $00000010; {$EXTERNALSYM DDVPD_FX} (* * The dwNumAutoFlipSurfaces member is valid *) DDVPD_AUTOFLIP = $00000020; {$EXTERNALSYM DDVPD_AUTOFLIP} (* * All of the alignment members are valid *) DDVPD_ALIGN = $00000040; {$EXTERNALSYM DDVPD_ALIGN} (* * The dwNumPreferredAutoflip member is valid *) DDVPD_PREFERREDAUTOFLIP = $00000080; {$EXTERNALSYM DDVPD_PREFERREDAUTOFLIP} (* * The wNumFilterTapsX and wNumFilterTapsY fields are valid *) DDVPD_FILTERQUALITY = $00000100; {$EXTERNALSYM DDVPD_FILTERQUALITY} type (* * DDVIDEOPORTDESC *) PDDVideoPortDesc = ^TDDVideoPortDesc; _DDVIDEOPORTDESC = packed record dwSize: DWORD; // size of the TDDVideoPortDesc structure dwFieldWidth: DWORD; // width of the video port field dwVBIWidth: DWORD; // width of the VBI data dwFieldHeight: DWORD; // height of the video port field dwMicrosecondsPerField: DWORD; // Microseconds per video field dwMaxPixelsPerSecond: DWORD; // Maximum pixel rate per second dwVideoPortID: DWORD; // Video port ID (0 - (dwMaxVideoPorts -1)) dwReserved1: DWORD; // Reserved for future use - set to zero (struct padding) VideoPortType: TDDVideoPortConnect; // Description of video port connection dwReserved2: DWORD; // Reserved for future use - set to zero dwReserved3: DWORD; // Reserved for future use - set to zero end; {$EXTERNALSYM _DDVIDEOPORTDESC} DDVIDEOPORTDESC = _DDVIDEOPORTDESC; {$EXTERNALSYM DDVIDEOPORTDESC} TDDVideoPortDesc = _DDVIDEOPORTDESC; (* * DDVIDEOPORTINFO *) PDDVideoPortInfo = ^TDDVideoPortInfo; _DDVIDEOPORTINFO = packed record dwSize: DWORD; // Size of the structure dwOriginX: DWORD; // Placement of the video data within the surface. dwOriginY: DWORD; // Placement of the video data within the surface. dwVPFlags: DWORD; // Video port options rCrop: TRect; // Cropping rectangle (optional). dwPrescaleWidth: DWORD; // Determines pre-scaling/zooming in the X direction (optional). dwPrescaleHeight: DWORD; // Determines pre-scaling/zooming in the Y direction (optional). lpddpfInputFormat: PDDPixelFormat; // Video format written to the video port lpddpfVBIInputFormat: PDDPixelFormat; // Input format of the VBI data lpddpfVBIOutputFormat: PDDPixelFormat; // Output format of the data dwVBIHeight: DWORD; // Specifies the number of lines of data within the vertical blanking interval. dwReserved1: DWORD; // Reserved for future use - set to zero dwReserved2: DWORD; // Reserved for future use - set to zero end; {$EXTERNALSYM _DDVIDEOPORTINFO} DDVIDEOPORTINFO = _DDVIDEOPORTINFO; {$EXTERNALSYM DDVIDEOPORTINFO} TDDVideoPortInfo = _DDVIDEOPORTINFO; (* * DDVIDEOPORTBANDWIDTH *) PDDVideoPortBandWidth = ^TDDVideoPortBandWidth; _DDVIDEOPORTBANDWIDTH = packed record dwSize: DWORD; // Size of the structure dwCaps: DWORD; dwOverlay: DWORD; // Zoom factor at which overlay is supported dwColorkey: DWORD; // Zoom factor at which overlay w/ colorkey is supported dwYInterpolate: DWORD; // Zoom factor at which overlay w/ Y interpolation is supported dwYInterpAndColorkey: DWORD; // Zoom factor at which ovelray w/ Y interpolation and colorkeying is supported dwReserved1: DWORD; // Reserved for future use - set to zero dwReserved2: DWORD; // Reserved for future use - set to zero end; {$EXTERNALSYM _DDVIDEOPORTBANDWIDTH} DDVIDEOPORTBANDWIDTH = _DDVIDEOPORTBANDWIDTH; {$EXTERNALSYM DDVIDEOPORTBANDWIDTH} TDDVideoPortBandWidth = _DDVIDEOPORTBANDWIDTH; (* * DDVIDEOPORTSTATUS *) PDDVideoPortStatus = ^TDDVideoPortStatus; _DDVIDEOPORTSTATUS = record dwSize: DWORD; // Size of the structure bInUse: BOOL; // TRUE if video port is currently being used dwFlags: DWORD; // Currently not used dwReserved1: DWORD; // Reserved for future use VideoPortType: TDDVideoPortConnect; // Information about the connection dwReserved2: DWORD; // Reserved for future use dwReserved3: DWORD; // Reserved for future use end; {$EXTERNALSYM _DDVIDEOPORTSTATUS} DDVIDEOPORTSTATUS = _DDVIDEOPORTSTATUS; {$EXTERNALSYM DDVIDEOPORTSTATUS} TDDVideoPortStatus = _DDVIDEOPORTSTATUS; (* * DDVIDEOPORTNOTIFY *) PDDVideoPortNotify = ^TDDVideoPortNotify; _DDVIDEOPORTNOTIFY = packed record ApproximateTimeStamp: Int64; // Timestamp in the event notification lField: Longint; // 0 if even, 1 if odd, -1 if unknown dwSurfaceIndex: Longword; // Index in the surface chain of the surface that received the sample lDone: Longint; // Call InterlockedIncrement on this when done with sample end; {$EXTERNALSYM _DDVIDEOPORTNOTIFY} DDVIDEOPORTNOTIFY = _DDVIDEOPORTNOTIFY; {$EXTERNALSYM DDVIDEOPORTNOTIFY} TDDVideoPortNotify = _DDVIDEOPORTNOTIFY; (*============================================================================ * * Video Port Flags * * All flags are bit flags. * *==========================================================================*) const (**************************************************************************** * * VIDEOPORT DDVIDEOPORTCONNECT / TDDVideoPortConnect FLAGS * ****************************************************************************) (* * When this is set by the driver and passed to the client, this * indicates that the video port is capable of double clocking the data. * When this is set by the client, this indicates that the video port * should enable double clocking. This flag is only valid with external * syncs. *) DDVPCONNECT_DOUBLECLOCK = $00000001; {$EXTERNALSYM DDVPCONNECT_DOUBLECLOCK} (* * When this is set by the driver and passed to the client, this * indicates that the video port is capable of using an external VACT * signal. When this is set by the client, this indicates that the * video port should use the external VACT signal. *) DDVPCONNECT_VACT = $00000002; {$EXTERNALSYM DDVPCONNECT_VACT} (* * When this is set by the driver and passed to the client, this * indicates that the video port is capable of treating even fields * like odd fields and visa versa. When this is set by the client, * this indicates that the video port should treat even fields like odd * fields. *) DDVPCONNECT_INVERTPOLARITY = $00000004; {$EXTERNALSYM DDVPCONNECT_INVERTPOLARITY} (* * Indicates that any data written to the video port during the VREF * period will not be written into the frame buffer. This flag is read only. *) DDVPCONNECT_DISCARDSVREFDATA = $00000008; {$EXTERNALSYM DDVPCONNECT_DISCARDSVREFDATA} (* * When this is set be the driver and passed to the client, this * indicates that the device will write half lines into the frame buffer * if half lines are provided by the decoder. If this is set by the client, * this indicates that the decoder will be supplying half lines. *) DDVPCONNECT_HALFLINE = $00000010; {$EXTERNALSYM DDVPCONNECT_HALFLINE} (* * Indicates that the signal is interlaced. This flag is only * set by the client. *) DDVPCONNECT_INTERLACED = $00000020; {$EXTERNALSYM DDVPCONNECT_INTERLACED} (* * Indicates that video port is shareable and that this video port * will use the even fields. This flag is only set by the client. *) DDVPCONNECT_SHAREEVEN = $00000040; {$EXTERNALSYM DDVPCONNECT_SHAREEVEN} (* * Indicates that video port is shareable and that this video port * will use the odd fields. This flag is only set by the client. *) DDVPCONNECT_SHAREODD = $00000080; {$EXTERNALSYM DDVPCONNECT_SHAREODD} (**************************************************************************** * * VIDEOPORT DDVIDEOPORTDESC / TDDVideoPortDesc CAPS * ****************************************************************************) (* * Flip can be performed automatically to avoid tearing. *) DDVPCAPS_AUTOFLIP = $00000001; {$EXTERNALSYM DDVPCAPS_AUTOFLIP} (* * Supports interlaced video *) DDVPCAPS_INTERLACED = $00000002; {$EXTERNALSYM DDVPCAPS_INTERLACED} (* * Supports non-interlaced video *) DDVPCAPS_NONINTERLACED = $00000004; {$EXTERNALSYM DDVPCAPS_NONINTERLACED} (* * Indicates that the device can return whether the current field * of an interlaced signal is even or odd. *) DDVPCAPS_READBACKFIELD = $00000008; {$EXTERNALSYM DDVPCAPS_READBACKFIELD} (* * Indicates that the device can return the current line of video * being written into the frame buffer. *) DDVPCAPS_READBACKLINE = $00000010; {$EXTERNALSYM DDVPCAPS_READBACKLINE} (* * Allows two gen-locked video streams to share a single video port, * where one stream uses the even fields and the other uses the odd * fields. Separate parameters (including address, scaling, * cropping, etc.) are maintained for both fields.) *) DDVPCAPS_SHAREABLE = $00000020; {$EXTERNALSYM DDVPCAPS_SHAREABLE} (* * Even fields of video can be automatically discarded. *) DDVPCAPS_SKIPEVENFIELDS = $00000040; {$EXTERNALSYM DDVPCAPS_SKIPEVENFIELDS} (* * Odd fields of video can be automatically discarded. *) DDVPCAPS_SKIPODDFIELDS = $00000080; {$EXTERNALSYM DDVPCAPS_SKIPODDFIELDS} (* * Indicates that the device is capable of driving the graphics * VSYNC with the video port VSYNC. *) DDVPCAPS_SYNCMASTER = $00000100; {$EXTERNALSYM DDVPCAPS_SYNCMASTER} (* * Indicates that data within the vertical blanking interval can * be written to a different surface. *) DDVPCAPS_VBISURFACE = $00000200; {$EXTERNALSYM DDVPCAPS_VBISURFACE} (* * Indicates that the video port can perform color operations * on the incoming data before it is written to the frame buffer. *) DDVPCAPS_COLORCONTROL = $00000400; {$EXTERNALSYM DDVPCAPS_COLORCONTROL} (* * Indicates that the video port can accept VBI data in a different * width or format than the regular video data. *) DDVPCAPS_OVERSAMPLEDVBI = $00000800; {$EXTERNALSYM DDVPCAPS_OVERSAMPLEDVBI} (* * Indicates that the video port can write data directly to system memory *) DDVPCAPS_SYSTEMMEMORY = $00001000; {$EXTERNALSYM DDVPCAPS_SYSTEMMEMORY} (* * Indicates that the VBI and video portions of the video stream can * be controlled by an independent processes. *) DDVPCAPS_VBIANDVIDEOINDEPENDENT = $00002000; {$EXTERNALSYM DDVPCAPS_VBIANDVIDEOINDEPENDENT} (* * Indicates that the video port contains high quality hardware * de-interlacing hardware that should be used instead of the * bob/weave algorithms. *) DDVPCAPS_HARDWAREDEINTERLACE = $00004000; {$EXTERNALSYM DDVPCAPS_HARDWAREDEINTERLACE} (**************************************************************************** * * VIDEOPORT DDVIDEOPORTDESC / TDDVideoPortDesc FX * ****************************************************************************) (* * Limited cropping is available to crop out the vertical interval data. *) DDVPFX_CROPTOPDATA = $00000001; {$EXTERNALSYM DDVPFX_CROPTOPDATA} (* * Incoming data can be cropped in the X direction before it is written * to the surface. *) DDVPFX_CROPX = $00000002; {$EXTERNALSYM DDVPFX_CROPX} (* * Incoming data can be cropped in the Y direction before it is written * to the surface. *) DDVPFX_CROPY = $00000004; {$EXTERNALSYM DDVPFX_CROPY} (* * Supports interleaving interlaced fields in memory. *) DDVPFX_INTERLEAVE = $00000008; {$EXTERNALSYM DDVPFX_INTERLEAVE} (* * Supports mirroring left to right as the video data is written * into the frame buffer. *) DDVPFX_MIRRORLEFTRIGHT = $00000010; {$EXTERNALSYM DDVPFX_MIRRORLEFTRIGHT} (* * Supports mirroring top to bottom as the video data is written * into the frame buffer. *) DDVPFX_MIRRORUPDOWN = $00000020; {$EXTERNALSYM DDVPFX_MIRRORUPDOWN} (* * Data can be arbitrarily shrunk in the X direction before it * is written to the surface. *) DDVPFX_PRESHRINKX = $00000040; {$EXTERNALSYM DDVPFX_PRESHRINKX} (* * Data can be arbitrarily shrunk in the Y direction before it * is written to the surface. *) DDVPFX_PRESHRINKY = $00000080; {$EXTERNALSYM DDVPFX_PRESHRINKY} (* * Data can be binary shrunk (1/2, 1/4, 1/8, etc.) in the X * direction before it is written to the surface. *) DDVPFX_PRESHRINKXB = $00000100; {$EXTERNALSYM DDVPFX_PRESHRINKXB} (* * Data can be binary shrunk (1/2, 1/4, 1/8, etc.) in the Y * direction before it is written to the surface. *) DDVPFX_PRESHRINKYB = $00000200; {$EXTERNALSYM DDVPFX_PRESHRINKYB} (* * Data can be shrunk in increments of 1/x in the X direction * (where X is specified in the TDDVideoPortCaps.dwPreshrinkXStep) * before it is written to the surface. *) DDVPFX_PRESHRINKXS = $00000400; {$EXTERNALSYM DDVPFX_PRESHRINKXS} (* * Data can be shrunk in increments of 1/x in the Y direction * (where X is specified in the TDDVideoPortCaps.dwPreshrinkYStep) * before it is written to the surface. *) DDVPFX_PRESHRINKYS = $00000800; {$EXTERNALSYM DDVPFX_PRESHRINKYS} (* * Data can be arbitrarily stretched in the X direction before * it is written to the surface. *) DDVPFX_PRESTRETCHX = $00001000; {$EXTERNALSYM DDVPFX_PRESTRETCHX} (* * Data can be arbitrarily stretched in the Y direction before * it is written to the surface. *) DDVPFX_PRESTRETCHY = $00002000; {$EXTERNALSYM DDVPFX_PRESTRETCHY} (* * Data can be integer stretched in the X direction before it is * written to the surface. *) DDVPFX_PRESTRETCHXN = $00004000; {$EXTERNALSYM DDVPFX_PRESTRETCHXN} (* * Data can be integer stretched in the Y direction before it is * written to the surface. *) DDVPFX_PRESTRETCHYN = $00008000; {$EXTERNALSYM DDVPFX_PRESTRETCHYN} (* * Indicates that data within the vertical blanking interval can * be converted independently of the remaining video data. *) DDVPFX_VBICONVERT = $00010000; {$EXTERNALSYM DDVPFX_VBICONVERT} (* * Indicates that scaling can be disabled for data within the * vertical blanking interval. *) DDVPFX_VBINOSCALE = $00020000; {$EXTERNALSYM DDVPFX_VBINOSCALE} (* * Indicates that the video data can ignore the left and right * cropping coordinates when cropping oversampled VBI data. *) DDVPFX_IGNOREVBIXCROP = $00040000; {$EXTERNALSYM DDVPFX_IGNOREVBIXCROP} (* * Indicates that interleaving can be disabled for data within the * vertical blanking interval. *) DDVPFX_VBINOINTERLEAVE = $00080000; {$EXTERNALSYM DDVPFX_VBINOINTERLEAVE} (**************************************************************************** * * VIDEOPORT DDVIDEOPORTINFO / TDDVideoPortInfo FLAGS * ****************************************************************************) (* * Perform automatic flipping. Auto-flipping is performed between * the overlay surface that was attached to the video port using * IDirectDrawVideoPort::AttachSurface and the overlay surfaces that * are attached to the surface via the IDirectDrawSurface::AttachSurface * method. The flip order is the order in which the overlay surfaces * were. attached. *) DDVP_AUTOFLIP = $00000001; {$EXTERNALSYM DDVP_AUTOFLIP} (* * Perform conversion using the ddpfOutputFormat information. *) DDVP_CONVERT = $00000002; {$EXTERNALSYM DDVP_CONVERT} (* * Perform cropping using the specified rectangle. *) DDVP_CROP = $00000004; {$EXTERNALSYM DDVP_CROP} (* * Indicates that interlaced fields should be interleaved in memory. *) DDVP_INTERLEAVE = $00000008; {$EXTERNALSYM DDVP_INTERLEAVE} (* * Indicates that the data should be mirrored left to right as it's * written into the frame buffer. *) DDVP_MIRRORLEFTRIGHT = $00000010; {$EXTERNALSYM DDVP_MIRRORLEFTRIGHT} (* * Indicates that the data should be mirrored top to bottom as it's * written into the frame buffer. *) DDVP_MIRRORUPDOWN = $00000020; {$EXTERNALSYM DDVP_MIRRORUPDOWN} (* * Perform pre-scaling/zooming based on the pre-scale parameters. *) DDVP_PRESCALE = $00000040; {$EXTERNALSYM DDVP_PRESCALE} (* * Ignore input of even fields. *) DDVP_SKIPEVENFIELDS = $00000080; {$EXTERNALSYM DDVP_SKIPEVENFIELDS} (* * Ignore input of odd fields. *) DDVP_SKIPODDFIELDS = $00000100; {$EXTERNALSYM DDVP_SKIPODDFIELDS} (* * Drive the graphics VSYNCs using the video port VYSNCs. *) DDVP_SYNCMASTER = $00000200; {$EXTERNALSYM DDVP_SYNCMASTER} (* * The ddpfVBIOutputFormatFormat member contains data that should be used * to convert the data within the vertical blanking interval. *) DDVP_VBICONVERT = $00000400; {$EXTERNALSYM DDVP_VBICONVERT} (* * Indicates that data within the vertical blanking interval * should not be scaled. *) DDVP_VBINOSCALE = $00000800; {$EXTERNALSYM DDVP_VBINOSCALE} (* * Indicates that these bob/weave decisions should not be * overriden by other interfaces. *) DDVP_OVERRIDEBOBWEAVE = $00001000; {$EXTERNALSYM DDVP_OVERRIDEBOBWEAVE} (* * Indicates that the video data should ignore the left and right * cropping coordinates when cropping the VBI data. *) DDVP_IGNOREVBIXCROP = $00002000; {$EXTERNALSYM DDVP_IGNOREVBIXCROP} (* * Indicates that interleaving can be disabled for data within the * vertical blanking interval. *) DDVP_VBINOINTERLEAVE = $00004000; {$EXTERNALSYM DDVP_VBINOINTERLEAVE} (* * Indicates that the video port should use the hardware * de-interlacing hardware. *) DDVP_HARDWAREDEINTERLACE = $00008000; {$EXTERNALSYM DDVP_HARDWAREDEINTERLACE} (**************************************************************************** * * DIRIRECTDRAWVIDEOPORT GETINPUTFORMAT/GETOUTPUTFORMAT FLAGS * ****************************************************************************) (* * Return formats for the video data *) DDVPFORMAT_VIDEO = $00000001; {$EXTERNALSYM DDVPFORMAT_VIDEO} (* * Return formats for the VBI data *) DDVPFORMAT_VBI = $00000002; {$EXTERNALSYM DDVPFORMAT_VBI} (**************************************************************************** * * DIRIRECTDRAWVIDEOPORT SETTARGETSURFACE FLAGS * ****************************************************************************) (* * Surface should receive video data (and VBI data if a surface * is not explicitly attached for that purpose) *) DDVPTARGET_VIDEO = $00000001; {$EXTERNALSYM DDVPTARGET_VIDEO} (* * Surface should receive VBI data *) DDVPTARGET_VBI = $00000002; {$EXTERNALSYM DDVPTARGET_VBI} (**************************************************************************** * * DIRIRECTDRAWVIDEOPORT WAITFORSYNC FLAGS * ****************************************************************************) (* * Waits until the beginning of the next VSYNC *) DDVPWAIT_BEGIN = $00000001; {$EXTERNALSYM DDVPWAIT_BEGIN} (* * Waits until the end of the next/current VSYNC *) DDVPWAIT_END = $00000002; {$EXTERNALSYM DDVPWAIT_END} (* * Waits until the beginning of the specified line *) DDVPWAIT_LINE = $00000003; {$EXTERNALSYM DDVPWAIT_LINE} (**************************************************************************** * * DIRECTDRAWVIDEOPORT FLIP FLAGS * ****************************************************************************) (* * Flips the normal video surface *) DDVPFLIP_VIDEO = $00000001; {$EXTERNALSYM DDVPFLIP_VIDEO} (* * Flips the VBI surface *) DDVPFLIP_VBI = $00000002; {$EXTERNALSYM DDVPFLIP_VBI} (**************************************************************************** * * DIRIRECTDRAWVIDEOPORT GETVIDEOSIGNALSTATUS VALUES * ****************************************************************************) (* * No video signal is present at the video port *) DDVPSQ_NOSIGNAL = $00000001; {$EXTERNALSYM DDVPSQ_NOSIGNAL} (* * A valid video signal is present at the video port *) DDVPSQ_SIGNALOK = $00000002; {$EXTERNALSYM DDVPSQ_SIGNALOK} (**************************************************************************** * * VIDEOPORTBANDWIDTH Flags * ****************************************************************************) (* * The specified height/width refer to the size of the video port data * written into memory, after prescaling has occured. *) DDVPB_VIDEOPORT = $00000001; {$EXTERNALSYM DDVPB_VIDEOPORT} (* * The specified height/width refer to the source size of the overlay. *) DDVPB_OVERLAY = $00000002; {$EXTERNALSYM DDVPB_OVERLAY} (* * This is a query for the device to return which caps this device requires. *) DDVPB_TYPE = $00000004; {$EXTERNALSYM DDVPB_TYPE} (**************************************************************************** * * VIDEOPORTBANDWIDTH Caps * ****************************************************************************) (* * The bandwidth for this device is dependant on the overlay source size. *) DDVPBCAPS_SOURCE = $00000001; {$EXTERNALSYM DDVPBCAPS_SOURCE} (* * The bandwidth for this device is dependant on the overlay destination * size. *) DDVPBCAPS_DESTINATION = $00000002; {$EXTERNALSYM DDVPBCAPS_DESTINATION} (**************************************************************************** * * DDVIDEOPORTCONTAINER CreateVideoPort flags * ****************************************************************************) (* * The process only wants to control the VBI portion of the video stream. *) DDVPCREATE_VBIONLY = $00000001; {$EXTERNALSYM DDVPCREATE_VBIONLY} (* * The process only wants to control the non-VBI (video) portion of * the video stream. *) DDVPCREATE_VIDEOONLY = $00000002; {$EXTERNALSYM DDVPCREATE_VIDEOONLY} (**************************************************************************** * * DDVIDEOPORTSTATUS flags * ****************************************************************************) (* * The video port interface is only controlling the VBI portion of the * video stream *) DDVPSTATUS_VBIONLY = $00000001; {$EXTERNALSYM DDVPSTATUS_VBIONLY} (* * The video port interface is only controlling the video portion of the * video stream *) DDVPSTATUS_VIDEOONLY = $00000002; {$EXTERNALSYM DDVPSTATUS_VIDEOONLY} type (* * API's *) TDDEnumVideoCallback = function (lpTDDVideoPortCaps: PDDVideoPortCaps; lpContext: Pointer): HResult; stdcall; {$EXTERNALSYM TDDEnumVideoCallback} (* * INTERACES FOLLOW: * IDirectDrawVideoPort * IVideoPort *) IDirectDrawVideoPort = interface; {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectDrawVideoPort);'} {$EXTERNALSYM IDirectDrawVideoPort} (* * IDirectDrawVideoPortContainer *) {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDDVideoPortContainer);'} {$EXTERNALSYM IDDVideoPortContainer} IDDVideoPortContainer = interface(IUnknown) ['{6C142760-A733-11CE-A521-0020AF0BE560}'] (*** IDDVideoPortContainer methods ***) function CreateVideoPort(dwFlags: DWORD; var lpTDDVideoPortDesc: TDDVideoPortDesc; var lplpDDVideoPort: IDirectDrawVideoPort; pUnkOuter: IUnknown): HResult; stdcall; function EnumVideoPorts(dwFlags: DWORD; lpTDDVideoPortCaps: PDDVideoPortCaps; lpContext: Pointer; lpEnumVideoCallback: TDDEnumVideoCallback): HResult; stdcall; function GetVideoPortConnectInfo(dwPortId: DWORD; var lpNumEntries: DWORD; lpConnectInfo: PDDVideoPortConnect): HResult; stdcall; function QueryVideoPortStatus(dwPortId: DWORD; var lpVPStatus: TDDVideoPortStatus): HResult; stdcall; end; (* * IDirectDrawVideoPort *) IDirectDrawVideoPort = interface(IUnknown) ['{B36D93E0-2B43-11CF-A2DE-00AA00B93356}'] (*** IDirectDrawVideoPort methods ***) function Flip(lpDDSurface: IDirectDrawSurface; dwFlags: DWORD): HResult; stdcall; function GetBandwidthInfo(var lpddpfFormat: TDDPixelFormat; dwWidth: DWORD; dwHeight: DWORD; dwFlags: DWORD; var lpBandwidth: TDDVideoPortBandWidth): HResult; stdcall; function GetColorControls(var lpColorControl: TDDColorControl): HResult; stdcall; function GetInputFormats(var lpNumFormats: DWORD; var lpFormats: TDDPixelFormat; dwFlags: DWORD): HResult; stdcall; function GetOutputFormats(var lpInputFormat: TDDPixelFormat; var lpNumFormats: DWORD; lpFormats: PDDPixelFormat; dwFlags: DWORD): HResult; stdcall; function GetFieldPolarity(var lpbVideoField: BOOL): HResult; stdcall; function GetVideoLine(var lpdwLine: DWORD): HResult; stdcall; function GetVideoSignalStatus(varlpdwStatus: DWORD): HResult; stdcall; function SetColorControls(var lpColorControl: TDDColorControl): HResult; stdcall; function SetTargetSurface(lpDDSurface: IDirectDrawSurface; dwFlags: DWORD): HResult; stdcall; function StartVideo(var lpVideoInfo: TDDVideoPortInfo): HResult; stdcall; function StopVideo: HResult; stdcall; function UpdateVideo(var lpVideoInfo: TDDVideoPortInfo): HResult; stdcall; function WaitForSync(dwFlags: DWORD; dwLine: DWORD; dwTimeout: DWORD): HResult; stdcall; end; IID_IDDVideoPortContainer = IDDVideoPortContainer; {$EXTERNALSYM IID_IDDVideoPortContainer} IID_IDirectDrawVideoPort = IDirectDrawVideoPort; {$EXTERNALSYM IID_IDirectDrawVideoPort} (* * IDirectDrawVideoPort *) {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectDrawVideoPortNotify);'} {$EXTERNALSYM IDirectDrawVideoPortNotify} IDirectDrawVideoPortNotify = interface(IUnknown) ['{6C142760-A733-11CE-A521-0020AF0BE560}'] (*** IVideoPort methods ***) function AcquireNotification(hEvent: THandle; const params: TDDVideoPortNotify): HResult; stdcall; function ReleaseNotification(hEvent: THandle): HResult; stdcall; end; function DDErrorString(Value: HResult): String; implementation //#define MAKE_DDHRESULT( code ) MAKE_HRESULT( 1, _FACDD, code ) function MAKE_DDHRESULT(Code: DWORD): HResult; begin Result:= MakeResult(1, _FACDD, code); end; //#define GET_WHQL_YEAR( dwWHQLLevel ) \ // ( (dwWHQLLevel) / 0x10000 ) function GET_WHQL_YEAR(dwWHQLLevel: DWORD): DWORD; begin Result := (dwWHQLLevel) div $10000; end; //#define GET_WHQL_MONTH( dwWHQLLevel ) \ // ( ( (dwWHQLLevel) / 0x100 ) & 0x00ff ) function GET_WHQL_MONTH(dwWHQLLevel: DWORD): DWORD; begin Result := ((dwWHQLLevel) div $100) and $00ff; end; //#define GET_WHQL_DAY( dwWHQLLevel ) \ // ( (dwWHQLLevel) & 0xff ) function GET_WHQL_DAY(dwWHQLLevel: DWORD): DWORD; begin Result := (dwWHQLLevel) and $ff; end; function MAKEFOURCC(ch0, ch1, ch2, ch3: Char): DWORD; begin Result := DWORD(Byte(ch0) shl 0) or DWORD(Byte(ch1) shl 8) or DWORD(Byte(ch2) shl 16) or DWORD(Byte(ch3) shl 24); end; function DDErrorString(Value: HResult): String; begin case Value of DD_OK: Result := 'The request completed successfully.'; DDERR_ALREADYINITIALIZED: Result := 'This object is already initialized.'; DDERR_BLTFASTCANTCLIP: Result := ' if a clipper object is attached to the source surface passed into a BltFast call.'; DDERR_CANNOTATTACHSURFACE: Result := 'This surface can not be attached to the requested surface.'; DDERR_CANNOTDETACHSURFACE: Result := 'This surface can not be detached from the requested surface.'; DDERR_CANTCREATEDC: Result := 'Windows can not create any more DCs.'; DDERR_CANTDUPLICATE: Result := 'Cannot duplicate primary & 3D surfaces, or surfaces that are implicitly created.'; DDERR_CLIPPERISUSINGHWND: Result := 'An attempt was made to set a cliplist for a clipper object that is already monitoring an hwnd.'; DDERR_COLORKEYNOTSET: Result := 'No src color key specified for this operation.'; DDERR_CURRENTLYNOTAVAIL: Result := 'Support is currently not available.'; DDERR_DIRECTDRAWALREADYCREATED: Result := 'A DirectDraw object representing this driver has already been created for this process.'; DDERR_EXCEPTION: Result := 'An exception was encountered while performing the requested operation.'; DDERR_EXCLUSIVEMODEALREADYSET: Result := 'An attempt was made to set the cooperative level when it was already set to exclusive.'; DDERR_GENERIC: Result := 'Generic failure.'; DDERR_HEIGHTALIGN: Result := 'Height of rectangle provided is not a multiple of reqd alignment.'; DDERR_HWNDALREADYSET: Result := 'The CooperativeLevel HWND has already been set. It can not be reset while the process has surfaces or palettes created.'; DDERR_HWNDSUBCLASSED: Result := 'HWND used by DirectDraw CooperativeLevel has been subclassed, this prevents DirectDraw from restoring state.'; DDERR_IMPLICITLYCREATED: Result := 'This surface can not be restored because it is an implicitly created surface.'; DDERR_INCOMPATIBLEPRIMARY: Result := 'Unable to match primary surface creation request with existing primary surface.'; DDERR_INVALIDCAPS: Result := 'One or more of the caps bits passed to the callback are incorrect.'; DDERR_INVALIDCLIPLIST: Result := 'DirectDraw does not support the provided cliplist.'; DDERR_INVALIDDIRECTDRAWGUID: Result := 'The GUID passed to DirectDrawCreate is not a valid DirectDraw driver identifier.'; DDERR_INVALIDMODE: Result := 'DirectDraw does not support the requested mode.'; DDERR_INVALIDOBJECT: Result := 'DirectDraw received a pointer that was an invalid DIRECTDRAW object.'; DDERR_INVALIDPARAMS: Result := 'One or more of the parameters passed to the function are incorrect.'; DDERR_INVALIDPIXELFORMAT: Result := 'The pixel format was invalid as specified.'; DDERR_INVALIDPOSITION: Result := 'Returned when the position of the overlay on the destination is no longer legal for that destination.'; DDERR_INVALIDRECT: Result := 'Rectangle provided was invalid.'; DDERR_LOCKEDSURFACES: Result := 'Operation could not be carried out because one or more surfaces are locked.'; DDERR_NO3D: Result := 'There is no 3D present.'; DDERR_NOALPHAHW: Result := 'Operation could not be carried out because there is no alpha accleration hardware present or available.'; DDERR_NOBLTHW: Result := 'No blitter hardware present.'; DDERR_NOCLIPLIST: Result := 'No cliplist available.'; DDERR_NOCLIPPERATTACHED: Result := 'No clipper object attached to surface object.'; DDERR_NOCOLORCONVHW: Result := 'Operation could not be carried out because there is no color conversion hardware present or available.'; DDERR_NOCOLORKEY: Result := 'Surface does not currently have a color key'; DDERR_NOCOLORKEYHW: Result := 'Operation could not be carried out because there is no hardware support of the destination color key.'; DDERR_NOCOOPERATIVELEVELSET: Result := 'Create function called without DirectDraw object method SetCooperativeLevel being called.'; DDERR_NODC: Result := 'No DC was ever created for this surface.'; DDERR_NODDROPSHW: Result := 'No DirectDraw ROP hardware.'; DDERR_NODIRECTDRAWHW: Result := 'A hardware-only DirectDraw object creation was attempted but the driver did not support any hardware.'; DDERR_NOEMULATION: Result := 'Software emulation not available.'; DDERR_NOEXCLUSIVEMODE: Result := 'Operation requires the application to have exclusive mode but the application does not have exclusive mode.'; DDERR_NOFLIPHW: Result := 'Flipping visible surfaces is not supported.'; DDERR_NOGDI: Result := 'There is no GDI present.'; DDERR_NOHWND: Result := 'Clipper notification requires an HWND or no HWND has previously been set as the CooperativeLevel HWND.'; DDERR_NOMIRRORHW: Result := 'Operation could not be carried out because there is no hardware present or available.'; DDERR_NOOVERLAYDEST: Result := 'Returned when GetOverlayPosition is called on an overlay that UpdateOverlay has never been called on to establish a destination.'; DDERR_NOOVERLAYHW: Result := 'Operation could not be carried out because there is no overlay hardware present or available.'; DDERR_NOPALETTEATTACHED: Result := 'No palette object attached to this surface.'; DDERR_NOPALETTEHW: Result := 'No hardware support for 16 or 256 color palettes.'; DDERR_NORASTEROPHW: Result := 'Operation could not be carried out because there is no appropriate raster op hardware present or available.'; DDERR_NOROTATIONHW: Result := 'Operation could not be carried out because there is no rotation hardware present or available.'; DDERR_NOSTRETCHHW: Result := 'Operation could not be carried out because there is no hardware support for stretching.'; DDERR_NOT4BITCOLOR: Result := 'DirectDrawSurface is not in 4 bit color palette and the requested operation requires 4 bit color palette.'; DDERR_NOT4BITCOLORINDEX: Result := 'DirectDrawSurface is not in 4 bit color index palette and the requested operation requires 4 bit color index palette.'; DDERR_NOT8BITCOLOR: Result := 'DirectDrawSurface is not in 8 bit color mode and the requested operation requires 8 bit color.'; DDERR_NOTAOVERLAYSURFACE: Result := 'Returned when an overlay member is called for a non-overlay surface.'; DDERR_NOTEXTUREHW: Result := 'Operation could not be carried out because there is no texture mapping hardware present or available.'; DDERR_NOTFLIPPABLE: Result := 'An attempt has been made to flip a surface that is not flippable.'; DDERR_NOTFOUND: Result := 'Requested item was not found.'; DDERR_NOTLOCKED: Result := 'Surface was not locked. An attempt to unlock a surface that was not locked at all, or by this process, has been attempted.'; DDERR_NOTPALETTIZED: Result := 'The surface being used is not a palette-based surface.'; DDERR_NOVSYNCHW: Result := 'Operation could not be carried out because there is no hardware support for vertical blank synchronized operations.'; DDERR_NOZBUFFERHW: Result := 'Operation could not be carried out because there is no hardware support for zbuffer blitting.'; DDERR_NOZOVERLAYHW: Result := 'Overlay surfaces could not be z layered based on their BltOrder because the hardware does not support z layering of overlays.'; DDERR_OUTOFCAPS: Result := 'The hardware needed for the requested operation has already been allocated.'; DDERR_OUTOFMEMORY: Result := 'DirectDraw does not have enough memory to perform the operation.'; DDERR_OUTOFVIDEOMEMORY: Result := 'DirectDraw does not have enough memory to perform the operation.'; DDERR_OVERLAYCANTCLIP: Result := 'The hardware does not support clipped overlays.'; DDERR_OVERLAYCOLORKEYONLYONEACTIVE: Result := 'Can only have ony color key active at one time for overlays.'; DDERR_OVERLAYNOTVISIBLE: Result := 'Returned when GetOverlayPosition is called on a hidden overlay.'; DDERR_PALETTEBUSY: Result := 'Access to this palette is being refused because the palette is already locked by another thread.'; DDERR_PRIMARYSURFACEALREADYEXISTS: Result := 'This process already has created a primary surface.'; DDERR_REGIONTOOSMALL: Result := 'Region passed to Clipper::GetClipList is too small.'; DDERR_SURFACEALREADYATTACHED: Result := 'This surface is already attached to the surface it is being attached to.'; DDERR_SURFACEALREADYDEPENDENT: Result := 'This surface is already a dependency of the surface it is being made a dependency of.'; DDERR_SURFACEBUSY: Result := 'Access to this surface is being refused because the surface is already locked by another thread.'; DDERR_SURFACEISOBSCURED: Result := 'Access to surface refused because the surface is obscured.'; DDERR_SURFACELOST: Result := 'Access to this surface is being refused because the surface memory is gone. The DirectDrawSurface object representing this surface should have Restore called on it.'; DDERR_SURFACENOTATTACHED: Result := 'The requested surface is not attached.'; DDERR_TOOBIGHEIGHT: Result := 'Height requested by DirectDraw is too large.'; DDERR_TOOBIGSIZE: Result := 'Size requested by DirectDraw is too large, but the individual height and width are OK.'; DDERR_TOOBIGWIDTH: Result := 'Width requested by DirectDraw is too large.'; DDERR_UNSUPPORTED: Result := 'Action not supported.'; DDERR_UNSUPPORTEDFORMAT: Result := 'FOURCC format requested is unsupported by DirectDraw.'; DDERR_UNSUPPORTEDMASK: Result := 'Bitmask in the pixel format requested is unsupported by DirectDraw.'; DDERR_VERTICALBLANKINPROGRESS: Result := 'Vertical blank is in progress.'; DDERR_WASSTILLDRAWING: Result := 'Informs DirectDraw that the previous Blt which is transfering information to or from this Surface is incomplete.'; DDERR_WRONGMODE: Result := 'This surface can not be restored because it was created in a different mode.'; DDERR_XALIGN: Result := 'Rectangle provided was not horizontally aligned on required boundary.'; // new: DDERR_OVERLAPPINGRECTS: Result := 'Operation could not be carried out because the source and destination rectangles are on the same surface and overlap each other.'; DDERR_INVALIDSTREAM: Result := 'The specified stream contains invalid data'; DDERR_UNSUPPORTEDMODE: Result := 'The display is currently in an unsupported mode'; DDERR_NOMIPMAPHW: Result := 'Operation could not be carried out because there is no mip-map texture mapping hardware present or available.'; DDERR_INVALIDSURFACETYPE: Result := 'The requested action could not be performed because the surface was of the wrong type.'; DDERR_NOOPTIMIZEHW: Result := 'Device does not support optimized surfaces, therefore no video memory optimized surfaces'; DDERR_NOTLOADED: Result := 'Surface is an optimized surface, but has not yet been allocated any memory'; DDERR_NOFOCUSWINDOW: Result := 'Attempt was made to create or set a device window without first setting the focus window'; DDERR_DCALREADYCREATED: Result := 'A DC has already been returned for this surface. Only one DC can be retrieved per surface.'; DDERR_NONONLOCALVIDMEM: Result := 'An attempt was made to allocate non-local video memory from a device that does not support non-local video memory.'; DDERR_CANTPAGELOCK: Result := 'The attempt to page lock a surface failed.'; DDERR_CANTPAGEUNLOCK: Result := 'The attempt to page unlock a surface failed.'; DDERR_NOTPAGELOCKED: Result := 'An attempt was made to page unlock a surface with no outstanding page locks.'; DDERR_MOREDATA: Result := 'There is more data available than the specified buffer size could hold'; DDERR_EXPIRED: Result := 'The data has expired and is therefore no longer valid.'; DDERR_VIDEONOTACTIVE: Result := 'The video port is not active'; DDERR_DEVICEDOESNTOWNSURFACE: Result := 'Surfaces created by one direct draw device cannot be used directly by another direct draw device.'; DDERR_NOTINITIALIZED: Result := 'An attempt was made to invoke an interface member of a DirectDraw object created by CoCreateInstance() before it was initialized.'; else Result := 'Unrecognized Error'; end; end; {$IFDEF DIRECTDRAW_DYNAMIC_LINK} var DirectDrawLib: THandle = 0; function DirectDrawLoaded: Boolean; begin Result:= DirectDrawLib <> 0; end; function UnLoadDirectDraw: Boolean; begin Result:= True; if DirectDrawLoaded then begin Result:= FreeLibrary(DirectDrawLib); DirectDrawEnumerateA := nil; DirectDrawEnumerateW := nil; DirectDrawEnumerate := nil; DirectDrawEnumerateExA := nil; DirectDrawEnumerateExW := nil; DirectDrawEnumerateEx := nil; DirectDrawCreate := nil; DirectDrawCreateEx := nil; DirectDrawCreateClipper := nil; {$IFDEF WINNT} NtDirectDrawCreate := nil; {$ENDIF} DirectDrawLib:= 0; end; end; function LoadDirectDraw: Boolean; begin Result:= DirectDrawLoaded; if (not Result) then begin DirectDrawLib:= LoadLibrary(DirectDrawDll); if DirectDrawLoaded then begin DirectDrawEnumerateA := GetProcAddress(DirectDrawLib, 'DirectDrawEnumerateA'); DirectDrawEnumerateW := GetProcAddress(DirectDrawLib, 'DirectDrawEnumerateW'); {$IFDEF UNICODE} DirectDrawEnumerate := GetProcAddress(DirectDrawLib, 'DirectDrawEnumerateW'); {$ELSE} DirectDrawEnumerate := GetProcAddress(DirectDrawLib, 'DirectDrawEnumerateA'); {$ENDIF} DirectDrawEnumerateExA := GetProcAddress(DirectDrawLib, 'DirectDrawEnumerateExA'); DirectDrawEnumerateExW := GetProcAddress(DirectDrawLib, 'DirectDrawEnumerateExW'); {$IFDEF UNICODE} DirectDrawEnumerateEx := GetProcAddress(DirectDrawLib, 'DirectDrawEnumerateExW'); {$ELSE} DirectDrawEnumerateEx := GetProcAddress(DirectDrawLib, 'DirectDrawEnumerateExA'); {$ENDIF} DirectDrawCreate := GetProcAddress(DirectDrawLib,'DirectDrawCreate'); DirectDrawCreateEx := GetProcAddress(DirectDrawLib,'DirectDrawCreateEx'); DirectDrawCreateClipper := GetProcAddress(DirectDrawLib,'DirectDrawCreateClipper'); {$IFDEF WINNT} NtDirectDrawCreate := GetProcAddress(DirectDrawLib,'NtDirectDrawCreate'); {$ENDIF} Result:= Assigned(DirectDrawCreate); // At least basic procedure is found! if not Result then UnLoadDirectDraw; end; end; end; {$ELSE} function DirectDrawLoaded: Boolean; begin // Stub function for static linking Result:= True; end; function UnLoadDirectDraw: Boolean; begin // Stub function for static linking Result:= True; // should emulate "normal" behaviour end; function LoadDirectDraw: Boolean; begin // Stub function for static linking Result:= True; end; {$ENDIF} {$IFDEF DIRECTDRAW_DYNAMIC_LINK} initialization {$IFNDEF DIRECTDRAW_DYNAMIC_LINK_EXPLICIT} LoadDirectDraw; {$ENDIF} finalization UnLoadDirectDraw; {$ENDIF} end.