]> git.cworth.org Git - apitrace/blob - ddraw.py
Synchronize X and GL on windows resizes.
[apitrace] / ddraw.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 """ddraw.h"""
27
28 from winapi import *
29
30 IDirectDraw = Interface("IDirectDraw", IUnknown)
31 IDirectDraw2 = Interface("IDirectDraw2", IUnknown)
32 IDirectDraw4 = Interface("IDirectDraw4", IUnknown)
33 IDirectDraw7 = Interface("IDirectDraw7", IUnknown)
34 IDirectDrawPalette = Interface("IDirectDrawPalette", IUnknown)
35 IDirectDrawClipper = Interface("IDirectDrawClipper", IUnknown)
36 IDirectDrawSurface = Interface("IDirectDrawSurface", IUnknown)
37 IDirectDrawSurface2 = Interface("IDirectDrawSurface2", IUnknown)
38 IDirectDrawSurface3 = Interface("IDirectDrawSurface3", IUnknown)
39 IDirectDrawSurface4 = Interface("IDirectDrawSurface4", IUnknown)
40 IDirectDrawSurface7 = Interface("IDirectDrawSurface7", IUnknown)
41 IDirectDrawColorControl = Interface("IDirectDrawColorControl", IUnknown)
42 IDirectDrawGammaControl = Interface("IDirectDrawGammaControl", IUnknown)
43
44 LPDIRECTDRAW = Pointer(IDirectDraw)
45 LPDIRECTDRAW2 = Pointer(IDirectDraw2)
46 LPDIRECTDRAW4 = Pointer(IDirectDraw4)
47 LPDIRECTDRAW7 = Pointer(IDirectDraw7)
48 LPDIRECTDRAWSURFACE = Pointer(IDirectDrawSurface)
49 LPDIRECTDRAWSURFACE2 = Pointer(IDirectDrawSurface2)
50 LPDIRECTDRAWSURFACE3 = Pointer(IDirectDrawSurface3)
51 LPDIRECTDRAWSURFACE4 = Pointer(IDirectDrawSurface4)
52 LPDIRECTDRAWSURFACE7 = Pointer(IDirectDrawSurface7)
53 LPDIRECTDRAWPALETTE = Pointer(IDirectDrawPalette)
54 LPDIRECTDRAWCLIPPER = Pointer(IDirectDrawClipper)
55 LPDIRECTDRAWCOLORCONTROL = Pointer(IDirectDrawColorControl)
56 LPDIRECTDRAWGAMMACONTROL = Pointer(IDirectDrawGammaControl)
57
58 DDARGB = Struct("DDARGB", [
59     (BYTE, "blue"),
60     (BYTE, "green"),
61     (BYTE, "red"),
62     (BYTE, "alpha"),
63 ])
64
65 LPDDARGB = Pointer(DDARGB)
66
67 DDRGBA = Struct("DDRGBA", [
68     (BYTE, "red"),
69     (BYTE, "green"),
70     (BYTE, "blue"),
71     (BYTE, "alpha"),
72 ])
73 LPDDRGBA = Pointer(DDRGBA)
74
75 DDCOLORKEY = Struct("DDCOLORKEY", [
76     (DWORD, "dwColorSpaceLowValue"),
77     (DWORD, "dwColorSpaceHighValue"),
78 ])
79 LPDDCOLORKEY = Pointer(DDCOLORKEY)
80
81 DDBLTFX = Struct("DDBLTFX", [
82     (DWORD, "dwSize"),
83     (DWORD, "dwDDFX"),
84     (DWORD, "dwROP"),
85     (DWORD, "dwDDROP"),
86     (DWORD, "dwRotationAngle"),
87     (DWORD, "dwZBufferOpCode"),
88     (DWORD, "dwZBufferLow"),
89     (DWORD, "dwZBufferHigh"),
90     (DWORD, "dwZBufferBaseDest"),
91     (DWORD, "dwZDestConstBitDepth"),
92     (DWORD, "dwZDestConst"),
93     (LPDIRECTDRAWSURFACE, "lpDDSZBufferDest"),
94     (DWORD, "dwZSrcConstBitDepth"),
95     (DWORD, "dwZSrcConst"),
96     (LPDIRECTDRAWSURFACE, "lpDDSZBufferSrc"),
97     (DWORD, "dwAlphaEdgeBlendBitDepth"),
98     (DWORD, "dwAlphaEdgeBlend"),
99     (DWORD, "dwReserved"),
100     (DWORD, "dwAlphaDestConstBitDepth"),
101     (DWORD, "dwAlphaDestConst"),
102     (LPDIRECTDRAWSURFACE, "lpDDSAlphaDest"),
103     (DWORD, "dwAlphaSrcConstBitDepth"),
104     (DWORD, "dwAlphaSrcConst"),
105     (LPDIRECTDRAWSURFACE, "lpDDSAlphaSrc"),
106     (DWORD, "dwFillColor"),
107     (DWORD, "dwFillDepth"),
108     (DWORD, "dwFillPixel"),
109     (LPDIRECTDRAWSURFACE, "lpDDSPattern"),
110     (DDCOLORKEY, "ddckDestColorkey"),
111     (DDCOLORKEY, "ddckSrcColorkey"),
112 ])
113 LPDDBLTFX = Pointer(DDBLTFX)
114
115 DDSCAPS = Struct("DDSCAPS", [
116     (DWORD, "dwCaps"),
117 ])
118 LPDDSCAPS = Pointer(DDSCAPS)
119
120 DDOSCAPS = Struct("DDOSCAPS", [
121     (DWORD, "dwCaps"),
122 ])
123 LPDDOSCAPS = Pointer(DDOSCAPS)
124
125 DDSCAPSEX = Struct("DDSCAPSEX", [
126     (DWORD, "dwCaps2"),
127     (DWORD, "dwCaps3"),
128     (DWORD, "dwCaps4"),
129 ])
130
131 DDSCAPS2 = Struct("DDSCAPS2", [
132     (DWORD, "dwCaps"),
133     (DWORD, "dwCaps2"),
134     (DWORD, "dwCaps3"),
135     (DWORD, "dwCaps4"),
136 ])
137 LPDDSCAPS2 = Pointer(DDSCAPS2)
138
139 DDCAPS_DX1 = Struct("DDCAPS_DX1", [
140     (DWORD, "dwSize"),
141     (DWORD, "dwCaps"),
142     (DWORD, "dwCaps2"),
143     (DWORD, "dwCKeyCaps"),
144     (DWORD, "dwFXCaps"),
145     (DWORD, "dwFXAlphaCaps"),
146     (DWORD, "dwPalCaps"),
147     (DWORD, "dwSVCaps"),
148     (DWORD, "dwAlphaBltConstBitDepths"),
149     (DWORD, "dwAlphaBltPixelBitDepths"),
150     (DWORD, "dwAlphaBltSurfaceBitDepths"),
151     (DWORD, "dwAlphaOverlayConstBitDepths"),
152     (DWORD, "dwAlphaOverlayPixelBitDepths"),
153     (DWORD, "dwAlphaOverlaySurfaceBitDepths"),
154     (DWORD, "dwZBufferBitDepths"),
155     (DWORD, "dwVidMemTotal"),
156     (DWORD, "dwVidMemFree"),
157     (DWORD, "dwMaxVisibleOverlays"),
158     (DWORD, "dwCurrVisibleOverlays"),
159     (DWORD, "dwNumFourCCCodes"),
160     (DWORD, "dwAlignBoundarySrc"),
161     (DWORD, "dwAlignSizeSrc"),
162     (DWORD, "dwAlignBoundaryDest"),
163     (DWORD, "dwAlignSizeDest"),
164     (DWORD, "dwAlignStrideAlign"),
165     (DWORD, "dwRops[DD_ROP_SPACE]"),
166     (DDSCAPS, "ddsCaps"),
167     (DWORD, "dwMinOverlayStretch"),
168     (DWORD, "dwMaxOverlayStretch"),
169     (DWORD, "dwMinLiveVideoStretch"),
170     (DWORD, "dwMaxLiveVideoStretch"),
171     (DWORD, "dwMinHwCodecStretch"),
172     (DWORD, "dwMaxHwCodecStretch"),
173     (DWORD, "dwReserved1"),
174     (DWORD, "dwReserved2"),
175     (DWORD, "dwReserved3"),
176 ])
177 LPDDCAPS_DX1 = Pointer(DDCAPS_DX1)
178
179 DDCAPS_DX3 = Struct("DDCAPS_DX3", [
180     (DWORD, "dwSize"),
181     (DWORD, "dwCaps"),
182     (DWORD, "dwCaps2"),
183     (DWORD, "dwCKeyCaps"),
184     (DWORD, "dwFXCaps"),
185     (DWORD, "dwFXAlphaCaps"),
186     (DWORD, "dwPalCaps"),
187     (DWORD, "dwSVCaps"),
188     (DWORD, "dwAlphaBltConstBitDepths"),
189     (DWORD, "dwAlphaBltPixelBitDepths"),
190     (DWORD, "dwAlphaBltSurfaceBitDepths"),
191     (DWORD, "dwAlphaOverlayConstBitDepths"),
192     (DWORD, "dwAlphaOverlayPixelBitDepths"),
193     (DWORD, "dwAlphaOverlaySurfaceBitDepths"),
194     (DWORD, "dwZBufferBitDepths"),
195     (DWORD, "dwVidMemTotal"),
196     (DWORD, "dwVidMemFree"),
197     (DWORD, "dwMaxVisibleOverlays"),
198     (DWORD, "dwCurrVisibleOverlays"),
199     (DWORD, "dwNumFourCCCodes"),
200     (DWORD, "dwAlignBoundarySrc"),
201     (DWORD, "dwAlignSizeSrc"),
202     (DWORD, "dwAlignBoundaryDest"),
203     (DWORD, "dwAlignSizeDest"),
204     (DWORD, "dwAlignStrideAlign"),
205     (DWORD, "dwRops[DD_ROP_SPACE]"),
206     (DDSCAPS, "ddsCaps"),
207     (DWORD, "dwMinOverlayStretch"),
208     (DWORD, "dwMaxOverlayStretch"),
209     (DWORD, "dwMinLiveVideoStretch"),
210     (DWORD, "dwMaxLiveVideoStretch"),
211     (DWORD, "dwMinHwCodecStretch"),
212     (DWORD, "dwMaxHwCodecStretch"),
213     (DWORD, "dwReserved1"),
214     (DWORD, "dwReserved2"),
215     (DWORD, "dwReserved3"),
216     (DWORD, "dwSVBCaps"),
217     (DWORD, "dwSVBCKeyCaps"),
218     (DWORD, "dwSVBFXCaps"),
219     (DWORD, "dwSVBRops[DD_ROP_SPACE]"),
220     (DWORD, "dwVSBCaps"),
221     (DWORD, "dwVSBCKeyCaps"),
222     (DWORD, "dwVSBFXCaps"),
223     (DWORD, "dwVSBRops[DD_ROP_SPACE]"),
224     (DWORD, "dwSSBCaps"),
225     (DWORD, "dwSSBCKeyCaps"),
226     (DWORD, "dwSSBFXCaps"),
227     (DWORD, "dwSSBRops[DD_ROP_SPACE]"),
228     (DWORD, "dwReserved4"),
229     (DWORD, "dwReserved5"),
230     (DWORD, "dwReserved6"),
231 ])
232 LPDDCAPS_DX3 = Pointer(DDCAPS_DX3)
233
234 DDCAPS_DX5 = Struct("DDCAPS_DX5", [
235     (DWORD, "dwSize"),
236     (DWORD, "dwCaps"),
237     (DWORD, "dwCaps2"),
238     (DWORD, "dwCKeyCaps"),
239     (DWORD, "dwFXCaps"),
240     (DWORD, "dwFXAlphaCaps"),
241     (DWORD, "dwPalCaps"),
242     (DWORD, "dwSVCaps"),
243     (DWORD, "dwAlphaBltConstBitDepths"),
244     (DWORD, "dwAlphaBltPixelBitDepths"),
245     (DWORD, "dwAlphaBltSurfaceBitDepths"),
246     (DWORD, "dwAlphaOverlayConstBitDepths"),
247     (DWORD, "dwAlphaOverlayPixelBitDepths"),
248     (DWORD, "dwAlphaOverlaySurfaceBitDepths"),
249     (DWORD, "dwZBufferBitDepths"),
250     (DWORD, "dwVidMemTotal"),
251     (DWORD, "dwVidMemFree"),
252     (DWORD, "dwMaxVisibleOverlays"),
253     (DWORD, "dwCurrVisibleOverlays"),
254     (DWORD, "dwNumFourCCCodes"),
255     (DWORD, "dwAlignBoundarySrc"),
256     (DWORD, "dwAlignSizeSrc"),
257     (DWORD, "dwAlignBoundaryDest"),
258     (DWORD, "dwAlignSizeDest"),
259     (DWORD, "dwAlignStrideAlign"),
260     (DWORD, "dwRops[DD_ROP_SPACE]"),
261     (DDSCAPS, "ddsCaps"),
262     (DWORD, "dwMinOverlayStretch"),
263     (DWORD, "dwMaxOverlayStretch"),
264     (DWORD, "dwMinLiveVideoStretch"),
265     (DWORD, "dwMaxLiveVideoStretch"),
266     (DWORD, "dwMinHwCodecStretch"),
267     (DWORD, "dwMaxHwCodecStretch"),
268     (DWORD, "dwReserved1"),
269     (DWORD, "dwReserved2"),
270     (DWORD, "dwReserved3"),
271     (DWORD, "dwSVBCaps"),
272     (DWORD, "dwSVBCKeyCaps"),
273     (DWORD, "dwSVBFXCaps"),
274     (DWORD, "dwSVBRops[DD_ROP_SPACE]"),
275     (DWORD, "dwVSBCaps"),
276     (DWORD, "dwVSBCKeyCaps"),
277     (DWORD, "dwVSBFXCaps"),
278     (DWORD, "dwVSBRops[DD_ROP_SPACE]"),
279     (DWORD, "dwSSBCaps"),
280     (DWORD, "dwSSBCKeyCaps"),
281     (DWORD, "dwSSBFXCaps"),
282     (DWORD, "dwSSBRops[DD_ROP_SPACE]"),
283     (DWORD, "dwMaxVideoPorts"),
284     (DWORD, "dwCurrVideoPorts"),
285     (DWORD, "dwSVBCaps2"),
286     (DWORD, "dwNLVBCaps"),
287     (DWORD, "dwNLVBCaps2"),
288     (DWORD, "dwNLVBCKeyCaps"),
289     (DWORD, "dwNLVBFXCaps"),
290     (DWORD, "dwNLVBRops[DD_ROP_SPACE]"),
291 ])
292 LPDDCAPS_DX5 = Pointer(DDCAPS_DX5)
293
294 DDCAPS_DX6 = Struct("DDCAPS_DX6", [
295     (DWORD, "dwSize"),
296     (DWORD, "dwCaps"),
297     (DWORD, "dwCaps2"),
298     (DWORD, "dwCKeyCaps"),
299     (DWORD, "dwFXCaps"),
300     (DWORD, "dwFXAlphaCaps"),
301     (DWORD, "dwPalCaps"),
302     (DWORD, "dwSVCaps"),
303     (DWORD, "dwAlphaBltConstBitDepths"),
304     (DWORD, "dwAlphaBltPixelBitDepths"),
305     (DWORD, "dwAlphaBltSurfaceBitDepths"),
306     (DWORD, "dwAlphaOverlayConstBitDepths"),
307     (DWORD, "dwAlphaOverlayPixelBitDepths"),
308     (DWORD, "dwAlphaOverlaySurfaceBitDepths"),
309     (DWORD, "dwZBufferBitDepths"),
310     (DWORD, "dwVidMemTotal"),
311     (DWORD, "dwVidMemFree"),
312     (DWORD, "dwMaxVisibleOverlays"),
313     (DWORD, "dwCurrVisibleOverlays"),
314     (DWORD, "dwNumFourCCCodes"),
315     (DWORD, "dwAlignBoundarySrc"),
316     (DWORD, "dwAlignSizeSrc"),
317     (DWORD, "dwAlignBoundaryDest"),
318     (DWORD, "dwAlignSizeDest"),
319     (DWORD, "dwAlignStrideAlign"),
320     (DWORD, "dwRops[DD_ROP_SPACE]"),
321     (DDSCAPS, "ddsOldCaps"),
322     (DWORD, "dwMinOverlayStretch"),
323     (DWORD, "dwMaxOverlayStretch"),
324     (DWORD, "dwMinLiveVideoStretch"),
325     (DWORD, "dwMaxLiveVideoStretch"),
326     (DWORD, "dwMinHwCodecStretch"),
327     (DWORD, "dwMaxHwCodecStretch"),
328     (DWORD, "dwReserved1"),
329     (DWORD, "dwReserved2"),
330     (DWORD, "dwReserved3"),
331     (DWORD, "dwSVBCaps"),
332     (DWORD, "dwSVBCKeyCaps"),
333     (DWORD, "dwSVBFXCaps"),
334     (DWORD, "dwSVBRops[DD_ROP_SPACE]"),
335     (DWORD, "dwVSBCaps"),
336     (DWORD, "dwVSBCKeyCaps"),
337     (DWORD, "dwVSBFXCaps"),
338     (DWORD, "dwVSBRops[DD_ROP_SPACE]"),
339     (DWORD, "dwSSBCaps"),
340     (DWORD, "dwSSBCKeyCaps"),
341     (DWORD, "dwSSBFXCaps"),
342     (DWORD, "dwSSBRops[DD_ROP_SPACE]"),
343     (DWORD, "dwMaxVideoPorts"),
344     (DWORD, "dwCurrVideoPorts"),
345     (DWORD, "dwSVBCaps2"),
346     (DWORD, "dwNLVBCaps"),
347     (DWORD, "dwNLVBCaps2"),
348     (DWORD, "dwNLVBCKeyCaps"),
349     (DWORD, "dwNLVBFXCaps"),
350     (DWORD, "dwNLVBRops[DD_ROP_SPACE]"),
351     (DDSCAPS2, "ddsCaps"),
352 ])
353 LPDDCAPS_DX6 = Pointer(DDCAPS_DX6)
354
355 DDCAPS_DX7 = Struct("DDCAPS_DX7", [
356     (DWORD, "dwSize"),
357     (DWORD, "dwCaps"),
358     (DWORD, "dwCaps2"),
359     (DWORD, "dwCKeyCaps"),
360     (DWORD, "dwFXCaps"),
361     (DWORD, "dwFXAlphaCaps"),
362     (DWORD, "dwPalCaps"),
363     (DWORD, "dwSVCaps"),
364     (DWORD, "dwAlphaBltConstBitDepths"),
365     (DWORD, "dwAlphaBltPixelBitDepths"),
366     (DWORD, "dwAlphaBltSurfaceBitDepths"),
367     (DWORD, "dwAlphaOverlayConstBitDepths"),
368     (DWORD, "dwAlphaOverlayPixelBitDepths"),
369     (DWORD, "dwAlphaOverlaySurfaceBitDepths"),
370     (DWORD, "dwZBufferBitDepths"),
371     (DWORD, "dwVidMemTotal"),
372     (DWORD, "dwVidMemFree"),
373     (DWORD, "dwMaxVisibleOverlays"),
374     (DWORD, "dwCurrVisibleOverlays"),
375     (DWORD, "dwNumFourCCCodes"),
376     (DWORD, "dwAlignBoundarySrc"),
377     (DWORD, "dwAlignSizeSrc"),
378     (DWORD, "dwAlignBoundaryDest"),
379     (DWORD, "dwAlignSizeDest"),
380     (DWORD, "dwAlignStrideAlign"),
381     (DWORD, "dwRops[DD_ROP_SPACE]"),
382     (DDSCAPS, "ddsOldCaps"),
383     (DWORD, "dwMinOverlayStretch"),
384     (DWORD, "dwMaxOverlayStretch"),
385     (DWORD, "dwMinLiveVideoStretch"),
386     (DWORD, "dwMaxLiveVideoStretch"),
387     (DWORD, "dwMinHwCodecStretch"),
388     (DWORD, "dwMaxHwCodecStretch"),
389     (DWORD, "dwReserved1"),
390     (DWORD, "dwReserved2"),
391     (DWORD, "dwReserved3"),
392     (DWORD, "dwSVBCaps"),
393     (DWORD, "dwSVBCKeyCaps"),
394     (DWORD, "dwSVBFXCaps"),
395     (DWORD, "dwSVBRops[DD_ROP_SPACE]"),
396     (DWORD, "dwVSBCaps"),
397     (DWORD, "dwVSBCKeyCaps"),
398     (DWORD, "dwVSBFXCaps"),
399     (DWORD, "dwVSBRops[DD_ROP_SPACE]"),
400     (DWORD, "dwSSBCaps"),
401     (DWORD, "dwSSBCKeyCaps"),
402     (DWORD, "dwSSBFXCaps"),
403     (DWORD, "dwSSBRops[DD_ROP_SPACE]"),
404     (DWORD, "dwMaxVideoPorts"),
405     (DWORD, "dwCurrVideoPorts"),
406     (DWORD, "dwSVBCaps2"),
407     (DWORD, "dwNLVBCaps"),
408     (DWORD, "dwNLVBCaps2"),
409     (DWORD, "dwNLVBCKeyCaps"),
410     (DWORD, "dwNLVBFXCaps"),
411     (DWORD, "dwNLVBRops[DD_ROP_SPACE]"),
412     (DDSCAPS2, "ddsCaps"),
413 ])
414 LPDDCAPS_DX7 = Pointer(DDCAPS_DX7)
415 DDCAPS = DDCAPS_DX7
416 LPDDCAPS = Pointer(DDCAPS)
417
418 DDPIXELFORMAT = Struct("DDPIXELFORMAT", [
419     (DWORD, "dwSize"),
420     (DWORD, "dwFlags"),
421     (DWORD, "dwFourCC"),
422     (DWORD, "dwRGBBitCount"),
423     (DWORD, "dwYUVBitCount"),
424     (DWORD, "dwZBufferBitDepth"),
425     (DWORD, "dwAlphaBitDepth"),
426     (DWORD, "dwLuminanceBitCount"),
427     (DWORD, "dwBumpBitCount"),
428     (DWORD, "dwPrivateFormatBitCount"),
429     (DWORD, "dwRBitMask"),
430     (DWORD, "dwYBitMask"),
431     (DWORD, "dwStencilBitDepth"),
432     (DWORD, "dwLuminanceBitMask"),
433     (DWORD, "dwBumpDuBitMask"),
434     (DWORD, "dwOperations"),
435     (DWORD, "dwGBitMask"),
436     (DWORD, "dwUBitMask"),
437     (DWORD, "dwZBitMask"),
438     (DWORD, "dwBumpDvBitMask"),
439     (WORD, "MultiSampleCaps.wFlipMSTypes"),
440     (WORD, "MultiSampleCaps.wBltMSTypes"),
441     (DWORD, "dwBBitMask"),
442     (DWORD, "dwVBitMask"),
443     (DWORD, "dwStencilBitMask"),
444     (DWORD, "dwBumpLuminanceBitMask"),
445     (DWORD, "dwRGBAlphaBitMask"),
446     (DWORD, "dwYUVAlphaBitMask"),
447     (DWORD, "dwLuminanceAlphaBitMask"),
448     (DWORD, "dwRGBZBitMask"),
449     (DWORD, "dwYUVZBitMask"),
450 ])
451 LPDDPIXELFORMAT = Pointer(DDPIXELFORMAT)
452
453 DDOVERLAYFX = Struct("DDOVERLAYFX", [
454     (DWORD, "dwSize"),
455     (DWORD, "dwAlphaEdgeBlendBitDepth"),
456     (DWORD, "dwAlphaEdgeBlend"),
457     (DWORD, "dwReserved"),
458     (DWORD, "dwAlphaDestConstBitDepth"),
459     (DWORD, "dwAlphaDestConst"),
460     (LPDIRECTDRAWSURFACE, "lpDDSAlphaDest"),
461     (DWORD, "dwAlphaSrcConstBitDepth"),
462     (DWORD, "dwAlphaSrcConst"),
463     (LPDIRECTDRAWSURFACE, "lpDDSAlphaSrc"),
464     (DDCOLORKEY, "dckDestColorkey"),
465     (DDCOLORKEY, "dckSrcColorkey"),
466     (DWORD, "dwDDFX"),
467     (DWORD, "dwFlags"),
468 ])
469 LPDDOVERLAYFX = Pointer(DDOVERLAYFX)
470
471 DDBLTBATCH = Struct("DDBLTBATCH", [
472     (LPRECT, "lprDest"),
473     (LPDIRECTDRAWSURFACE, "lpDDSSrc"),
474     (LPRECT, "lprSrc"),
475     (DWORD, "dwFlags"),
476     (LPDDBLTFX, "lpDDBltFx"),
477 ])
478 LPDDBLTBATCH = Pointer(DDBLTBATCH)
479
480 DDGAMMARAMP = Struct("DDGAMMARAMP", [
481     (WORD, "red[256]"),
482     (WORD, "green[256]"),
483     (WORD, "blue[256]"),
484 ])
485 LPDDGAMMARAMP = Pointer(DDGAMMARAMP)
486
487 DDDEVICEIDENTIFIER = Struct("DDDEVICEIDENTIFIER", [
488     (CString, "szDriver"),
489     (CString, "szDescription"),
490     (LARGE_INTEGER, "liDriverVersion"),
491     (DWORD, "dwVendorId"),
492     (DWORD, "dwDeviceId"),
493     (DWORD, "dwSubSysId"),
494     (DWORD, "dwRevision"),
495     (GUID, "guidDeviceIdentifier"),
496 ])
497 LPDDDEVICEIDENTIFIER = Pointer(DDDEVICEIDENTIFIER)
498
499 DDDEVICEIDENTIFIER2 = Struct("DDDEVICEIDENTIFIER2", [
500     (CString, "szDriver[MAX_DDDEVICEID_STRING]"),
501     (CString, "szDescription[MAX_DDDEVICEID_STRING]"),
502     (LARGE_INTEGER, "liDriverVersion"),
503     (DWORD, "dwVendorId"),
504     (DWORD, "dwDeviceId"),
505     (DWORD, "dwSubSysId"),
506     (DWORD, "dwRevision"),
507     (GUID, "guidDeviceIdentifier"),
508     (DWORD, "dwWHQLLevel"),
509 ])
510 LPDDDEVICEIDENTIFIER2 = Pointer(DDDEVICEIDENTIFIER2)
511
512 LPCLIPPERCALLBACK = FunctionPointer("DWORD", "LPCLIPPERCALLBACK", [(LPDIRECTDRAWCLIPPER, "lpDDClipper"), (HWND, "hWnd"), (DWORD, "code"), (LPVOID, "lpContext")])
513 LPSURFACESTREAMINGCALLBACK = FunctionPointer("DWORD", "LPSURFACESTREAMINGCALLBACK", [DWORD])
514
515 DDSURFACEDESC = Struct("DDSURFACEDESC", [
516     (DWORD, "dwSize"),
517     (DWORD, "dwFlags"),
518     (DWORD, "dwHeight"),
519     (DWORD, "dwWidth"),
520     (LONG, "lPitch"),
521     (DWORD, "dwLinearSize"),
522     (DWORD, "dwBackBufferCount"),
523     (DWORD, "dwMipMapCount"),
524     (DWORD, "dwZBufferBitDepth"),
525     (DWORD, "dwRefreshRate"),
526     (DWORD, "dwAlphaBitDepth"),
527     (DWORD, "dwReserved"),
528     (LPVOID, "lpSurface"),
529     (DDCOLORKEY, "ddckCKDestOverlay"),
530     (DDCOLORKEY, "ddckCKDestBlt"),
531     (DDCOLORKEY, "ddckCKSrcOverlay"),
532     (DDCOLORKEY, "ddckCKSrcBlt"),
533     (DDPIXELFORMAT, "ddpfPixelFormat"),
534     (DDSCAPS, "ddsCaps"),
535 ])
536 LPDDSURFACEDESC = Pointer(DDSURFACEDESC)
537
538 DDSURFACEDESC2 = Struct("DDSURFACEDESC2", [
539     (DWORD, "dwSize"),
540     (DWORD, "dwFlags"),
541     (DWORD, "dwHeight"),
542     (DWORD, "dwWidth"),
543     (LONG, "lPitch"),
544     (DWORD, "dwLinearSize"),
545     (DWORD, "dwBackBufferCount"),
546     (DWORD, "dwDepth"),
547     (DWORD, "dwMipMapCount"),
548     (DWORD, "dwRefreshRate"),
549     (DWORD, "dwSrcVBHandle"),
550     (DWORD, "dwAlphaBitDepth"),
551     (DWORD, "dwReserved"),
552     (LPVOID, "lpSurface"),
553     (DDCOLORKEY, "ddckCKDestOverlay"),
554     (DWORD, "dwEmptyFaceColor"),
555     (DDCOLORKEY, "ddckCKDestBlt"),
556     (DDCOLORKEY, "ddckCKSrcOverlay"),
557     (DDCOLORKEY, "ddckCKSrcBlt"),
558     (DDPIXELFORMAT, "ddpfPixelFormat"),
559     (DWORD, "dwFVF"),
560     (DDSCAPS2, "ddsCaps"),
561     (DWORD, "dwTextureStage"),
562 ])
563 LPDDSURFACEDESC2 = Pointer(DDSURFACEDESC2)
564
565 DDSD = Flags(DWORD, [
566     "DDSD_CAPS",
567     "DDSD_HEIGHT",
568     "DDSD_WIDTH",
569     "DDSD_PITCH",
570     "DDSD_BACKBUFFERCOUNT",
571     "DDSD_ZBUFFERBITDEPTH",
572     "DDSD_ALPHABITDEPTH",
573     "DDSD_LPSURFACE",
574     "DDSD_PIXELFORMAT",
575     "DDSD_CKDESTOVERLAY",
576     "DDSD_CKDESTBLT",
577     "DDSD_CKSRCOVERLAY",
578     "DDSD_CKSRCBLT",
579     "DDSD_MIPMAPCOUNT",
580     "DDSD_REFRESHRATE",
581     "DDSD_LINEARSIZE",
582     "DDSD_TEXTURESTAGE",
583     "DDSD_FVF",
584     "DDSD_SRCVBHANDLE",
585     "DDSD_DEPTH",
586     "DDSD_ALL",
587 ])
588
589 DDOPTSURFACEDESC = Struct("DDOPTSURFACEDESC", [
590     (DWORD, "dwSize"),
591     (DWORD, "dwFlags"),
592     (DDSCAPS2, "ddSCaps"),
593     (DDOSCAPS, "ddOSCaps"),
594     (GUID, "guid"),
595     (DWORD, "dwCompressionRatio"),
596 ])
597
598 DDSD = Flags(DWORD, [
599     "DDOSD_GUID",
600     "DDOSD_COMPRESSION_RATIO",
601     "DDOSD_SCAPS",
602     "DDOSD_OSCAPS",
603     "DDOSD_ALL",
604 ])
605
606 DDOSDCAPS = Flags(DWORD, [
607     "DDOSDCAPS_OPTCOMPRESSED",
608     "DDOSDCAPS_OPTREORDERED",
609     "DDOSDCAPS_MONOLITHICMIPMAP",
610     "DDOSDCAPS_VALIDSCAPS",
611     "DDOSDCAPS_VALIDOSCAPS",
612 ])
613
614 DDCOLORCONTROL = Struct("DDCOLORCONTROL", [
615     (DWORD, "dwSize"),
616     (DWORD, "dwFlags"),
617     (LONG, "lBrightness"),
618     (LONG, "lContrast"),
619     (LONG, "lHue"),
620     (LONG, "lSaturation"),
621     (LONG, "lSharpness"),
622     (LONG, "lGamma"),
623     (LONG, "lColorEnable"),
624     (DWORD, "dwReserved1"),
625 ])
626 LPDDCOLORCONTROL = Pointer(DDCOLORCONTROL)
627
628 DDCOLOR = Flags(DWORD, [
629     "DDCOLOR_BRIGHTNESS",
630     "DDCOLOR_CONTRAST",
631     "DDCOLOR_HUE",
632     "DDCOLOR_SATURATION",
633     "DDCOLOR_SHARPNESS",
634     "DDCOLOR_GAMMA",
635     "DDCOLOR_COLORENABLE",
636 ])
637
638 DDSCAPS = Flags(DWORD, [
639     "DDSCAPS_RESERVED1",
640     "DDSCAPS_ALPHA",
641     "DDSCAPS_BACKBUFFER",
642     "DDSCAPS_COMPLEX",
643     "DDSCAPS_FLIP",
644     "DDSCAPS_FRONTBUFFER",
645     "DDSCAPS_OFFSCREENPLAIN",
646     "DDSCAPS_OVERLAY",
647     "DDSCAPS_PALETTE",
648     "DDSCAPS_PRIMARYSURFACE",
649     "DDSCAPS_RESERVED3",
650     "DDSCAPS_PRIMARYSURFACELEFT",
651     "DDSCAPS_SYSTEMMEMORY",
652     "DDSCAPS_TEXTURE",
653     "DDSCAPS_3DDEVICE",
654     "DDSCAPS_VIDEOMEMORY",
655     "DDSCAPS_VISIBLE",
656     "DDSCAPS_WRITEONLY",
657     "DDSCAPS_ZBUFFER",
658     "DDSCAPS_OWNDC",
659     "DDSCAPS_LIVEVIDEO",
660     "DDSCAPS_HWCODEC",
661     "DDSCAPS_MODEX",
662     "DDSCAPS_MIPMAP",
663     "DDSCAPS_RESERVED2",
664     "DDSCAPS_ALLOCONLOAD",
665     "DDSCAPS_VIDEOPORT",
666     "DDSCAPS_LOCALVIDMEM",
667     "DDSCAPS_NONLOCALVIDMEM",
668     "DDSCAPS_STANDARDVGAMODE",
669     "DDSCAPS_OPTIMIZED",
670 ])
671 DDCAPS2 = Flags(DWORD, [
672     "DDSCAPS2_RESERVED4",
673     "DDSCAPS2_HARDWAREDEINTERLACE",
674     "DDSCAPS2_HINTDYNAMIC",
675     "DDSCAPS2_HINTSTATIC",
676     "DDSCAPS2_TEXTUREMANAGE",
677     "DDSCAPS2_RESERVED1",
678     "DDSCAPS2_RESERVED2",
679     "DDSCAPS2_OPAQUE",
680     "DDSCAPS2_HINTANTIALIASING",
681     "DDSCAPS2_CUBEMAP",
682     "DDSCAPS2_CUBEMAP_ALLFACES",
683     "DDSCAPS2_CUBEMAP_POSITIVEX",
684     "DDSCAPS2_CUBEMAP_NEGATIVEX",
685     "DDSCAPS2_CUBEMAP_POSITIVEY",
686     "DDSCAPS2_CUBEMAP_NEGATIVEY",
687     "DDSCAPS2_CUBEMAP_POSITIVEZ",
688     "DDSCAPS2_CUBEMAP_NEGATIVEZ",
689     "DDSCAPS2_MIPMAPSUBLEVEL",
690     "DDSCAPS2_D3DTEXTUREMANAGE",
691     "DDSCAPS2_DONOTPERSIST",
692     "DDSCAPS2_STEREOSURFACELEFT",
693     "DDSCAPS2_VOLUME",
694     "DDSCAPS2_NOTUSERLOCKABLE",
695     "DDSCAPS2_POINTS",
696     "DDSCAPS2_RTPATCHES",
697     "DDSCAPS2_NPATCHES",
698     "DDSCAPS2_RESERVED3",
699     "DDSCAPS2_DISCARDBACKBUFFER",
700     "DDSCAPS2_ENABLEALPHACHANNEL",
701     "DDSCAPS2_EXTENDEDFORMATPRIMARY",
702     "DDSCAPS2_ADDITIONALPRIMARY",
703 ])
704 DDSCAPS3 = Flags(DWORD, [
705     "DDSCAPS3_MULTISAMPLE_MASK",
706     "DDSCAPS3_MULTISAMPLE_QUALITY_MASK",
707     "DDSCAPS3_MULTISAMPLE_QUALITY_SHIFT",
708     "DDSCAPS3_RESERVED1",
709     "DDSCAPS3_RESERVED2",
710     "DDSCAPS3_LIGHTWEIGHTMIPMAP",
711     "DDSCAPS3_AUTOGENMIPMAP",
712     "DDSCAPS3_DMAP",
713     "DDSCAPS3_CREATESHAREDRESOURCE",
714     "DDSCAPS3_READONLYRESOURCE",
715     "DDSCAPS3_OPENSHAREDRESOURCE",
716 ])
717
718 DDCAPS = Flags(DWORD, [
719     "DDCAPS_3D",
720     "DDCAPS_ALIGNBOUNDARYDEST",
721     "DDCAPS_ALIGNSIZEDEST",
722     "DDCAPS_ALIGNBOUNDARYSRC",
723     "DDCAPS_ALIGNSIZESRC",
724     "DDCAPS_ALIGNSTRIDE",
725     "DDCAPS_BLT",
726     "DDCAPS_BLTQUEUE",
727     "DDCAPS_BLTFOURCC",
728     "DDCAPS_BLTSTRETCH",
729     "DDCAPS_GDI",
730     "DDCAPS_OVERLAY",
731     "DDCAPS_OVERLAYCANTCLIP",
732     "DDCAPS_OVERLAYFOURCC",
733     "DDCAPS_OVERLAYSTRETCH",
734     "DDCAPS_PALETTE",
735     "DDCAPS_PALETTEVSYNC",
736     "DDCAPS_READSCANLINE",
737     "DDCAPS_RESERVED1",
738     "DDCAPS_VBI",
739     "DDCAPS_ZBLTS",
740     "DDCAPS_ZOVERLAYS",
741     "DDCAPS_COLORKEY",
742     "DDCAPS_ALPHA",
743     "DDCAPS_COLORKEYHWASSIST",
744     "DDCAPS_NOHARDWARE",
745     "DDCAPS_BLTCOLORFILL",
746     "DDCAPS_BANKSWITCHED",
747     "DDCAPS_BLTDEPTHFILL",
748     "DDCAPS_CANCLIP",
749     "DDCAPS_CANCLIPSTRETCHED",
750     "DDCAPS_CANBLTSYSMEM",
751 ])
752
753 DDCAPS2 = Flags(DWORD, [
754     "DDCAPS2_CERTIFIED",
755     "DDCAPS2_NO2DDURING3DSCENE",
756     "DDCAPS2_VIDEOPORT",
757     "DDCAPS2_AUTOFLIPOVERLAY",
758     "DDCAPS2_CANBOBINTERLEAVED",
759     "DDCAPS2_CANBOBNONINTERLEAVED",
760     "DDCAPS2_COLORCONTROLOVERLAY",
761     "DDCAPS2_COLORCONTROLPRIMARY",
762     "DDCAPS2_CANDROPZ16BIT",
763     "DDCAPS2_NONLOCALVIDMEM",
764     "DDCAPS2_NONLOCALVIDMEMCAPS",
765     "DDCAPS2_NOPAGELOCKREQUIRED",
766     "DDCAPS2_WIDESURFACES",
767     "DDCAPS2_CANFLIPODDEVEN",
768     "DDCAPS2_CANBOBHARDWARE",
769     "DDCAPS2_COPYFOURCC",
770     "DDCAPS2_PRIMARYGAMMA",
771     "DDCAPS2_CANRENDERWINDOWED",
772     "DDCAPS2_CANCALIBRATEGAMMA",
773     "DDCAPS2_FLIPINTERVAL",
774     "DDCAPS2_FLIPNOVSYNC",
775     "DDCAPS2_CANMANAGETEXTURE",
776     "DDCAPS2_TEXMANINNONLOCALVIDMEM",
777     "DDCAPS2_STEREO",
778     "DDCAPS2_SYSTONONLOCAL_AS_SYSTOLOCAL",
779     "DDCAPS2_RESERVED1",
780     "DDCAPS2_CANMANAGERESOURCE",
781     "DDCAPS2_DYNAMICTEXTURES",
782     "DDCAPS2_CANAUTOGENMIPMAP",
783     "DDCAPS2_CANSHARERESOURCE",
784 ])
785
786 DDFXALPHACAPS = Flags(DWORD, [
787     "DDFXALPHACAPS_BLTALPHAEDGEBLEND",
788     "DDFXALPHACAPS_BLTALPHAPIXELS",
789     "DDFXALPHACAPS_BLTALPHAPIXELSNEG",
790     "DDFXALPHACAPS_BLTALPHASURFACES",
791     "DDFXALPHACAPS_BLTALPHASURFACESNEG",
792     "DDFXALPHACAPS_OVERLAYALPHAEDGEBLEND",
793     "DDFXALPHACAPS_OVERLAYALPHAPIXELS",
794     "DDFXALPHACAPS_OVERLAYALPHAPIXELSNEG",
795     "DDFXALPHACAPS_OVERLAYALPHASURFACES",
796     "DDFXALPHACAPS_OVERLAYALPHASURFACESNEG",
797 ])
798
799 DDFXCAPS = Flags(DWORD, [
800     "DDFXCAPS_BLTARITHSTRETCHY",
801     "DDFXCAPS_BLTARITHSTRETCHYN",
802     "DDFXCAPS_BLTMIRRORLEFTRIGHT",
803     "DDFXCAPS_BLTMIRRORUPDOWN",
804     "DDFXCAPS_BLTROTATION",
805     "DDFXCAPS_BLTROTATION90",
806     "DDFXCAPS_BLTSHRINKX",
807     "DDFXCAPS_BLTSHRINKXN",
808     "DDFXCAPS_BLTSHRINKY",
809     "DDFXCAPS_BLTSHRINKYN",
810     "DDFXCAPS_BLTSTRETCHX",
811     "DDFXCAPS_BLTSTRETCHXN",
812     "DDFXCAPS_BLTSTRETCHY",
813     "DDFXCAPS_BLTSTRETCHYN",
814     "DDFXCAPS_OVERLAYARITHSTRETCHY",
815     "DDFXCAPS_OVERLAYARITHSTRETCHYN",
816     "DDFXCAPS_OVERLAYSHRINKX",
817     "DDFXCAPS_OVERLAYSHRINKXN",
818     "DDFXCAPS_OVERLAYSHRINKY",
819     "DDFXCAPS_OVERLAYSHRINKYN",
820     "DDFXCAPS_OVERLAYSTRETCHX",
821     "DDFXCAPS_OVERLAYSTRETCHXN",
822     "DDFXCAPS_OVERLAYSTRETCHY",
823     "DDFXCAPS_OVERLAYSTRETCHYN",
824     "DDFXCAPS_OVERLAYMIRRORLEFTRIGHT",
825     "DDFXCAPS_OVERLAYMIRRORUPDOWN",
826     "DDFXCAPS_OVERLAYDEINTERLACE",
827     "DDFXCAPS_BLTALPHA",
828     "DDFXCAPS_BLTFILTER",
829     "DDFXCAPS_OVERLAYALPHA",
830     "DDFXCAPS_OVERLAYFILTER",
831 ])
832
833 DDSVCAPS = Flags(DWORD, [
834     "DDSVCAPS_RESERVED1",
835     "DDSVCAPS_RESERVED2",
836     "DDSVCAPS_RESERVED3",
837     "DDSVCAPS_RESERVED4",
838     "DDSVCAPS_STEREOSEQUENTIAL",
839 ])
840
841 DDPCAPS = Flags(DWORD, [
842     "DDPCAPS_4BIT",
843     "DDPCAPS_8BITENTRIES",
844     "DDPCAPS_8BIT",
845     "DDPCAPS_INITIALIZE",
846     "DDPCAPS_PRIMARYSURFACE",
847     "DDPCAPS_PRIMARYSURFACELEFT",
848     "DDPCAPS_ALLOW256",
849     "DDPCAPS_VSYNC",
850     "DDPCAPS_1BIT",
851     "DDPCAPS_2BIT",
852     "DDPCAPS_ALPHA",
853 ])
854
855 DDSPD = Flags(DWORD, [
856     "DDSPD_IUNKNOWNPOINTER",
857     "DDSPD_VOLATILE",
858 ])
859
860 DDBD = Flags(DWORD, [
861     "DDBD_1",
862     "DDBD_2",
863     "DDBD_4",
864     "DDBD_8",
865     "DDBD_16",
866     "DDBD_24",
867     "DDBD_32",
868 ])
869
870 DDCKEY = Flags(DWORD, [
871     "DDCKEY_COLORSPACE",
872     "DDCKEY_DESTBLT",
873     "DDCKEY_DESTOVERLAY",
874     "DDCKEY_SRCBLT",
875     "DDCKEY_SRCOVERLAY",
876 ])
877
878 DDCKEYCAPS = Flags(DWORD, [
879     "DDCKEYCAPS_DESTBLT",
880     "DDCKEYCAPS_DESTBLTCLRSPACE",
881     "DDCKEYCAPS_DESTBLTCLRSPACEYUV",
882     "DDCKEYCAPS_DESTBLTYUV",
883     "DDCKEYCAPS_DESTOVERLAY",
884     "DDCKEYCAPS_DESTOVERLAYCLRSPACE",
885     "DDCKEYCAPS_DESTOVERLAYCLRSPACEYUV",
886     "DDCKEYCAPS_DESTOVERLAYONEACTIVE",
887     "DDCKEYCAPS_DESTOVERLAYYUV",
888     "DDCKEYCAPS_SRCBLT",
889     "DDCKEYCAPS_SRCBLTCLRSPACE",
890     "DDCKEYCAPS_SRCBLTCLRSPACEYUV",
891     "DDCKEYCAPS_SRCBLTYUV",
892     "DDCKEYCAPS_SRCOVERLAY",
893     "DDCKEYCAPS_SRCOVERLAYCLRSPACE",
894     "DDCKEYCAPS_SRCOVERLAYCLRSPACEYUV",
895     "DDCKEYCAPS_SRCOVERLAYONEACTIVE",
896     "DDCKEYCAPS_SRCOVERLAYYUV",
897     "DDCKEYCAPS_NOCOSTOVERLAY",
898 ])
899
900 DDPF = Flags(DWORD, [
901     "DDPF_ALPHAPIXELS",
902     "DDPF_ALPHA",
903     "DDPF_FOURCC",
904     "DDPF_PALETTEINDEXED4",
905     "DDPF_PALETTEINDEXEDTO8",
906     "DDPF_PALETTEINDEXED8",
907     "DDPF_RGB",
908     "DDPF_COMPRESSED",
909     "DDPF_RGBTOYUV",
910     "DDPF_YUV",
911     "DDPF_ZBUFFER",
912     "DDPF_PALETTEINDEXED1",
913     "DDPF_PALETTEINDEXED2",
914     "DDPF_ZPIXELS",
915     "DDPF_STENCILBUFFER",
916     "DDPF_ALPHAPREMULT",
917     "DDPF_LUMINANCE",
918     "DDPF_BUMPLUMINANCE",
919     "DDPF_BUMPDUDV",
920 ])
921
922 DDENUMSURFACES = Flags(DWORD, [
923     "DDENUMSURFACES_ALL",
924     "DDENUMSURFACES_MATCH",
925     "DDENUMSURFACES_NOMATCH",
926     "DDENUMSURFACES_CANBECREATED",
927     "DDENUMSURFACES_DOESEXIST",
928 ])
929
930 DDSDM = Flags(DWORD, [
931     "DDSDM_STANDARDVGAMODE",
932 ])
933
934 DDEDM = Flags(DWORD, [
935     "DDEDM_REFRESHRATES",
936     "DDEDM_STANDARDVGAMODES",
937 ])
938
939 DDSCL = Flags(DWORD, [
940     "DDSCL_FULLSCREEN",
941     "DDSCL_ALLOWREBOOT",
942     "DDSCL_NOWINDOWCHANGES",
943     "DDSCL_NORMAL",
944     "DDSCL_EXCLUSIVE",
945     "DDSCL_ALLOWMODEX",
946     "DDSCL_SETFOCUSWINDOW",
947     "DDSCL_SETDEVICEWINDOW",
948     "DDSCL_CREATEDEVICEWINDOW",
949     "DDSCL_MULTITHREADED",
950     "DDSCL_FPUSETUP",
951     "DDSCL_FPUPRESERVE",
952 ])
953
954 DDBLT = Flags(DWORD, [
955     "DDBLT_ALPHADEST",
956     "DDBLT_ALPHADESTCONSTOVERRIDE",
957     "DDBLT_ALPHADESTNEG",
958     "DDBLT_ALPHADESTSURFACEOVERRIDE",
959     "DDBLT_ALPHAEDGEBLEND",
960     "DDBLT_ALPHASRC",
961     "DDBLT_ALPHASRCCONSTOVERRIDE",
962     "DDBLT_ALPHASRCNEG",
963     "DDBLT_ALPHASRCSURFACEOVERRIDE",
964     "DDBLT_ASYNC",
965     "DDBLT_COLORFILL",
966     "DDBLT_DDFX",
967     "DDBLT_DDROPS",
968     "DDBLT_KEYDEST",
969     "DDBLT_KEYDESTOVERRIDE",
970     "DDBLT_KEYSRC",
971     "DDBLT_KEYSRCOVERRIDE",
972     "DDBLT_ROP",
973     "DDBLT_ROTATIONANGLE",
974     "DDBLT_ZBUFFER",
975     "DDBLT_ZBUFFERDESTCONSTOVERRIDE",
976     "DDBLT_ZBUFFERDESTOVERRIDE",
977     "DDBLT_ZBUFFERSRCCONSTOVERRIDE",
978     "DDBLT_ZBUFFERSRCOVERRIDE",
979     "DDBLT_WAIT",
980     "DDBLT_DEPTHFILL",
981     "DDBLT_DONOTWAIT",
982     "DDBLT_PRESENTATION",
983     "DDBLT_LAST_PRESENTATION",
984     "DDBLT_EXTENDED_FLAGS",
985     "DDBLT_EXTENDED_LINEAR_CONTENT",
986 ])
987
988 DDBLTFAST = Flags(DWORD, [
989     "DDBLTFAST_NOCOLORKEY",
990     "DDBLTFAST_SRCCOLORKEY",
991     "DDBLTFAST_DESTCOLORKEY",
992     "DDBLTFAST_WAIT",
993     "DDBLTFAST_DONOTWAIT",
994 ])
995
996 DDFLIP = Flags(DWORD, [
997     "DDFLIP_WAIT",
998     "DDFLIP_EVEN",
999     "DDFLIP_ODD",
1000     "DDFLIP_NOVSYNC",
1001     "DDFLIP_INTERVAL2",
1002     "DDFLIP_INTERVAL3",
1003     "DDFLIP_INTERVAL4",
1004     "DDFLIP_STEREO",
1005     "DDFLIP_DONOTWAIT",
1006 ])
1007
1008 DDOVER = Flags(DWORD, [
1009     "DDOVER_ALPHADEST",
1010     "DDOVER_ALPHADESTCONSTOVERRIDE",
1011     "DDOVER_ALPHADESTNEG",
1012     "DDOVER_ALPHADESTSURFACEOVERRIDE",
1013     "DDOVER_ALPHAEDGEBLEND",
1014     "DDOVER_ALPHASRC",
1015     "DDOVER_ALPHASRCCONSTOVERRIDE",
1016     "DDOVER_ALPHASRCNEG",
1017     "DDOVER_ALPHASRCSURFACEOVERRIDE",
1018     "DDOVER_HIDE",
1019     "DDOVER_KEYDEST",
1020     "DDOVER_KEYDESTOVERRIDE",
1021     "DDOVER_KEYSRC",
1022     "DDOVER_KEYSRCOVERRIDE",
1023     "DDOVER_SHOW",
1024     "DDOVER_ADDDIRTYRECT",
1025     "DDOVER_REFRESHDIRTYRECTS",
1026     "DDOVER_REFRESHALL",
1027     "DDOVER_DDFX",
1028     "DDOVER_AUTOFLIP",
1029     "DDOVER_BOB",
1030     "DDOVER_OVERRIDEBOBWEAVE",
1031     "DDOVER_INTERLEAVED",
1032     "DDOVER_BOBHARDWARE",
1033     "DDOVER_ARGBSCALEFACTORS",
1034     "DDOVER_DEGRADEARGBSCALING",
1035 ])
1036
1037 DDSETSURFACEDESC = Flags(DWORD, [
1038     #"DDSETSURFACEDESC_RECREATEDC",
1039     #"DDSETSURFACEDESC_PRESERVEDC",
1040 ])
1041
1042 DDLOCK = Flags(DWORD, [
1043     "DDLOCK_SURFACEMEMORYPTR",
1044     "DDLOCK_WAIT",
1045     "DDLOCK_EVENT",
1046     "DDLOCK_READONLY",
1047     "DDLOCK_WRITEONLY",
1048     "DDLOCK_NOSYSLOCK",
1049     "DDLOCK_NOOVERWRITE",
1050     "DDLOCK_DISCARDCONTENTS",
1051     "DDLOCK_OKTOSWAP",
1052     "DDLOCK_DONOTWAIT",
1053     "DDLOCK_HASVOLUMETEXTUREBOXRECT",
1054     "DDLOCK_NODIRTYUPDATE",
1055 ])
1056
1057 DDBLTFX = Flags(DWORD, [
1058     "DDBLTFX_ARITHSTRETCHY",
1059     "DDBLTFX_MIRRORLEFTRIGHT",
1060     "DDBLTFX_MIRRORUPDOWN",
1061     "DDBLTFX_NOTEARING",
1062     "DDBLTFX_ROTATE180",
1063     "DDBLTFX_ROTATE270",
1064     "DDBLTFX_ROTATE90",
1065     "DDBLTFX_ZBUFFERRANGE",
1066     "DDBLTFX_ZBUFFERBASEDEST",
1067 ])
1068
1069 DDOVERFX = Flags(DWORD, [
1070     "DDOVERFX_ARITHSTRETCHY",
1071     "DDOVERFX_MIRRORLEFTRIGHT",
1072     "DDOVERFX_MIRRORUPDOWN",
1073     "DDOVERFX_DEINTERLACE",
1074 ])
1075
1076 DDWAITVB = Flags(DWORD, [
1077     "DDWAITVB_BLOCKBEGIN",
1078     "DDWAITVB_BLOCKBEGINEVENT",
1079     "DDWAITVB_BLOCKEND",
1080 ])
1081
1082 DDGFS = Flags(DWORD, [
1083     "DDGFS_CANFLIP",
1084     "DDGFS_ISFLIPDONE",
1085 ])
1086
1087 DDGBS = Flags(DWORD, [
1088     "DDGBS_CANBLT",
1089     "DDGBS_ISBLTDONE",
1090 ])
1091
1092 DDENUMOVERLAYZ = Flags(DWORD, [
1093     "DDENUMOVERLAYZ_BACKTOFRONT",
1094     "DDENUMOVERLAYZ_FRONTTOBACK",
1095 ])
1096
1097 DDOVERZ = Flags(DWORD, [
1098     "DDOVERZ_SENDTOFRONT",
1099     "DDOVERZ_SENDTOBACK",
1100     "DDOVERZ_MOVEFORWARD",
1101     "DDOVERZ_MOVEBACKWARD",
1102     "DDOVERZ_INSERTINFRONTOF",
1103     "DDOVERZ_INSERTINBACKOF",
1104 ])
1105
1106 DDSGR = Flags(DWORD, [
1107     "DDSGR_CALIBRATE",
1108 ])
1109
1110 DDSMT = Flags(DWORD, [
1111     "DDSMT_ISTESTREQUIRED",
1112 ])
1113
1114 DDEM = Flags(DWORD, [
1115     "DDEM_MODEPASSED",
1116     "DDEM_MODEFAILED",
1117 ])
1118
1119 HRESULT = Enum("HRESULT", [
1120     "DD_OK",
1121     "DD_FALSE",
1122     "DDERR_ALREADYINITIALIZED",
1123     "DDERR_CANNOTATTACHSURFACE",
1124     "DDERR_CANNOTDETACHSURFACE",
1125     "DDERR_CURRENTLYNOTAVAIL",
1126     "DDERR_EXCEPTION",
1127     "DDERR_GENERIC",
1128     "DDERR_HEIGHTALIGN",
1129     "DDERR_INCOMPATIBLEPRIMARY",
1130     "DDERR_INVALIDCAPS",
1131     "DDERR_INVALIDCLIPLIST",
1132     "DDERR_INVALIDMODE",
1133     "DDERR_INVALIDOBJECT",
1134     "DDERR_INVALIDPARAMS",
1135     "DDERR_INVALIDPIXELFORMAT",
1136     "DDERR_INVALIDRECT",
1137     "DDERR_LOCKEDSURFACES",
1138     "DDERR_NO3D",
1139     "DDERR_NOALPHAHW",
1140     "DDERR_NOSTEREOHARDWARE",
1141     "DDERR_NOSURFACELEFT",
1142     "DDERR_NOCLIPLIST",
1143     "DDERR_NOCOLORCONVHW",
1144     "DDERR_NOCOOPERATIVELEVELSET",
1145     "DDERR_NOCOLORKEY",
1146     "DDERR_NOCOLORKEYHW",
1147     "DDERR_NODIRECTDRAWSUPPORT",
1148     "DDERR_NOEXCLUSIVEMODE",
1149     "DDERR_NOFLIPHW",
1150     "DDERR_NOGDI",
1151     "DDERR_NOMIRRORHW",
1152     "DDERR_NOTFOUND",
1153     "DDERR_NOOVERLAYHW",
1154     "DDERR_OVERLAPPINGRECTS",
1155     "DDERR_NORASTEROPHW",
1156     "DDERR_NOROTATIONHW",
1157     "DDERR_NOSTRETCHHW",
1158     "DDERR_NOT4BITCOLOR",
1159     "DDERR_NOT4BITCOLORINDEX",
1160     "DDERR_NOT8BITCOLOR",
1161     "DDERR_NOTEXTUREHW",
1162     "DDERR_NOVSYNCHW",
1163     "DDERR_NOZBUFFERHW",
1164     "DDERR_NOZOVERLAYHW",
1165     "DDERR_OUTOFCAPS",
1166     "DDERR_OUTOFMEMORY",
1167     "DDERR_OUTOFVIDEOMEMORY",
1168     "DDERR_OVERLAYCANTCLIP",
1169     "DDERR_OVERLAYCOLORKEYONLYONEACTIVE",
1170     "DDERR_PALETTEBUSY",
1171     "DDERR_COLORKEYNOTSET",
1172     "DDERR_SURFACEALREADYATTACHED",
1173     "DDERR_SURFACEALREADYDEPENDENT",
1174     "DDERR_SURFACEBUSY",
1175     "DDERR_CANTLOCKSURFACE",
1176     "DDERR_SURFACEISOBSCURED",
1177     "DDERR_SURFACELOST",
1178     "DDERR_SURFACENOTATTACHED",
1179     "DDERR_TOOBIGHEIGHT",
1180     "DDERR_TOOBIGSIZE",
1181     "DDERR_TOOBIGWIDTH",
1182     "DDERR_UNSUPPORTED",
1183     "DDERR_UNSUPPORTEDFORMAT",
1184     "DDERR_UNSUPPORTEDMASK",
1185     "DDERR_INVALIDSTREAM",
1186     "DDERR_VERTICALBLANKINPROGRESS",
1187     "DDERR_WASSTILLDRAWING",
1188     "DDERR_DDSCAPSCOMPLEXREQUIRED",
1189     "DDERR_XALIGN",
1190     "DDERR_INVALIDDIRECTDRAWGUID",
1191     "DDERR_DIRECTDRAWALREADYCREATED",
1192     "DDERR_NODIRECTDRAWHW",
1193     "DDERR_PRIMARYSURFACEALREADYEXISTS",
1194     "DDERR_NOEMULATION",
1195     "DDERR_REGIONTOOSMALL",
1196     "DDERR_CLIPPERISUSINGHWND",
1197     "DDERR_NOCLIPPERATTACHED",
1198     "DDERR_NOHWND",
1199     "DDERR_HWNDSUBCLASSED",
1200     "DDERR_HWNDALREADYSET",
1201     "DDERR_NOPALETTEATTACHED",
1202     "DDERR_NOPALETTEHW",
1203     "DDERR_BLTFASTCANTCLIP",
1204     "DDERR_NOBLTHW",
1205     "DDERR_NODDROPSHW",
1206     "DDERR_OVERLAYNOTVISIBLE",
1207     "DDERR_NOOVERLAYDEST",
1208     "DDERR_INVALIDPOSITION",
1209     "DDERR_NOTAOVERLAYSURFACE",
1210     "DDERR_EXCLUSIVEMODEALREADYSET",
1211     "DDERR_NOTFLIPPABLE",
1212     "DDERR_CANTDUPLICATE",
1213     "DDERR_NOTLOCKED",
1214     "DDERR_CANTCREATEDC",
1215     "DDERR_NODC",
1216     "DDERR_WRONGMODE",
1217     "DDERR_IMPLICITLYCREATED",
1218     "DDERR_NOTPALETTIZED",
1219     "DDERR_UNSUPPORTEDMODE",
1220     "DDERR_NOMIPMAPHW",
1221     "DDERR_INVALIDSURFACETYPE",
1222     "DDERR_NOOPTIMIZEHW",
1223     "DDERR_NOTLOADED",
1224     "DDERR_NOFOCUSWINDOW",
1225     "DDERR_NOTONMIPMAPSUBLEVEL",
1226     "DDERR_DCALREADYCREATED",
1227     "DDERR_NONONLOCALVIDMEM",
1228     "DDERR_CANTPAGELOCK",
1229     "DDERR_CANTPAGEUNLOCK",
1230     "DDERR_NOTPAGELOCKED",
1231     "DDERR_MOREDATA",
1232     "DDERR_EXPIRED",
1233     "DDERR_TESTFINISHED",
1234     "DDERR_NEWMODE",
1235     "DDERR_D3DNOTINITIALIZED",
1236     "DDERR_VIDEONOTACTIVE",
1237     "DDERR_NOMONITORINFORMATION",
1238     "DDERR_NODRIVERSUPPORT",
1239     "DDERR_DEVICEDOESNTOWNSURFACE",
1240     "DDERR_NOTINITIALIZED",
1241 ])
1242
1243 LPDDENUMMODESCALLBACK     = FunctionPointer(HRESULT, "LPDDENUMMODESCALLBACK", [LPDDSURFACEDESC, LPVOID])
1244 LPDDENUMMODESCALLBACK2    = FunctionPointer(HRESULT, "LPDDENUMMODESCALLBACK2", [LPDDSURFACEDESC2, LPVOID])
1245 LPDDENUMSURFACESCALLBACK  = FunctionPointer(HRESULT, "LPDDENUMSURFACESCALLBACK", [LPDIRECTDRAWSURFACE, LPDDSURFACEDESC, LPVOID])
1246 LPDDENUMSURFACESCALLBACK2 = FunctionPointer(HRESULT, "LPDDENUMSURFACESCALLBACK2", [LPDIRECTDRAWSURFACE4, LPDDSURFACEDESC2, LPVOID])
1247 LPDDENUMSURFACESCALLBACK7 = FunctionPointer(HRESULT, "LPDDENUMSURFACESCALLBACK7", [LPDIRECTDRAWSURFACE7, LPDDSURFACEDESC2, LPVOID])
1248
1249 IDirectDraw.methods += [
1250     Method(HRESULT, "Compact", []),
1251     Method(HRESULT, "CreateClipper", [DWORD, Pointer(LPDIRECTDRAWCLIPPER) , Pointer(IUnknown) ]),
1252     Method(HRESULT, "CreatePalette", [DWORD, LPPALETTEENTRY, Pointer(LPDIRECTDRAWPALETTE) , Pointer(IUnknown) ]),
1253     Method(HRESULT, "CreateSurface", [LPDDSURFACEDESC, Pointer(LPDIRECTDRAWSURFACE) , Pointer(IUnknown) ]),
1254     Method(HRESULT, "DuplicateSurface", [ LPDIRECTDRAWSURFACE, Pointer(LPDIRECTDRAWSURFACE) ]),
1255     Method(HRESULT, "EnumDisplayModes", [ DWORD, LPDDSURFACEDESC, LPVOID, LPDDENUMMODESCALLBACK ]),
1256     Method(HRESULT, "EnumSurfaces", [DWORD, LPDDSURFACEDESC, LPVOID,LPDDENUMSURFACESCALLBACK ]),
1257     Method(HRESULT, "FlipToGDISurface", []),
1258     Method(HRESULT, "GetCaps", [ LPDDCAPS, LPDDCAPS]),
1259     Method(HRESULT, "GetDisplayMode", [ LPDDSURFACEDESC]),
1260     Method(HRESULT, "GetFourCCCodes", [LPDWORD, LPDWORD ]),
1261     Method(HRESULT, "GetGDISurface", [Pointer(LPDIRECTDRAWSURFACE) ]),
1262     Method(HRESULT, "GetMonitorFrequency", [LPDWORD]),
1263     Method(HRESULT, "GetScanLine", [LPDWORD]),
1264     Method(HRESULT, "GetVerticalBlankStatus", [LPBOOL ]),
1265     Method(HRESULT, "Initialize", [Pointer(GUID) ]),
1266     Method(HRESULT, "RestoreDisplayMode", []),
1267     Method(HRESULT, "SetCooperativeLevel", [HWND, DWORD]),
1268     Method(HRESULT, "SetDisplayMode", [DWORD, DWORD,DWORD]),
1269     Method(HRESULT, "WaitForVerticalBlank", [DWORD, HANDLE ]),
1270 ]
1271
1272 IDirectDraw2.methods += [
1273     Method(HRESULT, "Compact", []),
1274     Method(HRESULT, "CreateClipper", [DWORD, Pointer(LPDIRECTDRAWCLIPPER) , Pointer(IUnknown) ]),
1275     Method(HRESULT, "CreatePalette", [DWORD, LPPALETTEENTRY, Pointer(LPDIRECTDRAWPALETTE) , Pointer(IUnknown) ]),
1276     Method(HRESULT, "CreateSurface", [LPDDSURFACEDESC, Pointer(LPDIRECTDRAWSURFACE) , Pointer(IUnknown) ]),
1277     Method(HRESULT, "DuplicateSurface", [ LPDIRECTDRAWSURFACE, Pointer(LPDIRECTDRAWSURFACE) ]),
1278     Method(HRESULT, "EnumDisplayModes", [ DWORD, LPDDSURFACEDESC, LPVOID, LPDDENUMMODESCALLBACK ]),
1279     Method(HRESULT, "EnumSurfaces", [DWORD, LPDDSURFACEDESC, LPVOID,LPDDENUMSURFACESCALLBACK ]),
1280     Method(HRESULT, "FlipToGDISurface", []),
1281     Method(HRESULT, "GetCaps", [ LPDDCAPS, LPDDCAPS]),
1282     Method(HRESULT, "GetDisplayMode", [ LPDDSURFACEDESC]),
1283     Method(HRESULT, "GetFourCCCodes", [LPDWORD, LPDWORD ]),
1284     Method(HRESULT, "GetGDISurface", [Pointer(LPDIRECTDRAWSURFACE) ]),
1285     Method(HRESULT, "GetMonitorFrequency", [LPDWORD]),
1286     Method(HRESULT, "GetScanLine", [LPDWORD]),
1287     Method(HRESULT, "GetVerticalBlankStatus", [LPBOOL ]),
1288     Method(HRESULT, "Initialize", [Pointer(GUID) ]),
1289     Method(HRESULT, "RestoreDisplayMode", []),
1290     Method(HRESULT, "SetCooperativeLevel", [HWND, DWORD]),
1291     Method(HRESULT, "SetDisplayMode", [DWORD, DWORD,DWORD, DWORD, DWORD]),
1292     Method(HRESULT, "WaitForVerticalBlank", [DWORD, HANDLE ]),
1293     Method(HRESULT, "GetAvailableVidMem", [LPDDSCAPS, LPDWORD, LPDWORD]),
1294 ]
1295
1296 IDirectDraw4.methods += [
1297     Method(HRESULT, "Compact", []),
1298     Method(HRESULT, "CreateClipper", [DWORD, Pointer(LPDIRECTDRAWCLIPPER) , Pointer(IUnknown) ]),
1299     Method(HRESULT, "CreatePalette", [DWORD, LPPALETTEENTRY, Pointer(LPDIRECTDRAWPALETTE) , Pointer(IUnknown) ]),
1300     Method(HRESULT, "CreateSurface", [LPDDSURFACEDESC2, Pointer(LPDIRECTDRAWSURFACE4) , Pointer(IUnknown) ]),
1301     Method(HRESULT, "DuplicateSurface", [ LPDIRECTDRAWSURFACE4, Pointer(LPDIRECTDRAWSURFACE4) ]),
1302     Method(HRESULT, "EnumDisplayModes", [ DWORD, LPDDSURFACEDESC2, LPVOID, LPDDENUMMODESCALLBACK2 ]),
1303     Method(HRESULT, "EnumSurfaces", [DWORD, LPDDSURFACEDESC2, LPVOID,LPDDENUMSURFACESCALLBACK2 ]),
1304     Method(HRESULT, "FlipToGDISurface", []),
1305     Method(HRESULT, "GetCaps", [ LPDDCAPS, LPDDCAPS]),
1306     Method(HRESULT, "GetDisplayMode", [ LPDDSURFACEDESC2]),
1307     Method(HRESULT, "GetFourCCCodes", [LPDWORD, LPDWORD ]),
1308     Method(HRESULT, "GetGDISurface", [Pointer(LPDIRECTDRAWSURFACE4) ]),
1309     Method(HRESULT, "GetMonitorFrequency", [LPDWORD]),
1310     Method(HRESULT, "GetScanLine", [LPDWORD]),
1311     Method(HRESULT, "GetVerticalBlankStatus", [LPBOOL ]),
1312     Method(HRESULT, "Initialize", [Pointer(GUID) ]),
1313     Method(HRESULT, "RestoreDisplayMode", []),
1314     Method(HRESULT, "SetCooperativeLevel", [HWND, DWORD]),
1315     Method(HRESULT, "SetDisplayMode", [DWORD, DWORD,DWORD, DWORD, DWORD]),
1316     Method(HRESULT, "WaitForVerticalBlank", [DWORD, HANDLE ]),
1317     Method(HRESULT, "GetAvailableVidMem", [LPDDSCAPS2, LPDWORD, LPDWORD]),
1318     Method(HRESULT, "GetSurfaceFromDC", [HDC, Pointer(LPDIRECTDRAWSURFACE4)]),
1319     Method(HRESULT, "RestoreAllSurfaces", []),
1320     Method(HRESULT, "TestCooperativeLevel", []),
1321     Method(HRESULT, "GetDeviceIdentifier", [LPDDDEVICEIDENTIFIER, DWORD ]),
1322 ]
1323
1324 IDirectDraw7.methods += [
1325     Method(HRESULT, "Compact", []),
1326     Method(HRESULT, "CreateClipper", [DWORD, Pointer(LPDIRECTDRAWCLIPPER) , Pointer(IUnknown) ]),
1327     Method(HRESULT, "CreatePalette", [DWORD, LPPALETTEENTRY, Pointer(LPDIRECTDRAWPALETTE) , Pointer(IUnknown) ]),
1328     Method(HRESULT, "CreateSurface", [LPDDSURFACEDESC2, Pointer(LPDIRECTDRAWSURFACE7) , Pointer(IUnknown) ]),
1329     Method(HRESULT, "DuplicateSurface", [ LPDIRECTDRAWSURFACE7, Pointer(LPDIRECTDRAWSURFACE7) ]),
1330     Method(HRESULT, "EnumDisplayModes", [ DWORD, LPDDSURFACEDESC2, LPVOID, LPDDENUMMODESCALLBACK2 ]),
1331     Method(HRESULT, "EnumSurfaces", [DWORD, LPDDSURFACEDESC2, LPVOID,LPDDENUMSURFACESCALLBACK7 ]),
1332     Method(HRESULT, "FlipToGDISurface", []),
1333     Method(HRESULT, "GetCaps", [ LPDDCAPS, LPDDCAPS]),
1334     Method(HRESULT, "GetDisplayMode", [ LPDDSURFACEDESC2]),
1335     Method(HRESULT, "GetFourCCCodes", [LPDWORD, LPDWORD ]),
1336     Method(HRESULT, "GetGDISurface", [Pointer(LPDIRECTDRAWSURFACE7) ]),
1337     Method(HRESULT, "GetMonitorFrequency", [LPDWORD]),
1338     Method(HRESULT, "GetScanLine", [LPDWORD]),
1339     Method(HRESULT, "GetVerticalBlankStatus", [LPBOOL ]),
1340     Method(HRESULT, "Initialize", [Pointer(GUID) ]),
1341     Method(HRESULT, "RestoreDisplayMode", []),
1342     Method(HRESULT, "SetCooperativeLevel", [HWND, DWORD]),
1343     Method(HRESULT, "SetDisplayMode", [DWORD, DWORD,DWORD, DWORD, DWORD]),
1344     Method(HRESULT, "WaitForVerticalBlank", [DWORD, HANDLE ]),
1345     Method(HRESULT, "GetAvailableVidMem", [LPDDSCAPS2, LPDWORD, LPDWORD]),
1346     Method(HRESULT, "GetSurfaceFromDC", [HDC, Pointer(LPDIRECTDRAWSURFACE7)]),
1347     Method(HRESULT, "RestoreAllSurfaces", []),
1348     Method(HRESULT, "TestCooperativeLevel", []),
1349     Method(HRESULT, "GetDeviceIdentifier", [LPDDDEVICEIDENTIFIER2, DWORD ]),
1350     Method(HRESULT, "StartModeTest", [LPSIZE, DWORD, DWORD ]),
1351     Method(HRESULT, "EvaluateMode", [DWORD, Pointer(DWORD) ]),
1352 ]
1353
1354 IDirectDrawPalette.methods += [
1355     Method(HRESULT, "GetCaps", [LPDWORD]),
1356     Method(HRESULT, "GetEntries", [DWORD,DWORD,DWORD,LPPALETTEENTRY]),
1357     Method(HRESULT, "Initialize", [LPDIRECTDRAW, DWORD, LPPALETTEENTRY]),
1358     Method(HRESULT, "SetEntries", [DWORD,DWORD,DWORD,LPPALETTEENTRY]),
1359 ]
1360
1361 IDirectDrawClipper.methods += [
1362     Method(HRESULT, "GetClipList", [LPRECT, LPRGNDATA, LPDWORD]),
1363     Method(HRESULT, "GetHWnd", [Pointer(HWND) ]),
1364     Method(HRESULT, "Initialize", [LPDIRECTDRAW, DWORD]),
1365     Method(HRESULT, "IsClipListChanged", [Pointer(BOOL) ]),
1366     Method(HRESULT, "SetClipList", [LPRGNDATA,DWORD]),
1367     Method(HRESULT, "SetHWnd", [DWORD, HWND ]),
1368 ]
1369
1370
1371 IDirectDrawSurface.methods += [
1372     Method(HRESULT, "AddAttachedSurface", [LPDIRECTDRAWSURFACE]),
1373     Method(HRESULT, "AddOverlayDirtyRect", [LPRECT]),
1374     Method(HRESULT, "Blt", [LPRECT,LPDIRECTDRAWSURFACE, LPRECT,DWORD, LPDDBLTFX]),
1375     Method(HRESULT, "BltBatch", [LPDDBLTBATCH, DWORD, DWORD ]),
1376     Method(HRESULT, "BltFast", [DWORD,DWORD,LPDIRECTDRAWSURFACE, LPRECT,DWORD]),
1377     Method(HRESULT, "DeleteAttachedSurface", [DWORD,LPDIRECTDRAWSURFACE]),
1378     Method(HRESULT, "EnumAttachedSurfaces", [LPVOID,LPDDENUMSURFACESCALLBACK]),
1379     Method(HRESULT, "EnumOverlayZOrders", [DWORD,LPVOID,LPDDENUMSURFACESCALLBACK]),
1380     Method(HRESULT, "Flip", [LPDIRECTDRAWSURFACE, DWORD]),
1381     Method(HRESULT, "GetAttachedSurface", [LPDDSCAPS, Pointer(LPDIRECTDRAWSURFACE) ]),
1382     Method(HRESULT, "GetBltStatus", [DWORD]),
1383     Method(HRESULT, "GetCaps", [LPDDSCAPS]),
1384     Method(HRESULT, "GetClipper", [Pointer(LPDIRECTDRAWCLIPPER) ]),
1385     Method(HRESULT, "GetColorKey", [DWORD, LPDDCOLORKEY]),
1386     Method(HRESULT, "GetDC", [Pointer(HDC) ]),
1387     Method(HRESULT, "GetFlipStatus", [DWORD]),
1388     Method(HRESULT, "GetOverlayPosition", [LPLONG, LPLONG ]),
1389     Method(HRESULT, "GetPalette", [Pointer(LPDIRECTDRAWPALETTE) ]),
1390     Method(HRESULT, "GetPixelFormat", [LPDDPIXELFORMAT]),
1391     Method(HRESULT, "GetSurfaceDesc", [LPDDSURFACEDESC]),
1392     Method(HRESULT, "Initialize", [LPDIRECTDRAW, LPDDSURFACEDESC]),
1393     Method(HRESULT, "IsLost", []),
1394     Method(HRESULT, "Lock", [LPRECT,LPDDSURFACEDESC,DWORD,HANDLE]),
1395     Method(HRESULT, "ReleaseDC", [HDC]),
1396     Method(HRESULT, "Restore", []),
1397     Method(HRESULT, "SetClipper", [LPDIRECTDRAWCLIPPER]),
1398     Method(HRESULT, "SetColorKey", [DWORD, LPDDCOLORKEY]),
1399     Method(HRESULT, "SetOverlayPosition", [LONG, LONG ]),
1400     Method(HRESULT, "SetPalette", [LPDIRECTDRAWPALETTE]),
1401     Method(HRESULT, "Unlock", [LPVOID]),
1402     Method(HRESULT, "UpdateOverlay", [LPRECT, LPDIRECTDRAWSURFACE,LPRECT,DWORD, LPDDOVERLAYFX]),
1403     Method(HRESULT, "UpdateOverlayDisplay", [DWORD]),
1404     Method(HRESULT, "UpdateOverlayZOrder", [DWORD, LPDIRECTDRAWSURFACE]),
1405 ]
1406
1407 IDirectDrawSurface2.methods += [
1408     Method(HRESULT, "AddAttachedSurface", [LPDIRECTDRAWSURFACE2]),
1409     Method(HRESULT, "AddOverlayDirtyRect", [LPRECT]),
1410     Method(HRESULT, "Blt", [LPRECT,LPDIRECTDRAWSURFACE2, LPRECT,DWORD, LPDDBLTFX]),
1411     Method(HRESULT, "BltBatch", [LPDDBLTBATCH, DWORD, DWORD ]),
1412     Method(HRESULT, "BltFast", [DWORD,DWORD,LPDIRECTDRAWSURFACE2, LPRECT,DWORD]),
1413     Method(HRESULT, "DeleteAttachedSurface", [DWORD,LPDIRECTDRAWSURFACE2]),
1414     Method(HRESULT, "EnumAttachedSurfaces", [LPVOID,LPDDENUMSURFACESCALLBACK]),
1415     Method(HRESULT, "EnumOverlayZOrders", [DWORD,LPVOID,LPDDENUMSURFACESCALLBACK]),
1416     Method(HRESULT, "Flip", [LPDIRECTDRAWSURFACE2, DWORD]),
1417     Method(HRESULT, "GetAttachedSurface", [LPDDSCAPS, Pointer(LPDIRECTDRAWSURFACE2) ]),
1418     Method(HRESULT, "GetBltStatus", [DWORD]),
1419     Method(HRESULT, "GetCaps", [LPDDSCAPS]),
1420     Method(HRESULT, "GetClipper", [Pointer(LPDIRECTDRAWCLIPPER) ]),
1421     Method(HRESULT, "GetColorKey", [DWORD, LPDDCOLORKEY]),
1422     Method(HRESULT, "GetDC", [Pointer(HDC) ]),
1423     Method(HRESULT, "GetFlipStatus", [DWORD]),
1424     Method(HRESULT, "GetOverlayPosition", [LPLONG, LPLONG ]),
1425     Method(HRESULT, "GetPalette", [Pointer(LPDIRECTDRAWPALETTE) ]),
1426     Method(HRESULT, "GetPixelFormat", [LPDDPIXELFORMAT]),
1427     Method(HRESULT, "GetSurfaceDesc", [LPDDSURFACEDESC]),
1428     Method(HRESULT, "Initialize", [LPDIRECTDRAW, LPDDSURFACEDESC]),
1429     Method(HRESULT, "IsLost", []),
1430     Method(HRESULT, "Lock", [LPRECT,LPDDSURFACEDESC,DWORD,HANDLE]),
1431     Method(HRESULT, "ReleaseDC", [HDC]),
1432     Method(HRESULT, "Restore", []),
1433     Method(HRESULT, "SetClipper", [LPDIRECTDRAWCLIPPER]),
1434     Method(HRESULT, "SetColorKey", [DWORD, LPDDCOLORKEY]),
1435     Method(HRESULT, "SetOverlayPosition", [LONG, LONG ]),
1436     Method(HRESULT, "SetPalette", [LPDIRECTDRAWPALETTE]),
1437     Method(HRESULT, "Unlock", [LPVOID]),
1438     Method(HRESULT, "UpdateOverlay", [LPRECT, LPDIRECTDRAWSURFACE2,LPRECT,DWORD, LPDDOVERLAYFX]),
1439     Method(HRESULT, "UpdateOverlayDisplay", [DWORD]),
1440     Method(HRESULT, "UpdateOverlayZOrder", [DWORD, LPDIRECTDRAWSURFACE2]),
1441     Method(HRESULT, "GetDDInterface", [Pointer(LPVOID) ]),
1442     Method(HRESULT, "PageLock", [DWORD]),
1443     Method(HRESULT, "PageUnlock", [DWORD]),
1444 ]
1445
1446 IDirectDrawSurface3.methods += [
1447     Method(HRESULT, "AddAttachedSurface", [LPDIRECTDRAWSURFACE3]),
1448     Method(HRESULT, "AddOverlayDirtyRect", [LPRECT]),
1449     Method(HRESULT, "Blt", [LPRECT,LPDIRECTDRAWSURFACE3, LPRECT,DWORD, LPDDBLTFX]),
1450     Method(HRESULT, "BltBatch", [LPDDBLTBATCH, DWORD, DWORD ]),
1451     Method(HRESULT, "BltFast", [DWORD,DWORD,LPDIRECTDRAWSURFACE3, LPRECT,DWORD]),
1452     Method(HRESULT, "DeleteAttachedSurface", [DWORD,LPDIRECTDRAWSURFACE3]),
1453     Method(HRESULT, "EnumAttachedSurfaces", [LPVOID,LPDDENUMSURFACESCALLBACK]),
1454     Method(HRESULT, "EnumOverlayZOrders", [DWORD,LPVOID,LPDDENUMSURFACESCALLBACK]),
1455     Method(HRESULT, "Flip", [LPDIRECTDRAWSURFACE3, DWORD]),
1456     Method(HRESULT, "GetAttachedSurface", [LPDDSCAPS, Pointer(LPDIRECTDRAWSURFACE3) ]),
1457     Method(HRESULT, "GetBltStatus", [DWORD]),
1458     Method(HRESULT, "GetCaps", [LPDDSCAPS]),
1459     Method(HRESULT, "GetClipper", [Pointer(LPDIRECTDRAWCLIPPER) ]),
1460     Method(HRESULT, "GetColorKey", [DWORD, LPDDCOLORKEY]),
1461     Method(HRESULT, "GetDC", [Pointer(HDC) ]),
1462     Method(HRESULT, "GetFlipStatus", [DWORD]),
1463     Method(HRESULT, "GetOverlayPosition", [LPLONG, LPLONG ]),
1464     Method(HRESULT, "GetPalette", [Pointer(LPDIRECTDRAWPALETTE) ]),
1465     Method(HRESULT, "GetPixelFormat", [LPDDPIXELFORMAT]),
1466     Method(HRESULT, "GetSurfaceDesc", [LPDDSURFACEDESC]),
1467     Method(HRESULT, "Initialize", [LPDIRECTDRAW, LPDDSURFACEDESC]),
1468     Method(HRESULT, "IsLost", []),
1469     Method(HRESULT, "Lock", [LPRECT,LPDDSURFACEDESC,DWORD,HANDLE]),
1470     Method(HRESULT, "ReleaseDC", [HDC]),
1471     Method(HRESULT, "Restore", []),
1472     Method(HRESULT, "SetClipper", [LPDIRECTDRAWCLIPPER]),
1473     Method(HRESULT, "SetColorKey", [DWORD, LPDDCOLORKEY]),
1474     Method(HRESULT, "SetOverlayPosition", [LONG, LONG ]),
1475     Method(HRESULT, "SetPalette", [LPDIRECTDRAWPALETTE]),
1476     Method(HRESULT, "Unlock", [LPVOID]),
1477     Method(HRESULT, "UpdateOverlay", [LPRECT, LPDIRECTDRAWSURFACE3,LPRECT,DWORD, LPDDOVERLAYFX]),
1478     Method(HRESULT, "UpdateOverlayDisplay", [DWORD]),
1479     Method(HRESULT, "UpdateOverlayZOrder", [DWORD, LPDIRECTDRAWSURFACE3]),
1480     Method(HRESULT, "GetDDInterface", [Pointer(LPVOID) ]),
1481     Method(HRESULT, "PageLock", [DWORD]),
1482     Method(HRESULT, "PageUnlock", [DWORD]),
1483     Method(HRESULT, "SetSurfaceDesc", [LPDDSURFACEDESC, DWORD]),
1484 ]
1485
1486 IDirectDrawSurface4.methods += [
1487     Method(HRESULT, "AddAttachedSurface", [LPDIRECTDRAWSURFACE4]),
1488     Method(HRESULT, "AddOverlayDirtyRect", [LPRECT]),
1489     Method(HRESULT, "Blt", [LPRECT,LPDIRECTDRAWSURFACE4, LPRECT,DWORD, LPDDBLTFX]),
1490     Method(HRESULT, "BltBatch", [LPDDBLTBATCH, DWORD, DWORD ]),
1491     Method(HRESULT, "BltFast", [DWORD,DWORD,LPDIRECTDRAWSURFACE4, LPRECT,DWORD]),
1492     Method(HRESULT, "DeleteAttachedSurface", [DWORD,LPDIRECTDRAWSURFACE4]),
1493     Method(HRESULT, "EnumAttachedSurfaces", [LPVOID,LPDDENUMSURFACESCALLBACK2]),
1494     Method(HRESULT, "EnumOverlayZOrders", [DWORD,LPVOID,LPDDENUMSURFACESCALLBACK2]),
1495     Method(HRESULT, "Flip", [LPDIRECTDRAWSURFACE4, DWORD]),
1496     Method(HRESULT, "GetAttachedSurface", [LPDDSCAPS2, Pointer(LPDIRECTDRAWSURFACE4) ]),
1497     Method(HRESULT, "GetBltStatus", [DWORD]),
1498     Method(HRESULT, "GetCaps", [LPDDSCAPS2]),
1499     Method(HRESULT, "GetClipper", [Pointer(LPDIRECTDRAWCLIPPER) ]),
1500     Method(HRESULT, "GetColorKey", [DWORD, LPDDCOLORKEY]),
1501     Method(HRESULT, "GetDC", [Pointer(HDC) ]),
1502     Method(HRESULT, "GetFlipStatus", [DWORD]),
1503     Method(HRESULT, "GetOverlayPosition", [LPLONG, LPLONG ]),
1504     Method(HRESULT, "GetPalette", [Pointer(LPDIRECTDRAWPALETTE) ]),
1505     Method(HRESULT, "GetPixelFormat", [LPDDPIXELFORMAT]),
1506     Method(HRESULT, "GetSurfaceDesc", [LPDDSURFACEDESC2]),
1507     Method(HRESULT, "Initialize", [LPDIRECTDRAW, LPDDSURFACEDESC2]),
1508     Method(HRESULT, "IsLost", []),
1509     Method(HRESULT, "Lock", [LPRECT,LPDDSURFACEDESC2,DWORD,HANDLE]),
1510     Method(HRESULT, "ReleaseDC", [HDC]),
1511     Method(HRESULT, "Restore", []),
1512     Method(HRESULT, "SetClipper", [LPDIRECTDRAWCLIPPER]),
1513     Method(HRESULT, "SetColorKey", [DWORD, LPDDCOLORKEY]),
1514     Method(HRESULT, "SetOverlayPosition", [LONG, LONG ]),
1515     Method(HRESULT, "SetPalette", [LPDIRECTDRAWPALETTE]),
1516     Method(HRESULT, "Unlock", [LPRECT]),
1517     Method(HRESULT, "UpdateOverlay", [LPRECT, LPDIRECTDRAWSURFACE4,LPRECT,DWORD, LPDDOVERLAYFX]),
1518     Method(HRESULT, "UpdateOverlayDisplay", [DWORD]),
1519     Method(HRESULT, "UpdateOverlayZOrder", [DWORD, LPDIRECTDRAWSURFACE4]),
1520     Method(HRESULT, "GetDDInterface", [Pointer(LPVOID) ]),
1521     Method(HRESULT, "PageLock", [DWORD]),
1522     Method(HRESULT, "PageUnlock", [DWORD]),
1523     Method(HRESULT, "SetSurfaceDesc", [LPDDSURFACEDESC2, DWORD]),
1524     Method(HRESULT, "SetPrivateData", [REFGUID, LPVOID, DWORD, DWORD]),
1525     Method(HRESULT, "GetPrivateData", [REFGUID, LPVOID, LPDWORD]),
1526     Method(HRESULT, "FreePrivateData", [REFGUID]),
1527     Method(HRESULT, "GetUniquenessValue", [LPDWORD]),
1528     Method(HRESULT, "ChangeUniquenessValue", []),
1529 ]
1530
1531 IDirectDrawSurface7.methods += [
1532     Method(HRESULT, "AddAttachedSurface", [LPDIRECTDRAWSURFACE7]),
1533     Method(HRESULT, "AddOverlayDirtyRect", [LPRECT]),
1534     Method(HRESULT, "Blt", [LPRECT,LPDIRECTDRAWSURFACE7, LPRECT,DWORD, LPDDBLTFX]),
1535     Method(HRESULT, "BltBatch", [LPDDBLTBATCH, DWORD, DWORD ]),
1536     Method(HRESULT, "BltFast", [DWORD,DWORD,LPDIRECTDRAWSURFACE7, LPRECT,DWORD]),
1537     Method(HRESULT, "DeleteAttachedSurface", [DWORD,LPDIRECTDRAWSURFACE7]),
1538     Method(HRESULT, "EnumAttachedSurfaces", [LPVOID,LPDDENUMSURFACESCALLBACK7]),
1539     Method(HRESULT, "EnumOverlayZOrders", [DWORD,LPVOID,LPDDENUMSURFACESCALLBACK7]),
1540     Method(HRESULT, "Flip", [LPDIRECTDRAWSURFACE7, DWORD]),
1541     Method(HRESULT, "GetAttachedSurface", [LPDDSCAPS2, Pointer(LPDIRECTDRAWSURFACE7) ]),
1542     Method(HRESULT, "GetBltStatus", [DWORD]),
1543     Method(HRESULT, "GetCaps", [LPDDSCAPS2]),
1544     Method(HRESULT, "GetClipper", [Pointer(LPDIRECTDRAWCLIPPER) ]),
1545     Method(HRESULT, "GetColorKey", [DWORD, LPDDCOLORKEY]),
1546     Method(HRESULT, "GetDC", [Pointer(HDC) ]),
1547     Method(HRESULT, "GetFlipStatus", [DWORD]),
1548     Method(HRESULT, "GetOverlayPosition", [LPLONG, LPLONG ]),
1549     Method(HRESULT, "GetPalette", [Pointer(LPDIRECTDRAWPALETTE) ]),
1550     Method(HRESULT, "GetPixelFormat", [LPDDPIXELFORMAT]),
1551     Method(HRESULT, "GetSurfaceDesc", [LPDDSURFACEDESC2]),
1552     Method(HRESULT, "Initialize", [LPDIRECTDRAW, LPDDSURFACEDESC2]),
1553     Method(HRESULT, "IsLost", []),
1554     Method(HRESULT, "Lock", [LPRECT,LPDDSURFACEDESC2,DWORD,HANDLE]),
1555     Method(HRESULT, "ReleaseDC", [HDC]),
1556     Method(HRESULT, "Restore", []),
1557     Method(HRESULT, "SetClipper", [LPDIRECTDRAWCLIPPER]),
1558     Method(HRESULT, "SetColorKey", [DWORD, LPDDCOLORKEY]),
1559     Method(HRESULT, "SetOverlayPosition", [LONG, LONG ]),
1560     Method(HRESULT, "SetPalette", [LPDIRECTDRAWPALETTE]),
1561     Method(HRESULT, "Unlock", [LPRECT]),
1562     Method(HRESULT, "UpdateOverlay", [LPRECT, LPDIRECTDRAWSURFACE7,LPRECT,DWORD, LPDDOVERLAYFX]),
1563     Method(HRESULT, "UpdateOverlayDisplay", [DWORD]),
1564     Method(HRESULT, "UpdateOverlayZOrder", [DWORD, LPDIRECTDRAWSURFACE7]),
1565     Method(HRESULT, "GetDDInterface", [Pointer(LPVOID) ]),
1566     Method(HRESULT, "PageLock", [DWORD]),
1567     Method(HRESULT, "PageUnlock", [DWORD]),
1568     Method(HRESULT, "SetSurfaceDesc", [LPDDSURFACEDESC2, DWORD]),
1569     Method(HRESULT, "SetPrivateData", [REFGUID, LPVOID, DWORD, DWORD]),
1570     Method(HRESULT, "GetPrivateData", [REFGUID, LPVOID, LPDWORD]),
1571     Method(HRESULT, "FreePrivateData", [REFGUID]),
1572     Method(HRESULT, "GetUniquenessValue", [LPDWORD]),
1573     Method(HRESULT, "ChangeUniquenessValue", []),
1574     Method(HRESULT, "SetPriority", [DWORD]),
1575     Method(HRESULT, "GetPriority", [LPDWORD]),
1576     Method(HRESULT, "SetLOD", [DWORD]),
1577     Method(HRESULT, "GetLOD", [LPDWORD]),
1578 ]
1579
1580 IDirectDrawColorControl.methods += [
1581     Method(HRESULT, "GetColorControls", [LPDDCOLORCONTROL]),
1582     Method(HRESULT, "SetColorControls", [LPDDCOLORCONTROL]),
1583 ]
1584
1585 IDirectDrawGammaControl.methods += [
1586     Method(HRESULT, "GetGammaRamp", [DWORD, LPDDGAMMARAMP]),
1587     Method(HRESULT, "SetGammaRamp", [DWORD, LPDDGAMMARAMP]),
1588 ]
1589
1590 LPDDENUMCALLBACKA   = FunctionPointer(BOOL, "LPDDENUMCALLBACKA", [Pointer(GUID), LPSTR, LPSTR, LPVOID])
1591 LPDDENUMCALLBACKW   = FunctionPointer(BOOL, "LPDDENUMCALLBACKW", [Pointer(GUID), LPWSTR, LPWSTR, LPVOID])
1592 LPDDENUMCALLBACKEXA = FunctionPointer(BOOL, "LPDDENUMCALLBACKEXA", [Pointer(GUID), LPSTR, LPSTR, LPVOID, HMONITOR])
1593 LPDDENUMCALLBACKEXW = FunctionPointer(BOOL, "LPDDENUMCALLBACKEXW", [Pointer(GUID), LPWSTR, LPWSTR, LPVOID, HMONITOR])
1594
1595 DDENUM = Flags(DWORD, [
1596     "DDENUM_ATTACHEDSECONDARYDEVICES",
1597     "DDENUM_DETACHEDSECONDARYDEVICES",
1598     "DDENUM_NONDISPLAYDEVICES",
1599 ])
1600
1601 DDCREATE = Flags(DWORD, [
1602     "DDCREATE_HARDWAREONLY",
1603     "DDCREATE_EMULATIONONLY",
1604 ])
1605
1606 ddraw = Dll("ddraw")
1607 ddraw.functions += [
1608     StdFunction(HRESULT, "DirectDrawEnumerateW", [(LPDDENUMCALLBACKW, "lpCallback"), (LPVOID, "lpContext")]),
1609     StdFunction(HRESULT, "DirectDrawEnumerateA", [(LPDDENUMCALLBACKA, "lpCallback"), (LPVOID, "lpContext")]),
1610     StdFunction(HRESULT, "DirectDrawEnumerateExW", [(LPDDENUMCALLBACKEXW, "lpCallback"), (LPVOID, "lpContext"), (DDENUM, "dwFlags")]),
1611     StdFunction(HRESULT, "DirectDrawEnumerateExA", [(LPDDENUMCALLBACKEXA, "lpCallback"), (LPVOID, "lpContext"), (DDENUM, "dwFlags")]),
1612     StdFunction(HRESULT, "DirectDrawCreate", [(Pointer(GUID), "lpGUID"), Out(Pointer(LPDIRECTDRAW), "lplpDD"), (Pointer(IUnknown), "pUnkOuter")]),
1613     StdFunction(HRESULT, "DirectDrawCreateEx", [(Pointer(GUID), "lpGuid"), Out(Pointer(LPVOID), "lplpDD"), (REFIID, "iid"), (Pointer(IUnknown), "pUnkOuter")]),
1614     StdFunction(HRESULT, "DirectDrawCreateClipper", [(DWORD, "dwFlags"), Out(Pointer(LPDIRECTDRAWCLIPPER), "lplpDDClipper"), (Pointer(IUnknown), "pUnkOuter")]),
1615 ]
1616
1617 if __name__ == '__main__':
1618     print '#include <windows.h>'
1619     print '#include <tchar.h>'
1620     print '#include <ddraw.h>'
1621     print
1622     print '#include "trace_write.hpp"'
1623     print
1624     wrap()