接上两节,可以将ddraw.h定义为ddraw.inc,如下:
;==========================================================================
; *
; * Copyright (C) Microsoft Corporation. All Rights Reserved.
; *
; * File: ddraw.h
; * Content: DirectDraw include file [typedef macro by G-Spider @2013]
; *
; **************************************************************************
macro DEFINE_GUID def
{
match comid=,d1=,d2=,d3=,d4, def
\{
comid:
.Data1 dd d1
.Data2 dw d2
.Data3 dw d3
.Data4 db d4
\}
}
; --for example--:
; DEFINE_GUID < CLSID_DirectDraw, 0xD7B70EE0,0x4340,0x11CF,0xB0,0x63,0x00,0x20,0xAF,0xC2,0xCD,0x35 >
; DEFINE_GUID < CLSID_DirectDraw7, 0x3c305196,0x50db,0x11d3,0x9c,0xfe,0x00,0xc0,0x4f,0xd9,0x30,0xc5 >
; DEFINE_GUID < CLSID_DirectDrawClipper, 0x593817A0,0x7DB3,0x11CF,0xA2,0xDE,0x00,0xAA,0x00,0xb9,0x33,0x56 >
; DEFINE_GUID < IID_IDirectDraw, 0x6C14DB80,0xA733,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60 >
; DEFINE_GUID < IID_IDirectDraw2, 0xB3A6F3E0,0x2B43,0x11CF,0xA2,0xDE,0x00,0xAA,0x00,0xB9,0x33,0x56 >
; DEFINE_GUID < IID_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 >
; DirectDraw interface
interface DirectDraw,\
QueryInterface,\
AddRef,\
Release,\
Compact,\
CreateClipper,\
CreatePalette,\
CreateSurface,\
DuplicateSurface,\
EnumDisplayModes,\
EnumSurfaces,\
FlipToGDISurface,\
GetCaps,\
GetDisplayMode,\
GetFourCCCodes,\
GetGDISurface,\
GetMonitorFrequency,\
GetScanLine,\
GetVerticalBlankStatus,\
Initialize,\
RestoreDisplayMode,\
SetCooperativeLevel,\
SetDisplayMode,\
WaitForVerticalBlank,\
GetAvailableVidMem,\
GetSurfaceFromDC,\
RestoreAllSurfaces,\
TestCooperativeLevel,\
GetDeviceIdentifier,\
StartModeTest,\
EvaluateMode
interface DirectDrawSurface,\
QueryInterface,\
AddRef,\
Release,\
AddAttachedSurface,\
AddOverlayDirtyRect,\
Blt,\
BltBatch,\
BltFast,\
DeleteAttachedSurface,\
EnumAttachedSurfaces,\
EnumOverlayZOrders,\
Flip,\
GetAttachedSurface,\
GetBltStatus,\
GetCaps,\
GetClipper,\
GetColorKey,\
GetDC,\
GetFlipStatus,\
GetOverlayPosition,\
GetPalette,\
GetPixelFormat,\
GetSurfaceDesc,\
Initialize,\
IsLost,\
Lock,\
ReleaseDC,\
Restore,\
SetClipper,\
SetColorKey,\
SetOverlayPosition,\
SetPalette,\
Unlock,\
UpdateOverlay,\
UpdateOverlayDisplay,\
UpdateOverlayZOrder,\
GetDDInterface,\
PageLock,\
PageUnlock,\
SetSurfaceDesc,\
SetPrivateData,\
GetPrivateData,\
FreePrivateData,\
GetUniquenessValue,\
ChangeUniquenessValue,\
SetPriority,\
GetPriority,\
SetLOD,\
GetLOD
interface DirectDrawPalette,\
QueryInterface,\
AddRef,\
Release,\
GetCaps,\
GetEntries,\
Initialize,\
SetEntries
interface DirectDrawClipper,\
QueryInterface,\
AddRef,\
Release,\
GetClipList,\
GetHWnd,\
Initialize,\
IsClipListChanged,\
SetClipList,\
SetHWnd
interface DirectDrawColorControl,\
QueryInterface,\
AddRef,\
Release,\
GetColorControls,\
SetColorControls
interface DirectDrawGammaControl,\
QueryInterface,\
AddRef,\
Release,\
GetGammaRamp,\
SetGammaRamp
struct GUID
Data1 DWORD
Data2 WORD
Data3 WORD
Data4 BYTE 8 dup(?)
ends
struct DDARGB
blue BYTE
green BYTE
red BYTE
alpha BYTE
ends
struct DDRGBA
red BYTE
green BYTE
blue BYTE
alpha BYTE
ends
struct DDCOLORKEY
dwColorSpaceLowValue DWORD
dwColorSpaceHighValue DWORD
ends
struct DDBLTFX
dwSize DWORD
dwDDFX DWORD
dwROP DWORD
dwDDROP DWORD
dwRotationAngle DWORD
dwZBufferOpCode DWORD
dwZBufferLow DWORD
dwZBufferHigh DWORD
dwZBufferBaseDest DWORD
dwZDestConstBitDepth DWORD
union
dwZDestConst DWORD
lpDDSZBufferDest PVOID
ends
dwZSrcConstBitDepth DWORD
union
dwZSrcConst DWORD
lpDDSZBufferSrc PVOID
ends
dwAlphaEdgeBlendBitDepth DWORD
dwAlphaEdgeBlend DWORD
dwReserved DWORD
dwAlphaDestConstBitDepth DWORD
union
dwAlphaDestConst DWORD
lpDDSAlphaDest PVOID
ends
dwAlphaSrcConstBitDepth DWORD
union
dwAlphaSrcConst DWORD
lpDDSAlphaSrc PVOID
ends
union
dwFillColor DWORD
dwFillDepth DWORD
dwFillPixel DWORD
lpDDSPattern PVOID
ends
ddckDestColorkey DDCOLORKEY
ddckSrcColorkey DDCOLORKEY
ends
struct DDSCAPS
dwCaps DWORD
ends
struct DDOSCAPS
dwCaps DWORD
ends
struct DDSCAPSEX
dwCaps2 DWORD
dwCaps3 DWORD
union
dwCaps4 DWORD
dwVolumeDepth DWORD
ends
ends
struct DDSCAPS2
dwCaps DWORD
dwCaps2 DWORD
dwCaps3 DWORD
union
dwCaps4 DWORD
dwVolumeDepth DWORD
ends
ends
DD_ROP_SPACE = 8
struct DDCAPS
dwSize DWORD
dwCaps DWORD
dwCaps2 DWORD
dwCKeyCaps DWORD
dwFXCaps DWORD
dwFXAlphaCaps DWORD
dwPalCaps DWORD
dwSVCaps DWORD
dwAlphaBltConstBitDepths DWORD
dwAlphaBltPixelBitDepths DWORD
dwAlphaBltSurfaceBitDepths DWORD
dwAlphaOverlayConstBitDepths DWORD
dwAlphaOverlayPixelBitDepths DWORD
dwAlphaOverlaySurfaceBitDepths DWORD
dwZBufferBitDepths DWORD
dwVidMemTotal DWORD
dwVidMemFree DWORD
dwMaxVisibleOverlays DWORD
dwCurrVisibleOverlays DWORD
dwNumFourCCCodes DWORD
dwAlignBoundarySrc DWORD
dwAlignSizeSrc DWORD
dwAlignBoundaryDest DWORD
dwAlignSizeDest DWORD
dwAlignStrideAlign DWORD
dwRops DWORD DD_ROP_SPACE dup(?)
ddsOldCaps DDSCAPS
dwMinOverlayStretch DWORD
dwMaxOverlayStretch DWORD
dwMinLiveVideoStretch DWORD
dwMaxLiveVideoStretch DWORD
dwMinHwCodecStretch DWORD
dwMaxHwCodecStretch DWORD
dwReserved1 DWORD
dwReserved2 DWORD
dwReserved3 DWORD
dwSVBCaps DWORD
dwSVBCKeyCaps DWORD
dwSVBFXCaps DWORD
dwSVBRops DWORD DD_ROP_SPACE dup(?)
dwVSBCaps DWORD
dwVSBCKeyCaps DWORD
dwVSBFXCaps DWORD
dwVSBRops DWORD DD_ROP_SPACE dup(?)
dwSSBCaps DWORD
dwSSBCKeyCaps DWORD
dwSSBFXCaps DWORD
dwSSBRops DWORD DD_ROP_SPACE dup(?)
dwMaxVideoPorts DWORD
dwCurrVideoPorts DWORD
dwSVBCaps2 DWORD
dwNLVBCaps DWORD
dwNLVBCaps2 DWORD
dwNLVBCKeyCaps DWORD
dwNLVBFXCaps DWORD
dwNLVBRops DWORD DD_ROP_SPACE dup(?)
; Members added for DX6 release
ddsCaps DDSCAPS2
ends
struct DDPIXELFORMAT
dwSize DWORD
dwFlags DWORD
dwFourCC DWORD
union
dwRGBBitCount DWORD
dwYUVBitCount DWORD
dwZBufferBitDepth DWORD
dwAlphaBitDepth DWORD
dwLuminanceBitCount DWORD
dwBumpBitCount DWORD
dwPrivateFormatBitCount DWORD
ends
union
dwRBitMask DWORD
dwYBitMask DWORD
dwStencilBitDepth DWORD
dwLuminanceBitMask DWORD
dwBumpDuBitMask DWORD
dwOperations DWORD
ends
union
dwGBitMask DWORD
dwUBitMask DWORD
dwZBitMask DWORD
dwBumpDvBitMask DWORD
ends
union
dwBBitMask DWORD
dwVBitMask DWORD
dwStencilBitMask DWORD
dwBumpLuminanceBitMask DWORD
ends
union
dwRGBAlphaBitMask DWORD
dwYUVAlphaBitMask DWORD
dwLuminanceAlphaBitMask DWORD
dwRGBZBitMask DWORD
dwYUVZBitMask DWORD
ends
ends
struct DDOVERLAYFX
dwSize DWORD
dwAlphaEdgeBlendBitDepth DWORD
dwAlphaEdgeBlend DWORD
dwReserved DWORD
dwAlphaDestConstBitDepth DWORD
union
dwAlphaDestConst DWORD
lpDDSAlphaDest PVOID
ends
dwAlphaSrcConstBitDepth DWORD
union
dwAlphaSrcConst DWORD
lpDDSAlphaSrc PVOID
ends
dckDestColorkey DDCOLORKEY
dckSrcColorkey DDCOLORKEY
dwDDFX DWORD
dwFlags DWORD
ends
struct DDBLTBATCH
lprDest PVOID
lpDDSSrc PVOID
lprSrc PVOID
dwFlags DWORD
lpDDBltFx PVOID
ends
struct DDGAMMARAMP
red WORD 256 dup(?)
green WORD 256 dup(?)
blue WORD 256 dup(?)
ends
struct LARGE_INTEGER
union
struct
LowPart DWORD
HighPart LONG
ends
QuadPart LONGLONG
ends
ends
MAX_DDDEVICEID_STRING = 512
struct DDDEVICEIDENTIFIER
szDriver BYTE MAX_DDDEVICEID_STRING dup(?)
szDescription BYTE MAX_DDDEVICEID_STRING dup(?)
liDriverVersion LARGE_INTEGER
dwVendorId DWORD
dwDeviceId DWORD
dwSubSysId DWORD
dwRevision DWORD
guidDeviceIdentifier GUID
ends
struct DDDEVICEIDENTIFIER2
szDriver BYTE MAX_DDDEVICEID_STRING dup(?)
szDescription BYTE MAX_DDDEVICEID_STRING dup(?)
liDriverVersion LARGE_INTEGER
dwVendorId DWORD
dwDeviceId DWORD
dwSubSysId DWORD
dwRevision DWORD
guidDeviceIdentifier GUID
dwWHQLLevel DWORD
ends
struct DDSURFACEDESC
dwSize DWORD
dwFlags DWORD
dwHeight DWORD
dwWidth DWORD
union
lPitch LONG
dwLinearSize DWORD
ends
union
dwBackBufferCount DWORD
dwDepth DWORD
ends
union
dwZBufferBitDepth DWORD
dwMipMapCount DWORD
dwRefreshRate DWORD
dwSrcVBHandle DWORD
ends
dwAlphaBitDepth DWORD
dwReserved DWORD
lpSurface PVOID
union
ddckCKDestOverlay DDCOLORKEY
dwEmptyFaceColor DWORD
ends
ddckCKDestBlt DDCOLORKEY
ddckCKSrcOverlay DDCOLORKEY
ddckCKSrcBlt DDCOLORKEY
union
ddpfPixelFormat DDPIXELFORMAT
dwFVF DWORD
ends
ddsCaps DDSCAPS
ends
struct DDSURFACEDESC2
dwSize DWORD
dwFlags DWORD
dwHeight DWORD
dwWidth DWORD
union
lPitch LONG
dwLinearSize DWORD
ends
union
dwBackBufferCount DWORD
dwDepth DWORD
ends
union
dwZBufferBitDepth DWORD
dwMipMapCount DWORD
dwRefreshRate DWORD
dwSrcVBHandle DWORD
ends
dwAlphaBitDepth DWORD
dwReserved DWORD
lpSurface PVOID
union
ddckCKDestOverlay DDCOLORKEY
dwEmptyFaceColor DWORD
ends
ddckCKDestBlt DDCOLORKEY
ddckCKSrcOverlay DDCOLORKEY
ddckCKSrcBlt DDCOLORKEY
union
ddpfPixelFormat DDPIXELFORMAT
dwFVF DWORD
ends
ddsCaps DDSCAPS2
dwTextureStage DWORD
ends
; ddsCaps field is valid.
DDSD_CAPS =0x00000001
; dwHeight field is valid.
DDSD_HEIGHT =0x00000002
; dwWidth field is valid.
DDSD_WIDTH =0x00000004
; lPitch is valid.
DDSD_PITCH =0x00000008
; dwBackBufferCount is valid.
DDSD_BACKBUFFERCOUNT =0x00000020
; dwZBufferBitDepth is valid. (shouldnt be used in DDSURFACEDESC2)
DDSD_ZBUFFERBITDEPTH =0x00000040
; dwAlphaBitDepth is valid.
DDSD_ALPHABITDEPTH =0x00000080
; lpSurface is valid.
DDSD_LPSURFACE =0x00000800
; ddpfPixelFormat is valid.
DDSD_PIXELFORMAT =0x00001000
; ddckCKDestOverlay is valid.
DDSD_CKDESTOVERLAY =0x00002000
; ddckCKDestBlt is valid.
DDSD_CKDESTBLT =0x00004000
; ddckCKSrcOverlay is valid.
DDSD_CKSRCOVERLAY =0x00008000
; ddckCKSrcBlt is valid.
DDSD_CKSRCBLT =0x00010000
; dwMipMapCount is valid.
DDSD_MIPMAPCOUNT =0x00020000
; dwRefreshRate is valid
DDSD_REFRESHRATE =0x00040000
; dwLinearSize is valid
DDSD_LINEARSIZE =0x00080000
; dwTextureStage is valid
DDSD_TEXTURESTAGE =0x00100000
; dwFVF is valid
DDSD_FVF =0x00200000
; dwSrcVBHandle is valid
DDSD_SRCVBHANDLE =0x00400000
; dwDepth is valid
DDSD_DEPTH =0x00800000
; All input fields are valid.
DDSD_ALL =0x00fff9ee
struct DDOPTSURFACEDESC
dwSize DWORD
dwFlags DWORD
ddSCaps DDSCAPS2
ddOSCaps DDOSCAPS
guid GUID
dwCompressionRatio DWORD
ends
; guid field is valid.
DDOSD_GUID =0x00000001
; dwCompressionRatio field is valid.
DDOSD_COMPRESSION_RATIO =0x00000002
; ddSCaps field is valid.
DDOSD_SCAPS =0x00000004
; ddOSCaps field is valid.
DDOSD_OSCAPS =0x00000008
; All input fields are valid.
DDOSD_ALL =0x0000000f
; The surface's optimized pixelformat is compressed
DDOSDCAPS_OPTCOMPRESSED =0x00000001
; The surface's optimized pixelformat is reordered
DDOSDCAPS_OPTREORDERED =0x00000002
; The opt surface is a monolithic mipmap
DDOSDCAPS_MONOLITHICMIPMAP =0x00000004
DDOSDCAPS_VALIDSCAPS =0x30004800
; The valid OptSurf caps
DDOSDCAPS_VALIDOSCAPS =0x00000007
struct DDCOLORCONTROL
dwSize DWORD
dwFlags DWORD
lBrightness LONG
lContrast LONG
lHue LONG
lSaturation LONG
lSharpness LONG
lGamma LONG
lColorEnable LONG
dwReserved1 DWORD
ends
; lBrightness field is valid.
DDCOLOR_BRIGHTNESS =0x00000001
; lContrast field is valid.
DDCOLOR_CONTRAST =0x00000002
; lHue field is valid.
DDCOLOR_HUE =0x00000004
; lSaturation field is valid.
DDCOLOR_SATURATION =0x00000008
; lSharpness field is valid.
DDCOLOR_SHARPNESS =0x00000010
; lGamma field is valid.
DDCOLOR_GAMMA =0x00000020
; lColorEnable field is valid.
DDCOLOR_COLORENABLE =0x00000040
;==========================================================================
;
; Direct Draw Capability Flags
;
; These flags are used to describe the capabilities of a given Surface.
; All flags are bit flags.
;
;==========================================================================
;
; DIRECTDRAWSURFACE CAPABILITY FLAGS
;
; This bit is reserved. It should not be specified.
DDSCAPS_RESERVED1 =0x00000001
; Indicates that this surface contains alpha-only information.
; (To determine if a surface is RGBA/YUVA, the pixel format must be
; interrogated.)
DDSCAPS_ALPHA =0x00000002
; 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 =0x00000004
; 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 =0x00000008
; Indicates that this surface is a part of a surface flipping structure.
; When it is passed to CreateSurface the DDSCAPS_FRONTBUFFER and
; DDSCAP_BACKBUFFER bits are not set. They are set by CreateSurface
; on the resulting creations. The dwBackBufferCount field in the
; DDSURFACEDESC structure must be set to at least 1 in order for
; the CreateSurface call to succeed. The DDSCAPS_COMPLEX capability
; must always be set with creating multiple surfaces through CreateSurface.
DDSCAPS_FLIP =0x00000010
; 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 =0x00000020
; 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 =0x00000040
; 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 =0x00000080
; Indicates that unique DirectDrawPalette objects can be created and
; attached to this surface.
DDSCAPS_PALETTE =0x00000100
; Indicates that this surface is the primary surface. The primary
; surface represents what the user is seeing at the moment.
DDSCAPS_PRIMARYSURFACE =0x00000200
; This flag used to be DDSCAPS_PRIMARYSURFACELEFT, which is now
; obsolete.
DDSCAPS_RESERVED3 =0x00000400
DDSCAPS_PRIMARYSURFACELEFT =0x00000000
; Indicates that this surface memory was allocated in system memory
DDSCAPS_SYSTEMMEMORY =0x00000800
; 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 =0x00001000
; 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 =0x00002000
; Indicates that this surface exists in video memory.
DDSCAPS_VIDEOMEMORY =0x00004000
; 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 =0x00008000
; 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 =0x00010000
; 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 =0x00020000
; Indicates surface will have a DC associated long term
DDSCAPS_OWNDC =0x00040000
; Indicates surface should be able to receive live video
DDSCAPS_LIVEVIDEO =0x00080000
; Indicates surface should be able to have a stream decompressed
; to it by the hardware.
DDSCAPS_HWCODEC =0x00100000
; Surface is a ModeX surface.
;
DDSCAPS_MODEX =0x00200000
; 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 =0x00400000
; This bit is reserved. It should not be specified.
DDSCAPS_RESERVED2 =0x00800000
; Indicates that memory for the surface is not allocated until the surface
; is loaded (via the Direct3D texture Load() function).
DDSCAPS_ALLOCONLOAD =0x04000000
; Indicates that the surface will recieve data from a video port.
DDSCAPS_VIDEOPORT =0x08000000
; 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 =0x10000000
; 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 =0x20000000
; 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 =0x40000000
; 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 =0x80000000
; This bit is reserved
DDSCAPS2_RESERVED4 =0x00000002
DDSCAPS2_HARDWAREDEINTERLACE =0x00000000
; 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 =0x00000004
; 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 =0x00000008
; 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 set.
DDSCAPS2_TEXTUREMANAGE =0x00000010
; These bits are reserved for internal use
DDSCAPS2_RESERVED1 =0x00000020
DDSCAPS2_RESERVED2 =0x00000040
; 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 =0x00000080
; 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 =0x00000100
; This flag is used at CreateSurface time to indicate that this set of
; surfaces is a cubic environment map
DDSCAPS2_CUBEMAP =0x00000200
; 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 =0x00000400
DDSCAPS2_CUBEMAP_NEGATIVEX =0x00000800
DDSCAPS2_CUBEMAP_POSITIVEY =0x00001000
DDSCAPS2_CUBEMAP_NEGATIVEY =0x00002000
DDSCAPS2_CUBEMAP_POSITIVEZ =0x00004000
DDSCAPS2_CUBEMAP_NEGATIVEZ =0x00008000
; 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 )
; 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 =0x00010000
; This flag indicates that the texture should be managed by D3D only
DDSCAPS2_D3DTEXTUREMANAGE =0x00020000
; This flag indicates that the managed surface can be safely lost
DDSCAPS2_DONOTPERSIST =0x00040000
; indicates that this surface is part of a stereo flipping chain
DDSCAPS2_STEREOSURFACELEFT =0x00080000
; Indicates that the surface is a volume.
; Can be combined with DDSCAPS_MIPMAP to indicate a multi-level volume
DDSCAPS2_VOLUME =0x00200000
; Indicates that the surface may be locked multiple times by the application.
; This cap cannot be used with DDSCAPS2_OPAQUE.
DDSCAPS2_NOTUSERLOCKABLE =0x00400000
; Indicates that the vertex buffer data can be used to render points and
; point sprites.
DDSCAPS2_POINTS =0x00800000
; Indicates that the vertex buffer data can be used to render rt pactches.
DDSCAPS2_RTPATCHES =0x01000000
; Indicates that the vertex buffer data can be used to render n patches.
DDSCAPS2_NPATCHES =0x02000000
; This bit is reserved for internal use
DDSCAPS2_RESERVED3 =0x04000000
; Indicates that the contents of the backbuffer do not have to be preserved
; the contents of the backbuffer after they are presented.
DDSCAPS2_DISCARDBACKBUFFER =0x10000000
; 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 =0x20000000
; 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 =0x40000000
; 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 =0x80000000
; 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 =0x0000001F
; 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 =0x000000E0
DDSCAPS3_MULTISAMPLE_QUALITY_SHIFT =5
; This bit is reserved for internal use
DDSCAPS3_RESERVED1 =0x00000100
; This bit is reserved for internal use
DDSCAPS3_RESERVED2 =0x00000200
; This indicates whether this surface has light-weight miplevels
DDSCAPS3_LIGHTWEIGHTMIPMAP =0x00000400
; This indicates that the mipsublevels for this surface are auto-generated
DDSCAPS3_AUTOGENMIPMAP =0x00000800
; This indicates that the mipsublevels for this surface are auto-generated
DDSCAPS3_DMAP =0x00001000
;**************************************************************************
;
; DIRECTDRAW DRIVER CAPABILITY FLAGS
;
;**************************************************************************
; Display hardware has 3D acceleration.
DDCAPS_3D =0x00000001
; Indicates that DirectDraw will support only dest rectangles that are aligned
; on DIRECTDRAWCAPS.dwAlignBoundaryDest boundaries of the surface, respectively.
; READ ONLY.
DDCAPS_ALIGNBOUNDARYDEST =0x00000002
; Indicates that DirectDraw will support only source rectangles whose sizes in
; BYTEs are DIRECTDRAWCAPS.dwAlignSizeDest multiples, respectively. READ ONLY.
DDCAPS_ALIGNSIZEDEST =0x00000004
; Indicates that DirectDraw will support only source rectangles that are aligned
; on DIRECTDRAWCAPS.dwAlignBoundarySrc boundaries of the surface, respectively.
; READ ONLY.
DDCAPS_ALIGNBOUNDARYSRC =0x00000008
; Indicates that DirectDraw will support only source rectangles whose sizes in
; BYTEs are DIRECTDRAWCAPS.dwAlignSizeSrc multiples, respectively. READ ONLY.
DDCAPS_ALIGNSIZESRC =0x00000010
; Indicates that DirectDraw will create video memory surfaces that have a stride
; alignment equal to DIRECTDRAWCAPS.dwAlignStride. READ ONLY.
DDCAPS_ALIGNSTRIDE =0x00000020
; Display hardware is capable of blt operations.
DDCAPS_BLT =0x00000040
; Display hardware is capable of asynchronous blt operations.
DDCAPS_BLTQUEUE =0x00000080
; Display hardware is capable of color space conversions during the blt operation.
DDCAPS_BLTFOURCC =0x00000100
; Display hardware is capable of stretching during blt operations.
DDCAPS_BLTSTRETCH =0x00000200
; Display hardware is shared with GDI.
DDCAPS_GDI =0x00000400
; Display hardware can overlay.
DDCAPS_OVERLAY =0x00000800
; Set if display hardware supports overlays but can not clip them.
DDCAPS_OVERLAYCANTCLIP =0x00001000
; Indicates that overlay hardware is capable of color space conversions during
; the overlay operation.
DDCAPS_OVERLAYFOURCC =0x00002000
; Indicates that stretching can be done by the overlay hardware.
DDCAPS_OVERLAYSTRETCH =0x00004000
; Indicates that unique DirectDrawPalettes can be created for DirectDrawSurfaces
; other than the primary surface.
DDCAPS_PALETTE =0x00008000
; Indicates that palette changes can be syncd with the veritcal refresh.
DDCAPS_PALETTEVSYNC =0x00010000
; Display hardware can return the current scan line.
DDCAPS_READSCANLINE =0x00020000
; This flag used to bo DDCAPS_STEREOVIEW, which is now obsolete
DDCAPS_RESERVED1 =0x00040000
; Display hardware is capable of generating a vertical blank interrupt.
DDCAPS_VBI =0x00080000
; Supports the use of z buffers with blt operations.
DDCAPS_ZBLTS =0x00100000
; Supports Z Ordering of overlays.
DDCAPS_ZOVERLAYS =0x00200000
; Supports color key
DDCAPS_COLORKEY =0x00400000
; Supports alpha surfaces
DDCAPS_ALPHA =0x00800000
; colorkey is hardware assisted(DDCAPS_COLORKEY will also be set)
DDCAPS_COLORKEYHWASSIST =0x01000000
; no hardware support at all
DDCAPS_NOHARDWARE =0x02000000
; Display hardware is capable of color fill with bltter
DDCAPS_BLTCOLORFILL =0x04000000
; Display hardware is bank switched, and potentially very slow at
; random access to VRAM.
DDCAPS_BANKSWITCHED =0x08000000
; Display hardware is capable of depth filling Z-buffers with bltter
DDCAPS_BLTDEPTHFILL =0x10000000
; Display hardware is capable of clipping while bltting.
DDCAPS_CANCLIP =0x20000000
; Display hardware is capable of clipping while stretch bltting.
DDCAPS_CANCLIPSTRETCHED =0x40000000
; Display hardware is capable of bltting to or from system memory
DDCAPS_CANBLTSYSMEM =0x80000000
;**************************************************************************
;
; MORE DIRECTDRAW DRIVER CAPABILITY FLAGS (dwCaps2)
;
;**************************************************************************
; Display hardware is certified
DDCAPS2_CERTIFIED =0x00000001
; Driver cannot interleave 2D operations (lock and blt) to surfaces with
; Direct3D rendering operations between calls to BeginScene() and EndScene()
DDCAPS2_NO2DDURING3DSCENE =0x00000002
; Display hardware contains a video port
DDCAPS2_VIDEOPORT =0x00000004
; 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 =0x00000008
; Overlay can display each field of interlaced data individually while
; it is interleaved in memory without causing jittery artifacts.
DDCAPS2_CANBOBINTERLEAVED =0x00000010
; Overlay can display each field of interlaced data individually while
; it is not interleaved in memory without causing jittery artifacts.
DDCAPS2_CANBOBNONINTERLEAVED =0x00000020
; The overlay surface contains color controls (brightness, sharpness, etc.)
DDCAPS2_COLORCONTROLOVERLAY =0x00000040
; The primary surface contains color controls (gamma, etc.)
DDCAPS2_COLORCONTROLPRIMARY =0x00000080
; RGBZ -> RGB supported for 16:16 RGB:Z
DDCAPS2_CANDROPZ16BIT =0x00000100
; Driver supports non-local video memory.
DDCAPS2_NONLOCALVIDMEM =0x00000200
; 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 =0x00000400
; Driver neither requires nor prefers surfaces to be pagelocked when performing
; blts involving system memory surfaces
DDCAPS2_NOPAGELOCKREQUIRED =0x00000800
; Driver can create surfaces which are wider than the primary surface
DDCAPS2_WIDESURFACES =0x00001000
; Driver supports bob without using a video port by handling the
; DDFLIP_ODD and DDFLIP_EVEN flags specified in Flip.
DDCAPS2_CANFLIPODDEVEN =0x00002000
; Driver supports bob using hardware
DDCAPS2_CANBOBHARDWARE =0x00004000
; Driver supports bltting any FOURCC surface to another surface of the same FOURCC
DDCAPS2_COPYFOURCC =0x00008000
; Driver supports loadable gamma ramps for the primary surface
DDCAPS2_PRIMARYGAMMA =0x00020000
; Driver can render in windowed mode.
DDCAPS2_CANRENDERWINDOWED =0x00080000
; 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 =0x00100000
; Indicates that the driver will respond to DDFLIP_INTERVALn flags
DDCAPS2_FLIPINTERVAL =0x00200000
; Indicates that the driver will respond to DDFLIP_NOVSYNC
DDCAPS2_FLIPNOVSYNC =0x00400000
; 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 =0x00800000
; 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 =0x01000000
; 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 =0x02000000
; 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 =0x04000000
; was DDCAPS2_PUREHAL
DDCAPS2_RESERVED1 =0x08000000
; 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 =0x10000000
; 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 =0x20000000
; Driver supports auto-generation of mipmaps.
DDCAPS2_CANAUTOGENMIPMAP =0x40000000
;
; DIRECTDRAW FX ALPHA CAPABILITY FLAGS
;
; Supports alpha blending around the edge of a source color keyed surface.
; For Blt.
DDFXALPHACAPS_BLTALPHAEDGEBLEND =0x00000001
; 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 =0x00000002
; 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 =0x00000004
; 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 =0x00000008
; 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 =0x00000010
; Supports alpha blending around the edge of a source color keyed surface.
; For Overlays.
DDFXALPHACAPS_OVERLAYALPHAEDGEBLEND =0x00000020
; 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 =0x00000040
; 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 =0x00000080
; 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 =0x00000100
; 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 =0x00000200
;
; 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 =0x00000020
; Uses arithmetic operations to stretch during blt
; rather than pixel doubling techniques. Along the Y axis. Only
; works for x1, x2, etc.
DDFXCAPS_BLTARITHSTRETCHYN =0x00000010
; Supports mirroring left to right in blt.
DDFXCAPS_BLTMIRRORLEFTRIGHT =0x00000040
; Supports mirroring top to bottom in blt.
DDFXCAPS_BLTMIRRORUPDOWN =0x00000080
; Supports arbitrary rotation for blts.
DDFXCAPS_BLTROTATION =0x00000100
; Supports 90 degree rotations for blts.
DDFXCAPS_BLTROTATION90 =0x00000200
; DirectDraw supports arbitrary shrinking of a surface along the
; x axis (horizontal direction) for blts.
DDFXCAPS_BLTSHRINKX =0x00000400
; DirectDraw supports integer shrinking (1x,2x,) of a surface
; along the x axis (horizontal direction) for blts.
DDFXCAPS_BLTSHRINKXN =0x00000800
; DirectDraw supports arbitrary shrinking of a surface along the
; y axis (horizontal direction) for blts.
DDFXCAPS_BLTSHRINKY =0x00001000
; DirectDraw supports integer shrinking (1x,2x,) of a surface
; along the y axis (vertical direction) for blts.
DDFXCAPS_BLTSHRINKYN =0x00002000
; DirectDraw supports arbitrary stretching of a surface along the
; x axis (horizontal direction) for blts.
DDFXCAPS_BLTSTRETCHX =0x00004000
; DirectDraw supports integer stretching (1x,2x,) of a surface
; along the x axis (horizontal direction) for blts.
DDFXCAPS_BLTSTRETCHXN =0x00008000
; DirectDraw supports arbitrary stretching of a surface along the
; y axis (horizontal direction) for blts.
DDFXCAPS_BLTSTRETCHY =0x00010000
; DirectDraw supports integer stretching (1x,2x,) of a surface
; along the y axis (vertical direction) for blts.
DDFXCAPS_BLTSTRETCHYN =0x00020000
; Uses arithmetic operations to stretch and shrink surfaces during
; overlay rather than pixel doubling techniques. Along the Y axis
; for overlays.
DDFXCAPS_OVERLAYARITHSTRETCHY =0x00040000
; 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 =0x00000008
; DirectDraw supports arbitrary shrinking of a surface along the
; x axis (horizontal direction) for overlays.
DDFXCAPS_OVERLAYSHRINKX =0x00080000
; DirectDraw supports integer shrinking (1x,2x,) of a surface
; along the x axis (horizontal direction) for overlays.
DDFXCAPS_OVERLAYSHRINKXN =0x00100000
; DirectDraw supports arbitrary shrinking of a surface along the
; y axis (horizontal direction) for overlays.
DDFXCAPS_OVERLAYSHRINKY =0x00200000
; DirectDraw supports integer shrinking (1x,2x,) of a surface
; along the y axis (vertical direction) for overlays.
DDFXCAPS_OVERLAYSHRINKYN =0x00400000
; DirectDraw supports arbitrary stretching of a surface along the
; x axis (horizontal direction) for overlays.
DDFXCAPS_OVERLAYSTRETCHX =0x00800000
; DirectDraw supports integer stretching (1x,2x,) of a surface
; along the x axis (horizontal direction) for overlays.
DDFXCAPS_OVERLAYSTRETCHXN =0x01000000
; DirectDraw supports arbitrary stretching of a surface along the
; y axis (horizontal direction) for overlays.
DDFXCAPS_OVERLAYSTRETCHY =0x02000000
; DirectDraw supports integer stretching (1x,2x,) of a surface
; along the y axis (vertical direction) for overlays.
DDFXCAPS_OVERLAYSTRETCHYN =0x04000000
; DirectDraw supports mirroring of overlays across the vertical axis
DDFXCAPS_OVERLAYMIRRORLEFTRIGHT=0x08000000
; DirectDraw supports mirroring of overlays across the horizontal axis
DDFXCAPS_OVERLAYMIRRORUPDOWN =0x10000000
; DirectDraw supports deinterlacing of overlay surfaces
DDFXCAPS_OVERLAYDEINTERLACE =0x20000000
; Driver can do alpha blending for blits.
DDFXCAPS_BLTALPHA =0x0000000
; Driver can do surface-reconstruction filtering for warped blits.
DDFXCAPS_BLTFILTER =DDFXCAPS_BLTARITHSTRETCHY
; Driver can do alpha blending for overlays.
DDFXCAPS_OVERLAYALPHA =0x00000004
; Driver can do surface-reconstruction filtering for warped overlays.
DDFXCAPS_OVERLAYFILTER =DDFXCAPS_OVERLAYARITHSTRETCHY
;
; DIRECTDRAW STEREO VIEW CAPABILITIES
;
; This flag used to be DDSVCAPS_ENIGMA, which is now obsolete
DDSVCAPS_RESERVED1 =0x00000001
; This flag used to be DDSVCAPS_FLICKER, which is now obsolete
DDSVCAPS_RESERVED2 =0x00000002
; This flag used to be DDSVCAPS_REDBLUE, which is now obsolete
DDSVCAPS_RESERVED3 =0x00000004
; This flag used to be DDSVCAPS_SPLIT, which is now obsolete
DDSVCAPS_RESERVED4 =0x00000008
; The stereo view is accomplished with switching technology
DDSVCAPS_STEREOSEQUENTIAL =0x00000010
;
; DIRECTDRAWPALETTE CAPABILITIES
;
; Index is 4 bits. There are sixteen color entries in the palette table.
DDPCAPS_4BIT =0x00000001
; 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 =0x00000002
; Index is 8 bits. There are 256 color entries in the palette table.
DDPCAPS_8BIT =0x00000004
; 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 =0x00000000
; 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 =0x00000010
; 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 =0x00000020
; This palette can have all 256 entries defined
DDPCAPS_ALLOW256 =0x00000040
; This palette can have modifications to it synced with the monitors
; refresh rate.
DDPCAPS_VSYNC =0x00000080
; Index is 1 bit. There are two color entries in the palette table.
DDPCAPS_1BIT =0x00000100
; Index is 2 bit. There are four color entries in the palette table.
DDPCAPS_2BIT =0x00000200
; The peFlags member of PALETTEENTRY denotes an 8 bit alpha value
DDPCAPS_ALPHA =0x00000400
;
; DIRECTDRAWPALETTE SETENTRY CONSTANTS
;
;
; DIRECTDRAWPALETTE GETENTRY CONSTANTS
;
;
; 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 =0x00000001
; Private data is only valid for the current state of the object,
; as determined by the uniqueness value.
DDSPD_VOLATILE =0x00000002
;
; 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 =0x00004000
; 2 bits per pixel.
DDBD_2 =0x00002000
; 4 bits per pixel.
DDBD_4 =0x00001000
; 8 bits per pixel.
DDBD_8 =0x00000800
; 16 bits per pixel.
DDBD_16 =0x00000400
; 24 bits per pixel.
DDBD_24 =0x00000200
; 32 bits per pixel.
DDBD_32 =0x00000100
;
; 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 =0x00000001
; 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 =0x00000002
; 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 =0x00000004
; 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 =0x00000008
; 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 =0x00000010
;
; 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 =0x00000001
; Supports transparent blting using a color space to identify the replaceable
; bits of the destination surface for RGB colors.
DDCKEYCAPS_DESTBLTCLRSPACE =0x00000002
; Supports transparent blting using a color space to identify the replaceable
; bits of the destination surface for YUV colors.
DDCKEYCAPS_DESTBLTCLRSPACEYUV =0x00000004
; Supports transparent blting using a color key to identify the replaceable
; bits of the destination surface for YUV colors.
DDCKEYCAPS_DESTBLTYUV =0x00000008
; Supports overlaying using colorkeying of the replaceable bits of the surface
; being overlayed for RGB colors.
DDCKEYCAPS_DESTOVERLAY =0x00000010
; Supports a color space as the color key for the destination for RGB colors.
DDCKEYCAPS_DESTOVERLAYCLRSPACE =0x00000020
; Supports a color space as the color key for the destination for YUV colors.
DDCKEYCAPS_DESTOVERLAYCLRSPACEYUV =0x00000040
; Supports only one active destination color key value for visible overlay
; surfaces.
DDCKEYCAPS_DESTOVERLAYONEACTIVE =0x00000080
; Supports overlaying using colorkeying of the replaceable bits of the
; surface being overlayed for YUV colors.
DDCKEYCAPS_DESTOVERLAYYUV =0x00000100
; Supports transparent blting using the color key for the source with
; this surface for RGB colors.
DDCKEYCAPS_SRCBLT =0x00000200
; Supports transparent blting using a color space for the source with
; this surface for RGB colors.
DDCKEYCAPS_SRCBLTCLRSPACE =0x00000400
; Supports transparent blting using a color space for the source with
; this surface for YUV colors.
DDCKEYCAPS_SRCBLTCLRSPACEYUV =0x00000800
; Supports transparent blting using the color key for the source with
; this surface for YUV colors.
DDCKEYCAPS_SRCBLTYUV =0x00001000
; Supports overlays using the color key for the source with this
; overlay surface for RGB colors.
DDCKEYCAPS_SRCOVERLAY =0x00002000
; Supports overlays using a color space as the source color key for
; the overlay surface for RGB colors.
DDCKEYCAPS_SRCOVERLAYCLRSPACE =0x00004000
; Supports overlays using a color space as the source color key for
; the overlay surface for YUV colors.
DDCKEYCAPS_SRCOVERLAYCLRSPACEYUV =0x00008000
; Supports only one active source color key value for visible
; overlay surfaces.
DDCKEYCAPS_SRCOVERLAYONEACTIVE =0x00010000
; Supports overlays using the color key for the source with this
; overlay surface for YUV colors.
DDCKEYCAPS_SRCOVERLAYYUV =0x00020000
; there are no bandwidth trade-offs for using colorkey with an overlay
DDCKEYCAPS_NOCOSTOVERLAY =0x00040000
;
; DIRECTDRAW PIXELFORMAT FLAGS
;
; The surface has alpha channel information in the pixel format.
DDPF_ALPHAPIXELS =0x00000001
; The pixel format contains alpha only information
DDPF_ALPHA =0x00000002
; The FourCC code is valid.
DDPF_FOURCC =0x00000004
; The surface is 4-bit color indexed.
DDPF_PALETTEINDEXED4 =0x00000008
; The surface is indexed into a palette which stores indices
; into the destination surface's 8-bit palette.
DDPF_PALETTEINDEXEDTO8 =0x00000010
; The surface is 8-bit color indexed.
DDPF_PALETTEINDEXED8 =0x00000020
; The RGB data in the pixel format structure is valid.
DDPF_RGB =0x00000040
; The surface will accept pixel data in the format specified
; and compress it during the write.
DDPF_COMPRESSED =0x00000080
; 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 =0x00000100
; pixel format is YUV - YUV data in pixel format struct is valid
DDPF_YUV =0x00000200
; pixel format is a z buffer only surface
DDPF_ZBUFFER =0x00000400
; The surface is 1-bit color indexed.
DDPF_PALETTEINDEXED1 =0x00000800
; The surface is 2-bit color indexed.
DDPF_PALETTEINDEXED2 =0x00001000
; The surface contains Z information in the pixels
DDPF_ZPIXELS =0x00002000
; The surface contains stencil information along with Z
DDPF_STENCILBUFFER =0x00004000
; Premultiplied alpha format -- the color components have been
; premultiplied by the alpha component.
DDPF_ALPHAPREMULT =0x00008000
; 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 =0x00020000
; 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 =0x00040000
; Bump map dUdV data in the pixel format is valid.
DDPF_BUMPDUDV =0x00080000
;===========================================================================
;
;
; DIRECTDRAW CALLBACK FLAGS
;
;
;==========================================================================
;
; DIRECTDRAW ENUMSURFACES FLAGS
;
; Enumerate all of the surfaces that meet the search criterion.
DDENUMSURFACES_ALL =0x00000001
; A search hit is a surface that matches the surface description.
DDENUMSURFACES_MATCH =0x00000002
; A search hit is a surface that does not match the surface description.
DDENUMSURFACES_NOMATCH =0x00000004
; Enumerate the first surface that can be created which meets the search criterion.
DDENUMSURFACES_CANBECREATED =0x00000008
; Enumerate the surfaces that already exist that meet the search criterion.
DDENUMSURFACES_DOESEXIST =0x00000010
;
; DIRECTDRAW SETDISPLAYMODE FLAGS
;
; The desired mode is a standard VGA mode
DDSDM_STANDARDVGAMODE =0x0000000
;
; 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 =0x00000001
; 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 =0x00000002
;
; DIRECTDRAW SETCOOPERATIVELEVEL FLAGS
;
; Exclusive mode owner will be responsible for the entire primary surface.
; GDI can be ignored. used with DD
DDSCL_FULLSCREEN =0x00000001
; allow CTRL_ALT_DEL to work while in fullscreen exclusive mode
DDSCL_ALLOWREBOOT =0x00000002
; prevents DDRAW from modifying the application window.
; prevents DDRAW from minimize/restore the application window on activation.
DDSCL_NOWINDOWCHANGES =0x00000004
; app wants to work as a regular Windows application
DDSCL_NORMAL =0x00000008
; app wants exclusive access
DDSCL_EXCLUSIVE =0x00000010
; app can deal with non-windows display modes
DDSCL_ALLOWMODEX =0x00000040
; this window will receive the focus messages
DDSCL_SETFOCUSWINDOW =0x00000080
; this window is associated with the DDRAW object and will
; cover the screen in fullscreen mode
DDSCL_SETDEVICEWINDOW =0x00000100
; app wants DDRAW to create a window to be associated with the
; DDRAW object
DDSCL_CREATEDEVICEWINDOW =0x00000200
; App explicitly asks DDRAW/D3D to be multithread safe. This makes D3D
; take the global crtisec more frequently.
DDSCL_MULTITHREADED =0x00000400
; 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 =0x00000800
; 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 =0x00001000
;
; 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 =0x00000001
; Use the dwConstAlphaDest field in the DDBLTFX structure as the alpha channel
; for the destination surface for this blt.
DDBLT_ALPHADESTCONSTOVERRIDE =0x00000002
; The NEG suffix indicates that the destination surface becomes more
; transparent as the alpha value increases. (0 is opaque)
DDBLT_ALPHADESTNEG =0x00000004
; Use the lpDDSAlphaDest field in the DDBLTFX structure as the alpha
; channel for the destination for this blt.
DDBLT_ALPHADESTSURFACEOVERRIDE =0x00000008
; 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 =0x00000010
; 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 =0x00000020
; Use the dwConstAlphaSrc field in the DDBLTFX structure as the alpha channel
; for the source for this blt.
DDBLT_ALPHASRCCONSTOVERRIDE =0x00000040
; The NEG suffix indicates that the source surface becomes more transparent
; as the alpha value increases. (0 is opaque)
DDBLT_ALPHASRCNEG =0x00000080
; Use the lpDDSAlphaSrc field in the DDBLTFX structure as the alpha channel
; for the source for this blt.
DDBLT_ALPHASRCSURFACEOVERRIDE =0x00000100
; 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 =0x00000200
; Uses the dwFillColor field in the DDBLTFX structure as the RGB color
; to fill the destination rectangle on the destination surface with.
DDBLT_COLORFILL =0x00000400
; Uses the dwDDFX field in the DDBLTFX structure to specify the effects
; to use for the blt.
DDBLT_DDFX =0x00000800
; Uses the dwDDROPS field in the DDBLTFX structure to specify the ROPS
; that are not part of the Win32 API.
DDBLT_DDROPS =0x00001000
; Use the color key associated with the destination surface.
DDBLT_KEYDEST =0x00002000
; Use the dckDestColorkey field in the DDBLTFX structure as the color key
; for the destination surface.
DDBLT_KEYDESTOVERRIDE =0x00004000
; Use the color key associated with the source surface.
DDBLT_KEYSRC =0x00008000
; Use the dckSrcColorkey field in the DDBLTFX structure as the color key
; for the source surface.
DDBLT_KEYSRCOVERRIDE =0x00010000
; 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 =0x00020000
; Use the dwRotationAngle field in the DDBLTFX structure as the angle
; (specified in 1/100th of a degree) to rotate the surface.
DDBLT_ROTATIONANGLE =0x00040000
; 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 =0x00080000
; 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 =0x00100000
; 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 =0x00200000
; 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 =0x00400000
; 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 =0x00800000
; wait until the device is ready to handle the blt
; this will cause blt to not return DDERR_WASSTILLDRAWING
DDBLT_WAIT =0x01000000
; 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 =0x02000000
; Return immediately (with DDERR_WASSTILLDRAWING) if the device is not
; ready to schedule the blt at the time Blt() is called.
DDBLT_DONOTWAIT =0x08000000
; 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 =0x10000000
DDBLT_LAST_PRESENTATION =0x20000000
; 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 =0x40000000
; 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 =0x00000004
;
; BLTFAST FLAGS
;
DDBLTFAST_NOCOLORKEY =0x00000000
DDBLTFAST_SRCCOLORKEY =0x00000001
DDBLTFAST_DESTCOLORKEY =0x00000002
DDBLTFAST_WAIT =0x00000010
DDBLTFAST_DONOTWAIT =0x00000020
;
; FLIP FLAGS
;
DDFLIP_WAIT =0x00000001
; Indicates that the target surface contains the even field of video data.
; This flag is only valid with an overlay surface.
DDFLIP_EVEN =0x00000002
; Indicates that the target surface contains the odd field of video data.
; This flag is only valid with an overlay surface.
DDFLIP_ODD =0x00000004
; 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 =0x00000008
; 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 =0x02000000
; DirectDraw will flip on every third vertical sync
DDFLIP_INTERVAL3 =0x03000000
; DirectDraw will flip on every fourth vertical sync
DDFLIP_INTERVAL4 =0x04000000
; DirectDraw will flip and display a main stereo surface
DDFLIP_STEREO =0x00000010
; 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 =0x00000020
;
; 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 =0x00000001
; Use the dwConstAlphaDest field in the DDOVERLAYFX structure as the
; destination alpha channel for this overlay.
DDOVER_ALPHADESTCONSTOVERRIDE =0x00000002
; The NEG suffix indicates that the destination surface becomes more
; transparent as the alpha value increases.
DDOVER_ALPHADESTNEG =0x00000004
; Use the lpDDSAlphaDest field in the DDOVERLAYFX structure as the alpha
; channel destination for this overlay.
DDOVER_ALPHADESTSURFACEOVERRIDE =0x00000008
; 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 =0x00000010
; 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 =0x00000020
; Use the dwConstAlphaSrc field in the DDOVERLAYFX structure as the source
; alpha channel for this overlay.
DDOVER_ALPHASRCCONSTOVERRIDE =0x00000040
; The NEG suffix indicates that the source surface becomes more transparent
; as the alpha value increases.
DDOVER_ALPHASRCNEG =0x00000080
; Use the lpDDSAlphaSrc field in the DDOVERLAYFX structure as the alpha channel
; source for this overlay.
DDOVER_ALPHASRCSURFACEOVERRIDE =0x00000100
; Turn this overlay off.
DDOVER_HIDE =0x00000200
; Use the color key associated with the destination surface.
DDOVER_KEYDEST =0x00000400
; Use the dckDestColorkey field in the DDOVERLAYFX structure as the color key
; for the destination surface
DDOVER_KEYDESTOVERRIDE =0x00000800
; Use the color key associated with the source surface.
DDOVER_KEYSRC =0x00001000
; Use the dckSrcColorkey field in the DDOVERLAYFX structure as the color key
; for the source surface.
DDOVER_KEYSRCOVERRIDE =0x00002000
; Turn this overlay on.
DDOVER_SHOW =0x00004000
; Add a dirty rect to an emulated overlayed surface.
DDOVER_ADDDIRTYRECT =0x00008000
; Redraw all dirty rects on an emulated overlayed surface.
DDOVER_REFRESHDIRTYRECTS =0x00010000
; Redraw the entire surface on an emulated overlayed surface.
DDOVER_REFRESHALL =0x00020000
; Use the overlay FX flags to define special overlay FX
DDOVER_DDFX =0x00080000
; Autoflip the overlay when ever the video port autoflips
DDOVER_AUTOFLIP =0x00100000
; Display each field of video port data individually without
; causing any jittery artifacts
DDOVER_BOB =0x00200000
; Indicates that bob/weave decisions should not be overridden by other
; interfaces.
DDOVER_OVERRIDEBOBWEAVE =0x00400000
; Indicates that the surface memory is composed of interleaved fields.
DDOVER_INTERLEAVED =0x00800000
; Indicates that bob will be performed using hardware rather than
; software or emulated.
DDOVER_BOBHARDWARE =0x01000000
; Indicates that overlay FX structure contains valid ARGB scaling factors.
DDOVER_ARGBSCALEFACTORS =0x02000000
; Indicates that ARGB scaling factors can be degraded to fit driver capabilities.
DDOVER_DEGRADEARGBSCALING =0x04000000
;
; 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 =0x00000000
; 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 =0x00000001
; 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 =0x00000002
; Indicates that the surface being locked will only be read from.
DDLOCK_READONLY =0x00000010
; Indicates that the surface being locked will only be written to
DDLOCK_WRITEONLY =0x00000020
; 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 =0x00000800
; 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 =0x00001000
; 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 =0x00002000
; DDLOCK_OKTOSWAP is an older, less informative name for DDLOCK_DISCARDCONTENTS
DDLOCK_OKTOSWAP =0x00002000
; 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 =0x00004000
; This indicates volume texture lock with front and back specified.
DDLOCK_HASVOLUMETEXTUREBOXRECT =0x00008000
; This indicates that the driver should not update dirty rect information for this lock.
DDLOCK_NODIRTYUPDATE =0x00010000
;
; DIRECTDRAWSURFACE BLT FX FLAGS
;
; If stretching, use arithmetic stretching along the Y axis for this blt.
DDBLTFX_ARITHSTRETCHY =0x00000001
; Do this blt mirroring the surface left to right. Spin the
; surface around its y-axis.
DDBLTFX_MIRRORLEFTRIGHT =0x00000002
; Do this blt mirroring the surface up and down. Spin the surface
; around its x-axis.
DDBLTFX_MIRRORUPDOWN =0x00000004
; Schedule this blt to avoid tearing.
DDBLTFX_NOTEARING =0x00000008
; Do this blt rotating the surface one hundred and eighty degrees.
DDBLTFX_ROTATE180 =0x00000010
; Do this blt rotating the surface two hundred and seventy degrees.
DDBLTFX_ROTATE270 =0x00000020
; Do this blt rotating the surface ninety degrees.
DDBLTFX_ROTATE90 =0x00000040
; Do this z blt using dwZBufferLow and dwZBufferHigh as range values
; specified to limit the bits copied from the source surface.
DDBLTFX_ZBUFFERRANGE =0x00000080
; Do this z blt adding the dwZBufferBaseDest to each of the sources z values
; before comparing it with the desting z values.
DDBLTFX_ZBUFFERBASEDEST =0x00000100
;
; DIRECTDRAWSURFACE OVERLAY FX FLAGS
;
; If stretching, use arithmetic stretching along the Y axis for this overlay.
DDOVERFX_ARITHSTRETCHY =0x00000001
; Mirror the overlay across the vertical axis
DDOVERFX_MIRRORLEFTRIGHT =0x00000002
; Mirror the overlay across the horizontal axis
DDOVERFX_MIRRORUPDOWN =0x00000004
; Deinterlace the overlay, if possible
DDOVERFX_DEINTERLACE =0x00000008
;
; DIRECTDRAW WAITFORVERTICALBLANK FLAGS
;
; return when the vertical blank interval begins
DDWAITVB_BLOCKBEGIN =0x00000001
; set up an event to trigger when the vertical blank begins
DDWAITVB_BLOCKBEGINEVENT =0x00000002
; return when the vertical blank interval ends and display begins
DDWAITVB_BLOCKEND =0x00000004
;
; DIRECTDRAW GETFLIPSTATUS FLAGS
;
; is it OK to flip now?
DDGFS_CANFLIP =0x00000001
; is the last flip finished?
DDGFS_ISFLIPDONE =0x00000002
;
; DIRECTDRAW GETBLTSTATUS FLAGS
;
; is it OK to blt now?
DDGBS_CANBLT =0x00000001
; is the blt to the surface finished?
DDGBS_ISBLTDONE =0x00000002
;
; DIRECTDRAW ENUMOVERLAYZORDER FLAGS
;
; Enumerate overlays back to front.
DDENUMOVERLAYZ_BACKTOFRONT =0x00000000
; Enumerate overlays front to back
DDENUMOVERLAYZ_FRONTTOBACK =0x00000001
;
; DIRECTDRAW UPDATEOVERLAYZORDER FLAGS
;
; Send overlay to front
DDOVERZ_SENDTOFRONT =0x00000000
; Send overlay to back
DDOVERZ_SENDTOBACK =0x00000001
; Move Overlay forward
DDOVERZ_MOVEFORWARD =0x00000002
; Move Overlay backward
DDOVERZ_MOVEBACKWARD =0x00000003
; Move Overlay in front of relative surface
DDOVERZ_INSERTINFRONTOF =0x00000004
; Move Overlay in back of relative surface
DDOVERZ_INSERTINBACKOF =0x00000005
;
; 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 =0x00000001
;
; DIRECTDRAW STARTMODETEST FLAGS
;
; Indicates that the mode being tested has passed
DDSMT_ISTESTREQUIRED =0x00000001
;
; DIRECTDRAW EVALUATEMODE FLAGS
;
; Indicates that the mode being tested has passed
;
DDEM_MODEPASSED =0x00000001
; Indicates that the mode being tested has failed
DDEM_MODEFAILED =0x00000002
;===========================================================================
;
;
; 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.
;
;==========================================================================
S_OK =0
S_FALSE =1
; Status is OK
;
; Issued by: DirectDraw Commands and all callbacks
;
DD_OK =S_OK
DD_FALSE =S_FALSE
; stop the enumeration
DDENUMRET_CANCEL =0
; continue the enumeration
DDENUMRET_OK =1
; DirectDraw errors
DDERR_ALREADYINITIALIZED =088760000h+5
DDERR_CANNOTATTACHSURFACE =088760000h+10
DDERR_CANNOTDETACHSURFACE =088760000h+20
DDERR_CURRENTLYNOTAVAIL =088760000h+40
DDERR_EXCEPTION =088760000h+55
DDERR_HEIGHTALIGN =088760000h+90
DDERR_INCOMPATIBLEPRIMARY =088760000h+95
DDERR_INVALIDCAPS =088760000h+100
DDERR_INVALIDCLIPLIST =088760000h+110
DDERR_INVALIDMODE =088760000h+120
DDERR_INVALIDOBJECT =088760000h+130
DDERR_INVALIDPIXELFORMAT =088760000h+145
DDERR_INVALIDRECT =088760000h+150
DDERR_LOCKEDSURFACES =088760000h+160
DDERR_NO3D =088760000h+170
DDERR_NOALPHAHW =088760000h+180
DDERR_NOCLIPLIST =088760000h+205
DDERR_NOCOLORCONVHW =088760000h+210
DDERR_NOCOOPERATIVELEVELSET =088760000h+212
DDERR_NOCOLORKEY =088760000h+215
DDERR_NOCOLORKEYHW =088760000h+220
DDERR_NODIRECTDRAWSUPPORT =088760000h+222
DDERR_NOEXCLUSIVEMODE =088760000h+225
DDERR_NOFLIPHW =088760000h+230
DDERR_NOGDI =088760000h+240
DDERR_NOMIRRORHW =088760000h+250
DDERR_NOTFOUND =088760000h+255
DDERR_NOOVERLAYHW =088760000h+260
DDERR_NORASTEROPHW =088760000h+280
DDERR_NOROTATIONHW =088760000h+290
DDERR_NOSTRETCHHW =088760000h+310
DDERR_NOT4BITCOLOR =088760000h+316
DDERR_NOT4BITCOLORINDEX =088760000h+317
DDERR_NOT8BITCOLOR =088760000h+320
DDERR_NOTEXTUREHW =088760000h+330
DDERR_NOVSYNCHW =088760000h+335
DDERR_NOZBUFFERHW =088760000h+340
DDERR_NOZOVERLAYHW =088760000h+350
DDERR_OUTOFCAPS =088760000h+360
DDERR_OUTOFVIDEOMEMORY =088760000h+380
DDERR_OVERLAYCANTCLIP =088760000h+382
DDERR_OVERLAYCOLORKEYONLYONEACTI =088760000h+384
DDERR_PALETTEBUSY =088760000h+387
DDERR_COLORKEYNOTSET =088760000h+400
DDERR_SURFACEALREADYATTACHED =088760000h+410
DDERR_SURFACEALREADYDEPENDENT =088760000h+420
DDERR_SURFACEBUSY =088760000h+430
DDERR_CANTLOCKSURFACE =088760000h+435
DDERR_SURFACEISOBSCURED =088760000h+440
DDERR_SURFACELOST =088760000h+450
DDERR_SURFACENOTATTACHED =088760000h+460
DDERR_TOOBIGHEIGHT =088760000h+470
DDERR_TOOBIGSIZE =088760000h+480
DDERR_TOOBIGWIDTH =088760000h+490
DDERR_UNSUPPORTEDFORMAT =088760000h+510
DDERR_UNSUPPORTEDMASK =088760000h+520
DDERR_VERTICALBLANKINPROGRESS =088760000h+537
DDERR_WASSTILLDRAWING =088760000h+540
DDERR_XALIGN =088760000h+560
DDERR_INVALIDDIRECTDRAWGUID =088760000h+561
DDERR_DIRECTDRAWALREADYCREATED =088760000h+562
DDERR_NODIRECTDRAWHW =088760000h+563
DDERR_PRIMARYSURFACEALREADYEXIST =088760000h+564
DDERR_NOEMULATION =088760000h+565
DDERR_REGIONTOOSMALL =088760000h+566
DDERR_CLIPPERISUSINGHWND =088760000h+567
DDERR_NOCLIPPERATTACHED =088760000h+568
DDERR_NOHWND =088760000h+569
DDERR_HWNDSUBCLASSED =088760000h+570
DDERR_HWNDALREADYSET =088760000h+571
DDERR_NOPALETTEATTACHED =088760000h+572
DDERR_NOPALETTEHW =088760000h+573
DDERR_BLTFASTCANTCLIP =088760000h+574
DDERR_NOBLTHW =088760000h+575
DDERR_NODDROPSHW =088760000h+576
DDERR_OVERLAYNOTVISIBLE =088760000h+577
DDERR_NOOVERLAYDEST =088760000h+578
DDERR_INVALIDPOSITION =088760000h+579
DDERR_NOTAOVERLAYSURFACE =088760000h+580
DDERR_EXCLUSIVEMODEALREADYSET =088760000h+581
DDERR_NOTFLIPPABLE =088760000h+582
DDERR_CANTDUPLICATE =088760000h+583
DDERR_NOTLOCKED =088760000h+584
DDERR_CANTCREATEDC =088760000h+585
DDERR_NODC =088760000h+586
DDERR_WRONGMODE =088760000h+587
DDERR_IMPLICITLYCREATED =088760000h+588
DDERR_NOTPALETTIZED =088760000h+589
DDERR_UNSUPPORTEDMODE =088760000h+590
DDERR_NOMIPMAPHW =088760000h+591
DDERR_INVALIDSURFACETYPE =088760000h+592
DDERR_NOOPTIMIZEHW =088760000h+600
DDERR_NOTLOADED =088760000h+601
DDERR_DCALREADYCREATED =088760000h+620
DDERR_NONONLOCALVIDMEM =088760000h+630
DDERR_CANTPAGELOCK =088760000h+640
DDERR_CANTPAGEUNLOCK =088760000h+660
DDERR_NOTPAGELOCKED =088760000h+680
DDERR_MOREDATA =088760000h+690
DDERR_VIDEONOTACTIVE =088760000h+695
DDERR_DEVICEDOESNTOWNSURFACE =088760000h+699