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