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