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