From 91af923a1ac70242f06a764ace2ca2281443b92d Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jos=C3=A9=20Fonseca?= Date: Mon, 13 Apr 2009 16:15:28 +0100 Subject: [PATCH] Basic support for tracing d3d7. --- .gitignore | 1 + SConstruct | 19 + d3d.py | 447 ++++++++++++++ d3dcaps.py | 460 +++++++++++++++ d3dtypes.py | 1047 +++++++++++++++++++++++++++++++++ ddraw.def | 8 + ddraw.py | 1622 +++++++++++++++++++++++++++++++++++++++++++++++++++ 7 files changed, 3604 insertions(+) create mode 100755 d3d.py create mode 100755 d3dcaps.py create mode 100755 d3dtypes.py create mode 100644 ddraw.def create mode 100755 ddraw.py diff --git a/.gitignore b/.gitignore index 7627fd6..b7bff91 100644 --- a/.gitignore +++ b/.gitignore @@ -15,6 +15,7 @@ *.xml *.zip config.log +ddraw.cpp d3d8.cpp d3d9.cpp opengl32.cpp diff --git a/SConstruct b/SConstruct index f98a91d..84564c4 100644 --- a/SConstruct +++ b/SConstruct @@ -85,8 +85,27 @@ env.Append(CPPPATH = [ conf = Configure(env) has_d3d9 = conf.CheckCHeader('d3d9.h') has_d3d8 = conf.CheckCHeader('d3d8.h') +has_d3d7 = conf.CheckCHeader('ddraw.h') env = conf.Finish() +if has_d3d7: + env.Command( + target = 'ddraw.cpp', + source = ['ddraw.py', 'd3d.py', 'd3dtypes.py', 'd3dcaps.py', 'windows.py', 'base.py'], + action = 'python $SOURCE > $TARGET', + ) + + ddraw = env.SharedLibrary( + target = 'ddraw', + source = [ + 'ddraw.def', + 'ddraw.cpp', + 'log.cpp', + ] + ) + + env.Default(ddraw) + if has_d3d8: env.Command( target = 'd3d8.cpp', diff --git a/d3d.py b/d3d.py new file mode 100755 index 0000000..95d1793 --- /dev/null +++ b/d3d.py @@ -0,0 +1,447 @@ +############################################################################# +# +# Copyright 2008 Tungsten Graphics, Inc. +# +# This program is free software: you can redistribute it and/or modify it +# under the terms of the GNU Lesser General Public License as published +# by the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with this program. If not, see . +# +############################################################################# + +"""d3d.h""" + +from windows import * +from d3dtypes import * +from d3dcaps import * + +D3DNEXT = Flags(DWORD, [ + "D3DNEXT_NEXT", + "D3DNEXT_HEAD", + "D3DNEXT_TAIL", +]) + +D3DDP = Flags(DWORD, [ + "D3DDP_WAIT", + "D3DDP_OUTOFORDER", + "D3DDP_DONOTCLIP", + "D3DDP_DONOTUPDATEEXTENTS", + "D3DDP_DONOTLIGHT", +]) + +HRESULT = Enum("HRESULT", [ + "D3D_OK", + "D3DERR_BADMAJORVERSION", + "D3DERR_BADMINORVERSION", + "D3DERR_INVALID_DEVICE", + "D3DERR_INITFAILED", + "D3DERR_DEVICEAGGREGATED", + "D3DERR_EXECUTE_CREATE_FAILED", + "D3DERR_EXECUTE_DESTROY_FAILED", + "D3DERR_EXECUTE_LOCK_FAILED", + "D3DERR_EXECUTE_UNLOCK_FAILED", + "D3DERR_EXECUTE_LOCKED", + "D3DERR_EXECUTE_NOT_LOCKED", + "D3DERR_EXECUTE_FAILED", + "D3DERR_EXECUTE_CLIPPED_FAILED", + "D3DERR_TEXTURE_NO_SUPPORT", + "D3DERR_TEXTURE_CREATE_FAILED", + "D3DERR_TEXTURE_DESTROY_FAILED", + "D3DERR_TEXTURE_LOCK_FAILED", + "D3DERR_TEXTURE_UNLOCK_FAILED", + "D3DERR_TEXTURE_LOAD_FAILED", + "D3DERR_TEXTURE_SWAP_FAILED", + "D3DERR_TEXTURE_LOCKED", + "D3DERR_TEXTURE_NOT_LOCKED", + "D3DERR_TEXTURE_GETSURF_FAILED", + "D3DERR_MATRIX_CREATE_FAILED", + "D3DERR_MATRIX_DESTROY_FAILED", + "D3DERR_MATRIX_SETDATA_FAILED", + "D3DERR_MATRIX_GETDATA_FAILED", + "D3DERR_SETVIEWPORTDATA_FAILED", + "D3DERR_INVALIDCURRENTVIEWPORT", + "D3DERR_INVALIDPRIMITIVETYPE", + "D3DERR_INVALIDVERTEXTYPE", + "D3DERR_TEXTURE_BADSIZE", + "D3DERR_INVALIDRAMPTEXTURE", + "D3DERR_MATERIAL_CREATE_FAILED", + "D3DERR_MATERIAL_DESTROY_FAILED", + "D3DERR_MATERIAL_SETDATA_FAILED", + "D3DERR_MATERIAL_GETDATA_FAILED", + "D3DERR_INVALIDPALETTE", + "D3DERR_ZBUFF_NEEDS_SYSTEMMEMORY", + "D3DERR_ZBUFF_NEEDS_VIDEOMEMORY", + "D3DERR_SURFACENOTINVIDMEM", + "D3DERR_LIGHT_SET_FAILED", + "D3DERR_LIGHTHASVIEWPORT", + "D3DERR_LIGHTNOTINTHISVIEWPORT", + "D3DERR_SCENE_IN_SCENE", + "D3DERR_SCENE_NOT_IN_SCENE", + "D3DERR_SCENE_BEGIN_FAILED", + "D3DERR_SCENE_END_FAILED", + "D3DERR_INBEGIN", + "D3DERR_NOTINBEGIN", + "D3DERR_NOVIEWPORTS", + "D3DERR_VIEWPORTDATANOTSET", + "D3DERR_VIEWPORTHASNODEVICE", + "D3DERR_NOCURRENTVIEWPORT", + "D3DERR_INVALIDVERTEXFORMAT", + "D3DERR_COLORKEYATTACHED", + "D3DERR_VERTEXBUFFEROPTIMIZED", + "D3DERR_VBUF_CREATE_FAILED", + "D3DERR_VERTEXBUFFERLOCKED", + "D3DERR_VERTEXBUFFERUNLOCKFAILED", + "D3DERR_ZBUFFER_NOTPRESENT", + "D3DERR_STENCILBUFFER_NOTPRESENT", + "D3DERR_WRONGTEXTUREFORMAT", + "D3DERR_UNSUPPORTEDCOLOROPERATION", + "D3DERR_UNSUPPORTEDCOLORARG", + "D3DERR_UNSUPPORTEDALPHAOPERATION", + "D3DERR_UNSUPPORTEDALPHAARG", + "D3DERR_TOOMANYOPERATIONS", + "D3DERR_CONFLICTINGTEXTUREFILTER", + "D3DERR_UNSUPPORTEDFACTORVALUE", + "D3DERR_CONFLICTINGRENDERSTATE", + "D3DERR_UNSUPPORTEDTEXTUREFILTER", + "D3DERR_TOOMANYPRIMITIVES", + "D3DERR_INVALIDMATRIX", + "D3DERR_TOOMANYVERTICES", + "D3DERR_CONFLICTINGTEXTUREPALETTE", + "D3DERR_INVALIDSTATEBLOCK", + "D3DERR_INBEGINSTATEBLOCK", + "D3DERR_NOTINBEGINSTATEBLOCK", +]) + +IDirect3D = Interface("IDirect3D", IUnknown) +IDirect3D2 = Interface("IDirect3D2", IUnknown) +IDirect3D3 = Interface("IDirect3D3", IUnknown) +IDirect3D7 = Interface("IDirect3D7", IUnknown) +IDirect3DDevice = Interface("IDirect3DDevice", IUnknown) +IDirect3DDevice2 = Interface("IDirect3DDevice2", IUnknown) +IDirect3DDevice3 = Interface("IDirect3DDevice3", IUnknown) +IDirect3DDevice7 = Interface("IDirect3DDevice7", IUnknown) +IDirect3DExecuteBuffer = Interface("IDirect3DExecuteBuffer", IUnknown) +IDirect3DLight = Interface("IDirect3DLight", IUnknown) +IDirect3DMaterial = Interface("IDirect3DMaterial", IUnknown) +IDirect3DMaterial2 = Interface("IDirect3DMaterial2", IUnknown) +IDirect3DMaterial3 = Interface("IDirect3DMaterial3", IUnknown) +IDirect3DTexture = Interface("IDirect3DTexture", IUnknown) +IDirect3DTexture2 = Interface("IDirect3DTexture2", IUnknown) +IDirect3DViewport = Interface("IDirect3DViewport", IUnknown) +IDirect3DViewport2 = Interface("IDirect3DViewport2", IDirect3DViewport) +IDirect3DViewport3 = Interface("IDirect3DViewport3", IDirect3DViewport2) +IDirect3DVertexBuffer = Interface("IDirect3DVertexBuffer", IUnknown) +IDirect3DVertexBuffer7 = Interface("IDirect3DVertexBuffer7", IUnknown) + +LPUNKNOWN = WrapPointer(IUnknown) + +LPDIRECT3D = WrapPointer(IDirect3D) +LPDIRECT3DDEVICE = WrapPointer(IDirect3DDevice) +LPDIRECT3DEXECUTEBUFFER = WrapPointer(IDirect3DExecuteBuffer) +LPDIRECT3DLIGHT = WrapPointer(IDirect3DLight) +LPDIRECT3DMATERIAL = WrapPointer(IDirect3DMaterial) +LPDIRECT3DTEXTURE = WrapPointer(IDirect3DTexture) +LPDIRECT3DVIEWPORT = WrapPointer(IDirect3DViewport) + +LPDIRECT3D2 = WrapPointer(IDirect3D2) +LPDIRECT3DDEVICE2 = WrapPointer(IDirect3DDevice2) +LPDIRECT3DMATERIAL2 = WrapPointer(IDirect3DMaterial2) +LPDIRECT3DTEXTURE2 = WrapPointer(IDirect3DTexture2) +LPDIRECT3DVIEWPORT2 = WrapPointer(IDirect3DViewport2) + +LPDIRECT3D3 = WrapPointer(IDirect3D3) +LPDIRECT3DDEVICE3 = WrapPointer(IDirect3DDevice3) +LPDIRECT3DMATERIAL3 = WrapPointer(IDirect3DMaterial3) +LPDIRECT3DVIEWPORT3 = WrapPointer(IDirect3DViewport3) +LPDIRECT3DVERTEXBUFFER = WrapPointer(IDirect3DVertexBuffer) + +LPDIRECT3D7 = WrapPointer(IDirect3D7) +LPDIRECT3DDEVICE7 = WrapPointer(IDirect3DDevice7) +LPDIRECT3DVERTEXBUFFER7 = WrapPointer(IDirect3DVertexBuffer7) + +IDirect3D.methods += [ + Method(HRESULT, "Initialize", [REFCLSID]), + Method(HRESULT, "EnumDevices", [LPD3DENUMDEVICESCALLBACK,LPVOID]), + Method(HRESULT, "CreateLight", [OutPointer(LPDIRECT3DLIGHT),LPUNKNOWN]), + Method(HRESULT, "CreateMaterial", [OutPointer(LPDIRECT3DMATERIAL),LPUNKNOWN]), + Method(HRESULT, "CreateViewport", [OutPointer(LPDIRECT3DVIEWPORT),LPUNKNOWN]), + Method(HRESULT, "FindDevice", [LPD3DFINDDEVICESEARCH,LPD3DFINDDEVICERESULT]), +] + +IDirect3D2.methods += [ + Method(HRESULT, "EnumDevices", [LPD3DENUMDEVICESCALLBACK,LPVOID]), + Method(HRESULT, "CreateLight", [OutPointer(LPDIRECT3DLIGHT),LPUNKNOWN]), + Method(HRESULT, "CreateMaterial", [OutPointer(LPDIRECT3DMATERIAL2),LPUNKNOWN]), + Method(HRESULT, "CreateViewport", [OutPointer(LPDIRECT3DVIEWPORT2),LPUNKNOWN]), + Method(HRESULT, "FindDevice", [LPD3DFINDDEVICESEARCH,LPD3DFINDDEVICERESULT]), + Method(HRESULT, "CreateDevice", [REFCLSID,LPDIRECTDRAWSURFACE,OutPointer(LPDIRECT3DDEVICE2)]), +] + +IDirect3D3.methods += [ + Method(HRESULT, "EnumDevices", [LPD3DENUMDEVICESCALLBACK,LPVOID]), + Method(HRESULT, "CreateLight", [OutPointer(LPDIRECT3DLIGHT),LPUNKNOWN]), + Method(HRESULT, "CreateMaterial", [OutPointer(LPDIRECT3DMATERIAL3),LPUNKNOWN]), + Method(HRESULT, "CreateViewport", [OutPointer(LPDIRECT3DVIEWPORT3),LPUNKNOWN]), + Method(HRESULT, "FindDevice", [LPD3DFINDDEVICESEARCH,LPD3DFINDDEVICERESULT]), + Method(HRESULT, "CreateDevice", [REFCLSID,LPDIRECTDRAWSURFACE4,OutPointer(LPDIRECT3DDEVICE3),LPUNKNOWN]), + Method(HRESULT, "CreateVertexBuffer", [LPD3DVERTEXBUFFERDESC,OutPointer(LPDIRECT3DVERTEXBUFFER),DWORD,LPUNKNOWN]), + Method(HRESULT, "EnumZBufferFormats", [REFCLSID,LPD3DENUMPIXELFORMATSCALLBACK,LPVOID]), + Method(HRESULT, "EvictManagedTextures", []), +] + +IDirect3D7.methods += [ + Method(HRESULT, "EnumDevices", [LPD3DENUMDEVICESCALLBACK7,LPVOID]), + Method(HRESULT, "CreateDevice", [REFCLSID,LPDIRECTDRAWSURFACE7,OutPointer(LPDIRECT3DDEVICE7)]), + Method(HRESULT, "CreateVertexBuffer", [LPD3DVERTEXBUFFERDESC,OutPointer(LPDIRECT3DVERTEXBUFFER7),DWORD]), + Method(HRESULT, "EnumZBufferFormats", [REFCLSID,LPD3DENUMPIXELFORMATSCALLBACK,LPVOID]), + Method(HRESULT, "EvictManagedTextures", []), +] + +IDirect3DDevice.methods += [ + Method(HRESULT, "Initialize", [LPDIRECT3D,LPGUID,LPD3DDEVICEDESC]), + Method(HRESULT, "GetCaps", [LPD3DDEVICEDESC,LPD3DDEVICEDESC]), + Method(HRESULT, "SwapTextureHandles", [LPDIRECT3DTEXTURE,LPDIRECT3DTEXTURE]), + Method(HRESULT, "CreateExecuteBuffer", [LPD3DEXECUTEBUFFERDESC,OutPointer(LPDIRECT3DEXECUTEBUFFER),LPUNKNOWN]), + Method(HRESULT, "GetStats", [LPD3DSTATS]), + Method(HRESULT, "Execute", [LPDIRECT3DEXECUTEBUFFER,LPDIRECT3DVIEWPORT,DWORD]), + Method(HRESULT, "AddViewport", [LPDIRECT3DVIEWPORT]), + Method(HRESULT, "DeleteViewport", [LPDIRECT3DVIEWPORT]), + Method(HRESULT, "NextViewport", [LPDIRECT3DVIEWPORT,OutPointer(LPDIRECT3DVIEWPORT),DWORD]), + Method(HRESULT, "Pick", [LPDIRECT3DEXECUTEBUFFER,LPDIRECT3DVIEWPORT,DWORD,LPD3DRECT]), + Method(HRESULT, "GetPickRecords", [LPDWORD,LPD3DPICKRECORD]), + Method(HRESULT, "EnumTextureFormats", [LPD3DENUMTEXTUREFORMATSCALLBACK,LPVOID]), + Method(HRESULT, "CreateMatrix", [LPD3DMATRIXHANDLE]), + Method(HRESULT, "SetMatrix", [D3DMATRIXHANDLE,Const(LPD3DMATRIX)]), + Method(HRESULT, "GetMatrix", [D3DMATRIXHANDLE,LPD3DMATRIX]), + Method(HRESULT, "DeleteMatrix", [D3DMATRIXHANDLE]), + Method(HRESULT, "BeginScene", []), + Method(HRESULT, "EndScene", []), + Method(HRESULT, "GetDirect3D", [OutPointer(LPDIRECT3D)]), +] + +IDirect3DDevice2.methods += [ + Method(HRESULT, "GetCaps", [LPD3DDEVICEDESC,LPD3DDEVICEDESC]), + Method(HRESULT, "SwapTextureHandles", [LPDIRECT3DTEXTURE2,LPDIRECT3DTEXTURE2]), + Method(HRESULT, "GetStats", [LPD3DSTATS]), + Method(HRESULT, "AddViewport", [LPDIRECT3DVIEWPORT2]), + Method(HRESULT, "DeleteViewport", [LPDIRECT3DVIEWPORT2]), + Method(HRESULT, "NextViewport", [LPDIRECT3DVIEWPORT2,OutPointer(LPDIRECT3DVIEWPORT2),DWORD]), + Method(HRESULT, "EnumTextureFormats", [LPD3DENUMTEXTUREFORMATSCALLBACK,LPVOID]), + Method(HRESULT, "BeginScene", []), + Method(HRESULT, "EndScene", []), + Method(HRESULT, "GetDirect3D", [OutPointer(LPDIRECT3D2)]), + Method(HRESULT, "SetCurrentViewport", [LPDIRECT3DVIEWPORT2]), + Method(HRESULT, "GetCurrentViewport", [OutPointer(LPDIRECT3DVIEWPORT2)]), + Method(HRESULT, "SetRenderTarget", [LPDIRECTDRAWSURFACE,DWORD]), + Method(HRESULT, "GetRenderTarget", [OutPointer(LPDIRECTDRAWSURFACE)]), + Method(HRESULT, "Begin", [D3DPRIMITIVETYPE,D3DVERTEXTYPE,DWORD]), + Method(HRESULT, "BeginIndexed", [D3DPRIMITIVETYPE,D3DVERTEXTYPE,LPVOID,DWORD,DWORD]), + Method(HRESULT, "Vertex", [LPVOID]), + Method(HRESULT, "Index", [WORD]), + Method(HRESULT, "End", [DWORD]), + Method(HRESULT, "GetRenderState", [D3DRENDERSTATETYPE,LPDWORD]), + Method(HRESULT, "SetRenderState", [D3DRENDERSTATETYPE,DWORD]), + Method(HRESULT, "GetLightState", [D3DLIGHTSTATETYPE,LPDWORD]), + Method(HRESULT, "SetLightState", [D3DLIGHTSTATETYPE,DWORD]), + Method(HRESULT, "SetTransform", [D3DTRANSFORMSTATETYPE,LPD3DMATRIX]), + Method(HRESULT, "GetTransform", [D3DTRANSFORMSTATETYPE,LPD3DMATRIX]), + Method(HRESULT, "MultiplyTransform", [D3DTRANSFORMSTATETYPE,LPD3DMATRIX]), + Method(HRESULT, "DrawPrimitive", [D3DPRIMITIVETYPE,D3DVERTEXTYPE,LPVOID,DWORD,DWORD]), + Method(HRESULT, "DrawIndexedPrimitive", [D3DPRIMITIVETYPE,D3DVERTEXTYPE,LPVOID,DWORD,LPWORD,DWORD,DWORD]), + Method(HRESULT, "SetClipStatus", [LPD3DCLIPSTATUS]), + Method(HRESULT, "GetClipStatus", [LPD3DCLIPSTATUS]), +] + +IDirect3DDevice3.methods += [ + Method(HRESULT, "GetCaps", [LPD3DDEVICEDESC,LPD3DDEVICEDESC]), + Method(HRESULT, "GetStats", [LPD3DSTATS]), + Method(HRESULT, "AddViewport", [LPDIRECT3DVIEWPORT3]), + Method(HRESULT, "DeleteViewport", [LPDIRECT3DVIEWPORT3]), + Method(HRESULT, "NextViewport", [LPDIRECT3DVIEWPORT3,OutPointer(LPDIRECT3DVIEWPORT3),DWORD]), + Method(HRESULT, "EnumTextureFormats", [LPD3DENUMPIXELFORMATSCALLBACK,LPVOID]), + Method(HRESULT, "BeginScene", []), + Method(HRESULT, "EndScene", []), + Method(HRESULT, "GetDirect3D", [OutPointer(LPDIRECT3D3)]), + Method(HRESULT, "SetCurrentViewport", [LPDIRECT3DVIEWPORT3]), + Method(HRESULT, "GetCurrentViewport", [OutPointer(LPDIRECT3DVIEWPORT3)]), + Method(HRESULT, "SetRenderTarget", [LPDIRECTDRAWSURFACE4,DWORD]), + Method(HRESULT, "GetRenderTarget", [OutPointer(LPDIRECTDRAWSURFACE4)]), + Method(HRESULT, "Begin", [D3DPRIMITIVETYPE,DWORD,DWORD]), + Method(HRESULT, "BeginIndexed", [D3DPRIMITIVETYPE,DWORD,LPVOID,DWORD,DWORD]), + Method(HRESULT, "Vertex", [LPVOID]), + Method(HRESULT, "Index", [WORD]), + Method(HRESULT, "End", [DWORD]), + Method(HRESULT, "GetRenderState", [D3DRENDERSTATETYPE,LPDWORD]), + Method(HRESULT, "SetRenderState", [D3DRENDERSTATETYPE,DWORD]), + Method(HRESULT, "GetLightState", [D3DLIGHTSTATETYPE,LPDWORD]), + Method(HRESULT, "SetLightState", [D3DLIGHTSTATETYPE,DWORD]), + Method(HRESULT, "SetTransform", [D3DTRANSFORMSTATETYPE,LPD3DMATRIX]), + Method(HRESULT, "GetTransform", [D3DTRANSFORMSTATETYPE,LPD3DMATRIX]), + Method(HRESULT, "MultiplyTransform", [D3DTRANSFORMSTATETYPE,LPD3DMATRIX]), + Method(HRESULT, "DrawPrimitive", [D3DPRIMITIVETYPE,DWORD,LPVOID,DWORD,DWORD]), + Method(HRESULT, "DrawIndexedPrimitive", [D3DPRIMITIVETYPE,DWORD,LPVOID,DWORD,LPWORD,DWORD,DWORD]), + Method(HRESULT, "SetClipStatus", [LPD3DCLIPSTATUS]), + Method(HRESULT, "GetClipStatus", [LPD3DCLIPSTATUS]), + Method(HRESULT, "DrawPrimitiveStrided", [D3DPRIMITIVETYPE,DWORD,LPD3DDRAWPRIMITIVESTRIDEDDATA,DWORD,DWORD]), + Method(HRESULT, "DrawIndexedPrimitiveStrided", [D3DPRIMITIVETYPE,DWORD,LPD3DDRAWPRIMITIVESTRIDEDDATA,DWORD,LPWORD,DWORD,DWORD]), + Method(HRESULT, "DrawPrimitiveVB", [D3DPRIMITIVETYPE,LPDIRECT3DVERTEXBUFFER,DWORD,DWORD,DWORD]), + Method(HRESULT, "DrawIndexedPrimitiveVB", [D3DPRIMITIVETYPE,LPDIRECT3DVERTEXBUFFER,LPWORD,DWORD,DWORD]), + Method(HRESULT, "ComputeSphereVisibility", [LPD3DVECTOR,LPD3DVALUE,DWORD,DWORD,LPDWORD]), + Method(HRESULT, "GetTexture", [DWORD,OutPointer(LPDIRECT3DTEXTURE2)]), + Method(HRESULT, "SetTexture", [DWORD,LPDIRECT3DTEXTURE2]), + Method(HRESULT, "GetTextureStageState", [DWORD,D3DTEXTURESTAGESTATETYPE,LPDWORD]), + Method(HRESULT, "SetTextureStageState", [DWORD,D3DTEXTURESTAGESTATETYPE,DWORD]), + Method(HRESULT, "ValidateDevice", [LPDWORD]), +] + +IDirect3DDevice7.methods += [ + Method(HRESULT, "GetCaps", [LPD3DDEVICEDESC7]), + Method(HRESULT, "EnumTextureFormats", [LPD3DENUMPIXELFORMATSCALLBACK,LPVOID]), + Method(HRESULT, "BeginScene", []), + Method(HRESULT, "EndScene", []), + Method(HRESULT, "GetDirect3D", [OutPointer(LPDIRECT3D7)]), + Method(HRESULT, "SetRenderTarget", [LPDIRECTDRAWSURFACE7,DWORD]), + Method(HRESULT, "GetRenderTarget", [OutPointer(LPDIRECTDRAWSURFACE7)]), + Method(HRESULT, "Clear", [DWORD,LPD3DRECT,DWORD,D3DCOLOR,D3DVALUE,DWORD]), + Method(HRESULT, "SetTransform", [D3DTRANSFORMSTATETYPE,LPD3DMATRIX]), + Method(HRESULT, "GetTransform", [D3DTRANSFORMSTATETYPE,LPD3DMATRIX]), + Method(HRESULT, "SetViewport", [LPD3DVIEWPORT7]), + Method(HRESULT, "MultiplyTransform", [D3DTRANSFORMSTATETYPE,LPD3DMATRIX]), + Method(HRESULT, "GetViewport", [LPD3DVIEWPORT7]), + Method(HRESULT, "SetMaterial", [LPD3DMATERIAL7]), + Method(HRESULT, "GetMaterial", [LPD3DMATERIAL7]), + Method(HRESULT, "SetLight", [DWORD,LPD3DLIGHT7]), + Method(HRESULT, "GetLight", [DWORD,LPD3DLIGHT7]), + Method(HRESULT, "SetRenderState", [D3DRENDERSTATETYPE,DWORD]), + Method(HRESULT, "GetRenderState", [D3DRENDERSTATETYPE,LPDWORD]), + Method(HRESULT, "BeginStateBlock", []), + Method(HRESULT, "EndStateBlock", [LPDWORD]), + Method(HRESULT, "PreLoad", [LPDIRECTDRAWSURFACE7]), + Method(HRESULT, "DrawPrimitive", [D3DPRIMITIVETYPE,DWORD,LPVOID,DWORD,DWORD]), + Method(HRESULT, "DrawIndexedPrimitive", [D3DPRIMITIVETYPE,DWORD,LPVOID,DWORD,LPWORD,DWORD,DWORD]), + Method(HRESULT, "SetClipStatus", [LPD3DCLIPSTATUS]), + Method(HRESULT, "GetClipStatus", [LPD3DCLIPSTATUS]), + Method(HRESULT, "DrawPrimitiveStrided", [D3DPRIMITIVETYPE,DWORD,LPD3DDRAWPRIMITIVESTRIDEDDATA,DWORD,DWORD]), + Method(HRESULT, "DrawIndexedPrimitiveStrided", [D3DPRIMITIVETYPE,DWORD,LPD3DDRAWPRIMITIVESTRIDEDDATA,DWORD,LPWORD,DWORD,DWORD]), + Method(HRESULT, "DrawPrimitiveVB", [D3DPRIMITIVETYPE,LPDIRECT3DVERTEXBUFFER7,DWORD,DWORD,DWORD]), + Method(HRESULT, "DrawIndexedPrimitiveVB", [D3DPRIMITIVETYPE,LPDIRECT3DVERTEXBUFFER7,DWORD,DWORD,LPWORD,DWORD,DWORD]), + Method(HRESULT, "ComputeSphereVisibility", [LPD3DVECTOR,LPD3DVALUE,DWORD,DWORD,LPDWORD]), + Method(HRESULT, "GetTexture", [DWORD,OutPointer(LPDIRECTDRAWSURFACE7)]), + Method(HRESULT, "SetTexture", [DWORD,LPDIRECTDRAWSURFACE7]), + Method(HRESULT, "GetTextureStageState", [DWORD,D3DTEXTURESTAGESTATETYPE,LPDWORD]), + Method(HRESULT, "SetTextureStageState", [DWORD,D3DTEXTURESTAGESTATETYPE,DWORD]), + Method(HRESULT, "ValidateDevice", [LPDWORD]), + Method(HRESULT, "ApplyStateBlock", [DWORD]), + Method(HRESULT, "CaptureStateBlock", [DWORD]), + Method(HRESULT, "DeleteStateBlock", [DWORD]), + Method(HRESULT, "CreateStateBlock", [D3DSTATEBLOCKTYPE,LPDWORD]), + Method(HRESULT, "Load", [LPDIRECTDRAWSURFACE7,LPPOINT,LPDIRECTDRAWSURFACE7,LPRECT,DWORD]), + Method(HRESULT, "LightEnable", [DWORD,BOOL]), + Method(HRESULT, "GetLightEnable", [DWORD,OutPointer(BOOL)]), + Method(HRESULT, "SetClipPlane", [DWORD,OutPointer(D3DVALUE)]), + Method(HRESULT, "GetClipPlane", [DWORD,OutPointer(D3DVALUE)]), + Method(HRESULT, "GetInfo", [DWORD,LPVOID,DWORD]), +] + +IDirect3DExecuteBuffer.methods += [ + Method(HRESULT, "Initialize", [LPDIRECT3DDEVICE,LPD3DEXECUTEBUFFERDESC]), + Method(HRESULT, "Lock", [LPD3DEXECUTEBUFFERDESC]), + Method(HRESULT, "Unlock", []), + Method(HRESULT, "SetExecuteData", [LPD3DEXECUTEDATA]), + Method(HRESULT, "GetExecuteData", [LPD3DEXECUTEDATA]), + Method(HRESULT, "Validate", [LPDWORD,LPD3DVALIDATECALLBACK,LPVOID,DWORD]), + Method(HRESULT, "Optimize", [DWORD]), +] + +IDirect3DLight.methods += [ + Method(HRESULT, "Initialize", [LPDIRECT3D]), + Method(HRESULT, "SetLight", [LPD3DLIGHT]), + Method(HRESULT, "GetLight", [LPD3DLIGHT]), +] + +IDirect3DMaterial.methods += [ + Method(HRESULT, "Initialize", [LPDIRECT3D]), + Method(HRESULT, "SetMaterial", [LPD3DMATERIAL]), + Method(HRESULT, "GetMaterial", [LPD3DMATERIAL]), + Method(HRESULT, "GetHandle", [LPDIRECT3DDEVICE,LPD3DMATERIALHANDLE]), + Method(HRESULT, "Reserve", []), + Method(HRESULT, "Unreserve", []), +] + +IDirect3DMaterial2.methods += [ + Method(HRESULT, "SetMaterial", [LPD3DMATERIAL]), + Method(HRESULT, "GetMaterial", [LPD3DMATERIAL]), + Method(HRESULT, "GetHandle", [LPDIRECT3DDEVICE2,LPD3DMATERIALHANDLE]), +] + +IDirect3DMaterial3.methods += [ + Method(HRESULT, "SetMaterial", [LPD3DMATERIAL]), + Method(HRESULT, "GetMaterial", [LPD3DMATERIAL]), + Method(HRESULT, "GetHandle", [LPDIRECT3DDEVICE3,LPD3DMATERIALHANDLE]), +] + +IDirect3DTexture.methods += [ + Method(HRESULT, "Initialize", [LPDIRECT3DDEVICE,LPDIRECTDRAWSURFACE]), + Method(HRESULT, "GetHandle", [LPDIRECT3DDEVICE,LPD3DTEXTUREHANDLE]), + Method(HRESULT, "PaletteChanged", [DWORD,DWORD]), + Method(HRESULT, "Load", [LPDIRECT3DTEXTURE]), + Method(HRESULT, "Unload", []), +] + +IDirect3DTexture2.methods += [ + Method(HRESULT, "GetHandle", [LPDIRECT3DDEVICE2,LPD3DTEXTUREHANDLE]), + Method(HRESULT, "PaletteChanged", [DWORD,DWORD]), + Method(HRESULT, "Load", [LPDIRECT3DTEXTURE2]), +] + +IDirect3DViewport.methods += [ + Method(HRESULT, "Initialize", [LPDIRECT3D]), + Method(HRESULT, "GetViewport", [LPD3DVIEWPORT]), + Method(HRESULT, "SetViewport", [LPD3DVIEWPORT]), + Method(HRESULT, "TransformVertices", [DWORD,LPD3DTRANSFORMDATA,DWORD,LPDWORD]), + Method(HRESULT, "LightElements", [DWORD,LPD3DLIGHTDATA]), + Method(HRESULT, "SetBackground", [D3DMATERIALHANDLE]), + Method(HRESULT, "GetBackground", [LPD3DMATERIALHANDLE,LPBOOL]), + Method(HRESULT, "SetBackgroundDepth", [LPDIRECTDRAWSURFACE]), + Method(HRESULT, "GetBackgroundDepth", [OutPointer(LPDIRECTDRAWSURFACE),LPBOOL]), + Method(HRESULT, "Clear", [DWORD,LPD3DRECT,DWORD]), + Method(HRESULT, "AddLight", [LPDIRECT3DLIGHT]), + Method(HRESULT, "DeleteLight", [LPDIRECT3DLIGHT]), + Method(HRESULT, "NextLight", [LPDIRECT3DLIGHT,OutPointer(LPDIRECT3DLIGHT),DWORD]), +] + +IDirect3DViewport2.methods += [ + Method(HRESULT, "GetViewport2", [LPD3DVIEWPORT2]), + Method(HRESULT, "SetViewport2", [LPD3DVIEWPORT2]), +] + +IDirect3DViewport3.methods += [ + Method(HRESULT, "SetBackgroundDepth2", [LPDIRECTDRAWSURFACE4]), + Method(HRESULT, "GetBackgroundDepth2", [OutPointer(LPDIRECTDRAWSURFACE4),LPBOOL]), + Method(HRESULT, "Clear2", [DWORD,LPD3DRECT,DWORD,D3DCOLOR,D3DVALUE,DWORD]), +] + +IDirect3DVertexBuffer.methods += [ + Method(HRESULT, "Lock", [DWORD,OutPointer(LPVOID),LPDWORD]), + Method(HRESULT, "Unlock", []), + Method(HRESULT, "ProcessVertices", [DWORD,DWORD,DWORD,LPDIRECT3DVERTEXBUFFER,DWORD,LPDIRECT3DDEVICE3,DWORD]), + Method(HRESULT, "GetVertexBufferDesc", [LPD3DVERTEXBUFFERDESC]), + Method(HRESULT, "Optimize", [LPDIRECT3DDEVICE3,DWORD]), +] + +IDirect3DVertexBuffer7.methods += [ + Method(HRESULT, "Lock", [DWORD,OutPointer(LPVOID),LPDWORD]), + Method(HRESULT, "Unlock", []), + Method(HRESULT, "ProcessVertices", [DWORD,DWORD,DWORD,LPDIRECT3DVERTEXBUFFER7,DWORD,LPDIRECT3DDEVICE7,DWORD]), + Method(HRESULT, "GetVertexBufferDesc", [LPD3DVERTEXBUFFERDESC]), + Method(HRESULT, "Optimize", [LPDIRECT3DDEVICE7,DWORD]), + Method(HRESULT, "ProcessVerticesStrided", [DWORD,DWORD,DWORD,LPD3DDRAWPRIMITIVESTRIDEDDATA,DWORD,LPDIRECT3DDEVICE7,DWORD]), +] diff --git a/d3dcaps.py b/d3dcaps.py new file mode 100755 index 0000000..95afa18 --- /dev/null +++ b/d3dcaps.py @@ -0,0 +1,460 @@ +############################################################################# +# +# Copyright 2008 Tungsten Graphics, Inc. +# +# This program is free software: you can redistribute it and/or modify it +# under the terms of the GNU Lesser General Public License as published +# by the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with this program. If not, see . +# +############################################################################# + +"""d3dcaps.h""" + +from windows import * +from d3dtypes import * + +D3DTRANSFORMCAPS = Flags(DWORD, [ + "D3DTRANSFORMCAPS_CLIP", +]) + +D3DTRANSFORMCAPS = Struct("D3DTRANSFORMCAPS", [ + (DWORD, "dwSize"), + (DWORD, "dwCaps"), +]) + +D3DLIGHTINGCAPS = Struct("D3DLIGHTINGCAPS", [ + (DWORD, "dwSize"), + (DWORD, "dwCaps"), + (DWORD, "dwLightingModel"), + (DWORD, "dwNumLights"), +]) + +D3DLIGHTINGMODEL = Flags(DWORD, [ + "D3DLIGHTINGMODEL_RGB", + "D3DLIGHTINGMODEL_MONO", +]) + +D3DLIGHTCAPS = Flags(DWORD, [ + "D3DLIGHTCAPS_POINT", + "D3DLIGHTCAPS_SPOT", + "D3DLIGHTCAPS_DIRECTIONAL", + "D3DLIGHTCAPS_PARALLELPOINT", + "D3DLIGHTCAPS_GLSPOT", +]) + +D3DPRIMCAPS = Struct("D3DPRIMCAPS", [ + (DWORD, "dwSize"), + (DWORD, "dwMiscCaps"), + (DWORD, "dwRasterCaps"), + (DWORD, "dwZCmpCaps"), + (DWORD, "dwSrcBlendCaps"), + (DWORD, "dwDestBlendCaps"), + (DWORD, "dwAlphaCmpCaps"), + (DWORD, "dwShadeCaps"), + (DWORD, "dwTextureCaps"), + (DWORD, "dwTextureFilterCaps"), + (DWORD, "dwTextureBlendCaps"), + (DWORD, "dwTextureAddressCaps"), + (DWORD, "dwStippleWidth"), + (DWORD, "dwStippleHeight"), +]) + +D3DPMISCCAPS = Flags(DWORD, [ + "D3DPMISCCAPS_MASKPLANES", + "D3DPMISCCAPS_MASKZ", + "D3DPMISCCAPS_LINEPATTERNREP", + "D3DPMISCCAPS_CONFORMANT", + "D3DPMISCCAPS_CULLNONE", + "D3DPMISCCAPS_CULLCW", + "D3DPMISCCAPS_CULLCCW", +]) + +D3DXD3DPRASTERCAPSXX = Flags(DWORD, [ + "D3DPRASTERCAPS_DITHER", + "D3DPRASTERCAPS_ROP2", + "D3DPRASTERCAPS_XOR", + "D3DPRASTERCAPS_PAT", + "D3DPRASTERCAPS_ZTEST", + "D3DPRASTERCAPS_SUBPIXEL", + "D3DPRASTERCAPS_SUBPIXELX", + "D3DPRASTERCAPS_FOGVERTEX", + "D3DPRASTERCAPS_FOGTABLE", + "D3DPRASTERCAPS_STIPPLE", + "D3DPRASTERCAPS_ANTIALIASSORTDEPENDENT", + "D3DPRASTERCAPS_ANTIALIASSORTINDEPENDENT", + "D3DPRASTERCAPS_ANTIALIASEDGES", + "D3DPRASTERCAPS_MIPMAPLODBIAS", + "D3DPRASTERCAPS_ZBIAS", + "D3DPRASTERCAPS_ZBUFFERLESSHSR", + "D3DPRASTERCAPS_FOGRANGE", + "D3DPRASTERCAPS_ANISOTROPY", + "D3DPRASTERCAPS_WBUFFER", + "D3DPRASTERCAPS_TRANSLUCENTSORTINDEPENDENT", + "D3DPRASTERCAPS_WFOG", + "D3DPRASTERCAPS_ZFOG", +]) + +D3DPCMPCAPS = Flags(DWORD, [ + "D3DPCMPCAPS_NEVER", + "D3DPCMPCAPS_LESS", + "D3DPCMPCAPS_EQUAL", + "D3DPCMPCAPS_LESSEQUAL", + "D3DPCMPCAPS_GREATER", + "D3DPCMPCAPS_NOTEQUAL", + "D3DPCMPCAPS_GREATEREQUAL", + "D3DPCMPCAPS_ALWAYS", +]) + +D3DPBLENDCAPS = Flags(DWORD, [ + "D3DPBLENDCAPS_ZERO", + "D3DPBLENDCAPS_ONE", + "D3DPBLENDCAPS_SRCCOLOR", + "D3DPBLENDCAPS_INVSRCCOLOR", + "D3DPBLENDCAPS_SRCALPHA", + "D3DPBLENDCAPS_INVSRCALPHA", + "D3DPBLENDCAPS_DESTALPHA", + "D3DPBLENDCAPS_INVDESTALPHA", + "D3DPBLENDCAPS_DESTCOLOR", + "D3DPBLENDCAPS_INVDESTCOLOR", + "D3DPBLENDCAPS_SRCALPHASAT", + "D3DPBLENDCAPS_BOTHSRCALPHA", + "D3DPBLENDCAPS_BOTHINVSRCALPHA", +]) + +D3DPSHADECAPS = Flags(DWORD, [ + "D3DPSHADECAPS_COLORFLATMONO", + "D3DPSHADECAPS_COLORFLATRGB", + "D3DPSHADECAPS_COLORGOURAUDMONO", + "D3DPSHADECAPS_COLORGOURAUDRGB", + "D3DPSHADECAPS_COLORPHONGMONO", + "D3DPSHADECAPS_COLORPHONGRGB", + "D3DPSHADECAPS_SPECULARFLATMONO", + "D3DPSHADECAPS_SPECULARFLATRGB", + "D3DPSHADECAPS_SPECULARGOURAUDMONO", + "D3DPSHADECAPS_SPECULARGOURAUDRGB", + "D3DPSHADECAPS_SPECULARPHONGMONO", + "D3DPSHADECAPS_SPECULARPHONGRGB", + "D3DPSHADECAPS_ALPHAFLATBLEND", + "D3DPSHADECAPS_ALPHAFLATSTIPPLED", + "D3DPSHADECAPS_ALPHAGOURAUDBLEND", + "D3DPSHADECAPS_ALPHAGOURAUDSTIPPLED", + "D3DPSHADECAPS_ALPHAPHONGBLEND", + "D3DPSHADECAPS_ALPHAPHONGSTIPPLED", + "D3DPSHADECAPS_FOGFLAT", + "D3DPSHADECAPS_FOGGOURAUD", + "D3DPSHADECAPS_FOGPHONG", +]) + +D3DPTEXTURECAPS = Flags(DWORD, [ + "D3DPTEXTURECAPS_PERSPECTIVE", + "D3DPTEXTURECAPS_POW2", + "D3DPTEXTURECAPS_ALPHA", + "D3DPTEXTURECAPS_TRANSPARENCY", + "D3DPTEXTURECAPS_BORDER", + "D3DPTEXTURECAPS_SQUAREONLY", + "D3DPTEXTURECAPS_TEXREPEATNOTSCALEDBYSIZE", + "D3DPTEXTURECAPS_ALPHAPALETTE", + "D3DPTEXTURECAPS_NONPOW2CONDITIONAL", + "D3DPTEXTURECAPS_PROJECTED", + "D3DPTEXTURECAPS_CUBEMAP", + "D3DPTEXTURECAPS_COLORKEYBLEND", +]) + +D3DPTFILTERCAPS = Flags(DWORD, [ + "D3DPTFILTERCAPS_NEAREST", + "D3DPTFILTERCAPS_LINEAR", + "D3DPTFILTERCAPS_MIPNEAREST", + "D3DPTFILTERCAPS_MIPLINEAR", + "D3DPTFILTERCAPS_LINEARMIPNEAREST", + "D3DPTFILTERCAPS_LINEARMIPLINEAR", + "D3DPTFILTERCAPS_MINFPOINT", + "D3DPTFILTERCAPS_MINFLINEAR", + "D3DPTFILTERCAPS_MINFANISOTROPIC", + "D3DPTFILTERCAPS_MIPFPOINT", + "D3DPTFILTERCAPS_MIPFLINEAR", + "D3DPTFILTERCAPS_MAGFPOINT", + "D3DPTFILTERCAPS_MAGFLINEAR", + "D3DPTFILTERCAPS_MAGFANISOTROPIC", + "D3DPTFILTERCAPS_MAGFAFLATCUBIC", + "D3DPTFILTERCAPS_MAGFGAUSSIANCUBIC", +]) + +D3DPTBLENDCAPS = Flags(DWORD, [ + "D3DPTBLENDCAPS_DECAL", + "D3DPTBLENDCAPS_MODULATE", + "D3DPTBLENDCAPS_DECALALPHA", + "D3DPTBLENDCAPS_MODULATEALPHA", + "D3DPTBLENDCAPS_DECALMASK", + "D3DPTBLENDCAPS_MODULATEMASK", + "D3DPTBLENDCAPS_COPY", + "D3DPTBLENDCAPS_ADD", +]) + +D3DPTADDRESSCAPS = Flags(DWORD, [ + "D3DPTADDRESSCAPS_WRAP", + "D3DPTADDRESSCAPS_MIRROR", + "D3DPTADDRESSCAPS_CLAMP", + "D3DPTADDRESSCAPS_BORDER", + "D3DPTADDRESSCAPS_INDEPENDENTUV", +]) + +D3DSTENCILCAPS = Flags(DWORD, [ + "D3DSTENCILCAPS_KEEP", + "D3DSTENCILCAPS_ZERO", + "D3DSTENCILCAPS_REPLACE", + "D3DSTENCILCAPS_INCRSAT", + "D3DSTENCILCAPS_DECRSAT", + "D3DSTENCILCAPS_INVERT", + "D3DSTENCILCAPS_INCR", + "D3DSTENCILCAPS_DECR", +]) + +D3DTEXOPCAPS = Flags(DWORD, [ + "D3DTEXOPCAPS_DISABLE", + "D3DTEXOPCAPS_SELECTARG1", + "D3DTEXOPCAPS_SELECTARG2", + "D3DTEXOPCAPS_MODULATE", + "D3DTEXOPCAPS_MODULATE2X", + "D3DTEXOPCAPS_MODULATE4X", + "D3DTEXOPCAPS_ADD", + "D3DTEXOPCAPS_ADDSIGNED", + "D3DTEXOPCAPS_ADDSIGNED2X", + "D3DTEXOPCAPS_SUBTRACT", + "D3DTEXOPCAPS_ADDSMOOTH", + "D3DTEXOPCAPS_BLENDDIFFUSEALPHA", + "D3DTEXOPCAPS_BLENDTEXTUREALPHA", + "D3DTEXOPCAPS_BLENDFACTORALPHA", + "D3DTEXOPCAPS_BLENDTEXTUREALPHAPM", + "D3DTEXOPCAPS_BLENDCURRENTALPHA", + "D3DTEXOPCAPS_PREMODULATE", + "D3DTEXOPCAPS_MODULATEALPHA_ADDCOLOR", + "D3DTEXOPCAPS_MODULATECOLOR_ADDALPHA", + "D3DTEXOPCAPS_MODULATEINVALPHA_ADDCOLOR", + "D3DTEXOPCAPS_MODULATEINVCOLOR_ADDALPHA", + "D3DTEXOPCAPS_BUMPENVMAP", + "D3DTEXOPCAPS_BUMPENVMAPLUMINANCE", + "D3DTEXOPCAPS_DOTPRODUCT3", +]) + +D3DFVFCAPS = Flags(DWORD, [ + "D3DFVFCAPS_TEXCOORDCOUNTMASK", + "D3DFVFCAPS_DONOTSTRIPELEMENTS", +]) + +D3DDD = Flags(DWORD, [ + "D3DDD_COLORMODEL", + "D3DDD_DEVCAPS", + "D3DDD_TRANSFORMCAPS", + "D3DDD_LIGHTINGCAPS", + "D3DDD_BCLIPPING", + "D3DDD_LINECAPS", + "D3DDD_TRICAPS", + "D3DDD_DEVICERENDERBITDEPTH", + "D3DDD_DEVICEZBUFFERBITDEPTH", + "D3DDD_MAXBUFFERSIZE", + "D3DDD_MAXVERTEXCOUNT", +]) + +D3DDEVCAPS = Flags(DWORD, [ + "D3DDEVCAPS_FLOATTLVERTEX", + "D3DDEVCAPS_SORTINCREASINGZ", + "D3DDEVCAPS_SORTDECREASINGZ", + "D3DDEVCAPS_SORTEXACT", + "D3DDEVCAPS_EXECUTESYSTEMMEMORY", + "D3DDEVCAPS_EXECUTEVIDEOMEMORY", + "D3DDEVCAPS_TLVERTEXSYSTEMMEMORY", + "D3DDEVCAPS_TLVERTEXVIDEOMEMORY", + "D3DDEVCAPS_TEXTURESYSTEMMEMORY", + "D3DDEVCAPS_TEXTUREVIDEOMEMORY", + "D3DDEVCAPS_DRAWPRIMTLVERTEX", + "D3DDEVCAPS_CANRENDERAFTERFLIP", + "D3DDEVCAPS_TEXTURENONLOCALVIDMEM", + "D3DDEVCAPS_DRAWPRIMITIVES2", + "D3DDEVCAPS_SEPARATETEXTUREMEMORIES", + "D3DDEVCAPS_DRAWPRIMITIVES2EX", + "D3DDEVCAPS_HWTRANSFORMANDLIGHT", + "D3DDEVCAPS_CANBLTSYSTONONLOCAL", + "D3DDEVCAPS_HWRASTERIZATION", +]) + +D3DVTXPCAPS = Flags(DWORD, [ + "D3DVTXPCAPS_TEXGEN", + "D3DVTXPCAPS_MATERIALSOURCE7", + "D3DVTXPCAPS_VERTEXFOG", + "D3DVTXPCAPS_DIRECTIONALLIGHTS", + "D3DVTXPCAPS_POSITIONALLIGHTS", + "D3DVTXPCAPS_LOCALVIEWER", +]) + +D3DFDS = Flags(DWORD, [ + "D3DFDS_COLORMODEL", + "D3DFDS_GUID", + "D3DFDS_HARDWARE", + "D3DFDS_TRIANGLES", + "D3DFDS_LINES", + "D3DFDS_MISCCAPS", + "D3DFDS_RASTERCAPS", + "D3DFDS_ZCMPCAPS", + "D3DFDS_ALPHACMPCAPS", + "D3DFDS_SRCBLENDCAPS", + "D3DFDS_DSTBLENDCAPS", + "D3DFDS_SHADECAPS", + "D3DFDS_TEXTURECAPS", + "D3DFDS_TEXTUREFILTERCAPS", + "D3DFDS_TEXTUREBLENDCAPS", + "D3DFDS_TEXTUREADDRESSCAPS", +]) + +D3DFINDDEVICESEARCH = Struct("D3DFINDDEVICESEARCH", [ + (DWORD, "dwSize"), + (DWORD, "dwFlags"), + (BOOL, "bHardware"), + (D3DCOLORMODEL, "dcmColorModel"), + (GUID, "guid"), + (DWORD, "dwCaps"), + (D3DPRIMCAPS, "dpcPrimCaps"), +]) +LPD3DFINDDEVICESEARCH = Pointer(D3DFINDDEVICESEARCH) + +D3DEXECUTEBUFFERDESC = Struct("D3DEXECUTEBUFFERDESC", [ + (DWORD, "dwSize"), + (DWORD, "dwFlags"), + (DWORD, "dwCaps"), + (DWORD, "dwBufferSize"), + (LPVOID, "lpData"), +]) +LPD3DEXECUTEBUFFERDESC = Pointer(D3DEXECUTEBUFFERDESC) + +D3DDEB = Flags(DWORD, [ + "D3DDEB_BUFSIZE", + "D3DDEB_CAPS", + "D3DDEB_LPDATA", +]) + +D3DDEBCAPS = Flags(DWORD, [ + "D3DDEBCAPS_SYSTEMMEMORY", + "D3DDEBCAPS_VIDEOMEMORY", + "D3DDEBCAPS_MEM", +]) + +D3DDEVINFO_TEXTUREMANAGER = Struct("D3DDEVINFO_TEXTUREMANAGER", [ + (BOOL, "bThrashing"), + (DWORD, "dwApproxBytesDownloaded"), + (DWORD, "dwNumEvicts"), + (DWORD, "dwNumVidCreates"), + (DWORD, "dwNumTexturesUsed"), + (DWORD, "dwNumUsedTexInVid"), + (DWORD, "dwWorkingSet"), + (DWORD, "dwWorkingSetBytes"), + (DWORD, "dwTotalManaged"), + (DWORD, "dwTotalBytes"), + (DWORD, "dwLastPri"), +]) + +D3DDEVINFO_TEXTURING = Struct("D3DDEVINFO_TEXTURING", [ + (DWORD, "dwNumLoads"), + (DWORD, "dwApproxBytesLoaded"), + (DWORD, "dwNumPreLoads"), + (DWORD, "dwNumSet"), + (DWORD, "dwNumCreates"), + (DWORD, "dwNumDestroys"), + (DWORD, "dwNumSetPriorities"), + (DWORD, "dwNumSetLODs"), + (DWORD, "dwNumLocks"), + (DWORD, "dwNumGetDCs"), +]) + +D3DDEVICEDESC = Struct("D3DDEVICEDESC", [ + (DWORD, "dwSize"), + (DWORD, "dwFlags"), + (D3DCOLORMODEL, "dcmColorModel"), + (DWORD, "dwDevCaps"), + (D3DTRANSFORMCAPS, "dtcTransformCaps"), + (BOOL, "bClipping"), + (D3DLIGHTINGCAPS, "dlcLightingCaps"), + (D3DPRIMCAPS, "dpcLineCaps"), + (D3DPRIMCAPS, "dpcTriCaps"), + (DWORD, "dwDeviceRenderBitDepth"), + (DWORD, "dwDeviceZBufferBitDepth"), + (DWORD, "dwMaxBufferSize"), + (DWORD, "dwMaxVertexCount"), + (DWORD, "dwMinTextureWidth"), + (DWORD, "dwMinTextureHeight"), + (DWORD, "dwMaxTextureWidth"), + (DWORD, "dwMaxTextureHeight"), + (DWORD, "dwMinStippleWidth"), + (DWORD, "dwMaxStippleWidth"), + (DWORD, "dwMinStippleHeight"), + (DWORD, "dwMaxStippleHeight"), + (DWORD, "dwMaxTextureRepeat"), + (DWORD, "dwMaxTextureAspectRatio"), + (DWORD, "dwMaxAnisotropy"), + (D3DVALUE, "dvGuardBandLeft"), + (D3DVALUE, "dvGuardBandTop"), + (D3DVALUE, "dvGuardBandRight"), + (D3DVALUE, "dvGuardBandBottom"), + (D3DVALUE, "dvExtentsAdjust"), + (DWORD, "dwStencilCaps"), + (DWORD, "dwFVFCaps"), + (DWORD, "dwTextureOpCaps"), + (WORD, "wMaxTextureBlendStages"), + (WORD, "wMaxSimultaneousTextures"), +]) +LPD3DDEVICEDESC = Pointer(D3DDEVICEDESC) + +D3DDEVICEDESC7 = Struct("D3DDEVICEDESC7", [ + (DWORD, "dwDevCaps"), + (D3DPRIMCAPS, "dpcLineCaps"), + (D3DPRIMCAPS, "dpcTriCaps"), + (DWORD, "dwDeviceRenderBitDepth"), + (DWORD, "dwDeviceZBufferBitDepth"), + (DWORD, "dwMinTextureWidth"), + (DWORD, "dwMinTextureHeight"), + (DWORD, "dwMaxTextureWidth"), + (DWORD, "dwMaxTextureHeight"), + (DWORD, "dwMaxTextureRepeat"), + (DWORD, "dwMaxTextureAspectRatio"), + (DWORD, "dwMaxAnisotropy"), + (D3DVALUE, "dvGuardBandLeft"), + (D3DVALUE, "dvGuardBandTop"), + (D3DVALUE, "dvGuardBandRight"), + (D3DVALUE, "dvGuardBandBottom"), + (D3DVALUE, "dvExtentsAdjust"), + (DWORD, "dwStencilCaps"), + (DWORD, "dwFVFCaps"), + (DWORD, "dwTextureOpCaps"), + (WORD, "wMaxTextureBlendStages"), + (WORD, "wMaxSimultaneousTextures"), + (DWORD, "dwMaxActiveLights"), + (D3DVALUE, "dvMaxVertexW"), + (GUID, "deviceGUID"), + (WORD, "wMaxUserClipPlanes"), + (WORD, "wMaxVertexBlendMatrices"), + (DWORD, "dwVertexProcessingCaps"), + (DWORD, "dwReserved1"), + (DWORD, "dwReserved2"), + (DWORD, "dwReserved3"), + (DWORD, "dwReserved4"), +]) +LPD3DDEVICEDESC7 = Pointer(D3DDEVICEDESC7) + +D3DFINDDEVICERESULT = Struct("D3DFINDDEVICERESULT", [ + (DWORD, "dwSize"), + (GUID, "guid"), + (D3DDEVICEDESC, "ddHwDesc"), + (D3DDEVICEDESC, "ddSwDesc"), +]) +LPD3DFINDDEVICERESULT = Pointer(D3DFINDDEVICERESULT) + +LPD3DENUMDEVICESCALLBACK = Function(HRESULT, "LPD3DENUMDEVICESCALLBACK", [(Pointer(GUID), "lpGuid"), (LPSTR, "lpDeviceDescription"), (LPSTR, "lpDeviceName"), LPD3DDEVICEDESC, LPD3DDEVICEDESC, LPVOID]) +LPD3DENUMDEVICESCALLBACK7 = Function(HRESULT, "LPD3DENUMDEVICESCALLBACK7", [(LPSTR, "lpDeviceDescription"), (LPSTR, "lpDeviceName"), LPD3DDEVICEDESC7, LPVOID]) + diff --git a/d3dtypes.py b/d3dtypes.py new file mode 100755 index 0000000..97cbde2 --- /dev/null +++ b/d3dtypes.py @@ -0,0 +1,1047 @@ +############################################################################# +# +# Copyright 2008 Tungsten Graphics, Inc. +# +# This program is free software: you can redistribute it and/or modify it +# under the terms of the GNU Lesser General Public License as published +# by the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with this program. If not, see . +# +############################################################################# + +"""d3dtypes.h""" + +from windows import * +from ddraw import * + +D3DVALUE = Float +LPD3DVALUE = Pointer(Float) +D3DFIXED = LONG + +LPD3DVALIDATECALLBACK = LPVOID +LPD3DENUMTEXTUREFORMATSCALLBACK = LPVOID +LPD3DENUMPIXELFORMATSCALLBACK = LPVOID + +D3DCOLOR = DWORD +LPD3DCOLOR = Pointer(D3DCOLOR) + +D3DMATERIALHANDLE = DWORD +LPD3DMATERIALHANDLE = Pointer(D3DMATERIALHANDLE) + +D3DTEXTUREHANDLE = DWORD +LPD3DTEXTUREHANDLE = Pointer(D3DTEXTUREHANDLE) + +D3DMATRIXHANDLE = DWORD +LPD3DMATRIXHANDLE = Pointer(D3DMATRIXHANDLE) + +D3DCOLORVALUE = Struct("D3DCOLORVALUE", [ + (D3DVALUE, "r"), + (D3DVALUE, "g"), + (D3DVALUE, "b"), + (D3DVALUE, "a"), +]) +LPD3DCOLORVALUE = Pointer(D3DCOLORVALUE) + +D3DRECT = Struct("D3DRECT", [ + (LONG, "x1"), + (LONG, "y1"), + (LONG, "x2"), + (LONG, "y2"), +]) +LPD3DRECT = Pointer(D3DRECT) + +D3DVECTOR = Struct("D3DVECTOR", [ + (D3DVALUE, "x"), + (D3DVALUE, "y"), + (D3DVALUE, "z"), +]) +LPD3DVECTOR = Pointer(D3DVECTOR) + +D3DHVERTEX = Struct("D3DHVERTEX", [ + (DWORD, "dwFlags"), + (D3DVALUE, "hx"), + (D3DVALUE, "hy"), + (D3DVALUE, "hz"), +]) +LPD3DHVERTEX = Pointer(D3DHVERTEX) + +D3DTLVERTEX = Struct("D3DTLVERTEX", [ + (D3DVALUE, "sx"), + (D3DVALUE, "sy"), + (D3DVALUE, "sz"), + (D3DVALUE, "rhw"), + (D3DCOLOR, "color"), + (D3DCOLOR, "specular"), + (D3DVALUE, "tu"), + (D3DVALUE, "tv"), +]) +LPD3DTLVERTEX = Pointer(D3DTLVERTEX) + +D3DLVERTEX = Struct("D3DLVERTEX", [ + (D3DVALUE, "x"), + (D3DVALUE, "y"), + (D3DVALUE, "z"), + (DWORD, "dwReserved"), + (D3DCOLOR, "color"), + (D3DCOLOR, "specular"), + (D3DVALUE, "tu"), + (D3DVALUE, "tv"), +]) +LPD3DLVERTEX = Pointer(D3DLVERTEX) + +D3DVERTEX = Struct("D3DVERTEX", [ + (D3DVALUE, "x"), + (D3DVALUE, "y"), + (D3DVALUE, "z"), + (D3DVALUE, "nx"), + (D3DVALUE, "ny"), + (D3DVALUE, "nz"), + (D3DVALUE, "tu"), + (D3DVALUE, "tv"), +]) +LPD3DVERTEX = Pointer(D3DVERTEX) + +D3DMATRIX = Struct("D3DMATRIX", [ + (D3DVALUE, "m[4][4]"), +]) +LPD3DMATRIX = Pointer(D3DMATRIX) + +D3DVIEWPORT = Struct("D3DVIEWPORT", [ + (DWORD, "dwSize"), + (DWORD, "dwX"), + (DWORD, "dwY"), + (DWORD, "dwWidth"), + (DWORD, "dwHeight"), + (D3DVALUE, "dvScaleX"), + (D3DVALUE, "dvScaleY"), + (D3DVALUE, "dvMaxX"), + (D3DVALUE, "dvMaxY"), + (D3DVALUE, "dvMinZ"), + (D3DVALUE, "dvMaxZ"), +]) +LPD3DVIEWPORT = Pointer(D3DVIEWPORT) + +D3DVIEWPORT2 = Struct("D3DVIEWPORT2", [ + (DWORD, "dwSize"), + (DWORD, "dwX"), + (DWORD, "dwY"), + (DWORD, "dwWidth"), + (DWORD, "dwHeight"), + (D3DVALUE, "dvClipX"), + (D3DVALUE, "dvClipY"), + (D3DVALUE, "dvClipWidth"), + (D3DVALUE, "dvClipHeight"), + (D3DVALUE, "dvMinZ"), + (D3DVALUE, "dvMaxZ"), +]) +LPD3DVIEWPORT2 = Pointer(D3DVIEWPORT2) + +D3DVIEWPORT7 = Struct("D3DVIEWPORT7", [ + (DWORD, "dwX"), + (DWORD, "dwY"), + (DWORD, "dwWidth"), + (DWORD, "dwHeight"), + (D3DVALUE, "dvMinZ"), + (D3DVALUE, "dvMaxZ"), +]) +LPD3DVIEWPORT7 = Pointer(D3DVIEWPORT7) + +D3DCLIP = Flags(DWORD, [ + "D3DCLIP_LEFT", + "D3DCLIP_RIGHT", + "D3DCLIP_TOP", + "D3DCLIP_BOTTOM", + "D3DCLIP_FRONT", + "D3DCLIP_BACK", + "D3DCLIP_GEN0", + "D3DCLIP_GEN1", + "D3DCLIP_GEN2", + "D3DCLIP_GEN3", + "D3DCLIP_GEN4", + "D3DCLIP_GEN5", +]) + +D3DSTATUS = Flags(DWORD, [ + "D3DSTATUS_DEFAULT", + "D3DSTATUS_CLIPUNIONALL", + "D3DSTATUS_CLIPUNIONLEFT", + "D3DSTATUS_CLIPUNIONRIGHT", + "D3DSTATUS_CLIPUNIONTOP", + "D3DSTATUS_CLIPUNIONBOTTOM", + "D3DSTATUS_CLIPUNIONFRONT", + "D3DSTATUS_CLIPUNIONBACK", + "D3DSTATUS_CLIPUNIONGEN0", + "D3DSTATUS_CLIPUNIONGEN1", + "D3DSTATUS_CLIPUNIONGEN2", + "D3DSTATUS_CLIPUNIONGEN3", + "D3DSTATUS_CLIPUNIONGEN4", + "D3DSTATUS_CLIPUNIONGEN5", + "D3DSTATUS_CLIPINTERSECTIONALL", + "D3DSTATUS_CLIPINTERSECTIONLEFT", + "D3DSTATUS_CLIPINTERSECTIONRIGHT", + "D3DSTATUS_CLIPINTERSECTIONTOP", + "D3DSTATUS_CLIPINTERSECTIONBOTTOM", + "D3DSTATUS_CLIPINTERSECTIONFRONT", + "D3DSTATUS_CLIPINTERSECTIONBACK", + "D3DSTATUS_CLIPINTERSECTIONGEN0", + "D3DSTATUS_CLIPINTERSECTIONGEN1", + "D3DSTATUS_CLIPINTERSECTIONGEN2", + "D3DSTATUS_CLIPINTERSECTIONGEN3", + "D3DSTATUS_CLIPINTERSECTIONGEN4", + "D3DSTATUS_CLIPINTERSECTIONGEN5", + "D3DSTATUS_ZNOTVISIBLE", +]) + +D3DTRANSFORM = Flags(DWORD, [ + "D3DTRANSFORM_CLIPPED", + "D3DTRANSFORM_UNCLIPPED", +]) + +D3DTRANSFORMDATA = Struct("D3DTRANSFORMDATA", [ + (DWORD, "dwSize"), + (LPVOID, "lpIn"), + (DWORD, "dwInSize"), + (LPVOID, "lpOut"), + (DWORD, "dwOutSize"), + (LPD3DHVERTEX, "lpHOut"), + (DWORD, "dwClip"), + (DWORD, "dwClipIntersection"), + (DWORD, "dwClipUnion"), + (D3DRECT, "drExtent"), +]) +LPD3DTRANSFORMDATA = Pointer(D3DTRANSFORMDATA) + +D3DLIGHTINGELEMENT = Struct("D3DLIGHTINGELEMENT", [ + (D3DVECTOR, "dvPosition"), + (D3DVECTOR, "dvNormal"), +]) +LPD3DLIGHTINGELEMENT = Pointer(D3DLIGHTINGELEMENT) + +D3DMATERIAL = Struct("D3DMATERIAL", [ + (DWORD, "dwSize"), + (D3DCOLORVALUE, "diffuse"), + (D3DCOLORVALUE, "ambient"), + (D3DCOLORVALUE, "specular"), + (D3DCOLORVALUE, "emissive"), + (D3DVALUE, "power"), + (D3DTEXTUREHANDLE, "hTexture"), + (DWORD, "dwRampSize"), +]) +LPD3DMATERIAL = Pointer(D3DMATERIAL) + +D3DMATERIAL7 = Struct("D3DMATERIAL7", [ + (D3DCOLORVALUE, "diffuse"), + (D3DCOLORVALUE, "ambient"), + (D3DCOLORVALUE, "specular"), + (D3DCOLORVALUE, "emissive"), + (D3DVALUE, "power"), +]) +LPD3DMATERIAL7 = Pointer(D3DMATERIAL7) + +D3DLIGHTTYPE = Enum("D3DLIGHTTYPE", [ + "D3DLIGHT_POINT", + "D3DLIGHT_SPOT", + "D3DLIGHT_DIRECTIONAL", + "D3DLIGHT_PARALLELPOINT", + "D3DLIGHT_GLSPOT", + "D3DLIGHT_FORCE_DWORD", +]) + +D3DLIGHT = Struct("D3DLIGHT", [ + (DWORD, "dwSize"), + (D3DLIGHTTYPE, "dltType"), + (D3DCOLORVALUE, "dcvColor"), + (D3DVECTOR, "dvPosition"), + (D3DVECTOR, "dvDirection"), + (D3DVALUE, "dvRange"), + (D3DVALUE, "dvFalloff"), + (D3DVALUE, "dvAttenuation0"), + (D3DVALUE, "dvAttenuation1"), + (D3DVALUE, "dvAttenuation2"), + (D3DVALUE, "dvTheta"), + (D3DVALUE, "dvPhi"), +]) +LPD3DLIGHT = Pointer(D3DLIGHT) + +D3DLIGHT7 = Struct("D3DLIGHT7", [ + (D3DLIGHTTYPE, "dltType"), + (D3DCOLORVALUE, "dcvDiffuse"), + (D3DCOLORVALUE, "dcvSpecular"), + (D3DCOLORVALUE, "dcvAmbient"), + (D3DVECTOR, "dvPosition"), + (D3DVECTOR, "dvDirection"), + (D3DVALUE, "dvRange"), + (D3DVALUE, "dvFalloff"), + (D3DVALUE, "dvAttenuation0"), + (D3DVALUE, "dvAttenuation1"), + (D3DVALUE, "dvAttenuation2"), + (D3DVALUE, "dvTheta"), + (D3DVALUE, "dvPhi"), +]) +LPD3DLIGHT7 = Pointer(D3DLIGHT7) + +D3DLIGHTFLAGS = Flags(DWORD, [ + "D3DLIGHT_ACTIVE", + "D3DLIGHT_NO_SPECULAR", + "D3DLIGHT_ALL", +]) + +D3DLIGHT2 = Struct("D3DLIGHT2", [ + (DWORD, "dwSize"), + (D3DLIGHTTYPE, "dltType"), + (D3DCOLORVALUE, "dcvColor"), + (D3DVECTOR, "dvPosition"), + (D3DVECTOR, "dvDirection"), + (D3DVALUE, "dvRange"), + (D3DVALUE, "dvFalloff"), + (D3DVALUE, "dvAttenuation0"), + (D3DVALUE, "dvAttenuation1"), + (D3DVALUE, "dvAttenuation2"), + (D3DVALUE, "dvTheta"), + (D3DVALUE, "dvPhi"), + (DWORD, "dwFlags"), +]) +LPD3DLIGHT2 = Pointer(D3DLIGHT2) + +D3DLIGHTDATA = Struct("D3DLIGHTDATA", [ + (DWORD, "dwSize"), + (LPD3DLIGHTINGELEMENT, "lpIn"), + (DWORD, "dwInSize"), + (LPD3DTLVERTEX, "lpOut"), + (DWORD, "dwOutSize"), +]) +LPD3DLIGHTDATA = Pointer(D3DLIGHTDATA) + +D3DCOLOR = Flags(DWORD, [ + "D3DCOLOR_MONO", + "D3DCOLOR_RGB", +]) + +D3DCOLORMODEL = DWORD + +D3DCLEAR = Flags(DWORD, [ + "D3DCLEAR_TARGET", + "D3DCLEAR_ZBUFFER", + "D3DCLEAR_STENCIL", +]) + +D3DOPCODE = Enum("D3DOPCODE", [ + "D3DOP_POINT", + "D3DOP_LINE", + "D3DOP_TRIANGLE", + "D3DOP_MATRIXLOAD", + "D3DOP_MATRIXMULTIPLY", + "D3DOP_STATETRANSFORM", + "D3DOP_STATELIGHT", + "D3DOP_STATERENDER", + "D3DOP_PROCESSVERTICES", + "D3DOP_TEXTURELOAD", + "D3DOP_EXIT", + "D3DOP_BRANCHFORWARD", + "D3DOP_SPAN", + "D3DOP_SETSTATUS", + "D3DOP_FORCE_DWORD", +]) + +D3DINSTRUCTION = Struct("D3DINSTRUCTION", [ + (BYTE, "bOpcode"), + (BYTE, "bSize"), + (WORD, "wCount"), +]) + +D3DTEXTURELOAD = Struct("D3DTEXTURELOAD", [ + (D3DTEXTUREHANDLE, "hDestTexture"), + (D3DTEXTUREHANDLE, "hSrcTexture"), +]) + +D3DPICKRECORD = Struct("D3DPICKRECORD", [ + (BYTE, "bOpcode"), + (BYTE, "bPad"), + (DWORD, "dwOffset"), + (D3DVALUE, "dvZ"), +]) +LPD3DPICKRECORD = Pointer(D3DPICKRECORD) + +D3DSHADEMODE = Enum("D3DSHADEMODE", [ + "D3DSHADE_FLAT", + "D3DSHADE_GOURAUD", + "D3DSHADE_PHONG", + "D3DSHADE_FORCE_DWORD", +]) + +D3DFILLMODE = Enum("D3DFILLMODE", [ + "D3DFILL_POINT", + "D3DFILL_WIREFRAME", + "D3DFILL_SOLID", + "D3DFILL_FORCE_DWORD", +]) + +D3DLINEPATTERN = Struct("D3DLINEPATTERN", [ + (WORD, "wRepeatFactor"), + (WORD, "wLinePattern"), +]) + +D3DTEXTUREFILTER = Enum("D3DTEXTUREFILTER", [ + "D3DFILTER_NEAREST", + "D3DFILTER_LINEAR", + "D3DFILTER_MIPNEAREST", + "D3DFILTER_MIPLINEAR", + "D3DFILTER_LINEARMIPNEAREST", + "D3DFILTER_LINEARMIPLINEAR", + "D3DFILTER_FORCE_DWORD", +]) + +D3DBLEND = Enum("D3DBLEND", [ + "D3DBLEND_ZERO", + "D3DBLEND_ONE", + "D3DBLEND_SRCCOLOR", + "D3DBLEND_INVSRCCOLOR", + "D3DBLEND_SRCALPHA", + "D3DBLEND_INVSRCALPHA", + "D3DBLEND_DESTALPHA", + "D3DBLEND_INVDESTALPHA", + "D3DBLEND_DESTCOLOR", + "D3DBLEND_INVDESTCOLOR", + "D3DBLEND_SRCALPHASAT", + "D3DBLEND_BOTHSRCALPHA", + "D3DBLEND_BOTHINVSRCALPHA", + "D3DBLEND_FORCE_DWORD", +]) + +D3DTEXTUREBLEND = Enum("D3DTEXTUREBLEND", [ + "D3DTBLEND_DECAL", + "D3DTBLEND_MODULATE", + "D3DTBLEND_DECALALPHA", + "D3DTBLEND_MODULATEALPHA", + "D3DTBLEND_DECALMASK", + "D3DTBLEND_MODULATEMASK", + "D3DTBLEND_COPY", + "D3DTBLEND_ADD", + "D3DTBLEND_FORCE_DWORD", +]) + +D3DTEXTUREADDRESS = Enum("D3DTEXTUREADDRESS", [ + "D3DTADDRESS_WRAP", + "D3DTADDRESS_MIRROR", + "D3DTADDRESS_CLAMP", + "D3DTADDRESS_BORDER", + "D3DTADDRESS_FORCE_DWORD", +]) + +D3DCULL = Enum("D3DCULL", [ + "D3DCULL_NONE", + "D3DCULL_CW", + "D3DCULL_CCW", + "D3DCULL_FORCE_DWORD", +]) + +D3DCMPFUNC = Enum("D3DCMPFUNC", [ + "D3DCMP_NEVER", + "D3DCMP_LESS", + "D3DCMP_EQUAL", + "D3DCMP_LESSEQUAL", + "D3DCMP_GREATER", + "D3DCMP_NOTEQUAL", + "D3DCMP_GREATEREQUAL", + "D3DCMP_ALWAYS", + "D3DCMP_FORCE_DWORD", +]) + +D3DSTENCILOP = Enum("D3DSTENCILOP", [ + "D3DSTENCILOP_KEEP", + "D3DSTENCILOP_ZERO", + "D3DSTENCILOP_REPLACE", + "D3DSTENCILOP_INCRSAT", + "D3DSTENCILOP_DECRSAT", + "D3DSTENCILOP_INVERT", + "D3DSTENCILOP_INCR", + "D3DSTENCILOP_DECR", + "D3DSTENCILOP_FORCE_DWORD", +]) + +D3DFOGMODE = Enum("D3DFOGMODE", [ + "D3DFOG_NONE", + "D3DFOG_EXP", + "D3DFOG_EXP2", + "D3DFOG_LINEAR", + "D3DFOG_FORCE_DWORD", +]) + +D3DZBUFFERTYPE = Enum("D3DZBUFFERTYPE", [ + "D3DZB_FALSE", + "D3DZB_TRUE", + "D3DZB_USEW", + "D3DZB_FORCE_DWORD", +]) + +D3DANTIALIASMODE = Enum("D3DANTIALIASMODE", [ + "D3DANTIALIAS_NONE", + "D3DANTIALIAS_SORTDEPENDENT", + "D3DANTIALIAS_SORTINDEPENDENT", + "D3DANTIALIAS_FORCE_DWORD", +]) + +D3DVERTEXTYPE = Enum("D3DVERTEXTYPE", [ + "D3DVT_VERTEX", + "D3DVT_LVERTEX", + "D3DVT_TLVERTEX", + "D3DVT_FORCE_DWORD", +]) + +D3DPRIMITIVETYPE = Enum("D3DPRIMITIVETYPE", [ + "D3DPT_POINTLIST", + "D3DPT_LINELIST", + "D3DPT_LINESTRIP", + "D3DPT_TRIANGLELIST", + "D3DPT_TRIANGLESTRIP", + "D3DPT_TRIANGLEFAN", + "D3DPT_FORCE_DWORD", +]) + +D3DTRANSFORMSTATETYPE = Enum("D3DTRANSFORMSTATETYPE", [ + "D3DTRANSFORMSTATE_WORLD", + "D3DTRANSFORMSTATE_VIEW", + "D3DTRANSFORMSTATE_PROJECTION", + "D3DTRANSFORMSTATE_WORLD1", + "D3DTRANSFORMSTATE_WORLD2", + "D3DTRANSFORMSTATE_WORLD3", + "D3DTRANSFORMSTATE_TEXTURE0", + "D3DTRANSFORMSTATE_TEXTURE1", + "D3DTRANSFORMSTATE_TEXTURE2", + "D3DTRANSFORMSTATE_TEXTURE3", + "D3DTRANSFORMSTATE_TEXTURE4", + "D3DTRANSFORMSTATE_TEXTURE5", + "D3DTRANSFORMSTATE_TEXTURE6", + "D3DTRANSFORMSTATE_TEXTURE7", + "D3DTRANSFORMSTATE_FORCE_DWORD", +]) + +D3DLIGHTSTATETYPE = Enum("D3DLIGHTSTATETYPE", [ + "D3DLIGHTSTATE_MATERIAL", + "D3DLIGHTSTATE_AMBIENT", + "D3DLIGHTSTATE_COLORMODEL", + "D3DLIGHTSTATE_FOGMODE", + "D3DLIGHTSTATE_FOGSTART", + "D3DLIGHTSTATE_FOGEND", + "D3DLIGHTSTATE_FOGDENSITY", + "D3DLIGHTSTATE_COLORVERTEX", + "D3DLIGHTSTATE_FORCE_DWORD", +]) + +D3DRENDERSTATETYPE = Enum("D3DRENDERSTATETYPE", [ + "D3DRENDERSTATE_ANTIALIAS", + "D3DRENDERSTATE_TEXTUREPERSPECTIVE", + "D3DRENDERSTATE_ZENABLE", + "D3DRENDERSTATE_FILLMODE", + "D3DRENDERSTATE_SHADEMODE", + "D3DRENDERSTATE_LINEPATTERN", + "D3DRENDERSTATE_ZWRITEENABLE", + "D3DRENDERSTATE_ALPHATESTENABLE", + "D3DRENDERSTATE_LASTPIXEL", + "D3DRENDERSTATE_SRCBLEND", + "D3DRENDERSTATE_DESTBLEND", + "D3DRENDERSTATE_CULLMODE", + "D3DRENDERSTATE_ZFUNC", + "D3DRENDERSTATE_ALPHAREF", + "D3DRENDERSTATE_ALPHAFUNC", + "D3DRENDERSTATE_DITHERENABLE", + "D3DRENDERSTATE_ALPHABLENDENABLE", + "D3DRENDERSTATE_FOGENABLE", + "D3DRENDERSTATE_SPECULARENABLE", + "D3DRENDERSTATE_ZVISIBLE", + "D3DRENDERSTATE_STIPPLEDALPHA", + "D3DRENDERSTATE_FOGCOLOR", + "D3DRENDERSTATE_FOGTABLEMODE", + "D3DRENDERSTATE_FOGSTART", + "D3DRENDERSTATE_FOGEND", + "D3DRENDERSTATE_FOGDENSITY", + "D3DRENDERSTATE_EDGEANTIALIAS", + "D3DRENDERSTATE_COLORKEYENABLE", + "D3DRENDERSTATE_ZBIAS", + "D3DRENDERSTATE_RANGEFOGENABLE", + "D3DRENDERSTATE_STENCILENABLE", + "D3DRENDERSTATE_STENCILFAIL", + "D3DRENDERSTATE_STENCILZFAIL", + "D3DRENDERSTATE_STENCILPASS", + "D3DRENDERSTATE_STENCILFUNC", + "D3DRENDERSTATE_STENCILREF", + "D3DRENDERSTATE_STENCILMASK", + "D3DRENDERSTATE_STENCILWRITEMASK", + "D3DRENDERSTATE_TEXTUREFACTOR", + "D3DRENDERSTATE_WRAP0", + "D3DRENDERSTATE_WRAP1", + "D3DRENDERSTATE_WRAP2", + "D3DRENDERSTATE_WRAP3", + "D3DRENDERSTATE_WRAP4", + "D3DRENDERSTATE_WRAP5", + "D3DRENDERSTATE_WRAP6", + "D3DRENDERSTATE_WRAP7", + "D3DRENDERSTATE_CLIPPING", + "D3DRENDERSTATE_LIGHTING", + "D3DRENDERSTATE_EXTENTS", + "D3DRENDERSTATE_AMBIENT", + "D3DRENDERSTATE_FOGVERTEXMODE", + "D3DRENDERSTATE_COLORVERTEX", + "D3DRENDERSTATE_LOCALVIEWER", + "D3DRENDERSTATE_NORMALIZENORMALS", + "D3DRENDERSTATE_COLORKEYBLENDENABLE", + "D3DRENDERSTATE_DIFFUSEMATERIALSOURCE", + "D3DRENDERSTATE_SPECULARMATERIALSOURCE", + "D3DRENDERSTATE_AMBIENTMATERIALSOURCE", + "D3DRENDERSTATE_EMISSIVEMATERIALSOURCE", + "D3DRENDERSTATE_VERTEXBLEND", + "D3DRENDERSTATE_CLIPPLANEENABLE", + "D3DRENDERSTATE_TEXTUREHANDLE", + "D3DRENDERSTATE_TEXTUREADDRESS", + "D3DRENDERSTATE_WRAPU", + "D3DRENDERSTATE_WRAPV", + "D3DRENDERSTATE_MONOENABLE", + "D3DRENDERSTATE_ROP2", + "D3DRENDERSTATE_PLANEMASK", + "D3DRENDERSTATE_TEXTUREMAG", + "D3DRENDERSTATE_TEXTUREMIN", + "D3DRENDERSTATE_TEXTUREMAPBLEND", + "D3DRENDERSTATE_SUBPIXEL", + "D3DRENDERSTATE_SUBPIXELX", + "D3DRENDERSTATE_STIPPLEENABLE", + "D3DRENDERSTATE_BORDERCOLOR", + "D3DRENDERSTATE_TEXTUREADDRESSU", + "D3DRENDERSTATE_TEXTUREADDRESSV", + "D3DRENDERSTATE_MIPMAPLODBIAS", + "D3DRENDERSTATE_ANISOTROPY", + "D3DRENDERSTATE_FLUSHBATCH", + "D3DRENDERSTATE_TRANSLUCENTSORTINDEPENDENT", + "D3DRENDERSTATE_STIPPLEPATTERN00", + "D3DRENDERSTATE_STIPPLEPATTERN01", + "D3DRENDERSTATE_STIPPLEPATTERN02", + "D3DRENDERSTATE_STIPPLEPATTERN03", + "D3DRENDERSTATE_STIPPLEPATTERN04", + "D3DRENDERSTATE_STIPPLEPATTERN05", + "D3DRENDERSTATE_STIPPLEPATTERN06", + "D3DRENDERSTATE_STIPPLEPATTERN07", + "D3DRENDERSTATE_STIPPLEPATTERN08", + "D3DRENDERSTATE_STIPPLEPATTERN09", + "D3DRENDERSTATE_STIPPLEPATTERN10", + "D3DRENDERSTATE_STIPPLEPATTERN11", + "D3DRENDERSTATE_STIPPLEPATTERN12", + "D3DRENDERSTATE_STIPPLEPATTERN13", + "D3DRENDERSTATE_STIPPLEPATTERN14", + "D3DRENDERSTATE_STIPPLEPATTERN15", + "D3DRENDERSTATE_STIPPLEPATTERN16", + "D3DRENDERSTATE_STIPPLEPATTERN17", + "D3DRENDERSTATE_STIPPLEPATTERN18", + "D3DRENDERSTATE_STIPPLEPATTERN19", + "D3DRENDERSTATE_STIPPLEPATTERN20", + "D3DRENDERSTATE_STIPPLEPATTERN21", + "D3DRENDERSTATE_STIPPLEPATTERN22", + "D3DRENDERSTATE_STIPPLEPATTERN23", + "D3DRENDERSTATE_STIPPLEPATTERN24", + "D3DRENDERSTATE_STIPPLEPATTERN25", + "D3DRENDERSTATE_STIPPLEPATTERN26", + "D3DRENDERSTATE_STIPPLEPATTERN27", + "D3DRENDERSTATE_STIPPLEPATTERN28", + "D3DRENDERSTATE_STIPPLEPATTERN29", + "D3DRENDERSTATE_STIPPLEPATTERN30", + "D3DRENDERSTATE_STIPPLEPATTERN31", + "D3DRENDERSTATE_FOGTABLESTART", + "D3DRENDERSTATE_FOGTABLEEND", + "D3DRENDERSTATE_FOGTABLEDENSITY", +]) + +D3DMATERIALCOLORSOURCE = Enum("D3DMATERIALCOLORSOURCE", [ + "D3DMCS_MATERIAL", + "D3DMCS_COLOR1", + "D3DMCS_COLOR2", +]) + +D3DWRAP = Flags(DWORD, [ + "D3DWRAP_U", + "D3DWRAP_V", + "D3DWRAPCOORD_0", + "D3DWRAPCOORD_1", + "D3DWRAPCOORD_2", + "D3DWRAPCOORD_3", +]) + +D3DSTATE = Struct("D3DSTATE", [ + (D3DTRANSFORMSTATETYPE, "dtstTransformStateType"), + (D3DLIGHTSTATETYPE, "dlstLightStateType"), + (D3DRENDERSTATETYPE, "drstRenderStateType"), + (DWORD, "dwArg[1]"), + (D3DVALUE, "dvArg[1]"), +]) + +D3DMATRIXLOAD = Struct("D3DMATRIXLOAD", [ + (D3DMATRIXHANDLE, "hDestMatrix"), + (D3DMATRIXHANDLE, "hSrcMatrix"), +]) + +D3DMATRIXMULTIPLY = Struct("D3DMATRIXMULTIPLY", [ + (D3DMATRIXHANDLE, "hDestMatrix"), + (D3DMATRIXHANDLE, "hSrcMatrix1"), + (D3DMATRIXHANDLE, "hSrcMatrix2"), +]) + +D3DPROCESSVERTICES = Struct("D3DPROCESSVERTICES", [ + (DWORD, "dwFlags"), + (WORD, "wStart"), + (WORD, "wDest"), + (DWORD, "dwCount"), + (DWORD, "dwReserved"), +]) + +D3DPROCESSVERTICES = Flags(DWORD, [ + "D3DPROCESSVERTICES_TRANSFORMLIGHT", + "D3DPROCESSVERTICES_TRANSFORM", + "D3DPROCESSVERTICES_COPY", + "D3DPROCESSVERTICES_OPMASK", + "D3DPROCESSVERTICES_UPDATEEXTENTS", + "D3DPROCESSVERTICES_NOCOLOR", +]) + +D3DTEXTURESTAGESTATETYPE = Enum("D3DTEXTURESTAGESTATETYPE", [ + "D3DTSS_COLOROP", + "D3DTSS_COLORARG1", + "D3DTSS_COLORARG2", + "D3DTSS_ALPHAOP", + "D3DTSS_ALPHAARG1", + "D3DTSS_ALPHAARG2", + "D3DTSS_BUMPENVMAT00", + "D3DTSS_BUMPENVMAT01", + "D3DTSS_BUMPENVMAT10", + "D3DTSS_BUMPENVMAT11", + "D3DTSS_TEXCOORDINDEX", + "D3DTSS_ADDRESS", + "D3DTSS_ADDRESSU", + "D3DTSS_ADDRESSV", + "D3DTSS_BORDERCOLOR", + "D3DTSS_MAGFILTER", + "D3DTSS_MINFILTER", + "D3DTSS_MIPFILTER", + "D3DTSS_MIPMAPLODBIAS", + "D3DTSS_MAXMIPLEVEL", + "D3DTSS_MAXANISOTROPY", + "D3DTSS_BUMPENVLSCALE", + "D3DTSS_BUMPENVLOFFSET", + "D3DTSS_TEXTURETRANSFORMFLAGS", + "D3DTSS_FORCE_DWORD", +]) + +D3DTSS_TCI = Flags(DWORD, [ + "D3DTSS_TCI_PASSTHRU", + "D3DTSS_TCI_CAMERASPACENORMAL", + "D3DTSS_TCI_CAMERASPACEPOSITION", + "D3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR", +]) + +D3DTEXTUREOP = Enum("D3DTEXTUREOP", [ + "D3DTOP_DISABLE", + "D3DTOP_SELECTARG1", + "D3DTOP_SELECTARG2", + "D3DTOP_MODULATE", + "D3DTOP_MODULATE2X", + "D3DTOP_MODULATE4X", + "D3DTOP_ADD", + "D3DTOP_ADDSIGNED", + "D3DTOP_ADDSIGNED2X", + "D3DTOP_SUBTRACT", + "D3DTOP_ADDSMOOTH", + "D3DTOP_BLENDDIFFUSEALPHA", + "D3DTOP_BLENDTEXTUREALPHA", + "D3DTOP_BLENDFACTORALPHA", + "D3DTOP_BLENDTEXTUREALPHAPM", + "D3DTOP_BLENDCURRENTALPHA", + "D3DTOP_PREMODULATE", + "D3DTOP_MODULATEALPHA_ADDCOLOR", + "D3DTOP_MODULATECOLOR_ADDALPHA", + "D3DTOP_MODULATEINVALPHA_ADDCOLOR", + "D3DTOP_MODULATEINVCOLOR_ADDALPHA", + "D3DTOP_BUMPENVMAP", + "D3DTOP_BUMPENVMAPLUMINANCE", + "D3DTOP_DOTPRODUCT3", +]) + +D3DTA = Flags(DWORD, [ + "D3DTA_SELECTMASK", + "D3DTA_DIFFUSE", + "D3DTA_CURRENT", + "D3DTA_TEXTURE", + "D3DTA_TFACTOR", + "D3DTA_SPECULAR", + "D3DTA_COMPLEMENT", + "D3DTA_ALPHAREPLICATE", +]) + +D3DTEXTUREMAGFILTER = Enum("D3DTEXTUREMAGFILTER", [ + "D3DTFG_POINT", + "D3DTFG_LINEAR", + "D3DTFG_FLATCUBIC", + "D3DTFG_GAUSSIANCUBIC", + "D3DTFG_ANISOTROPIC", + "D3DTFG_FORCE_DWORD", +]) + +D3DTEXTUREMINFILTER = Enum("D3DTEXTUREMINFILTER", [ + "D3DTFN_POINT", + "D3DTFN_LINEAR", + "D3DTFN_ANISOTROPIC", + "D3DTFN_FORCE_DWORD", +]) + +D3DTEXTUREMIPFILTER = Enum("D3DTEXTUREMIPFILTER", [ + "D3DTFP_NONE", + "D3DTFP_POINT", + "D3DTFP_LINEAR", + "D3DTFP_FORCE_DWORD", +]) + +D3DTRIFLAG = Flags(DWORD, [ + "D3DTRIFLAG_START", + "D3DTRIFLAG_STARTFLAT(len)", + "D3DTRIFLAG_ODD", + "D3DTRIFLAG_EVEN", + "D3DTRIFLAG_EDGEENABLETRIANGLE", + "D3DTRIFLAG_EDGEENABLE1", + "D3DTRIFLAG_EDGEENABLE2", + "D3DTRIFLAG_EDGEENABLE3", +]) + +D3DTRIANGLE = Struct("D3DTRIANGLE", [ + (WORD, "v1"), + (WORD, "v2"), + (WORD, "v3"), + (WORD, "wFlags"), +]) + +D3DLINE = Struct("D3DLINE", [ + (WORD, "v1"), + (WORD, "v2"), +]) + +D3DSPAN = Struct("D3DSPAN", [ + (WORD, "wCount"), + (WORD, "wFirst"), +]) + +D3DPOINT = Struct("D3DPOINT", [ + (WORD, "wCount"), + (WORD, "wFirst"), +]) + +D3DBRANCH = Struct("D3DBRANCH", [ + (DWORD, "dwMask"), + (DWORD, "dwValue"), + (BOOL, "bNegate"), + (DWORD, "dwOffset"), +]) + +D3DSTATUS = Struct("D3DSTATUS", [ + (DWORD, "dwFlags"), + (DWORD, "dwStatus"), + (D3DRECT, "drExtent"), +]) + +D3DSETSTATUS = Flags(DWORD, [ + "D3DSETSTATUS_STATUS", + "D3DSETSTATUS_EXTENTS", + "D3DSETSTATUS_ALL", +]) + +D3DCLIPSTATUS = Struct("D3DCLIPSTATUS", [ + (DWORD, "dwFlags"), + (DWORD, "dwStatus"), + (Float, "minx"), + (Float, "maxx"), + (Float, "miny"), + (Float, "maxy"), + (Float, "minz"), + (Float, "maxz"), +]) +LPD3DCLIPSTATUS = Pointer(D3DCLIPSTATUS) + +D3DCLIPSTATUS = Flags(DWORD, [ + "D3DCLIPSTATUS_STATUS", + "D3DCLIPSTATUS_EXTENTS2", + "D3DCLIPSTATUS_EXTENTS3", +]) + +D3DSTATS = Struct("D3DSTATS", [ + (DWORD, "dwSize"), + (DWORD, "dwTrianglesDrawn"), + (DWORD, "dwLinesDrawn"), + (DWORD, "dwPointsDrawn"), + (DWORD, "dwSpansDrawn"), + (DWORD, "dwVerticesProcessed"), +]) +LPD3DSTATS = Pointer(D3DSTATS) + +D3DEXECUTE = Flags(DWORD, [ + "D3DEXECUTE_CLIPPED", + "D3DEXECUTE_UNCLIPPED", +]) + +D3DEXECUTEDATA = Struct("D3DEXECUTEDATA", [ + (DWORD, "dwSize"), + (DWORD, "dwVertexOffset"), + (DWORD, "dwVertexCount"), + (DWORD, "dwInstructionOffset"), + (DWORD, "dwInstructionLength"), + (DWORD, "dwHVertexOffset"), + (D3DSTATUS, "dsStatus"), +]) +LPD3DEXECUTEDATA = Pointer(D3DEXECUTEDATA) + +D3DPAL = Flags(DWORD, [ + "D3DPAL_FREE", + "D3DPAL_READONLY", + "D3DPAL_RESERVED", +]) + +D3DVERTEXBUFFERDESC = Struct("D3DVERTEXBUFFERDESC", [ + (DWORD, "dwSize"), + (DWORD, "dwCaps"), + (DWORD, "dwFVF"), + (DWORD, "dwNumVertices"), +]) +LPD3DVERTEXBUFFERDESC = Pointer(D3DVERTEXBUFFERDESC) + +D3DVBCAPS = Flags(DWORD, [ + "D3DVBCAPS_SYSTEMMEMORY", + "D3DVBCAPS_WRITEONLY", + "D3DVBCAPS_OPTIMIZED", + "D3DVBCAPS_DONOTCLIP", +]) + +D3DVOP = Flags(DWORD, [ + "D3DVOP_LIGHT", + "D3DVOP_TRANSFORM", + "D3DVOP_CLIP", + "D3DVOP_EXTENTS", +]) + +D3DPV = Flags(DWORD, [ + "D3DPV_DONOTCOPYDATA", +]) + +D3DFVF = Flags(DWORD, [ + "D3DFVF_RESERVED0", + "D3DFVF_POSITION_MASK", + "D3DFVF_XYZ", + "D3DFVF_XYZRHW", + "D3DFVF_XYZB1", + "D3DFVF_XYZB2", + "D3DFVF_XYZB3", + "D3DFVF_XYZB4", + "D3DFVF_XYZB5", + "D3DFVF_NORMAL", + "D3DFVF_RESERVED1", + "D3DFVF_DIFFUSE", + "D3DFVF_SPECULAR", + "D3DFVF_TEXCOUNT_MASK", + "D3DFVF_TEXCOUNT_SHIFT", + "D3DFVF_TEX0", + "D3DFVF_TEX1", + "D3DFVF_TEX2", + "D3DFVF_TEX3", + "D3DFVF_TEX4", + "D3DFVF_TEX5", + "D3DFVF_TEX6", + "D3DFVF_TEX7", + "D3DFVF_TEX8", + "D3DFVF_RESERVED2", + "D3DFVF_RESERVED1", + "D3DFVF_VERTEX", + "D3DFVF_LVERTEX", + "D3DFVF_TLVERTEX", + "D3DFVF_TEXCOORDSIZE1(0)", + "D3DFVF_TEXCOORDSIZE1(1)", + "D3DFVF_TEXCOORDSIZE2(0)", + "D3DFVF_TEXCOORDSIZE2(1)", + "D3DFVF_TEXCOORDSIZE3(0)", + "D3DFVF_TEXCOORDSIZE3(1)", + "D3DFVF_TEXCOORDSIZE4(0)", + "D3DFVF_TEXCOORDSIZE4(1)", +]) + +D3DDP_PTRSTRIDE = Struct("D3DDP_PTRSTRIDE", [ + (LPVOID, "lpvData"), + (DWORD, "dwStride"), +]) + +D3DDRAWPRIMITIVESTRIDEDDATA = Struct("D3DDRAWPRIMITIVESTRIDEDDATA", [ + (D3DDP_PTRSTRIDE, "position"), + (D3DDP_PTRSTRIDE, "normal"), + (D3DDP_PTRSTRIDE, "diffuse"), + (D3DDP_PTRSTRIDE, "specular"), + (D3DDP_PTRSTRIDE, "textureCoords[D3DDP_MAXTEXCOORD]"), +]) +LPD3DDRAWPRIMITIVESTRIDEDDATA = Pointer(D3DDRAWPRIMITIVESTRIDEDDATA) + +D3DVIS = Flags(DWORD, [ + "D3DVIS_INSIDE_FRUSTUM", + "D3DVIS_INTERSECT_FRUSTUM", + "D3DVIS_OUTSIDE_FRUSTUM", + "D3DVIS_INSIDE_LEFT", + "D3DVIS_INTERSECT_LEFT", + "D3DVIS_OUTSIDE_LEFT", + "D3DVIS_INSIDE_RIGHT", + "D3DVIS_INTERSECT_RIGHT", + "D3DVIS_OUTSIDE_RIGHT", + "D3DVIS_INSIDE_TOP", + "D3DVIS_INTERSECT_TOP", + "D3DVIS_OUTSIDE_TOP", + "D3DVIS_INSIDE_BOTTOM", + "D3DVIS_INTERSECT_BOTTOM", + "D3DVIS_OUTSIDE_BOTTOM", + "D3DVIS_INSIDE_NEAR", + "D3DVIS_INTERSECT_NEAR", + "D3DVIS_OUTSIDE_NEAR", + "D3DVIS_INSIDE_FAR", + "D3DVIS_INTERSECT_FAR", + "D3DVIS_OUTSIDE_FAR", + "D3DVIS_MASK_FRUSTUM", + "D3DVIS_MASK_LEFT", + "D3DVIS_MASK_RIGHT", + "D3DVIS_MASK_TOP", + "D3DVIS_MASK_BOTTOM", + "D3DVIS_MASK_NEAR", + "D3DVIS_MASK_FAR", +]) + +D3DDEVINFOID = Flags(DWORD, [ + "D3DDEVINFOID_TEXTUREMANAGER", + "D3DDEVINFOID_D3DTEXTUREMANAGER", + "D3DDEVINFOID_TEXTURING", +]) + +D3DSTATEBLOCKTYPE = Enum("D3DSTATEBLOCKTYPE", [ + "D3DSBT_ALL", + "D3DSBT_PIXELSTATE", + "D3DSBT_VERTEXSTATE", + "D3DSBT_FORCE_DWORD", +]) + +D3DVERTEXBLENDFLAGS = Enum("D3DVERTEXBLENDFLAGS", [ + "D3DVBLEND_DISABLE", + "D3DVBLEND_1WEIGHT", + "D3DVBLEND_2WEIGHTS", + "D3DVBLEND_3WEIGHTS", +]) + +D3DTEXTURETRANSFORMFLAGS = Enum("D3DTEXTURETRANSFORMFLAGS", [ + "D3DTTFF_DISABLE", + "D3DTTFF_COUNT1", + "D3DTTFF_COUNT2", + "D3DTTFF_COUNT3", + "D3DTTFF_COUNT4", + "D3DTTFF_PROJECTED", + "D3DTTFF_FORCE_DWORD", +]) diff --git a/ddraw.def b/ddraw.def new file mode 100644 index 0000000..3ce1083 --- /dev/null +++ b/ddraw.def @@ -0,0 +1,8 @@ +EXPORTS + DirectDrawCreate + DirectDrawCreateClipper + DirectDrawCreateEx + DirectDrawEnumerateA + DirectDrawEnumerateW + DirectDrawEnumerateExA + DirectDrawEnumerateExW diff --git a/ddraw.py b/ddraw.py new file mode 100755 index 0000000..2e5187b --- /dev/null +++ b/ddraw.py @@ -0,0 +1,1622 @@ +############################################################################# +# +# Copyright 2008 Tungsten Graphics, Inc. +# +# This program is free software: you can redistribute it and/or modify it +# under the terms of the GNU Lesser General Public License as published +# by the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with this program. If not, see . +# +############################################################################# + +"""ddraw.h""" + +from windows import * + +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"), + (DWORD, "dwRops[DD_ROP_SPACE]"), + (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"), + (DWORD, "dwRops[DD_ROP_SPACE]"), + (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"), + (DWORD, "dwSVBRops[DD_ROP_SPACE]"), + (DWORD, "dwVSBCaps"), + (DWORD, "dwVSBCKeyCaps"), + (DWORD, "dwVSBFXCaps"), + (DWORD, "dwVSBRops[DD_ROP_SPACE]"), + (DWORD, "dwSSBCaps"), + (DWORD, "dwSSBCKeyCaps"), + (DWORD, "dwSSBFXCaps"), + (DWORD, "dwSSBRops[DD_ROP_SPACE]"), + (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"), + (DWORD, "dwRops[DD_ROP_SPACE]"), + (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"), + (DWORD, "dwSVBRops[DD_ROP_SPACE]"), + (DWORD, "dwVSBCaps"), + (DWORD, "dwVSBCKeyCaps"), + (DWORD, "dwVSBFXCaps"), + (DWORD, "dwVSBRops[DD_ROP_SPACE]"), + (DWORD, "dwSSBCaps"), + (DWORD, "dwSSBCKeyCaps"), + (DWORD, "dwSSBFXCaps"), + (DWORD, "dwSSBRops[DD_ROP_SPACE]"), + (DWORD, "dwMaxVideoPorts"), + (DWORD, "dwCurrVideoPorts"), + (DWORD, "dwSVBCaps2"), + (DWORD, "dwNLVBCaps"), + (DWORD, "dwNLVBCaps2"), + (DWORD, "dwNLVBCKeyCaps"), + (DWORD, "dwNLVBFXCaps"), + (DWORD, "dwNLVBRops[DD_ROP_SPACE]"), +]) +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"), + (DWORD, "dwRops[DD_ROP_SPACE]"), + (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"), + (DWORD, "dwSVBRops[DD_ROP_SPACE]"), + (DWORD, "dwVSBCaps"), + (DWORD, "dwVSBCKeyCaps"), + (DWORD, "dwVSBFXCaps"), + (DWORD, "dwVSBRops[DD_ROP_SPACE]"), + (DWORD, "dwSSBCaps"), + (DWORD, "dwSSBCKeyCaps"), + (DWORD, "dwSSBFXCaps"), + (DWORD, "dwSSBRops[DD_ROP_SPACE]"), + (DWORD, "dwMaxVideoPorts"), + (DWORD, "dwCurrVideoPorts"), + (DWORD, "dwSVBCaps2"), + (DWORD, "dwNLVBCaps"), + (DWORD, "dwNLVBCaps2"), + (DWORD, "dwNLVBCKeyCaps"), + (DWORD, "dwNLVBFXCaps"), + (DWORD, "dwNLVBRops[DD_ROP_SPACE]"), + (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"), + (DWORD, "dwRops[DD_ROP_SPACE]"), + (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"), + (DWORD, "dwSVBRops[DD_ROP_SPACE]"), + (DWORD, "dwVSBCaps"), + (DWORD, "dwVSBCKeyCaps"), + (DWORD, "dwVSBFXCaps"), + (DWORD, "dwVSBRops[DD_ROP_SPACE]"), + (DWORD, "dwSSBCaps"), + (DWORD, "dwSSBCKeyCaps"), + (DWORD, "dwSSBFXCaps"), + (DWORD, "dwSSBRops[DD_ROP_SPACE]"), + (DWORD, "dwMaxVideoPorts"), + (DWORD, "dwCurrVideoPorts"), + (DWORD, "dwSVBCaps2"), + (DWORD, "dwNLVBCaps"), + (DWORD, "dwNLVBCaps2"), + (DWORD, "dwNLVBCKeyCaps"), + (DWORD, "dwNLVBFXCaps"), + (DWORD, "dwNLVBRops[DD_ROP_SPACE]"), + (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", [ + (WORD, "red[256]"), + (WORD, "green[256]"), + (WORD, "blue[256]"), +]) +LPDDGAMMARAMP = Pointer(DDGAMMARAMP) + +DDDEVICEIDENTIFIER = Struct("DDDEVICEIDENTIFIER", [ + (String, "szDriver"), + (String, "szDescription"), + (LARGE_INTEGER, "liDriverVersion"), + (DWORD, "dwVendorId"), + (DWORD, "dwDeviceId"), + (DWORD, "dwSubSysId"), + (DWORD, "dwRevision"), + (GUID, "guidDeviceIdentifier"), +]) +LPDDDEVICEIDENTIFIER = Pointer(DDDEVICEIDENTIFIER) + +DDDEVICEIDENTIFIER2 = Struct("DDDEVICEIDENTIFIER2", [ + (String, "szDriver[MAX_DDDEVICEID_STRING]"), + (String, "szDescription[MAX_DDDEVICEID_STRING]"), + (LARGE_INTEGER, "liDriverVersion"), + (DWORD, "dwVendorId"), + (DWORD, "dwDeviceId"), + (DWORD, "dwSubSysId"), + (DWORD, "dwRevision"), + (GUID, "guidDeviceIdentifier"), + (DWORD, "dwWHQLLevel"), +]) +LPDDDEVICEIDENTIFIER2 = Pointer(DDDEVICEIDENTIFIER2) + +LPCLIPPERCALLBACK = Pointer(Function("DWORD", "CLIPPERCALLBACK", [(LPDIRECTDRAWCLIPPER, "lpDDClipper"), (HWND, "hWnd"), (DWORD, "code"), (LPVOID, "lpContext")])) +LPSURFACESTREAMINGCALLBACK = Pointer(Function("DWORD", "SURFACESTREAMINGCALLBACK", [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) + +DDSD = 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) + +DDCOLOR = Flags(DWORD, [ + "DDCOLOR_BRIGHTNESS", + "DDCOLOR_CONTRAST", + "DDCOLOR_HUE", + "DDCOLOR_SATURATION", + "DDCOLOR_SHARPNESS", + "DDCOLOR_GAMMA", + "DDCOLOR_COLORENABLE", +]) + +DDSCAPS = 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", +]) +DDCAPS2 = 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", +]) + +DDCAPS = 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", +]) + +DDCAPS2 = 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", +]) + +DDFXALPHACAPS = Flags(DWORD, [ + "DDFXALPHACAPS_BLTALPHAEDGEBLEND", + "DDFXALPHACAPS_BLTALPHAPIXELS", + "DDFXALPHACAPS_BLTALPHAPIXELSNEG", + "DDFXALPHACAPS_BLTALPHASURFACES", + "DDFXALPHACAPS_BLTALPHASURFACESNEG", + "DDFXALPHACAPS_OVERLAYALPHAEDGEBLEND", + "DDFXALPHACAPS_OVERLAYALPHAPIXELS", + "DDFXALPHACAPS_OVERLAYALPHAPIXELSNEG", + "DDFXALPHACAPS_OVERLAYALPHASURFACES", + "DDFXALPHACAPS_OVERLAYALPHASURFACESNEG", +]) + +DDFXCAPS = 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", +]) + +DDSVCAPS = Flags(DWORD, [ + "DDSVCAPS_RESERVED1", + "DDSVCAPS_RESERVED2", + "DDSVCAPS_RESERVED3", + "DDSVCAPS_RESERVED4", + "DDSVCAPS_STEREOSEQUENTIAL", +]) + +DDPCAPS = Flags(DWORD, [ + "DDPCAPS_4BIT", + "DDPCAPS_8BITENTRIES", + "DDPCAPS_8BIT", + "DDPCAPS_INITIALIZE", + "DDPCAPS_PRIMARYSURFACE", + "DDPCAPS_PRIMARYSURFACELEFT", + "DDPCAPS_ALLOW256", + "DDPCAPS_VSYNC", + "DDPCAPS_1BIT", + "DDPCAPS_2BIT", + "DDPCAPS_ALPHA", +]) + +DDSPD = Flags(DWORD, [ + "DDSPD_IUNKNOWNPOINTER", + "DDSPD_VOLATILE", +]) + +DDBD = Flags(DWORD, [ + "DDBD_1", + "DDBD_2", + "DDBD_4", + "DDBD_8", + "DDBD_16", + "DDBD_24", + "DDBD_32", +]) + +DDCKEY = Flags(DWORD, [ + "DDCKEY_COLORSPACE", + "DDCKEY_DESTBLT", + "DDCKEY_DESTOVERLAY", + "DDCKEY_SRCBLT", + "DDCKEY_SRCOVERLAY", +]) + +DDCKEYCAPS = 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", +]) + +DDPF = 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", +]) + +DDENUMSURFACES = Flags(DWORD, [ + "DDENUMSURFACES_ALL", + "DDENUMSURFACES_MATCH", + "DDENUMSURFACES_NOMATCH", + "DDENUMSURFACES_CANBECREATED", + "DDENUMSURFACES_DOESEXIST", +]) + +DDSDM = Flags(DWORD, [ + "DDSDM_STANDARDVGAMODE", +]) + +DDEDM = Flags(DWORD, [ + "DDEDM_REFRESHRATES", + "DDEDM_STANDARDVGAMODES", +]) + +DDSCL = 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", +]) + +DDBLT = 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", +]) + +DDBLTFAST = Flags(DWORD, [ + "DDBLTFAST_NOCOLORKEY", + "DDBLTFAST_SRCCOLORKEY", + "DDBLTFAST_DESTCOLORKEY", + "DDBLTFAST_WAIT", + "DDBLTFAST_DONOTWAIT", +]) + +DDFLIP = Flags(DWORD, [ + "DDFLIP_WAIT", + "DDFLIP_EVEN", + "DDFLIP_ODD", + "DDFLIP_NOVSYNC", + "DDFLIP_INTERVAL2", + "DDFLIP_INTERVAL3", + "DDFLIP_INTERVAL4", + "DDFLIP_STEREO", + "DDFLIP_DONOTWAIT", +]) + +DDOVER = 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", +]) + +DDLOCK = 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", +]) + +DDBLTFX = Flags(DWORD, [ + "DDBLTFX_ARITHSTRETCHY", + "DDBLTFX_MIRRORLEFTRIGHT", + "DDBLTFX_MIRRORUPDOWN", + "DDBLTFX_NOTEARING", + "DDBLTFX_ROTATE180", + "DDBLTFX_ROTATE270", + "DDBLTFX_ROTATE90", + "DDBLTFX_ZBUFFERRANGE", + "DDBLTFX_ZBUFFERBASEDEST", +]) + +DDOVERFX = Flags(DWORD, [ + "DDOVERFX_ARITHSTRETCHY", + "DDOVERFX_MIRRORLEFTRIGHT", + "DDOVERFX_MIRRORUPDOWN", + "DDOVERFX_DEINTERLACE", +]) + +DDWAITVB = Flags(DWORD, [ + "DDWAITVB_BLOCKBEGIN", + "DDWAITVB_BLOCKBEGINEVENT", + "DDWAITVB_BLOCKEND", +]) + +DDGFS = Flags(DWORD, [ + "DDGFS_CANFLIP", + "DDGFS_ISFLIPDONE", +]) + +DDGBS = Flags(DWORD, [ + "DDGBS_CANBLT", + "DDGBS_ISBLTDONE", +]) + +DDENUMOVERLAYZ = Flags(DWORD, [ + "DDENUMOVERLAYZ_BACKTOFRONT", + "DDENUMOVERLAYZ_FRONTTOBACK", +]) + +DDOVERZ = Flags(DWORD, [ + "DDOVERZ_SENDTOFRONT", + "DDOVERZ_SENDTOBACK", + "DDOVERZ_MOVEFORWARD", + "DDOVERZ_MOVEBACKWARD", + "DDOVERZ_INSERTINFRONTOF", + "DDOVERZ_INSERTINBACKOF", +]) + +DDSGR = Flags(DWORD, [ + "DDSGR_CALIBRATE", +]) + +DDSMT = Flags(DWORD, [ + "DDSMT_ISTESTREQUIRED", +]) + +DDEM = Flags(DWORD, [ + "DDEM_MODEPASSED", + "DDEM_MODEFAILED", +]) + +HRESULT = Enum("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 = Pointer(Function(HRESULT, "LPDDENUMMODESCALLBACK", [LPDDSURFACEDESC, LPVOID])) +LPDDENUMMODESCALLBACK2 = Pointer(Function(HRESULT, "LPDDENUMMODESCALLBACK2", [LPDDSURFACEDESC2, LPVOID])) +LPDDENUMSURFACESCALLBACK = Pointer(Function(HRESULT, "LPDDENUMSURFACESCALLBACK", [LPDIRECTDRAWSURFACE, LPDDSURFACEDESC, LPVOID])) +LPDDENUMSURFACESCALLBACK2 = Pointer(Function(HRESULT, "LPDDENUMSURFACESCALLBACK2", [LPDIRECTDRAWSURFACE4, LPDDSURFACEDESC2, LPVOID])) +LPDDENUMSURFACESCALLBACK7 = Pointer(Function(HRESULT, "LPDDENUMSURFACESCALLBACK7", [LPDIRECTDRAWSURFACE7, LPDDSURFACEDESC2, LPVOID])) + +IDirectDraw.methods += [ + Method(HRESULT, "Compact", []), + Method(HRESULT, "CreateClipper", [DWORD, Pointer(LPDIRECTDRAWCLIPPER) , Pointer(IUnknown) ]), + Method(HRESULT, "CreatePalette", [DWORD, LPPALETTEENTRY, Pointer(LPDIRECTDRAWPALETTE) , Pointer(IUnknown) ]), + Method(HRESULT, "CreateSurface", [LPDDSURFACEDESC, Pointer(LPDIRECTDRAWSURFACE) , Pointer(IUnknown) ]), + Method(HRESULT, "DuplicateSurface", [ LPDIRECTDRAWSURFACE, Pointer(LPDIRECTDRAWSURFACE) ]), + Method(HRESULT, "EnumDisplayModes", [ DWORD, LPDDSURFACEDESC, LPVOID, LPDDENUMMODESCALLBACK ]), + Method(HRESULT, "EnumSurfaces", [DWORD, LPDDSURFACEDESC, LPVOID,LPDDENUMSURFACESCALLBACK ]), + Method(HRESULT, "FlipToGDISurface", []), + Method(HRESULT, "GetCaps", [ LPDDCAPS, LPDDCAPS]), + Method(HRESULT, "GetDisplayMode", [ LPDDSURFACEDESC]), + Method(HRESULT, "GetFourCCCodes", [LPDWORD, LPDWORD ]), + Method(HRESULT, "GetGDISurface", [Pointer(LPDIRECTDRAWSURFACE) ]), + Method(HRESULT, "GetMonitorFrequency", [LPDWORD]), + Method(HRESULT, "GetScanLine", [LPDWORD]), + Method(HRESULT, "GetVerticalBlankStatus", [LPBOOL ]), + Method(HRESULT, "Initialize", [Pointer(GUID) ]), + Method(HRESULT, "RestoreDisplayMode", []), + Method(HRESULT, "SetCooperativeLevel", [HWND, DWORD]), + Method(HRESULT, "SetDisplayMode", [DWORD, DWORD,DWORD]), + Method(HRESULT, "WaitForVerticalBlank", [DWORD, HANDLE ]), +] + +IDirectDraw2.methods += [ + Method(HRESULT, "Compact", []), + Method(HRESULT, "CreateClipper", [DWORD, Pointer(LPDIRECTDRAWCLIPPER) , Pointer(IUnknown) ]), + Method(HRESULT, "CreatePalette", [DWORD, LPPALETTEENTRY, Pointer(LPDIRECTDRAWPALETTE) , Pointer(IUnknown) ]), + Method(HRESULT, "CreateSurface", [LPDDSURFACEDESC, Pointer(LPDIRECTDRAWSURFACE) , Pointer(IUnknown) ]), + Method(HRESULT, "DuplicateSurface", [ LPDIRECTDRAWSURFACE, Pointer(LPDIRECTDRAWSURFACE) ]), + Method(HRESULT, "EnumDisplayModes", [ DWORD, LPDDSURFACEDESC, LPVOID, LPDDENUMMODESCALLBACK ]), + Method(HRESULT, "EnumSurfaces", [DWORD, LPDDSURFACEDESC, LPVOID,LPDDENUMSURFACESCALLBACK ]), + Method(HRESULT, "FlipToGDISurface", []), + Method(HRESULT, "GetCaps", [ LPDDCAPS, LPDDCAPS]), + Method(HRESULT, "GetDisplayMode", [ LPDDSURFACEDESC]), + Method(HRESULT, "GetFourCCCodes", [LPDWORD, LPDWORD ]), + Method(HRESULT, "GetGDISurface", [Pointer(LPDIRECTDRAWSURFACE) ]), + Method(HRESULT, "GetMonitorFrequency", [LPDWORD]), + Method(HRESULT, "GetScanLine", [LPDWORD]), + Method(HRESULT, "GetVerticalBlankStatus", [LPBOOL ]), + Method(HRESULT, "Initialize", [Pointer(GUID) ]), + Method(HRESULT, "RestoreDisplayMode", []), + Method(HRESULT, "SetCooperativeLevel", [HWND, DWORD]), + Method(HRESULT, "SetDisplayMode", [DWORD, DWORD,DWORD, DWORD, DWORD]), + Method(HRESULT, "WaitForVerticalBlank", [DWORD, HANDLE ]), + Method(HRESULT, "GetAvailableVidMem", [LPDDSCAPS, LPDWORD, LPDWORD]), +] + +IDirectDraw4.methods += [ + Method(HRESULT, "Compact", []), + Method(HRESULT, "CreateClipper", [DWORD, Pointer(LPDIRECTDRAWCLIPPER) , Pointer(IUnknown) ]), + Method(HRESULT, "CreatePalette", [DWORD, LPPALETTEENTRY, Pointer(LPDIRECTDRAWPALETTE) , Pointer(IUnknown) ]), + Method(HRESULT, "CreateSurface", [LPDDSURFACEDESC2, Pointer(LPDIRECTDRAWSURFACE4) , Pointer(IUnknown) ]), + Method(HRESULT, "DuplicateSurface", [ LPDIRECTDRAWSURFACE4, Pointer(LPDIRECTDRAWSURFACE4) ]), + Method(HRESULT, "EnumDisplayModes", [ DWORD, LPDDSURFACEDESC2, LPVOID, LPDDENUMMODESCALLBACK2 ]), + Method(HRESULT, "EnumSurfaces", [DWORD, LPDDSURFACEDESC2, LPVOID,LPDDENUMSURFACESCALLBACK2 ]), + Method(HRESULT, "FlipToGDISurface", []), + Method(HRESULT, "GetCaps", [ LPDDCAPS, LPDDCAPS]), + Method(HRESULT, "GetDisplayMode", [ LPDDSURFACEDESC2]), + Method(HRESULT, "GetFourCCCodes", [LPDWORD, LPDWORD ]), + Method(HRESULT, "GetGDISurface", [Pointer(LPDIRECTDRAWSURFACE4) ]), + Method(HRESULT, "GetMonitorFrequency", [LPDWORD]), + Method(HRESULT, "GetScanLine", [LPDWORD]), + Method(HRESULT, "GetVerticalBlankStatus", [LPBOOL ]), + Method(HRESULT, "Initialize", [Pointer(GUID) ]), + Method(HRESULT, "RestoreDisplayMode", []), + Method(HRESULT, "SetCooperativeLevel", [HWND, DWORD]), + Method(HRESULT, "SetDisplayMode", [DWORD, DWORD,DWORD, DWORD, DWORD]), + Method(HRESULT, "WaitForVerticalBlank", [DWORD, HANDLE ]), + Method(HRESULT, "GetAvailableVidMem", [LPDDSCAPS2, LPDWORD, LPDWORD]), + Method(HRESULT, "GetSurfaceFromDC", [HDC, Pointer(LPDIRECTDRAWSURFACE4)]), + Method(HRESULT, "RestoreAllSurfaces", []), + Method(HRESULT, "TestCooperativeLevel", []), + Method(HRESULT, "GetDeviceIdentifier", [LPDDDEVICEIDENTIFIER, DWORD ]), +] + +IDirectDraw7.methods += [ + Method(HRESULT, "Compact", []), + Method(HRESULT, "CreateClipper", [DWORD, Pointer(LPDIRECTDRAWCLIPPER) , Pointer(IUnknown) ]), + Method(HRESULT, "CreatePalette", [DWORD, LPPALETTEENTRY, Pointer(LPDIRECTDRAWPALETTE) , Pointer(IUnknown) ]), + Method(HRESULT, "CreateSurface", [LPDDSURFACEDESC2, Pointer(LPDIRECTDRAWSURFACE7) , Pointer(IUnknown) ]), + Method(HRESULT, "DuplicateSurface", [ LPDIRECTDRAWSURFACE7, Pointer(LPDIRECTDRAWSURFACE7) ]), + Method(HRESULT, "EnumDisplayModes", [ DWORD, LPDDSURFACEDESC2, LPVOID, LPDDENUMMODESCALLBACK2 ]), + Method(HRESULT, "EnumSurfaces", [DWORD, LPDDSURFACEDESC2, LPVOID,LPDDENUMSURFACESCALLBACK7 ]), + Method(HRESULT, "FlipToGDISurface", []), + Method(HRESULT, "GetCaps", [ LPDDCAPS, LPDDCAPS]), + Method(HRESULT, "GetDisplayMode", [ LPDDSURFACEDESC2]), + Method(HRESULT, "GetFourCCCodes", [LPDWORD, LPDWORD ]), + Method(HRESULT, "GetGDISurface", [Pointer(LPDIRECTDRAWSURFACE7) ]), + Method(HRESULT, "GetMonitorFrequency", [LPDWORD]), + Method(HRESULT, "GetScanLine", [LPDWORD]), + Method(HRESULT, "GetVerticalBlankStatus", [LPBOOL ]), + Method(HRESULT, "Initialize", [Pointer(GUID) ]), + Method(HRESULT, "RestoreDisplayMode", []), + Method(HRESULT, "SetCooperativeLevel", [HWND, DWORD]), + Method(HRESULT, "SetDisplayMode", [DWORD, DWORD,DWORD, DWORD, DWORD]), + Method(HRESULT, "WaitForVerticalBlank", [DWORD, HANDLE ]), + Method(HRESULT, "GetAvailableVidMem", [LPDDSCAPS2, LPDWORD, LPDWORD]), + Method(HRESULT, "GetSurfaceFromDC", [HDC, Pointer(LPDIRECTDRAWSURFACE7)]), + Method(HRESULT, "RestoreAllSurfaces", []), + Method(HRESULT, "TestCooperativeLevel", []), + Method(HRESULT, "GetDeviceIdentifier", [LPDDDEVICEIDENTIFIER2, DWORD ]), + Method(HRESULT, "StartModeTest", [LPSIZE, DWORD, DWORD ]), + Method(HRESULT, "EvaluateMode", [DWORD, Pointer(DWORD) ]), +] + +IDirectDrawPalette.methods += [ + Method(HRESULT, "GetCaps", [LPDWORD]), + Method(HRESULT, "GetEntries", [DWORD,DWORD,DWORD,LPPALETTEENTRY]), + Method(HRESULT, "Initialize", [LPDIRECTDRAW, DWORD, LPPALETTEENTRY]), + Method(HRESULT, "SetEntries", [DWORD,DWORD,DWORD,LPPALETTEENTRY]), +] + +IDirectDrawClipper.methods += [ + Method(HRESULT, "GetClipList", [LPRECT, LPRGNDATA, LPDWORD]), + Method(HRESULT, "GetHWnd", [Pointer(HWND) ]), + Method(HRESULT, "Initialize", [LPDIRECTDRAW, DWORD]), + Method(HRESULT, "IsClipListChanged", [Pointer(BOOL) ]), + Method(HRESULT, "SetClipList", [LPRGNDATA,DWORD]), + Method(HRESULT, "SetHWnd", [DWORD, HWND ]), +] + + +IDirectDrawSurface.methods += [ + Method(HRESULT, "AddAttachedSurface", [LPDIRECTDRAWSURFACE]), + Method(HRESULT, "AddOverlayDirtyRect", [LPRECT]), + Method(HRESULT, "Blt", [LPRECT,LPDIRECTDRAWSURFACE, LPRECT,DWORD, LPDDBLTFX]), + Method(HRESULT, "BltBatch", [LPDDBLTBATCH, DWORD, DWORD ]), + Method(HRESULT, "BltFast", [DWORD,DWORD,LPDIRECTDRAWSURFACE, LPRECT,DWORD]), + Method(HRESULT, "DeleteAttachedSurface", [DWORD,LPDIRECTDRAWSURFACE]), + Method(HRESULT, "EnumAttachedSurfaces", [LPVOID,LPDDENUMSURFACESCALLBACK]), + Method(HRESULT, "EnumOverlayZOrders", [DWORD,LPVOID,LPDDENUMSURFACESCALLBACK]), + Method(HRESULT, "Flip", [LPDIRECTDRAWSURFACE, DWORD]), + Method(HRESULT, "GetAttachedSurface", [LPDDSCAPS, Pointer(LPDIRECTDRAWSURFACE) ]), + Method(HRESULT, "GetBltStatus", [DWORD]), + Method(HRESULT, "GetCaps", [LPDDSCAPS]), + Method(HRESULT, "GetClipper", [Pointer(LPDIRECTDRAWCLIPPER) ]), + Method(HRESULT, "GetColorKey", [DWORD, LPDDCOLORKEY]), + Method(HRESULT, "GetDC", [Pointer(HDC) ]), + Method(HRESULT, "GetFlipStatus", [DWORD]), + Method(HRESULT, "GetOverlayPosition", [LPLONG, LPLONG ]), + Method(HRESULT, "GetPalette", [Pointer(LPDIRECTDRAWPALETTE) ]), + Method(HRESULT, "GetPixelFormat", [LPDDPIXELFORMAT]), + Method(HRESULT, "GetSurfaceDesc", [LPDDSURFACEDESC]), + Method(HRESULT, "Initialize", [LPDIRECTDRAW, LPDDSURFACEDESC]), + Method(HRESULT, "IsLost", []), + Method(HRESULT, "Lock", [LPRECT,LPDDSURFACEDESC,DWORD,HANDLE]), + Method(HRESULT, "ReleaseDC", [HDC]), + Method(HRESULT, "Restore", []), + Method(HRESULT, "SetClipper", [LPDIRECTDRAWCLIPPER]), + Method(HRESULT, "SetColorKey", [DWORD, LPDDCOLORKEY]), + Method(HRESULT, "SetOverlayPosition", [LONG, LONG ]), + Method(HRESULT, "SetPalette", [LPDIRECTDRAWPALETTE]), + Method(HRESULT, "Unlock", [LPVOID]), + Method(HRESULT, "UpdateOverlay", [LPRECT, LPDIRECTDRAWSURFACE,LPRECT,DWORD, LPDDOVERLAYFX]), + Method(HRESULT, "UpdateOverlayDisplay", [DWORD]), + Method(HRESULT, "UpdateOverlayZOrder", [DWORD, LPDIRECTDRAWSURFACE]), +] + +IDirectDrawSurface2.methods += [ + Method(HRESULT, "AddAttachedSurface", [LPDIRECTDRAWSURFACE2]), + Method(HRESULT, "AddOverlayDirtyRect", [LPRECT]), + Method(HRESULT, "Blt", [LPRECT,LPDIRECTDRAWSURFACE2, LPRECT,DWORD, LPDDBLTFX]), + Method(HRESULT, "BltBatch", [LPDDBLTBATCH, DWORD, DWORD ]), + Method(HRESULT, "BltFast", [DWORD,DWORD,LPDIRECTDRAWSURFACE2, LPRECT,DWORD]), + Method(HRESULT, "DeleteAttachedSurface", [DWORD,LPDIRECTDRAWSURFACE2]), + Method(HRESULT, "EnumAttachedSurfaces", [LPVOID,LPDDENUMSURFACESCALLBACK]), + Method(HRESULT, "EnumOverlayZOrders", [DWORD,LPVOID,LPDDENUMSURFACESCALLBACK]), + Method(HRESULT, "Flip", [LPDIRECTDRAWSURFACE2, DWORD]), + Method(HRESULT, "GetAttachedSurface", [LPDDSCAPS, Pointer(LPDIRECTDRAWSURFACE2) ]), + Method(HRESULT, "GetBltStatus", [DWORD]), + Method(HRESULT, "GetCaps", [LPDDSCAPS]), + Method(HRESULT, "GetClipper", [Pointer(LPDIRECTDRAWCLIPPER) ]), + Method(HRESULT, "GetColorKey", [DWORD, LPDDCOLORKEY]), + Method(HRESULT, "GetDC", [Pointer(HDC) ]), + Method(HRESULT, "GetFlipStatus", [DWORD]), + Method(HRESULT, "GetOverlayPosition", [LPLONG, LPLONG ]), + Method(HRESULT, "GetPalette", [Pointer(LPDIRECTDRAWPALETTE) ]), + Method(HRESULT, "GetPixelFormat", [LPDDPIXELFORMAT]), + Method(HRESULT, "GetSurfaceDesc", [LPDDSURFACEDESC]), + Method(HRESULT, "Initialize", [LPDIRECTDRAW, LPDDSURFACEDESC]), + Method(HRESULT, "IsLost", []), + Method(HRESULT, "Lock", [LPRECT,LPDDSURFACEDESC,DWORD,HANDLE]), + Method(HRESULT, "ReleaseDC", [HDC]), + Method(HRESULT, "Restore", []), + Method(HRESULT, "SetClipper", [LPDIRECTDRAWCLIPPER]), + Method(HRESULT, "SetColorKey", [DWORD, LPDDCOLORKEY]), + Method(HRESULT, "SetOverlayPosition", [LONG, LONG ]), + Method(HRESULT, "SetPalette", [LPDIRECTDRAWPALETTE]), + Method(HRESULT, "Unlock", [LPVOID]), + Method(HRESULT, "UpdateOverlay", [LPRECT, LPDIRECTDRAWSURFACE2,LPRECT,DWORD, LPDDOVERLAYFX]), + Method(HRESULT, "UpdateOverlayDisplay", [DWORD]), + Method(HRESULT, "UpdateOverlayZOrder", [DWORD, LPDIRECTDRAWSURFACE2]), + Method(HRESULT, "GetDDInterface", [Pointer(LPVOID) ]), + Method(HRESULT, "PageLock", [DWORD]), + Method(HRESULT, "PageUnlock", [DWORD]), +] + +IDirectDrawSurface3.methods += [ + Method(HRESULT, "AddAttachedSurface", [LPDIRECTDRAWSURFACE3]), + Method(HRESULT, "AddOverlayDirtyRect", [LPRECT]), + Method(HRESULT, "Blt", [LPRECT,LPDIRECTDRAWSURFACE3, LPRECT,DWORD, LPDDBLTFX]), + Method(HRESULT, "BltBatch", [LPDDBLTBATCH, DWORD, DWORD ]), + Method(HRESULT, "BltFast", [DWORD,DWORD,LPDIRECTDRAWSURFACE3, LPRECT,DWORD]), + Method(HRESULT, "DeleteAttachedSurface", [DWORD,LPDIRECTDRAWSURFACE3]), + Method(HRESULT, "EnumAttachedSurfaces", [LPVOID,LPDDENUMSURFACESCALLBACK]), + Method(HRESULT, "EnumOverlayZOrders", [DWORD,LPVOID,LPDDENUMSURFACESCALLBACK]), + Method(HRESULT, "Flip", [LPDIRECTDRAWSURFACE3, DWORD]), + Method(HRESULT, "GetAttachedSurface", [LPDDSCAPS, Pointer(LPDIRECTDRAWSURFACE3) ]), + Method(HRESULT, "GetBltStatus", [DWORD]), + Method(HRESULT, "GetCaps", [LPDDSCAPS]), + Method(HRESULT, "GetClipper", [Pointer(LPDIRECTDRAWCLIPPER) ]), + Method(HRESULT, "GetColorKey", [DWORD, LPDDCOLORKEY]), + Method(HRESULT, "GetDC", [Pointer(HDC) ]), + Method(HRESULT, "GetFlipStatus", [DWORD]), + Method(HRESULT, "GetOverlayPosition", [LPLONG, LPLONG ]), + Method(HRESULT, "GetPalette", [Pointer(LPDIRECTDRAWPALETTE) ]), + Method(HRESULT, "GetPixelFormat", [LPDDPIXELFORMAT]), + Method(HRESULT, "GetSurfaceDesc", [LPDDSURFACEDESC]), + Method(HRESULT, "Initialize", [LPDIRECTDRAW, LPDDSURFACEDESC]), + Method(HRESULT, "IsLost", []), + Method(HRESULT, "Lock", [LPRECT,LPDDSURFACEDESC,DWORD,HANDLE]), + Method(HRESULT, "ReleaseDC", [HDC]), + Method(HRESULT, "Restore", []), + Method(HRESULT, "SetClipper", [LPDIRECTDRAWCLIPPER]), + Method(HRESULT, "SetColorKey", [DWORD, LPDDCOLORKEY]), + Method(HRESULT, "SetOverlayPosition", [LONG, LONG ]), + Method(HRESULT, "SetPalette", [LPDIRECTDRAWPALETTE]), + Method(HRESULT, "Unlock", [LPVOID]), + Method(HRESULT, "UpdateOverlay", [LPRECT, LPDIRECTDRAWSURFACE3,LPRECT,DWORD, LPDDOVERLAYFX]), + Method(HRESULT, "UpdateOverlayDisplay", [DWORD]), + Method(HRESULT, "UpdateOverlayZOrder", [DWORD, LPDIRECTDRAWSURFACE3]), + Method(HRESULT, "GetDDInterface", [Pointer(LPVOID) ]), + Method(HRESULT, "PageLock", [DWORD]), + Method(HRESULT, "PageUnlock", [DWORD]), + Method(HRESULT, "SetSurfaceDesc", [LPDDSURFACEDESC, DWORD]), +] + +IDirectDrawSurface4.methods += [ + Method(HRESULT, "AddAttachedSurface", [LPDIRECTDRAWSURFACE4]), + Method(HRESULT, "AddOverlayDirtyRect", [LPRECT]), + Method(HRESULT, "Blt", [LPRECT,LPDIRECTDRAWSURFACE4, LPRECT,DWORD, LPDDBLTFX]), + Method(HRESULT, "BltBatch", [LPDDBLTBATCH, DWORD, DWORD ]), + Method(HRESULT, "BltFast", [DWORD,DWORD,LPDIRECTDRAWSURFACE4, LPRECT,DWORD]), + Method(HRESULT, "DeleteAttachedSurface", [DWORD,LPDIRECTDRAWSURFACE4]), + Method(HRESULT, "EnumAttachedSurfaces", [LPVOID,LPDDENUMSURFACESCALLBACK2]), + Method(HRESULT, "EnumOverlayZOrders", [DWORD,LPVOID,LPDDENUMSURFACESCALLBACK2]), + Method(HRESULT, "Flip", [LPDIRECTDRAWSURFACE4, DWORD]), + Method(HRESULT, "GetAttachedSurface", [LPDDSCAPS2, Pointer(LPDIRECTDRAWSURFACE4) ]), + Method(HRESULT, "GetBltStatus", [DWORD]), + Method(HRESULT, "GetCaps", [LPDDSCAPS2]), + Method(HRESULT, "GetClipper", [Pointer(LPDIRECTDRAWCLIPPER) ]), + Method(HRESULT, "GetColorKey", [DWORD, LPDDCOLORKEY]), + Method(HRESULT, "GetDC", [Pointer(HDC) ]), + Method(HRESULT, "GetFlipStatus", [DWORD]), + Method(HRESULT, "GetOverlayPosition", [LPLONG, LPLONG ]), + Method(HRESULT, "GetPalette", [Pointer(LPDIRECTDRAWPALETTE) ]), + Method(HRESULT, "GetPixelFormat", [LPDDPIXELFORMAT]), + Method(HRESULT, "GetSurfaceDesc", [LPDDSURFACEDESC2]), + Method(HRESULT, "Initialize", [LPDIRECTDRAW, LPDDSURFACEDESC2]), + Method(HRESULT, "IsLost", []), + Method(HRESULT, "Lock", [LPRECT,LPDDSURFACEDESC2,DWORD,HANDLE]), + Method(HRESULT, "ReleaseDC", [HDC]), + Method(HRESULT, "Restore", []), + Method(HRESULT, "SetClipper", [LPDIRECTDRAWCLIPPER]), + Method(HRESULT, "SetColorKey", [DWORD, LPDDCOLORKEY]), + Method(HRESULT, "SetOverlayPosition", [LONG, LONG ]), + Method(HRESULT, "SetPalette", [LPDIRECTDRAWPALETTE]), + Method(HRESULT, "Unlock", [LPRECT]), + Method(HRESULT, "UpdateOverlay", [LPRECT, LPDIRECTDRAWSURFACE4,LPRECT,DWORD, LPDDOVERLAYFX]), + Method(HRESULT, "UpdateOverlayDisplay", [DWORD]), + Method(HRESULT, "UpdateOverlayZOrder", [DWORD, LPDIRECTDRAWSURFACE4]), + Method(HRESULT, "GetDDInterface", [Pointer(LPVOID) ]), + Method(HRESULT, "PageLock", [DWORD]), + Method(HRESULT, "PageUnlock", [DWORD]), + Method(HRESULT, "SetSurfaceDesc", [LPDDSURFACEDESC2, DWORD]), + Method(HRESULT, "SetPrivateData", [REFGUID, LPVOID, DWORD, DWORD]), + Method(HRESULT, "GetPrivateData", [REFGUID, LPVOID, LPDWORD]), + Method(HRESULT, "FreePrivateData", [REFGUID]), + Method(HRESULT, "GetUniquenessValue", [LPDWORD]), + Method(HRESULT, "ChangeUniquenessValue", []), +] + +IDirectDrawSurface7.methods += [ + Method(HRESULT, "AddAttachedSurface", [LPDIRECTDRAWSURFACE7]), + Method(HRESULT, "AddOverlayDirtyRect", [LPRECT]), + Method(HRESULT, "Blt", [LPRECT,LPDIRECTDRAWSURFACE7, LPRECT,DWORD, LPDDBLTFX]), + Method(HRESULT, "BltBatch", [LPDDBLTBATCH, DWORD, DWORD ]), + Method(HRESULT, "BltFast", [DWORD,DWORD,LPDIRECTDRAWSURFACE7, LPRECT,DWORD]), + Method(HRESULT, "DeleteAttachedSurface", [DWORD,LPDIRECTDRAWSURFACE7]), + Method(HRESULT, "EnumAttachedSurfaces", [LPVOID,LPDDENUMSURFACESCALLBACK7]), + Method(HRESULT, "EnumOverlayZOrders", [DWORD,LPVOID,LPDDENUMSURFACESCALLBACK7]), + Method(HRESULT, "Flip", [LPDIRECTDRAWSURFACE7, DWORD]), + Method(HRESULT, "GetAttachedSurface", [LPDDSCAPS2, Pointer(LPDIRECTDRAWSURFACE7) ]), + Method(HRESULT, "GetBltStatus", [DWORD]), + Method(HRESULT, "GetCaps", [LPDDSCAPS2]), + Method(HRESULT, "GetClipper", [Pointer(LPDIRECTDRAWCLIPPER) ]), + Method(HRESULT, "GetColorKey", [DWORD, LPDDCOLORKEY]), + Method(HRESULT, "GetDC", [Pointer(HDC) ]), + Method(HRESULT, "GetFlipStatus", [DWORD]), + Method(HRESULT, "GetOverlayPosition", [LPLONG, LPLONG ]), + Method(HRESULT, "GetPalette", [Pointer(LPDIRECTDRAWPALETTE) ]), + Method(HRESULT, "GetPixelFormat", [LPDDPIXELFORMAT]), + Method(HRESULT, "GetSurfaceDesc", [LPDDSURFACEDESC2]), + Method(HRESULT, "Initialize", [LPDIRECTDRAW, LPDDSURFACEDESC2]), + Method(HRESULT, "IsLost", []), + Method(HRESULT, "Lock", [LPRECT,LPDDSURFACEDESC2,DWORD,HANDLE]), + Method(HRESULT, "ReleaseDC", [HDC]), + Method(HRESULT, "Restore", []), + Method(HRESULT, "SetClipper", [LPDIRECTDRAWCLIPPER]), + Method(HRESULT, "SetColorKey", [DWORD, LPDDCOLORKEY]), + Method(HRESULT, "SetOverlayPosition", [LONG, LONG ]), + Method(HRESULT, "SetPalette", [LPDIRECTDRAWPALETTE]), + Method(HRESULT, "Unlock", [LPRECT]), + Method(HRESULT, "UpdateOverlay", [LPRECT, LPDIRECTDRAWSURFACE7,LPRECT,DWORD, LPDDOVERLAYFX]), + Method(HRESULT, "UpdateOverlayDisplay", [DWORD]), + Method(HRESULT, "UpdateOverlayZOrder", [DWORD, LPDIRECTDRAWSURFACE7]), + Method(HRESULT, "GetDDInterface", [Pointer(LPVOID) ]), + Method(HRESULT, "PageLock", [DWORD]), + Method(HRESULT, "PageUnlock", [DWORD]), + Method(HRESULT, "SetSurfaceDesc", [LPDDSURFACEDESC2, DWORD]), + Method(HRESULT, "SetPrivateData", [REFGUID, LPVOID, DWORD, DWORD]), + Method(HRESULT, "GetPrivateData", [REFGUID, LPVOID, LPDWORD]), + Method(HRESULT, "FreePrivateData", [REFGUID]), + Method(HRESULT, "GetUniquenessValue", [LPDWORD]), + Method(HRESULT, "ChangeUniquenessValue", []), + Method(HRESULT, "SetPriority", [DWORD]), + Method(HRESULT, "GetPriority", [LPDWORD]), + Method(HRESULT, "SetLOD", [DWORD]), + Method(HRESULT, "GetLOD", [LPDWORD]), +] + +IDirectDrawColorControl.methods += [ + Method(HRESULT, "GetColorControls", [LPDDCOLORCONTROL]), + Method(HRESULT, "SetColorControls", [LPDDCOLORCONTROL]), +] + +IDirectDrawGammaControl.methods += [ + Method(HRESULT, "GetGammaRamp", [DWORD, LPDDGAMMARAMP]), + Method(HRESULT, "SetGammaRamp", [DWORD, LPDDGAMMARAMP]), +] + +#LPDDENUMCALLBACKA = WrapPointer(Function(BOOL, "LPDDENUMCALLBACKA", [Pointer(GUID), LPSTR, LPSTR, LPVOID])) +#LPDDENUMCALLBACKW = WrapPointer(Function(BOOL, "LPDDENUMCALLBACKW", [Pointer(GUID), LPWSTR, LPWSTR, LPVOID])) +#LPDDENUMCALLBACKEXA = WrapPointer(Function(BOOL, "LPDDENUMCALLBACKEXA", [Pointer(GUID), LPSTR, LPSTR, LPVOID, HMONITOR])) +#LPDDENUMCALLBACKEXW = WrapPointer(Function(BOOL, "LPDDENUMCALLBACKEXW", [Pointer(GUID), LPWSTR, LPWSTR, LPVOID, HMONITOR])) +LPDDENUMCALLBACKA = Alias("LPDDENUMCALLBACKA", Pointer(Void)) +LPDDENUMCALLBACKW = Alias("LPDDENUMCALLBACKW", Pointer(Void)) +LPDDENUMCALLBACKEXA = Alias("LPDDENUMCALLBACKEXA", Pointer(Void)) +LPDDENUMCALLBACKEXW = Alias("LPDDENUMCALLBACKEXW", Pointer(Void)) + +DDENUM = Flags(DWORD, [ + "DDENUM_ATTACHEDSECONDARYDEVICES", + "DDENUM_DETACHEDSECONDARYDEVICES", + "DDENUM_NONDISPLAYDEVICES", +]) + +DDCREATE = Flags(DWORD, [ + "DDCREATE_HARDWAREONLY", + "DDCREATE_EMULATIONONLY", +]) + +ddraw = Dll("ddraw") +ddraw.functions += [ + Function(HRESULT, "DirectDrawEnumerateW", [(LPDDENUMCALLBACKW, "lpCallback"), (LPVOID, "lpContext")]), + Function(HRESULT, "DirectDrawEnumerateA", [(LPDDENUMCALLBACKA, "lpCallback"), (LPVOID, "lpContext")]), + Function(HRESULT, "DirectDrawEnumerateExW", [(LPDDENUMCALLBACKEXW, "lpCallback"), (LPVOID, "lpContext"), (DDENUM, "dwFlags")]), + Function(HRESULT, "DirectDrawEnumerateExA", [(LPDDENUMCALLBACKEXA, "lpCallback"), (LPVOID, "lpContext"), (DDENUM, "dwFlags")]), + Function(HRESULT, "DirectDrawCreate", [(Pointer(GUID), "lpGUID"), (OutPointer(LPDIRECTDRAW), "lplpDD"), (Pointer(IUnknown), "pUnkOuter")]), + Function(HRESULT, "DirectDrawCreateEx", [(Pointer(GUID), "lpGuid"), (OutPointer(LPVOID), "lplpDD"), (REFIID, "iid"), (Pointer(IUnknown), "pUnkOuter")]), + Function(HRESULT, "DirectDrawCreateClipper", [(DWORD, "dwFlags"), (OutPointer(LPDIRECTDRAWCLIPPER), "lplpDDClipper"), (Pointer(IUnknown), "pUnkOuter")]), +] + +if __name__ == '__main__': + print '#include ' + print '#include ' + print '#include ' + print + print '#include "log.hpp"' + print + wrap() -- 2.43.0