]> git.cworth.org Git - apitrace/blob - d3dtypes.py
Basic support for tracing d3d7.
[apitrace] / d3dtypes.py
1 #############################################################################
2 #
3 # Copyright 2008 Tungsten Graphics, Inc.
4 #
5 # This program is free software: you can redistribute it and/or modify it
6 # under the terms of the GNU Lesser General Public License as published
7 # by the Free Software Foundation, either version 3 of the License, or
8 # (at your option) any later version.
9 #
10 # This program is distributed in the hope that it will be useful,
11 # but WITHOUT ANY WARRANTY; without even the implied warranty of
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 # GNU Lesser General Public License for more details.
14 #
15 # You should have received a copy of the GNU Lesser General Public License
16 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
17 #
18 #############################################################################
19
20 """d3dtypes.h"""
21
22 from windows import *
23 from ddraw import *
24
25 D3DVALUE = Float
26 LPD3DVALUE = Pointer(Float)
27 D3DFIXED = LONG
28
29 LPD3DVALIDATECALLBACK = LPVOID
30 LPD3DENUMTEXTUREFORMATSCALLBACK = LPVOID
31 LPD3DENUMPIXELFORMATSCALLBACK = LPVOID
32
33 D3DCOLOR = DWORD
34 LPD3DCOLOR = Pointer(D3DCOLOR)
35
36 D3DMATERIALHANDLE = DWORD
37 LPD3DMATERIALHANDLE = Pointer(D3DMATERIALHANDLE)
38
39 D3DTEXTUREHANDLE = DWORD
40 LPD3DTEXTUREHANDLE = Pointer(D3DTEXTUREHANDLE)
41
42 D3DMATRIXHANDLE = DWORD
43 LPD3DMATRIXHANDLE = Pointer(D3DMATRIXHANDLE)
44
45 D3DCOLORVALUE = Struct("D3DCOLORVALUE", [
46     (D3DVALUE, "r"),
47     (D3DVALUE, "g"),
48     (D3DVALUE, "b"),
49     (D3DVALUE, "a"),
50 ])
51 LPD3DCOLORVALUE = Pointer(D3DCOLORVALUE)
52
53 D3DRECT = Struct("D3DRECT", [
54     (LONG, "x1"),
55     (LONG, "y1"),
56     (LONG, "x2"),
57     (LONG, "y2"),
58 ])
59 LPD3DRECT = Pointer(D3DRECT)
60
61 D3DVECTOR = Struct("D3DVECTOR", [
62     (D3DVALUE, "x"),
63     (D3DVALUE, "y"),
64     (D3DVALUE, "z"),
65 ])
66 LPD3DVECTOR = Pointer(D3DVECTOR)
67
68 D3DHVERTEX = Struct("D3DHVERTEX", [
69     (DWORD, "dwFlags"),
70     (D3DVALUE, "hx"),
71     (D3DVALUE, "hy"),
72     (D3DVALUE, "hz"),
73 ])
74 LPD3DHVERTEX = Pointer(D3DHVERTEX)
75
76 D3DTLVERTEX = Struct("D3DTLVERTEX", [
77     (D3DVALUE, "sx"),
78     (D3DVALUE, "sy"),
79     (D3DVALUE, "sz"),
80     (D3DVALUE, "rhw"),
81     (D3DCOLOR, "color"),
82     (D3DCOLOR, "specular"),
83     (D3DVALUE, "tu"),
84     (D3DVALUE, "tv"),
85 ])
86 LPD3DTLVERTEX = Pointer(D3DTLVERTEX)
87
88 D3DLVERTEX = Struct("D3DLVERTEX", [
89     (D3DVALUE, "x"),
90     (D3DVALUE, "y"),
91     (D3DVALUE, "z"),
92     (DWORD, "dwReserved"),
93     (D3DCOLOR, "color"),
94     (D3DCOLOR, "specular"),
95     (D3DVALUE, "tu"),
96     (D3DVALUE, "tv"),
97 ])
98 LPD3DLVERTEX = Pointer(D3DLVERTEX)
99
100 D3DVERTEX = Struct("D3DVERTEX", [
101     (D3DVALUE, "x"),
102     (D3DVALUE, "y"),
103     (D3DVALUE, "z"),
104     (D3DVALUE, "nx"),
105     (D3DVALUE, "ny"),
106     (D3DVALUE, "nz"),
107     (D3DVALUE, "tu"),
108     (D3DVALUE, "tv"),
109 ])
110 LPD3DVERTEX = Pointer(D3DVERTEX)
111
112 D3DMATRIX = Struct("D3DMATRIX", [
113     (D3DVALUE, "m[4][4]"),
114 ])
115 LPD3DMATRIX = Pointer(D3DMATRIX)
116
117 D3DVIEWPORT = Struct("D3DVIEWPORT", [
118     (DWORD, "dwSize"),
119     (DWORD, "dwX"),
120     (DWORD, "dwY"),
121     (DWORD, "dwWidth"),
122     (DWORD, "dwHeight"),
123     (D3DVALUE, "dvScaleX"),
124     (D3DVALUE, "dvScaleY"),
125     (D3DVALUE, "dvMaxX"),
126     (D3DVALUE, "dvMaxY"),
127     (D3DVALUE, "dvMinZ"),
128     (D3DVALUE, "dvMaxZ"),
129 ])
130 LPD3DVIEWPORT = Pointer(D3DVIEWPORT)
131
132 D3DVIEWPORT2 = Struct("D3DVIEWPORT2", [
133     (DWORD, "dwSize"),
134     (DWORD, "dwX"),
135     (DWORD, "dwY"),
136     (DWORD, "dwWidth"),
137     (DWORD, "dwHeight"),
138     (D3DVALUE, "dvClipX"),
139     (D3DVALUE, "dvClipY"),
140     (D3DVALUE, "dvClipWidth"),
141     (D3DVALUE, "dvClipHeight"),
142     (D3DVALUE, "dvMinZ"),
143     (D3DVALUE, "dvMaxZ"),
144 ])
145 LPD3DVIEWPORT2 = Pointer(D3DVIEWPORT2)
146
147 D3DVIEWPORT7 = Struct("D3DVIEWPORT7", [
148     (DWORD, "dwX"),
149     (DWORD, "dwY"),
150     (DWORD, "dwWidth"),
151     (DWORD, "dwHeight"),
152     (D3DVALUE, "dvMinZ"),
153     (D3DVALUE, "dvMaxZ"),
154 ])
155 LPD3DVIEWPORT7 = Pointer(D3DVIEWPORT7)
156
157 D3DCLIP = Flags(DWORD, [
158     "D3DCLIP_LEFT",
159     "D3DCLIP_RIGHT",
160     "D3DCLIP_TOP",
161     "D3DCLIP_BOTTOM",
162     "D3DCLIP_FRONT",
163     "D3DCLIP_BACK",
164     "D3DCLIP_GEN0",
165     "D3DCLIP_GEN1",
166     "D3DCLIP_GEN2",
167     "D3DCLIP_GEN3",
168     "D3DCLIP_GEN4",
169     "D3DCLIP_GEN5",
170 ])
171
172 D3DSTATUS = Flags(DWORD, [
173     "D3DSTATUS_DEFAULT",
174     "D3DSTATUS_CLIPUNIONALL",
175     "D3DSTATUS_CLIPUNIONLEFT",
176     "D3DSTATUS_CLIPUNIONRIGHT",
177     "D3DSTATUS_CLIPUNIONTOP",
178     "D3DSTATUS_CLIPUNIONBOTTOM",
179     "D3DSTATUS_CLIPUNIONFRONT",
180     "D3DSTATUS_CLIPUNIONBACK",
181     "D3DSTATUS_CLIPUNIONGEN0",
182     "D3DSTATUS_CLIPUNIONGEN1",
183     "D3DSTATUS_CLIPUNIONGEN2",
184     "D3DSTATUS_CLIPUNIONGEN3",
185     "D3DSTATUS_CLIPUNIONGEN4",
186     "D3DSTATUS_CLIPUNIONGEN5",
187     "D3DSTATUS_CLIPINTERSECTIONALL",
188     "D3DSTATUS_CLIPINTERSECTIONLEFT",
189     "D3DSTATUS_CLIPINTERSECTIONRIGHT",
190     "D3DSTATUS_CLIPINTERSECTIONTOP",
191     "D3DSTATUS_CLIPINTERSECTIONBOTTOM",
192     "D3DSTATUS_CLIPINTERSECTIONFRONT",
193     "D3DSTATUS_CLIPINTERSECTIONBACK",
194     "D3DSTATUS_CLIPINTERSECTIONGEN0",
195     "D3DSTATUS_CLIPINTERSECTIONGEN1",
196     "D3DSTATUS_CLIPINTERSECTIONGEN2",
197     "D3DSTATUS_CLIPINTERSECTIONGEN3",
198     "D3DSTATUS_CLIPINTERSECTIONGEN4",
199     "D3DSTATUS_CLIPINTERSECTIONGEN5",
200     "D3DSTATUS_ZNOTVISIBLE",
201 ])
202
203 D3DTRANSFORM = Flags(DWORD, [
204     "D3DTRANSFORM_CLIPPED",
205     "D3DTRANSFORM_UNCLIPPED",
206 ])
207
208 D3DTRANSFORMDATA = Struct("D3DTRANSFORMDATA", [
209     (DWORD, "dwSize"),
210     (LPVOID, "lpIn"),
211     (DWORD, "dwInSize"),
212     (LPVOID, "lpOut"),
213     (DWORD, "dwOutSize"),
214     (LPD3DHVERTEX, "lpHOut"),
215     (DWORD, "dwClip"),
216     (DWORD, "dwClipIntersection"),
217     (DWORD, "dwClipUnion"),
218     (D3DRECT, "drExtent"),
219 ])
220 LPD3DTRANSFORMDATA = Pointer(D3DTRANSFORMDATA)
221
222 D3DLIGHTINGELEMENT = Struct("D3DLIGHTINGELEMENT", [
223     (D3DVECTOR, "dvPosition"),
224     (D3DVECTOR, "dvNormal"),
225 ])
226 LPD3DLIGHTINGELEMENT = Pointer(D3DLIGHTINGELEMENT)
227
228 D3DMATERIAL = Struct("D3DMATERIAL", [
229     (DWORD, "dwSize"),
230     (D3DCOLORVALUE, "diffuse"),
231     (D3DCOLORVALUE, "ambient"),
232     (D3DCOLORVALUE, "specular"),
233     (D3DCOLORVALUE, "emissive"),
234     (D3DVALUE, "power"),
235     (D3DTEXTUREHANDLE, "hTexture"),
236     (DWORD, "dwRampSize"),
237 ])
238 LPD3DMATERIAL = Pointer(D3DMATERIAL)
239
240 D3DMATERIAL7 = Struct("D3DMATERIAL7", [
241     (D3DCOLORVALUE, "diffuse"),
242     (D3DCOLORVALUE, "ambient"),
243     (D3DCOLORVALUE, "specular"),
244     (D3DCOLORVALUE, "emissive"),
245     (D3DVALUE, "power"),
246 ])
247 LPD3DMATERIAL7 = Pointer(D3DMATERIAL7)
248
249 D3DLIGHTTYPE = Enum("D3DLIGHTTYPE", [
250     "D3DLIGHT_POINT",
251     "D3DLIGHT_SPOT",
252     "D3DLIGHT_DIRECTIONAL",
253     "D3DLIGHT_PARALLELPOINT",
254     "D3DLIGHT_GLSPOT",
255     "D3DLIGHT_FORCE_DWORD",
256 ])
257
258 D3DLIGHT = Struct("D3DLIGHT", [
259     (DWORD, "dwSize"),
260     (D3DLIGHTTYPE, "dltType"),
261     (D3DCOLORVALUE, "dcvColor"),
262     (D3DVECTOR, "dvPosition"),
263     (D3DVECTOR, "dvDirection"),
264     (D3DVALUE, "dvRange"),
265     (D3DVALUE, "dvFalloff"),
266     (D3DVALUE, "dvAttenuation0"),
267     (D3DVALUE, "dvAttenuation1"),
268     (D3DVALUE, "dvAttenuation2"),
269     (D3DVALUE, "dvTheta"),
270     (D3DVALUE, "dvPhi"),
271 ])
272 LPD3DLIGHT = Pointer(D3DLIGHT)
273
274 D3DLIGHT7 = Struct("D3DLIGHT7", [
275     (D3DLIGHTTYPE, "dltType"),
276     (D3DCOLORVALUE, "dcvDiffuse"),
277     (D3DCOLORVALUE, "dcvSpecular"),
278     (D3DCOLORVALUE, "dcvAmbient"),
279     (D3DVECTOR, "dvPosition"),
280     (D3DVECTOR, "dvDirection"),
281     (D3DVALUE, "dvRange"),
282     (D3DVALUE, "dvFalloff"),
283     (D3DVALUE, "dvAttenuation0"),
284     (D3DVALUE, "dvAttenuation1"),
285     (D3DVALUE, "dvAttenuation2"),
286     (D3DVALUE, "dvTheta"),
287     (D3DVALUE, "dvPhi"),
288 ])
289 LPD3DLIGHT7 = Pointer(D3DLIGHT7)
290
291 D3DLIGHTFLAGS = Flags(DWORD, [
292     "D3DLIGHT_ACTIVE",
293     "D3DLIGHT_NO_SPECULAR",
294     "D3DLIGHT_ALL",
295 ])
296
297 D3DLIGHT2 = Struct("D3DLIGHT2", [
298     (DWORD, "dwSize"),
299     (D3DLIGHTTYPE, "dltType"),
300     (D3DCOLORVALUE, "dcvColor"),
301     (D3DVECTOR, "dvPosition"),
302     (D3DVECTOR, "dvDirection"),
303     (D3DVALUE, "dvRange"),
304     (D3DVALUE, "dvFalloff"),
305     (D3DVALUE, "dvAttenuation0"),
306     (D3DVALUE, "dvAttenuation1"),
307     (D3DVALUE, "dvAttenuation2"),
308     (D3DVALUE, "dvTheta"),
309     (D3DVALUE, "dvPhi"),
310     (DWORD, "dwFlags"),
311 ])
312 LPD3DLIGHT2 = Pointer(D3DLIGHT2)
313
314 D3DLIGHTDATA = Struct("D3DLIGHTDATA", [
315     (DWORD, "dwSize"),
316     (LPD3DLIGHTINGELEMENT, "lpIn"),
317     (DWORD, "dwInSize"),
318     (LPD3DTLVERTEX, "lpOut"),
319     (DWORD, "dwOutSize"),
320 ])
321 LPD3DLIGHTDATA = Pointer(D3DLIGHTDATA)
322
323 D3DCOLOR = Flags(DWORD, [
324     "D3DCOLOR_MONO",
325     "D3DCOLOR_RGB",
326 ])
327
328 D3DCOLORMODEL = DWORD
329
330 D3DCLEAR = Flags(DWORD, [
331     "D3DCLEAR_TARGET",
332     "D3DCLEAR_ZBUFFER",
333     "D3DCLEAR_STENCIL",
334 ])
335
336 D3DOPCODE = Enum("D3DOPCODE", [
337     "D3DOP_POINT",
338     "D3DOP_LINE",
339     "D3DOP_TRIANGLE",
340     "D3DOP_MATRIXLOAD",
341     "D3DOP_MATRIXMULTIPLY",
342     "D3DOP_STATETRANSFORM",
343     "D3DOP_STATELIGHT",
344     "D3DOP_STATERENDER",
345     "D3DOP_PROCESSVERTICES",
346     "D3DOP_TEXTURELOAD",
347     "D3DOP_EXIT",
348     "D3DOP_BRANCHFORWARD",
349     "D3DOP_SPAN",
350     "D3DOP_SETSTATUS",
351     "D3DOP_FORCE_DWORD",
352 ])
353
354 D3DINSTRUCTION = Struct("D3DINSTRUCTION", [
355     (BYTE, "bOpcode"),
356     (BYTE, "bSize"),
357     (WORD, "wCount"),
358 ])
359
360 D3DTEXTURELOAD = Struct("D3DTEXTURELOAD", [
361     (D3DTEXTUREHANDLE, "hDestTexture"),
362     (D3DTEXTUREHANDLE, "hSrcTexture"),
363 ])
364
365 D3DPICKRECORD = Struct("D3DPICKRECORD", [
366     (BYTE, "bOpcode"),
367     (BYTE, "bPad"),
368     (DWORD, "dwOffset"),
369     (D3DVALUE, "dvZ"),
370 ])
371 LPD3DPICKRECORD = Pointer(D3DPICKRECORD)
372
373 D3DSHADEMODE = Enum("D3DSHADEMODE", [
374     "D3DSHADE_FLAT",
375     "D3DSHADE_GOURAUD",
376     "D3DSHADE_PHONG",
377     "D3DSHADE_FORCE_DWORD",
378 ])
379
380 D3DFILLMODE = Enum("D3DFILLMODE", [
381     "D3DFILL_POINT",
382     "D3DFILL_WIREFRAME",
383     "D3DFILL_SOLID",
384     "D3DFILL_FORCE_DWORD",
385 ])
386
387 D3DLINEPATTERN = Struct("D3DLINEPATTERN", [
388     (WORD, "wRepeatFactor"),
389     (WORD, "wLinePattern"),
390 ])
391
392 D3DTEXTUREFILTER = Enum("D3DTEXTUREFILTER", [
393     "D3DFILTER_NEAREST",
394     "D3DFILTER_LINEAR",
395     "D3DFILTER_MIPNEAREST",
396     "D3DFILTER_MIPLINEAR",
397     "D3DFILTER_LINEARMIPNEAREST",
398     "D3DFILTER_LINEARMIPLINEAR",
399     "D3DFILTER_FORCE_DWORD",
400 ])
401
402 D3DBLEND = Enum("D3DBLEND", [
403     "D3DBLEND_ZERO",
404     "D3DBLEND_ONE",
405     "D3DBLEND_SRCCOLOR",
406     "D3DBLEND_INVSRCCOLOR",
407     "D3DBLEND_SRCALPHA",
408     "D3DBLEND_INVSRCALPHA",
409     "D3DBLEND_DESTALPHA",
410     "D3DBLEND_INVDESTALPHA",
411     "D3DBLEND_DESTCOLOR",
412     "D3DBLEND_INVDESTCOLOR",
413     "D3DBLEND_SRCALPHASAT",
414     "D3DBLEND_BOTHSRCALPHA",
415     "D3DBLEND_BOTHINVSRCALPHA",
416     "D3DBLEND_FORCE_DWORD",
417 ])
418
419 D3DTEXTUREBLEND = Enum("D3DTEXTUREBLEND", [
420     "D3DTBLEND_DECAL",
421     "D3DTBLEND_MODULATE",
422     "D3DTBLEND_DECALALPHA",
423     "D3DTBLEND_MODULATEALPHA",
424     "D3DTBLEND_DECALMASK",
425     "D3DTBLEND_MODULATEMASK",
426     "D3DTBLEND_COPY",
427     "D3DTBLEND_ADD",
428     "D3DTBLEND_FORCE_DWORD",
429 ])
430
431 D3DTEXTUREADDRESS = Enum("D3DTEXTUREADDRESS", [
432     "D3DTADDRESS_WRAP",
433     "D3DTADDRESS_MIRROR",
434     "D3DTADDRESS_CLAMP",
435     "D3DTADDRESS_BORDER",
436     "D3DTADDRESS_FORCE_DWORD",
437 ])
438
439 D3DCULL = Enum("D3DCULL", [
440     "D3DCULL_NONE",
441     "D3DCULL_CW",
442     "D3DCULL_CCW",
443     "D3DCULL_FORCE_DWORD",
444 ])
445
446 D3DCMPFUNC = Enum("D3DCMPFUNC", [
447     "D3DCMP_NEVER",
448     "D3DCMP_LESS",
449     "D3DCMP_EQUAL",
450     "D3DCMP_LESSEQUAL",
451     "D3DCMP_GREATER",
452     "D3DCMP_NOTEQUAL",
453     "D3DCMP_GREATEREQUAL",
454     "D3DCMP_ALWAYS",
455     "D3DCMP_FORCE_DWORD",
456 ])
457
458 D3DSTENCILOP = Enum("D3DSTENCILOP", [
459     "D3DSTENCILOP_KEEP",
460     "D3DSTENCILOP_ZERO",
461     "D3DSTENCILOP_REPLACE",
462     "D3DSTENCILOP_INCRSAT",
463     "D3DSTENCILOP_DECRSAT",
464     "D3DSTENCILOP_INVERT",
465     "D3DSTENCILOP_INCR",
466     "D3DSTENCILOP_DECR",
467     "D3DSTENCILOP_FORCE_DWORD",
468 ])
469
470 D3DFOGMODE = Enum("D3DFOGMODE", [
471     "D3DFOG_NONE",
472     "D3DFOG_EXP",
473     "D3DFOG_EXP2",
474     "D3DFOG_LINEAR",
475     "D3DFOG_FORCE_DWORD",
476 ])
477
478 D3DZBUFFERTYPE = Enum("D3DZBUFFERTYPE", [
479     "D3DZB_FALSE",
480     "D3DZB_TRUE",
481     "D3DZB_USEW",
482     "D3DZB_FORCE_DWORD",
483 ])
484
485 D3DANTIALIASMODE = Enum("D3DANTIALIASMODE", [
486     "D3DANTIALIAS_NONE",
487     "D3DANTIALIAS_SORTDEPENDENT",
488     "D3DANTIALIAS_SORTINDEPENDENT",
489     "D3DANTIALIAS_FORCE_DWORD",
490 ])
491
492 D3DVERTEXTYPE = Enum("D3DVERTEXTYPE", [
493     "D3DVT_VERTEX",
494     "D3DVT_LVERTEX",
495     "D3DVT_TLVERTEX",
496     "D3DVT_FORCE_DWORD",
497 ])
498
499 D3DPRIMITIVETYPE = Enum("D3DPRIMITIVETYPE", [
500     "D3DPT_POINTLIST",
501     "D3DPT_LINELIST",
502     "D3DPT_LINESTRIP",
503     "D3DPT_TRIANGLELIST",
504     "D3DPT_TRIANGLESTRIP",
505     "D3DPT_TRIANGLEFAN",
506     "D3DPT_FORCE_DWORD",
507 ])
508
509 D3DTRANSFORMSTATETYPE = Enum("D3DTRANSFORMSTATETYPE", [
510     "D3DTRANSFORMSTATE_WORLD",
511     "D3DTRANSFORMSTATE_VIEW",
512     "D3DTRANSFORMSTATE_PROJECTION",
513     "D3DTRANSFORMSTATE_WORLD1",
514     "D3DTRANSFORMSTATE_WORLD2",
515     "D3DTRANSFORMSTATE_WORLD3",
516     "D3DTRANSFORMSTATE_TEXTURE0",
517     "D3DTRANSFORMSTATE_TEXTURE1",
518     "D3DTRANSFORMSTATE_TEXTURE2",
519     "D3DTRANSFORMSTATE_TEXTURE3",
520     "D3DTRANSFORMSTATE_TEXTURE4",
521     "D3DTRANSFORMSTATE_TEXTURE5",
522     "D3DTRANSFORMSTATE_TEXTURE6",
523     "D3DTRANSFORMSTATE_TEXTURE7",
524     "D3DTRANSFORMSTATE_FORCE_DWORD",
525 ])
526
527 D3DLIGHTSTATETYPE = Enum("D3DLIGHTSTATETYPE", [
528     "D3DLIGHTSTATE_MATERIAL",
529     "D3DLIGHTSTATE_AMBIENT",
530     "D3DLIGHTSTATE_COLORMODEL",
531     "D3DLIGHTSTATE_FOGMODE",
532     "D3DLIGHTSTATE_FOGSTART",
533     "D3DLIGHTSTATE_FOGEND",
534     "D3DLIGHTSTATE_FOGDENSITY",
535     "D3DLIGHTSTATE_COLORVERTEX",
536     "D3DLIGHTSTATE_FORCE_DWORD",
537 ])
538
539 D3DRENDERSTATETYPE = Enum("D3DRENDERSTATETYPE", [
540     "D3DRENDERSTATE_ANTIALIAS",
541     "D3DRENDERSTATE_TEXTUREPERSPECTIVE",
542     "D3DRENDERSTATE_ZENABLE",
543     "D3DRENDERSTATE_FILLMODE",
544     "D3DRENDERSTATE_SHADEMODE",
545     "D3DRENDERSTATE_LINEPATTERN",
546     "D3DRENDERSTATE_ZWRITEENABLE",
547     "D3DRENDERSTATE_ALPHATESTENABLE",
548     "D3DRENDERSTATE_LASTPIXEL",
549     "D3DRENDERSTATE_SRCBLEND",
550     "D3DRENDERSTATE_DESTBLEND",
551     "D3DRENDERSTATE_CULLMODE",
552     "D3DRENDERSTATE_ZFUNC",
553     "D3DRENDERSTATE_ALPHAREF",
554     "D3DRENDERSTATE_ALPHAFUNC",
555     "D3DRENDERSTATE_DITHERENABLE",
556     "D3DRENDERSTATE_ALPHABLENDENABLE",
557     "D3DRENDERSTATE_FOGENABLE",
558     "D3DRENDERSTATE_SPECULARENABLE",
559     "D3DRENDERSTATE_ZVISIBLE",
560     "D3DRENDERSTATE_STIPPLEDALPHA",
561     "D3DRENDERSTATE_FOGCOLOR",
562     "D3DRENDERSTATE_FOGTABLEMODE",
563     "D3DRENDERSTATE_FOGSTART",
564     "D3DRENDERSTATE_FOGEND",
565     "D3DRENDERSTATE_FOGDENSITY",
566     "D3DRENDERSTATE_EDGEANTIALIAS",
567     "D3DRENDERSTATE_COLORKEYENABLE",
568     "D3DRENDERSTATE_ZBIAS",
569     "D3DRENDERSTATE_RANGEFOGENABLE",
570     "D3DRENDERSTATE_STENCILENABLE",
571     "D3DRENDERSTATE_STENCILFAIL",
572     "D3DRENDERSTATE_STENCILZFAIL",
573     "D3DRENDERSTATE_STENCILPASS",
574     "D3DRENDERSTATE_STENCILFUNC",
575     "D3DRENDERSTATE_STENCILREF",
576     "D3DRENDERSTATE_STENCILMASK",
577     "D3DRENDERSTATE_STENCILWRITEMASK",
578     "D3DRENDERSTATE_TEXTUREFACTOR",
579     "D3DRENDERSTATE_WRAP0",
580     "D3DRENDERSTATE_WRAP1",
581     "D3DRENDERSTATE_WRAP2",
582     "D3DRENDERSTATE_WRAP3",
583     "D3DRENDERSTATE_WRAP4",
584     "D3DRENDERSTATE_WRAP5",
585     "D3DRENDERSTATE_WRAP6",
586     "D3DRENDERSTATE_WRAP7",
587     "D3DRENDERSTATE_CLIPPING",
588     "D3DRENDERSTATE_LIGHTING",
589     "D3DRENDERSTATE_EXTENTS",
590     "D3DRENDERSTATE_AMBIENT",
591     "D3DRENDERSTATE_FOGVERTEXMODE",
592     "D3DRENDERSTATE_COLORVERTEX",
593     "D3DRENDERSTATE_LOCALVIEWER",
594     "D3DRENDERSTATE_NORMALIZENORMALS",
595     "D3DRENDERSTATE_COLORKEYBLENDENABLE",
596     "D3DRENDERSTATE_DIFFUSEMATERIALSOURCE",
597     "D3DRENDERSTATE_SPECULARMATERIALSOURCE",
598     "D3DRENDERSTATE_AMBIENTMATERIALSOURCE",
599     "D3DRENDERSTATE_EMISSIVEMATERIALSOURCE",
600     "D3DRENDERSTATE_VERTEXBLEND",
601     "D3DRENDERSTATE_CLIPPLANEENABLE",
602     "D3DRENDERSTATE_TEXTUREHANDLE",
603     "D3DRENDERSTATE_TEXTUREADDRESS",
604     "D3DRENDERSTATE_WRAPU",
605     "D3DRENDERSTATE_WRAPV",
606     "D3DRENDERSTATE_MONOENABLE",
607     "D3DRENDERSTATE_ROP2",
608     "D3DRENDERSTATE_PLANEMASK",
609     "D3DRENDERSTATE_TEXTUREMAG",
610     "D3DRENDERSTATE_TEXTUREMIN",
611     "D3DRENDERSTATE_TEXTUREMAPBLEND",
612     "D3DRENDERSTATE_SUBPIXEL",
613     "D3DRENDERSTATE_SUBPIXELX",
614     "D3DRENDERSTATE_STIPPLEENABLE",
615     "D3DRENDERSTATE_BORDERCOLOR",
616     "D3DRENDERSTATE_TEXTUREADDRESSU",
617     "D3DRENDERSTATE_TEXTUREADDRESSV",
618     "D3DRENDERSTATE_MIPMAPLODBIAS",
619     "D3DRENDERSTATE_ANISOTROPY",
620     "D3DRENDERSTATE_FLUSHBATCH",
621     "D3DRENDERSTATE_TRANSLUCENTSORTINDEPENDENT",
622     "D3DRENDERSTATE_STIPPLEPATTERN00",
623     "D3DRENDERSTATE_STIPPLEPATTERN01",
624     "D3DRENDERSTATE_STIPPLEPATTERN02",
625     "D3DRENDERSTATE_STIPPLEPATTERN03",
626     "D3DRENDERSTATE_STIPPLEPATTERN04",
627     "D3DRENDERSTATE_STIPPLEPATTERN05",
628     "D3DRENDERSTATE_STIPPLEPATTERN06",
629     "D3DRENDERSTATE_STIPPLEPATTERN07",
630     "D3DRENDERSTATE_STIPPLEPATTERN08",
631     "D3DRENDERSTATE_STIPPLEPATTERN09",
632     "D3DRENDERSTATE_STIPPLEPATTERN10",
633     "D3DRENDERSTATE_STIPPLEPATTERN11",
634     "D3DRENDERSTATE_STIPPLEPATTERN12",
635     "D3DRENDERSTATE_STIPPLEPATTERN13",
636     "D3DRENDERSTATE_STIPPLEPATTERN14",
637     "D3DRENDERSTATE_STIPPLEPATTERN15",
638     "D3DRENDERSTATE_STIPPLEPATTERN16",
639     "D3DRENDERSTATE_STIPPLEPATTERN17",
640     "D3DRENDERSTATE_STIPPLEPATTERN18",
641     "D3DRENDERSTATE_STIPPLEPATTERN19",
642     "D3DRENDERSTATE_STIPPLEPATTERN20",
643     "D3DRENDERSTATE_STIPPLEPATTERN21",
644     "D3DRENDERSTATE_STIPPLEPATTERN22",
645     "D3DRENDERSTATE_STIPPLEPATTERN23",
646     "D3DRENDERSTATE_STIPPLEPATTERN24",
647     "D3DRENDERSTATE_STIPPLEPATTERN25",
648     "D3DRENDERSTATE_STIPPLEPATTERN26",
649     "D3DRENDERSTATE_STIPPLEPATTERN27",
650     "D3DRENDERSTATE_STIPPLEPATTERN28",
651     "D3DRENDERSTATE_STIPPLEPATTERN29",
652     "D3DRENDERSTATE_STIPPLEPATTERN30",
653     "D3DRENDERSTATE_STIPPLEPATTERN31",
654     "D3DRENDERSTATE_FOGTABLESTART",
655     "D3DRENDERSTATE_FOGTABLEEND",
656     "D3DRENDERSTATE_FOGTABLEDENSITY",
657 ])
658
659 D3DMATERIALCOLORSOURCE = Enum("D3DMATERIALCOLORSOURCE", [
660     "D3DMCS_MATERIAL",
661     "D3DMCS_COLOR1",
662     "D3DMCS_COLOR2",
663 ])
664
665 D3DWRAP = Flags(DWORD, [
666     "D3DWRAP_U",
667     "D3DWRAP_V",
668     "D3DWRAPCOORD_0",
669     "D3DWRAPCOORD_1",
670     "D3DWRAPCOORD_2",
671     "D3DWRAPCOORD_3",
672 ])
673
674 D3DSTATE = Struct("D3DSTATE", [
675     (D3DTRANSFORMSTATETYPE, "dtstTransformStateType"),
676     (D3DLIGHTSTATETYPE, "dlstLightStateType"),
677     (D3DRENDERSTATETYPE, "drstRenderStateType"),
678     (DWORD, "dwArg[1]"),
679     (D3DVALUE, "dvArg[1]"),
680 ])
681
682 D3DMATRIXLOAD = Struct("D3DMATRIXLOAD", [
683     (D3DMATRIXHANDLE, "hDestMatrix"),
684     (D3DMATRIXHANDLE, "hSrcMatrix"),
685 ])
686
687 D3DMATRIXMULTIPLY = Struct("D3DMATRIXMULTIPLY", [
688     (D3DMATRIXHANDLE, "hDestMatrix"),
689     (D3DMATRIXHANDLE, "hSrcMatrix1"),
690     (D3DMATRIXHANDLE, "hSrcMatrix2"),
691 ])
692
693 D3DPROCESSVERTICES = Struct("D3DPROCESSVERTICES", [
694     (DWORD, "dwFlags"),
695     (WORD, "wStart"),
696     (WORD, "wDest"),
697     (DWORD, "dwCount"),
698     (DWORD, "dwReserved"),
699 ])
700
701 D3DPROCESSVERTICES = Flags(DWORD, [
702     "D3DPROCESSVERTICES_TRANSFORMLIGHT",
703     "D3DPROCESSVERTICES_TRANSFORM",
704     "D3DPROCESSVERTICES_COPY",
705     "D3DPROCESSVERTICES_OPMASK",
706     "D3DPROCESSVERTICES_UPDATEEXTENTS",
707     "D3DPROCESSVERTICES_NOCOLOR",
708 ])
709
710 D3DTEXTURESTAGESTATETYPE = Enum("D3DTEXTURESTAGESTATETYPE", [
711     "D3DTSS_COLOROP",
712     "D3DTSS_COLORARG1",
713     "D3DTSS_COLORARG2",
714     "D3DTSS_ALPHAOP",
715     "D3DTSS_ALPHAARG1",
716     "D3DTSS_ALPHAARG2",
717     "D3DTSS_BUMPENVMAT00",
718     "D3DTSS_BUMPENVMAT01",
719     "D3DTSS_BUMPENVMAT10",
720     "D3DTSS_BUMPENVMAT11",
721     "D3DTSS_TEXCOORDINDEX",
722     "D3DTSS_ADDRESS",
723     "D3DTSS_ADDRESSU",
724     "D3DTSS_ADDRESSV",
725     "D3DTSS_BORDERCOLOR",
726     "D3DTSS_MAGFILTER",
727     "D3DTSS_MINFILTER",
728     "D3DTSS_MIPFILTER",
729     "D3DTSS_MIPMAPLODBIAS",
730     "D3DTSS_MAXMIPLEVEL",
731     "D3DTSS_MAXANISOTROPY",
732     "D3DTSS_BUMPENVLSCALE",
733     "D3DTSS_BUMPENVLOFFSET",
734     "D3DTSS_TEXTURETRANSFORMFLAGS",
735     "D3DTSS_FORCE_DWORD",
736 ])
737
738 D3DTSS_TCI = Flags(DWORD, [
739     "D3DTSS_TCI_PASSTHRU",
740     "D3DTSS_TCI_CAMERASPACENORMAL",
741     "D3DTSS_TCI_CAMERASPACEPOSITION",
742     "D3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR",
743 ])
744
745 D3DTEXTUREOP = Enum("D3DTEXTUREOP", [
746     "D3DTOP_DISABLE",
747     "D3DTOP_SELECTARG1",
748     "D3DTOP_SELECTARG2",
749     "D3DTOP_MODULATE",
750     "D3DTOP_MODULATE2X",
751     "D3DTOP_MODULATE4X",
752     "D3DTOP_ADD",
753     "D3DTOP_ADDSIGNED",
754     "D3DTOP_ADDSIGNED2X",
755     "D3DTOP_SUBTRACT",
756     "D3DTOP_ADDSMOOTH",
757     "D3DTOP_BLENDDIFFUSEALPHA",
758     "D3DTOP_BLENDTEXTUREALPHA",
759     "D3DTOP_BLENDFACTORALPHA",
760     "D3DTOP_BLENDTEXTUREALPHAPM",
761     "D3DTOP_BLENDCURRENTALPHA",
762     "D3DTOP_PREMODULATE",
763     "D3DTOP_MODULATEALPHA_ADDCOLOR",
764     "D3DTOP_MODULATECOLOR_ADDALPHA",
765     "D3DTOP_MODULATEINVALPHA_ADDCOLOR",
766     "D3DTOP_MODULATEINVCOLOR_ADDALPHA",
767     "D3DTOP_BUMPENVMAP",
768     "D3DTOP_BUMPENVMAPLUMINANCE",
769     "D3DTOP_DOTPRODUCT3",
770 ])
771
772 D3DTA = Flags(DWORD, [
773     "D3DTA_SELECTMASK",
774     "D3DTA_DIFFUSE",
775     "D3DTA_CURRENT",
776     "D3DTA_TEXTURE",
777     "D3DTA_TFACTOR",
778     "D3DTA_SPECULAR",
779     "D3DTA_COMPLEMENT",
780     "D3DTA_ALPHAREPLICATE",
781 ])
782
783 D3DTEXTUREMAGFILTER = Enum("D3DTEXTUREMAGFILTER", [
784     "D3DTFG_POINT",
785     "D3DTFG_LINEAR",
786     "D3DTFG_FLATCUBIC",
787     "D3DTFG_GAUSSIANCUBIC",
788     "D3DTFG_ANISOTROPIC",
789     "D3DTFG_FORCE_DWORD",
790 ])
791
792 D3DTEXTUREMINFILTER = Enum("D3DTEXTUREMINFILTER", [
793     "D3DTFN_POINT",
794     "D3DTFN_LINEAR",
795     "D3DTFN_ANISOTROPIC",
796     "D3DTFN_FORCE_DWORD",
797 ])
798
799 D3DTEXTUREMIPFILTER = Enum("D3DTEXTUREMIPFILTER", [
800     "D3DTFP_NONE",
801     "D3DTFP_POINT",
802     "D3DTFP_LINEAR",
803     "D3DTFP_FORCE_DWORD",
804 ])
805
806 D3DTRIFLAG = Flags(DWORD, [
807     "D3DTRIFLAG_START",
808     "D3DTRIFLAG_STARTFLAT(len)",
809     "D3DTRIFLAG_ODD",
810     "D3DTRIFLAG_EVEN",
811     "D3DTRIFLAG_EDGEENABLETRIANGLE",
812     "D3DTRIFLAG_EDGEENABLE1",
813     "D3DTRIFLAG_EDGEENABLE2",
814     "D3DTRIFLAG_EDGEENABLE3",
815 ])
816
817 D3DTRIANGLE = Struct("D3DTRIANGLE", [
818     (WORD, "v1"),
819     (WORD, "v2"),
820     (WORD, "v3"),
821     (WORD, "wFlags"),
822 ])
823
824 D3DLINE = Struct("D3DLINE", [
825     (WORD, "v1"),
826     (WORD, "v2"),
827 ])
828
829 D3DSPAN = Struct("D3DSPAN", [
830     (WORD, "wCount"),
831     (WORD, "wFirst"),
832 ])
833
834 D3DPOINT = Struct("D3DPOINT", [
835     (WORD, "wCount"),
836     (WORD, "wFirst"),
837 ])
838
839 D3DBRANCH = Struct("D3DBRANCH", [
840     (DWORD, "dwMask"),
841     (DWORD, "dwValue"),
842     (BOOL, "bNegate"),
843     (DWORD, "dwOffset"),
844 ])
845
846 D3DSTATUS = Struct("D3DSTATUS", [
847     (DWORD, "dwFlags"),
848     (DWORD, "dwStatus"),
849     (D3DRECT, "drExtent"),
850 ])
851
852 D3DSETSTATUS = Flags(DWORD, [
853     "D3DSETSTATUS_STATUS",
854     "D3DSETSTATUS_EXTENTS",
855     "D3DSETSTATUS_ALL",
856 ])
857
858 D3DCLIPSTATUS = Struct("D3DCLIPSTATUS", [
859     (DWORD, "dwFlags"),
860     (DWORD, "dwStatus"),
861     (Float, "minx"),
862     (Float, "maxx"),
863     (Float, "miny"),
864     (Float, "maxy"),
865     (Float, "minz"),
866     (Float, "maxz"),
867 ])
868 LPD3DCLIPSTATUS = Pointer(D3DCLIPSTATUS)
869
870 D3DCLIPSTATUS = Flags(DWORD, [
871     "D3DCLIPSTATUS_STATUS",
872     "D3DCLIPSTATUS_EXTENTS2",
873     "D3DCLIPSTATUS_EXTENTS3",
874 ])
875
876 D3DSTATS = Struct("D3DSTATS", [
877     (DWORD, "dwSize"),
878     (DWORD, "dwTrianglesDrawn"),
879     (DWORD, "dwLinesDrawn"),
880     (DWORD, "dwPointsDrawn"),
881     (DWORD, "dwSpansDrawn"),
882     (DWORD, "dwVerticesProcessed"),
883 ])
884 LPD3DSTATS = Pointer(D3DSTATS)
885
886 D3DEXECUTE = Flags(DWORD, [
887     "D3DEXECUTE_CLIPPED",
888     "D3DEXECUTE_UNCLIPPED",
889 ])
890
891 D3DEXECUTEDATA = Struct("D3DEXECUTEDATA", [
892     (DWORD, "dwSize"),
893     (DWORD, "dwVertexOffset"),
894     (DWORD, "dwVertexCount"),
895     (DWORD, "dwInstructionOffset"),
896     (DWORD, "dwInstructionLength"),
897     (DWORD, "dwHVertexOffset"),
898     (D3DSTATUS, "dsStatus"),
899 ])
900 LPD3DEXECUTEDATA = Pointer(D3DEXECUTEDATA)
901
902 D3DPAL = Flags(DWORD, [
903     "D3DPAL_FREE",
904     "D3DPAL_READONLY",
905     "D3DPAL_RESERVED",
906 ])
907
908 D3DVERTEXBUFFERDESC = Struct("D3DVERTEXBUFFERDESC", [
909     (DWORD, "dwSize"),
910     (DWORD, "dwCaps"),
911     (DWORD, "dwFVF"),
912     (DWORD, "dwNumVertices"),
913 ])
914 LPD3DVERTEXBUFFERDESC = Pointer(D3DVERTEXBUFFERDESC)
915
916 D3DVBCAPS = Flags(DWORD, [
917     "D3DVBCAPS_SYSTEMMEMORY",
918     "D3DVBCAPS_WRITEONLY",
919     "D3DVBCAPS_OPTIMIZED",
920     "D3DVBCAPS_DONOTCLIP",
921 ])
922
923 D3DVOP = Flags(DWORD, [
924     "D3DVOP_LIGHT",
925     "D3DVOP_TRANSFORM",
926     "D3DVOP_CLIP",
927     "D3DVOP_EXTENTS",
928 ])
929
930 D3DPV = Flags(DWORD, [
931     "D3DPV_DONOTCOPYDATA",
932 ])
933
934 D3DFVF = Flags(DWORD, [
935     "D3DFVF_RESERVED0",
936     "D3DFVF_POSITION_MASK",
937     "D3DFVF_XYZ",
938     "D3DFVF_XYZRHW",
939     "D3DFVF_XYZB1",
940     "D3DFVF_XYZB2",
941     "D3DFVF_XYZB3",
942     "D3DFVF_XYZB4",
943     "D3DFVF_XYZB5",
944     "D3DFVF_NORMAL",
945     "D3DFVF_RESERVED1",
946     "D3DFVF_DIFFUSE",
947     "D3DFVF_SPECULAR",
948     "D3DFVF_TEXCOUNT_MASK",
949     "D3DFVF_TEXCOUNT_SHIFT",
950     "D3DFVF_TEX0",
951     "D3DFVF_TEX1",
952     "D3DFVF_TEX2",
953     "D3DFVF_TEX3",
954     "D3DFVF_TEX4",
955     "D3DFVF_TEX5",
956     "D3DFVF_TEX6",
957     "D3DFVF_TEX7",
958     "D3DFVF_TEX8",
959     "D3DFVF_RESERVED2",
960     "D3DFVF_RESERVED1",
961     "D3DFVF_VERTEX",
962     "D3DFVF_LVERTEX",
963     "D3DFVF_TLVERTEX",
964     "D3DFVF_TEXCOORDSIZE1(0)",
965     "D3DFVF_TEXCOORDSIZE1(1)",
966     "D3DFVF_TEXCOORDSIZE2(0)",
967     "D3DFVF_TEXCOORDSIZE2(1)",
968     "D3DFVF_TEXCOORDSIZE3(0)",
969     "D3DFVF_TEXCOORDSIZE3(1)",
970     "D3DFVF_TEXCOORDSIZE4(0)",
971     "D3DFVF_TEXCOORDSIZE4(1)",
972 ])
973
974 D3DDP_PTRSTRIDE = Struct("D3DDP_PTRSTRIDE", [
975     (LPVOID, "lpvData"),
976     (DWORD, "dwStride"),
977 ])
978
979 D3DDRAWPRIMITIVESTRIDEDDATA = Struct("D3DDRAWPRIMITIVESTRIDEDDATA", [
980     (D3DDP_PTRSTRIDE, "position"),
981     (D3DDP_PTRSTRIDE, "normal"),
982     (D3DDP_PTRSTRIDE, "diffuse"),
983     (D3DDP_PTRSTRIDE, "specular"),
984     (D3DDP_PTRSTRIDE, "textureCoords[D3DDP_MAXTEXCOORD]"),
985 ])
986 LPD3DDRAWPRIMITIVESTRIDEDDATA = Pointer(D3DDRAWPRIMITIVESTRIDEDDATA)
987
988 D3DVIS = Flags(DWORD, [
989     "D3DVIS_INSIDE_FRUSTUM",
990     "D3DVIS_INTERSECT_FRUSTUM",
991     "D3DVIS_OUTSIDE_FRUSTUM",
992     "D3DVIS_INSIDE_LEFT",
993     "D3DVIS_INTERSECT_LEFT",
994     "D3DVIS_OUTSIDE_LEFT",
995     "D3DVIS_INSIDE_RIGHT",
996     "D3DVIS_INTERSECT_RIGHT",
997     "D3DVIS_OUTSIDE_RIGHT",
998     "D3DVIS_INSIDE_TOP",
999     "D3DVIS_INTERSECT_TOP",
1000     "D3DVIS_OUTSIDE_TOP",
1001     "D3DVIS_INSIDE_BOTTOM",
1002     "D3DVIS_INTERSECT_BOTTOM",
1003     "D3DVIS_OUTSIDE_BOTTOM",
1004     "D3DVIS_INSIDE_NEAR",
1005     "D3DVIS_INTERSECT_NEAR",
1006     "D3DVIS_OUTSIDE_NEAR",
1007     "D3DVIS_INSIDE_FAR",
1008     "D3DVIS_INTERSECT_FAR",
1009     "D3DVIS_OUTSIDE_FAR",
1010     "D3DVIS_MASK_FRUSTUM",
1011     "D3DVIS_MASK_LEFT",
1012     "D3DVIS_MASK_RIGHT",
1013     "D3DVIS_MASK_TOP",
1014     "D3DVIS_MASK_BOTTOM",
1015     "D3DVIS_MASK_NEAR",
1016     "D3DVIS_MASK_FAR",
1017 ])
1018
1019 D3DDEVINFOID = Flags(DWORD, [
1020     "D3DDEVINFOID_TEXTUREMANAGER",
1021     "D3DDEVINFOID_D3DTEXTUREMANAGER",
1022     "D3DDEVINFOID_TEXTURING",
1023 ])
1024
1025 D3DSTATEBLOCKTYPE = Enum("D3DSTATEBLOCKTYPE", [
1026     "D3DSBT_ALL",
1027     "D3DSBT_PIXELSTATE",
1028     "D3DSBT_VERTEXSTATE",
1029     "D3DSBT_FORCE_DWORD",
1030 ])
1031
1032 D3DVERTEXBLENDFLAGS = Enum("D3DVERTEXBLENDFLAGS", [
1033     "D3DVBLEND_DISABLE",
1034     "D3DVBLEND_1WEIGHT",
1035     "D3DVBLEND_2WEIGHTS",
1036     "D3DVBLEND_3WEIGHTS",
1037 ])
1038
1039 D3DTEXTURETRANSFORMFLAGS = Enum("D3DTEXTURETRANSFORMFLAGS", [
1040     "D3DTTFF_DISABLE",
1041     "D3DTTFF_COUNT1",
1042     "D3DTTFF_COUNT2",
1043     "D3DTTFF_COUNT3",
1044     "D3DTTFF_COUNT4",
1045     "D3DTTFF_PROJECTED",
1046     "D3DTTFF_FORCE_DWORD",
1047 ])