G940LEDControl/DirectX/DirectDraw.pas

7207 lines
263 KiB
ObjectPascal

{******************************************************************************}
{* *}
{* 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.