blob: 22ed8c8e888ec79edc2a2c2a0ee7fd30c1c72143 [file] [log] [blame]
José Fonseca7ad40262009-09-30 17:17:12 +01001##########################################################################
José Fonseca91af9232009-04-13 16:15:28 +01002#
José Fonseca7ad40262009-09-30 17:17:12 +01003# Copyright 2008-2009 VMware, Inc.
4# All Rights Reserved.
José Fonseca91af9232009-04-13 16:15:28 +01005#
José Fonseca7ad40262009-09-30 17:17:12 +01006# Permission is hereby granted, free of charge, to any person obtaining a copy
7# of this software and associated documentation files (the "Software"), to deal
8# in the Software without restriction, including without limitation the rights
9# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10# copies of the Software, and to permit persons to whom the Software is
11# furnished to do so, subject to the following conditions:
José Fonseca91af9232009-04-13 16:15:28 +010012#
José Fonseca7ad40262009-09-30 17:17:12 +010013# The above copyright notice and this permission notice shall be included in
14# all copies or substantial portions of the Software.
José Fonseca91af9232009-04-13 16:15:28 +010015#
José Fonseca7ad40262009-09-30 17:17:12 +010016# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22# THE SOFTWARE.
José Fonseca91af9232009-04-13 16:15:28 +010023#
José Fonseca7ad40262009-09-30 17:17:12 +010024##########################################################################/
José Fonseca91af9232009-04-13 16:15:28 +010025
26"""d3d.h"""
27
José Fonsecaf20c1262010-11-25 11:39:57 +000028from winapi import *
José Fonseca8384ccb2011-05-25 10:12:02 +010029from ddraw import *
José Fonseca91af9232009-04-13 16:15:28 +010030from d3dtypes import *
31from d3dcaps import *
32
José Fonseca8384ccb2011-05-25 10:12:02 +010033def OutPointer(type):
34 return Out(Pointer(type), "out")
35
José Fonsecabb4421f2011-05-26 08:21:37 +010036d3dnextFlags = Flags(DWORD, [
José Fonseca91af9232009-04-13 16:15:28 +010037 "D3DNEXT_NEXT",
38 "D3DNEXT_HEAD",
39 "D3DNEXT_TAIL",
40])
41
José Fonsecabb4421f2011-05-26 08:21:37 +010042direct3dFlags = Flags(DWORD, [
43 "DIRECT3D_VERSION",
44])
45
46d3ddpFlags = Flags(DWORD, [
José Fonseca91af9232009-04-13 16:15:28 +010047 "D3DDP_WAIT",
48 "D3DDP_OUTOFORDER",
49 "D3DDP_DONOTCLIP",
50 "D3DDP_DONOTUPDATEEXTENTS",
51 "D3DDP_DONOTLIGHT",
52])
53
54HRESULT = Enum("HRESULT", [
55 "D3D_OK",
56 "D3DERR_BADMAJORVERSION",
57 "D3DERR_BADMINORVERSION",
58 "D3DERR_INVALID_DEVICE",
59 "D3DERR_INITFAILED",
60 "D3DERR_DEVICEAGGREGATED",
61 "D3DERR_EXECUTE_CREATE_FAILED",
62 "D3DERR_EXECUTE_DESTROY_FAILED",
63 "D3DERR_EXECUTE_LOCK_FAILED",
64 "D3DERR_EXECUTE_UNLOCK_FAILED",
65 "D3DERR_EXECUTE_LOCKED",
66 "D3DERR_EXECUTE_NOT_LOCKED",
67 "D3DERR_EXECUTE_FAILED",
68 "D3DERR_EXECUTE_CLIPPED_FAILED",
69 "D3DERR_TEXTURE_NO_SUPPORT",
70 "D3DERR_TEXTURE_CREATE_FAILED",
71 "D3DERR_TEXTURE_DESTROY_FAILED",
72 "D3DERR_TEXTURE_LOCK_FAILED",
73 "D3DERR_TEXTURE_UNLOCK_FAILED",
74 "D3DERR_TEXTURE_LOAD_FAILED",
75 "D3DERR_TEXTURE_SWAP_FAILED",
76 "D3DERR_TEXTURE_LOCKED",
77 "D3DERR_TEXTURE_NOT_LOCKED",
78 "D3DERR_TEXTURE_GETSURF_FAILED",
79 "D3DERR_MATRIX_CREATE_FAILED",
80 "D3DERR_MATRIX_DESTROY_FAILED",
81 "D3DERR_MATRIX_SETDATA_FAILED",
82 "D3DERR_MATRIX_GETDATA_FAILED",
83 "D3DERR_SETVIEWPORTDATA_FAILED",
84 "D3DERR_INVALIDCURRENTVIEWPORT",
85 "D3DERR_INVALIDPRIMITIVETYPE",
86 "D3DERR_INVALIDVERTEXTYPE",
87 "D3DERR_TEXTURE_BADSIZE",
88 "D3DERR_INVALIDRAMPTEXTURE",
89 "D3DERR_MATERIAL_CREATE_FAILED",
90 "D3DERR_MATERIAL_DESTROY_FAILED",
91 "D3DERR_MATERIAL_SETDATA_FAILED",
92 "D3DERR_MATERIAL_GETDATA_FAILED",
93 "D3DERR_INVALIDPALETTE",
94 "D3DERR_ZBUFF_NEEDS_SYSTEMMEMORY",
95 "D3DERR_ZBUFF_NEEDS_VIDEOMEMORY",
96 "D3DERR_SURFACENOTINVIDMEM",
97 "D3DERR_LIGHT_SET_FAILED",
98 "D3DERR_LIGHTHASVIEWPORT",
99 "D3DERR_LIGHTNOTINTHISVIEWPORT",
100 "D3DERR_SCENE_IN_SCENE",
101 "D3DERR_SCENE_NOT_IN_SCENE",
102 "D3DERR_SCENE_BEGIN_FAILED",
103 "D3DERR_SCENE_END_FAILED",
104 "D3DERR_INBEGIN",
105 "D3DERR_NOTINBEGIN",
106 "D3DERR_NOVIEWPORTS",
107 "D3DERR_VIEWPORTDATANOTSET",
108 "D3DERR_VIEWPORTHASNODEVICE",
109 "D3DERR_NOCURRENTVIEWPORT",
110 "D3DERR_INVALIDVERTEXFORMAT",
111 "D3DERR_COLORKEYATTACHED",
112 "D3DERR_VERTEXBUFFEROPTIMIZED",
113 "D3DERR_VBUF_CREATE_FAILED",
114 "D3DERR_VERTEXBUFFERLOCKED",
115 "D3DERR_VERTEXBUFFERUNLOCKFAILED",
116 "D3DERR_ZBUFFER_NOTPRESENT",
117 "D3DERR_STENCILBUFFER_NOTPRESENT",
118 "D3DERR_WRONGTEXTUREFORMAT",
119 "D3DERR_UNSUPPORTEDCOLOROPERATION",
120 "D3DERR_UNSUPPORTEDCOLORARG",
121 "D3DERR_UNSUPPORTEDALPHAOPERATION",
122 "D3DERR_UNSUPPORTEDALPHAARG",
123 "D3DERR_TOOMANYOPERATIONS",
124 "D3DERR_CONFLICTINGTEXTUREFILTER",
125 "D3DERR_UNSUPPORTEDFACTORVALUE",
126 "D3DERR_CONFLICTINGRENDERSTATE",
127 "D3DERR_UNSUPPORTEDTEXTUREFILTER",
128 "D3DERR_TOOMANYPRIMITIVES",
129 "D3DERR_INVALIDMATRIX",
130 "D3DERR_TOOMANYVERTICES",
131 "D3DERR_CONFLICTINGTEXTUREPALETTE",
132 "D3DERR_INVALIDSTATEBLOCK",
133 "D3DERR_INBEGINSTATEBLOCK",
134 "D3DERR_NOTINBEGINSTATEBLOCK",
135])
136
137IDirect3D = Interface("IDirect3D", IUnknown)
138IDirect3D2 = Interface("IDirect3D2", IUnknown)
139IDirect3D3 = Interface("IDirect3D3", IUnknown)
140IDirect3D7 = Interface("IDirect3D7", IUnknown)
141IDirect3DDevice = Interface("IDirect3DDevice", IUnknown)
142IDirect3DDevice2 = Interface("IDirect3DDevice2", IUnknown)
143IDirect3DDevice3 = Interface("IDirect3DDevice3", IUnknown)
144IDirect3DDevice7 = Interface("IDirect3DDevice7", IUnknown)
145IDirect3DExecuteBuffer = Interface("IDirect3DExecuteBuffer", IUnknown)
146IDirect3DLight = Interface("IDirect3DLight", IUnknown)
147IDirect3DMaterial = Interface("IDirect3DMaterial", IUnknown)
148IDirect3DMaterial2 = Interface("IDirect3DMaterial2", IUnknown)
149IDirect3DMaterial3 = Interface("IDirect3DMaterial3", IUnknown)
150IDirect3DTexture = Interface("IDirect3DTexture", IUnknown)
151IDirect3DTexture2 = Interface("IDirect3DTexture2", IUnknown)
152IDirect3DViewport = Interface("IDirect3DViewport", IUnknown)
153IDirect3DViewport2 = Interface("IDirect3DViewport2", IDirect3DViewport)
154IDirect3DViewport3 = Interface("IDirect3DViewport3", IDirect3DViewport2)
155IDirect3DVertexBuffer = Interface("IDirect3DVertexBuffer", IUnknown)
156IDirect3DVertexBuffer7 = Interface("IDirect3DVertexBuffer7", IUnknown)
157
158LPUNKNOWN = WrapPointer(IUnknown)
159
160LPDIRECT3D = WrapPointer(IDirect3D)
161LPDIRECT3DDEVICE = WrapPointer(IDirect3DDevice)
162LPDIRECT3DEXECUTEBUFFER = WrapPointer(IDirect3DExecuteBuffer)
163LPDIRECT3DLIGHT = WrapPointer(IDirect3DLight)
164LPDIRECT3DMATERIAL = WrapPointer(IDirect3DMaterial)
165LPDIRECT3DTEXTURE = WrapPointer(IDirect3DTexture)
166LPDIRECT3DVIEWPORT = WrapPointer(IDirect3DViewport)
167
168LPDIRECT3D2 = WrapPointer(IDirect3D2)
169LPDIRECT3DDEVICE2 = WrapPointer(IDirect3DDevice2)
170LPDIRECT3DMATERIAL2 = WrapPointer(IDirect3DMaterial2)
171LPDIRECT3DTEXTURE2 = WrapPointer(IDirect3DTexture2)
172LPDIRECT3DVIEWPORT2 = WrapPointer(IDirect3DViewport2)
173
174LPDIRECT3D3 = WrapPointer(IDirect3D3)
175LPDIRECT3DDEVICE3 = WrapPointer(IDirect3DDevice3)
176LPDIRECT3DMATERIAL3 = WrapPointer(IDirect3DMaterial3)
177LPDIRECT3DVIEWPORT3 = WrapPointer(IDirect3DViewport3)
178LPDIRECT3DVERTEXBUFFER = WrapPointer(IDirect3DVertexBuffer)
179
180LPDIRECT3D7 = WrapPointer(IDirect3D7)
181LPDIRECT3DDEVICE7 = WrapPointer(IDirect3DDevice7)
182LPDIRECT3DVERTEXBUFFER7 = WrapPointer(IDirect3DVertexBuffer7)
183
184IDirect3D.methods += [
José Fonsecabb4421f2011-05-26 08:21:37 +0100185 Method(HRESULT, "Initialize", [(REFCLSID, "arg0")]),
186 Method(HRESULT, "EnumDevices", [(LPD3DENUMDEVICESCALLBACK, "arg0"), (LPVOID, "arg1")]),
187 Method(HRESULT, "CreateLight", [Out(Pointer(LPDIRECT3DLIGHT), "arg0"), (LPUNKNOWN, "arg1")]),
188 Method(HRESULT, "CreateMaterial", [Out(Pointer(LPDIRECT3DMATERIAL), "arg0"), (LPUNKNOWN, "arg1")]),
189 Method(HRESULT, "CreateViewport", [Out(Pointer(LPDIRECT3DVIEWPORT), "arg0"), (LPUNKNOWN, "arg1")]),
190 Method(HRESULT, "FindDevice", [(LPD3DFINDDEVICESEARCH, "arg0"), (LPD3DFINDDEVICERESULT, "arg1")]),
José Fonseca91af9232009-04-13 16:15:28 +0100191]
192
193IDirect3D2.methods += [
José Fonsecabb4421f2011-05-26 08:21:37 +0100194 Method(HRESULT, "EnumDevices", [(LPD3DENUMDEVICESCALLBACK, "arg0"), (LPVOID, "arg1")]),
195 Method(HRESULT, "CreateLight", [Out(Pointer(LPDIRECT3DLIGHT), "arg0"), (LPUNKNOWN, "arg1")]),
196 Method(HRESULT, "CreateMaterial", [Out(Pointer(LPDIRECT3DMATERIAL2), "arg0"), (LPUNKNOWN, "arg1")]),
197 Method(HRESULT, "CreateViewport", [Out(Pointer(LPDIRECT3DVIEWPORT2), "arg0"), (LPUNKNOWN, "arg1")]),
198 Method(HRESULT, "FindDevice", [(LPD3DFINDDEVICESEARCH, "arg0"), (LPD3DFINDDEVICERESULT, "arg1")]),
199 Method(HRESULT, "CreateDevice", [(REFCLSID, "arg0"), (LPDIRECTDRAWSURFACE, "arg1"), Out(Pointer(LPDIRECT3DDEVICE2), "arg2")]),
José Fonseca91af9232009-04-13 16:15:28 +0100200]
201
202IDirect3D3.methods += [
José Fonsecabb4421f2011-05-26 08:21:37 +0100203 Method(HRESULT, "EnumDevices", [(LPD3DENUMDEVICESCALLBACK, "arg0"), (LPVOID, "arg1")]),
204 Method(HRESULT, "CreateLight", [Out(Pointer(LPDIRECT3DLIGHT), "arg0"), (LPUNKNOWN, "arg1")]),
205 Method(HRESULT, "CreateMaterial", [Out(Pointer(LPDIRECT3DMATERIAL3), "arg0"), (LPUNKNOWN, "arg1")]),
206 Method(HRESULT, "CreateViewport", [Out(Pointer(LPDIRECT3DVIEWPORT3), "arg0"), (LPUNKNOWN, "arg1")]),
207 Method(HRESULT, "FindDevice", [(LPD3DFINDDEVICESEARCH, "arg0"), Out(LPD3DFINDDEVICERESULT, "arg1")]),
208 Method(HRESULT, "CreateDevice", [(REFCLSID, "arg0"), (LPDIRECTDRAWSURFACE4, "arg1"), Out(Pointer(LPDIRECT3DDEVICE3), "arg2"), (LPUNKNOWN, "arg3")]),
209 Method(HRESULT, "CreateVertexBuffer", [(LPD3DVERTEXBUFFERDESC, "arg0"), Out(Pointer(LPDIRECT3DVERTEXBUFFER), "arg1"), (DWORD, "arg2"), (LPUNKNOWN, "arg3")]),
210 Method(HRESULT, "EnumZBufferFormats", [(REFCLSID, "arg0"), (LPD3DENUMPIXELFORMATSCALLBACK, "arg1"), (LPVOID, "arg2")]),
José Fonseca91af9232009-04-13 16:15:28 +0100211 Method(HRESULT, "EvictManagedTextures", []),
212]
213
214IDirect3D7.methods += [
José Fonsecabb4421f2011-05-26 08:21:37 +0100215 Method(HRESULT, "EnumDevices", [(LPD3DENUMDEVICESCALLBACK7, "arg0"), (LPVOID, "arg1")]),
216 Method(HRESULT, "CreateDevice", [(REFCLSID, "arg0"), (LPDIRECTDRAWSURFACE7, "arg1"), Out(Pointer(LPDIRECT3DDEVICE7), "arg2")]),
217 Method(HRESULT, "CreateVertexBuffer", [(LPD3DVERTEXBUFFERDESC, "arg0"), Out(Pointer(LPDIRECT3DVERTEXBUFFER7), "arg1"), (DWORD, "arg2")]),
218 Method(HRESULT, "EnumZBufferFormats", [(REFCLSID, "arg0"), (LPD3DENUMPIXELFORMATSCALLBACK, "arg1"), (LPVOID, "arg2")]),
José Fonseca91af9232009-04-13 16:15:28 +0100219 Method(HRESULT, "EvictManagedTextures", []),
220]
221
222IDirect3DDevice.methods += [
José Fonsecabb4421f2011-05-26 08:21:37 +0100223 Method(HRESULT, "Initialize", [(LPDIRECT3D, "arg0"), (LPGUID, "arg1"), (LPD3DDEVICEDESC, "arg2")]),
224 Method(HRESULT, "GetCaps", [Out(LPD3DDEVICEDESC, "arg0"), Out(LPD3DDEVICEDESC, "arg1")]),
225 Method(HRESULT, "SwapTextureHandles", [(LPDIRECT3DTEXTURE, "arg0"), (LPDIRECT3DTEXTURE, "arg1")]),
226 Method(HRESULT, "CreateExecuteBuffer", [(LPD3DEXECUTEBUFFERDESC, "arg0"), Out(Pointer(LPDIRECT3DEXECUTEBUFFER), "arg1"), (LPUNKNOWN, "arg2")]),
227 Method(HRESULT, "GetStats", [(LPD3DSTATS, "arg0")]),
228 Method(HRESULT, "Execute", [(LPDIRECT3DEXECUTEBUFFER, "arg0"), (LPDIRECT3DVIEWPORT, "arg1"), (DWORD, "arg2")]),
229 Method(HRESULT, "AddViewport", [(LPDIRECT3DVIEWPORT, "arg0")]),
230 Method(HRESULT, "DeleteViewport", [(LPDIRECT3DVIEWPORT, "arg0")]),
231 Method(HRESULT, "NextViewport", [(LPDIRECT3DVIEWPORT, "arg0"), Out(Pointer(LPDIRECT3DVIEWPORT), "arg1"), (DWORD, "arg2")]),
232 Method(HRESULT, "Pick", [(LPDIRECT3DEXECUTEBUFFER, "arg0"), (LPDIRECT3DVIEWPORT, "arg1"), (DWORD, "arg2"), (LPD3DRECT, "arg3")]),
233 Method(HRESULT, "GetPickRecords", [(LPDWORD, "arg0"), (LPD3DPICKRECORD, "arg1")]),
234 Method(HRESULT, "EnumTextureFormats", [(LPD3DENUMTEXTUREFORMATSCALLBACK, "arg0"), (LPVOID, "arg1")]),
235 Method(HRESULT, "CreateMatrix", [Out(LPD3DMATRIXHANDLE, "arg0")]),
236 Method(HRESULT, "SetMatrix", [(D3DMATRIXHANDLE, "arg0"), (Const(LPD3DMATRIX), "arg1")]),
237 Method(HRESULT, "GetMatrix", [(D3DMATRIXHANDLE, "arg0"), Out(LPD3DMATRIX, "arg1")]),
238 Method(HRESULT, "DeleteMatrix", [(D3DMATRIXHANDLE, "arg0")]),
José Fonseca91af9232009-04-13 16:15:28 +0100239 Method(HRESULT, "BeginScene", []),
240 Method(HRESULT, "EndScene", []),
241 Method(HRESULT, "GetDirect3D", [OutPointer(LPDIRECT3D)]),
242]
243
244IDirect3DDevice2.methods += [
José Fonsecabb4421f2011-05-26 08:21:37 +0100245 Method(HRESULT, "GetCaps", [Out(LPD3DDEVICEDESC, "arg0"), Out(LPD3DDEVICEDESC, "arg1")]),
246 Method(HRESULT, "SwapTextureHandles", [(LPDIRECT3DTEXTURE2, "arg0"), (LPDIRECT3DTEXTURE2, "arg1")]),
247 Method(HRESULT, "GetStats", [Out(LPD3DSTATS, "arg0")]),
248 Method(HRESULT, "AddViewport", [(LPDIRECT3DVIEWPORT2, "arg0")]),
249 Method(HRESULT, "DeleteViewport", [(LPDIRECT3DVIEWPORT2, "arg0")]),
250 Method(HRESULT, "NextViewport", [(LPDIRECT3DVIEWPORT2, "arg0"), Out(Pointer(LPDIRECT3DVIEWPORT2), "arg1"), (DWORD, "arg2")]),
251 Method(HRESULT, "EnumTextureFormats", [(LPD3DENUMTEXTUREFORMATSCALLBACK, "arg0"), (LPVOID, "arg1")]),
José Fonseca91af9232009-04-13 16:15:28 +0100252 Method(HRESULT, "BeginScene", []),
253 Method(HRESULT, "EndScene", []),
José Fonsecabb4421f2011-05-26 08:21:37 +0100254 Method(HRESULT, "GetDirect3D", [Out(Pointer(LPDIRECT3D2), "arg0")]),
255 Method(HRESULT, "SetCurrentViewport", [(LPDIRECT3DVIEWPORT2, "arg0")]),
256 Method(HRESULT, "GetCurrentViewport", [Out(Pointer(LPDIRECT3DVIEWPORT2), "arg0")]),
257 Method(HRESULT, "SetRenderTarget", [(LPDIRECTDRAWSURFACE, "arg0"), (DWORD, "arg1")]),
258 Method(HRESULT, "GetRenderTarget", [Out(Pointer(LPDIRECTDRAWSURFACE), "arg0")]),
259 Method(HRESULT, "Begin", [(D3DPRIMITIVETYPE, "arg0"), (D3DVERTEXTYPE, "arg1"), (DWORD, "arg2")]),
260 Method(HRESULT, "BeginIndexed", [(D3DPRIMITIVETYPE, "arg0"), (D3DVERTEXTYPE, "arg1"), (LPVOID, "arg2"), (DWORD, "arg3"), (DWORD, "arg4")]),
261 Method(HRESULT, "Vertex", [(LPVOID, "arg0")]),
262 Method(HRESULT, "Index", [(WORD, "arg0")]),
263 Method(HRESULT, "End", [(DWORD, "arg0")]),
264 Method(HRESULT, "GetRenderState", [(D3DRENDERSTATETYPE, "arg0"), Out(LPDWORD, "arg1")]),
265 Method(HRESULT, "SetRenderState", [(D3DRENDERSTATETYPE, "arg0"), (DWORD, "arg1")]),
266 Method(HRESULT, "GetLightState", [(D3DLIGHTSTATETYPE, "arg0"), Out(LPDWORD, "arg1")]),
267 Method(HRESULT, "SetLightState", [(D3DLIGHTSTATETYPE, "arg0"), (DWORD, "arg1")]),
268 Method(HRESULT, "SetTransform", [(D3DTRANSFORMSTATETYPE, "arg0"), (LPD3DMATRIX, "arg1")]),
269 Method(HRESULT, "GetTransform", [(D3DTRANSFORMSTATETYPE, "arg0"), Out(LPD3DMATRIX, "arg1")]),
270 Method(HRESULT, "MultiplyTransform", [(D3DTRANSFORMSTATETYPE, "arg0"), Out(LPD3DMATRIX, "arg1")]),
271 Method(HRESULT, "DrawPrimitive", [(D3DPRIMITIVETYPE, "arg0"), (D3DVERTEXTYPE, "arg1"), (LPVOID, "arg2"), (DWORD, "arg3"), (DWORD, "arg4")]),
272 Method(HRESULT, "DrawIndexedPrimitive", [(D3DPRIMITIVETYPE, "arg0"), (D3DVERTEXTYPE, "arg1"), (LPVOID, "arg2"), (DWORD, "arg3"), (LPWORD, "arg4"), (DWORD, "arg5"), (DWORD, "arg6")]),
273 Method(HRESULT, "SetClipStatus", [(LPD3DCLIPSTATUS, "arg0")]),
274 Method(HRESULT, "GetClipStatus", [(LPD3DCLIPSTATUS, "arg0")]),
José Fonseca91af9232009-04-13 16:15:28 +0100275]
276
277IDirect3DDevice3.methods += [
José Fonsecabb4421f2011-05-26 08:21:37 +0100278 Method(HRESULT, "GetCaps", [Out(LPD3DDEVICEDESC, "arg0"), Out(LPD3DDEVICEDESC, "arg1")]),
279 Method(HRESULT, "GetStats", [Out(LPD3DSTATS, "arg0")]),
280 Method(HRESULT, "AddViewport", [(LPDIRECT3DVIEWPORT3, "arg0")]),
281 Method(HRESULT, "DeleteViewport", [(LPDIRECT3DVIEWPORT3, "arg0")]),
282 Method(HRESULT, "NextViewport", [(LPDIRECT3DVIEWPORT3, "arg0"), Out(Pointer(LPDIRECT3DVIEWPORT3), "arg1"), (DWORD, "arg2")]),
283 Method(HRESULT, "EnumTextureFormats", [(LPD3DENUMPIXELFORMATSCALLBACK, "arg0"), (LPVOID, "arg1")]),
José Fonseca91af9232009-04-13 16:15:28 +0100284 Method(HRESULT, "BeginScene", []),
285 Method(HRESULT, "EndScene", []),
José Fonsecabb4421f2011-05-26 08:21:37 +0100286 Method(HRESULT, "GetDirect3D", [Out(Pointer(LPDIRECT3D3), "arg0")]),
287 Method(HRESULT, "SetCurrentViewport", [(LPDIRECT3DVIEWPORT3, "arg0")]),
288 Method(HRESULT, "GetCurrentViewport", [Out(Pointer(LPDIRECT3DVIEWPORT3), "arg0")]),
289 Method(HRESULT, "SetRenderTarget", [(LPDIRECTDRAWSURFACE4, "arg0"), (DWORD, "arg1")]),
290 Method(HRESULT, "GetRenderTarget", [Out(Pointer(LPDIRECTDRAWSURFACE4), "arg0")]),
291 Method(HRESULT, "Begin", [(D3DPRIMITIVETYPE, "arg0"), (DWORD, "arg1"), (DWORD, "arg2")]),
292 Method(HRESULT, "BeginIndexed", [(D3DPRIMITIVETYPE, "arg0"), (DWORD, "arg1"), (LPVOID, "arg2"), (DWORD, "arg3"), (DWORD, "arg4")]),
293 Method(HRESULT, "Vertex", [(LPVOID, "arg0")]),
294 Method(HRESULT, "Index", [(WORD, "arg0")]),
295 Method(HRESULT, "End", [(DWORD, "arg0")]),
296 Method(HRESULT, "GetRenderState", [(D3DRENDERSTATETYPE, "arg0"), Out(LPDWORD, "arg1")]),
297 Method(HRESULT, "SetRenderState", [(D3DRENDERSTATETYPE, "arg0"), (DWORD, "arg1")]),
298 Method(HRESULT, "GetLightState", [(D3DLIGHTSTATETYPE, "arg0"), Out(LPDWORD, "arg1")]),
299 Method(HRESULT, "SetLightState", [(D3DLIGHTSTATETYPE, "arg0"), (DWORD, "arg1")]),
300 Method(HRESULT, "SetTransform", [(D3DTRANSFORMSTATETYPE, "arg0"), (LPD3DMATRIX, "arg1")]),
301 Method(HRESULT, "GetTransform", [(D3DTRANSFORMSTATETYPE, "arg0"), Out(LPD3DMATRIX, "arg1")]),
302 Method(HRESULT, "MultiplyTransform", [(D3DTRANSFORMSTATETYPE, "arg0"), Out(LPD3DMATRIX, "arg1")]),
303 Method(HRESULT, "DrawPrimitive", [(D3DPRIMITIVETYPE, "arg0"), (DWORD, "arg1"), (LPVOID, "arg2"), (DWORD, "arg3"), (DWORD, "arg4")]),
304 Method(HRESULT, "DrawIndexedPrimitive", [(D3DPRIMITIVETYPE, "arg0"), (DWORD, "arg1"), (LPVOID, "arg2"), (DWORD, "arg3"), (LPWORD, "arg4"), (DWORD, "arg5"), (DWORD, "arg6")]),
305 Method(HRESULT, "SetClipStatus", [(LPD3DCLIPSTATUS, "arg0")]),
306 Method(HRESULT, "GetClipStatus", [Out(LPD3DCLIPSTATUS, "arg0")]),
307 Method(HRESULT, "DrawPrimitiveStrided", [(D3DPRIMITIVETYPE, "arg0"), (DWORD, "arg1"), (LPD3DDRAWPRIMITIVESTRIDEDDATA, "arg2"), (DWORD, "arg3"), (DWORD, "arg4")]),
308 Method(HRESULT, "DrawIndexedPrimitiveStrided", [(D3DPRIMITIVETYPE, "arg0"), (DWORD, "arg1"), (LPD3DDRAWPRIMITIVESTRIDEDDATA, "arg2"), (DWORD, "arg3"), (LPWORD, "arg4"), (DWORD, "arg5"), (DWORD, "arg6")]),
309 Method(HRESULT, "DrawPrimitiveVB", [(D3DPRIMITIVETYPE, "arg0"), (LPDIRECT3DVERTEXBUFFER, "arg1"), (DWORD, "arg2"), (DWORD, "arg3"), (DWORD, "arg4")]),
310 Method(HRESULT, "DrawIndexedPrimitiveVB", [(D3DPRIMITIVETYPE, "arg0"), (LPDIRECT3DVERTEXBUFFER, "arg1"), (LPWORD, "arg2"), (DWORD, "arg3"), (DWORD, "arg4")]),
311 Method(HRESULT, "ComputeSphereVisibility", [(LPD3DVECTOR, "arg0"), (LPD3DVALUE, "arg1"), (DWORD, "arg2"), (DWORD, "arg3"), (LPDWORD, "arg4")]),
312 Method(HRESULT, "GetTexture", [(DWORD, "arg0"), Out(Pointer(LPDIRECT3DTEXTURE2), "arg1")]),
313 Method(HRESULT, "SetTexture", [(DWORD, "arg0"), (LPDIRECT3DTEXTURE2, "arg1")]),
314 Method(HRESULT, "GetTextureStageState", [(DWORD, "arg0"), (D3DTEXTURESTAGESTATETYPE, "arg1"), Out(LPDWORD, "arg2")]),
315 Method(HRESULT, "SetTextureStageState", [(DWORD, "arg0"), (D3DTEXTURESTAGESTATETYPE, "arg1"), (DWORD, "arg2")]),
316 Method(HRESULT, "ValidateDevice", [(LPDWORD, "arg0")]),
José Fonseca91af9232009-04-13 16:15:28 +0100317]
318
319IDirect3DDevice7.methods += [
José Fonsecabb4421f2011-05-26 08:21:37 +0100320 Method(HRESULT, "GetCaps", [Out(LPD3DDEVICEDESC7, "arg0")]),
321 Method(HRESULT, "EnumTextureFormats", [(LPD3DENUMPIXELFORMATSCALLBACK, "arg0"), (LPVOID, "arg1")]),
José Fonseca91af9232009-04-13 16:15:28 +0100322 Method(HRESULT, "BeginScene", []),
323 Method(HRESULT, "EndScene", []),
José Fonsecabb4421f2011-05-26 08:21:37 +0100324 Method(HRESULT, "GetDirect3D", [Out(Pointer(LPDIRECT3D7), "arg0")]),
325 Method(HRESULT, "SetRenderTarget", [(LPDIRECTDRAWSURFACE7, "arg0"), (DWORD, "arg1")]),
326 Method(HRESULT, "GetRenderTarget", [Out(Pointer(LPDIRECTDRAWSURFACE7), "arg0")]),
327 Method(HRESULT, "Clear", [(DWORD, "arg0"), (LPD3DRECT, "arg1"), (DWORD, "arg2"), (D3DCOLOR, "arg3"), (D3DVALUE, "arg4"), (DWORD, "arg5")]),
328 Method(HRESULT, "SetTransform", [(D3DTRANSFORMSTATETYPE, "arg0"), (LPD3DMATRIX, "arg1")]),
329 Method(HRESULT, "GetTransform", [(D3DTRANSFORMSTATETYPE, "arg0"), Out(LPD3DMATRIX, "arg1")]),
330 Method(HRESULT, "SetViewport", [(LPD3DVIEWPORT7, "arg0")]),
331 Method(HRESULT, "MultiplyTransform", [(D3DTRANSFORMSTATETYPE, "arg0"), (LPD3DMATRIX, "arg1")]),
332 Method(HRESULT, "GetViewport", [Out(LPD3DVIEWPORT7, "arg0")]),
333 Method(HRESULT, "SetMaterial", [(LPD3DMATERIAL7, "arg0")]),
334 Method(HRESULT, "GetMaterial", [Out(LPD3DMATERIAL7, "arg0")]),
335 Method(HRESULT, "SetLight", [(DWORD, "arg0"), (LPD3DLIGHT7, "arg1")]),
336 Method(HRESULT, "GetLight", [(DWORD, "arg0"), (LPD3DLIGHT7, "arg1")]),
337 Method(HRESULT, "SetRenderState", [(D3DRENDERSTATETYPE, "arg0"), (DWORD, "arg1")]),
338 Method(HRESULT, "GetRenderState", [(D3DRENDERSTATETYPE, "arg0"), Out(LPDWORD, "arg1")]),
José Fonseca91af9232009-04-13 16:15:28 +0100339 Method(HRESULT, "BeginStateBlock", []),
José Fonsecabb4421f2011-05-26 08:21:37 +0100340 Method(HRESULT, "EndStateBlock", [Out(LPDWORD, "arg0")]),
341 Method(HRESULT, "PreLoad", [(LPDIRECTDRAWSURFACE7, "arg0")]),
342 Method(HRESULT, "DrawPrimitive", [(D3DPRIMITIVETYPE, "arg0"), (DWORD, "arg1"), (LPVOID, "arg2"), (DWORD, "arg3"), (DWORD, "arg4")]),
343 Method(HRESULT, "DrawIndexedPrimitive", [(D3DPRIMITIVETYPE, "arg0"), (DWORD, "arg1"), (LPVOID, "arg2"), (DWORD, "arg3"), (LPWORD, "arg4"), (DWORD, "arg5"), (DWORD, "arg6")]),
344 Method(HRESULT, "SetClipStatus", [(LPD3DCLIPSTATUS, "arg0")]),
345 Method(HRESULT, "GetClipStatus", [Out(LPD3DCLIPSTATUS, "arg0")]),
346 Method(HRESULT, "DrawPrimitiveStrided", [(D3DPRIMITIVETYPE, "arg0"), (DWORD, "arg1"), (LPD3DDRAWPRIMITIVESTRIDEDDATA, "arg2"), (DWORD, "arg3"), (DWORD, "arg4")]),
347 Method(HRESULT, "DrawIndexedPrimitiveStrided", [(D3DPRIMITIVETYPE, "arg0"), (DWORD, "arg1"), (LPD3DDRAWPRIMITIVESTRIDEDDATA, "arg2"), (DWORD, "arg3"), (LPWORD, "arg4"), (DWORD, "arg5"), (DWORD, "arg6")]),
348 Method(HRESULT, "DrawPrimitiveVB", [(D3DPRIMITIVETYPE, "arg0"), (LPDIRECT3DVERTEXBUFFER7, "arg1"), (DWORD, "arg2"), (DWORD, "arg3"), (DWORD, "arg4")]),
349 Method(HRESULT, "DrawIndexedPrimitiveVB", [(D3DPRIMITIVETYPE, "arg0"), (LPDIRECT3DVERTEXBUFFER7, "arg1"), (DWORD, "arg2"), (DWORD, "arg3"), (LPWORD, "arg4"), (DWORD, "arg5"), (DWORD, "arg6")]),
350 Method(HRESULT, "ComputeSphereVisibility", [(LPD3DVECTOR, "arg0"), (LPD3DVALUE, "arg1"), (DWORD, "arg2"), (DWORD, "arg3"), (LPDWORD, "arg4")]),
351 Method(HRESULT, "GetTexture", [(DWORD, "arg0"), Out(Pointer(LPDIRECTDRAWSURFACE7), "arg1")]),
352 Method(HRESULT, "SetTexture", [(DWORD, "arg0"), (LPDIRECTDRAWSURFACE7, "arg1")]),
353 Method(HRESULT, "GetTextureStageState", [(DWORD, "arg0"), (D3DTEXTURESTAGESTATETYPE, "arg1"), Out(LPDWORD, "arg2")]),
354 Method(HRESULT, "SetTextureStageState", [(DWORD, "arg0"), (D3DTEXTURESTAGESTATETYPE, "arg1"), (DWORD, "arg2")]),
355 Method(HRESULT, "ValidateDevice", [Out(LPDWORD, "arg0")]),
356 Method(HRESULT, "ApplyStateBlock", [(DWORD, "arg0")]),
357 Method(HRESULT, "CaptureStateBlock", [(DWORD, "arg0")]),
358 Method(HRESULT, "DeleteStateBlock", [(DWORD, "arg0")]),
359 Method(HRESULT, "CreateStateBlock", [(D3DSTATEBLOCKTYPE, "arg0"), Out(LPDWORD, "arg1")]),
360 Method(HRESULT, "Load", [(LPDIRECTDRAWSURFACE7, "arg0"), (LPPOINT, "arg1"), (LPDIRECTDRAWSURFACE7, "arg2"), (LPRECT, "arg3"), (DWORD, "arg4")]),
361 Method(HRESULT, "LightEnable", [(DWORD, "arg0"), (BOOL, "arg1")]),
362 Method(HRESULT, "GetLightEnable", [(DWORD, "arg0"), Out(Pointer(BOOL), "arg1")]),
363 Method(HRESULT, "SetClipPlane", [(DWORD, "arg0"), (Pointer(D3DVALUE), "arg1")]),
364 Method(HRESULT, "GetClipPlane", [(DWORD, "arg0"), Out(Pointer(D3DVALUE), "arg1")]),
365 Method(HRESULT, "GetInfo", [(DWORD, "arg0"), Out(LPVOID, "arg1"), (DWORD, "arg2")]),
José Fonseca91af9232009-04-13 16:15:28 +0100366]
367
368IDirect3DExecuteBuffer.methods += [
José Fonsecabb4421f2011-05-26 08:21:37 +0100369 Method(HRESULT, "Initialize", [(LPDIRECT3DDEVICE, "arg0"), (LPD3DEXECUTEBUFFERDESC, "arg1")]),
370 Method(HRESULT, "Lock", [(LPD3DEXECUTEBUFFERDESC, "arg0")]),
José Fonseca91af9232009-04-13 16:15:28 +0100371 Method(HRESULT, "Unlock", []),
José Fonsecabb4421f2011-05-26 08:21:37 +0100372 Method(HRESULT, "SetExecuteData", [(LPD3DEXECUTEDATA, "arg0")]),
373 Method(HRESULT, "GetExecuteData", [Out(LPD3DEXECUTEDATA, "arg0")]),
374 Method(HRESULT, "Validate", [(LPDWORD, "arg0"), (LPD3DVALIDATECALLBACK, "arg1"), (LPVOID, "arg2"), (DWORD, "arg3")]),
375 Method(HRESULT, "Optimize", [(DWORD, "arg0")]),
José Fonseca91af9232009-04-13 16:15:28 +0100376]
377
378IDirect3DLight.methods += [
José Fonsecabb4421f2011-05-26 08:21:37 +0100379 Method(HRESULT, "Initialize", [(LPDIRECT3D, "arg0")]),
380 Method(HRESULT, "SetLight", [(LPD3DLIGHT, "arg0")]),
381 Method(HRESULT, "GetLight", [Out(LPD3DLIGHT, "arg0")]),
José Fonseca91af9232009-04-13 16:15:28 +0100382]
383
384IDirect3DMaterial.methods += [
José Fonsecabb4421f2011-05-26 08:21:37 +0100385 Method(HRESULT, "Initialize", [(LPDIRECT3D, "arg0")]),
386 Method(HRESULT, "SetMaterial", [(LPD3DMATERIAL, "arg0")]),
387 Method(HRESULT, "GetMaterial", [Out(LPD3DMATERIAL, "arg0")]),
388 Method(HRESULT, "GetHandle", [(LPDIRECT3DDEVICE, "arg0"), Out(LPD3DMATERIALHANDLE, "arg1")]),
José Fonseca91af9232009-04-13 16:15:28 +0100389 Method(HRESULT, "Reserve", []),
390 Method(HRESULT, "Unreserve", []),
391]
392
393IDirect3DMaterial2.methods += [
José Fonsecabb4421f2011-05-26 08:21:37 +0100394 Method(HRESULT, "SetMaterial", [(LPD3DMATERIAL, "arg0")]),
395 Method(HRESULT, "GetMaterial", [Out(LPD3DMATERIAL, "arg0")]),
396 Method(HRESULT, "GetHandle", [(LPDIRECT3DDEVICE2, "arg0"), Out(LPD3DMATERIALHANDLE, "arg1")]),
José Fonseca91af9232009-04-13 16:15:28 +0100397]
398
399IDirect3DMaterial3.methods += [
José Fonsecabb4421f2011-05-26 08:21:37 +0100400 Method(HRESULT, "SetMaterial", [(LPD3DMATERIAL, "arg0")]),
401 Method(HRESULT, "GetMaterial", [Out(LPD3DMATERIAL, "arg0")]),
402 Method(HRESULT, "GetHandle", [(LPDIRECT3DDEVICE3, "arg0"), Out(LPD3DMATERIALHANDLE, "arg1")]),
José Fonseca91af9232009-04-13 16:15:28 +0100403]
404
405IDirect3DTexture.methods += [
José Fonsecabb4421f2011-05-26 08:21:37 +0100406 Method(HRESULT, "Initialize", [(LPDIRECT3DDEVICE, "arg0"), (LPDIRECTDRAWSURFACE, "arg1")]),
407 Method(HRESULT, "GetHandle", [(LPDIRECT3DDEVICE, "arg0"), (LPD3DTEXTUREHANDLE, "arg1")]),
408 Method(HRESULT, "PaletteChanged", [(DWORD, "arg0"), (DWORD, "arg1")]),
409 Method(HRESULT, "Load", [(LPDIRECT3DTEXTURE, "arg0")]),
José Fonseca91af9232009-04-13 16:15:28 +0100410 Method(HRESULT, "Unload", []),
411]
412
413IDirect3DTexture2.methods += [
José Fonsecabb4421f2011-05-26 08:21:37 +0100414 Method(HRESULT, "GetHandle", [(LPDIRECT3DDEVICE2, "arg0"), (LPD3DTEXTUREHANDLE, "arg1")]),
415 Method(HRESULT, "PaletteChanged", [(DWORD, "arg0"), (DWORD, "arg1")]),
416 Method(HRESULT, "Load", [(LPDIRECT3DTEXTURE2, "arg0")]),
José Fonseca91af9232009-04-13 16:15:28 +0100417]
418
419IDirect3DViewport.methods += [
José Fonsecabb4421f2011-05-26 08:21:37 +0100420 Method(HRESULT, "Initialize", [(LPDIRECT3D, "arg0")]),
421 Method(HRESULT, "GetViewport", [Out(LPD3DVIEWPORT, "arg0")]),
422 Method(HRESULT, "SetViewport", [(LPD3DVIEWPORT, "arg0")]),
423 Method(HRESULT, "TransformVertices", [(DWORD, "arg0"), (LPD3DTRANSFORMDATA, "arg1"), (DWORD, "arg2"), (LPDWORD, "arg3")]),
424 Method(HRESULT, "LightElements", [(DWORD, "arg0"), (LPD3DLIGHTDATA, "arg1")]),
425 Method(HRESULT, "SetBackground", [(D3DMATERIALHANDLE, "arg0")]),
426 Method(HRESULT, "GetBackground", [Out(LPD3DMATERIALHANDLE, "arg0"), Out(LPBOOL, "arg1")]),
427 Method(HRESULT, "SetBackgroundDepth", [(LPDIRECTDRAWSURFACE, "arg0")]),
428 Method(HRESULT, "GetBackgroundDepth", [Out(Pointer(LPDIRECTDRAWSURFACE), "arg0"), Out(LPBOOL, "arg1")]),
429 Method(HRESULT, "Clear", [(DWORD, "arg0"), (LPD3DRECT, "arg1"), (DWORD, "arg2")]),
430 Method(HRESULT, "AddLight", [(LPDIRECT3DLIGHT, "arg0")]),
431 Method(HRESULT, "DeleteLight", [(LPDIRECT3DLIGHT, "arg0")]),
432 Method(HRESULT, "NextLight", [(LPDIRECT3DLIGHT, "arg0"), Out(Pointer(LPDIRECT3DLIGHT), "arg1"), (DWORD, "arg2")]),
José Fonseca91af9232009-04-13 16:15:28 +0100433]
434
435IDirect3DViewport2.methods += [
José Fonsecabb4421f2011-05-26 08:21:37 +0100436 Method(HRESULT, "GetViewport2", [Out(LPD3DVIEWPORT2, "arg0")]),
437 Method(HRESULT, "SetViewport2", [(LPD3DVIEWPORT2, "arg0")]),
José Fonseca91af9232009-04-13 16:15:28 +0100438]
439
440IDirect3DViewport3.methods += [
José Fonsecabb4421f2011-05-26 08:21:37 +0100441 Method(HRESULT, "SetBackgroundDepth2", [(LPDIRECTDRAWSURFACE4, "arg0")]),
442 Method(HRESULT, "GetBackgroundDepth2", [Out(Pointer(LPDIRECTDRAWSURFACE4), "arg0"), (LPBOOL, "arg1")]),
443 Method(HRESULT, "Clear2", [(DWORD, "arg0"), (LPD3DRECT, "arg1"), (DWORD, "arg2"), (D3DCOLOR, "arg3"), (D3DVALUE, "arg4"), (DWORD, "arg5")]),
José Fonseca91af9232009-04-13 16:15:28 +0100444]
445
446IDirect3DVertexBuffer.methods += [
José Fonsecabb4421f2011-05-26 08:21:37 +0100447 Method(HRESULT, "Lock", [(DWORD, "arg0"), Out(Pointer(LPVOID), "arg1"), (LPDWORD, "arg2")]),
José Fonseca91af9232009-04-13 16:15:28 +0100448 Method(HRESULT, "Unlock", []),
José Fonsecabb4421f2011-05-26 08:21:37 +0100449 Method(HRESULT, "ProcessVertices", [(DWORD, "arg0"), (DWORD, "arg1"), (DWORD, "arg2"), (LPDIRECT3DVERTEXBUFFER, "arg3"), (DWORD, "arg4"), (LPDIRECT3DDEVICE3, "arg5"), (DWORD, "arg6")]),
450 Method(HRESULT, "GetVertexBufferDesc", [Out(LPD3DVERTEXBUFFERDESC, "arg0")]),
451 Method(HRESULT, "Optimize", [(LPDIRECT3DDEVICE3, "arg0"), (DWORD, "arg1")]),
José Fonseca91af9232009-04-13 16:15:28 +0100452]
453
454IDirect3DVertexBuffer7.methods += [
José Fonsecabb4421f2011-05-26 08:21:37 +0100455 Method(HRESULT, "Lock", [(DWORD, "arg0"), Out(Pointer(LPVOID), "arg1"), (LPDWORD, "arg2")]),
José Fonseca91af9232009-04-13 16:15:28 +0100456 Method(HRESULT, "Unlock", []),
José Fonsecabb4421f2011-05-26 08:21:37 +0100457 Method(HRESULT, "ProcessVertices", [(DWORD, "arg0"), (DWORD, "arg1"), (DWORD, "arg2"), (LPDIRECT3DVERTEXBUFFER7, "arg3"), (DWORD, "arg4"), (LPDIRECT3DDEVICE7, "arg5"), (DWORD, "arg6")]),
458 Method(HRESULT, "GetVertexBufferDesc", [Out(LPD3DVERTEXBUFFERDESC, "arg0")]),
459 Method(HRESULT, "Optimize", [(LPDIRECT3DDEVICE7, "arg0"), (DWORD, "arg1")]),
460 Method(HRESULT, "ProcessVerticesStrided", [(DWORD, "arg0"), (DWORD, "arg1"), (DWORD, "arg2"), (LPD3DDRAWPRIMITIVESTRIDEDDATA, "arg3"), (DWORD, "arg4"), (LPDIRECT3DDEVICE7, "arg5"), (DWORD, "arg6")]),
José Fonseca91af9232009-04-13 16:15:28 +0100461]
José Fonseca8384ccb2011-05-25 10:12:02 +0100462
463interfaces = [
464 IDirectDraw,
465 IDirectDraw2,
466 IDirectDraw4,
467 IDirectDraw7,
468 IDirect3D,
469 IDirect3D2,
470 IDirect3D3,
471 IDirect3D7,
472]
473
474ddraw.add_interfaces(interfaces)
475
476
477class DDrawTracer(DllTracer):
478
José Fonsecabb8760b2011-05-25 23:21:18 +0100479 def trace_function_impl_body(self, function):
480 if function.name in ('AcquireDDThreadLock', 'ReleaseDDThreadLock'):
481 self.dispatch_function(function)
482 return
483
484 DllTracer.trace_function_impl_body(self, function)
485
José Fonseca8384ccb2011-05-25 10:12:02 +0100486 def wrap_arg(self, function, arg):
487 if function.name == 'DirectDrawCreateEx' and arg.name == 'lplpDD':
488 print ' if (*lplpDD) {'
489 for iface in interfaces:
490 print ' if (iid == IID_%s) {' % iface.name
491 print ' *lplpDD = (LPVOID) new Wrap%s((%s *)*lplpDD);' % (iface.name, iface.name)
492 print ' }'
493 print ' }'
José Fonseca8384ccb2011-05-25 10:12:02 +0100494
José Fonsecabb8760b2011-05-25 23:21:18 +0100495 DllTracer.wrap_arg(self, function, arg)
José Fonseca8384ccb2011-05-25 10:12:02 +0100496
497
498if __name__ == '__main__':
499 print '#define INITGUID'
500 print '#include <windows.h>'
501 print '#include <ddraw.h>'
502 print '#include <d3d.h>'
503 print
504 print '''
505
506#ifndef D3DLIGHT_PARALLELPOINT
507#define D3DLIGHT_PARALLELPOINT (D3DLIGHTTYPE)4
508#endif
509
510#ifndef D3DLIGHT_GLSPOT
511#define D3DLIGHT_GLSPOT (D3DLIGHTTYPE)5
512#endif
513
514'''
515 print '#include "trace_writer.hpp"'
516 print '#include "os.hpp"'
517 print
518 tracer = DDrawTracer('ddraw.dll')
519 tracer.trace_api(ddraw)