summaryrefslogtreecommitdiff
path: root/specs/ddraw.py
diff options
context:
space:
mode:
Diffstat (limited to 'specs/ddraw.py')
-rw-r--r--specs/ddraw.py1664
1 files changed, 1664 insertions, 0 deletions
diff --git a/specs/ddraw.py b/specs/ddraw.py
new file mode 100644
index 0000000..eb5a072
--- /dev/null
+++ b/specs/ddraw.py
@@ -0,0 +1,1664 @@
+##########################################################################
+#
+# Copyright 2008-2009 VMware, Inc.
+# All Rights Reserved.
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+##########################################################################/
+
+"""ddraw.h"""
+
+from winapi import *
+
+DirectDrawOptSurfaceDescFlags = Flags(DWORD, [
+ "DDOSD_GUID",
+ "DDOSD_COMPRESSION_RATIO",
+ "DDOSD_SCAPS",
+ "DDOSD_OSCAPS",
+ "DDOSD_ALL",
+])
+
+DirectDrawOptSurfaceDescCapsFlags = Flags(DWORD, [
+ "DDOSDCAPS_OPTCOMPRESSED",
+ "DDOSDCAPS_OPTREORDERED",
+ "DDOSDCAPS_MONOLITHICMIPMAP",
+])
+
+DirectDrawGetDeviceIdentifierFlags = Flags(DWORD, [
+ "DDGDI_GETHOSTIDENTIFIER",
+])
+
+IDirectDraw = Interface("IDirectDraw", IUnknown)
+IDirectDraw2 = Interface("IDirectDraw2", IUnknown)
+IDirectDraw4 = Interface("IDirectDraw4", IUnknown)
+IDirectDraw7 = Interface("IDirectDraw7", IUnknown)
+IDirectDrawPalette = Interface("IDirectDrawPalette", IUnknown)
+IDirectDrawClipper = Interface("IDirectDrawClipper", IUnknown)
+IDirectDrawSurface = Interface("IDirectDrawSurface", IUnknown)
+IDirectDrawSurface2 = Interface("IDirectDrawSurface2", IUnknown)
+IDirectDrawSurface3 = Interface("IDirectDrawSurface3", IUnknown)
+IDirectDrawSurface4 = Interface("IDirectDrawSurface4", IUnknown)
+IDirectDrawSurface7 = Interface("IDirectDrawSurface7", IUnknown)
+IDirectDrawColorControl = Interface("IDirectDrawColorControl", IUnknown)
+IDirectDrawGammaControl = Interface("IDirectDrawGammaControl", IUnknown)
+
+LPDIRECTDRAW = Pointer(IDirectDraw)
+LPDIRECTDRAW2 = Pointer(IDirectDraw2)
+LPDIRECTDRAW4 = Pointer(IDirectDraw4)
+LPDIRECTDRAW7 = Pointer(IDirectDraw7)
+LPDIRECTDRAWSURFACE = Pointer(IDirectDrawSurface)
+LPDIRECTDRAWSURFACE2 = Pointer(IDirectDrawSurface2)
+LPDIRECTDRAWSURFACE3 = Pointer(IDirectDrawSurface3)
+LPDIRECTDRAWSURFACE4 = Pointer(IDirectDrawSurface4)
+LPDIRECTDRAWSURFACE7 = Pointer(IDirectDrawSurface7)
+LPDIRECTDRAWPALETTE = Pointer(IDirectDrawPalette)
+LPDIRECTDRAWCLIPPER = Pointer(IDirectDrawClipper)
+LPDIRECTDRAWCOLORCONTROL = Pointer(IDirectDrawColorControl)
+LPDIRECTDRAWGAMMACONTROL = Pointer(IDirectDrawGammaControl)
+
+DDARGB = Struct("DDARGB", [
+ (BYTE, "blue"),
+ (BYTE, "green"),
+ (BYTE, "red"),
+ (BYTE, "alpha"),
+])
+
+LPDDARGB = Pointer(DDARGB)
+
+DDRGBA = Struct("DDRGBA", [
+ (BYTE, "red"),
+ (BYTE, "green"),
+ (BYTE, "blue"),
+ (BYTE, "alpha"),
+])
+LPDDRGBA = Pointer(DDRGBA)
+
+DDCOLORKEY = Struct("DDCOLORKEY", [
+ (DWORD, "dwColorSpaceLowValue"),
+ (DWORD, "dwColorSpaceHighValue"),
+])
+LPDDCOLORKEY = Pointer(DDCOLORKEY)
+
+DDBLTFX = Struct("DDBLTFX", [
+ (DWORD, "dwSize"),
+ (DWORD, "dwDDFX"),
+ (DWORD, "dwROP"),
+ (DWORD, "dwDDROP"),
+ (DWORD, "dwRotationAngle"),
+ (DWORD, "dwZBufferOpCode"),
+ (DWORD, "dwZBufferLow"),
+ (DWORD, "dwZBufferHigh"),
+ (DWORD, "dwZBufferBaseDest"),
+ (DWORD, "dwZDestConstBitDepth"),
+ (DWORD, "dwZDestConst"),
+ (LPDIRECTDRAWSURFACE, "lpDDSZBufferDest"),
+ (DWORD, "dwZSrcConstBitDepth"),
+ (DWORD, "dwZSrcConst"),
+ (LPDIRECTDRAWSURFACE, "lpDDSZBufferSrc"),
+ (DWORD, "dwAlphaEdgeBlendBitDepth"),
+ (DWORD, "dwAlphaEdgeBlend"),
+ (DWORD, "dwReserved"),
+ (DWORD, "dwAlphaDestConstBitDepth"),
+ (DWORD, "dwAlphaDestConst"),
+ (LPDIRECTDRAWSURFACE, "lpDDSAlphaDest"),
+ (DWORD, "dwAlphaSrcConstBitDepth"),
+ (DWORD, "dwAlphaSrcConst"),
+ (LPDIRECTDRAWSURFACE, "lpDDSAlphaSrc"),
+ (DWORD, "dwFillColor"),
+ (DWORD, "dwFillDepth"),
+ (DWORD, "dwFillPixel"),
+ (LPDIRECTDRAWSURFACE, "lpDDSPattern"),
+ (DDCOLORKEY, "ddckDestColorkey"),
+ (DDCOLORKEY, "ddckSrcColorkey"),
+])
+LPDDBLTFX = Pointer(DDBLTFX)
+
+DDSCAPS = Struct("DDSCAPS", [
+ (DWORD, "dwCaps"),
+])
+LPDDSCAPS = Pointer(DDSCAPS)
+
+DDOSCAPS = Struct("DDOSCAPS", [
+ (DWORD, "dwCaps"),
+])
+LPDDOSCAPS = Pointer(DDOSCAPS)
+
+DDSCAPSEX = Struct("DDSCAPSEX", [
+ (DWORD, "dwCaps2"),
+ (DWORD, "dwCaps3"),
+ (DWORD, "dwCaps4"),
+])
+
+DDSCAPS2 = Struct("DDSCAPS2", [
+ (DWORD, "dwCaps"),
+ (DWORD, "dwCaps2"),
+ (DWORD, "dwCaps3"),
+ (DWORD, "dwCaps4"),
+])
+LPDDSCAPS2 = Pointer(DDSCAPS2)
+
+DDCAPS_DX1 = Struct("DDCAPS_DX1", [
+ (DWORD, "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"),
+ (Array(DWORD, "DD_ROP_SPACE"), "dwRops"),
+ (DDSCAPS, "ddsCaps"),
+ (DWORD, "dwMinOverlayStretch"),
+ (DWORD, "dwMaxOverlayStretch"),
+ (DWORD, "dwMinLiveVideoStretch"),
+ (DWORD, "dwMaxLiveVideoStretch"),
+ (DWORD, "dwMinHwCodecStretch"),
+ (DWORD, "dwMaxHwCodecStretch"),
+ (DWORD, "dwReserved1"),
+ (DWORD, "dwReserved2"),
+ (DWORD, "dwReserved3"),
+])
+LPDDCAPS_DX1 = Pointer(DDCAPS_DX1)
+
+DDCAPS_DX3 = Struct("DDCAPS_DX3", [
+ (DWORD, "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"),
+ (Array(DWORD, "DD_ROP_SPACE"), "dwRops"),
+ (DDSCAPS, "ddsCaps"),
+ (DWORD, "dwMinOverlayStretch"),
+ (DWORD, "dwMaxOverlayStretch"),
+ (DWORD, "dwMinLiveVideoStretch"),
+ (DWORD, "dwMaxLiveVideoStretch"),
+ (DWORD, "dwMinHwCodecStretch"),
+ (DWORD, "dwMaxHwCodecStretch"),
+ (DWORD, "dwReserved1"),
+ (DWORD, "dwReserved2"),
+ (DWORD, "dwReserved3"),
+ (DWORD, "dwSVBCaps"),
+ (DWORD, "dwSVBCKeyCaps"),
+ (DWORD, "dwSVBFXCaps"),
+ (Array(DWORD, "DD_ROP_SPACE"), "dwSVBRops"),
+ (DWORD, "dwVSBCaps"),
+ (DWORD, "dwVSBCKeyCaps"),
+ (DWORD, "dwVSBFXCaps"),
+ (Array(DWORD, "DD_ROP_SPACE"), "dwVSBRops"),
+ (DWORD, "dwSSBCaps"),
+ (DWORD, "dwSSBCKeyCaps"),
+ (DWORD, "dwSSBFXCaps"),
+ (Array(DWORD, "DD_ROP_SPACE"), "dwSSBRops"),
+ (DWORD, "dwReserved4"),
+ (DWORD, "dwReserved5"),
+ (DWORD, "dwReserved6"),
+])
+LPDDCAPS_DX3 = Pointer(DDCAPS_DX3)
+
+DDCAPS_DX5 = Struct("DDCAPS_DX5", [
+ (DWORD, "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"),
+ (Array(DWORD, "DD_ROP_SPACE"), "dwRops"),
+ (DDSCAPS, "ddsCaps"),
+ (DWORD, "dwMinOverlayStretch"),
+ (DWORD, "dwMaxOverlayStretch"),
+ (DWORD, "dwMinLiveVideoStretch"),
+ (DWORD, "dwMaxLiveVideoStretch"),
+ (DWORD, "dwMinHwCodecStretch"),
+ (DWORD, "dwMaxHwCodecStretch"),
+ (DWORD, "dwReserved1"),
+ (DWORD, "dwReserved2"),
+ (DWORD, "dwReserved3"),
+ (DWORD, "dwSVBCaps"),
+ (DWORD, "dwSVBCKeyCaps"),
+ (DWORD, "dwSVBFXCaps"),
+ (Array(DWORD, "DD_ROP_SPACE"), "dwSVBRops"),
+ (DWORD, "dwVSBCaps"),
+ (DWORD, "dwVSBCKeyCaps"),
+ (DWORD, "dwVSBFXCaps"),
+ (Array(DWORD, "DD_ROP_SPACE"), "dwVSBRops"),
+ (DWORD, "dwSSBCaps"),
+ (DWORD, "dwSSBCKeyCaps"),
+ (DWORD, "dwSSBFXCaps"),
+ (Array(DWORD, "DD_ROP_SPACE"), "dwSSBRops"),
+ (DWORD, "dwMaxVideoPorts"),
+ (DWORD, "dwCurrVideoPorts"),
+ (DWORD, "dwSVBCaps2"),
+ (DWORD, "dwNLVBCaps"),
+ (DWORD, "dwNLVBCaps2"),
+ (DWORD, "dwNLVBCKeyCaps"),
+ (DWORD, "dwNLVBFXCaps"),
+ (Array(DWORD, "DD_ROP_SPACE"), "dwNLVBRops"),
+])
+LPDDCAPS_DX5 = Pointer(DDCAPS_DX5)
+
+DDCAPS_DX6 = Struct("DDCAPS_DX6", [
+ (DWORD, "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"),
+ (Array(DWORD, "DD_ROP_SPACE"), "dwRops"),
+ (DDSCAPS, "ddsOldCaps"),
+ (DWORD, "dwMinOverlayStretch"),
+ (DWORD, "dwMaxOverlayStretch"),
+ (DWORD, "dwMinLiveVideoStretch"),
+ (DWORD, "dwMaxLiveVideoStretch"),
+ (DWORD, "dwMinHwCodecStretch"),
+ (DWORD, "dwMaxHwCodecStretch"),
+ (DWORD, "dwReserved1"),
+ (DWORD, "dwReserved2"),
+ (DWORD, "dwReserved3"),
+ (DWORD, "dwSVBCaps"),
+ (DWORD, "dwSVBCKeyCaps"),
+ (DWORD, "dwSVBFXCaps"),
+ (Array(DWORD, "DD_ROP_SPACE"), "dwSVBRops"),
+ (DWORD, "dwVSBCaps"),
+ (DWORD, "dwVSBCKeyCaps"),
+ (DWORD, "dwVSBFXCaps"),
+ (Array(DWORD, "DD_ROP_SPACE"), "dwVSBRops"),
+ (DWORD, "dwSSBCaps"),
+ (DWORD, "dwSSBCKeyCaps"),
+ (DWORD, "dwSSBFXCaps"),
+ (Array(DWORD, "DD_ROP_SPACE"), "dwSSBRops"),
+ (DWORD, "dwMaxVideoPorts"),
+ (DWORD, "dwCurrVideoPorts"),
+ (DWORD, "dwSVBCaps2"),
+ (DWORD, "dwNLVBCaps"),
+ (DWORD, "dwNLVBCaps2"),
+ (DWORD, "dwNLVBCKeyCaps"),
+ (DWORD, "dwNLVBFXCaps"),
+ (Array(DWORD, "DD_ROP_SPACE"), "dwNLVBRops"),
+ (DDSCAPS2, "ddsCaps"),
+])
+LPDDCAPS_DX6 = Pointer(DDCAPS_DX6)
+
+DDCAPS_DX7 = Struct("DDCAPS_DX7", [
+ (DWORD, "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"),
+ (Array(DWORD, "DD_ROP_SPACE"), "dwRops"),
+ (DDSCAPS, "ddsOldCaps"),
+ (DWORD, "dwMinOverlayStretch"),
+ (DWORD, "dwMaxOverlayStretch"),
+ (DWORD, "dwMinLiveVideoStretch"),
+ (DWORD, "dwMaxLiveVideoStretch"),
+ (DWORD, "dwMinHwCodecStretch"),
+ (DWORD, "dwMaxHwCodecStretch"),
+ (DWORD, "dwReserved1"),
+ (DWORD, "dwReserved2"),
+ (DWORD, "dwReserved3"),
+ (DWORD, "dwSVBCaps"),
+ (DWORD, "dwSVBCKeyCaps"),
+ (DWORD, "dwSVBFXCaps"),
+ (Array(DWORD, "DD_ROP_SPACE"), "dwSVBRops"),
+ (DWORD, "dwVSBCaps"),
+ (DWORD, "dwVSBCKeyCaps"),
+ (DWORD, "dwVSBFXCaps"),
+ (Array(DWORD, "DD_ROP_SPACE"), "dwVSBRops"),
+ (DWORD, "dwSSBCaps"),
+ (DWORD, "dwSSBCKeyCaps"),
+ (DWORD, "dwSSBFXCaps"),
+ (Array(DWORD, "DD_ROP_SPACE"), "dwSSBRops"),
+ (DWORD, "dwMaxVideoPorts"),
+ (DWORD, "dwCurrVideoPorts"),
+ (DWORD, "dwSVBCaps2"),
+ (DWORD, "dwNLVBCaps"),
+ (DWORD, "dwNLVBCaps2"),
+ (DWORD, "dwNLVBCKeyCaps"),
+ (DWORD, "dwNLVBFXCaps"),
+ (Array(DWORD, "DD_ROP_SPACE"), "dwNLVBRops"),
+ (DDSCAPS2, "ddsCaps"),
+])
+LPDDCAPS_DX7 = Pointer(DDCAPS_DX7)
+DDCAPS = DDCAPS_DX7
+LPDDCAPS = Pointer(DDCAPS)
+
+DDPIXELFORMAT = Struct("DDPIXELFORMAT", [
+ (DWORD, "dwSize"),
+ (DWORD, "dwFlags"),
+ (DWORD, "dwFourCC"),
+ (DWORD, "dwRGBBitCount"),
+ (DWORD, "dwYUVBitCount"),
+ (DWORD, "dwZBufferBitDepth"),
+ (DWORD, "dwAlphaBitDepth"),
+ (DWORD, "dwLuminanceBitCount"),
+ (DWORD, "dwBumpBitCount"),
+ (DWORD, "dwPrivateFormatBitCount"),
+ (DWORD, "dwRBitMask"),
+ (DWORD, "dwYBitMask"),
+ (DWORD, "dwStencilBitDepth"),
+ (DWORD, "dwLuminanceBitMask"),
+ (DWORD, "dwBumpDuBitMask"),
+ (DWORD, "dwOperations"),
+ (DWORD, "dwGBitMask"),
+ (DWORD, "dwUBitMask"),
+ (DWORD, "dwZBitMask"),
+ (DWORD, "dwBumpDvBitMask"),
+ (WORD, "MultiSampleCaps.wFlipMSTypes"),
+ (WORD, "MultiSampleCaps.wBltMSTypes"),
+ (DWORD, "dwBBitMask"),
+ (DWORD, "dwVBitMask"),
+ (DWORD, "dwStencilBitMask"),
+ (DWORD, "dwBumpLuminanceBitMask"),
+ (DWORD, "dwRGBAlphaBitMask"),
+ (DWORD, "dwYUVAlphaBitMask"),
+ (DWORD, "dwLuminanceAlphaBitMask"),
+ (DWORD, "dwRGBZBitMask"),
+ (DWORD, "dwYUVZBitMask"),
+])
+LPDDPIXELFORMAT = Pointer(DDPIXELFORMAT)
+
+DDOVERLAYFX = Struct("DDOVERLAYFX", [
+ (DWORD, "dwSize"),
+ (DWORD, "dwAlphaEdgeBlendBitDepth"),
+ (DWORD, "dwAlphaEdgeBlend"),
+ (DWORD, "dwReserved"),
+ (DWORD, "dwAlphaDestConstBitDepth"),
+ (DWORD, "dwAlphaDestConst"),
+ (LPDIRECTDRAWSURFACE, "lpDDSAlphaDest"),
+ (DWORD, "dwAlphaSrcConstBitDepth"),
+ (DWORD, "dwAlphaSrcConst"),
+ (LPDIRECTDRAWSURFACE, "lpDDSAlphaSrc"),
+ (DDCOLORKEY, "dckDestColorkey"),
+ (DDCOLORKEY, "dckSrcColorkey"),
+ (DWORD, "dwDDFX"),
+ (DWORD, "dwFlags"),
+])
+LPDDOVERLAYFX = Pointer(DDOVERLAYFX)
+
+DDBLTBATCH = Struct("DDBLTBATCH", [
+ (LPRECT, "lprDest"),
+ (LPDIRECTDRAWSURFACE, "lpDDSSrc"),
+ (LPRECT, "lprSrc"),
+ (DWORD, "dwFlags"),
+ (LPDDBLTFX, "lpDDBltFx"),
+])
+LPDDBLTBATCH = Pointer(DDBLTBATCH)
+
+DDGAMMARAMP = Struct("DDGAMMARAMP", [
+ (Array(WORD, "256"), "red"),
+ (Array(WORD, "256"), "green"),
+ (Array(WORD, "256"), "blue"),
+])
+LPDDGAMMARAMP = Pointer(DDGAMMARAMP)
+
+DDDEVICEIDENTIFIER = Struct("DDDEVICEIDENTIFIER", [
+ (CString, "szDriver"),
+ (CString, "szDescription"),
+ (LARGE_INTEGER, "liDriverVersion"),
+ (DWORD, "dwVendorId"),
+ (DWORD, "dwDeviceId"),
+ (DWORD, "dwSubSysId"),
+ (DWORD, "dwRevision"),
+ (GUID, "guidDeviceIdentifier"),
+])
+LPDDDEVICEIDENTIFIER = Pointer(DDDEVICEIDENTIFIER)
+
+DDDEVICEIDENTIFIER2 = Struct("DDDEVICEIDENTIFIER2", [
+ (CString, "szDriver"),
+ (CString, "szDescription"),
+ (LARGE_INTEGER, "liDriverVersion"),
+ (DWORD, "dwVendorId"),
+ (DWORD, "dwDeviceId"),
+ (DWORD, "dwSubSysId"),
+ (DWORD, "dwRevision"),
+ (GUID, "guidDeviceIdentifier"),
+ (DWORD, "dwWHQLLevel"),
+])
+LPDDDEVICEIDENTIFIER2 = Pointer(DDDEVICEIDENTIFIER2)
+
+LPCLIPPERCALLBACK = FunctionPointer(DWORD, "LPCLIPPERCALLBACK", [(LPDIRECTDRAWCLIPPER, "lpDDClipper"), (HWND, "hWnd"), (DWORD, "code"), (LPVOID, "lpContext")])
+LPSURFACESTREAMINGCALLBACK = FunctionPointer(DWORD, "LPSURFACESTREAMINGCALLBACK", [DWORD])
+
+DDSURFACEDESC = Struct("DDSURFACEDESC", [
+ (DWORD, "dwSize"),
+ (DWORD, "dwFlags"),
+ (DWORD, "dwHeight"),
+ (DWORD, "dwWidth"),
+ (LONG, "lPitch"),
+ (DWORD, "dwLinearSize"),
+ (DWORD, "dwBackBufferCount"),
+ (DWORD, "dwMipMapCount"),
+ (DWORD, "dwZBufferBitDepth"),
+ (DWORD, "dwRefreshRate"),
+ (DWORD, "dwAlphaBitDepth"),
+ (DWORD, "dwReserved"),
+ (LPVOID, "lpSurface"),
+ (DDCOLORKEY, "ddckCKDestOverlay"),
+ (DDCOLORKEY, "ddckCKDestBlt"),
+ (DDCOLORKEY, "ddckCKSrcOverlay"),
+ (DDCOLORKEY, "ddckCKSrcBlt"),
+ (DDPIXELFORMAT, "ddpfPixelFormat"),
+ (DDSCAPS, "ddsCaps"),
+])
+LPDDSURFACEDESC = Pointer(DDSURFACEDESC)
+
+DDSURFACEDESC2 = Struct("DDSURFACEDESC2", [
+ (DWORD, "dwSize"),
+ (DWORD, "dwFlags"),
+ (DWORD, "dwHeight"),
+ (DWORD, "dwWidth"),
+ (LONG, "lPitch"),
+ (DWORD, "dwLinearSize"),
+ (DWORD, "dwBackBufferCount"),
+ (DWORD, "dwDepth"),
+ (DWORD, "dwMipMapCount"),
+ (DWORD, "dwRefreshRate"),
+ (DWORD, "dwSrcVBHandle"),
+ (DWORD, "dwAlphaBitDepth"),
+ (DWORD, "dwReserved"),
+ (LPVOID, "lpSurface"),
+ (DDCOLORKEY, "ddckCKDestOverlay"),
+ (DWORD, "dwEmptyFaceColor"),
+ (DDCOLORKEY, "ddckCKDestBlt"),
+ (DDCOLORKEY, "ddckCKSrcOverlay"),
+ (DDCOLORKEY, "ddckCKSrcBlt"),
+ (DDPIXELFORMAT, "ddpfPixelFormat"),
+ (DWORD, "dwFVF"),
+ (DDSCAPS2, "ddsCaps"),
+ (DWORD, "dwTextureStage"),
+])
+LPDDSURFACEDESC2 = Pointer(DDSURFACEDESC2)
+
+DirectDrawSurfaceDescFlags = Flags(DWORD, [
+ "DDSD_CAPS",
+ "DDSD_HEIGHT",
+ "DDSD_WIDTH",
+ "DDSD_PITCH",
+ "DDSD_BACKBUFFERCOUNT",
+ "DDSD_ZBUFFERBITDEPTH",
+ "DDSD_ALPHABITDEPTH",
+ "DDSD_LPSURFACE",
+ "DDSD_PIXELFORMAT",
+ "DDSD_CKDESTOVERLAY",
+ "DDSD_CKDESTBLT",
+ "DDSD_CKSRCOVERLAY",
+ "DDSD_CKSRCBLT",
+ "DDSD_MIPMAPCOUNT",
+ "DDSD_REFRESHRATE",
+ "DDSD_LINEARSIZE",
+ "DDSD_TEXTURESTAGE",
+ "DDSD_FVF",
+ "DDSD_SRCVBHANDLE",
+ "DDSD_DEPTH",
+ "DDSD_ALL",
+])
+
+DDOPTSURFACEDESC = Struct("DDOPTSURFACEDESC", [
+ (DWORD, "dwSize"),
+ (DWORD, "dwFlags"),
+ (DDSCAPS2, "ddSCaps"),
+ (DDOSCAPS, "ddOSCaps"),
+ (GUID, "guid"),
+ (DWORD, "dwCompressionRatio"),
+])
+
+DDSD = Flags(DWORD, [
+ "DDOSD_GUID",
+ "DDOSD_COMPRESSION_RATIO",
+ "DDOSD_SCAPS",
+ "DDOSD_OSCAPS",
+ "DDOSD_ALL",
+])
+
+DDOSDCAPS = Flags(DWORD, [
+ "DDOSDCAPS_OPTCOMPRESSED",
+ "DDOSDCAPS_OPTREORDERED",
+ "DDOSDCAPS_MONOLITHICMIPMAP",
+ "DDOSDCAPS_VALIDSCAPS",
+ "DDOSDCAPS_VALIDOSCAPS",
+])
+
+DDCOLORCONTROL = Struct("DDCOLORCONTROL", [
+ (DWORD, "dwSize"),
+ (DWORD, "dwFlags"),
+ (LONG, "lBrightness"),
+ (LONG, "lContrast"),
+ (LONG, "lHue"),
+ (LONG, "lSaturation"),
+ (LONG, "lSharpness"),
+ (LONG, "lGamma"),
+ (LONG, "lColorEnable"),
+ (DWORD, "dwReserved1"),
+])
+LPDDCOLORCONTROL = Pointer(DDCOLORCONTROL)
+
+DirectDrawEnumerateExFlags = Flags(DWORD, [
+ "DDENUM_ATTACHEDSECONDARYDEVICES",
+ "DDENUM_DETACHEDSECONDARYDEVICES",
+ "DDENUM_NONDISPLAYDEVICES",
+])
+
+DirectDrawCreateFlags = FakeEnum(DWORD, [
+ "DDCREATE_HARDWAREONLY",
+ "DDCREATE_EMULATIONONLY",
+])
+
+DirectDrawColorControlFlags = Flags(DWORD, [
+ "DDCOLOR_BRIGHTNESS",
+ "DDCOLOR_CONTRAST",
+ "DDCOLOR_HUE",
+ "DDCOLOR_SATURATION",
+ "DDCOLOR_SHARPNESS",
+ "DDCOLOR_GAMMA",
+ "DDCOLOR_COLORENABLE",
+])
+
+DirectDrawCapsFlags = Flags(DWORD, [
+ "DDSCAPS_RESERVED1",
+ "DDSCAPS_ALPHA",
+ "DDSCAPS_BACKBUFFER",
+ "DDSCAPS_COMPLEX",
+ "DDSCAPS_FLIP",
+ "DDSCAPS_FRONTBUFFER",
+ "DDSCAPS_OFFSCREENPLAIN",
+ "DDSCAPS_OVERLAY",
+ "DDSCAPS_PALETTE",
+ "DDSCAPS_PRIMARYSURFACE",
+ "DDSCAPS_RESERVED3",
+ "DDSCAPS_PRIMARYSURFACELEFT",
+ "DDSCAPS_SYSTEMMEMORY",
+ "DDSCAPS_TEXTURE",
+ "DDSCAPS_3DDEVICE",
+ "DDSCAPS_VIDEOMEMORY",
+ "DDSCAPS_VISIBLE",
+ "DDSCAPS_WRITEONLY",
+ "DDSCAPS_ZBUFFER",
+ "DDSCAPS_OWNDC",
+ "DDSCAPS_LIVEVIDEO",
+ "DDSCAPS_HWCODEC",
+ "DDSCAPS_MODEX",
+ "DDSCAPS_MIPMAP",
+ "DDSCAPS_RESERVED2",
+ "DDSCAPS_ALLOCONLOAD",
+ "DDSCAPS_VIDEOPORT",
+ "DDSCAPS_LOCALVIDMEM",
+ "DDSCAPS_NONLOCALVIDMEM",
+ "DDSCAPS_STANDARDVGAMODE",
+ "DDSCAPS_OPTIMIZED",
+])
+
+DirectDrawCapabilityFlags2 = Flags(DWORD, [
+ "DDSCAPS2_RESERVED4",
+ "DDSCAPS2_HARDWAREDEINTERLACE",
+ "DDSCAPS2_HINTDYNAMIC",
+ "DDSCAPS2_HINTSTATIC",
+ "DDSCAPS2_TEXTUREMANAGE",
+ "DDSCAPS2_RESERVED1",
+ "DDSCAPS2_RESERVED2",
+ "DDSCAPS2_OPAQUE",
+ "DDSCAPS2_HINTANTIALIASING",
+ "DDSCAPS2_CUBEMAP",
+ "DDSCAPS2_CUBEMAP_ALLFACES",
+ "DDSCAPS2_CUBEMAP_POSITIVEX",
+ "DDSCAPS2_CUBEMAP_NEGATIVEX",
+ "DDSCAPS2_CUBEMAP_POSITIVEY",
+ "DDSCAPS2_CUBEMAP_NEGATIVEY",
+ "DDSCAPS2_CUBEMAP_POSITIVEZ",
+ "DDSCAPS2_CUBEMAP_NEGATIVEZ",
+ "DDSCAPS2_MIPMAPSUBLEVEL",
+ "DDSCAPS2_D3DTEXTUREMANAGE",
+ "DDSCAPS2_DONOTPERSIST",
+ "DDSCAPS2_STEREOSURFACELEFT",
+ "DDSCAPS2_VOLUME",
+ "DDSCAPS2_NOTUSERLOCKABLE",
+ "DDSCAPS2_POINTS",
+ "DDSCAPS2_RTPATCHES",
+ "DDSCAPS2_NPATCHES",
+ "DDSCAPS2_RESERVED3",
+ "DDSCAPS2_DISCARDBACKBUFFER",
+ "DDSCAPS2_ENABLEALPHACHANNEL",
+ "DDSCAPS2_EXTENDEDFORMATPRIMARY",
+ "DDSCAPS2_ADDITIONALPRIMARY",
+])
+DDSCAPS3 = Flags(DWORD, [
+ "DDSCAPS3_MULTISAMPLE_MASK",
+ "DDSCAPS3_MULTISAMPLE_QUALITY_MASK",
+ "DDSCAPS3_MULTISAMPLE_QUALITY_SHIFT",
+ "DDSCAPS3_RESERVED1",
+ "DDSCAPS3_RESERVED2",
+ "DDSCAPS3_LIGHTWEIGHTMIPMAP",
+ "DDSCAPS3_AUTOGENMIPMAP",
+ "DDSCAPS3_DMAP",
+ "DDSCAPS3_CREATESHAREDRESOURCE",
+ "DDSCAPS3_READONLYRESOURCE",
+ "DDSCAPS3_OPENSHAREDRESOURCE",
+])
+
+DirectDrawDriverCapsFlags = Flags(DWORD, [
+ "DDCAPS_3D",
+ "DDCAPS_ALIGNBOUNDARYDEST",
+ "DDCAPS_ALIGNSIZEDEST",
+ "DDCAPS_ALIGNBOUNDARYSRC",
+ "DDCAPS_ALIGNSIZESRC",
+ "DDCAPS_ALIGNSTRIDE",
+ "DDCAPS_BLT",
+ "DDCAPS_BLTQUEUE",
+ "DDCAPS_BLTFOURCC",
+ "DDCAPS_BLTSTRETCH",
+ "DDCAPS_GDI",
+ "DDCAPS_OVERLAY",
+ "DDCAPS_OVERLAYCANTCLIP",
+ "DDCAPS_OVERLAYFOURCC",
+ "DDCAPS_OVERLAYSTRETCH",
+ "DDCAPS_PALETTE",
+ "DDCAPS_PALETTEVSYNC",
+ "DDCAPS_READSCANLINE",
+ "DDCAPS_RESERVED1",
+ "DDCAPS_VBI",
+ "DDCAPS_ZBLTS",
+ "DDCAPS_ZOVERLAYS",
+ "DDCAPS_COLORKEY",
+ "DDCAPS_ALPHA",
+ "DDCAPS_COLORKEYHWASSIST",
+ "DDCAPS_NOHARDWARE",
+ "DDCAPS_BLTCOLORFILL",
+ "DDCAPS_BANKSWITCHED",
+ "DDCAPS_BLTDEPTHFILL",
+ "DDCAPS_CANCLIP",
+ "DDCAPS_CANCLIPSTRETCHED",
+ "DDCAPS_CANBLTSYSMEM",
+])
+
+DirectDrawDriverCapsFlags2 = Flags(DWORD, [
+ "DDCAPS2_CERTIFIED",
+ "DDCAPS2_NO2DDURING3DSCENE",
+ "DDCAPS2_VIDEOPORT",
+ "DDCAPS2_AUTOFLIPOVERLAY",
+ "DDCAPS2_CANBOBINTERLEAVED",
+ "DDCAPS2_CANBOBNONINTERLEAVED",
+ "DDCAPS2_COLORCONTROLOVERLAY",
+ "DDCAPS2_COLORCONTROLPRIMARY",
+ "DDCAPS2_CANDROPZ16BIT",
+ "DDCAPS2_NONLOCALVIDMEM",
+ "DDCAPS2_NONLOCALVIDMEMCAPS",
+ "DDCAPS2_NOPAGELOCKREQUIRED",
+ "DDCAPS2_WIDESURFACES",
+ "DDCAPS2_CANFLIPODDEVEN",
+ "DDCAPS2_CANBOBHARDWARE",
+ "DDCAPS2_COPYFOURCC",
+ "DDCAPS2_PRIMARYGAMMA",
+ "DDCAPS2_CANRENDERWINDOWED",
+ "DDCAPS2_CANCALIBRATEGAMMA",
+ "DDCAPS2_FLIPINTERVAL",
+ "DDCAPS2_FLIPNOVSYNC",
+ "DDCAPS2_CANMANAGETEXTURE",
+ "DDCAPS2_TEXMANINNONLOCALVIDMEM",
+ "DDCAPS2_STEREO",
+ "DDCAPS2_SYSTONONLOCAL_AS_SYSTOLOCAL",
+ "DDCAPS2_RESERVED1",
+ "DDCAPS2_CANMANAGERESOURCE",
+ "DDCAPS2_DYNAMICTEXTURES",
+ "DDCAPS2_CANAUTOGENMIPMAP",
+ "DDCAPS2_CANSHARERESOURCE",
+])
+
+DirectDrawFxAlphaCapsFlags = Flags(DWORD, [
+ "DDFXALPHACAPS_BLTALPHAEDGEBLEND",
+ "DDFXALPHACAPS_BLTALPHAPIXELS",
+ "DDFXALPHACAPS_BLTALPHAPIXELSNEG",
+ "DDFXALPHACAPS_BLTALPHASURFACES",
+ "DDFXALPHACAPS_BLTALPHASURFACESNEG",
+ "DDFXALPHACAPS_OVERLAYALPHAEDGEBLEND",
+ "DDFXALPHACAPS_OVERLAYALPHAPIXELS",
+ "DDFXALPHACAPS_OVERLAYALPHAPIXELSNEG",
+ "DDFXALPHACAPS_OVERLAYALPHASURFACES",
+ "DDFXALPHACAPS_OVERLAYALPHASURFACESNEG",
+])
+
+DirectDrawFxCapsFlags = Flags(DWORD, [
+ "DDFXCAPS_BLTARITHSTRETCHY",
+ "DDFXCAPS_BLTARITHSTRETCHYN",
+ "DDFXCAPS_BLTMIRRORLEFTRIGHT",
+ "DDFXCAPS_BLTMIRRORUPDOWN",
+ "DDFXCAPS_BLTROTATION",
+ "DDFXCAPS_BLTROTATION90",
+ "DDFXCAPS_BLTSHRINKX",
+ "DDFXCAPS_BLTSHRINKXN",
+ "DDFXCAPS_BLTSHRINKY",
+ "DDFXCAPS_BLTSHRINKYN",
+ "DDFXCAPS_BLTSTRETCHX",
+ "DDFXCAPS_BLTSTRETCHXN",
+ "DDFXCAPS_BLTSTRETCHY",
+ "DDFXCAPS_BLTSTRETCHYN",
+ "DDFXCAPS_OVERLAYARITHSTRETCHY",
+ "DDFXCAPS_OVERLAYARITHSTRETCHYN",
+ "DDFXCAPS_OVERLAYSHRINKX",
+ "DDFXCAPS_OVERLAYSHRINKXN",
+ "DDFXCAPS_OVERLAYSHRINKY",
+ "DDFXCAPS_OVERLAYSHRINKYN",
+ "DDFXCAPS_OVERLAYSTRETCHX",
+ "DDFXCAPS_OVERLAYSTRETCHXN",
+ "DDFXCAPS_OVERLAYSTRETCHY",
+ "DDFXCAPS_OVERLAYSTRETCHYN",
+ "DDFXCAPS_OVERLAYMIRRORLEFTRIGHT",
+ "DDFXCAPS_OVERLAYMIRRORUPDOWN",
+ "DDFXCAPS_OVERLAYDEINTERLACE",
+ "DDFXCAPS_BLTALPHA",
+ "DDFXCAPS_BLTFILTER",
+ "DDFXCAPS_OVERLAYALPHA",
+ "DDFXCAPS_OVERLAYFILTER",
+])
+
+DirectDrawStereoViewCapsFlags = Flags(DWORD, [
+ "DDSVCAPS_RESERVED1",
+ "DDSVCAPS_RESERVED2",
+ "DDSVCAPS_RESERVED3",
+ "DDSVCAPS_RESERVED4",
+ "DDSVCAPS_STEREOSEQUENTIAL",
+])
+
+DirectDrawPaletteCapsFlags = Flags(DWORD, [
+ "DDPCAPS_4BIT",
+ "DDPCAPS_8BITENTRIES",
+ "DDPCAPS_8BIT",
+ "DDPCAPS_INITIALIZE",
+ "DDPCAPS_PRIMARYSURFACE",
+ "DDPCAPS_PRIMARYSURFACELEFT",
+ "DDPCAPS_ALLOW256",
+ "DDPCAPS_VSYNC",
+ "DDPCAPS_1BIT",
+ "DDPCAPS_2BIT",
+ "DDPCAPS_ALPHA",
+])
+
+DirectDrawSurfaceSetPrivateDataConstants = FakeEnum(DWORD, [
+ "DDSPD_IUNKNOWNPOINTER",
+ "DDSPD_VOLATILE",
+])
+
+DirectDrawSurfaceSetPaletteConstants = FakeEnum(DWORD, [
+ "DDBD_1",
+ "DDBD_2",
+ "DDBD_4",
+ "DDBD_8",
+ "DDBD_16",
+ "DDBD_24",
+ "DDBD_32",
+])
+
+DirectDrawSurfaceSetGetColorKeyFlags = Flags(DWORD, [
+ "DDCKEY_COLORSPACE",
+ "DDCKEY_DESTBLT",
+ "DDCKEY_DESTOVERLAY",
+ "DDCKEY_SRCBLT",
+ "DDCKEY_SRCOVERLAY",
+])
+
+DirectDrawColorKeyCapsFlags = Flags(DWORD, [
+ "DDCKEYCAPS_DESTBLT",
+ "DDCKEYCAPS_DESTBLTCLRSPACE",
+ "DDCKEYCAPS_DESTBLTCLRSPACEYUV",
+ "DDCKEYCAPS_DESTBLTYUV",
+ "DDCKEYCAPS_DESTOVERLAY",
+ "DDCKEYCAPS_DESTOVERLAYCLRSPACE",
+ "DDCKEYCAPS_DESTOVERLAYCLRSPACEYUV",
+ "DDCKEYCAPS_DESTOVERLAYONEACTIVE",
+ "DDCKEYCAPS_DESTOVERLAYYUV",
+ "DDCKEYCAPS_SRCBLT",
+ "DDCKEYCAPS_SRCBLTCLRSPACE",
+ "DDCKEYCAPS_SRCBLTCLRSPACEYUV",
+ "DDCKEYCAPS_SRCBLTYUV",
+ "DDCKEYCAPS_SRCOVERLAY",
+ "DDCKEYCAPS_SRCOVERLAYCLRSPACE",
+ "DDCKEYCAPS_SRCOVERLAYCLRSPACEYUV",
+ "DDCKEYCAPS_SRCOVERLAYONEACTIVE",
+ "DDCKEYCAPS_SRCOVERLAYYUV",
+ "DDCKEYCAPS_NOCOSTOVERLAY",
+])
+
+DirectDrawPixelFormatFlags = Flags(DWORD, [
+ "DDPF_ALPHAPIXELS",
+ "DDPF_ALPHA",
+ "DDPF_FOURCC",
+ "DDPF_PALETTEINDEXED4",
+ "DDPF_PALETTEINDEXEDTO8",
+ "DDPF_PALETTEINDEXED8",
+ "DDPF_RGB",
+ "DDPF_COMPRESSED",
+ "DDPF_RGBTOYUV",
+ "DDPF_YUV",
+ "DDPF_ZBUFFER",
+ "DDPF_PALETTEINDEXED1",
+ "DDPF_PALETTEINDEXED2",
+ "DDPF_ZPIXELS",
+ "DDPF_STENCILBUFFER",
+ "DDPF_ALPHAPREMULT",
+ "DDPF_LUMINANCE",
+ "DDPF_BUMPLUMINANCE",
+ "DDPF_BUMPDUDV",
+])
+
+DirectDrawEnumSurfacesFlags = Flags(DWORD, [
+ "DDENUMSURFACES_ALL",
+ "DDENUMSURFACES_MATCH",
+ "DDENUMSURFACES_NOMATCH",
+ "DDENUMSURFACES_CANBECREATED",
+ "DDENUMSURFACES_DOESEXIST",
+])
+
+DirectDrawSetDisplayModeFlags = Flags(DWORD, [
+ "DDSDM_STANDARDVGAMODE",
+])
+
+DirectDrawEnumDisplayModesFlags = Flags(DWORD, [
+ "DDEDM_REFRESHRATES",
+ "DDEDM_STANDARDVGAMODES",
+])
+
+DirectDrawSetCooperativeLevelFlags = Flags(DWORD, [
+ "DDSCL_FULLSCREEN",
+ "DDSCL_ALLOWREBOOT",
+ "DDSCL_NOWINDOWCHANGES",
+ "DDSCL_NORMAL",
+ "DDSCL_EXCLUSIVE",
+ "DDSCL_ALLOWMODEX",
+ "DDSCL_SETFOCUSWINDOW",
+ "DDSCL_SETDEVICEWINDOW",
+ "DDSCL_CREATEDEVICEWINDOW",
+ "DDSCL_MULTITHREADED",
+ "DDSCL_FPUSETUP",
+ "DDSCL_FPUPRESERVE",
+])
+
+DirectDrawBltFlags = Flags(DWORD, [
+ "DDBLT_ALPHADEST",
+ "DDBLT_ALPHADESTCONSTOVERRIDE",
+ "DDBLT_ALPHADESTNEG",
+ "DDBLT_ALPHADESTSURFACEOVERRIDE",
+ "DDBLT_ALPHAEDGEBLEND",
+ "DDBLT_ALPHASRC",
+ "DDBLT_ALPHASRCCONSTOVERRIDE",
+ "DDBLT_ALPHASRCNEG",
+ "DDBLT_ALPHASRCSURFACEOVERRIDE",
+ "DDBLT_ASYNC",
+ "DDBLT_COLORFILL",
+ "DDBLT_DDFX",
+ "DDBLT_DDROPS",
+ "DDBLT_KEYDEST",
+ "DDBLT_KEYDESTOVERRIDE",
+ "DDBLT_KEYSRC",
+ "DDBLT_KEYSRCOVERRIDE",
+ "DDBLT_ROP",
+ "DDBLT_ROTATIONANGLE",
+ "DDBLT_ZBUFFER",
+ "DDBLT_ZBUFFERDESTCONSTOVERRIDE",
+ "DDBLT_ZBUFFERDESTOVERRIDE",
+ "DDBLT_ZBUFFERSRCCONSTOVERRIDE",
+ "DDBLT_ZBUFFERSRCOVERRIDE",
+ "DDBLT_WAIT",
+ "DDBLT_DEPTHFILL",
+ "DDBLT_DONOTWAIT",
+ "DDBLT_PRESENTATION",
+ "DDBLT_LAST_PRESENTATION",
+ "DDBLT_EXTENDED_FLAGS",
+ "DDBLT_EXTENDED_LINEAR_CONTENT",
+])
+
+DirectDrawBltFastFlags = Flags(DWORD, [
+ "DDBLTFAST_NOCOLORKEY",
+ "DDBLTFAST_SRCCOLORKEY",
+ "DDBLTFAST_DESTCOLORKEY",
+ "DDBLTFAST_WAIT",
+ "DDBLTFAST_DONOTWAIT",
+])
+
+DirectDrawFlipFlags = Flags(DWORD, [
+ "DDFLIP_WAIT",
+ "DDFLIP_EVEN",
+ "DDFLIP_ODD",
+ "DDFLIP_NOVSYNC",
+ "DDFLIP_INTERVAL2",
+ "DDFLIP_INTERVAL3",
+ "DDFLIP_INTERVAL4",
+ "DDFLIP_STEREO",
+ "DDFLIP_DONOTWAIT",
+])
+
+DirectDrawSurfaceOverlayFlags = Flags(DWORD, [
+ "DDOVER_ALPHADEST",
+ "DDOVER_ALPHADESTCONSTOVERRIDE",
+ "DDOVER_ALPHADESTNEG",
+ "DDOVER_ALPHADESTSURFACEOVERRIDE",
+ "DDOVER_ALPHAEDGEBLEND",
+ "DDOVER_ALPHASRC",
+ "DDOVER_ALPHASRCCONSTOVERRIDE",
+ "DDOVER_ALPHASRCNEG",
+ "DDOVER_ALPHASRCSURFACEOVERRIDE",
+ "DDOVER_HIDE",
+ "DDOVER_KEYDEST",
+ "DDOVER_KEYDESTOVERRIDE",
+ "DDOVER_KEYSRC",
+ "DDOVER_KEYSRCOVERRIDE",
+ "DDOVER_SHOW",
+ "DDOVER_ADDDIRTYRECT",
+ "DDOVER_REFRESHDIRTYRECTS",
+ "DDOVER_REFRESHALL",
+ "DDOVER_DDFX",
+ "DDOVER_AUTOFLIP",
+ "DDOVER_BOB",
+ "DDOVER_OVERRIDEBOBWEAVE",
+ "DDOVER_INTERLEAVED",
+ "DDOVER_BOBHARDWARE",
+ "DDOVER_ARGBSCALEFACTORS",
+ "DDOVER_DEGRADEARGBSCALING",
+])
+
+DDSETSURFACEDESC = Flags(DWORD, [
+ #"DDSETSURFACEDESC_RECREATEDC",
+ #"DDSETSURFACEDESC_PRESERVEDC",
+])
+
+DirectDrawSurfaceLockFlags = Flags(DWORD, [
+ "DDLOCK_SURFACEMEMORYPTR",
+ "DDLOCK_WAIT",
+ "DDLOCK_EVENT",
+ "DDLOCK_READONLY",
+ "DDLOCK_WRITEONLY",
+ "DDLOCK_NOSYSLOCK",
+ "DDLOCK_NOOVERWRITE",
+ "DDLOCK_DISCARDCONTENTS",
+ "DDLOCK_OKTOSWAP",
+ "DDLOCK_DONOTWAIT",
+ "DDLOCK_HASVOLUMETEXTUREBOXRECT",
+ "DDLOCK_NODIRTYUPDATE",
+])
+
+DirectDrawSurfaceBltFxFlags = Flags(DWORD, [
+ "DDBLTFX_ARITHSTRETCHY",
+ "DDBLTFX_MIRRORLEFTRIGHT",
+ "DDBLTFX_MIRRORUPDOWN",
+ "DDBLTFX_NOTEARING",
+ "DDBLTFX_ROTATE180",
+ "DDBLTFX_ROTATE270",
+ "DDBLTFX_ROTATE90",
+ "DDBLTFX_ZBUFFERRANGE",
+ "DDBLTFX_ZBUFFERBASEDEST",
+])
+
+DirectDrawOverlayFxFlags = Flags(DWORD, [
+ "DDOVERFX_ARITHSTRETCHY",
+ "DDOVERFX_MIRRORLEFTRIGHT",
+ "DDOVERFX_MIRRORUPDOWN",
+ "DDOVERFX_DEINTERLACE",
+])
+
+DirectDrawWaitForVerticalBlankFlags = Flags(DWORD, [
+ "DDWAITVB_BLOCKBEGIN",
+ "DDWAITVB_BLOCKBEGINEVENT",
+ "DDWAITVB_BLOCKEND",
+])
+
+DirectDrawGetFlipStatusFlags = Flags(DWORD, [
+ "DDGFS_CANFLIP",
+ "DDGFS_ISFLIPDONE",
+])
+
+DirectDrawGetBltStatusFlags = Flags(DWORD, [
+ "DDGBS_CANBLT",
+ "DDGBS_ISBLTDONE",
+])
+
+DirectDrawEnumOverlayZOrderFlags = Flags(DWORD, [
+ "DDENUMOVERLAYZ_BACKTOFRONT",
+ "DDENUMOVERLAYZ_FRONTTOBACK",
+])
+
+DirectDrawUpdateOverlayZOrderFlags = Flags(DWORD, [
+ "DDOVERZ_SENDTOFRONT",
+ "DDOVERZ_SENDTOBACK",
+ "DDOVERZ_MOVEFORWARD",
+ "DDOVERZ_MOVEBACKWARD",
+ "DDOVERZ_INSERTINFRONTOF",
+ "DDOVERZ_INSERTINBACKOF",
+])
+
+DirectDrawSetGammaRampFlags = Flags(DWORD, [
+ "DDSGR_CALIBRATE",
+])
+
+DirectDrawStartModeTestFlags = Flags(DWORD, [
+ "DDSMT_ISTESTREQUIRED",
+])
+
+DirectDrawEvaluateModeFlags = Flags(DWORD, [
+ "DDEM_MODEPASSED",
+ "DDEM_MODEFAILED",
+])
+
+DDRESULT = FakeEnum(HRESULT, [
+ "DD_OK",
+ "DD_FALSE",
+ "DDERR_ALREADYINITIALIZED",
+ "DDERR_CANNOTATTACHSURFACE",
+ "DDERR_CANNOTDETACHSURFACE",
+ "DDERR_CURRENTLYNOTAVAIL",
+ "DDERR_EXCEPTION",
+ "DDERR_GENERIC",
+ "DDERR_HEIGHTALIGN",
+ "DDERR_INCOMPATIBLEPRIMARY",
+ "DDERR_INVALIDCAPS",
+ "DDERR_INVALIDCLIPLIST",
+ "DDERR_INVALIDMODE",
+ "DDERR_INVALIDOBJECT",
+ "DDERR_INVALIDPARAMS",
+ "DDERR_INVALIDPIXELFORMAT",
+ "DDERR_INVALIDRECT",
+ "DDERR_LOCKEDSURFACES",
+ "DDERR_NO3D",
+ "DDERR_NOALPHAHW",
+ "DDERR_NOSTEREOHARDWARE",
+ "DDERR_NOSURFACELEFT",
+ "DDERR_NOCLIPLIST",
+ "DDERR_NOCOLORCONVHW",
+ "DDERR_NOCOOPERATIVELEVELSET",
+ "DDERR_NOCOLORKEY",
+ "DDERR_NOCOLORKEYHW",
+ "DDERR_NODIRECTDRAWSUPPORT",
+ "DDERR_NOEXCLUSIVEMODE",
+ "DDERR_NOFLIPHW",
+ "DDERR_NOGDI",
+ "DDERR_NOMIRRORHW",
+ "DDERR_NOTFOUND",
+ "DDERR_NOOVERLAYHW",
+ "DDERR_OVERLAPPINGRECTS",
+ "DDERR_NORASTEROPHW",
+ "DDERR_NOROTATIONHW",
+ "DDERR_NOSTRETCHHW",
+ "DDERR_NOT4BITCOLOR",
+ "DDERR_NOT4BITCOLORINDEX",
+ "DDERR_NOT8BITCOLOR",
+ "DDERR_NOTEXTUREHW",
+ "DDERR_NOVSYNCHW",
+ "DDERR_NOZBUFFERHW",
+ "DDERR_NOZOVERLAYHW",
+ "DDERR_OUTOFCAPS",
+ "DDERR_OUTOFMEMORY",
+ "DDERR_OUTOFVIDEOMEMORY",
+ "DDERR_OVERLAYCANTCLIP",
+ "DDERR_OVERLAYCOLORKEYONLYONEACTIVE",
+ "DDERR_PALETTEBUSY",
+ "DDERR_COLORKEYNOTSET",
+ "DDERR_SURFACEALREADYATTACHED",
+ "DDERR_SURFACEALREADYDEPENDENT",
+ "DDERR_SURFACEBUSY",
+ "DDERR_CANTLOCKSURFACE",
+ "DDERR_SURFACEISOBSCURED",
+ "DDERR_SURFACELOST",
+ "DDERR_SURFACENOTATTACHED",
+ "DDERR_TOOBIGHEIGHT",
+ "DDERR_TOOBIGSIZE",
+ "DDERR_TOOBIGWIDTH",
+ "DDERR_UNSUPPORTED",
+ "DDERR_UNSUPPORTEDFORMAT",
+ "DDERR_UNSUPPORTEDMASK",
+ "DDERR_INVALIDSTREAM",
+ "DDERR_VERTICALBLANKINPROGRESS",
+ "DDERR_WASSTILLDRAWING",
+ "DDERR_DDSCAPSCOMPLEXREQUIRED",
+ "DDERR_XALIGN",
+ "DDERR_INVALIDDIRECTDRAWGUID",
+ "DDERR_DIRECTDRAWALREADYCREATED",
+ "DDERR_NODIRECTDRAWHW",
+ "DDERR_PRIMARYSURFACEALREADYEXISTS",
+ "DDERR_NOEMULATION",
+ "DDERR_REGIONTOOSMALL",
+ "DDERR_CLIPPERISUSINGHWND",
+ "DDERR_NOCLIPPERATTACHED",
+ "DDERR_NOHWND",
+ "DDERR_HWNDSUBCLASSED",
+ "DDERR_HWNDALREADYSET",
+ "DDERR_NOPALETTEATTACHED",
+ "DDERR_NOPALETTEHW",
+ "DDERR_BLTFASTCANTCLIP",
+ "DDERR_NOBLTHW",
+ "DDERR_NODDROPSHW",
+ "DDERR_OVERLAYNOTVISIBLE",
+ "DDERR_NOOVERLAYDEST",
+ "DDERR_INVALIDPOSITION",
+ "DDERR_NOTAOVERLAYSURFACE",
+ "DDERR_EXCLUSIVEMODEALREADYSET",
+ "DDERR_NOTFLIPPABLE",
+ "DDERR_CANTDUPLICATE",
+ "DDERR_NOTLOCKED",
+ "DDERR_CANTCREATEDC",
+ "DDERR_NODC",
+ "DDERR_WRONGMODE",
+ "DDERR_IMPLICITLYCREATED",
+ "DDERR_NOTPALETTIZED",
+ "DDERR_UNSUPPORTEDMODE",
+ "DDERR_NOMIPMAPHW",
+ "DDERR_INVALIDSURFACETYPE",
+ "DDERR_NOOPTIMIZEHW",
+ "DDERR_NOTLOADED",
+ "DDERR_NOFOCUSWINDOW",
+ "DDERR_NOTONMIPMAPSUBLEVEL",
+ "DDERR_DCALREADYCREATED",
+ "DDERR_NONONLOCALVIDMEM",
+ "DDERR_CANTPAGELOCK",
+ "DDERR_CANTPAGEUNLOCK",
+ "DDERR_NOTPAGELOCKED",
+ "DDERR_MOREDATA",
+ "DDERR_EXPIRED",
+ "DDERR_TESTFINISHED",
+ "DDERR_NEWMODE",
+ "DDERR_D3DNOTINITIALIZED",
+ "DDERR_VIDEONOTACTIVE",
+ "DDERR_NOMONITORINFORMATION",
+ "DDERR_NODRIVERSUPPORT",
+ "DDERR_DEVICEDOESNTOWNSURFACE",
+ "DDERR_NOTINITIALIZED",
+])
+
+LPDDENUMMODESCALLBACK = FunctionPointer(HRESULT, "LPDDENUMMODESCALLBACK", [LPDDSURFACEDESC, LPVOID])
+LPDDENUMMODESCALLBACK2 = FunctionPointer(HRESULT, "LPDDENUMMODESCALLBACK2", [LPDDSURFACEDESC2, LPVOID])
+LPDDENUMSURFACESCALLBACK = FunctionPointer(HRESULT, "LPDDENUMSURFACESCALLBACK", [LPDIRECTDRAWSURFACE, LPDDSURFACEDESC, LPVOID])
+LPDDENUMSURFACESCALLBACK2 = FunctionPointer(HRESULT, "LPDDENUMSURFACESCALLBACK2", [LPDIRECTDRAWSURFACE4, LPDDSURFACEDESC2, LPVOID])
+LPDDENUMSURFACESCALLBACK7 = FunctionPointer(HRESULT, "LPDDENUMSURFACESCALLBACK7", [LPDIRECTDRAWSURFACE7, LPDDSURFACEDESC2, LPVOID])
+
+IDirectDraw.methods += [
+ Method(DDRESULT, "Compact", []),
+ Method(DDRESULT, "CreateClipper", [(DWORD, "dwFlags"), Out(Pointer(LPDIRECTDRAWCLIPPER), "lplpDDClipper"), (Pointer(IUnknown), "pUnkOuter")]),
+ Method(DDRESULT, "CreatePalette", [(DirectDrawPaletteCapsFlags, "dwFlags"), (LPPALETTEENTRY, "lpDDColorArray"), Out(Pointer(LPDIRECTDRAWPALETTE), "lplpDDPalette"), (Pointer(IUnknown), "pUnkOuter")]),
+ Method(DDRESULT, "CreateSurface", [(LPDDSURFACEDESC, "lpDDSurfaceDesc"), Out(Pointer(LPDIRECTDRAWSURFACE), "lplpDDSurface"), (Pointer(IUnknown), "pUnkOuter")]),
+ Method(DDRESULT, "DuplicateSurface", [(LPDIRECTDRAWSURFACE, "lpDDSurface"), Out(Pointer(LPDIRECTDRAWSURFACE), "lplpDupDDSurface")]),
+ Method(DDRESULT, "EnumDisplayModes", [(DirectDrawEnumDisplayModesFlags, "dwFlags"), (LPDDSURFACEDESC, "lpDDSurfaceDesc"), (LPVOID, "lpContext"), (LPDDENUMMODESCALLBACK, "lpEnumModesCallback")]),
+ Method(DDRESULT, "EnumSurfaces", [(DirectDrawEnumSurfacesFlags, "dwFlags"), (LPDDSURFACEDESC, "lpDDSurfaceDesc"), (LPVOID, "lpContext"), (LPDDENUMSURFACESCALLBACK, "lpEnumSurfacesCallback")]),
+ Method(DDRESULT, "FlipToGDISurface", []),
+ Method(DDRESULT, "GetCaps", [Out(LPDDCAPS, "lpDDDriverCaps"), Out(LPDDCAPS, "lpDDHELCaps")]),
+ Method(DDRESULT, "GetDisplayMode", [Out(LPDDSURFACEDESC, "lpDDSurfaceDesc")]),
+ Method(DDRESULT, "GetFourCCCodes", [Out(LPDWORD, "lpNumCodes"), Out(LPDWORD, "lpCodes")]),
+ Method(DDRESULT, "GetGDISurface", [Out(Pointer(LPDIRECTDRAWSURFACE), "lplpGDIDDSSurface")]),
+ Method(DDRESULT, "GetMonitorFrequency", [Out(LPDWORD, "lpdwFrequency")]),
+ Method(DDRESULT, "GetScanLine", [Out(LPDWORD, "lpdwScanLine")]),
+ Method(DDRESULT, "GetVerticalBlankStatus", [Out(LPBOOL, "lpbIsInVB")]),
+ Method(DDRESULT, "Initialize", [(Pointer(GUID), "lpGUID")]),
+ Method(DDRESULT, "RestoreDisplayMode", []),
+ Method(DDRESULT, "SetCooperativeLevel", [(HWND, "hWnd"), (DirectDrawSetCooperativeLevelFlags, "dwFlags")]),
+ Method(DDRESULT, "SetDisplayMode", [(DWORD, "dwWidth"), (DWORD, "dwHeight"), (DWORD, "dwBPP")]),
+ Method(DDRESULT, "WaitForVerticalBlank", [(DirectDrawWaitForVerticalBlankFlags, "dwFlags"), (HANDLE, "hEvent")]),
+]
+
+IDirectDraw2.methods += [
+ Method(DDRESULT, "Compact", []),
+ Method(DDRESULT, "CreateClipper", [(DWORD, "dwFlags"), Out(Pointer(LPDIRECTDRAWCLIPPER), "lplpDDClipper"), (Pointer(IUnknown), "pUnkOuter")]),
+ Method(DDRESULT, "CreatePalette", [(DirectDrawPaletteCapsFlags, "dwFlags"), (LPPALETTEENTRY, "lpDDColorArray"), Out(Pointer(LPDIRECTDRAWPALETTE), "lplpDDPalette"), (Pointer(IUnknown), "pUnkOuter")]),
+ Method(DDRESULT, "CreateSurface", [(LPDDSURFACEDESC, "lpDDSurfaceDesc"), Out(Pointer(LPDIRECTDRAWSURFACE), "lplpDDSurface"), (Pointer(IUnknown), "pUnkOuter")]),
+ Method(DDRESULT, "DuplicateSurface", [(LPDIRECTDRAWSURFACE, "lpDDSurface"), Out(Pointer(LPDIRECTDRAWSURFACE), "lplpDupDDSurface")]),
+ Method(DDRESULT, "EnumDisplayModes", [(DirectDrawEnumDisplayModesFlags, "dwFlags"), (LPDDSURFACEDESC, "lpDDSurfaceDesc"), (LPVOID, "lpContext"), (LPDDENUMMODESCALLBACK, "lpEnumModesCallback")]),
+ Method(DDRESULT, "EnumSurfaces", [(DirectDrawEnumSurfacesFlags, "dwFlags"), (LPDDSURFACEDESC, "lpDDSurfaceDesc"), (LPVOID, "lpContext"), (LPDDENUMSURFACESCALLBACK, "lpEnumSurfacesCallback")]),
+ Method(DDRESULT, "FlipToGDISurface", []),
+ Method(DDRESULT, "GetCaps", [Out(LPDDCAPS, "lpDDDriverCaps"), Out(LPDDCAPS, "lpDDHELCaps")]),
+ Method(DDRESULT, "GetDisplayMode", [Out(LPDDSURFACEDESC, "lpDDSurfaceDesc")]),
+ Method(DDRESULT, "GetFourCCCodes", [Out(LPDWORD, "lpNumCodes"), Out(LPDWORD, "lpCodes")]),
+ Method(DDRESULT, "GetGDISurface", [Out(Pointer(LPDIRECTDRAWSURFACE), "lplpGDIDDSSurface")]),
+ Method(DDRESULT, "GetMonitorFrequency", [Out(LPDWORD, "lpdwFrequency")]),
+ Method(DDRESULT, "GetScanLine", [Out(LPDWORD, "lpdwScanLine")]),
+ Method(DDRESULT, "GetVerticalBlankStatus", [Out(LPBOOL, "lpbIsInVB")]),
+ Method(DDRESULT, "Initialize", [(Pointer(GUID), "lpGUID")]),
+ Method(DDRESULT, "RestoreDisplayMode", []),
+ Method(DDRESULT, "SetCooperativeLevel", [(HWND, "hWnd"), (DirectDrawSetCooperativeLevelFlags, "dwFlags")]),
+ Method(DDRESULT, "SetDisplayMode", [(DWORD, "dwWidth"), (DWORD, "dwHeight"), (DWORD, "dwBPP"), (DWORD, "dwRefreshRate"), (DirectDrawSetDisplayModeFlags, "dwFlags")]),
+ Method(DDRESULT, "WaitForVerticalBlank", [(DirectDrawWaitForVerticalBlankFlags, "dwFlags"), (HANDLE, "hEvent")]),
+ Method(DDRESULT, "GetAvailableVidMem", [(LPDDSCAPS, "lpDDSCaps"), Out(LPDWORD, "lpdwTotal"), Out(LPDWORD, "lpdwFree")]),
+]
+
+IDirectDraw4.methods += [
+ Method(DDRESULT, "Compact", []),
+ Method(DDRESULT, "CreateClipper", [(DWORD, "dwFlags"), Out(Pointer(LPDIRECTDRAWCLIPPER), "lplpDDClipper"), (Pointer(IUnknown), "pUnkOuter")]),
+ Method(DDRESULT, "CreatePalette", [(DirectDrawPaletteCapsFlags, "dwFlags"), (LPPALETTEENTRY, "lpDDColorArray"), Out(Pointer(LPDIRECTDRAWPALETTE), "lplpDDPalette"), (Pointer(IUnknown), "pUnkOuter")]),
+ Method(DDRESULT, "CreateSurface", [(LPDDSURFACEDESC2, "lpDDSurfaceDesc"), Out(Pointer(LPDIRECTDRAWSURFACE4), "lplpDDSurface"), (Pointer(IUnknown), "pUnkOuter")]),
+ Method(DDRESULT, "DuplicateSurface", [(LPDIRECTDRAWSURFACE4, "lpDDSurface"), Out(Pointer(LPDIRECTDRAWSURFACE4), "lplpDupDDSurface")]),
+ Method(DDRESULT, "EnumDisplayModes", [(DirectDrawEnumDisplayModesFlags, "dwFlags"), (LPDDSURFACEDESC2, "lpDDSurfaceDesc"), (LPVOID, "lpContext"), (LPDDENUMMODESCALLBACK2, "lpEnumModesCallback")]),
+ Method(DDRESULT, "EnumSurfaces", [(DirectDrawEnumSurfacesFlags, "dwFlags"), (LPDDSURFACEDESC2, "lpDDSurfaceDesc"), (LPVOID, "lpContext"), (LPDDENUMSURFACESCALLBACK2, "lpEnumSurfacesCallback")]),
+ Method(DDRESULT, "FlipToGDISurface", []),
+ Method(DDRESULT, "GetCaps", [Out(LPDDCAPS, "lpDDDriverCaps"), Out(LPDDCAPS, "lpDDHELCaps")]),
+ Method(DDRESULT, "GetDisplayMode", [Out(LPDDSURFACEDESC2, "lpDDSurfaceDesc")]),
+ Method(DDRESULT, "GetFourCCCodes", [Out(LPDWORD, "lpNumCodes"), Out(LPDWORD, "lpCodes")]),
+ Method(DDRESULT, "GetGDISurface", [Out(Pointer(LPDIRECTDRAWSURFACE4), "lplpGDIDDSSurface")]),
+ Method(DDRESULT, "GetMonitorFrequency", [Out(LPDWORD, "lpdwFrequency")]),
+ Method(DDRESULT, "GetScanLine", [Out(LPDWORD, "lpdwScanLine")]),
+ Method(DDRESULT, "GetVerticalBlankStatus", [Out(LPBOOL, "lpbIsInVB")]),
+ Method(DDRESULT, "Initialize", [(Pointer(GUID), "lpGUID")]),
+ Method(DDRESULT, "RestoreDisplayMode", []),
+ Method(DDRESULT, "SetCooperativeLevel", [(HWND, "hWnd"), (DirectDrawSetCooperativeLevelFlags, "dwFlags")]),
+ Method(DDRESULT, "SetDisplayMode", [(DWORD, "dwWidth"), (DWORD, "dwHeight"), (DWORD, "dwBPP"), (DWORD, "dwRefreshRate"), (DirectDrawSetDisplayModeFlags, "dwFlags")]),
+ Method(DDRESULT, "WaitForVerticalBlank", [(DirectDrawWaitForVerticalBlankFlags, "dwFlags"), (HANDLE, "hEvent")]),
+ Method(DDRESULT, "GetAvailableVidMem", [(LPDDSCAPS2, "lpDDSCaps"), Out(LPDWORD, "lpdwTotal"), Out(LPDWORD, "lpdwFree")]),
+ Method(DDRESULT, "GetSurfaceFromDC", [(HDC, "hdc"), Out(Pointer(LPDIRECTDRAWSURFACE4), "lpDDSurface")]),
+ Method(DDRESULT, "RestoreAllSurfaces", []),
+ Method(DDRESULT, "TestCooperativeLevel", []),
+ Method(DDRESULT, "GetDeviceIdentifier", [Out(LPDDDEVICEIDENTIFIER, "lpDDDI"), (DirectDrawGetDeviceIdentifierFlags, "dwFlags")]),
+]
+
+IDirectDraw7.methods += [
+ Method(DDRESULT, "Compact", []),
+ Method(DDRESULT, "CreateClipper", [(DWORD, "dwFlags"), Out(Pointer(LPDIRECTDRAWCLIPPER), "lplpDDClipper"), (Pointer(IUnknown), "pUnkOuter")]),
+ Method(DDRESULT, "CreatePalette", [(DirectDrawPaletteCapsFlags, "dwFlags"), (LPPALETTEENTRY, "lpDDColorArray"), Out(Pointer(LPDIRECTDRAWPALETTE), "lplpDDPalette"), (Pointer(IUnknown), "pUnkOuter")]),
+ Method(DDRESULT, "CreateSurface", [(LPDDSURFACEDESC2, "lpDDSurfaceDesc"), Out(Pointer(LPDIRECTDRAWSURFACE7), "lplpDDSurface"), (Pointer(IUnknown), "pUnkOuter")]),
+ Method(DDRESULT, "DuplicateSurface", [(LPDIRECTDRAWSURFACE7, "lpDDSurface"), Out(Pointer(LPDIRECTDRAWSURFACE7), "lplpDupDDSurface")]),
+ Method(DDRESULT, "EnumDisplayModes", [(DirectDrawEnumDisplayModesFlags, "dwFlags"), (LPDDSURFACEDESC2, "lpDDSurfaceDesc"), (LPVOID, "lpContext"), (LPDDENUMMODESCALLBACK2, "lpEnumModesCallback")]),
+ Method(DDRESULT, "EnumSurfaces", [(DirectDrawEnumSurfacesFlags, "dwFlags"), (LPDDSURFACEDESC2, "lpDDSurfaceDesc"), (LPVOID, "lpContext"), (LPDDENUMSURFACESCALLBACK7, "lpEnumSurfacesCallback")]),
+ Method(DDRESULT, "FlipToGDISurface", []),
+ Method(DDRESULT, "GetCaps", [Out(LPDDCAPS, "lpDDDriverCaps"), Out(LPDDCAPS, "lpDDHELCaps")]),
+ Method(DDRESULT, "GetDisplayMode", [Out(LPDDSURFACEDESC2, "lpDDSurfaceDesc")]),
+ Method(DDRESULT, "GetFourCCCodes", [Out(LPDWORD, "lpNumCodes"), Out(LPDWORD, "lpCodes")]),
+ Method(DDRESULT, "GetGDISurface", [Out(Pointer(LPDIRECTDRAWSURFACE7), "lplpGDIDDSSurface")]),
+ Method(DDRESULT, "GetMonitorFrequency", [Out(LPDWORD, "lpdwFrequency")]),
+ Method(DDRESULT, "GetScanLine", [Out(LPDWORD, "lpdwScanLine")]),
+ Method(DDRESULT, "GetVerticalBlankStatus", [Out(LPBOOL, "lpbIsInVB")]),
+ Method(DDRESULT, "Initialize", [(Pointer(GUID), "lpGUID")]),
+ Method(DDRESULT, "RestoreDisplayMode", []),
+ Method(DDRESULT, "SetCooperativeLevel", [(HWND, "hWnd"), (DirectDrawSetCooperativeLevelFlags, "dwFlags")]),
+ Method(DDRESULT, "SetDisplayMode", [(DWORD, "dwWidth"), (DWORD, "dwHeight"), (DWORD, "dwBPP"), (DWORD, "dwRefreshRate"), (DirectDrawSetDisplayModeFlags, "dwFlags")]),
+ Method(DDRESULT, "WaitForVerticalBlank", [(DirectDrawWaitForVerticalBlankFlags, "dwFlags"), (HANDLE, "hEvent")]),
+ Method(DDRESULT, "GetAvailableVidMem", [(LPDDSCAPS2, "lpDDSCaps"), Out(LPDWORD, "lpdwTotal"), Out(LPDWORD, "lpdwFree")]),
+ Method(DDRESULT, "GetSurfaceFromDC", [(HDC, "hdc"), Out(Pointer(LPDIRECTDRAWSURFACE7), "lpDDSurface")]),
+ Method(DDRESULT, "RestoreAllSurfaces", []),
+ Method(DDRESULT, "TestCooperativeLevel", []),
+ Method(DDRESULT, "GetDeviceIdentifier", [Out(LPDDDEVICEIDENTIFIER2, "lpDDDI"), (DirectDrawGetDeviceIdentifierFlags, "dwFlags")]),
+ Method(DDRESULT, "StartModeTest", [(LPSIZE, "lpModesToTest"), (DWORD, "dwNumEntries"), (DirectDrawStartModeTestFlags, "dwFlags")]),
+ Method(DDRESULT, "EvaluateMode", [(DirectDrawEvaluateModeFlags, "dwFlags"), Out(Pointer(DWORD), "pSecondsUntilTimeout")]),
+]
+
+IDirectDrawPalette.methods += [
+ Method(DDRESULT, "GetCaps", [Out(Pointer(DirectDrawPaletteCapsFlags), "lpdwCaps")]),
+ Method(DDRESULT, "GetEntries", [(DWORD, "dwFlags"), (DWORD, "dwBase"), (DWORD, "dwNumEntries"), Out(LPPALETTEENTRY, "lpEntries")]),
+ Method(DDRESULT, "Initialize", [(LPDIRECTDRAW, "lpDD"), (DWORD, "dwFlags"), (LPPALETTEENTRY, "lpDDColorTable")]),
+ Method(DDRESULT, "SetEntries", [(DWORD, "dwFlags"), (DWORD, "dwStartingEntry"), (DWORD, "dwCount"), (LPPALETTEENTRY, "lpEntries")]),
+]
+
+IDirectDrawClipper.methods += [
+ Method(DDRESULT, "GetClipList", [(LPRECT, "lpRect"), (LPRGNDATA, "lpClipList"), Out(LPDWORD, "lpdwSize")]),
+ Method(DDRESULT, "GetHWnd", [Out(Pointer(HWND), "hWnd")]),
+ Method(DDRESULT, "Initialize", [(LPDIRECTDRAW, "lpDD"), (DWORD, "dwFlags")]),
+ Method(DDRESULT, "IsClipListChanged", [Out(Pointer(BOOL), "lpbChanged")]),
+ Method(DDRESULT, "SetClipList", [(LPRGNDATA, "lpClipList"), (DWORD, "dwFlags")]),
+ Method(DDRESULT, "SetHWnd", [(DWORD, "dwFlags"), (HWND, "hWnd")]),
+]
+
+
+IDirectDrawSurface.methods += [
+ Method(DDRESULT, "AddAttachedSurface", [(LPDIRECTDRAWSURFACE, "lpDDSAttachedSurface")]),
+ Method(DDRESULT, "AddOverlayDirtyRect", [(LPRECT, "lpRect")]),
+ Method(DDRESULT, "Blt", [(LPRECT, "lpDestRect"), (LPDIRECTDRAWSURFACE, "lpDDSrcSurface"), (LPRECT, "lpSrcRect"), (DirectDrawBltFlags, "dwFlags"), (LPDDBLTFX, "lpDDBltFx")]),
+ Method(DDRESULT, "BltBatch", [(LPDDBLTBATCH, "lpDDBltBatch"), (DWORD, "dwCount"), (DWORD, "dwFlags")]),
+ Method(DDRESULT, "BltFast", [(DWORD, "dwX"), (DWORD, "dwY"), (LPDIRECTDRAWSURFACE, "lpDDSrcSurface"), (LPRECT, "lpSrcRect"), (DWORD, "dwTrans")]),
+ Method(DDRESULT, "DeleteAttachedSurface", [(DWORD, "dwFlags"), (LPDIRECTDRAWSURFACE, "lpDDSurface")]),
+ Method(DDRESULT, "EnumAttachedSurfaces", [(LPVOID, "lpContext"), (LPDDENUMSURFACESCALLBACK, "lpEnumSurfacesCallback")]),
+ Method(DDRESULT, "EnumOverlayZOrders", [(DirectDrawEnumOverlayZOrderFlags, "dwFlags"), (LPVOID, "lpContext"), (LPDDENUMSURFACESCALLBACK, "lpfnCallback")]),
+ Method(DDRESULT, "Flip", [(LPDIRECTDRAWSURFACE, "lpDDSurfaceTargetOverride"), (DirectDrawFlipFlags, "dwFlags")]),
+ Method(DDRESULT, "GetAttachedSurface", [(LPDDSCAPS, "lpDDSCaps"), Out(Pointer(LPDIRECTDRAWSURFACE), "lplpDDAttachedSurface")]),
+ Method(DDRESULT, "GetBltStatus", [(DirectDrawGetBltStatusFlags, "dwFlags")]),
+ Method(DDRESULT, "GetCaps", [Out(LPDDSCAPS, "lpDDSCaps")]),
+ Method(DDRESULT, "GetClipper", [Out(Pointer(LPDIRECTDRAWCLIPPER), "lplpDDClipper")]),
+ Method(DDRESULT, "GetColorKey", [(DirectDrawSurfaceSetGetColorKeyFlags, "dwFlags"), Out(LPDDCOLORKEY, "lpDDColorKey")]),
+ Method(DDRESULT, "GetDC", [Out(Pointer(HDC), "phDC")]),
+ Method(DDRESULT, "GetFlipStatus", [(DWORD, "dwFlags")]),
+ Method(DDRESULT, "GetOverlayPosition", [Out(LPLONG, "lplX"), Out(LPLONG, "lplY")]),
+ Method(DDRESULT, "GetPalette", [Out(Pointer(LPDIRECTDRAWPALETTE), "lplpDDPalette")]),
+ Method(DDRESULT, "GetPixelFormat", [Out(LPDDPIXELFORMAT, "lpDDPixelFormat")]),
+ Method(DDRESULT, "GetSurfaceDesc", [Out(LPDDSURFACEDESC, "lpDDSurfaceDesc")]),
+ Method(DDRESULT, "Initialize", [(LPDIRECTDRAW, "lpDD"), (LPDDSURFACEDESC, "lpDDSurfaceDesc")]),
+ Method(DDRESULT, "IsLost", []),
+ Method(DDRESULT, "Lock", [(LPRECT, "lpDestRect"), (LPDDSURFACEDESC, "lpDDSurfaceDesc"), (DirectDrawSurfaceLockFlags, "dwFlags"), (HANDLE, "hEvent")]),
+ Method(DDRESULT, "ReleaseDC", [(HDC, "hDC")]),
+ Method(DDRESULT, "Restore", []),
+ Method(DDRESULT, "SetClipper", [(LPDIRECTDRAWCLIPPER, "lpDDClipper")]),
+ Method(DDRESULT, "SetColorKey", [(DirectDrawSurfaceSetGetColorKeyFlags, "dwFlags"), Out(LPDDCOLORKEY, "lpDDColorKey")]),
+ Method(DDRESULT, "SetOverlayPosition", [(LONG, "lX"), (LONG, "lY")]),
+ Method(DDRESULT, "SetPalette", [(LPDIRECTDRAWPALETTE, "lpDDPalette")]),
+ Method(DDRESULT, "Unlock", [(LPVOID, "lp")]),
+ Method(DDRESULT, "UpdateOverlay", [(LPRECT, "lpSrcRect"), (LPDIRECTDRAWSURFACE, "lpDDDestSurface"), (LPRECT, "lpDestRect"), (DirectDrawSurfaceOverlayFlags, "dwFlags"), (LPDDOVERLAYFX, "lpDDOverlayFx")]),
+ Method(DDRESULT, "UpdateOverlayDisplay", [(DWORD, "dwFlags")]),
+ Method(DDRESULT, "UpdateOverlayZOrder", [(DirectDrawUpdateOverlayZOrderFlags, "dwFlags"), (LPDIRECTDRAWSURFACE, "lpDDSReference")]),
+]
+
+IDirectDrawSurface2.methods += [
+ Method(DDRESULT, "AddAttachedSurface", [(LPDIRECTDRAWSURFACE2, "lpDDSAttachedSurface")]),
+ Method(DDRESULT, "AddOverlayDirtyRect", [(LPRECT, "lpRect")]),
+ Method(DDRESULT, "Blt", [(LPRECT, "lpDestRect"), (LPDIRECTDRAWSURFACE2, "lpDDSrcSurface"), (LPRECT, "lpSrcRect"), (DirectDrawBltFlags, "dwFlags"), (LPDDBLTFX, "lpDDBltFx")]),
+ Method(DDRESULT, "BltBatch", [(LPDDBLTBATCH, "lpDDBltBatch"), (DWORD, "dwCount"), (DWORD, "dwFlags")]),
+ Method(DDRESULT, "BltFast", [(DWORD, "dwX"), (DWORD, "dwY"), (LPDIRECTDRAWSURFACE2, "lpDDSrcSurface"), (LPRECT, "lpSrcRect"), (DWORD, "dwTrans")]),
+ Method(DDRESULT, "DeleteAttachedSurface", [(DWORD, "dwFlags"), (LPDIRECTDRAWSURFACE2, "lpDDSurface")]),
+ Method(DDRESULT, "EnumAttachedSurfaces", [(LPVOID, "lpContext"), (LPDDENUMSURFACESCALLBACK, "lpEnumSurfacesCallback")]),
+ Method(DDRESULT, "EnumOverlayZOrders", [(DirectDrawEnumOverlayZOrderFlags, "dwFlags"), (LPVOID, "lpContext"), (LPDDENUMSURFACESCALLBACK, "lpfnCallback")]),
+ Method(DDRESULT, "Flip", [(LPDIRECTDRAWSURFACE2, "lpDDSurfaceTargetOverride"), (DirectDrawFlipFlags, "dwFlags")]),
+ Method(DDRESULT, "GetAttachedSurface", [(LPDDSCAPS, "lpDDSCaps"), Out(Pointer(LPDIRECTDRAWSURFACE2), "lplpDDAttachedSurface")]),
+ Method(DDRESULT, "GetBltStatus", [(DirectDrawGetBltStatusFlags, "dwFlags")]),
+ Method(DDRESULT, "GetCaps", [Out(LPDDSCAPS, "lpDDSCaps")]),
+ Method(DDRESULT, "GetClipper", [Out(Pointer(LPDIRECTDRAWCLIPPER), "lplpDDClipper")]),
+ Method(DDRESULT, "GetColorKey", [(DirectDrawSurfaceSetGetColorKeyFlags, "dwFlags"), Out(LPDDCOLORKEY, "lpDDColorKey")]),
+ Method(DDRESULT, "GetDC", [Out(Pointer(HDC), "phDC")]),
+ Method(DDRESULT, "GetFlipStatus", [(DWORD, "dwFlags")]),
+ Method(DDRESULT, "GetOverlayPosition", [Out(LPLONG, "lplX"), Out(LPLONG, "lplY")]),
+ Method(DDRESULT, "GetPalette", [Out(Pointer(LPDIRECTDRAWPALETTE), "lplpDDPalette")]),
+ Method(DDRESULT, "GetPixelFormat", [Out(LPDDPIXELFORMAT, "lpDDPixelFormat")]),
+ Method(DDRESULT, "GetSurfaceDesc", [Out(LPDDSURFACEDESC, "lpDDSurfaceDesc")]),
+ Method(DDRESULT, "Initialize", [(LPDIRECTDRAW, "lpDD"), (LPDDSURFACEDESC, "lpDDSurfaceDesc")]),
+ Method(DDRESULT, "IsLost", []),
+ Method(DDRESULT, "Lock", [(LPRECT, "lpDestRect"), (LPDDSURFACEDESC, "lpDDSurfaceDesc"), (DirectDrawSurfaceLockFlags, "dwFlags"), (HANDLE, "hEvent")]),
+ Method(DDRESULT, "ReleaseDC", [(HDC, "hDC")]),
+ Method(DDRESULT, "Restore", []),
+ Method(DDRESULT, "SetClipper", [(LPDIRECTDRAWCLIPPER, "lpDDClipper")]),
+ Method(DDRESULT, "SetColorKey", [(DirectDrawSurfaceSetGetColorKeyFlags, "dwFlags"), Out(LPDDCOLORKEY, "lpDDColorKey")]),
+ Method(DDRESULT, "SetOverlayPosition", [(LONG, "lX"), (LONG, "lY")]),
+ Method(DDRESULT, "SetPalette", [(LPDIRECTDRAWPALETTE, "lpDDPalette")]),
+ Method(DDRESULT, "Unlock", [(LPVOID, "lp")]),
+ Method(DDRESULT, "UpdateOverlay", [(LPRECT, "lpSrcRect"), (LPDIRECTDRAWSURFACE2, "lpDDDestSurface"), (LPRECT, "lpDestRect"), (DirectDrawSurfaceOverlayFlags, "dwFlags"), (LPDDOVERLAYFX, "lpDDOverlayFx")]),
+ Method(DDRESULT, "UpdateOverlayDisplay", [(DWORD, "dwFlags")]),
+ Method(DDRESULT, "UpdateOverlayZOrder", [(DirectDrawUpdateOverlayZOrderFlags, "dwFlags"), (LPDIRECTDRAWSURFACE2, "lpDDSReference")]),
+ Method(DDRESULT, "GetDDInterface", [Out(Pointer(IUnknown), "lplpDD")]),
+ Method(DDRESULT, "PageLock", [(DWORD, "dwFlags")]),
+ Method(DDRESULT, "PageUnlock", [(DWORD, "dwFlags")]),
+]
+
+IDirectDrawSurface3.methods += [
+ Method(DDRESULT, "AddAttachedSurface", [(LPDIRECTDRAWSURFACE3, "lpDDSAttachedSurface")]),
+ Method(DDRESULT, "AddOverlayDirtyRect", [(LPRECT, "lpRect")]),
+ Method(DDRESULT, "Blt", [(LPRECT, "lpDestRect"), (LPDIRECTDRAWSURFACE3, "lpDDSrcSurface"), (LPRECT, "lpSrcRect"), (DirectDrawBltFlags, "dwFlags"), (LPDDBLTFX, "lpDDBltFx")]),
+ Method(DDRESULT, "BltBatch", [(LPDDBLTBATCH, "lpDDBltBatch"), (DWORD, "dwCount"), (DWORD, "dwFlags")]),
+ Method(DDRESULT, "BltFast", [(DWORD, "dwX"), (DWORD, "dwY"), (LPDIRECTDRAWSURFACE3, "lpDDSrcSurface"), (LPRECT, "lpSrcRect"), (DWORD, "dwTrans")]),
+ Method(DDRESULT, "DeleteAttachedSurface", [(DWORD, "dwFlags"), (LPDIRECTDRAWSURFACE3, "lpDDSurface")]),
+ Method(DDRESULT, "EnumAttachedSurfaces", [(LPVOID, "lpContext"), (LPDDENUMSURFACESCALLBACK, "lpEnumSurfacesCallback")]),
+ Method(DDRESULT, "EnumOverlayZOrders", [(DirectDrawEnumOverlayZOrderFlags, "dwFlags"), (LPVOID, "lpContext"), (LPDDENUMSURFACESCALLBACK, "lpfnCallback")]),
+ Method(DDRESULT, "Flip", [(LPDIRECTDRAWSURFACE3, "lpDDSurfaceTargetOverride"), (DirectDrawFlipFlags, "dwFlags")]),
+ Method(DDRESULT, "GetAttachedSurface", [(LPDDSCAPS, "lpDDSCaps"), Out(Pointer(LPDIRECTDRAWSURFACE3), "lplpDDAttachedSurface")]),
+ Method(DDRESULT, "GetBltStatus", [(DirectDrawGetBltStatusFlags, "dwFlags")]),
+ Method(DDRESULT, "GetCaps", [Out(LPDDSCAPS, "lpDDSCaps")]),
+ Method(DDRESULT, "GetClipper", [Out(Pointer(LPDIRECTDRAWCLIPPER), "lplpDDClipper")]),
+ Method(DDRESULT, "GetColorKey", [(DirectDrawSurfaceSetGetColorKeyFlags, "dwFlags"), Out(LPDDCOLORKEY, "lpDDColorKey")]),
+ Method(DDRESULT, "GetDC", [Out(Pointer(HDC), "phDC")]),
+ Method(DDRESULT, "GetFlipStatus", [(DWORD, "dwFlags")]),
+ Method(DDRESULT, "GetOverlayPosition", [Out(LPLONG, "lplX"), Out(LPLONG, "lplY")]),
+ Method(DDRESULT, "GetPalette", [Out(Pointer(LPDIRECTDRAWPALETTE), "lplpDDPalette")]),
+ Method(DDRESULT, "GetPixelFormat", [Out(LPDDPIXELFORMAT, "lpDDPixelFormat")]),
+ Method(DDRESULT, "GetSurfaceDesc", [Out(LPDDSURFACEDESC, "lpDDSurfaceDesc")]),
+ Method(DDRESULT, "Initialize", [(LPDIRECTDRAW, "lpDD"), (LPDDSURFACEDESC, "lpDDSurfaceDesc")]),
+ Method(DDRESULT, "IsLost", []),
+ Method(DDRESULT, "Lock", [(LPRECT, "lpDestRect"), (LPDDSURFACEDESC, "lpDDSurfaceDesc"), (DirectDrawSurfaceLockFlags, "dwFlags"), (HANDLE, "hEvent")]),
+ Method(DDRESULT, "ReleaseDC", [(HDC, "hDC")]),
+ Method(DDRESULT, "Restore", []),
+ Method(DDRESULT, "SetClipper", [(LPDIRECTDRAWCLIPPER, "lpDDClipper")]),
+ Method(DDRESULT, "SetColorKey", [(DirectDrawSurfaceSetGetColorKeyFlags, "dwFlags"), Out(LPDDCOLORKEY, "lpDDColorKey")]),
+ Method(DDRESULT, "SetOverlayPosition", [(LONG, "lX"), (LONG, "lY")]),
+ Method(DDRESULT, "SetPalette", [(LPDIRECTDRAWPALETTE, "lpDDPalette")]),
+ Method(DDRESULT, "Unlock", [(LPVOID, "lp")]),
+ Method(DDRESULT, "UpdateOverlay", [(LPRECT, "lpSrcRect"), (LPDIRECTDRAWSURFACE3, "lpDDDestSurface"), (LPRECT, "lpDestRect"), (DirectDrawSurfaceOverlayFlags, "dwFlags"), (LPDDOVERLAYFX, "lpDDOverlayFx")]),
+ Method(DDRESULT, "UpdateOverlayDisplay", [(DWORD, "dwFlags")]),
+ Method(DDRESULT, "UpdateOverlayZOrder", [(DirectDrawUpdateOverlayZOrderFlags, "dwFlags"), (LPDIRECTDRAWSURFACE3, "lpDDSReference")]),
+ Method(DDRESULT, "GetDDInterface", [Out(Pointer(IUnknown), "lplpDD")]),
+ Method(DDRESULT, "PageLock", [(DWORD, "dwFlags")]),
+ Method(DDRESULT, "PageUnlock", [(DWORD, "dwFlags")]),
+ Method(DDRESULT, "SetSurfaceDesc", [(LPDDSURFACEDESC, "lpDDSD"), (DWORD, "dwFlags")]),
+]
+
+IDirectDrawSurface4.methods += [
+ Method(DDRESULT, "AddAttachedSurface", [(LPDIRECTDRAWSURFACE4, "lpDDSAttachedSurface")]),
+ Method(DDRESULT, "AddOverlayDirtyRect", [(LPRECT, "lpRect")]),
+ Method(DDRESULT, "Blt", [(LPRECT, "lpDestRect"), (LPDIRECTDRAWSURFACE4, "lpDDSrcSurface"), (LPRECT, "lpSrcRect"), (DirectDrawBltFlags, "dwFlags"), (LPDDBLTFX, "lpDDBltFx")]),
+ Method(DDRESULT, "BltBatch", [(LPDDBLTBATCH, "lpDDBltBatch"), (DWORD, "dwCount"), (DWORD, "dwFlags")]),
+ Method(DDRESULT, "BltFast", [(DWORD, "dwX"), (DWORD, "dwY"), (LPDIRECTDRAWSURFACE4, "lpDDSrcSurface"), (LPRECT, "lpSrcRect"), (DWORD, "dwTrans")]),
+ Method(DDRESULT, "DeleteAttachedSurface", [(DWORD, "dwFlags"), (LPDIRECTDRAWSURFACE4, "lpDDSurface")]),
+ Method(DDRESULT, "EnumAttachedSurfaces", [(LPVOID, "lpContext"), (LPDDENUMSURFACESCALLBACK2, "lpEnumSurfacesCallback")]),
+ Method(DDRESULT, "EnumOverlayZOrders", [(DirectDrawEnumOverlayZOrderFlags, "dwFlags"), (LPVOID, "lpContext"), (LPDDENUMSURFACESCALLBACK2, "lpfnCallback")]),
+ Method(DDRESULT, "Flip", [(LPDIRECTDRAWSURFACE4, "lpDDSurfaceTargetOverride"), (DirectDrawFlipFlags, "dwFlags")]),
+ Method(DDRESULT, "GetAttachedSurface", [(LPDDSCAPS2, "lpDDSCaps"), Out(Pointer(LPDIRECTDRAWSURFACE4), "lplpDDAttachedSurface")]),
+ Method(DDRESULT, "GetBltStatus", [(DirectDrawGetBltStatusFlags, "dwFlags")]),
+ Method(DDRESULT, "GetCaps", [Out(LPDDSCAPS2, "lpDDSCaps")]),
+ Method(DDRESULT, "GetClipper", [Out(Pointer(LPDIRECTDRAWCLIPPER), "lplpDDClipper")]),
+ Method(DDRESULT, "GetColorKey", [(DirectDrawSurfaceSetGetColorKeyFlags, "dwFlags"), Out(LPDDCOLORKEY, "lpDDColorKey")]),
+ Method(DDRESULT, "GetDC", [Out(Pointer(HDC), "phDC")]),
+ Method(DDRESULT, "GetFlipStatus", [(DWORD, "dwFlags")]),
+ Method(DDRESULT, "GetOverlayPosition", [Out(LPLONG, "lplX"), Out(LPLONG, "lplY")]),
+ Method(DDRESULT, "GetPalette", [Out(Pointer(LPDIRECTDRAWPALETTE), "lplpDDPalette")]),
+ Method(DDRESULT, "GetPixelFormat", [Out(LPDDPIXELFORMAT, "lpDDPixelFormat")]),
+ Method(DDRESULT, "GetSurfaceDesc", [Out(LPDDSURFACEDESC2, "lpDDSurfaceDesc")]),
+ Method(DDRESULT, "Initialize", [(LPDIRECTDRAW, "lpDD"), (LPDDSURFACEDESC2, "lpDDSurfaceDesc")]),
+ Method(DDRESULT, "IsLost", []),
+ Method(DDRESULT, "Lock", [(LPRECT, "lpDestRect"), (LPDDSURFACEDESC2, "lpDDSurfaceDesc"), (DirectDrawSurfaceLockFlags, "dwFlags"), (HANDLE, "hEvent")]),
+ Method(DDRESULT, "ReleaseDC", [(HDC, "hDC")]),
+ Method(DDRESULT, "Restore", []),
+ Method(DDRESULT, "SetClipper", [(LPDIRECTDRAWCLIPPER, "lpDDClipper")]),
+ Method(DDRESULT, "SetColorKey", [(DirectDrawSurfaceSetGetColorKeyFlags, "dwFlags"), Out(LPDDCOLORKEY, "lpDDColorKey")]),
+ Method(DDRESULT, "SetOverlayPosition", [(LONG, "lX"), (LONG, "lY")]),
+ Method(DDRESULT, "SetPalette", [(LPDIRECTDRAWPALETTE, "lpDDPalette")]),
+ Method(DDRESULT, "Unlock", [(LPRECT, "lpRect")]),
+ Method(DDRESULT, "UpdateOverlay", [(LPRECT, "lpSrcRect"), (LPDIRECTDRAWSURFACE4, "lpDDDestSurface"), (LPRECT, "lpDestRect"), (DirectDrawSurfaceOverlayFlags, "dwFlags"), (LPDDOVERLAYFX, "lpDDOverlayFx")]),
+ Method(DDRESULT, "UpdateOverlayDisplay", [(DWORD, "dwFlags")]),
+ Method(DDRESULT, "UpdateOverlayZOrder", [(DirectDrawUpdateOverlayZOrderFlags, "dwFlags"), (LPDIRECTDRAWSURFACE4, "lpDDSReference")]),
+ Method(DDRESULT, "GetDDInterface", [Out(Pointer(LPVOID), "lplpDD")]),
+ Method(DDRESULT, "PageLock", [(DWORD, "dwFlags")]),
+ Method(DDRESULT, "PageUnlock", [(DWORD, "dwFlags")]),
+ Method(DDRESULT, "SetSurfaceDesc", [(LPDDSURFACEDESC2, "lpDDSD"), (DWORD, "dwFlags")]),
+ Method(DDRESULT, "SetPrivateData", [(REFGUID, "guidTag"), (LPVOID, "lpData"), (DWORD, "cbSize"), (DWORD, "dwFlags")]),
+ Method(DDRESULT, "GetPrivateData", [(REFGUID, "guidTag"), (LPVOID, "lpData"), Out(LPDWORD, "lpcbBufferSize")]),
+ Method(DDRESULT, "FreePrivateData", [(REFGUID, "guidTag")]),
+ Method(DDRESULT, "GetUniquenessValue", [Out(LPDWORD, "lpValue")]),
+ Method(DDRESULT, "ChangeUniquenessValue", []),
+]
+
+IDirectDrawSurface7.methods += [
+ Method(DDRESULT, "AddAttachedSurface", [(LPDIRECTDRAWSURFACE7, "lpDDSAttachedSurface")]),
+ Method(DDRESULT, "AddOverlayDirtyRect", [(LPRECT, "lpRect")]),
+ Method(DDRESULT, "Blt", [(LPRECT, "lpDestRect"), (LPDIRECTDRAWSURFACE7, "lpDDSrcSurface"), (LPRECT, "lpSrcRect"), (DirectDrawBltFlags, "dwFlags"), (LPDDBLTFX, "lpDDBltFx")]),
+ Method(DDRESULT, "BltBatch", [(LPDDBLTBATCH, "lpDDBltBatch"), (DWORD, "dwCount"), (DWORD, "dwFlags")]),
+ Method(DDRESULT, "BltFast", [(DWORD, "dwX"), (DWORD, "dwY"), (LPDIRECTDRAWSURFACE7, "lpDDSrcSurface"), (LPRECT, "lpSrcRect"), (DWORD, "dwTrans")]),
+ Method(DDRESULT, "DeleteAttachedSurface", [(DWORD, "dwFlags"), (LPDIRECTDRAWSURFACE7, "lpDDSurface")]),
+ Method(DDRESULT, "EnumAttachedSurfaces", [(LPVOID, "lpContext"), (LPDDENUMSURFACESCALLBACK7, "lpEnumSurfacesCallback")]),
+ Method(DDRESULT, "EnumOverlayZOrders", [(DirectDrawEnumOverlayZOrderFlags, "dwFlags"), (LPVOID, "lpContext"), (LPDDENUMSURFACESCALLBACK7, "lpfnCallback")]),
+ Method(DDRESULT, "Flip", [(LPDIRECTDRAWSURFACE7, "lpDDSurfaceTargetOverride"), (DirectDrawFlipFlags, "dwFlags")]),
+ Method(DDRESULT, "GetAttachedSurface", [(LPDDSCAPS2, "lpDDSCaps"), Out(Pointer(LPDIRECTDRAWSURFACE7), "lplpDDAttachedSurface")]),
+ Method(DDRESULT, "GetBltStatus", [(DirectDrawGetBltStatusFlags, "dwFlags")]),
+ Method(DDRESULT, "GetCaps", [Out(LPDDSCAPS2, "lpDDSCaps")]),
+ Method(DDRESULT, "GetClipper", [Out(Pointer(LPDIRECTDRAWCLIPPER), "lplpDDClipper")]),
+ Method(DDRESULT, "GetColorKey", [(DirectDrawSurfaceSetGetColorKeyFlags, "dwFlags"), Out(LPDDCOLORKEY, "lpDDColorKey")]),
+ Method(DDRESULT, "GetDC", [Out(Pointer(HDC), "phDC")]),
+ Method(DDRESULT, "GetFlipStatus", [(DWORD, "dwFlags")]),
+ Method(DDRESULT, "GetOverlayPosition", [Out(LPLONG, "lplX"), Out(LPLONG, "lplY")]),
+ Method(DDRESULT, "GetPalette", [Out(Pointer(LPDIRECTDRAWPALETTE), "lplpDDPalette")]),
+ Method(DDRESULT, "GetPixelFormat", [Out(LPDDPIXELFORMAT, "lpDDPixelFormat")]),
+ Method(DDRESULT, "GetSurfaceDesc", [Out(LPDDSURFACEDESC2, "lpDDSurfaceDesc")]),
+ Method(DDRESULT, "Initialize", [(LPDIRECTDRAW, "lpDD"), (LPDDSURFACEDESC2, "lpDDSurfaceDesc")]),
+ Method(DDRESULT, "IsLost", []),
+ Method(DDRESULT, "Lock", [(LPRECT, "lpDestRect"), (LPDDSURFACEDESC2, "lpDDSurfaceDesc"), (DirectDrawSurfaceLockFlags, "dwFlags"), (HANDLE, "hEvent")]),
+ Method(DDRESULT, "ReleaseDC", [(HDC, "hDC")]),
+ Method(DDRESULT, "Restore", []),
+ Method(DDRESULT, "SetClipper", [(LPDIRECTDRAWCLIPPER, "lpDDClipper")]),
+ Method(DDRESULT, "SetColorKey", [(DirectDrawSurfaceSetGetColorKeyFlags, "dwFlags"), Out(LPDDCOLORKEY, "lpDDColorKey")]),
+ Method(DDRESULT, "SetOverlayPosition", [(LONG, "lX"), (LONG, "lY")]),
+ Method(DDRESULT, "SetPalette", [(LPDIRECTDRAWPALETTE, "lpDDPalette")]),
+ Method(DDRESULT, "Unlock", [(LPRECT, "lpRect")]),
+ Method(DDRESULT, "UpdateOverlay", [(LPRECT, "lpSrcRect"), (LPDIRECTDRAWSURFACE7, "lpDDDestSurface"), (LPRECT, "lpDestRect"), (DirectDrawSurfaceOverlayFlags, "dwFlags"), (LPDDOVERLAYFX, "lpDDOverlayFx")]),
+ Method(DDRESULT, "UpdateOverlayDisplay", [(DWORD, "dwFlags")]),
+ Method(DDRESULT, "UpdateOverlayZOrder", [(DirectDrawUpdateOverlayZOrderFlags, "dwFlags"), (LPDIRECTDRAWSURFACE7, "lpDDSReference")]),
+ Method(DDRESULT, "GetDDInterface", [Out(Pointer(LPVOID), "lplpDD")]),
+ Method(DDRESULT, "PageLock", [(DWORD, "dwFlags")]),
+ Method(DDRESULT, "PageUnlock", [(DWORD, "dwFlags")]),
+ Method(DDRESULT, "SetSurfaceDesc", [(LPDDSURFACEDESC2, "lpDDSD"), (DWORD, "dwFlags")]),
+ Method(DDRESULT, "SetPrivateData", [(REFGUID, "guidTag"), (LPVOID, "lpData"), (DWORD, "cbSize"), (DWORD, "dwFlags")]),
+ Method(DDRESULT, "GetPrivateData", [(REFGUID, "guidTag"), (LPVOID, "lpData"), Out(LPDWORD, "lpcbBufferSize")]),
+ Method(DDRESULT, "FreePrivateData", [(REFGUID, "guidTag")]),
+ Method(DDRESULT, "GetUniquenessValue", [Out(LPDWORD, "lpValue")]),
+ Method(DDRESULT, "ChangeUniquenessValue", []),
+ Method(DDRESULT, "SetPriority", [(DWORD, "dwPriority")]),
+ Method(DDRESULT, "GetPriority", [Out(LPDWORD, "lpdwPriority")]),
+ Method(DDRESULT, "SetLOD", [(DWORD, "dwMaxLOD")]),
+ Method(DDRESULT, "GetLOD", [Out(LPDWORD, "lpdwMaxLOD")]),
+]
+
+IDirectDrawColorControl.methods += [
+ Method(DDRESULT, "GetColorControls", [(LPDDCOLORCONTROL, "lpColorControl")]),
+ Method(DDRESULT, "SetColorControls", [(LPDDCOLORCONTROL, "lpColorControl")]),
+]
+
+IDirectDrawGammaControl.methods += [
+ Method(DDRESULT, "GetGammaRamp", [(DWORD, "dwFlags"), Out(LPDDGAMMARAMP, "lpRampData")]),
+ Method(DDRESULT, "SetGammaRamp", [(DirectDrawSetGammaRampFlags, "dwFlags"), (LPDDGAMMARAMP, "lpRampData")]),
+]
+
+LPDDENUMCALLBACKA = FunctionPointer(BOOL, "LPDDENUMCALLBACKA", [Pointer(GUID), LPSTR, LPSTR, LPVOID])
+LPDDENUMCALLBACKW = FunctionPointer(BOOL, "LPDDENUMCALLBACKW", [Pointer(GUID), LPWSTR, LPWSTR, LPVOID])
+LPDDENUMCALLBACKEXA = FunctionPointer(BOOL, "LPDDENUMCALLBACKEXA", [Pointer(GUID), LPSTR, LPSTR, LPVOID, HMONITOR])
+LPDDENUMCALLBACKEXW = FunctionPointer(BOOL, "LPDDENUMCALLBACKEXW", [Pointer(GUID), LPWSTR, LPWSTR, LPVOID, HMONITOR])
+
+DDENUM = Flags(DWORD, [
+ "DDENUM_ATTACHEDSECONDARYDEVICES",
+ "DDENUM_DETACHEDSECONDARYDEVICES",
+ "DDENUM_NONDISPLAYDEVICES",
+])
+
+DDCREATE = Flags(DWORD, [
+ "DDCREATE_HARDWAREONLY",
+ "DDCREATE_EMULATIONONLY",
+])
+
+ddraw = API("ddraw")
+ddraw.add_functions([
+ StdFunction(HRESULT, "DirectDrawEnumerateW", [(LPDDENUMCALLBACKW, "lpCallback"), (LPVOID, "lpContext")]),
+ StdFunction(HRESULT, "DirectDrawEnumerateA", [(LPDDENUMCALLBACKA, "lpCallback"), (LPVOID, "lpContext")]),
+ StdFunction(HRESULT, "DirectDrawEnumerateExW", [(LPDDENUMCALLBACKEXW, "lpCallback"), (LPVOID, "lpContext"), (DDENUM, "dwFlags")]),
+ StdFunction(HRESULT, "DirectDrawEnumerateExA", [(LPDDENUMCALLBACKEXA, "lpCallback"), (LPVOID, "lpContext"), (DDENUM, "dwFlags")]),
+ StdFunction(HRESULT, "DirectDrawCreate", [(Pointer(GUID), "lpGUID"), Out(Pointer(LPDIRECTDRAW), "lplpDD"), (Pointer(IUnknown), "pUnkOuter")]),
+ StdFunction(HRESULT, "DirectDrawCreateEx", [(Pointer(GUID), "lpGuid"), Out(Pointer(LPVOID), "lplpDD"), (REFIID, "iid"), (Pointer(IUnknown), "pUnkOuter")]),
+ StdFunction(HRESULT, "DirectDrawCreateClipper", [(DWORD, "dwFlags"), Out(Pointer(LPDIRECTDRAWCLIPPER), "lplpDDClipper"), (Pointer(IUnknown), "pUnkOuter")]),
+ StdFunction(Void, "AcquireDDThreadLock", []),
+ StdFunction(Void, "ReleaseDDThreadLock", []),
+ StdFunction(DWORD, "D3DParseUnknownCommand", [(LPVOID, "lpCmd"), Out(Pointer(LPVOID), "lpRetCmd")]),
+ StdFunction(HRESULT, "DllCanUnloadNow", []),
+ StdFunction(HRESULT, "DllGetClassObject", [(REFCLSID, "rclsid"), (REFIID, "riid"), Out(Pointer(OpaquePointer(Void)), "ppv")]),
+
+ # XXX
+ StdFunction(HRESULT, "CompleteCreateSysmemSurface", [Int, Int]),
+ StdFunction(HRESULT, "GetSurfaceFromDC", [Int, Int, Int]),
+ StdFunction(HRESULT, "DDInternalLock", [Int, Int]),
+ StdFunction(HRESULT, "DDInternalUnlock", [Int]),
+ StdFunction(HRESULT, "DSoundHelp", [HWND, Int, Int]),
+ StdFunction(HRESULT, "GetDDSurfaceLocal", [Int, Int, Int]),
+ StdFunction(HANDLE, "GetOLEThunkData", [Int]),
+ StdFunction(HRESULT, "RegisterSpecialCase", [Int, Int, Int, Int]),
+ StdFunction(HRESULT, "DDGetAttachedSurfaceLcl", [Int, Int, Int]),
+
+ # TODO: SetAppCompatData
+])
+