xref: /reactos/sdk/include/psdk/ddraw.h (revision 357505e7)
1 
2 #ifndef __DDRAW_INCLUDED__
3 #define __DDRAW_INCLUDED__
4 
5 #if defined(_WIN32) && !defined(_NO_COM )
6 #define COM_NO_WINDOWS_H
7 #include <objbase.h>
8 #else
9 #define IUnknown void
10 #if !defined(NT_BUILD_ENVIRONMENT) && !defined(WINNT)
11   #ifndef CO_E_NOTINITIALIZED /* Avoid conflict warning with _HRESULT_TYPEDEF_(0x800401F0L) in winerror.h */
12   #define CO_E_NOTINITIALIZED 0x800401F0L
13   #endif
14 #endif
15 #endif
16 
17 #define _FACDD        0x876
18 
19 #ifndef MAKE_DDHRESULT
20 #define MAKE_DDHRESULT(c) MAKE_HRESULT(1,_FACDD,c)
21 #endif
22 
23 #ifndef DIRECTDRAW_VERSION
24   #define DIRECTDRAW_VERSION 0x0700
25 #endif
26 
27 #undef ENABLE_NAMELESS_UNION_PRAGMA
28 #ifdef DIRECTX_REDIST
29   #define ENABLE_NAMELESS_UNION_PRAGMA
30 #endif
31 
32 #ifdef ENABLE_NAMELESS_UNION_PRAGMA
33   #pragma warning(disable:4201)
34 #endif
35 
36 #ifndef DUMMYUNIONNAMEN
37   #if defined(__cplusplus) || !defined(NONAMELESSUNION)
38     #define DUMMYUNIONNAMEN(n)
39   #else
40     #define DUMMYUNIONNAMEN(n)      u##n
41   #endif
42 #endif
43 
44 #if defined(WINNT) || !defined(WIN32)
45 #ifndef _HRESULT_DEFINED
46 #define _HRESULT_DEFINED
47   typedef long HRESULT;
48 #endif
49 #endif
50 
51 /* Helper macro to enable gcc's extension. */
52 #ifndef __GNU_EXTENSION
53 #ifdef __GNUC__
54 #define __GNU_EXTENSION __extension__
55 #else
56 #define __GNU_EXTENSION
57 #endif
58 #endif
59 
60 #ifdef __cplusplus
61 extern "C" {
62 #endif
63 
64 /* This define are obsolete in ms ddk, but are use internal in Windows NT4/2000/XP/2003/ReactOS */
65 #define DDCAPS_STEREOVIEW                      0x00040000
66 
67 
68 /* Orgnal */
69 #define DDERR_ALREADYINITIALIZED               MAKE_DDHRESULT( 5)
70 #define DDERR_CANNOTATTACHSURFACE              MAKE_DDHRESULT(10)
71 #define DDERR_CANNOTDETACHSURFACE              MAKE_DDHRESULT(20)
72 #define DDERR_CURRENTLYNOTAVAIL                MAKE_DDHRESULT(40)
73 #define DDERR_EXCEPTION                        MAKE_DDHRESULT(55)
74 #define DDERR_GENERIC                          E_FAIL
75 #define DDERR_HEIGHTALIGN                      MAKE_DDHRESULT( 90)
76 #define DDERR_INCOMPATIBLEPRIMARY              MAKE_DDHRESULT( 95)
77 #define DDERR_INVALIDCAPS                      MAKE_DDHRESULT(100)
78 #define DDERR_INVALIDCLIPLIST                  MAKE_DDHRESULT(110)
79 #define DDERR_INVALIDMODE                      MAKE_DDHRESULT(120)
80 #define DDERR_INVALIDOBJECT                    MAKE_DDHRESULT(130)
81 #define DDERR_INVALIDPARAMS                    E_INVALIDARG
82 #define DDERR_INVALIDPIXELFORMAT               MAKE_DDHRESULT(145)
83 #define DDERR_INVALIDRECT                      MAKE_DDHRESULT(150)
84 #define DDERR_LOCKEDSURFACES                   MAKE_DDHRESULT(160)
85 #define DDERR_NO3D                             MAKE_DDHRESULT(170)
86 #define DDERR_NOALPHAHW                        MAKE_DDHRESULT(180)
87 #define DDERR_NOSTEREOHARDWARE                 MAKE_DDHRESULT(181)
88 #define DDERR_NOSURFACELEFT                    MAKE_DDHRESULT(182)
89 #define DDERR_NOCLIPLIST                       MAKE_DDHRESULT(205)
90 #define DDERR_NOCOLORCONVHW                    MAKE_DDHRESULT(210)
91 #define DDERR_NOCOOPERATIVELEVELSET            MAKE_DDHRESULT(212)
92 #define DDERR_NOCOLORKEY                       MAKE_DDHRESULT(215)
93 #define DDERR_NOCOLORKEYHW                     MAKE_DDHRESULT(220)
94 #define DDERR_NODIRECTDRAWSUPPORT              MAKE_DDHRESULT(222)
95 #define DDERR_NOEXCLUSIVEMODE                  MAKE_DDHRESULT(225)
96 #define DDERR_NOFLIPHW                         MAKE_DDHRESULT(230)
97 #define DDERR_NOGDI                            MAKE_DDHRESULT(240)
98 #define DDERR_NOMIRRORHW                       MAKE_DDHRESULT(250)
99 #define DDERR_NOTFOUND                         MAKE_DDHRESULT(255)
100 #define DDERR_NOOVERLAYHW                      MAKE_DDHRESULT(260)
101 #define DDERR_OVERLAPPINGRECTS                 MAKE_DDHRESULT(270)
102 #define DDERR_NORASTEROPHW                     MAKE_DDHRESULT(280)
103 #define DDERR_NOROTATIONHW                     MAKE_DDHRESULT(290)
104 #define DDERR_NOSTRETCHHW                      MAKE_DDHRESULT(310)
105 #define DDERR_NOT4BITCOLOR                     MAKE_DDHRESULT(316)
106 #define DDERR_NOT4BITCOLORINDEX                MAKE_DDHRESULT(317)
107 #define DDERR_NOT8BITCOLOR                     MAKE_DDHRESULT(320)
108 #define DDERR_NOTEXTUREHW                      MAKE_DDHRESULT(330)
109 #define DDERR_NOVSYNCHW                        MAKE_DDHRESULT(335)
110 #define DDERR_NOZBUFFERHW                      MAKE_DDHRESULT(340)
111 #define DDERR_NOZOVERLAYHW                     MAKE_DDHRESULT(350)
112 #define DDERR_OUTOFCAPS                        MAKE_DDHRESULT(360)
113 #define DDERR_OUTOFMEMORY                      E_OUTOFMEMORY
114 #define DDERR_OUTOFVIDEOMEMORY                 MAKE_DDHRESULT(380)
115 #define DDERR_OVERLAYCANTCLIP                  MAKE_DDHRESULT(382)
116 #define DDERR_OVERLAYCOLORKEYONLYONEACTIVE     MAKE_DDHRESULT(384)
117 #define DDERR_PALETTEBUSY                      MAKE_DDHRESULT(387)
118 #define DDERR_COLORKEYNOTSET                   MAKE_DDHRESULT(400)
119 #define DDERR_SURFACEALREADYATTACHED           MAKE_DDHRESULT(410)
120 #define DDERR_SURFACEALREADYDEPENDENT          MAKE_DDHRESULT(420)
121 #define DDERR_SURFACEBUSY                      MAKE_DDHRESULT(430)
122 #define DDERR_CANTLOCKSURFACE                  MAKE_DDHRESULT(435)
123 #define DDERR_SURFACEISOBSCURED                MAKE_DDHRESULT(440)
124 #define DDERR_SURFACELOST                      MAKE_DDHRESULT(450)
125 #define DDERR_SURFACENOTATTACHED               MAKE_DDHRESULT(460)
126 #define DDERR_TOOBIGHEIGHT                     MAKE_DDHRESULT(470)
127 #define DDERR_TOOBIGSIZE                       MAKE_DDHRESULT(480)
128 #define DDERR_TOOBIGWIDTH                      MAKE_DDHRESULT(490)
129 #define DDERR_UNSUPPORTED                      E_NOTIMPL
130 #define DDERR_UNSUPPORTEDFORMAT                MAKE_DDHRESULT(510)
131 #define DDERR_UNSUPPORTEDMASK                  MAKE_DDHRESULT(520)
132 #define DDERR_INVALIDSTREAM                    MAKE_DDHRESULT(521)
133 #define DDERR_VERTICALBLANKINPROGRESS          MAKE_DDHRESULT(537)
134 #define DDERR_WASSTILLDRAWING                  MAKE_DDHRESULT(540)
135 #define DDERR_DDSCAPSCOMPLEXREQUIRED           MAKE_DDHRESULT(542)
136 #define DDERR_XALIGN                           MAKE_DDHRESULT(560)
137 #define DDERR_INVALIDDIRECTDRAWGUID            MAKE_DDHRESULT(561)
138 #define DDERR_DIRECTDRAWALREADYCREATED         MAKE_DDHRESULT(562)
139 #define DDERR_NODIRECTDRAWHW                   MAKE_DDHRESULT(563)
140 #define DDERR_PRIMARYSURFACEALREADYEXISTS      MAKE_DDHRESULT(564)
141 #define DDERR_NOEMULATION                      MAKE_DDHRESULT(565)
142 #define DDERR_REGIONTOOSMALL                   MAKE_DDHRESULT(566)
143 #define DDERR_CLIPPERISUSINGHWND               MAKE_DDHRESULT(567)
144 #define DDERR_NOCLIPPERATTACHED                MAKE_DDHRESULT(568)
145 #define DDERR_NOHWND                           MAKE_DDHRESULT(569)
146 #define DDERR_HWNDSUBCLASSED                   MAKE_DDHRESULT(570)
147 #define DDERR_HWNDALREADYSET                   MAKE_DDHRESULT(571)
148 #define DDERR_NOPALETTEATTACHED                MAKE_DDHRESULT(572)
149 #define DDERR_NOPALETTEHW                      MAKE_DDHRESULT(573)
150 #define DDERR_BLTFASTCANTCLIP                  MAKE_DDHRESULT(574)
151 #define DDERR_NOBLTHW                          MAKE_DDHRESULT(575)
152 #define DDERR_NODDROPSHW                       MAKE_DDHRESULT(576)
153 #define DDERR_OVERLAYNOTVISIBLE                MAKE_DDHRESULT(577)
154 #define DDERR_NOOVERLAYDEST                    MAKE_DDHRESULT(578)
155 #define DDERR_INVALIDPOSITION                  MAKE_DDHRESULT(579)
156 #define DDERR_NOTAOVERLAYSURFACE               MAKE_DDHRESULT(580)
157 #define DDERR_EXCLUSIVEMODEALREADYSET          MAKE_DDHRESULT(581)
158 #define DDERR_NOTFLIPPABLE                     MAKE_DDHRESULT(582)
159 #define DDERR_CANTDUPLICATE                    MAKE_DDHRESULT(583)
160 #define DDERR_NOTLOCKED                        MAKE_DDHRESULT(584)
161 #define DDERR_CANTCREATEDC                     MAKE_DDHRESULT(585)
162 #define DDERR_NODC                             MAKE_DDHRESULT(586)
163 #define DDERR_WRONGMODE                        MAKE_DDHRESULT(587)
164 #define DDERR_IMPLICITLYCREATED                MAKE_DDHRESULT(588)
165 #define DDERR_NOTPALETTIZED                    MAKE_DDHRESULT(589)
166 #define DDERR_UNSUPPORTEDMODE                  MAKE_DDHRESULT(590)
167 #define DDERR_NOMIPMAPHW                       MAKE_DDHRESULT(591)
168 #define DDERR_INVALIDSURFACETYPE               MAKE_DDHRESULT(592)
169 #define DDERR_NOOPTIMIZEHW                     MAKE_DDHRESULT(600)
170 #define DDERR_NOTLOADED                        MAKE_DDHRESULT(601)
171 #define DDERR_NOFOCUSWINDOW                    MAKE_DDHRESULT(602)
172 #define DDERR_NOTONMIPMAPSUBLEVEL              MAKE_DDHRESULT(603)
173 #define DDERR_DCALREADYCREATED                 MAKE_DDHRESULT(620)
174 #define DDERR_NONONLOCALVIDMEM                 MAKE_DDHRESULT(630)
175 #define DDERR_CANTPAGELOCK                     MAKE_DDHRESULT(640)
176 #define DDERR_CANTPAGEUNLOCK                   MAKE_DDHRESULT(660)
177 #define DDERR_NOTPAGELOCKED                    MAKE_DDHRESULT(680)
178 #define DDERR_MOREDATA                         MAKE_DDHRESULT(690)
179 #define DDERR_EXPIRED                          MAKE_DDHRESULT(691)
180 #define DDERR_TESTFINISHED                     MAKE_DDHRESULT(692)
181 #define DDERR_NEWMODE                          MAKE_DDHRESULT(693)
182 #define DDERR_D3DNOTINITIALIZED                MAKE_DDHRESULT(694)
183 #define DDERR_VIDEONOTACTIVE                   MAKE_DDHRESULT(695)
184 #define DDERR_NOMONITORINFORMATION             MAKE_DDHRESULT(696)
185 #define DDERR_NODRIVERSUPPORT                  MAKE_DDHRESULT(697)
186 #define DDERR_DEVICEDOESNTOWNSURFACE           MAKE_DDHRESULT(699)
187 #define DDERR_NOTINITIALIZED                   CO_E_NOTINITIALIZED
188 #define DD_OK                                  S_OK
189 #define DD_FALSE                               S_FALSE
190 #define DDENUMRET_CANCEL                       0
191 #define DDENUMRET_OK                           1
192 
193 #define DDENUM_ATTACHEDSECONDARYDEVICES        0x00000001
194 #define DDENUM_DETACHEDSECONDARYDEVICES        0x00000002
195 #define DDENUM_NONDISPLAYDEVICES               0x00000004
196 
197 #define REGSTR_KEY_DDHW_DESCRIPTION            "Description"
198 #define REGSTR_KEY_DDHW_DRIVERNAME             "DriverName"
199 #define REGSTR_PATH_DDHW                       "Hardware\\DirectDrawDrivers"
200 #define DDCREATE_HARDWAREONLY                  0x00000001
201 #define DDCREATE_EMULATIONONLY                 0x00000002
202 #define DD_ROP_SPACE                           (256/32)
203 #define MAX_DDDEVICEID_STRING                  512
204 #define DDGDI_GETHOSTIDENTIFIER                0x00000001
205 #define DDSGR_CALIBRATE                        0x00000001
206 #define DDSMT_ISTESTREQUIRED                   0x00000001
207 #define DDEM_MODEPASSED                        0x00000001
208 #define DDEM_MODEFAILED                        0x00000002
209 
210 #define DDSD_CAPS                              0x00000001
211 #define DDSD_HEIGHT                            0x00000002
212 #define DDSD_WIDTH                             0x00000004
213 #define DDSD_PITCH                             0x00000008
214 #define DDSD_BACKBUFFERCOUNT                   0x00000020
215 #define DDSD_ZBUFFERBITDEPTH                   0x00000040
216 #define DDSD_ALPHABITDEPTH                     0x00000080
217 #define DDSD_LPSURFACE                         0x00000800
218 #define DDSD_PIXELFORMAT                       0x00001000
219 #define DDSD_CKDESTOVERLAY                     0x00002000
220 #define DDSD_CKDESTBLT                         0x00004000
221 #define DDSD_CKSRCOVERLAY                      0x00008000
222 #define DDSD_CKSRCBLT                          0x00010000
223 #define DDSD_MIPMAPCOUNT                       0x00020000
224 #define DDSD_REFRESHRATE                       0x00040000
225 #define DDSD_LINEARSIZE                        0x00080000
226 #define DDSD_TEXTURESTAGE                      0x00100000
227 #define DDSD_FVF                               0x00200000
228 #define DDSD_SRCVBHANDLE                       0x00400000
229 #define DDSD_DEPTH                             0x00800000
230 #define DDSD_ALL                               0x00FFF9EE
231 
232 #define DDOSD_GUID                             0x00000001
233 #define DDOSD_COMPRESSION_RATIO                0x00000002
234 #define DDOSD_SCAPS                            0x00000004
235 #define DDOSD_OSCAPS                           0x00000008
236 #define DDOSD_ALL                              0x0000000f
237 #define DDOSDCAPS_OPTCOMPRESSED                0x00000001
238 #define DDOSDCAPS_OPTREORDERED                 0x00000002
239 #define DDOSDCAPS_MONOLITHICMIPMAP             0x00000004
240 #define DDOSDCAPS_VALIDSCAPS                   0x30004800
241 #define DDOSDCAPS_VALIDOSCAPS                  0x00000007
242 
243 #define DDCOLOR_BRIGHTNESS                     0x00000001
244 #define DDCOLOR_CONTRAST                       0x00000002
245 #define DDCOLOR_HUE                            0x00000004
246 #define DDCOLOR_SATURATION                     0x00000008
247 #define DDCOLOR_SHARPNESS                      0x00000010
248 #define DDCOLOR_GAMMA                          0x00000020
249 #define DDCOLOR_COLORENABLE                    0x00000040
250 
251 #define DDSCAPS_RESERVED1                      0x00000001
252 #define DDSCAPS_ALPHA                          0x00000002
253 #define DDSCAPS_BACKBUFFER                     0x00000004
254 #define DDSCAPS_COMPLEX                        0x00000008
255 #define DDSCAPS_FLIP                           0x00000010
256 #define DDSCAPS_FRONTBUFFER                    0x00000020
257 #define DDSCAPS_OFFSCREENPLAIN                 0x00000040
258 #define DDSCAPS_OVERLAY                        0x00000080
259 #define DDSCAPS_PALETTE                        0x00000100
260 #define DDSCAPS_PRIMARYSURFACE                 0x00000200
261 #define DDSCAPS_RESERVED3                      0x00000400
262 #define DDSCAPS_PRIMARYSURFACELEFT             0x00000000
263 #define DDSCAPS_SYSTEMMEMORY                   0x00000800
264 #define DDSCAPS_TEXTURE                        0x00001000
265 #define DDSCAPS_3DDEVICE                       0x00002000
266 #define DDSCAPS_VIDEOMEMORY                    0x00004000
267 #define DDSCAPS_VISIBLE                        0x00008000
268 #define DDSCAPS_WRITEONLY                      0x00010000
269 #define DDSCAPS_ZBUFFER                        0x00020000
270 #define DDSCAPS_OWNDC                          0x00040000
271 #define DDSCAPS_LIVEVIDEO                      0x00080000
272 #define DDSCAPS_HWCODEC                        0x00100000
273 #define DDSCAPS_MODEX                          0x00200000
274 #define DDSCAPS_MIPMAP                         0x00400000
275 #define DDSCAPS_RESERVED2                      0x00800000
276 #define DDSCAPS_ALLOCONLOAD                    0x04000000
277 #define DDSCAPS_VIDEOPORT                      0x08000000
278 #define DDSCAPS_LOCALVIDMEM                    0x10000000
279 #define DDSCAPS_NONLOCALVIDMEM                 0x20000000
280 #define DDSCAPS_STANDARDVGAMODE                0x40000000
281 #define DDSCAPS_OPTIMIZED                      0x80000000
282 
283 #define DDSCAPS2_HARDWAREDEINTERLACE           0x00000000
284 #define DDSCAPS2_RESERVED4                     0x00000002
285 #define DDSCAPS2_HINTDYNAMIC                   0x00000004
286 #define DDSCAPS2_HINTSTATIC                    0x00000008
287 #define DDSCAPS2_TEXTUREMANAGE                 0x00000010
288 #define DDSCAPS2_RESERVED1                     0x00000020
289 #define DDSCAPS2_RESERVED2                     0x00000040
290 #define DDSCAPS2_OPAQUE                        0x00000080
291 #define DDSCAPS2_HINTANTIALIASING              0x00000100
292 #define DDSCAPS2_CUBEMAP                       0x00000200
293 #define DDSCAPS2_CUBEMAP_POSITIVEX             0x00000400
294 #define DDSCAPS2_CUBEMAP_NEGATIVEX             0x00000800
295 #define DDSCAPS2_CUBEMAP_POSITIVEY             0x00001000
296 #define DDSCAPS2_CUBEMAP_NEGATIVEY             0x00002000
297 #define DDSCAPS2_CUBEMAP_POSITIVEZ             0x00004000
298 #define DDSCAPS2_CUBEMAP_NEGATIVEZ             0x00008000
299 #define DDSCAPS2_CUBEMAP_ALLFACES              ( DDSCAPS2_CUBEMAP_POSITIVEX |\
300                                                  DDSCAPS2_CUBEMAP_NEGATIVEX |\
301                                                  DDSCAPS2_CUBEMAP_POSITIVEY |\
302                                                  DDSCAPS2_CUBEMAP_NEGATIVEY |\
303                                                  DDSCAPS2_CUBEMAP_POSITIVEZ |\
304                                                  DDSCAPS2_CUBEMAP_NEGATIVEZ )
305 
306 #define DDSCAPS2_MIPMAPSUBLEVEL                0x00010000
307 #define DDSCAPS2_D3DTEXTUREMANAGE              0x00020000
308 #define DDSCAPS2_DONOTPERSIST                  0x00040000
309 #define DDSCAPS2_STEREOSURFACELEFT             0x00080000
310 #define DDSCAPS2_VOLUME                        0x00200000
311 #define DDSCAPS2_NOTUSERLOCKABLE               0x00400000
312 #define DDSCAPS2_POINTS                        0x00800000
313 
314 #define DDSCAPS2_RTPATCHES                     0x01000000
315 #define DDSCAPS2_NPATCHES                      0x02000000
316 #define DDSCAPS2_RESERVED3                     0x04000000
317 #define DDSCAPS2_DISCARDBACKBUFFER             0x10000000
318 #define DDSCAPS2_ENABLEALPHACHANNEL            0x20000000
319 #define DDSCAPS2_EXTENDEDFORMATPRIMARY         0x40000000
320 #define DDSCAPS2_ADDITIONALPRIMARY             0x80000000
321 
322 #define DDSCAPS3_MULTISAMPLE_MASK              0x0000001F
323 #define DDSCAPS3_MULTISAMPLE_QUALITY_MASK      0x000000E0
324 #define DDSCAPS3_MULTISAMPLE_QUALITY_SHIFT     5
325 #define DDSCAPS3_RESERVED1                     0x00000100
326 #define DDSCAPS3_RESERVED2                     0x00000200
327 #define DDSCAPS3_LIGHTWEIGHTMIPMAP             0x00000400
328 #define DDSCAPS3_AUTOGENMIPMAP                 0x00000800
329 #define DDSCAPS3_DMAP                          0x00001000
330 
331 #define DDCAPS_3D                              0x00000001
332 #define DDCAPS_ALIGNBOUNDARYDEST               0x00000002
333 #define DDCAPS_ALIGNSIZEDEST                   0x00000004
334 #define DDCAPS_ALIGNBOUNDARYSRC                0x00000008
335 #define DDCAPS_ALIGNSIZESRC                    0x00000010
336 #define DDCAPS_ALIGNSTRIDE                     0x00000020
337 #define DDCAPS_BLT                             0x00000040
338 #define DDCAPS_BLTQUEUE                        0x00000080
339 #define DDCAPS_BLTFOURCC                       0x00000100
340 #define DDCAPS_BLTSTRETCH                      0x00000200
341 #define DDCAPS_GDI                             0x00000400
342 #define DDCAPS_OVERLAY                         0x00000800
343 #define DDCAPS_OVERLAYCANTCLIP                 0x00001000
344 #define DDCAPS_OVERLAYFOURCC                   0x00002000
345 #define DDCAPS_OVERLAYSTRETCH                  0x00004000
346 #define DDCAPS_PALETTE                         0x00008000
347 #define DDCAPS_PALETTEVSYNC                    0x00010000
348 #define DDCAPS_READSCANLINE                    0x00020000
349 #define DDCAPS_RESERVED1                       0x00040000
350 #define DDCAPS_VBI                             0x00080000
351 #define DDCAPS_ZBLTS                           0x00100000
352 #define DDCAPS_ZOVERLAYS                       0x00200000
353 #define DDCAPS_COLORKEY                        0x00400000
354 #define DDCAPS_ALPHA                           0x00800000
355 #define DDCAPS_COLORKEYHWASSIST                0x01000000
356 #define DDCAPS_NOHARDWARE                      0x02000000
357 #define DDCAPS_BLTCOLORFILL                    0x04000000
358 #define DDCAPS_BANKSWITCHED                    0x08000000
359 #define DDCAPS_BLTDEPTHFILL                    0x10000000
360 #define DDCAPS_CANCLIP                         0x20000000
361 #define DDCAPS_CANCLIPSTRETCHED                0x40000000
362 #define DDCAPS_CANBLTSYSMEM                    0x80000000
363 
364 #define DDCAPS2_CERTIFIED                      0x00000001
365 #define DDCAPS2_NO2DDURING3DSCENE              0x00000002
366 #define DDCAPS2_VIDEOPORT                      0x00000004
367 #define DDCAPS2_AUTOFLIPOVERLAY                0x00000008
368 #define DDCAPS2_CANBOBINTERLEAVED              0x00000010
369 #define DDCAPS2_CANBOBNONINTERLEAVED           0x00000020
370 #define DDCAPS2_COLORCONTROLOVERLAY            0x00000040
371 #define DDCAPS2_COLORCONTROLPRIMARY            0x00000080
372 #define DDCAPS2_CANDROPZ16BIT                  0x00000100
373 #define DDCAPS2_NONLOCALVIDMEM                 0x00000200
374 #define DDCAPS2_NONLOCALVIDMEMCAPS             0x00000400
375 #define DDCAPS2_NOPAGELOCKREQUIRED             0x00000800
376 #define DDCAPS2_WIDESURFACES                   0x00001000
377 #define DDCAPS2_CANFLIPODDEVEN                 0x00002000
378 #define DDCAPS2_CANBOBHARDWARE                 0x00004000
379 #define DDCAPS2_COPYFOURCC                     0x00008000
380 #define DDCAPS2_PRIMARYGAMMA                   0x00020000
381 #define DDCAPS2_CANRENDERWINDOWED              0x00080000
382 #define DDCAPS2_CANCALIBRATEGAMMA              0x00100000
383 #define DDCAPS2_FLIPINTERVAL                   0x00200000
384 #define DDCAPS2_FLIPNOVSYNC                    0x00400000
385 #define DDCAPS2_CANMANAGETEXTURE               0x00800000
386 #define DDCAPS2_TEXMANINNONLOCALVIDMEM         0x01000000
387 #define DDCAPS2_STEREO                         0x02000000
388 #define DDCAPS2_SYSTONONLOCAL_AS_SYSTOLOCAL    0x04000000
389 #define DDCAPS2_RESERVED1                      0x08000000
390 #define DDCAPS2_CANMANAGERESOURCE              0x10000000
391 #define DDCAPS2_DYNAMICTEXTURES                0x20000000
392 #define DDCAPS2_CANAUTOGENMIPMAP               0x40000000
393 
394 #define DDFXALPHACAPS_BLTALPHAEDGEBLEND        0x00000001
395 #define DDFXALPHACAPS_BLTALPHAPIXELS           0x00000002
396 #define DDFXALPHACAPS_BLTALPHAPIXELSNEG        0x00000004
397 #define DDFXALPHACAPS_BLTALPHASURFACES         0x00000008
398 #define DDFXALPHACAPS_BLTALPHASURFACESNEG      0x00000010
399 #define DDFXALPHACAPS_OVERLAYALPHAEDGEBLEND    0x00000020
400 #define DDFXALPHACAPS_OVERLAYALPHAPIXELS       0x00000040
401 #define DDFXALPHACAPS_OVERLAYALPHAPIXELSNEG    0x00000080
402 #define DDFXALPHACAPS_OVERLAYALPHASURFACES     0x00000100
403 #define DDFXALPHACAPS_OVERLAYALPHASURFACESNEG  0x00000200
404 
405 
406 #define DDFXCAPS_BLTALPHA                      0x00000001
407 #define DDFXCAPS_OVERLAYALPHA                  0x00000004
408 #define DDFXCAPS_OVERLAYARITHSTRETCHYN         0x00000008
409 #define DDFXCAPS_BLTARITHSTRETCHY              0x00000020
410 #define DDFXCAPS_BLTARITHSTRETCHYN             0x00000010
411 #define DDFXCAPS_BLTMIRRORLEFTRIGHT            0x00000040
412 #define DDFXCAPS_BLTMIRRORUPDOWN               0x00000080
413 #define DDFXCAPS_BLTROTATION                   0x00000100
414 #define DDFXCAPS_BLTROTATION90                 0x00000200
415 #define DDFXCAPS_BLTSHRINKX                    0x00000400
416 #define DDFXCAPS_BLTSHRINKXN                   0x00000800
417 #define DDFXCAPS_BLTSHRINKY                    0x00001000
418 #define DDFXCAPS_BLTSHRINKYN                   0x00002000
419 #define DDFXCAPS_BLTSTRETCHX                   0x00004000
420 #define DDFXCAPS_BLTSTRETCHXN                  0x00008000
421 #define DDFXCAPS_BLTSTRETCHY                   0x00010000
422 #define DDFXCAPS_BLTSTRETCHYN                  0x00020000
423 #define DDFXCAPS_OVERLAYARITHSTRETCHY          0x00040000
424 #define DDFXCAPS_OVERLAYSHRINKX                0x00080000
425 #define DDFXCAPS_OVERLAYSHRINKXN               0x00100000
426 #define DDFXCAPS_OVERLAYSHRINKY                0x00200000
427 #define DDFXCAPS_OVERLAYSHRINKYN               0x00400000
428 #define DDFXCAPS_OVERLAYSTRETCHX               0x00800000
429 #define DDFXCAPS_OVERLAYSTRETCHXN              0x01000000
430 #define DDFXCAPS_OVERLAYSTRETCHY               0x02000000
431 #define DDFXCAPS_OVERLAYSTRETCHYN              0x04000000
432 #define DDFXCAPS_OVERLAYMIRRORLEFTRIGHT        0x08000000
433 #define DDFXCAPS_OVERLAYMIRRORUPDOWN           0x10000000
434 #define DDFXCAPS_OVERLAYDEINTERLACE            0x20000000
435 #define DDFXCAPS_BLTFILTER                     DDFXCAPS_BLTARITHSTRETCHY
436 #define DDFXCAPS_OVERLAYFILTER                 DDFXCAPS_OVERLAYARITHSTRETCHY
437 
438 
439   #define DDSVCAPS_RESERVED1                     0x00000001
440   #define DDSVCAPS_RESERVED2                     0x00000002
441   #define DDSVCAPS_RESERVED3                     0x00000004
442   #define DDSVCAPS_RESERVED4                     0x00000008
443 /* rember that DDSVCAPS_ENIGMA is same as DDSVCAPS_RESERVED1 */
444   #define DDSVCAPS_ENIGMA                        0x00000001
445 /* rember that DDSVCAPS_FLICKER is same as DDSVCAPS_RESERVED2 */
446   #define DDSVCAPS_FLICKER                       0x00000002
447 /* rember that DDSVCAPS_REDBLUE is same as DDSVCAPS_RESERVED3 */
448   #define DDSVCAPS_REDBLUE                       0x00000004
449 /* rember that DDSVCAPS_SPLIT is same as DDSVCAPS_RESERVED4 */
450   #define DDSVCAPS_SPLIT                         0x00000008
451 
452 #define DDSVCAPS_STEREOSEQUENTIAL              0x00000010
453 
454 #define DDPCAPS_INITIALIZE                     0x00000000
455 #define DDPCAPS_4BIT                           0x00000001
456 #define DDPCAPS_8BITENTRIES                    0x00000002
457 #define DDPCAPS_8BIT                           0x00000004
458 #define DDPCAPS_PRIMARYSURFACE                 0x00000010
459 #define DDPCAPS_PRIMARYSURFACELEFT             0x00000020
460 #define DDPCAPS_ALLOW256                       0x00000040
461 #define DDPCAPS_VSYNC                          0x00000080
462 #define DDPCAPS_1BIT                           0x00000100
463 #define DDPCAPS_2BIT                           0x00000200
464 #define DDPCAPS_ALPHA                          0x00000400
465 
466 #define DDSPD_IUNKNOWNPOINTER                  0x00000001
467 #define DDSPD_VOLATILE                         0x00000002
468 
469 #define DDBD_1                                 0x00004000
470 #define DDBD_2                                 0x00002000
471 #define DDBD_4                                 0x00001000
472 #define DDBD_8                                 0x00000800
473 #define DDBD_16                                0x00000400
474 #define DDBD_24                                0x00000200
475 #define DDBD_32                                0x00000100
476 
477 #define DDCKEY_COLORSPACE                      0x00000001
478 #define DDCKEY_DESTBLT                         0x00000002
479 #define DDCKEY_DESTOVERLAY                     0x00000004
480 #define DDCKEY_SRCBLT                          0x00000008
481 #define DDCKEY_SRCOVERLAY                      0x00000010
482 
483 #define DDCKEYCAPS_DESTBLT                     0x00000001
484 #define DDCKEYCAPS_DESTBLTCLRSPACE             0x00000002
485 #define DDCKEYCAPS_DESTBLTCLRSPACEYUV          0x00000004
486 #define DDCKEYCAPS_DESTBLTYUV                  0x00000008
487 #define DDCKEYCAPS_DESTOVERLAY                 0x00000010
488 #define DDCKEYCAPS_DESTOVERLAYCLRSPACE         0x00000020
489 #define DDCKEYCAPS_DESTOVERLAYCLRSPACEYUV      0x00000040
490 #define DDCKEYCAPS_DESTOVERLAYONEACTIVE        0x00000080
491 #define DDCKEYCAPS_DESTOVERLAYYUV              0x00000100
492 #define DDCKEYCAPS_SRCBLT                      0x00000200
493 #define DDCKEYCAPS_SRCBLTCLRSPACE              0x00000400
494 #define DDCKEYCAPS_SRCBLTCLRSPACEYUV           0x00000800
495 #define DDCKEYCAPS_SRCBLTYUV                   0x00001000
496 #define DDCKEYCAPS_SRCOVERLAY                  0x00002000
497 #define DDCKEYCAPS_SRCOVERLAYCLRSPACE          0x00004000
498 #define DDCKEYCAPS_SRCOVERLAYCLRSPACEYUV       0x00008000
499 #define DDCKEYCAPS_SRCOVERLAYONEACTIVE         0x00010000
500 #define DDCKEYCAPS_SRCOVERLAYYUV               0x00020000
501 #define DDCKEYCAPS_NOCOSTOVERLAY               0x00040000
502 
503 #define DDPF_ALPHAPIXELS                       0x00000001
504 #define DDPF_ALPHA                             0x00000002
505 #define DDPF_FOURCC                            0x00000004
506 #define DDPF_PALETTEINDEXED4                   0x00000008
507 #define DDPF_PALETTEINDEXEDTO8                 0x00000010
508 #define DDPF_PALETTEINDEXED8                   0x00000020
509 #define DDPF_RGB                               0x00000040
510 #define DDPF_COMPRESSED                        0x00000080
511 #define DDPF_RGBTOYUV                          0x00000100
512 #define DDPF_YUV                               0x00000200
513 #define DDPF_ZBUFFER                           0x00000400
514 #define DDPF_PALETTEINDEXED1                   0x00000800
515 #define DDPF_PALETTEINDEXED2                   0x00001000
516 #define DDPF_ZPIXELS                           0x00002000
517 #define DDPF_STENCILBUFFER                     0x00004000
518 #define DDPF_ALPHAPREMULT                      0x00008000
519 #define DDPF_LUMINANCE                         0x00020000
520 #define DDPF_BUMPLUMINANCE                     0x00040000
521 #define DDPF_BUMPDUDV                          0x00080000
522 
523 #define DDENUMSURFACES_ALL                     0x00000001
524 #define DDENUMSURFACES_MATCH                   0x00000002
525 #define DDENUMSURFACES_NOMATCH                 0x00000004
526 #define DDENUMSURFACES_CANBECREATED            0x00000008
527 #define DDENUMSURFACES_DOESEXIST               0x00000010
528 
529 #define DDSDM_STANDARDVGAMODE                  0x00000001
530 
531 #define DDEDM_REFRESHRATES                     0x00000001
532 #define DDEDM_STANDARDVGAMODES                 0x00000002
533 
534 #define DDSCL_FULLSCREEN                       0x00000001
535 #define DDSCL_ALLOWREBOOT                      0x00000002
536 #define DDSCL_NOWINDOWCHANGES                  0x00000004
537 #define DDSCL_NORMAL                           0x00000008
538 #define DDSCL_EXCLUSIVE                        0x00000010
539 #define DDSCL_ALLOWMODEX                       0x00000040
540 #define DDSCL_SETFOCUSWINDOW                   0x00000080
541 #define DDSCL_SETDEVICEWINDOW                  0x00000100
542 #define DDSCL_CREATEDEVICEWINDOW               0x00000200
543 #define DDSCL_MULTITHREADED                    0x00000400
544 #define DDSCL_FPUSETUP                         0x00000800
545 #define DDSCL_FPUPRESERVE                      0x00001000
546 
547 #define DDBLT_ALPHADEST                        0x00000001
548 #define DDBLT_ALPHADESTCONSTOVERRIDE           0x00000002
549 #define DDBLT_ALPHADESTNEG                     0x00000004
550 #define DDBLT_ALPHADESTSURFACEOVERRIDE         0x00000008
551 #define DDBLT_ALPHAEDGEBLEND                   0x00000010
552 #define DDBLT_ALPHASRC                         0x00000020
553 #define DDBLT_ALPHASRCCONSTOVERRIDE            0x00000040
554 #define DDBLT_ALPHASRCNEG                      0x00000080
555 #define DDBLT_ALPHASRCSURFACEOVERRIDE          0x00000100
556 #define DDBLT_ASYNC                            0x00000200
557 #define DDBLT_COLORFILL                        0x00000400
558 #define DDBLT_DDFX                             0x00000800
559 #define DDBLT_DDROPS                           0x00001000
560 #define DDBLT_KEYDEST                          0x00002000
561 #define DDBLT_KEYDESTOVERRIDE                  0x00004000
562 #define DDBLT_KEYSRC                           0x00008000
563 #define DDBLT_KEYSRCOVERRIDE                   0x00010000
564 #define DDBLT_ROP                              0x00020000
565 #define DDBLT_ROTATIONANGLE                    0x00040000
566 #define DDBLT_ZBUFFER                          0x00080000
567 #define DDBLT_ZBUFFERDESTCONSTOVERRIDE         0x00100000
568 #define DDBLT_ZBUFFERDESTOVERRIDE              0x00200000
569 #define DDBLT_ZBUFFERSRCCONSTOVERRIDE          0x00400000
570 #define DDBLT_ZBUFFERSRCOVERRIDE               0x00800000
571 #define DDBLT_WAIT                             0x01000000
572 #define DDBLT_DEPTHFILL                        0x02000000
573 #define DDBLT_DONOTWAIT                        0x08000000
574 #define DDBLT_PRESENTATION                     0x10000000
575 #define DDBLT_LAST_PRESENTATION                0x20000000
576 #define DDBLT_EXTENDED_FLAGS                   0x40000000
577 #define DDBLT_EXTENDED_LINEAR_CONTENT          0x00000004
578 
579 #define DDBLTFAST_NOCOLORKEY                   0x00000000
580 #define DDBLTFAST_SRCCOLORKEY                  0x00000001
581 #define DDBLTFAST_DESTCOLORKEY                 0x00000002
582 #define DDBLTFAST_WAIT                         0x00000010
583 #define DDBLTFAST_DONOTWAIT                    0x00000020
584 
585 #define DDFLIP_WAIT                            0x00000001
586 #define DDFLIP_EVEN                            0x00000002
587 #define DDFLIP_ODD                             0x00000004
588 #define DDFLIP_NOVSYNC                         0x00000008
589 #define DDFLIP_STEREO                          0x00000010
590 #define DDFLIP_DONOTWAIT                       0x00000020
591 #define DDFLIP_INTERVAL2                       0x02000000
592 #define DDFLIP_INTERVAL3                       0x03000000
593 #define DDFLIP_INTERVAL4                       0x04000000
594 
595 
596 #define DDOVER_ALPHADEST                       0x00000001
597 #define DDOVER_ALPHADESTCONSTOVERRIDE          0x00000002
598 #define DDOVER_ALPHADESTNEG                    0x00000004
599 #define DDOVER_ALPHADESTSURFACEOVERRIDE        0x00000008
600 #define DDOVER_ALPHAEDGEBLEND                  0x00000010
601 #define DDOVER_ALPHASRC                        0x00000020
602 #define DDOVER_ALPHASRCCONSTOVERRIDE           0x00000040
603 #define DDOVER_ALPHASRCNEG                     0x00000080
604 #define DDOVER_ALPHASRCSURFACEOVERRIDE         0x00000100
605 #define DDOVER_HIDE                            0x00000200
606 #define DDOVER_KEYDEST                         0x00000400
607 #define DDOVER_KEYDESTOVERRIDE                 0x00000800
608 #define DDOVER_KEYSRC                          0x00001000
609 #define DDOVER_KEYSRCOVERRIDE                  0x00002000
610 #define DDOVER_SHOW                            0x00004000
611 #define DDOVER_ADDDIRTYRECT                    0x00008000
612 #define DDOVER_REFRESHDIRTYRECTS               0x00010000
613 #define DDOVER_REFRESHALL                      0x00020000
614 #define DDOVER_DDFX                            0x00080000
615 #define DDOVER_AUTOFLIP                        0x00100000
616 #define DDOVER_BOB                             0x00200000
617 #define DDOVER_OVERRIDEBOBWEAVE                0x00400000
618 #define DDOVER_INTERLEAVED                     0x00800000
619 #define DDOVER_BOBHARDWARE                     0x01000000
620 #define DDOVER_ARGBSCALEFACTORS                0x02000000
621 #define DDOVER_DEGRADEARGBSCALING              0x04000000
622 
623 #define DDLOCK_SURFACEMEMORYPTR                0x00000000
624 #define DDLOCK_WAIT                            0x00000001
625 #define DDLOCK_EVENT                           0x00000002
626 #define DDLOCK_READONLY                        0x00000010
627 #define DDLOCK_WRITEONLY                       0x00000020
628 #define DDLOCK_NOSYSLOCK                       0x00000800
629 #define DDLOCK_NOOVERWRITE                     0x00001000
630 #define DDLOCK_DISCARDCONTENTS                 0x00002000
631 #define DDLOCK_OKTOSWAP                        0x00002000
632 #define DDLOCK_DONOTWAIT                       0x00004000
633 #define DDLOCK_HASVOLUMETEXTUREBOXRECT         0x00008000
634 #define DDLOCK_NODIRTYUPDATE                   0x00010000
635 
636 #define DDBLTFX_ARITHSTRETCHY                  0x00000001
637 #define DDBLTFX_MIRRORLEFTRIGHT                0x00000002
638 #define DDBLTFX_MIRRORUPDOWN                   0x00000004
639 #define DDBLTFX_NOTEARING                      0x00000008
640 #define DDBLTFX_ROTATE180                      0x00000010
641 #define DDBLTFX_ROTATE270                      0x00000020
642 #define DDBLTFX_ROTATE90                       0x00000040
643 #define DDBLTFX_ZBUFFERRANGE                   0x00000080
644 #define DDBLTFX_ZBUFFERBASEDEST                0x00000100
645 
646 #define DDOVERFX_ARITHSTRETCHY                 0x00000001
647 #define DDOVERFX_MIRRORLEFTRIGHT               0x00000002
648 #define DDOVERFX_MIRRORUPDOWN                  0x00000004
649 #define DDOVERFX_DEINTERLACE                   0x00000008
650 
651 #define DDWAITVB_BLOCKBEGIN                    0x00000001
652 #define DDWAITVB_BLOCKBEGINEVENT               0x00000002
653 #define DDWAITVB_BLOCKEND                      0x00000004
654 
655 #define DDGFS_CANFLIP                          0x00000001
656 #define DDGFS_ISFLIPDONE                       0x00000002
657 
658 #define DDGBS_CANBLT                           0x00000001
659 #define DDGBS_ISBLTDONE                        0x00000002
660 
661 #define DDENUMOVERLAYZ_BACKTOFRONT             0x00000000
662 #define DDENUMOVERLAYZ_FRONTTOBACK             0x00000001
663 
664 #define DDOVERZ_SENDTOFRONT                    0x00000000
665 #define DDOVERZ_SENDTOBACK                     0x00000001
666 #define DDOVERZ_MOVEFORWARD                    0x00000002
667 #define DDOVERZ_MOVEBACKWARD                   0x00000003
668 #define DDOVERZ_INSERTINFRONTOF                0x00000004
669 #define DDOVERZ_INSERTINBACKOF                 0x00000005
670 
671 #define GET_WHQL_YEAR  (dwWHQLLevel)  ((dwWHQLLevel)/0x10000)
672 #define GET_WHQL_MONTH (dwWHQLLevel)  (((dwWHQLLevel)/0x100)&0x00ff)
673 #define GET_WHQL_DAY   (dwWHQLLevel)  ((dwWHQLLevel)&0xff)
674 
675 #ifndef MAKEFOURCC
676 #define MAKEFOURCC(c0,c1,c2,c3)  \
677     ((DWORD)(BYTE)(c0)|((DWORD)(BYTE)(c1)<<8)|((DWORD)(BYTE)(c2)<< 16)|((DWORD)(BYTE)(c3)<<24))
678 #endif
679 
680 #define FOURCC_DXT1 (MAKEFOURCC('D','X','T','1'))
681 #define FOURCC_DXT2 (MAKEFOURCC('D','X','T','2'))
682 #define FOURCC_DXT3 (MAKEFOURCC('D','X','T','3'))
683 #define FOURCC_DXT4 (MAKEFOURCC('D','X','T','4'))
684 #define FOURCC_DXT5 (MAKEFOURCC('D','X','T','5'))
685 
686 #if defined(_WIN32)  &&  !defined(_NO_COM)
687 DEFINE_GUID( CLSID_DirectDraw,            0xD7B70EE0,0x4340,0x11CF,0xB0,0x63,0x00,0x20,0xAF,0xC2,0xCD,0x35 );
688 DEFINE_GUID( CLSID_DirectDraw7,           0x3C305196,0x50DB,0x11D3,0x9C,0xFE,0x00,0xC0,0x4F,0xD9,0x30,0xC5 );
689 DEFINE_GUID( CLSID_DirectDrawClipper,     0x593817A0,0x7DB3,0x11CF,0xA2,0xDE,0x00,0xAA,0x00,0xB9,0x33,0x56 );
690 DEFINE_GUID( IID_IDirectDraw,             0x6C14DB80,0xA733,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60 );
691 DEFINE_GUID( IID_IDirectDraw2,            0xB3A6F3E0,0x2B43,0x11CF,0xA2,0xDE,0x00,0xAA,0x00,0xB9,0x33,0x56 );
692 DEFINE_GUID( IID_IDirectDraw3,            0x618F8AD4,0x8B7A,0x11D0,0x8F,0xCC,0x00,0xC0,0x4F,0xD9,0x18,0x9D );
693 DEFINE_GUID( IID_IDirectDraw4,            0x9C59509A,0x39BD,0x11D1,0x8C,0x4A,0x00,0xC0,0x4F,0xD9,0x30,0xC5 );
694 DEFINE_GUID( IID_IDirectDraw7,            0x15E65EC0,0x3B9C,0x11D2,0xB9,0x2F,0x00,0x60,0x97,0x97,0xEA,0x5B );
695 DEFINE_GUID( IID_IDirectDrawSurface,      0x6C14DB81,0xA733,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60 );
696 DEFINE_GUID( IID_IDirectDrawSurface2,     0x57805885,0x6EEC,0x11CF,0x94,0x41,0xA8,0x23,0x03,0xC1,0x0E,0x27 );
697 DEFINE_GUID( IID_IDirectDrawSurface3,     0xDA044E00,0x69B2,0x11D0,0xA1,0xD5,0x00,0xAA,0x00,0xB8,0xDF,0xBB );
698 DEFINE_GUID( IID_IDirectDrawSurface4,     0x0B2B8630,0xAD35,0x11D0,0x8E,0xA6,0x00,0x60,0x97,0x97,0xEA,0x5B );
699 DEFINE_GUID( IID_IDirectDrawSurface7,     0x06675A80,0x3B9B,0x11D2,0xB9,0x2F,0x00,0x60,0x97,0x97,0xEA,0x5B );
700 DEFINE_GUID( IID_IDirectDrawPalette,      0x6C14DB84,0xA733,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60 );
701 DEFINE_GUID( IID_IDirectDrawClipper,      0x6C14DB85,0xA733,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60 );
702 DEFINE_GUID( IID_IDirectDrawColorControl, 0x4B9F0EE0,0x0D7E,0x11D0,0x9B,0x06,0x00,0xA0,0xC9,0x03,0xA3,0xB8 );
703 DEFINE_GUID( IID_IDirectDrawGammaControl, 0x69C11C3E,0xB46B,0x11D1,0xAD,0x7A,0x00,0xC0,0x4F,0xC2,0x9B,0x4E );
704 #endif
705 
706 
707 struct IDirectDraw;
708 struct IDirectDrawSurface;
709 struct IDirectDrawPalette;
710 struct IDirectDrawClipper;
711 
712 typedef struct IDirectDraw              *LPDIRECTDRAW;
713 typedef struct IDirectDraw2             *LPDIRECTDRAW2;
714 typedef struct IDirectDraw3             *LPDIRECTDRAW3;
715 typedef struct IDirectDraw4             *LPDIRECTDRAW4;
716 typedef struct IDirectDraw7             *LPDIRECTDRAW7;
717 typedef struct IDirectDrawSurface       *LPDIRECTDRAWSURFACE;
718 typedef struct IDirectDrawSurface2      *LPDIRECTDRAWSURFACE2;
719 typedef struct IDirectDrawSurface3      *LPDIRECTDRAWSURFACE3;
720 typedef struct IDirectDrawSurface4      *LPDIRECTDRAWSURFACE4;
721 typedef struct IDirectDrawSurface7      *LPDIRECTDRAWSURFACE7;
722 typedef struct IDirectDrawPalette       *LPDIRECTDRAWPALETTE;
723 typedef struct IDirectDrawClipper       *LPDIRECTDRAWCLIPPER;
724 typedef struct IDirectDrawColorControl  *LPDIRECTDRAWCOLORCONTROL;
725 typedef struct IDirectDrawGammaControl  *LPDIRECTDRAWGAMMACONTROL;
726 
727 typedef struct _DDSCAPS
728 {
729    DWORD dwCaps;
730 } DDSCAPS, *LPDDSCAPS;
731 
732 typedef struct _DDSCAPS2
733 {
734    DWORD dwCaps;
735    DWORD dwCaps2;
736    DWORD dwCaps3;
737    union
738    {
739       DWORD dwCaps4;
740       DWORD dwVolumeDepth;
741    } DUMMYUNIONNAMEN(1);
742 } DDSCAPS2, *LPDDSCAPS2;
743 
744 typedef struct _DDCAPS_DX1
745 {
746    DWORD dwSize;
747    DWORD dwCaps;
748    DWORD dwCaps2;
749    DWORD dwCKeyCaps;
750    DWORD dwFXCaps;
751    DWORD dwFXAlphaCaps;
752    DWORD dwPalCaps;
753    DWORD dwSVCaps;
754    DWORD dwAlphaBltConstBitDepths;
755    DWORD dwAlphaBltPixelBitDepths;
756    DWORD dwAlphaBltSurfaceBitDepths;
757    DWORD dwAlphaOverlayConstBitDepths;
758    DWORD dwAlphaOverlayPixelBitDepths;
759    DWORD dwAlphaOverlaySurfaceBitDepths;
760    DWORD dwZBufferBitDepths;
761    DWORD dwVidMemTotal;
762    DWORD dwVidMemFree;
763    DWORD dwMaxVisibleOverlays;
764    DWORD dwCurrVisibleOverlays;
765    DWORD dwNumFourCCCodes;
766    DWORD dwAlignBoundarySrc;
767    DWORD dwAlignSizeSrc;
768    DWORD dwAlignBoundaryDest;
769    DWORD dwAlignSizeDest;
770    DWORD dwAlignStrideAlign;
771    DWORD dwRops[DD_ROP_SPACE];
772    DDSCAPS ddsCaps;
773    DWORD dwMinOverlayStretch;
774    DWORD dwMaxOverlayStretch;
775    DWORD dwMinLiveVideoStretch;
776    DWORD dwMaxLiveVideoStretch;
777    DWORD dwMinHwCodecStretch;
778    DWORD dwMaxHwCodecStretch;
779    DWORD dwReserved1;
780    DWORD dwReserved2;
781    DWORD dwReserved3;
782 } DDCAPS_DX1, *LPDDCAPS_DX1;
783 
784 typedef struct _DDCAPS_DX3
785 {
786    DWORD dwSize;
787    DWORD dwCaps;
788    DWORD dwCaps2;
789    DWORD dwCKeyCaps;
790    DWORD dwFXCaps;
791    DWORD dwFXAlphaCaps;
792    DWORD dwPalCaps;
793    DWORD dwSVCaps;
794    DWORD dwAlphaBltConstBitDepths;
795    DWORD dwAlphaBltPixelBitDepths;
796    DWORD dwAlphaBltSurfaceBitDepths;
797    DWORD dwAlphaOverlayConstBitDepths;
798    DWORD dwAlphaOverlayPixelBitDepths;
799    DWORD dwAlphaOverlaySurfaceBitDepths;
800    DWORD dwZBufferBitDepths;
801    DWORD dwVidMemTotal;
802    DWORD dwVidMemFree;
803    DWORD dwMaxVisibleOverlays;
804    DWORD dwCurrVisibleOverlays;
805    DWORD dwNumFourCCCodes;
806    DWORD dwAlignBoundarySrc;
807    DWORD dwAlignSizeSrc;
808    DWORD dwAlignBoundaryDest;
809    DWORD dwAlignSizeDest;
810    DWORD dwAlignStrideAlign;
811    DWORD dwRops[DD_ROP_SPACE];
812    DDSCAPS ddsCaps;
813    DWORD dwMinOverlayStretch;
814    DWORD dwMaxOverlayStretch;
815    DWORD dwMinLiveVideoStretch;
816    DWORD dwMaxLiveVideoStretch;
817    DWORD dwMinHwCodecStretch;
818    DWORD dwMaxHwCodecStretch;
819    DWORD dwReserved1;
820    DWORD dwReserved2;
821    DWORD dwReserved3;
822    DWORD   dwSVBCaps;
823    DWORD   dwSVBCKeyCaps;
824    DWORD   dwSVBFXCaps;
825    DWORD   dwSVBRops[DD_ROP_SPACE];
826    DWORD   dwVSBCaps;
827    DWORD   dwVSBCKeyCaps;
828    DWORD   dwVSBFXCaps;
829    DWORD   dwVSBRops[DD_ROP_SPACE];
830    DWORD   dwSSBCaps;
831    DWORD   dwSSBCKeyCaps;
832    DWORD   dwSSBFXCaps;
833    DWORD   dwSSBRops[DD_ROP_SPACE];
834    DWORD   dwReserved4;
835    DWORD   dwReserved5;
836    DWORD   dwReserved6;
837 } DDCAPS_DX3, *LPDDCAPS_DX3;
838 
839 typedef struct _DDCAPS_DX5
840 {
841    DWORD dwSize;
842    DWORD dwCaps;
843    DWORD dwCaps2;
844    DWORD dwCKeyCaps;
845    DWORD dwFXCaps;
846    DWORD dwFXAlphaCaps;
847    DWORD dwPalCaps;
848    DWORD dwSVCaps;
849    DWORD dwAlphaBltConstBitDepths;
850    DWORD dwAlphaBltPixelBitDepths;
851    DWORD dwAlphaBltSurfaceBitDepths;
852    DWORD dwAlphaOverlayConstBitDepths;
853    DWORD dwAlphaOverlayPixelBitDepths;
854    DWORD dwAlphaOverlaySurfaceBitDepths;
855    DWORD dwZBufferBitDepths;
856    DWORD dwVidMemTotal;
857    DWORD dwVidMemFree;
858    DWORD dwMaxVisibleOverlays;
859    DWORD dwCurrVisibleOverlays;
860    DWORD dwNumFourCCCodes;
861    DWORD dwAlignBoundarySrc;
862    DWORD dwAlignSizeSrc;
863    DWORD dwAlignBoundaryDest;
864    DWORD dwAlignSizeDest;
865    DWORD dwAlignStrideAlign;
866    DWORD dwRops[DD_ROP_SPACE];
867    DDSCAPS ddsCaps;
868    DWORD dwMinOverlayStretch;
869    DWORD dwMaxOverlayStretch;
870    DWORD dwMinLiveVideoStretch;
871    DWORD dwMaxLiveVideoStretch;
872    DWORD dwMinHwCodecStretch;
873    DWORD dwMaxHwCodecStretch;
874    DWORD dwReserved1;
875    DWORD dwReserved2;
876    DWORD dwReserved3;
877    DWORD dwSVBCaps;
878    DWORD dwSVBCKeyCaps;
879    DWORD dwSVBFXCaps;
880    DWORD dwSVBRops[DD_ROP_SPACE];
881    DWORD dwVSBCaps;
882    DWORD dwVSBCKeyCaps;
883    DWORD dwVSBFXCaps;
884    DWORD dwVSBRops[DD_ROP_SPACE];
885    DWORD dwSSBCaps;
886    DWORD dwSSBCKeyCaps;
887    DWORD dwSSBFXCaps;
888    DWORD dwSSBRops[DD_ROP_SPACE];
889    DWORD dwMaxVideoPorts;
890    DWORD dwCurrVideoPorts;
891    DWORD dwSVBCaps2;
892    DWORD dwNLVBCaps;
893    DWORD dwNLVBCaps2;
894    DWORD dwNLVBCKeyCaps;
895    DWORD dwNLVBFXCaps;
896    DWORD dwNLVBRops[DD_ROP_SPACE];
897 } DDCAPS_DX5, *LPDDCAPS_DX5;
898 
899 typedef struct _DDCAPS_DX6
900 {
901    DWORD dwSize;
902    DWORD dwCaps;
903    DWORD dwCaps2;
904    DWORD dwCKeyCaps;
905    DWORD dwFXCaps;
906    DWORD dwFXAlphaCaps;
907    DWORD dwPalCaps;
908    DWORD dwSVCaps;
909    DWORD dwAlphaBltConstBitDepths;
910    DWORD dwAlphaBltPixelBitDepths;
911    DWORD dwAlphaBltSurfaceBitDepths;
912    DWORD dwAlphaOverlayConstBitDepths;
913    DWORD dwAlphaOverlayPixelBitDepths;
914    DWORD dwAlphaOverlaySurfaceBitDepths;
915    DWORD dwZBufferBitDepths;
916    DWORD dwVidMemTotal;
917    DWORD dwVidMemFree;
918    DWORD dwMaxVisibleOverlays;
919    DWORD dwCurrVisibleOverlays;
920    DWORD dwNumFourCCCodes;
921    DWORD dwAlignBoundarySrc;
922    DWORD dwAlignSizeSrc;
923    DWORD dwAlignBoundaryDest;
924    DWORD dwAlignSizeDest;
925    DWORD dwAlignStrideAlign;
926    DWORD dwRops[DD_ROP_SPACE];
927    DDSCAPS ddsOldCaps;
928    DWORD dwMinOverlayStretch;
929    DWORD dwMaxOverlayStretch;
930    DWORD dwMinLiveVideoStretch;
931    DWORD dwMaxLiveVideoStretch;
932    DWORD dwMinHwCodecStretch;
933    DWORD dwMaxHwCodecStretch;
934    DWORD dwReserved1;
935    DWORD dwReserved2;
936    DWORD dwReserved3;
937    DWORD dwSVBCaps;
938    DWORD dwSVBCKeyCaps;
939    DWORD dwSVBFXCaps;
940    DWORD dwSVBRops[DD_ROP_SPACE];
941    DWORD dwVSBCaps;
942    DWORD dwVSBCKeyCaps;
943    DWORD dwVSBFXCaps;
944    DWORD dwVSBRops[DD_ROP_SPACE];
945    DWORD dwSSBCaps;
946    DWORD dwSSBCKeyCaps;
947    DWORD dwSSBFXCaps;
948    DWORD dwSSBRops[DD_ROP_SPACE];
949    DWORD dwMaxVideoPorts;
950    DWORD dwCurrVideoPorts;
951    DWORD dwSVBCaps2;
952    DWORD dwNLVBCaps;
953    DWORD dwNLVBCaps2;
954    DWORD dwNLVBCKeyCaps;
955    DWORD dwNLVBFXCaps;
956    DWORD dwNLVBRops[DD_ROP_SPACE];
957    DDSCAPS2 ddsCaps;
958 } DDCAPS_DX6, *LPDDCAPS_DX6;
959 
960 typedef struct _DDCAPS_DX7
961 {
962    DWORD dwSize;
963    DWORD dwCaps;
964    DWORD dwCaps2;
965    DWORD dwCKeyCaps;
966    DWORD dwFXCaps;
967    DWORD dwFXAlphaCaps;
968    DWORD dwPalCaps;
969    DWORD dwSVCaps;
970    DWORD dwAlphaBltConstBitDepths;
971    DWORD dwAlphaBltPixelBitDepths;
972    DWORD dwAlphaBltSurfaceBitDepths;
973    DWORD dwAlphaOverlayConstBitDepths;
974    DWORD dwAlphaOverlayPixelBitDepths;
975    DWORD dwAlphaOverlaySurfaceBitDepths;
976    DWORD dwZBufferBitDepths;
977    DWORD dwVidMemTotal;
978    DWORD dwVidMemFree;
979    DWORD dwMaxVisibleOverlays;
980    DWORD dwCurrVisibleOverlays;
981    DWORD dwNumFourCCCodes;
982    DWORD dwAlignBoundarySrc;
983    DWORD dwAlignSizeSrc;
984    DWORD dwAlignBoundaryDest;
985    DWORD dwAlignSizeDest;
986    DWORD dwAlignStrideAlign;
987    DWORD dwRops[DD_ROP_SPACE];
988    DDSCAPS ddsOldCaps;
989    DWORD dwMinOverlayStretch;
990    DWORD dwMaxOverlayStretch;
991    DWORD dwMinLiveVideoStretch;
992    DWORD dwMaxLiveVideoStretch;
993    DWORD dwMinHwCodecStretch;
994    DWORD dwMaxHwCodecStretch;
995    DWORD dwReserved1;
996    DWORD dwReserved2;
997    DWORD dwReserved3;
998    DWORD dwSVBCaps;
999    DWORD dwSVBCKeyCaps;
1000    DWORD dwSVBFXCaps;
1001    DWORD dwSVBRops[DD_ROP_SPACE];
1002    DWORD dwVSBCaps;
1003    DWORD dwVSBCKeyCaps;
1004    DWORD dwVSBFXCaps;
1005    DWORD dwVSBRops[DD_ROP_SPACE];
1006    DWORD dwSSBCaps;
1007    DWORD dwSSBCKeyCaps;
1008    DWORD dwSSBFXCaps;
1009    DWORD dwSSBRops[DD_ROP_SPACE];
1010    DWORD dwMaxVideoPorts;
1011    DWORD dwCurrVideoPorts;
1012    DWORD dwSVBCaps2;
1013    DWORD dwNLVBCaps;
1014    DWORD dwNLVBCaps2;
1015    DWORD dwNLVBCKeyCaps;
1016    DWORD dwNLVBFXCaps;
1017    DWORD dwNLVBRops[DD_ROP_SPACE];
1018    DDSCAPS2 ddsCaps;
1019 } DDCAPS_DX7, *LPDDCAPS_DX7;
1020 
1021 #if DIRECTDRAW_VERSION<=0x300
1022    typedef DDCAPS_DX3 DDCAPS;
1023 #elif DIRECTDRAW_VERSION<=0x500
1024    typedef DDCAPS_DX5 DDCAPS;
1025 #elif DIRECTDRAW_VERSION<=0x600
1026    typedef DDCAPS_DX6 DDCAPS;
1027 #else
1028    typedef DDCAPS_DX7 DDCAPS;
1029 #endif
1030 typedef DDCAPS *LPDDCAPS;
1031 
1032 
1033 typedef struct _DDCOLORCONTROL
1034 {
1035   DWORD dwSize;
1036   DWORD dwFlags;
1037   LONG lBrightness;
1038   LONG lContrast;
1039   LONG lHue;
1040   LONG lSaturation;
1041   LONG lSharpness;
1042   LONG lGamma;
1043   LONG lColorEnable;
1044   DWORD dwReserved1;
1045 } DDCOLORCONTROL, *LPDDCOLORCONTROL;
1046 
1047 typedef struct _DDCOLORKEY
1048 {
1049    DWORD dwColorSpaceLowValue;
1050    DWORD dwColorSpaceHighValue;
1051 
1052 } DDCOLORKEY, *LPDDCOLORKEY;
1053 
1054 typedef struct _DDOSCAPS
1055 {
1056    DWORD dwCaps;
1057 } DDOSCAPS, *LPDDOSCAPS;
1058 
1059 typedef struct _DDSCAPSEX
1060 {
1061    DWORD dwCaps2;
1062    DWORD dwCaps3;
1063    union
1064    {
1065       DWORD dwCaps4;
1066       DWORD dwVolumeDepth;
1067    } DUMMYUNIONNAMEN(1);
1068 } DDSCAPSEX, *LPDDSCAPSEX;
1069 
1070 typedef struct _DDPIXELFORMAT
1071 {
1072    DWORD dwSize;
1073    DWORD dwFlags;
1074    DWORD dwFourCC;
1075    union
1076    {
1077       DWORD dwRGBBitCount;
1078       DWORD dwYUVBitCount;
1079       DWORD dwZBufferBitDepth;
1080       DWORD dwAlphaBitDepth;
1081       DWORD dwLuminanceBitCount;
1082       DWORD dwBumpBitCount;
1083       DWORD dwPrivateFormatBitCount;
1084    } DUMMYUNIONNAMEN(1);
1085    union
1086    {
1087       DWORD dwRBitMask;
1088       DWORD dwYBitMask;
1089       DWORD dwStencilBitDepth;
1090       DWORD dwLuminanceBitMask;
1091       DWORD dwBumpDuBitMask;
1092       DWORD dwOperations;
1093    } DUMMYUNIONNAMEN(2);
1094    union
1095    {
1096       DWORD dwGBitMask;
1097       DWORD dwUBitMask;
1098       DWORD dwZBitMask;
1099       DWORD dwBumpDvBitMask;
1100       struct
1101       {
1102          WORD wFlipMSTypes;
1103          WORD wBltMSTypes;
1104       } MultiSampleCaps;
1105    } DUMMYUNIONNAMEN(3);
1106    union
1107    {
1108       DWORD dwBBitMask;
1109       DWORD dwVBitMask;
1110       DWORD dwStencilBitMask;
1111       DWORD dwBumpLuminanceBitMask;
1112    } DUMMYUNIONNAMEN(4);
1113    union
1114    {
1115       DWORD dwRGBAlphaBitMask;
1116       DWORD dwYUVAlphaBitMask;
1117       DWORD dwLuminanceAlphaBitMask;
1118       DWORD dwRGBZBitMask;
1119       DWORD dwYUVZBitMask;
1120    } DUMMYUNIONNAMEN(5);
1121 } DDPIXELFORMAT, *LPDDPIXELFORMAT;
1122 
1123 typedef struct _DDSURFACEDESC
1124 {
1125    DWORD dwSize;
1126    DWORD dwFlags;
1127    DWORD dwHeight;
1128    DWORD dwWidth;
1129    union
1130    {
1131       LONG lPitch;
1132       DWORD dwLinearSize;
1133    } DUMMYUNIONNAMEN(1);
1134    DWORD dwBackBufferCount;
1135    union
1136    {
1137       DWORD dwMipMapCount;
1138       DWORD dwZBufferBitDepth;
1139       DWORD dwRefreshRate;
1140    } DUMMYUNIONNAMEN(2);
1141    DWORD dwAlphaBitDepth;
1142    DWORD dwReserved;
1143    LPVOID lpSurface;
1144    DDCOLORKEY ddckCKDestOverlay;
1145    DDCOLORKEY ddckCKDestBlt;
1146    DDCOLORKEY ddckCKSrcOverlay;
1147    DDCOLORKEY ddckCKSrcBlt;
1148    DDPIXELFORMAT ddpfPixelFormat;
1149    DDSCAPS ddsCaps;
1150 } DDSURFACEDESC, *LPDDSURFACEDESC;
1151 
1152 typedef struct _DDSURFACEDESC2
1153 {
1154    DWORD dwSize;
1155    DWORD dwFlags;
1156    DWORD dwHeight;
1157    DWORD dwWidth;
1158    union
1159    {
1160       LONG lPitch;
1161       DWORD dwLinearSize;
1162    } DUMMYUNIONNAMEN(1);
1163    union
1164    {
1165       DWORD dwBackBufferCount;
1166       DWORD dwDepth;
1167    } DUMMYUNIONNAMEN(5);
1168    union
1169    {
1170       DWORD dwMipMapCount;
1171       DWORD dwRefreshRate;
1172       DWORD dwSrcVBHandle;
1173    } DUMMYUNIONNAMEN(2);
1174    DWORD dwAlphaBitDepth;
1175    DWORD dwReserved;
1176    LPVOID lpSurface;
1177    union
1178    {
1179       DDCOLORKEY ddckCKDestOverlay;
1180       DWORD dwEmptyFaceColor;
1181    } DUMMYUNIONNAMEN(3);
1182    DDCOLORKEY ddckCKDestBlt;
1183    DDCOLORKEY ddckCKSrcOverlay;
1184    DDCOLORKEY ddckCKSrcBlt;
1185    union
1186    {
1187       DDPIXELFORMAT ddpfPixelFormat;
1188       DWORD dwFVF;
1189    } DUMMYUNIONNAMEN(4);
1190    DDSCAPS2 ddsCaps;
1191    DWORD dwTextureStage;
1192 } DDSURFACEDESC2, *LPDDSURFACEDESC2;
1193 
1194 typedef struct _DDOPTSURFACEDESC
1195 {
1196    DWORD dwSize;
1197    DWORD dwFlags;
1198    DDSCAPS2 ddSCaps;
1199    DDOSCAPS ddOSCaps;
1200    GUID guid;
1201    DWORD dwCompressionRatio;
1202 } DDOPTSURFACEDESC;
1203 
1204 typedef struct _DDARGB
1205 {
1206     BYTE blue;
1207     BYTE green;
1208     BYTE red;
1209     BYTE alpha;
1210 } DDARGB, *LPDDARGB;
1211 
1212 typedef struct _DDRGBA
1213 {
1214     BYTE red;
1215     BYTE green;
1216     BYTE blue;
1217     BYTE alpha;
1218 } DDRGBA, *LPDDRGBA;
1219 
1220 
1221 #if (defined (WIN32) || defined( _WIN32 ) ) && !defined( _NO_COM )
1222   typedef BOOL (WINAPI *LPDDENUMCALLBACKA)(GUID *, LPSTR, LPSTR, LPVOID);
1223   typedef BOOL (WINAPI *LPDDENUMCALLBACKW)(GUID *, LPWSTR, LPWSTR, LPVOID);
1224   extern HRESULT WINAPI DirectDrawEnumerateW( LPDDENUMCALLBACKW lpCallback, LPVOID lpContext );
1225   extern HRESULT WINAPI DirectDrawEnumerateA( LPDDENUMCALLBACKA lpCallback, LPVOID lpContext );
1226 
1227   #if !defined(HMONITOR_DECLARED) && (WINVER < 0x0500)
1228         #define HMONITOR_DECLARED
1229         DECLARE_HANDLE(HMONITOR);
1230   #endif
1231 
1232   typedef BOOL (WINAPI *LPDDENUMCALLBACKEXA)(GUID *, LPSTR, LPSTR, LPVOID, HMONITOR);
1233   typedef BOOL (WINAPI *LPDDENUMCALLBACKEXW)(GUID *, LPWSTR, LPWSTR, LPVOID, HMONITOR);
1234 
1235   extern HRESULT WINAPI DirectDrawEnumerateExW( LPDDENUMCALLBACKEXW lpCallback, LPVOID lpContext, DWORD dwFlags);
1236   extern HRESULT WINAPI DirectDrawEnumerateExA( LPDDENUMCALLBACKEXA lpCallback, LPVOID lpContext, DWORD dwFlags);
1237 
1238   typedef HRESULT (WINAPI * LPDIRECTDRAWENUMERATEEXA)( LPDDENUMCALLBACKEXA lpCallback, LPVOID lpContext, DWORD dwFlags);
1239   typedef HRESULT (WINAPI * LPDIRECTDRAWENUMERATEEXW)( LPDDENUMCALLBACKEXW lpCallback, LPVOID lpContext, DWORD dwFlags);
1240 
1241   #ifdef UNICODE
1242     typedef LPDDENUMCALLBACKW        LPDDENUMCALLBACK;
1243     #define DirectDrawEnumerate      DirectDrawEnumerateW
1244     typedef LPDDENUMCALLBACKEXW      LPDDENUMCALLBACKEX;
1245     typedef LPDIRECTDRAWENUMERATEEXW LPDIRECTDRAWENUMERATEEX;
1246     #define DirectDrawEnumerateEx    DirectDrawEnumerateExW
1247   #else
1248     typedef LPDDENUMCALLBACKA        LPDDENUMCALLBACK;
1249     #define DirectDrawEnumerate      DirectDrawEnumerateA
1250     typedef LPDDENUMCALLBACKEXA      LPDDENUMCALLBACKEX;
1251     typedef LPDIRECTDRAWENUMERATEEXA LPDIRECTDRAWENUMERATEEX;
1252     #define DirectDrawEnumerateEx    DirectDrawEnumerateExA
1253   #endif
1254     extern HRESULT WINAPI DirectDrawCreate(GUID *lpGUID,LPDIRECTDRAW *lplpDD, IUnknown *pUnkOuter );
1255     extern HRESULT WINAPI DirectDrawCreateEx(GUID * lpGuid,LPVOID  *lplpDD,REFIID iid,IUnknown *pUnkOuter );
1256     extern HRESULT WINAPI DirectDrawCreateClipper(DWORD dwFlags,LPDIRECTDRAWCLIPPER *lplpDDClipper,IUnknown *pUnkOuter );
1257 #endif
1258 
1259 
1260 typedef HRESULT (WINAPI *LPDDENUMMODESCALLBACK)(LPDDSURFACEDESC, LPVOID);
1261 typedef HRESULT (WINAPI *LPDDENUMMODESCALLBACK2)(LPDDSURFACEDESC2, LPVOID);
1262 typedef HRESULT (WINAPI *LPDDENUMSURFACESCALLBACK)(LPDIRECTDRAWSURFACE, LPDDSURFACEDESC, LPVOID);
1263 typedef HRESULT (WINAPI *LPDDENUMSURFACESCALLBACK2)(LPDIRECTDRAWSURFACE4, LPDDSURFACEDESC2, LPVOID);
1264 typedef HRESULT (WINAPI *LPDDENUMSURFACESCALLBACK7)(LPDIRECTDRAWSURFACE7, LPDDSURFACEDESC2, LPVOID);
1265 
1266 typedef DWORD (*LPCLIPPERCALLBACK)(LPDIRECTDRAWCLIPPER lpDDClipper, HWND hWnd, DWORD code, LPVOID lpContext );
1267 #ifdef STREAMING
1268 typedef DWORD   (*LPSURFACESTREAMINGCALLBACK)(DWORD);
1269 #endif
1270 
1271 
1272 typedef struct _DDBLTFX
1273 {
1274    DWORD dwSize;
1275    DWORD dwDDFX;
1276    DWORD dwROP;
1277    DWORD dwDDROP;
1278    DWORD dwRotationAngle;
1279    DWORD dwZBufferOpCode;
1280    DWORD dwZBufferLow;
1281    DWORD dwZBufferHigh;
1282    DWORD dwZBufferBaseDest;
1283    DWORD dwZDestConstBitDepth;
1284    union
1285    {
1286       DWORD dwZDestConst;
1287       LPDIRECTDRAWSURFACE lpDDSZBufferDest;
1288    } DUMMYUNIONNAMEN(1);
1289    DWORD dwZSrcConstBitDepth;
1290    union
1291    {
1292       DWORD dwZSrcConst;
1293       LPDIRECTDRAWSURFACE lpDDSZBufferSrc;
1294    } DUMMYUNIONNAMEN(2);
1295    DWORD dwAlphaEdgeBlendBitDepth;
1296    DWORD dwAlphaEdgeBlend;
1297    DWORD dwReserved;
1298    DWORD dwAlphaDestConstBitDepth;
1299    union
1300    {
1301       DWORD dwAlphaDestConst;
1302       LPDIRECTDRAWSURFACE lpDDSAlphaDest;
1303    } DUMMYUNIONNAMEN(3);
1304    DWORD dwAlphaSrcConstBitDepth;
1305    union
1306    {
1307       DWORD dwAlphaSrcConst;
1308       LPDIRECTDRAWSURFACE lpDDSAlphaSrc;
1309    } DUMMYUNIONNAMEN(4);
1310    union
1311    {
1312       DWORD dwFillColor;
1313       DWORD dwFillDepth;
1314       DWORD dwFillPixel;
1315       LPDIRECTDRAWSURFACE lpDDSPattern;
1316    } DUMMYUNIONNAMEN(5);
1317    DDCOLORKEY ddckDestColorkey;
1318    DDCOLORKEY ddckSrcColorkey;
1319 } DDBLTFX, *LPDDBLTFX;
1320 
1321 typedef struct _DDGAMMARAMP
1322 {
1323    WORD red[256];
1324    WORD green[256];
1325    WORD blue[256];
1326 } DDGAMMARAMP, *LPDDGAMMARAMP;
1327 
1328 typedef struct tagDDDEVICEIDENTIFIER
1329 {
1330    char szDriver[MAX_DDDEVICEID_STRING];
1331    char szDescription[MAX_DDDEVICEID_STRING];
1332 #ifdef _WIN32
1333    LARGE_INTEGER liDriverVersion;
1334 #else
1335    DWORD dwDriverVersionLowPart;
1336    DWORD dwDriverVersionHighPart;
1337 #endif
1338    DWORD dwVendorId;
1339    DWORD dwDeviceId;
1340    DWORD dwSubSysId;
1341    DWORD dwRevision;
1342    GUID guidDeviceIdentifier;
1343 } DDDEVICEIDENTIFIER, * LPDDDEVICEIDENTIFIER;
1344 
1345 typedef struct tagDDDEVICEIDENTIFIER2
1346 {
1347    char szDriver[MAX_DDDEVICEID_STRING];
1348    char szDescription[MAX_DDDEVICEID_STRING];
1349 #ifdef _WIN32
1350    LARGE_INTEGER liDriverVersion;
1351 #else
1352    DWORD dwDriverVersionLowPart;
1353    DWORD dwDriverVersionHighPart;
1354 #endif
1355    DWORD dwVendorId;
1356    DWORD dwDeviceId;
1357    DWORD dwSubSysId;
1358    DWORD dwRevision;
1359    GUID guidDeviceIdentifier;
1360    DWORD dwWHQLLevel;
1361 } DDDEVICEIDENTIFIER2, *LPDDDEVICEIDENTIFIER2;
1362 
1363 typedef struct _DDBLTBATCH
1364 {
1365    LPRECT lprDest;
1366    LPDIRECTDRAWSURFACE lpDDSSrc;
1367    LPRECT lprSrc;
1368    DWORD dwFlags;
1369    LPDDBLTFX lpDDBltFx;
1370 } DDBLTBATCH, *LPDDBLTBATCH;
1371 
1372 typedef struct _DDOVERLAYFX
1373 {
1374    DWORD dwSize;
1375    DWORD dwAlphaEdgeBlendBitDepth;
1376    DWORD dwAlphaEdgeBlend;
1377    DWORD dwReserved;
1378    DWORD dwAlphaDestConstBitDepth;
1379    union
1380    {
1381       DWORD dwAlphaDestConst;
1382       LPDIRECTDRAWSURFACE lpDDSAlphaDest;
1383    } DUMMYUNIONNAMEN(1);
1384    DWORD dwAlphaSrcConstBitDepth;
1385    union
1386    {
1387       DWORD dwAlphaSrcConst;
1388       LPDIRECTDRAWSURFACE lpDDSAlphaSrc;
1389    } DUMMYUNIONNAMEN(2);
1390    DDCOLORKEY dckDestColorkey;
1391    DDCOLORKEY dckSrcColorkey;
1392    DWORD dwDDFX;
1393    DWORD dwFlags;
1394 } DDOVERLAYFX, *LPDDOVERLAYFX;
1395 
1396 
1397 
1398 #if defined( _WIN32 ) && !defined( _NO_COM )
1399     #undef INTERFACE
1400     #define INTERFACE IDirectDraw
1401 
DECLARE_INTERFACE_(IDirectDraw,IUnknown)1402     DECLARE_INTERFACE_( IDirectDraw, IUnknown )
1403     {
1404       STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID *ppvObj) PURE;
1405       STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
1406       STDMETHOD_(ULONG,Release) (THIS) PURE;
1407 
1408       STDMETHOD(Compact)(THIS) PURE;
1409       STDMETHOD(CreateClipper)(THIS_ DWORD, LPDIRECTDRAWCLIPPER *, IUnknown * ) PURE;
1410       STDMETHOD(CreatePalette)(THIS_ DWORD, LPPALETTEENTRY, LPDIRECTDRAWPALETTE *, IUnknown * ) PURE;
1411       STDMETHOD(CreateSurface)(THIS_  LPDDSURFACEDESC, LPDIRECTDRAWSURFACE *, IUnknown *) PURE;
1412       STDMETHOD(DuplicateSurface)( THIS_ LPDIRECTDRAWSURFACE, LPDIRECTDRAWSURFACE * ) PURE;
1413       STDMETHOD(EnumDisplayModes)( THIS_ DWORD, LPDDSURFACEDESC, LPVOID, LPDDENUMMODESCALLBACK ) PURE;
1414       STDMETHOD(EnumSurfaces)(THIS_ DWORD, LPDDSURFACEDESC, LPVOID,LPDDENUMSURFACESCALLBACK ) PURE;
1415       STDMETHOD(FlipToGDISurface)(THIS) PURE;
1416       STDMETHOD(GetCaps)( THIS_ LPDDCAPS, LPDDCAPS) PURE;
1417       STDMETHOD(GetDisplayMode)( THIS_ LPDDSURFACEDESC) PURE;
1418       STDMETHOD(GetFourCCCodes)(THIS_  LPDWORD, LPDWORD ) PURE;
1419       STDMETHOD(GetGDISurface)(THIS_ LPDIRECTDRAWSURFACE *) PURE;
1420       STDMETHOD(GetMonitorFrequency)(THIS_ LPDWORD) PURE;
1421       STDMETHOD(GetScanLine)(THIS_ LPDWORD) PURE;
1422       STDMETHOD(GetVerticalBlankStatus)(THIS_ LPBOOL ) PURE;
1423       STDMETHOD(Initialize)(THIS_ GUID *) PURE;
1424       STDMETHOD(RestoreDisplayMode)(THIS) PURE;
1425       STDMETHOD(SetCooperativeLevel)(THIS_ HWND, DWORD) PURE;
1426       STDMETHOD(SetDisplayMode)(THIS_ DWORD, DWORD,DWORD) PURE;
1427       STDMETHOD(WaitForVerticalBlank)(THIS_ DWORD, HANDLE ) PURE;
1428      };
1429 
1430      #if !defined(__cplusplus) || defined(CINTERFACE)
1431          #define IDirectDraw_QueryInterface(p, a, b)         (p)->lpVtbl->QueryInterface(p, a, b)
1432          #define IDirectDraw_AddRef(p)                       (p)->lpVtbl->AddRef(p)
1433          #define IDirectDraw_Release(p)                      (p)->lpVtbl->Release(p)
1434          #define IDirectDraw_Compact(p)                      (p)->lpVtbl->Compact(p)
1435          #define IDirectDraw_CreateClipper(p, a, b, c)       (p)->lpVtbl->CreateClipper(p, a, b, c)
1436          #define IDirectDraw_CreatePalette(p, a, b, c, d)    (p)->lpVtbl->CreatePalette(p, a, b, c, d)
1437          #define IDirectDraw_CreateSurface(p, a, b, c)       (p)->lpVtbl->CreateSurface(p, a, b, c)
1438          #define IDirectDraw_DuplicateSurface(p, a, b)       (p)->lpVtbl->DuplicateSurface(p, a, b)
1439          #define IDirectDraw_EnumDisplayModes(p, a, b, c, d) (p)->lpVtbl->EnumDisplayModes(p, a, b, c, d)
1440          #define IDirectDraw_EnumSurfaces(p, a, b, c, d)     (p)->lpVtbl->EnumSurfaces(p, a, b, c, d)
1441          #define IDirectDraw_FlipToGDISurface(p)             (p)->lpVtbl->FlipToGDISurface(p)
1442          #define IDirectDraw_GetCaps(p, a, b)                (p)->lpVtbl->GetCaps(p, a, b)
1443          #define IDirectDraw_GetDisplayMode(p, a)            (p)->lpVtbl->GetDisplayMode(p, a)
1444          #define IDirectDraw_GetFourCCCodes(p, a, b)         (p)->lpVtbl->GetFourCCCodes(p, a, b)
1445          #define IDirectDraw_GetGDISurface(p, a)             (p)->lpVtbl->GetGDISurface(p, a)
1446          #define IDirectDraw_GetMonitorFrequency(p, a)       (p)->lpVtbl->GetMonitorFrequency(p, a)
1447          #define IDirectDraw_GetScanLine(p, a)               (p)->lpVtbl->GetScanLine(p, a)
1448          #define IDirectDraw_GetVerticalBlankStatus(p, a)    (p)->lpVtbl->GetVerticalBlankStatus(p, a)
1449          #define IDirectDraw_Initialize(p, a)                (p)->lpVtbl->Initialize(p, a)
1450          #define IDirectDraw_RestoreDisplayMode(p)           (p)->lpVtbl->RestoreDisplayMode(p)
1451          #define IDirectDraw_SetCooperativeLevel(p, a, b)    (p)->lpVtbl->SetCooperativeLevel(p, a, b)
1452          #define IDirectDraw_SetDisplayMode(p, a, b, c)      (p)->lpVtbl->SetDisplayMode(p, a, b, c)
1453          #define IDirectDraw_WaitForVerticalBlank(p, a, b)   (p)->lpVtbl->WaitForVerticalBlank(p, a, b)
1454      #else
1455          #define IDirectDraw_QueryInterface(p, a, b)         (p)->QueryInterface(a, b)
1456          #define IDirectDraw_AddRef(p)                       (p)->AddRef()
1457          #define IDirectDraw_Release(p)                      (p)->Release()
1458          #define IDirectDraw_Compact(p)                      (p)->Compact()
1459          #define IDirectDraw_CreateClipper(p, a, b, c)       (p)->CreateClipper(a, b, c)
1460          #define IDirectDraw_CreatePalette(p, a, b, c, d)    (p)->CreatePalette(a, b, c, d)
1461          #define IDirectDraw_CreateSurface(p, a, b, c)       (p)->CreateSurface(a, b, c)
1462          #define IDirectDraw_DuplicateSurface(p, a, b)       (p)->DuplicateSurface(a, b)
1463          #define IDirectDraw_EnumDisplayModes(p, a, b, c, d) (p)->EnumDisplayModes(a, b, c, d)
1464          #define IDirectDraw_EnumSurfaces(p, a, b, c, d)     (p)->EnumSurfaces(a, b, c, d)
1465          #define IDirectDraw_FlipToGDISurface(p)             (p)->FlipToGDISurface()
1466          #define IDirectDraw_GetCaps(p, a, b)                (p)->GetCaps(a, b)
1467          #define IDirectDraw_GetDisplayMode(p, a)            (p)->GetDisplayMode(a)
1468          #define IDirectDraw_GetFourCCCodes(p, a, b)         (p)->GetFourCCCodes(a, b)
1469          #define IDirectDraw_GetGDISurface(p, a)             (p)->GetGDISurface(a)
1470          #define IDirectDraw_GetMonitorFrequency(p, a)       (p)->GetMonitorFrequency(a)
1471          #define IDirectDraw_GetScanLine(p, a)               (p)->GetScanLine(a)
1472          #define IDirectDraw_GetVerticalBlankStatus(p, a)    (p)->GetVerticalBlankStatus(a)
1473          #define IDirectDraw_Initialize(p, a)                (p)->Initialize(a)
1474          #define IDirectDraw_RestoreDisplayMode(p)           (p)->RestoreDisplayMode()
1475          #define IDirectDraw_SetCooperativeLevel(p, a, b)    (p)->SetCooperativeLevel(a, b)
1476          #define IDirectDraw_SetDisplayMode(p, a, b, c)      (p)->SetDisplayMode(a, b, c)
1477          #define IDirectDraw_WaitForVerticalBlank(p, a, b)   (p)->WaitForVerticalBlank(a, b)
1478      #endif
1479 #endif
1480 
1481 #if defined( _WIN32 ) && !defined( _NO_COM )
1482     #undef INTERFACE
1483     #define INTERFACE IDirectDraw2
DECLARE_INTERFACE_(IDirectDraw2,IUnknown)1484     DECLARE_INTERFACE_( IDirectDraw2, IUnknown )
1485     {
1486       STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE;
1487       STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
1488       STDMETHOD_(ULONG,Release) (THIS) PURE;
1489       STDMETHOD(Compact)(THIS) PURE;
1490       STDMETHOD(CreateClipper)(THIS_ DWORD, LPDIRECTDRAWCLIPPER *, IUnknown  * ) PURE;
1491       STDMETHOD(CreatePalette)(THIS_ DWORD, LPPALETTEENTRY, LPDIRECTDRAWPALETTE *, IUnknown * ) PURE;
1492       STDMETHOD(CreateSurface)(THIS_  LPDDSURFACEDESC, LPDIRECTDRAWSURFACE *, IUnknown *) PURE;
1493       STDMETHOD(DuplicateSurface)( THIS_ LPDIRECTDRAWSURFACE, LPDIRECTDRAWSURFACE * ) PURE;
1494       STDMETHOD(EnumDisplayModes)( THIS_ DWORD, LPDDSURFACEDESC, LPVOID, LPDDENUMMODESCALLBACK ) PURE;
1495       STDMETHOD(EnumSurfaces)(THIS_ DWORD, LPDDSURFACEDESC, LPVOID,LPDDENUMSURFACESCALLBACK ) PURE;
1496       STDMETHOD(FlipToGDISurface)(THIS) PURE;
1497       STDMETHOD(GetCaps)( THIS_ LPDDCAPS, LPDDCAPS) PURE;
1498       STDMETHOD(GetDisplayMode)( THIS_ LPDDSURFACEDESC) PURE;
1499       STDMETHOD(GetFourCCCodes)(THIS_  LPDWORD, LPDWORD ) PURE;
1500       STDMETHOD(GetGDISurface)(THIS_ LPDIRECTDRAWSURFACE *) PURE;
1501       STDMETHOD(GetMonitorFrequency)(THIS_ LPDWORD) PURE;
1502       STDMETHOD(GetScanLine)(THIS_ LPDWORD) PURE;
1503       STDMETHOD(GetVerticalBlankStatus)(THIS_ LPBOOL ) PURE;
1504       STDMETHOD(Initialize)(THIS_ GUID *) PURE;
1505       STDMETHOD(RestoreDisplayMode)(THIS) PURE;
1506       STDMETHOD(SetCooperativeLevel)(THIS_ HWND, DWORD) PURE;
1507       STDMETHOD(SetDisplayMode)(THIS_ DWORD, DWORD,DWORD, DWORD, DWORD) PURE;
1508       STDMETHOD(WaitForVerticalBlank)(THIS_ DWORD, HANDLE ) PURE;
1509       STDMETHOD(GetAvailableVidMem)(THIS_ LPDDSCAPS, LPDWORD, LPDWORD) PURE;
1510      };
1511 
1512      #if !defined(__cplusplus) || defined(CINTERFACE)
1513          #define IDirectDraw2_QueryInterface(p, a, b)         (p)->lpVtbl->QueryInterface(p, a, b)
1514          #define IDirectDraw2_AddRef(p)                       (p)->lpVtbl->AddRef(p)
1515          #define IDirectDraw2_Release(p)                      (p)->lpVtbl->Release(p)
1516          #define IDirectDraw2_Compact(p)                      (p)->lpVtbl->Compact(p)
1517          #define IDirectDraw2_CreateClipper(p, a, b, c)       (p)->lpVtbl->CreateClipper(p, a, b, c)
1518          #define IDirectDraw2_CreatePalette(p, a, b, c, d)    (p)->lpVtbl->CreatePalette(p, a, b, c, d)
1519          #define IDirectDraw2_CreateSurface(p, a, b, c)       (p)->lpVtbl->CreateSurface(p, a, b, c)
1520          #define IDirectDraw2_DuplicateSurface(p, a, b)       (p)->lpVtbl->DuplicateSurface(p, a, b)
1521          #define IDirectDraw2_EnumDisplayModes(p, a, b, c, d) (p)->lpVtbl->EnumDisplayModes(p, a, b, c, d)
1522          #define IDirectDraw2_EnumSurfaces(p, a, b, c, d)     (p)->lpVtbl->EnumSurfaces(p, a, b, c, d)
1523          #define IDirectDraw2_FlipToGDISurface(p)             (p)->lpVtbl->FlipToGDISurface(p)
1524          #define IDirectDraw2_GetCaps(p, a, b)                (p)->lpVtbl->GetCaps(p, a, b)
1525          #define IDirectDraw2_GetDisplayMode(p, a)            (p)->lpVtbl->GetDisplayMode(p, a)
1526          #define IDirectDraw2_GetFourCCCodes(p, a, b)         (p)->lpVtbl->GetFourCCCodes(p, a, b)
1527          #define IDirectDraw2_GetGDISurface(p, a)             (p)->lpVtbl->GetGDISurface(p, a)
1528          #define IDirectDraw2_GetMonitorFrequency(p, a)       (p)->lpVtbl->GetMonitorFrequency(p, a)
1529          #define IDirectDraw2_GetScanLine(p, a)               (p)->lpVtbl->GetScanLine(p, a)
1530          #define IDirectDraw2_GetVerticalBlankStatus(p, a)    (p)->lpVtbl->GetVerticalBlankStatus(p, a)
1531          #define IDirectDraw2_Initialize(p, a)                (p)->lpVtbl->Initialize(p, a)
1532          #define IDirectDraw2_RestoreDisplayMode(p)           (p)->lpVtbl->RestoreDisplayMode(p)
1533          #define IDirectDraw2_SetCooperativeLevel(p, a, b)    (p)->lpVtbl->SetCooperativeLevel(p, a, b)
1534          #define IDirectDraw2_SetDisplayMode(p, a, b, c, d, e) (p)->lpVtbl->SetDisplayMode(p, a, b, c, d, e)
1535          #define IDirectDraw2_WaitForVerticalBlank(p, a, b)   (p)->lpVtbl->WaitForVerticalBlank(p, a, b)
1536          #define IDirectDraw2_GetAvailableVidMem(p, a, b, c)  (p)->lpVtbl->GetAvailableVidMem(p, a, b, c)
1537      #else
1538          #define IDirectDraw2_QueryInterface(p, a, b)         (p)->QueryInterface(a, b)
1539          #define IDirectDraw2_AddRef(p)                       (p)->AddRef()
1540          #define IDirectDraw2_Release(p)                      (p)->Release()
1541          #define IDirectDraw2_Compact(p)                      (p)->Compact()
1542          #define IDirectDraw2_CreateClipper(p, a, b, c)       (p)->CreateClipper(a, b, c)
1543          #define IDirectDraw2_CreatePalette(p, a, b, c, d)    (p)->CreatePalette(a, b, c, d)
1544          #define IDirectDraw2_CreateSurface(p, a, b, c)       (p)->CreateSurface(a, b, c)
1545          #define IDirectDraw2_DuplicateSurface(p, a, b)       (p)->DuplicateSurface(a, b)
1546          #define IDirectDraw2_EnumDisplayModes(p, a, b, c, d) (p)->EnumDisplayModes(a, b, c, d)
1547          #define IDirectDraw2_EnumSurfaces(p, a, b, c, d)     (p)->EnumSurfaces(a, b, c, d)
1548          #define IDirectDraw2_FlipToGDISurface(p)             (p)->FlipToGDISurface()
1549          #define IDirectDraw2_GetCaps(p, a, b)                (p)->GetCaps(a, b)
1550          #define IDirectDraw2_GetDisplayMode(p, a)            (p)->GetDisplayMode(a)
1551          #define IDirectDraw2_GetFourCCCodes(p, a, b)         (p)->GetFourCCCodes(a, b)
1552          #define IDirectDraw2_GetGDISurface(p, a)             (p)->GetGDISurface(a)
1553          #define IDirectDraw2_GetMonitorFrequency(p, a)       (p)->GetMonitorFrequency(a)
1554          #define IDirectDraw2_GetScanLine(p, a)               (p)->GetScanLine(a)
1555          #define IDirectDraw2_GetVerticalBlankStatus(p, a)    (p)->GetVerticalBlankStatus(a)
1556          #define IDirectDraw2_Initialize(p, a)                (p)->Initialize(a)
1557          #define IDirectDraw2_RestoreDisplayMode(p)           (p)->RestoreDisplayMode()
1558          #define IDirectDraw2_SetCooperativeLevel(p, a, b)    (p)->SetCooperativeLevel(a, b)
1559          #define IDirectDraw2_SetDisplayMode(p, a, b, c, d, e) (p)->SetDisplayMode(a, b, c, d, e)
1560          #define IDirectDraw2_WaitForVerticalBlank(p, a, b)   (p)->WaitForVerticalBlank(a, b)
1561          #define IDirectDraw2_GetAvailableVidMem(p, a, b, c)  (p)->GetAvailableVidMem(a, b, c)
1562      #endif
1563 #endif
1564 
1565 #if defined( _WIN32 ) && !defined( _NO_COM )
1566     #undef INTERFACE
1567     #define INTERFACE IDirectDraw3
DECLARE_INTERFACE_(IDirectDraw3,IUnknown)1568     DECLARE_INTERFACE_(IDirectDraw3,IUnknown)
1569     {
1570         STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE;
1571         STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
1572         STDMETHOD_(ULONG,Release) (THIS) PURE;
1573         STDMETHOD(Compact)(THIS) PURE;
1574         STDMETHOD(CreateClipper)(THIS_ DWORD, LPDIRECTDRAWCLIPPER *, IUnknown  * ) PURE;
1575         STDMETHOD(CreatePalette)(THIS_ DWORD, LPPALETTEENTRY, LPDIRECTDRAWPALETTE *, IUnknown * ) PURE;
1576         STDMETHOD(CreateSurface)(THIS_  LPDDSURFACEDESC, LPDIRECTDRAWSURFACE *, IUnknown *) PURE;
1577         STDMETHOD(DuplicateSurface)( THIS_ LPDIRECTDRAWSURFACE, LPDIRECTDRAWSURFACE * ) PURE;
1578         STDMETHOD(EnumDisplayModes)( THIS_ DWORD, LPDDSURFACEDESC, LPVOID, LPDDENUMMODESCALLBACK ) PURE;
1579         STDMETHOD(EnumSurfaces)(THIS_ DWORD, LPDDSURFACEDESC, LPVOID,LPDDENUMSURFACESCALLBACK ) PURE;
1580         STDMETHOD(FlipToGDISurface)(THIS) PURE;
1581         STDMETHOD(GetCaps)( THIS_ LPDDCAPS, LPDDCAPS) PURE;
1582         STDMETHOD(GetDisplayMode)( THIS_ LPDDSURFACEDESC) PURE;
1583         STDMETHOD(GetFourCCCodes)(THIS_  LPDWORD, LPDWORD ) PURE;
1584         STDMETHOD(GetGDISurface)(THIS_ LPDIRECTDRAWSURFACE *) PURE;
1585         STDMETHOD(GetMonitorFrequency)(THIS_ LPDWORD) PURE;
1586         STDMETHOD(GetScanLine)(THIS_ LPDWORD) PURE;
1587         STDMETHOD(GetVerticalBlankStatus)(THIS_ LPBOOL ) PURE;
1588         STDMETHOD(Initialize)(THIS_ GUID *) PURE;
1589         STDMETHOD(RestoreDisplayMode)(THIS) PURE;
1590         STDMETHOD(SetCooperativeLevel)(THIS_ HWND, DWORD) PURE;
1591         STDMETHOD(SetDisplayMode)(THIS_ DWORD, DWORD,DWORD, DWORD, DWORD) PURE;
1592         STDMETHOD(WaitForVerticalBlank)(THIS_ DWORD, HANDLE ) PURE;
1593         STDMETHOD(GetAvailableVidMem)(THIS_ LPDDSCAPS, LPDWORD, LPDWORD) PURE;
1594         STDMETHOD(GetSurfaceFromDC)(THIS_ HDC, LPDIRECTDRAWSURFACE*) PURE;
1595 };
1596 
1597     #if !defined(__cplusplus) || defined(CINTERFACE)
1598         #define IDirectDraw3_QueryInterface(p,a,b)          (p)->lpVtbl->QueryInterface(p,a,b)
1599         #define IDirectDraw3_AddRef(p)                      (p)->lpVtbl->AddRef(p)
1600         #define IDirectDraw3_Release(p)                     (p)->lpVtbl->Release(p)
1601         #define IDirectDraw3_Compact(p)                     (p)->lpVtbl->Compact(p)
1602         #define IDirectDraw3_CreateClipper(p,a,b,c)         (p)->lpVtbl->CreateClipper(p,a,b,c)
1603         #define IDirectDraw3_CreatePalette(p,a,b,c,d)       (p)->lpVtbl->CreatePalette(p,a,b,c,d)
1604         #define IDirectDraw3_CreateSurface(p,a,b,c)         (p)->lpVtbl->CreateSurface(p,a,b,c)
1605         #define IDirectDraw3_DuplicateSurface(p,a,b)        (p)->lpVtbl->DuplicateSurface(p,a,b)
1606         #define IDirectDraw3_EnumDisplayModes(p,a,b,c,d)    (p)->lpVtbl->EnumDisplayModes(p,a,b,c,d)
1607         #define IDirectDraw3_EnumSurfaces(p,a,b,c,d)        (p)->lpVtbl->EnumSurfaces(p,a,b,c,d)
1608         #define IDirectDraw3_FlipToGDISurface(p)            (p)->lpVtbl->FlipToGDISurface(p)
1609         #define IDirectDraw3_GetCaps(p,a,b)                 (p)->lpVtbl->GetCaps(p,a,b)
1610         #define IDirectDraw3_GetDisplayMode(p,a)            (p)->lpVtbl->GetDisplayMode(p,a)
1611         #define IDirectDraw3_GetFourCCCodes(p,a,b)          (p)->lpVtbl->GetFourCCCodes(p,a,b)
1612         #define IDirectDraw3_GetGDISurface(p,a)             (p)->lpVtbl->GetGDISurface(p,a)
1613         #define IDirectDraw3_GetMonitorFrequency(p,a)       (p)->lpVtbl->GetMonitorFrequency(p,a)
1614         #define IDirectDraw3_GetScanLine(p,a)               (p)->lpVtbl->GetScanLine(p,a)
1615         #define IDirectDraw3_GetVerticalBlankStatus(p,a)    (p)->lpVtbl->GetVerticalBlankStatus(p,a)
1616         #define IDirectDraw3_Initialize(p,a)                (p)->lpVtbl->Initialize(p,a)
1617         #define IDirectDraw3_RestoreDisplayMode(p)          (p)->lpVtbl->RestoreDisplayMode(p)
1618         #define IDirectDraw3_SetCooperativeLevel(p,a,b)     (p)->lpVtbl->SetCooperativeLevel(p,a,b)
1619         #define IDirectDraw3_SetDisplayMode(p,a,b,c,d,e)    (p)->lpVtbl->SetDisplayMode(p,a,b,c,d,e)
1620         #define IDirectDraw3_WaitForVerticalBlank(p,a,b)    (p)->lpVtbl->WaitForVerticalBlank(p,a,b)
1621         #define IDirectDraw3_GetAvailableVidMem(p,a,b,c)    (p)->lpVtbl->GetAvailableVidMem(p,a,b,c)
1622         #define IDirectDraw3_GetSurfaceFromDC(p,a,b)        (p)->lpVtbl->GetSurfaceFromDC(p,a,b)
1623     #else
1624         #define IDirectDraw3_QueryInterface(p,a,b)          (p)->QueryInterface(a,b)
1625         #define IDirectDraw3_AddRef(p)                      (p)->AddRef()
1626         #define IDirectDraw3_Release(p)                     (p)->Release()
1627         #define IDirectDraw3_Compact(p)                     (p)->Compact()
1628         #define IDirectDraw3_CreateClipper(p,a,b,c)         (p)->CreateClipper(a,b,c)
1629         #define IDirectDraw3_CreatePalette(p,a,b,c,d)       (p)->CreatePalette(a,b,c,d)
1630         #define IDirectDraw3_CreateSurface(p,a,b,c)         (p)->CreateSurface(a,b,c)
1631         #define IDirectDraw3_DuplicateSurface(p,a,b)        (p)->DuplicateSurface(a,b)
1632         #define IDirectDraw3_EnumDisplayModes(p,a,b,c,d)    (p)->EnumDisplayModes(a,b,c,d)
1633         #define IDirectDraw3_EnumSurfaces(p,a,b,c,d)        (p)->EnumSurfaces(a,b,c,d)
1634         #define IDirectDraw3_FlipToGDISurface(p)            (p)->FlipToGDISurface()
1635         #define IDirectDraw3_GetCaps(p,a,b)                 (p)->GetCaps(a,b)
1636         #define IDirectDraw3_GetDisplayMode(p,a)            (p)->GetDisplayMode(a)
1637         #define IDirectDraw3_GetFourCCCodes(p,a,b)          (p)->GetFourCCCodes(a,b)
1638         #define IDirectDraw3_GetGDISurface(p,a)             (p)->GetGDISurface(a)
1639         #define IDirectDraw3_GetMonitorFrequency(p,a)       (p)->GetMonitorFrequency(a)
1640         #define IDirectDraw3_GetScanLine(p,a)               (p)->GetScanLine(a)
1641         #define IDirectDraw3_GetVerticalBlankStatus(p,a)    (p)->GetVerticalBlankStatus(a)
1642         #define IDirectDraw3_Initialize(p,a)                (p)->Initialize(a)
1643         #define IDirectDraw3_RestoreDisplayMode(p)          (p)->RestoreDisplayMode()
1644         #define IDirectDraw3_SetCooperativeLevel(p,a,b)     (p)->SetCooperativeLevel(a,b)
1645         #define IDirectDraw3_SetDisplayMode(p,a,b,c,d,e)    (p)->SetDisplayMode(a,b,c,d,e)
1646         #define IDirectDraw3_WaitForVerticalBlank(p,a,b)    (p)->WaitForVerticalBlank(a,b)
1647         #define IDirectDraw3_GetAvailableVidMem(p,a,b,c)    (p)->GetAvailableVidMem(a,b,c)
1648         #define IDirectDraw3_GetSurfaceFromDC(p,a,b)        (p)->GetSurfaceFromDC(a,b)
1649     #endif
1650 #endif
1651 
1652 
1653 #if defined( _WIN32 ) && !defined( _NO_COM )
1654     #undef INTERFACE
1655     #define INTERFACE IDirectDraw4
1656 
DECLARE_INTERFACE_(IDirectDraw4,IUnknown)1657     DECLARE_INTERFACE_( IDirectDraw4, IUnknown )
1658     {
1659       STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE;
1660       STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
1661       STDMETHOD_(ULONG,Release) (THIS) PURE;
1662       STDMETHOD(Compact)(THIS) PURE;
1663       STDMETHOD(CreateClipper)(THIS_ DWORD, LPDIRECTDRAWCLIPPER *, IUnknown * ) PURE;
1664       STDMETHOD(CreatePalette)(THIS_ DWORD, LPPALETTEENTRY, LPDIRECTDRAWPALETTE *, IUnknown * ) PURE;
1665       STDMETHOD(CreateSurface)(THIS_  LPDDSURFACEDESC2, LPDIRECTDRAWSURFACE4 *, IUnknown *) PURE;
1666       STDMETHOD(DuplicateSurface)( THIS_ LPDIRECTDRAWSURFACE4, LPDIRECTDRAWSURFACE4 * ) PURE;
1667       STDMETHOD(EnumDisplayModes)( THIS_ DWORD, LPDDSURFACEDESC2, LPVOID, LPDDENUMMODESCALLBACK2 ) PURE;
1668       STDMETHOD(EnumSurfaces)(THIS_ DWORD, LPDDSURFACEDESC2, LPVOID,LPDDENUMSURFACESCALLBACK2 ) PURE;
1669       STDMETHOD(FlipToGDISurface)(THIS) PURE;
1670       STDMETHOD(GetCaps)( THIS_ LPDDCAPS, LPDDCAPS) PURE;
1671       STDMETHOD(GetDisplayMode)( THIS_ LPDDSURFACEDESC2) PURE;
1672       STDMETHOD(GetFourCCCodes)(THIS_  LPDWORD, LPDWORD ) PURE;
1673       STDMETHOD(GetGDISurface)(THIS_ LPDIRECTDRAWSURFACE4 *) PURE;
1674       STDMETHOD(GetMonitorFrequency)(THIS_ LPDWORD) PURE;
1675       STDMETHOD(GetScanLine)(THIS_ LPDWORD) PURE;
1676       STDMETHOD(GetVerticalBlankStatus)(THIS_ LPBOOL ) PURE;
1677       STDMETHOD(Initialize)(THIS_ GUID *) PURE;
1678       STDMETHOD(RestoreDisplayMode)(THIS) PURE;
1679       STDMETHOD(SetCooperativeLevel)(THIS_ HWND, DWORD) PURE;
1680       STDMETHOD(SetDisplayMode)(THIS_ DWORD, DWORD,DWORD, DWORD, DWORD) PURE;
1681       STDMETHOD(WaitForVerticalBlank)(THIS_ DWORD, HANDLE ) PURE;
1682       STDMETHOD(GetAvailableVidMem)(THIS_ LPDDSCAPS2, LPDWORD, LPDWORD) PURE;
1683       STDMETHOD(GetSurfaceFromDC) (THIS_ HDC, LPDIRECTDRAWSURFACE4 *) PURE;
1684       STDMETHOD(RestoreAllSurfaces)(THIS) PURE;
1685       STDMETHOD(TestCooperativeLevel)(THIS) PURE;
1686       STDMETHOD(GetDeviceIdentifier)(THIS_ LPDDDEVICEIDENTIFIER, DWORD ) PURE;
1687      };
1688 #if !defined(__cplusplus) || defined(CINTERFACE)
1689          #define IDirectDraw4_QueryInterface(p, a, b)         (p)->lpVtbl->QueryInterface(p, a, b)
1690          #define IDirectDraw4_AddRef(p)                       (p)->lpVtbl->AddRef(p)
1691          #define IDirectDraw4_Release(p)                      (p)->lpVtbl->Release(p)
1692          #define IDirectDraw4_Compact(p)                      (p)->lpVtbl->Compact(p)
1693          #define IDirectDraw4_CreateClipper(p, a, b, c)       (p)->lpVtbl->CreateClipper(p, a, b, c)
1694          #define IDirectDraw4_CreatePalette(p, a, b, c, d)    (p)->lpVtbl->CreatePalette(p, a, b, c, d)
1695          #define IDirectDraw4_CreateSurface(p, a, b, c)       (p)->lpVtbl->CreateSurface(p, a, b, c)
1696          #define IDirectDraw4_DuplicateSurface(p, a, b)       (p)->lpVtbl->DuplicateSurface(p, a, b)
1697          #define IDirectDraw4_EnumDisplayModes(p, a, b, c, d) (p)->lpVtbl->EnumDisplayModes(p, a, b, c, d)
1698          #define IDirectDraw4_EnumSurfaces(p, a, b, c, d)     (p)->lpVtbl->EnumSurfaces(p, a, b, c, d)
1699          #define IDirectDraw4_FlipToGDISurface(p)             (p)->lpVtbl->FlipToGDISurface(p)
1700          #define IDirectDraw4_GetCaps(p, a, b)                (p)->lpVtbl->GetCaps(p, a, b)
1701          #define IDirectDraw4_GetDisplayMode(p, a)            (p)->lpVtbl->GetDisplayMode(p, a)
1702          #define IDirectDraw4_GetFourCCCodes(p, a, b)         (p)->lpVtbl->GetFourCCCodes(p, a, b)
1703          #define IDirectDraw4_GetGDISurface(p, a)             (p)->lpVtbl->GetGDISurface(p, a)
1704          #define IDirectDraw4_GetMonitorFrequency(p, a)       (p)->lpVtbl->GetMonitorFrequency(p, a)
1705          #define IDirectDraw4_GetScanLine(p, a)               (p)->lpVtbl->GetScanLine(p, a)
1706          #define IDirectDraw4_GetVerticalBlankStatus(p, a)    (p)->lpVtbl->GetVerticalBlankStatus(p, a)
1707          #define IDirectDraw4_Initialize(p, a)                (p)->lpVtbl->Initialize(p, a)
1708          #define IDirectDraw4_RestoreDisplayMode(p)           (p)->lpVtbl->RestoreDisplayMode(p)
1709          #define IDirectDraw4_SetCooperativeLevel(p, a, b)    (p)->lpVtbl->SetCooperativeLevel(p, a, b)
1710          #define IDirectDraw4_SetDisplayMode(p, a, b, c, d, e) (p)->lpVtbl->SetDisplayMode(p, a, b, c, d, e)
1711          #define IDirectDraw4_WaitForVerticalBlank(p, a, b)   (p)->lpVtbl->WaitForVerticalBlank(p, a, b)
1712          #define IDirectDraw4_GetAvailableVidMem(p, a, b, c)  (p)->lpVtbl->GetAvailableVidMem(p, a, b, c)
1713          #define IDirectDraw4_GetSurfaceFromDC(p, a, b)       (p)->lpVtbl->GetSurfaceFromDC(p, a, b)
1714          #define IDirectDraw4_RestoreAllSurfaces(p)           (p)->lpVtbl->RestoreAllSurfaces(p)
1715          #define IDirectDraw4_TestCooperativeLevel(p)         (p)->lpVtbl->TestCooperativeLevel(p)
1716          #define IDirectDraw4_GetDeviceIdentifier(p,a,b)      (p)->lpVtbl->GetDeviceIdentifier(p,a,b)
1717      #else
1718          #define IDirectDraw4_QueryInterface(p, a, b)         (p)->QueryInterface(a, b)
1719          #define IDirectDraw4_AddRef(p)                       (p)->AddRef()
1720          #define IDirectDraw4_Release(p)                      (p)->Release()
1721          #define IDirectDraw4_Compact(p)                      (p)->Compact()
1722          #define IDirectDraw4_CreateClipper(p, a, b, c)       (p)->CreateClipper(a, b, c)
1723          #define IDirectDraw4_CreatePalette(p, a, b, c, d)    (p)->CreatePalette(a, b, c, d)
1724          #define IDirectDraw4_CreateSurface(p, a, b, c)       (p)->CreateSurface(a, b, c)
1725          #define IDirectDraw4_DuplicateSurface(p, a, b)       (p)->DuplicateSurface(a, b)
1726          #define IDirectDraw4_EnumDisplayModes(p, a, b, c, d) (p)->EnumDisplayModes(a, b, c, d)
1727          #define IDirectDraw4_EnumSurfaces(p, a, b, c, d)     (p)->EnumSurfaces(a, b, c, d)
1728          #define IDirectDraw4_FlipToGDISurface(p)             (p)->FlipToGDISurface()
1729          #define IDirectDraw4_GetCaps(p, a, b)                (p)->GetCaps(a, b)
1730          #define IDirectDraw4_GetDisplayMode(p, a)            (p)->GetDisplayMode(a)
1731          #define IDirectDraw4_GetFourCCCodes(p, a, b)         (p)->GetFourCCCodes(a, b)
1732          #define IDirectDraw4_GetGDISurface(p, a)             (p)->GetGDISurface(a)
1733          #define IDirectDraw4_GetMonitorFrequency(p, a)       (p)->GetMonitorFrequency(a)
1734          #define IDirectDraw4_GetScanLine(p, a)               (p)->GetScanLine(a)
1735          #define IDirectDraw4_GetVerticalBlankStatus(p, a)    (p)->GetVerticalBlankStatus(a)
1736          #define IDirectDraw4_Initialize(p, a)                (p)->Initialize(a)
1737          #define IDirectDraw4_RestoreDisplayMode(p)           (p)->RestoreDisplayMode()
1738          #define IDirectDraw4_SetCooperativeLevel(p, a, b)    (p)->SetCooperativeLevel(a, b)
1739          #define IDirectDraw4_SetDisplayMode(p, a, b, c, d, e) (p)->SetDisplayMode(a, b, c, d, e)
1740          #define IDirectDraw4_WaitForVerticalBlank(p, a, b)   (p)->WaitForVerticalBlank(a, b)
1741          #define IDirectDraw4_GetAvailableVidMem(p, a, b, c)  (p)->GetAvailableVidMem(a, b, c)
1742          #define IDirectDraw4_GetSurfaceFromDC(p, a, b)       (p)->GetSurfaceFromDC(a, b)
1743          #define IDirectDraw4_RestoreAllSurfaces(p)           (p)->RestoreAllSurfaces()
1744          #define IDirectDraw4_TestCooperativeLevel(p)         (p)->TestCooperativeLevel()
1745          #define IDirectDraw4_GetDeviceIdentifier(p,a,b)      (p)->GetDeviceIdentifier(a,b)
1746      #endif
1747 #endif
1748 
1749 #if defined( _WIN32 ) && !defined( _NO_COM )
1750     #undef INTERFACE
1751     #define INTERFACE IDirectDraw7
1752 
DECLARE_INTERFACE_(IDirectDraw7,IUnknown)1753     DECLARE_INTERFACE_( IDirectDraw7, IUnknown )
1754     {
1755       STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE;
1756       STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
1757       STDMETHOD_(ULONG,Release) (THIS) PURE;
1758       STDMETHOD(Compact)(THIS) PURE;
1759       STDMETHOD(CreateClipper)(THIS_ DWORD, LPDIRECTDRAWCLIPPER *, IUnknown * ) PURE;
1760       STDMETHOD(CreatePalette)(THIS_ DWORD, LPPALETTEENTRY, LPDIRECTDRAWPALETTE *, IUnknown * ) PURE;
1761       STDMETHOD(CreateSurface)(THIS_  LPDDSURFACEDESC2, LPDIRECTDRAWSURFACE7 *, IUnknown *) PURE;
1762       STDMETHOD(DuplicateSurface)( THIS_ LPDIRECTDRAWSURFACE7, LPDIRECTDRAWSURFACE7 * ) PURE;
1763       STDMETHOD(EnumDisplayModes)( THIS_ DWORD, LPDDSURFACEDESC2, LPVOID, LPDDENUMMODESCALLBACK2 ) PURE;
1764       STDMETHOD(EnumSurfaces)(THIS_ DWORD, LPDDSURFACEDESC2, LPVOID,LPDDENUMSURFACESCALLBACK7 ) PURE;
1765       STDMETHOD(FlipToGDISurface)(THIS) PURE;
1766       STDMETHOD(GetCaps)( THIS_ LPDDCAPS, LPDDCAPS) PURE;
1767       STDMETHOD(GetDisplayMode)( THIS_ LPDDSURFACEDESC2) PURE;
1768       STDMETHOD(GetFourCCCodes)(THIS_  LPDWORD, LPDWORD ) PURE;
1769       STDMETHOD(GetGDISurface)(THIS_ LPDIRECTDRAWSURFACE7 *) PURE;
1770       STDMETHOD(GetMonitorFrequency)(THIS_ LPDWORD) PURE;
1771       STDMETHOD(GetScanLine)(THIS_ LPDWORD) PURE;
1772       STDMETHOD(GetVerticalBlankStatus)(THIS_ LPBOOL ) PURE;
1773       STDMETHOD(Initialize)(THIS_ GUID *) PURE;
1774       STDMETHOD(RestoreDisplayMode)(THIS) PURE;
1775       STDMETHOD(SetCooperativeLevel)(THIS_ HWND, DWORD) PURE;
1776       STDMETHOD(SetDisplayMode)(THIS_ DWORD, DWORD,DWORD, DWORD, DWORD) PURE;
1777       STDMETHOD(WaitForVerticalBlank)(THIS_ DWORD, HANDLE ) PURE;
1778       STDMETHOD(GetAvailableVidMem)(THIS_ LPDDSCAPS2, LPDWORD, LPDWORD) PURE;
1779       STDMETHOD(GetSurfaceFromDC) (THIS_ HDC, LPDIRECTDRAWSURFACE7 *) PURE;
1780       STDMETHOD(RestoreAllSurfaces)(THIS) PURE;
1781       STDMETHOD(TestCooperativeLevel)(THIS) PURE;
1782       STDMETHOD(GetDeviceIdentifier)(THIS_ LPDDDEVICEIDENTIFIER2, DWORD ) PURE;
1783       STDMETHOD(StartModeTest)(THIS_ LPSIZE, DWORD, DWORD ) PURE;
1784       STDMETHOD(EvaluateMode)(THIS_ DWORD, DWORD * ) PURE;
1785     };
1786      #if !defined(__cplusplus) || defined(CINTERFACE)
1787          #define IDirectDraw7_QueryInterface(p, a, b)         (p)->lpVtbl->QueryInterface(p, a, b)
1788          #define IDirectDraw7_AddRef(p)                       (p)->lpVtbl->AddRef(p)
1789          #define IDirectDraw7_Release(p)                      (p)->lpVtbl->Release(p)
1790          #define IDirectDraw7_Compact(p)                      (p)->lpVtbl->Compact(p)
1791          #define IDirectDraw7_CreateClipper(p, a, b, c)       (p)->lpVtbl->CreateClipper(p, a, b, c)
1792          #define IDirectDraw7_CreatePalette(p, a, b, c, d)    (p)->lpVtbl->CreatePalette(p, a, b, c, d)
1793          #define IDirectDraw7_CreateSurface(p, a, b, c)       (p)->lpVtbl->CreateSurface(p, a, b, c)
1794          #define IDirectDraw7_DuplicateSurface(p, a, b)       (p)->lpVtbl->DuplicateSurface(p, a, b)
1795          #define IDirectDraw7_EnumDisplayModes(p, a, b, c, d) (p)->lpVtbl->EnumDisplayModes(p, a, b, c, d)
1796          #define IDirectDraw7_EnumSurfaces(p, a, b, c, d)     (p)->lpVtbl->EnumSurfaces(p, a, b, c, d)
1797          #define IDirectDraw7_FlipToGDISurface(p)             (p)->lpVtbl->FlipToGDISurface(p)
1798          #define IDirectDraw7_GetCaps(p, a, b)                (p)->lpVtbl->GetCaps(p, a, b)
1799          #define IDirectDraw7_GetDisplayMode(p, a)            (p)->lpVtbl->GetDisplayMode(p, a)
1800          #define IDirectDraw7_GetFourCCCodes(p, a, b)         (p)->lpVtbl->GetFourCCCodes(p, a, b)
1801          #define IDirectDraw7_GetGDISurface(p, a)             (p)->lpVtbl->GetGDISurface(p, a)
1802          #define IDirectDraw7_GetMonitorFrequency(p, a)       (p)->lpVtbl->GetMonitorFrequency(p, a)
1803          #define IDirectDraw7_GetScanLine(p, a)               (p)->lpVtbl->GetScanLine(p, a)
1804          #define IDirectDraw7_GetVerticalBlankStatus(p, a)    (p)->lpVtbl->GetVerticalBlankStatus(p, a)
1805          #define IDirectDraw7_Initialize(p, a)                (p)->lpVtbl->Initialize(p, a)
1806          #define IDirectDraw7_RestoreDisplayMode(p)           (p)->lpVtbl->RestoreDisplayMode(p)
1807          #define IDirectDraw7_SetCooperativeLevel(p, a, b)    (p)->lpVtbl->SetCooperativeLevel(p, a, b)
1808          #define IDirectDraw7_SetDisplayMode(p, a, b, c, d, e) (p)->lpVtbl->SetDisplayMode(p, a, b, c, d, e)
1809          #define IDirectDraw7_WaitForVerticalBlank(p, a, b)   (p)->lpVtbl->WaitForVerticalBlank(p, a, b)
1810          #define IDirectDraw7_GetAvailableVidMem(p, a, b, c)  (p)->lpVtbl->GetAvailableVidMem(p, a, b, c)
1811          #define IDirectDraw7_GetSurfaceFromDC(p, a, b)       (p)->lpVtbl->GetSurfaceFromDC(p, a, b)
1812          #define IDirectDraw7_RestoreAllSurfaces(p)           (p)->lpVtbl->RestoreAllSurfaces(p)
1813          #define IDirectDraw7_TestCooperativeLevel(p)         (p)->lpVtbl->TestCooperativeLevel(p)
1814          #define IDirectDraw7_GetDeviceIdentifier(p,a,b)      (p)->lpVtbl->GetDeviceIdentifier(p,a,b)
1815          #define IDirectDraw7_StartModeTest(p,a,b,c)        (p)->lpVtbl->StartModeTest(p,a,b,c)
1816          #define IDirectDraw7_EvaluateMode(p,a,b)           (p)->lpVtbl->EvaluateMode(p,a,b)
1817      #else
1818          #define IDirectDraw7_QueryInterface(p, a, b)         (p)->QueryInterface(a, b)
1819          #define IDirectDraw7_AddRef(p)                       (p)->AddRef()
1820          #define IDirectDraw7_Release(p)                      (p)->Release()
1821          #define IDirectDraw7_Compact(p)                      (p)->Compact()
1822          #define IDirectDraw7_CreateClipper(p, a, b, c)       (p)->CreateClipper(a, b, c)
1823          #define IDirectDraw7_CreatePalette(p, a, b, c, d)    (p)->CreatePalette(a, b, c, d)
1824          #define IDirectDraw7_CreateSurface(p, a, b, c)       (p)->CreateSurface(a, b, c)
1825          #define IDirectDraw7_DuplicateSurface(p, a, b)       (p)->DuplicateSurface(a, b)
1826          #define IDirectDraw7_EnumDisplayModes(p, a, b, c, d) (p)->EnumDisplayModes(a, b, c, d)
1827          #define IDirectDraw7_EnumSurfaces(p, a, b, c, d)     (p)->EnumSurfaces(a, b, c, d)
1828          #define IDirectDraw7_FlipToGDISurface(p)             (p)->FlipToGDISurface()
1829          #define IDirectDraw7_GetCaps(p, a, b)                (p)->GetCaps(a, b)
1830          #define IDirectDraw7_GetDisplayMode(p, a)            (p)->GetDisplayMode(a)
1831          #define IDirectDraw7_GetFourCCCodes(p, a, b)         (p)->GetFourCCCodes(a, b)
1832          #define IDirectDraw7_GetGDISurface(p, a)             (p)->GetGDISurface(a)
1833          #define IDirectDraw7_GetMonitorFrequency(p, a)       (p)->GetMonitorFrequency(a)
1834          #define IDirectDraw7_GetScanLine(p, a)               (p)->GetScanLine(a)
1835          #define IDirectDraw7_GetVerticalBlankStatus(p, a)    (p)->GetVerticalBlankStatus(a)
1836          #define IDirectDraw7_Initialize(p, a)                (p)->Initialize(a)
1837          #define IDirectDraw7_RestoreDisplayMode(p)           (p)->RestoreDisplayMode()
1838          #define IDirectDraw7_SetCooperativeLevel(p, a, b)    (p)->SetCooperativeLevel(a, b)
1839          #define IDirectDraw7_SetDisplayMode(p, a, b, c, d, e) (p)->SetDisplayMode(a, b, c, d, e)
1840          #define IDirectDraw7_WaitForVerticalBlank(p, a, b)   (p)->WaitForVerticalBlank(a, b)
1841          #define IDirectDraw7_GetAvailableVidMem(p, a, b, c)  (p)->GetAvailableVidMem(a, b, c)
1842          #define IDirectDraw7_GetSurfaceFromDC(p, a, b)       (p)->GetSurfaceFromDC(a, b)
1843          #define IDirectDraw7_RestoreAllSurfaces(p)           (p)->RestoreAllSurfaces()
1844          #define IDirectDraw7_TestCooperativeLevel(p)         (p)->TestCooperativeLevel()
1845          #define IDirectDraw7_GetDeviceIdentifier(p,a,b)      (p)->GetDeviceIdentifier(a,b)
1846          #define IDirectDraw7_StartModeTest(p,a,b,c)        (p)->lpVtbl->StartModeTest(a,b,c)
1847          #define IDirectDraw7_EvaluateMode(p,a,b)           (p)->lpVtbl->EvaluateMode(a,b)
1848      #endif
1849 #endif
1850 
1851 #if defined( _WIN32 ) && !defined( _NO_COM )
1852     #undef INTERFACE
1853     #define INTERFACE IDirectDrawPalette
1854 
DECLARE_INTERFACE_(IDirectDrawPalette,IUnknown)1855     DECLARE_INTERFACE_( IDirectDrawPalette, IUnknown )
1856     {
1857       STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE;
1858       STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
1859       STDMETHOD_(ULONG,Release) (THIS) PURE;
1860       STDMETHOD(GetCaps)(THIS_ LPDWORD) PURE;
1861       STDMETHOD(GetEntries)(THIS_ DWORD,DWORD,DWORD,LPPALETTEENTRY) PURE;
1862       STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW, DWORD, LPPALETTEENTRY) PURE;
1863       STDMETHOD(SetEntries)(THIS_ DWORD,DWORD,DWORD,LPPALETTEENTRY) PURE;
1864     };
1865      #if !defined(__cplusplus) || defined(CINTERFACE)
1866          #define IDirectDrawPalette_QueryInterface(p, a, b)      (p)->lpVtbl->QueryInterface(p, a, b)
1867          #define IDirectDrawPalette_AddRef(p)                    (p)->lpVtbl->AddRef(p)
1868          #define IDirectDrawPalette_Release(p)                   (p)->lpVtbl->Release(p)
1869          #define IDirectDrawPalette_GetCaps(p, a)                (p)->lpVtbl->GetCaps(p, a)
1870          #define IDirectDrawPalette_GetEntries(p, a, b, c, d)    (p)->lpVtbl->GetEntries(p, a, b, c, d)
1871          #define IDirectDrawPalette_Initialize(p, a, b, c)       (p)->lpVtbl->Initialize(p, a, b, c)
1872          #define IDirectDrawPalette_SetEntries(p, a, b, c, d)    (p)->lpVtbl->SetEntries(p, a, b, c, d)
1873      #else
1874          #define IDirectDrawPalette_QueryInterface(p, a, b)      (p)->QueryInterface(a, b)
1875          #define IDirectDrawPalette_AddRef(p)                    (p)->AddRef()
1876          #define IDirectDrawPalette_Release(p)                   (p)->Release()
1877          #define IDirectDrawPalette_GetCaps(p, a)                (p)->GetCaps(a)
1878          #define IDirectDrawPalette_GetEntries(p, a, b, c, d)    (p)->GetEntries(a, b, c, d)
1879          #define IDirectDrawPalette_Initialize(p, a, b, c)       (p)->Initialize(a, b, c)
1880          #define IDirectDrawPalette_SetEntries(p, a, b, c, d)    (p)->SetEntries(a, b, c, d)
1881      #endif
1882 #endif
1883 
1884 #if defined( _WIN32 ) && !defined( _NO_COM )
1885     #undef INTERFACE
1886     #define INTERFACE IDirectDrawGammaControl
1887 
DECLARE_INTERFACE_(IDirectDrawGammaControl,IUnknown)1888     DECLARE_INTERFACE_( IDirectDrawGammaControl, IUnknown )
1889     {
1890       STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE;
1891       STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
1892       STDMETHOD_(ULONG,Release) (THIS) PURE;
1893       STDMETHOD(GetGammaRamp)(THIS_ DWORD, LPDDGAMMARAMP) PURE;
1894       STDMETHOD(SetGammaRamp)(THIS_ DWORD, LPDDGAMMARAMP) PURE;
1895      };
1896      #if !defined(__cplusplus) || defined(CINTERFACE)
1897          #define IDirectDrawGammaControl_QueryInterface(p, a, b)  (p)->lpVtbl->QueryInterface(p, a, b)
1898          #define IDirectDrawGammaControl_AddRef(p)                (p)->lpVtbl->AddRef(p)
1899          #define IDirectDrawGammaControl_Release(p)               (p)->lpVtbl->Release(p)
1900          #define IDirectDrawGammaControl_GetGammaRamp(p, a, b)    (p)->lpVtbl->GetGammaRamp(p, a, b)
1901          #define IDirectDrawGammaControl_SetGammaRamp(p, a, b)    (p)->lpVtbl->SetGammaRamp(p, a, b)
1902      #else
1903          #define IDirectDrawGammaControl_QueryInterface(p, a, b)  (p)->QueryInterface(a, b)
1904          #define IDirectDrawGammaControl_AddRef(p)                (p)->AddRef()
1905          #define IDirectDrawGammaControl_Release(p)               (p)->Release()
1906          #define IDirectDrawGammaControl_GetGammaRamp(p, a, b)    (p)->GetGammaRamp(a, b)
1907          #define IDirectDrawGammaControl_SetGammaRamp(p, a, b)    (p)->SetGammaRamp(a, b)
1908      #endif
1909 #endif
1910 
1911 #if defined( _WIN32 ) && !defined( _NO_COM )
1912      #undef INTERFACE
1913      #define INTERFACE IDirectDrawColorControl
1914 
DECLARE_INTERFACE_(IDirectDrawColorControl,IUnknown)1915      DECLARE_INTERFACE_( IDirectDrawColorControl, IUnknown )
1916      {
1917        STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE;
1918        STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
1919        STDMETHOD_(ULONG,Release) (THIS) PURE;
1920        STDMETHOD(GetColorControls)(THIS_ LPDDCOLORCONTROL) PURE;
1921        STDMETHOD(SetColorControls)(THIS_ LPDDCOLORCONTROL) PURE;
1922      };
1923      #if !defined(__cplusplus) || defined(CINTERFACE)
1924          #define IDirectDrawColorControl_QueryInterface(p, a, b)  (p)->lpVtbl->QueryInterface(p, a, b)
1925          #define IDirectDrawColorControl_AddRef(p)                (p)->lpVtbl->AddRef(p)
1926          #define IDirectDrawColorControl_Release(p)               (p)->lpVtbl->Release(p)
1927          #define IDirectDrawColorControl_GetColorControls(p, a)   (p)->lpVtbl->GetColorControls(p, a)
1928          #define IDirectDrawColorControl_SetColorControls(p, a)   (p)->lpVtbl->SetColorControls(p, a)
1929      #else
1930          #define IDirectDrawColorControl_QueryInterface(p, a, b)  (p)->QueryInterface(a, b)
1931          #define IDirectDrawColorControl_AddRef(p)                (p)->AddRef()
1932          #define IDirectDrawColorControl_Release(p)               (p)->Release()
1933          #define IDirectDrawColorControl_GetColorControls(p, a)   (p)->GetColorControls(a)
1934          #define IDirectDrawColorControl_SetColorControls(p, a)   (p)->SetColorControls(a)
1935      #endif
1936 #endif
1937 
1938 
1939 #if defined( _WIN32 ) && !defined( _NO_COM )
1940      #undef INTERFACE
1941      #define INTERFACE IDirectDrawClipper
DECLARE_INTERFACE_(IDirectDrawClipper,IUnknown)1942      DECLARE_INTERFACE_( IDirectDrawClipper, IUnknown )
1943      {
1944        STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE;
1945        STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
1946        STDMETHOD_(ULONG,Release) (THIS) PURE;
1947        STDMETHOD(GetClipList)(THIS_ LPRECT, LPRGNDATA, LPDWORD) PURE;
1948        STDMETHOD(GetHWnd)(THIS_ HWND *) PURE;
1949        STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW, DWORD) PURE;
1950        STDMETHOD(IsClipListChanged)(THIS_ BOOL *) PURE;
1951        STDMETHOD(SetClipList)(THIS_ LPRGNDATA,DWORD) PURE;
1952        STDMETHOD(SetHWnd)(THIS_ DWORD, HWND ) PURE;
1953      };
1954      #if !defined(__cplusplus) || defined(CINTERFACE)
1955          #define IDirectDrawClipper_QueryInterface(p, a, b)  (p)->lpVtbl->QueryInterface(p, a, b)
1956          #define IDirectDrawClipper_AddRef(p)                (p)->lpVtbl->AddRef(p)
1957          #define IDirectDrawClipper_Release(p)               (p)->lpVtbl->Release(p)
1958          #define IDirectDrawClipper_GetClipList(p, a, b, c)  (p)->lpVtbl->GetClipList(p, a, b, c)
1959          #define IDirectDrawClipper_GetHWnd(p, a)            (p)->lpVtbl->GetHWnd(p, a)
1960          #define IDirectDrawClipper_Initialize(p, a, b)      (p)->lpVtbl->Initialize(p, a, b)
1961          #define IDirectDrawClipper_IsClipListChanged(p, a)  (p)->lpVtbl->IsClipListChanged(p, a)
1962          #define IDirectDrawClipper_SetClipList(p, a, b)     (p)->lpVtbl->SetClipList(p, a, b)
1963          #define IDirectDrawClipper_SetHWnd(p, a, b)         (p)->lpVtbl->SetHWnd(p, a, b)
1964      #else
1965          #define IDirectDrawClipper_QueryInterface(p, a, b)  (p)->QueryInterface(a, b)
1966          #define IDirectDrawClipper_AddRef(p)                (p)->AddRef()
1967          #define IDirectDrawClipper_Release(p)               (p)->Release()
1968          #define IDirectDrawClipper_GetClipList(p, a, b, c)  (p)->GetClipList(a, b, c)
1969          #define IDirectDrawClipper_GetHWnd(p, a)            (p)->GetHWnd(a)
1970          #define IDirectDrawClipper_Initialize(p, a, b)      (p)->Initialize(a, b)
1971          #define IDirectDrawClipper_IsClipListChanged(p, a)  (p)->IsClipListChanged(a)
1972          #define IDirectDrawClipper_SetClipList(p, a, b)     (p)->SetClipList(a, b)
1973          #define IDirectDrawClipper_SetHWnd(p, a, b)         (p)->SetHWnd(a, b)
1974      #endif
1975 #endif
1976 
1977 #if defined( _WIN32 ) && !defined( _NO_COM )
1978      #undef INTERFACE
1979      #define INTERFACE IDirectDrawSurface
1980 
DECLARE_INTERFACE_(IDirectDrawSurface,IUnknown)1981      DECLARE_INTERFACE_( IDirectDrawSurface, IUnknown )
1982      {
1983        STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE;
1984        STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
1985        STDMETHOD_(ULONG,Release) (THIS) PURE;
1986        STDMETHOD(AddAttachedSurface)(THIS_ LPDIRECTDRAWSURFACE) PURE;
1987        STDMETHOD(AddOverlayDirtyRect)(THIS_ LPRECT) PURE;
1988        STDMETHOD(Blt)(THIS_ LPRECT,LPDIRECTDRAWSURFACE, LPRECT,DWORD, LPDDBLTFX) PURE;
1989        STDMETHOD(BltBatch)(THIS_ LPDDBLTBATCH, DWORD, DWORD ) PURE;
1990        STDMETHOD(BltFast)(THIS_ DWORD,DWORD,LPDIRECTDRAWSURFACE, LPRECT,DWORD) PURE;
1991        STDMETHOD(DeleteAttachedSurface)(THIS_ DWORD,LPDIRECTDRAWSURFACE) PURE;
1992        STDMETHOD(EnumAttachedSurfaces)(THIS_ LPVOID,LPDDENUMSURFACESCALLBACK) PURE;
1993        STDMETHOD(EnumOverlayZOrders)(THIS_ DWORD,LPVOID,LPDDENUMSURFACESCALLBACK) PURE;
1994        STDMETHOD(Flip)(THIS_ LPDIRECTDRAWSURFACE, DWORD) PURE;
1995        STDMETHOD(GetAttachedSurface)(THIS_ LPDDSCAPS, LPDIRECTDRAWSURFACE *) PURE;
1996        STDMETHOD(GetBltStatus)(THIS_ DWORD) PURE;
1997        STDMETHOD(GetCaps)(THIS_ LPDDSCAPS) PURE;
1998        STDMETHOD(GetClipper)(THIS_ LPDIRECTDRAWCLIPPER *) PURE;
1999        STDMETHOD(GetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE;
2000        STDMETHOD(GetDC)(THIS_ HDC *) PURE;
2001        STDMETHOD(GetFlipStatus)(THIS_ DWORD) PURE;
2002        STDMETHOD(GetOverlayPosition)(THIS_ LPLONG, LPLONG ) PURE;
2003        STDMETHOD(GetPalette)(THIS_ LPDIRECTDRAWPALETTE *) PURE;
2004        STDMETHOD(GetPixelFormat)(THIS_ LPDDPIXELFORMAT) PURE;
2005        STDMETHOD(GetSurfaceDesc)(THIS_ LPDDSURFACEDESC) PURE;
2006        STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW, LPDDSURFACEDESC) PURE;
2007        STDMETHOD(IsLost)(THIS) PURE;
2008        STDMETHOD(Lock)(THIS_ LPRECT,LPDDSURFACEDESC,DWORD,HANDLE) PURE;
2009        STDMETHOD(ReleaseDC)(THIS_ HDC) PURE;
2010        STDMETHOD(Restore)(THIS) PURE;
2011        STDMETHOD(SetClipper)(THIS_ LPDIRECTDRAWCLIPPER) PURE;
2012        STDMETHOD(SetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE;
2013        STDMETHOD(SetOverlayPosition)(THIS_ LONG, LONG ) PURE;
2014        STDMETHOD(SetPalette)(THIS_ LPDIRECTDRAWPALETTE) PURE;
2015        STDMETHOD(Unlock)(THIS_ LPVOID) PURE;
2016        STDMETHOD(UpdateOverlay)(THIS_ LPRECT, LPDIRECTDRAWSURFACE,LPRECT,DWORD, LPDDOVERLAYFX) PURE;
2017        STDMETHOD(UpdateOverlayDisplay)(THIS_ DWORD) PURE;
2018        STDMETHOD(UpdateOverlayZOrder)(THIS_ DWORD, LPDIRECTDRAWSURFACE) PURE;
2019      };
2020      #if !defined(__cplusplus) || defined(CINTERFACE)
2021          #define IDirectDrawSurface_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
2022          #define IDirectDrawSurface_AddRef(p)                    (p)->lpVtbl->AddRef(p)
2023          #define IDirectDrawSurface_Release(p)                   (p)->lpVtbl->Release(p)
2024          #define IDirectDrawSurface_AddAttachedSurface(p,a)      (p)->lpVtbl->AddAttachedSurface(p,a)
2025          #define IDirectDrawSurface_AddOverlayDirtyRect(p,a)     (p)->lpVtbl->AddOverlayDirtyRect(p,a)
2026          #define IDirectDrawSurface_Blt(p,a,b,c,d,e)             (p)->lpVtbl->Blt(p,a,b,c,d,e)
2027          #define IDirectDrawSurface_BltBatch(p,a,b,c)            (p)->lpVtbl->BltBatch(p,a,b,c)
2028          #define IDirectDrawSurface_BltFast(p,a,b,c,d,e)         (p)->lpVtbl->BltFast(p,a,b,c,d,e)
2029          #define IDirectDrawSurface_DeleteAttachedSurface(p,a,b) (p)->lpVtbl->DeleteAttachedSurface(p,a,b)
2030          #define IDirectDrawSurface_EnumAttachedSurfaces(p,a,b)  (p)->lpVtbl->EnumAttachedSurfaces(p,a,b)
2031          #define IDirectDrawSurface_EnumOverlayZOrders(p,a,b,c)  (p)->lpVtbl->EnumOverlayZOrders(p,a,b,c)
2032          #define IDirectDrawSurface_Flip(p,a,b)                  (p)->lpVtbl->Flip(p,a,b)
2033          #define IDirectDrawSurface_GetAttachedSurface(p,a,b)    (p)->lpVtbl->GetAttachedSurface(p,a,b)
2034          #define IDirectDrawSurface_GetBltStatus(p,a)            (p)->lpVtbl->GetBltStatus(p,a)
2035          #define IDirectDrawSurface_GetCaps(p,b)                 (p)->lpVtbl->GetCaps(p,b)
2036          #define IDirectDrawSurface_GetClipper(p,a)              (p)->lpVtbl->GetClipper(p,a)
2037          #define IDirectDrawSurface_GetColorKey(p,a,b)           (p)->lpVtbl->GetColorKey(p,a,b)
2038          #define IDirectDrawSurface_GetDC(p,a)                   (p)->lpVtbl->GetDC(p,a)
2039          #define IDirectDrawSurface_GetFlipStatus(p,a)           (p)->lpVtbl->GetFlipStatus(p,a)
2040          #define IDirectDrawSurface_GetOverlayPosition(p,a,b)    (p)->lpVtbl->GetOverlayPosition(p,a,b)
2041          #define IDirectDrawSurface_GetPalette(p,a)              (p)->lpVtbl->GetPalette(p,a)
2042          #define IDirectDrawSurface_GetPixelFormat(p,a)          (p)->lpVtbl->GetPixelFormat(p,a)
2043          #define IDirectDrawSurface_GetSurfaceDesc(p,a)          (p)->lpVtbl->GetSurfaceDesc(p,a)
2044          #define IDirectDrawSurface_Initialize(p,a,b)            (p)->lpVtbl->Initialize(p,a,b)
2045          #define IDirectDrawSurface_IsLost(p)                    (p)->lpVtbl->IsLost(p)
2046          #define IDirectDrawSurface_Lock(p,a,b,c,d)              (p)->lpVtbl->Lock(p,a,b,c,d)
2047          #define IDirectDrawSurface_ReleaseDC(p,a)               (p)->lpVtbl->ReleaseDC(p,a)
2048          #define IDirectDrawSurface_Restore(p)                   (p)->lpVtbl->Restore(p)
2049          #define IDirectDrawSurface_SetClipper(p,a)              (p)->lpVtbl->SetClipper(p,a)
2050          #define IDirectDrawSurface_SetColorKey(p,a,b)           (p)->lpVtbl->SetColorKey(p,a,b)
2051          #define IDirectDrawSurface_SetOverlayPosition(p,a,b)    (p)->lpVtbl->SetOverlayPosition(p,a,b)
2052          #define IDirectDrawSurface_SetPalette(p,a)              (p)->lpVtbl->SetPalette(p,a)
2053          #define IDirectDrawSurface_Unlock(p,b)                  (p)->lpVtbl->Unlock(p,b)
2054          #define IDirectDrawSurface_UpdateOverlay(p,a,b,c,d,e)   (p)->lpVtbl->UpdateOverlay(p,a,b,c,d,e)
2055          #define IDirectDrawSurface_UpdateOverlayDisplay(p,a)    (p)->lpVtbl->UpdateOverlayDisplay(p,a)
2056          #define IDirectDrawSurface_UpdateOverlayZOrder(p,a,b)   (p)->lpVtbl->UpdateOverlayZOrder(p,a,b)
2057      #else
2058          #define IDirectDrawSurface_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
2059          #define IDirectDrawSurface_AddRef(p)                    (p)->AddRef()
2060          #define IDirectDrawSurface_Release(p)                   (p)->Release()
2061          #define IDirectDrawSurface_AddAttachedSurface(p,a)      (p)->AddAttachedSurface(a)
2062          #define IDirectDrawSurface_AddOverlayDirtyRect(p,a)     (p)->AddOverlayDirtyRect(a)
2063          #define IDirectDrawSurface_Blt(p,a,b,c,d,e)             (p)->Blt(a,b,c,d,e)
2064          #define IDirectDrawSurface_BltBatch(p,a,b,c)            (p)->BltBatch(a,b,c)
2065          #define IDirectDrawSurface_BltFast(p,a,b,c,d,e)         (p)->BltFast(a,b,c,d,e)
2066          #define IDirectDrawSurface_DeleteAttachedSurface(p,a,b) (p)->DeleteAttachedSurface(a,b)
2067          #define IDirectDrawSurface_EnumAttachedSurfaces(p,a,b)  (p)->EnumAttachedSurfaces(a,b)
2068          #define IDirectDrawSurface_EnumOverlayZOrders(p,a,b,c)  (p)->EnumOverlayZOrders(a,b,c)
2069          #define IDirectDrawSurface_Flip(p,a,b)                  (p)->Flip(a,b)
2070          #define IDirectDrawSurface_GetAttachedSurface(p,a,b)    (p)->GetAttachedSurface(a,b)
2071          #define IDirectDrawSurface_GetBltStatus(p,a)            (p)->GetBltStatus(a)
2072          #define IDirectDrawSurface_GetCaps(p,b)                 (p)->GetCaps(b)
2073          #define IDirectDrawSurface_GetClipper(p,a)              (p)->GetClipper(a)
2074          #define IDirectDrawSurface_GetColorKey(p,a,b)           (p)->GetColorKey(a,b)
2075          #define IDirectDrawSurface_GetDC(p,a)                   (p)->GetDC(a)
2076          #define IDirectDrawSurface_GetFlipStatus(p,a)           (p)->GetFlipStatus(a)
2077          #define IDirectDrawSurface_GetOverlayPosition(p,a,b)    (p)->GetOverlayPosition(a,b)
2078          #define IDirectDrawSurface_GetPalette(p,a)              (p)->GetPalette(a)
2079          #define IDirectDrawSurface_GetPixelFormat(p,a)          (p)->GetPixelFormat(a)
2080          #define IDirectDrawSurface_GetSurfaceDesc(p,a)          (p)->GetSurfaceDesc(a)
2081          #define IDirectDrawSurface_Initialize(p,a,b)            (p)->Initialize(a,b)
2082          #define IDirectDrawSurface_IsLost(p)                    (p)->IsLost()
2083          #define IDirectDrawSurface_Lock(p,a,b,c,d)              (p)->Lock(a,b,c,d)
2084          #define IDirectDrawSurface_ReleaseDC(p,a)               (p)->ReleaseDC(a)
2085          #define IDirectDrawSurface_Restore(p)                   (p)->Restore()
2086          #define IDirectDrawSurface_SetClipper(p,a)              (p)->SetClipper(a)
2087          #define IDirectDrawSurface_SetColorKey(p,a,b)           (p)->SetColorKey(a,b)
2088          #define IDirectDrawSurface_SetOverlayPosition(p,a,b)    (p)->SetOverlayPosition(a,b)
2089          #define IDirectDrawSurface_SetPalette(p,a)              (p)->SetPalette(a)
2090          #define IDirectDrawSurface_Unlock(p,b)                  (p)->Unlock(b)
2091          #define IDirectDrawSurface_UpdateOverlay(p,a,b,c,d,e)   (p)->UpdateOverlay(a,b,c,d,e)
2092          #define IDirectDrawSurface_UpdateOverlayDisplay(p,a)    (p)->UpdateOverlayDisplay(a)
2093          #define IDirectDrawSurface_UpdateOverlayZOrder(p,a,b)   (p)->UpdateOverlayZOrder(a,b)
2094      #endif
2095 #endif
2096 
2097 #if defined( _WIN32 ) && !defined( _NO_COM )
2098      #undef INTERFACE
2099      #define INTERFACE IDirectDrawSurface2
DECLARE_INTERFACE_(IDirectDrawSurface2,IUnknown)2100      DECLARE_INTERFACE_( IDirectDrawSurface2, IUnknown )
2101      {
2102        STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE;
2103        STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
2104        STDMETHOD_(ULONG,Release) (THIS) PURE;
2105        STDMETHOD(AddAttachedSurface)(THIS_ LPDIRECTDRAWSURFACE2) PURE;
2106        STDMETHOD(AddOverlayDirtyRect)(THIS_ LPRECT) PURE;
2107        STDMETHOD(Blt)(THIS_ LPRECT,LPDIRECTDRAWSURFACE2, LPRECT,DWORD, LPDDBLTFX) PURE;
2108        STDMETHOD(BltBatch)(THIS_ LPDDBLTBATCH, DWORD, DWORD ) PURE;
2109        STDMETHOD(BltFast)(THIS_ DWORD,DWORD,LPDIRECTDRAWSURFACE2, LPRECT,DWORD) PURE;
2110        STDMETHOD(DeleteAttachedSurface)(THIS_ DWORD,LPDIRECTDRAWSURFACE2) PURE;
2111        STDMETHOD(EnumAttachedSurfaces)(THIS_ LPVOID,LPDDENUMSURFACESCALLBACK) PURE;
2112        STDMETHOD(EnumOverlayZOrders)(THIS_ DWORD,LPVOID,LPDDENUMSURFACESCALLBACK) PURE;
2113        STDMETHOD(Flip)(THIS_ LPDIRECTDRAWSURFACE2, DWORD) PURE;
2114        STDMETHOD(GetAttachedSurface)(THIS_ LPDDSCAPS, LPDIRECTDRAWSURFACE2 *) PURE;
2115        STDMETHOD(GetBltStatus)(THIS_ DWORD) PURE;
2116        STDMETHOD(GetCaps)(THIS_ LPDDSCAPS) PURE;
2117        STDMETHOD(GetClipper)(THIS_ LPDIRECTDRAWCLIPPER *) PURE;
2118        STDMETHOD(GetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE;
2119        STDMETHOD(GetDC)(THIS_ HDC *) PURE;
2120        STDMETHOD(GetFlipStatus)(THIS_ DWORD) PURE;
2121        STDMETHOD(GetOverlayPosition)(THIS_ LPLONG, LPLONG ) PURE;
2122        STDMETHOD(GetPalette)(THIS_ LPDIRECTDRAWPALETTE *) PURE;
2123        STDMETHOD(GetPixelFormat)(THIS_ LPDDPIXELFORMAT) PURE;
2124        STDMETHOD(GetSurfaceDesc)(THIS_ LPDDSURFACEDESC) PURE;
2125        STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW, LPDDSURFACEDESC) PURE;
2126        STDMETHOD(IsLost)(THIS) PURE;
2127        STDMETHOD(Lock)(THIS_ LPRECT,LPDDSURFACEDESC,DWORD,HANDLE) PURE;
2128        STDMETHOD(ReleaseDC)(THIS_ HDC) PURE;
2129        STDMETHOD(Restore)(THIS) PURE;
2130        STDMETHOD(SetClipper)(THIS_ LPDIRECTDRAWCLIPPER) PURE;
2131        STDMETHOD(SetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE;
2132        STDMETHOD(SetOverlayPosition)(THIS_ LONG, LONG ) PURE;
2133        STDMETHOD(SetPalette)(THIS_ LPDIRECTDRAWPALETTE) PURE;
2134        STDMETHOD(Unlock)(THIS_ LPVOID) PURE;
2135        STDMETHOD(UpdateOverlay)(THIS_ LPRECT, LPDIRECTDRAWSURFACE2,LPRECT,DWORD, LPDDOVERLAYFX) PURE;
2136        STDMETHOD(UpdateOverlayDisplay)(THIS_ DWORD) PURE;
2137        STDMETHOD(UpdateOverlayZOrder)(THIS_ DWORD, LPDIRECTDRAWSURFACE2) PURE;
2138        STDMETHOD(GetDDInterface)(THIS_ LPVOID *) PURE;
2139        STDMETHOD(PageLock)(THIS_ DWORD) PURE;
2140        STDMETHOD(PageUnlock)(THIS_ DWORD) PURE;
2141      };
2142 
2143      #if !defined(__cplusplus) || defined(CINTERFACE)
2144          #define IDirectDrawSurface2_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
2145          #define IDirectDrawSurface2_AddRef(p)                    (p)->lpVtbl->AddRef(p)
2146          #define IDirectDrawSurface2_Release(p)                   (p)->lpVtbl->Release(p)
2147          #define IDirectDrawSurface2_AddAttachedSurface(p,a)      (p)->lpVtbl->AddAttachedSurface(p,a)
2148          #define IDirectDrawSurface2_AddOverlayDirtyRect(p,a)     (p)->lpVtbl->AddOverlayDirtyRect(p,a)
2149          #define IDirectDrawSurface2_Blt(p,a,b,c,d,e)             (p)->lpVtbl->Blt(p,a,b,c,d,e)
2150          #define IDirectDrawSurface2_BltBatch(p,a,b,c)            (p)->lpVtbl->BltBatch(p,a,b,c)
2151          #define IDirectDrawSurface2_BltFast(p,a,b,c,d,e)         (p)->lpVtbl->BltFast(p,a,b,c,d,e)
2152          #define IDirectDrawSurface2_DeleteAttachedSurface(p,a,b) (p)->lpVtbl->DeleteAttachedSurface(p,a,b)
2153          #define IDirectDrawSurface2_EnumAttachedSurfaces(p,a,b)  (p)->lpVtbl->EnumAttachedSurfaces(p,a,b)
2154          #define IDirectDrawSurface2_EnumOverlayZOrders(p,a,b,c)  (p)->lpVtbl->EnumOverlayZOrders(p,a,b,c)
2155          #define IDirectDrawSurface2_Flip(p,a,b)                  (p)->lpVtbl->Flip(p,a,b)
2156          #define IDirectDrawSurface2_GetAttachedSurface(p,a,b)    (p)->lpVtbl->GetAttachedSurface(p,a,b)
2157          #define IDirectDrawSurface2_GetBltStatus(p,a)            (p)->lpVtbl->GetBltStatus(p,a)
2158          #define IDirectDrawSurface2_GetCaps(p,b)                 (p)->lpVtbl->GetCaps(p,b)
2159          #define IDirectDrawSurface2_GetClipper(p,a)              (p)->lpVtbl->GetClipper(p,a)
2160          #define IDirectDrawSurface2_GetColorKey(p,a,b)           (p)->lpVtbl->GetColorKey(p,a,b)
2161          #define IDirectDrawSurface2_GetDC(p,a)                   (p)->lpVtbl->GetDC(p,a)
2162          #define IDirectDrawSurface2_GetFlipStatus(p,a)           (p)->lpVtbl->GetFlipStatus(p,a)
2163          #define IDirectDrawSurface2_GetOverlayPosition(p,a,b)    (p)->lpVtbl->GetOverlayPosition(p,a,b)
2164          #define IDirectDrawSurface2_GetPalette(p,a)              (p)->lpVtbl->GetPalette(p,a)
2165          #define IDirectDrawSurface2_GetPixelFormat(p,a)          (p)->lpVtbl->GetPixelFormat(p,a)
2166          #define IDirectDrawSurface2_GetSurfaceDesc(p,a)          (p)->lpVtbl->GetSurfaceDesc(p,a)
2167          #define IDirectDrawSurface2_Initialize(p,a,b)            (p)->lpVtbl->Initialize(p,a,b)
2168          #define IDirectDrawSurface2_IsLost(p)                    (p)->lpVtbl->IsLost(p)
2169          #define IDirectDrawSurface2_Lock(p,a,b,c,d)              (p)->lpVtbl->Lock(p,a,b,c,d)
2170          #define IDirectDrawSurface2_ReleaseDC(p,a)               (p)->lpVtbl->ReleaseDC(p,a)
2171          #define IDirectDrawSurface2_Restore(p)                   (p)->lpVtbl->Restore(p)
2172          #define IDirectDrawSurface2_SetClipper(p,a)              (p)->lpVtbl->SetClipper(p,a)
2173          #define IDirectDrawSurface2_SetColorKey(p,a,b)           (p)->lpVtbl->SetColorKey(p,a,b)
2174          #define IDirectDrawSurface2_SetOverlayPosition(p,a,b)    (p)->lpVtbl->SetOverlayPosition(p,a,b)
2175          #define IDirectDrawSurface2_SetPalette(p,a)              (p)->lpVtbl->SetPalette(p,a)
2176          #define IDirectDrawSurface2_Unlock(p,b)                  (p)->lpVtbl->Unlock(p,b)
2177          #define IDirectDrawSurface2_UpdateOverlay(p,a,b,c,d,e)   (p)->lpVtbl->UpdateOverlay(p,a,b,c,d,e)
2178          #define IDirectDrawSurface2_UpdateOverlayDisplay(p,a)    (p)->lpVtbl->UpdateOverlayDisplay(p,a)
2179          #define IDirectDrawSurface2_UpdateOverlayZOrder(p,a,b)   (p)->lpVtbl->UpdateOverlayZOrder(p,a,b)
2180          #define IDirectDrawSurface2_GetDDInterface(p,a)          (p)->lpVtbl->GetDDInterface(p,a)
2181          #define IDirectDrawSurface2_PageLock(p,a)                (p)->lpVtbl->PageLock(p,a)
2182          #define IDirectDrawSurface2_PageUnlock(p,a)              (p)->lpVtbl->PageUnlock(p,a)
2183      #else
2184          #define IDirectDrawSurface2_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
2185          #define IDirectDrawSurface2_AddRef(p)                    (p)->AddRef()
2186          #define IDirectDrawSurface2_Release(p)                   (p)->Release()
2187          #define IDirectDrawSurface2_AddAttachedSurface(p,a)      (p)->AddAttachedSurface(a)
2188          #define IDirectDrawSurface2_AddOverlayDirtyRect(p,a)     (p)->AddOverlayDirtyRect(a)
2189          #define IDirectDrawSurface2_Blt(p,a,b,c,d,e)             (p)->Blt(a,b,c,d,e)
2190          #define IDirectDrawSurface2_BltBatch(p,a,b,c)            (p)->BltBatch(a,b,c)
2191          #define IDirectDrawSurface2_BltFast(p,a,b,c,d,e)         (p)->BltFast(a,b,c,d,e)
2192          #define IDirectDrawSurface2_DeleteAttachedSurface(p,a,b) (p)->DeleteAttachedSurface(a,b)
2193          #define IDirectDrawSurface2_EnumAttachedSurfaces(p,a,b)  (p)->EnumAttachedSurfaces(a,b)
2194          #define IDirectDrawSurface2_EnumOverlayZOrders(p,a,b,c)  (p)->EnumOverlayZOrders(a,b,c)
2195          #define IDirectDrawSurface2_Flip(p,a,b)                  (p)->Flip(a,b)
2196          #define IDirectDrawSurface2_GetAttachedSurface(p,a,b)    (p)->GetAttachedSurface(a,b)
2197          #define IDirectDrawSurface2_GetBltStatus(p,a)            (p)->GetBltStatus(a)
2198          #define IDirectDrawSurface2_GetCaps(p,b)                 (p)->GetCaps(b)
2199          #define IDirectDrawSurface2_GetClipper(p,a)              (p)->GetClipper(a)
2200          #define IDirectDrawSurface2_GetColorKey(p,a,b)           (p)->GetColorKey(a,b)
2201          #define IDirectDrawSurface2_GetDC(p,a)                   (p)->GetDC(a)
2202          #define IDirectDrawSurface2_GetFlipStatus(p,a)           (p)->GetFlipStatus(a)
2203          #define IDirectDrawSurface2_GetOverlayPosition(p,a,b)    (p)->GetOverlayPosition(a,b)
2204          #define IDirectDrawSurface2_GetPalette(p,a)              (p)->GetPalette(a)
2205          #define IDirectDrawSurface2_GetPixelFormat(p,a)          (p)->GetPixelFormat(a)
2206          #define IDirectDrawSurface2_GetSurfaceDesc(p,a)          (p)->GetSurfaceDesc(a)
2207          #define IDirectDrawSurface2_Initialize(p,a,b)            (p)->Initialize(a,b)
2208          #define IDirectDrawSurface2_IsLost(p)                    (p)->IsLost()
2209          #define IDirectDrawSurface2_Lock(p,a,b,c,d)              (p)->Lock(a,b,c,d)
2210          #define IDirectDrawSurface2_ReleaseDC(p,a)               (p)->ReleaseDC(a)
2211          #define IDirectDrawSurface2_Restore(p)                   (p)->Restore()
2212          #define IDirectDrawSurface2_SetClipper(p,a)              (p)->SetClipper(a)
2213          #define IDirectDrawSurface2_SetColorKey(p,a,b)           (p)->SetColorKey(a,b)
2214          #define IDirectDrawSurface2_SetOverlayPosition(p,a,b)    (p)->SetOverlayPosition(a,b)
2215          #define IDirectDrawSurface2_SetPalette(p,a)              (p)->SetPalette(a)
2216          #define IDirectDrawSurface2_Unlock(p,b)                  (p)->Unlock(b)
2217          #define IDirectDrawSurface2_UpdateOverlay(p,a,b,c,d,e)   (p)->UpdateOverlay(a,b,c,d,e)
2218          #define IDirectDrawSurface2_UpdateOverlayDisplay(p,a)    (p)->UpdateOverlayDisplay(a)
2219          #define IDirectDrawSurface2_UpdateOverlayZOrder(p,a,b)   (p)->UpdateOverlayZOrder(a,b)
2220          #define IDirectDrawSurface2_GetDDInterface(p,a)          (p)->GetDDInterface(a)
2221          #define IDirectDrawSurface2_PageLock(p,a)                (p)->PageLock(a)
2222          #define IDirectDrawSurface2_PageUnlock(p,a)              (p)->PageUnlock(a)
2223      #endif
2224 #endif
2225 
2226 #if defined( _WIN32 ) && !defined( _NO_COM )
2227 #undef INTERFACE
2228 #define INTERFACE IDirectDrawSurface3
DECLARE_INTERFACE_(IDirectDrawSurface3,IUnknown)2229 DECLARE_INTERFACE_( IDirectDrawSurface3, IUnknown )
2230 {
2231        STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE;
2232        STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
2233        STDMETHOD_(ULONG,Release) (THIS) PURE;
2234        STDMETHOD(AddAttachedSurface)(THIS_ LPDIRECTDRAWSURFACE3) PURE;
2235        STDMETHOD(AddOverlayDirtyRect)(THIS_ LPRECT) PURE;
2236        STDMETHOD(Blt)(THIS_ LPRECT,LPDIRECTDRAWSURFACE3, LPRECT,DWORD, LPDDBLTFX) PURE;
2237        STDMETHOD(BltBatch)(THIS_ LPDDBLTBATCH, DWORD, DWORD ) PURE;
2238        STDMETHOD(BltFast)(THIS_ DWORD,DWORD,LPDIRECTDRAWSURFACE3, LPRECT,DWORD) PURE;
2239        STDMETHOD(DeleteAttachedSurface)(THIS_ DWORD,LPDIRECTDRAWSURFACE3) PURE;
2240        STDMETHOD(EnumAttachedSurfaces)(THIS_ LPVOID,LPDDENUMSURFACESCALLBACK) PURE;
2241        STDMETHOD(EnumOverlayZOrders)(THIS_ DWORD,LPVOID,LPDDENUMSURFACESCALLBACK) PURE;
2242        STDMETHOD(Flip)(THIS_ LPDIRECTDRAWSURFACE3, DWORD) PURE;
2243        STDMETHOD(GetAttachedSurface)(THIS_ LPDDSCAPS, LPDIRECTDRAWSURFACE3 *) PURE;
2244        STDMETHOD(GetBltStatus)(THIS_ DWORD) PURE;
2245        STDMETHOD(GetCaps)(THIS_ LPDDSCAPS) PURE;
2246        STDMETHOD(GetClipper)(THIS_ LPDIRECTDRAWCLIPPER *) PURE;
2247        STDMETHOD(GetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE;
2248        STDMETHOD(GetDC)(THIS_ HDC *) PURE;
2249        STDMETHOD(GetFlipStatus)(THIS_ DWORD) PURE;
2250        STDMETHOD(GetOverlayPosition)(THIS_ LPLONG, LPLONG ) PURE;
2251        STDMETHOD(GetPalette)(THIS_ LPDIRECTDRAWPALETTE *) PURE;
2252        STDMETHOD(GetPixelFormat)(THIS_ LPDDPIXELFORMAT) PURE;
2253        STDMETHOD(GetSurfaceDesc)(THIS_ LPDDSURFACEDESC) PURE;
2254        STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW, LPDDSURFACEDESC) PURE;
2255        STDMETHOD(IsLost)(THIS) PURE;
2256        STDMETHOD(Lock)(THIS_ LPRECT,LPDDSURFACEDESC,DWORD,HANDLE) PURE;
2257        STDMETHOD(ReleaseDC)(THIS_ HDC) PURE;
2258        STDMETHOD(Restore)(THIS) PURE;
2259        STDMETHOD(SetClipper)(THIS_ LPDIRECTDRAWCLIPPER) PURE;
2260        STDMETHOD(SetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE;
2261        STDMETHOD(SetOverlayPosition)(THIS_ LONG, LONG ) PURE;
2262        STDMETHOD(SetPalette)(THIS_ LPDIRECTDRAWPALETTE) PURE;
2263        STDMETHOD(Unlock)(THIS_ LPVOID) PURE;
2264        STDMETHOD(UpdateOverlay)(THIS_ LPRECT, LPDIRECTDRAWSURFACE3,LPRECT,DWORD, LPDDOVERLAYFX) PURE;
2265        STDMETHOD(UpdateOverlayDisplay)(THIS_ DWORD) PURE;
2266        STDMETHOD(UpdateOverlayZOrder)(THIS_ DWORD, LPDIRECTDRAWSURFACE3) PURE;
2267        STDMETHOD(GetDDInterface)(THIS_ LPVOID *) PURE;
2268        STDMETHOD(PageLock)(THIS_ DWORD) PURE;
2269        STDMETHOD(PageUnlock)(THIS_ DWORD) PURE;
2270        STDMETHOD(SetSurfaceDesc)(THIS_ LPDDSURFACEDESC, DWORD) PURE;
2271      };
2272 
2273      #if !defined(__cplusplus) || defined(CINTERFACE)
2274          #define IDirectDrawSurface3_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
2275          #define IDirectDrawSurface3_AddRef(p)                    (p)->lpVtbl->AddRef(p)
2276          #define IDirectDrawSurface3_Release(p)                   (p)->lpVtbl->Release(p)
2277          #define IDirectDrawSurface3_AddAttachedSurface(p,a)      (p)->lpVtbl->AddAttachedSurface(p,a)
2278          #define IDirectDrawSurface3_AddOverlayDirtyRect(p,a)     (p)->lpVtbl->AddOverlayDirtyRect(p,a)
2279          #define IDirectDrawSurface3_Blt(p,a,b,c,d,e)             (p)->lpVtbl->Blt(p,a,b,c,d,e)
2280          #define IDirectDrawSurface3_BltBatch(p,a,b,c)            (p)->lpVtbl->BltBatch(p,a,b,c)
2281          #define IDirectDrawSurface3_BltFast(p,a,b,c,d,e)         (p)->lpVtbl->BltFast(p,a,b,c,d,e)
2282          #define IDirectDrawSurface3_DeleteAttachedSurface(p,a,b) (p)->lpVtbl->DeleteAttachedSurface(p,a,b)
2283          #define IDirectDrawSurface3_EnumAttachedSurfaces(p,a,b)  (p)->lpVtbl->EnumAttachedSurfaces(p,a,b)
2284          #define IDirectDrawSurface3_EnumOverlayZOrders(p,a,b,c)  (p)->lpVtbl->EnumOverlayZOrders(p,a,b,c)
2285          #define IDirectDrawSurface3_Flip(p,a,b)                  (p)->lpVtbl->Flip(p,a,b)
2286          #define IDirectDrawSurface3_GetAttachedSurface(p,a,b)    (p)->lpVtbl->GetAttachedSurface(p,a,b)
2287          #define IDirectDrawSurface3_GetBltStatus(p,a)            (p)->lpVtbl->GetBltStatus(p,a)
2288          #define IDirectDrawSurface3_GetCaps(p,b)                 (p)->lpVtbl->GetCaps(p,b)
2289          #define IDirectDrawSurface3_GetClipper(p,a)              (p)->lpVtbl->GetClipper(p,a)
2290          #define IDirectDrawSurface3_GetColorKey(p,a,b)           (p)->lpVtbl->GetColorKey(p,a,b)
2291          #define IDirectDrawSurface3_GetDC(p,a)                   (p)->lpVtbl->GetDC(p,a)
2292          #define IDirectDrawSurface3_GetFlipStatus(p,a)           (p)->lpVtbl->GetFlipStatus(p,a)
2293          #define IDirectDrawSurface3_GetOverlayPosition(p,a,b)    (p)->lpVtbl->GetOverlayPosition(p,a,b)
2294          #define IDirectDrawSurface3_GetPalette(p,a)              (p)->lpVtbl->GetPalette(p,a)
2295          #define IDirectDrawSurface3_GetPixelFormat(p,a)          (p)->lpVtbl->GetPixelFormat(p,a)
2296          #define IDirectDrawSurface3_GetSurfaceDesc(p,a)          (p)->lpVtbl->GetSurfaceDesc(p,a)
2297          #define IDirectDrawSurface3_Initialize(p,a,b)            (p)->lpVtbl->Initialize(p,a,b)
2298          #define IDirectDrawSurface3_IsLost(p)                    (p)->lpVtbl->IsLost(p)
2299          #define IDirectDrawSurface3_Lock(p,a,b,c,d)              (p)->lpVtbl->Lock(p,a,b,c,d)
2300          #define IDirectDrawSurface3_ReleaseDC(p,a)               (p)->lpVtbl->ReleaseDC(p,a)
2301          #define IDirectDrawSurface3_Restore(p)                   (p)->lpVtbl->Restore(p)
2302          #define IDirectDrawSurface3_SetClipper(p,a)              (p)->lpVtbl->SetClipper(p,a)
2303          #define IDirectDrawSurface3_SetColorKey(p,a,b)           (p)->lpVtbl->SetColorKey(p,a,b)
2304          #define IDirectDrawSurface3_SetOverlayPosition(p,a,b)    (p)->lpVtbl->SetOverlayPosition(p,a,b)
2305          #define IDirectDrawSurface3_SetPalette(p,a)              (p)->lpVtbl->SetPalette(p,a)
2306          #define IDirectDrawSurface3_Unlock(p,b)                  (p)->lpVtbl->Unlock(p,b)
2307          #define IDirectDrawSurface3_UpdateOverlay(p,a,b,c,d,e)   (p)->lpVtbl->UpdateOverlay(p,a,b,c,d,e)
2308          #define IDirectDrawSurface3_UpdateOverlayDisplay(p,a)    (p)->lpVtbl->UpdateOverlayDisplay(p,a)
2309          #define IDirectDrawSurface3_UpdateOverlayZOrder(p,a,b)   (p)->lpVtbl->UpdateOverlayZOrder(p,a,b)
2310          #define IDirectDrawSurface3_GetDDInterface(p,a)          (p)->lpVtbl->GetDDInterface(p,a)
2311          #define IDirectDrawSurface3_PageLock(p,a)                (p)->lpVtbl->PageLock(p,a)
2312          #define IDirectDrawSurface3_PageUnlock(p,a)              (p)->lpVtbl->PageUnlock(p,a)
2313          #define IDirectDrawSurface3_SetSurfaceDesc(p,a,b)        (p)->lpVtbl->SetSurfaceDesc(p,a,b)
2314      #else
2315          #define IDirectDrawSurface3_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
2316          #define IDirectDrawSurface3_AddRef(p)                    (p)->AddRef()
2317          #define IDirectDrawSurface3_Release(p)                   (p)->Release()
2318          #define IDirectDrawSurface3_AddAttachedSurface(p,a)      (p)->AddAttachedSurface(a)
2319          #define IDirectDrawSurface3_AddOverlayDirtyRect(p,a)     (p)->AddOverlayDirtyRect(a)
2320          #define IDirectDrawSurface3_Blt(p,a,b,c,d,e)             (p)->Blt(a,b,c,d,e)
2321          #define IDirectDrawSurface3_BltBatch(p,a,b,c)            (p)->BltBatch(a,b,c)
2322          #define IDirectDrawSurface3_BltFast(p,a,b,c,d,e)         (p)->BltFast(a,b,c,d,e)
2323          #define IDirectDrawSurface3_DeleteAttachedSurface(p,a,b) (p)->DeleteAttachedSurface(a,b)
2324          #define IDirectDrawSurface3_EnumAttachedSurfaces(p,a,b)  (p)->EnumAttachedSurfaces(a,b)
2325          #define IDirectDrawSurface3_EnumOverlayZOrders(p,a,b,c)  (p)->EnumOverlayZOrders(a,b,c)
2326          #define IDirectDrawSurface3_Flip(p,a,b)                  (p)->Flip(a,b)
2327          #define IDirectDrawSurface3_GetAttachedSurface(p,a,b)    (p)->GetAttachedSurface(a,b)
2328          #define IDirectDrawSurface3_GetBltStatus(p,a)            (p)->GetBltStatus(a)
2329          #define IDirectDrawSurface3_GetCaps(p,b)                 (p)->GetCaps(b)
2330          #define IDirectDrawSurface3_GetClipper(p,a)              (p)->GetClipper(a)
2331          #define IDirectDrawSurface3_GetColorKey(p,a,b)           (p)->GetColorKey(a,b)
2332          #define IDirectDrawSurface3_GetDC(p,a)                   (p)->GetDC(a)
2333          #define IDirectDrawSurface3_GetFlipStatus(p,a)           (p)->GetFlipStatus(a)
2334          #define IDirectDrawSurface3_GetOverlayPosition(p,a,b)    (p)->GetOverlayPosition(a,b)
2335          #define IDirectDrawSurface3_GetPalette(p,a)              (p)->GetPalette(a)
2336          #define IDirectDrawSurface3_GetPixelFormat(p,a)          (p)->GetPixelFormat(a)
2337          #define IDirectDrawSurface3_GetSurfaceDesc(p,a)          (p)->GetSurfaceDesc(a)
2338          #define IDirectDrawSurface3_Initialize(p,a,b)            (p)->Initialize(a,b)
2339          #define IDirectDrawSurface3_IsLost(p)                    (p)->IsLost()
2340          #define IDirectDrawSurface3_Lock(p,a,b,c,d)              (p)->Lock(a,b,c,d)
2341          #define IDirectDrawSurface3_ReleaseDC(p,a)               (p)->ReleaseDC(a)
2342          #define IDirectDrawSurface3_Restore(p)                   (p)->Restore()
2343          #define IDirectDrawSurface3_SetClipper(p,a)              (p)->SetClipper(a)
2344          #define IDirectDrawSurface3_SetColorKey(p,a,b)           (p)->SetColorKey(a,b)
2345          #define IDirectDrawSurface3_SetOverlayPosition(p,a,b)    (p)->SetOverlayPosition(a,b)
2346          #define IDirectDrawSurface3_SetPalette(p,a)              (p)->SetPalette(a)
2347          #define IDirectDrawSurface3_Unlock(p,b)                  (p)->Unlock(b)
2348          #define IDirectDrawSurface3_UpdateOverlay(p,a,b,c,d,e)   (p)->UpdateOverlay(a,b,c,d,e)
2349          #define IDirectDrawSurface3_UpdateOverlayDisplay(p,a)    (p)->UpdateOverlayDisplay(a)
2350          #define IDirectDrawSurface3_UpdateOverlayZOrder(p,a,b)   (p)->UpdateOverlayZOrder(a,b)
2351          #define IDirectDrawSurface3_GetDDInterface(p,a)          (p)->GetDDInterface(a)
2352          #define IDirectDrawSurface3_PageLock(p,a)                (p)->PageLock(a)
2353          #define IDirectDrawSurface3_PageUnlock(p,a)              (p)->PageUnlock(a)
2354          #define IDirectDrawSurface3_SetSurfaceDesc(p,a,b)        (p)->SetSurfaceDesc(a,b)
2355      #endif
2356 #endif
2357 
2358 #if defined( _WIN32 ) && !defined( _NO_COM )
2359      #undef INTERFACE
2360      #define INTERFACE IDirectDrawSurface4
2361 
DECLARE_INTERFACE_(IDirectDrawSurface4,IUnknown)2362      DECLARE_INTERFACE_( IDirectDrawSurface4, IUnknown )
2363      {
2364        STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE;
2365        STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
2366        STDMETHOD_(ULONG,Release) (THIS) PURE;
2367        STDMETHOD(AddAttachedSurface)(THIS_ LPDIRECTDRAWSURFACE4) PURE;
2368        STDMETHOD(AddOverlayDirtyRect)(THIS_ LPRECT) PURE;
2369        STDMETHOD(Blt)(THIS_ LPRECT,LPDIRECTDRAWSURFACE4, LPRECT,DWORD, LPDDBLTFX) PURE;
2370        STDMETHOD(BltBatch)(THIS_ LPDDBLTBATCH, DWORD, DWORD ) PURE;
2371        STDMETHOD(BltFast)(THIS_ DWORD,DWORD,LPDIRECTDRAWSURFACE4, LPRECT,DWORD) PURE;
2372        STDMETHOD(DeleteAttachedSurface)(THIS_ DWORD,LPDIRECTDRAWSURFACE4) PURE;
2373        STDMETHOD(EnumAttachedSurfaces)(THIS_ LPVOID,LPDDENUMSURFACESCALLBACK2) PURE;
2374        STDMETHOD(EnumOverlayZOrders)(THIS_ DWORD,LPVOID,LPDDENUMSURFACESCALLBACK2) PURE;
2375        STDMETHOD(Flip)(THIS_ LPDIRECTDRAWSURFACE4, DWORD) PURE;
2376        STDMETHOD(GetAttachedSurface)(THIS_ LPDDSCAPS2, LPDIRECTDRAWSURFACE4 *) PURE;
2377        STDMETHOD(GetBltStatus)(THIS_ DWORD) PURE;
2378        STDMETHOD(GetCaps)(THIS_ LPDDSCAPS2) PURE;
2379        STDMETHOD(GetClipper)(THIS_ LPDIRECTDRAWCLIPPER *) PURE;
2380        STDMETHOD(GetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE;
2381        STDMETHOD(GetDC)(THIS_ HDC *) PURE;
2382        STDMETHOD(GetFlipStatus)(THIS_ DWORD) PURE;
2383        STDMETHOD(GetOverlayPosition)(THIS_ LPLONG, LPLONG ) PURE;
2384        STDMETHOD(GetPalette)(THIS_ LPDIRECTDRAWPALETTE *) PURE;
2385        STDMETHOD(GetPixelFormat)(THIS_ LPDDPIXELFORMAT) PURE;
2386        STDMETHOD(GetSurfaceDesc)(THIS_ LPDDSURFACEDESC2) PURE;
2387        STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW, LPDDSURFACEDESC2) PURE;
2388        STDMETHOD(IsLost)(THIS) PURE;
2389        STDMETHOD(Lock)(THIS_ LPRECT,LPDDSURFACEDESC2,DWORD,HANDLE) PURE;
2390        STDMETHOD(ReleaseDC)(THIS_ HDC) PURE;
2391        STDMETHOD(Restore)(THIS) PURE;
2392        STDMETHOD(SetClipper)(THIS_ LPDIRECTDRAWCLIPPER) PURE;
2393        STDMETHOD(SetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE;
2394        STDMETHOD(SetOverlayPosition)(THIS_ LONG, LONG ) PURE;
2395        STDMETHOD(SetPalette)(THIS_ LPDIRECTDRAWPALETTE) PURE;
2396        STDMETHOD(Unlock)(THIS_ LPRECT) PURE;
2397        STDMETHOD(UpdateOverlay)(THIS_ LPRECT, LPDIRECTDRAWSURFACE4,LPRECT,DWORD, LPDDOVERLAYFX) PURE;
2398        STDMETHOD(UpdateOverlayDisplay)(THIS_ DWORD) PURE;
2399        STDMETHOD(UpdateOverlayZOrder)(THIS_ DWORD, LPDIRECTDRAWSURFACE4) PURE;
2400        STDMETHOD(GetDDInterface)(THIS_ LPVOID *) PURE;
2401        STDMETHOD(PageLock)(THIS_ DWORD) PURE;
2402        STDMETHOD(PageUnlock)(THIS_ DWORD) PURE;
2403        STDMETHOD(SetSurfaceDesc)(THIS_ LPDDSURFACEDESC2, DWORD) PURE;
2404        STDMETHOD(SetPrivateData)(THIS_ REFGUID, LPVOID, DWORD, DWORD) PURE;
2405        STDMETHOD(GetPrivateData)(THIS_ REFGUID, LPVOID, LPDWORD) PURE;
2406        STDMETHOD(FreePrivateData)(THIS_ REFGUID) PURE;
2407        STDMETHOD(GetUniquenessValue)(THIS_ LPDWORD) PURE;
2408        STDMETHOD(ChangeUniquenessValue)(THIS) PURE;
2409      };
2410      #if !defined(__cplusplus) || defined(CINTERFACE)
2411          #define IDirectDrawSurface4_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
2412          #define IDirectDrawSurface4_AddRef(p)                    (p)->lpVtbl->AddRef(p)
2413          #define IDirectDrawSurface4_Release(p)                   (p)->lpVtbl->Release(p)
2414          #define IDirectDrawSurface4_AddAttachedSurface(p,a)      (p)->lpVtbl->AddAttachedSurface(p,a)
2415          #define IDirectDrawSurface4_AddOverlayDirtyRect(p,a)     (p)->lpVtbl->AddOverlayDirtyRect(p,a)
2416          #define IDirectDrawSurface4_Blt(p,a,b,c,d,e)             (p)->lpVtbl->Blt(p,a,b,c,d,e)
2417          #define IDirectDrawSurface4_BltBatch(p,a,b,c)            (p)->lpVtbl->BltBatch(p,a,b,c)
2418          #define IDirectDrawSurface4_BltFast(p,a,b,c,d,e)         (p)->lpVtbl->BltFast(p,a,b,c,d,e)
2419          #define IDirectDrawSurface4_DeleteAttachedSurface(p,a,b) (p)->lpVtbl->DeleteAttachedSurface(p,a,b)
2420          #define IDirectDrawSurface4_EnumAttachedSurfaces(p,a,b)  (p)->lpVtbl->EnumAttachedSurfaces(p,a,b)
2421          #define IDirectDrawSurface4_EnumOverlayZOrders(p,a,b,c)  (p)->lpVtbl->EnumOverlayZOrders(p,a,b,c)
2422          #define IDirectDrawSurface4_Flip(p,a,b)                  (p)->lpVtbl->Flip(p,a,b)
2423          #define IDirectDrawSurface4_GetAttachedSurface(p,a,b)    (p)->lpVtbl->GetAttachedSurface(p,a,b)
2424          #define IDirectDrawSurface4_GetBltStatus(p,a)            (p)->lpVtbl->GetBltStatus(p,a)
2425          #define IDirectDrawSurface4_GetCaps(p,b)                 (p)->lpVtbl->GetCaps(p,b)
2426          #define IDirectDrawSurface4_GetClipper(p,a)              (p)->lpVtbl->GetClipper(p,a)
2427          #define IDirectDrawSurface4_GetColorKey(p,a,b)           (p)->lpVtbl->GetColorKey(p,a,b)
2428          #define IDirectDrawSurface4_GetDC(p,a)                   (p)->lpVtbl->GetDC(p,a)
2429          #define IDirectDrawSurface4_GetFlipStatus(p,a)           (p)->lpVtbl->GetFlipStatus(p,a)
2430          #define IDirectDrawSurface4_GetOverlayPosition(p,a,b)    (p)->lpVtbl->GetOverlayPosition(p,a,b)
2431          #define IDirectDrawSurface4_GetPalette(p,a)              (p)->lpVtbl->GetPalette(p,a)
2432          #define IDirectDrawSurface4_GetPixelFormat(p,a)          (p)->lpVtbl->GetPixelFormat(p,a)
2433          #define IDirectDrawSurface4_GetSurfaceDesc(p,a)          (p)->lpVtbl->GetSurfaceDesc(p,a)
2434          #define IDirectDrawSurface4_Initialize(p,a,b)            (p)->lpVtbl->Initialize(p,a,b)
2435          #define IDirectDrawSurface4_IsLost(p)                    (p)->lpVtbl->IsLost(p)
2436          #define IDirectDrawSurface4_Lock(p,a,b,c,d)              (p)->lpVtbl->Lock(p,a,b,c,d)
2437          #define IDirectDrawSurface4_ReleaseDC(p,a)               (p)->lpVtbl->ReleaseDC(p,a)
2438          #define IDirectDrawSurface4_Restore(p)                   (p)->lpVtbl->Restore(p)
2439          #define IDirectDrawSurface4_SetClipper(p,a)              (p)->lpVtbl->SetClipper(p,a)
2440          #define IDirectDrawSurface4_SetColorKey(p,a,b)           (p)->lpVtbl->SetColorKey(p,a,b)
2441          #define IDirectDrawSurface4_SetOverlayPosition(p,a,b)    (p)->lpVtbl->SetOverlayPosition(p,a,b)
2442          #define IDirectDrawSurface4_SetPalette(p,a)              (p)->lpVtbl->SetPalette(p,a)
2443          #define IDirectDrawSurface4_Unlock(p,b)                  (p)->lpVtbl->Unlock(p,b)
2444          #define IDirectDrawSurface4_UpdateOverlay(p,a,b,c,d,e)   (p)->lpVtbl->UpdateOverlay(p,a,b,c,d,e)
2445          #define IDirectDrawSurface4_UpdateOverlayDisplay(p,a)    (p)->lpVtbl->UpdateOverlayDisplay(p,a)
2446          #define IDirectDrawSurface4_UpdateOverlayZOrder(p,a,b)   (p)->lpVtbl->UpdateOverlayZOrder(p,a,b)
2447          #define IDirectDrawSurface4_GetDDInterface(p,a)          (p)->lpVtbl->GetDDInterface(p,a)
2448          #define IDirectDrawSurface4_PageLock(p,a)                (p)->lpVtbl->PageLock(p,a)
2449          #define IDirectDrawSurface4_PageUnlock(p,a)              (p)->lpVtbl->PageUnlock(p,a)
2450          #define IDirectDrawSurface4_SetSurfaceDesc(p,a,b)        (p)->lpVtbl->SetSurfaceDesc(p,a,b)
2451          #define IDirectDrawSurface4_SetPrivateData(p,a,b,c,d)    (p)->lpVtbl->SetPrivateData(p,a,b,c,d)
2452          #define IDirectDrawSurface4_GetPrivateData(p,a,b,c)      (p)->lpVtbl->GetPrivateData(p,a,b,c)
2453          #define IDirectDrawSurface4_FreePrivateData(p,a)         (p)->lpVtbl->FreePrivateData(p,a)
2454          #define IDirectDrawSurface4_GetUniquenessValue(p, a)     (p)->lpVtbl->GetUniquenessValue(p, a)
2455          #define IDirectDrawSurface4_ChangeUniquenessValue(p)     (p)->lpVtbl->ChangeUniquenessValue(p)
2456      #else
2457          #define IDirectDrawSurface4_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
2458          #define IDirectDrawSurface4_AddRef(p)                    (p)->AddRef()
2459          #define IDirectDrawSurface4_Release(p)                   (p)->Release()
2460          #define IDirectDrawSurface4_AddAttachedSurface(p,a)      (p)->AddAttachedSurface(a)
2461          #define IDirectDrawSurface4_AddOverlayDirtyRect(p,a)     (p)->AddOverlayDirtyRect(a)
2462          #define IDirectDrawSurface4_Blt(p,a,b,c,d,e)             (p)->Blt(a,b,c,d,e)
2463          #define IDirectDrawSurface4_BltBatch(p,a,b,c)            (p)->BltBatch(a,b,c)
2464          #define IDirectDrawSurface4_BltFast(p,a,b,c,d,e)         (p)->BltFast(a,b,c,d,e)
2465          #define IDirectDrawSurface4_DeleteAttachedSurface(p,a,b) (p)->DeleteAttachedSurface(a,b)
2466          #define IDirectDrawSurface4_EnumAttachedSurfaces(p,a,b)  (p)->EnumAttachedSurfaces(a,b)
2467          #define IDirectDrawSurface4_EnumOverlayZOrders(p,a,b,c)  (p)->EnumOverlayZOrders(a,b,c)
2468          #define IDirectDrawSurface4_Flip(p,a,b)                  (p)->Flip(a,b)
2469          #define IDirectDrawSurface4_GetAttachedSurface(p,a,b)    (p)->GetAttachedSurface(a,b)
2470          #define IDirectDrawSurface4_GetBltStatus(p,a)            (p)->GetBltStatus(a)
2471          #define IDirectDrawSurface4_GetCaps(p,b)                 (p)->GetCaps(b)
2472          #define IDirectDrawSurface4_GetClipper(p,a)              (p)->GetClipper(a)
2473          #define IDirectDrawSurface4_GetColorKey(p,a,b)           (p)->GetColorKey(a,b)
2474          #define IDirectDrawSurface4_GetDC(p,a)                   (p)->GetDC(a)
2475          #define IDirectDrawSurface4_GetFlipStatus(p,a)           (p)->GetFlipStatus(a)
2476          #define IDirectDrawSurface4_GetOverlayPosition(p,a,b)    (p)->GetOverlayPosition(a,b)
2477          #define IDirectDrawSurface4_GetPalette(p,a)              (p)->GetPalette(a)
2478          #define IDirectDrawSurface4_GetPixelFormat(p,a)          (p)->GetPixelFormat(a)
2479          #define IDirectDrawSurface4_GetSurfaceDesc(p,a)          (p)->GetSurfaceDesc(a)
2480          #define IDirectDrawSurface4_Initialize(p,a,b)            (p)->Initialize(a,b)
2481          #define IDirectDrawSurface4_IsLost(p)                    (p)->IsLost()
2482          #define IDirectDrawSurface4_Lock(p,a,b,c,d)              (p)->Lock(a,b,c,d)
2483          #define IDirectDrawSurface4_ReleaseDC(p,a)               (p)->ReleaseDC(a)
2484          #define IDirectDrawSurface4_Restore(p)                   (p)->Restore()
2485          #define IDirectDrawSurface4_SetClipper(p,a)              (p)->SetClipper(a)
2486          #define IDirectDrawSurface4_SetColorKey(p,a,b)           (p)->SetColorKey(a,b)
2487          #define IDirectDrawSurface4_SetOverlayPosition(p,a,b)    (p)->SetOverlayPosition(a,b)
2488          #define IDirectDrawSurface4_SetPalette(p,a)              (p)->SetPalette(a)
2489          #define IDirectDrawSurface4_Unlock(p,b)                  (p)->Unlock(b)
2490          #define IDirectDrawSurface4_UpdateOverlay(p,a,b,c,d,e)   (p)->UpdateOverlay(a,b,c,d,e)
2491          #define IDirectDrawSurface4_UpdateOverlayDisplay(p,a)    (p)->UpdateOverlayDisplay(a)
2492          #define IDirectDrawSurface4_UpdateOverlayZOrder(p,a,b)   (p)->UpdateOverlayZOrder(a,b)
2493          #define IDirectDrawSurface4_GetDDInterface(p,a)          (p)->GetDDInterface(a)
2494          #define IDirectDrawSurface4_PageLock(p,a)                (p)->PageLock(a)
2495          #define IDirectDrawSurface4_PageUnlock(p,a)              (p)->PageUnlock(a)
2496          #define IDirectDrawSurface4_SetSurfaceDesc(p,a,b)        (p)->SetSurfaceDesc(a,b)
2497          #define IDirectDrawSurface4_SetPrivateData(p,a,b,c,d)    (p)->SetPrivateData(a,b,c,d)
2498          #define IDirectDrawSurface4_GetPrivateData(p,a,b,c)      (p)->GetPrivateData(a,b,c)
2499          #define IDirectDrawSurface4_FreePrivateData(p,a)         (p)->FreePrivateData(a)
2500          #define IDirectDrawSurface4_GetUniquenessValue(p, a)     (p)->GetUniquenessValue(a)
2501          #define IDirectDrawSurface4_ChangeUniquenessValue(p)     (p)->ChangeUniquenessValue()
2502      #endif
2503 #endif
2504 
2505 #if defined( _WIN32 ) && !defined( _NO_COM )
2506      #undef INTERFACE
2507      #define INTERFACE IDirectDrawSurface7
2508 
DECLARE_INTERFACE_(IDirectDrawSurface7,IUnknown)2509      DECLARE_INTERFACE_( IDirectDrawSurface7, IUnknown )
2510      {
2511        STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE;
2512        STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
2513        STDMETHOD_(ULONG,Release) (THIS) PURE;
2514        STDMETHOD(AddAttachedSurface)(THIS_ LPDIRECTDRAWSURFACE7) PURE;
2515        STDMETHOD(AddOverlayDirtyRect)(THIS_ LPRECT) PURE;
2516        STDMETHOD(Blt)(THIS_ LPRECT,LPDIRECTDRAWSURFACE7, LPRECT,DWORD, LPDDBLTFX) PURE;
2517        STDMETHOD(BltBatch)(THIS_ LPDDBLTBATCH, DWORD, DWORD ) PURE;
2518        STDMETHOD(BltFast)(THIS_ DWORD,DWORD,LPDIRECTDRAWSURFACE7, LPRECT,DWORD) PURE;
2519        STDMETHOD(DeleteAttachedSurface)(THIS_ DWORD,LPDIRECTDRAWSURFACE7) PURE;
2520        STDMETHOD(EnumAttachedSurfaces)(THIS_ LPVOID,LPDDENUMSURFACESCALLBACK7) PURE;
2521        STDMETHOD(EnumOverlayZOrders)(THIS_ DWORD,LPVOID,LPDDENUMSURFACESCALLBACK7) PURE;
2522        STDMETHOD(Flip)(THIS_ LPDIRECTDRAWSURFACE7, DWORD) PURE;
2523        STDMETHOD(GetAttachedSurface)(THIS_ LPDDSCAPS2, LPDIRECTDRAWSURFACE7 *) PURE;
2524        STDMETHOD(GetBltStatus)(THIS_ DWORD) PURE;
2525        STDMETHOD(GetCaps)(THIS_ LPDDSCAPS2) PURE;
2526        STDMETHOD(GetClipper)(THIS_ LPDIRECTDRAWCLIPPER *) PURE;
2527        STDMETHOD(GetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE;
2528        STDMETHOD(GetDC)(THIS_ HDC *) PURE;
2529        STDMETHOD(GetFlipStatus)(THIS_ DWORD) PURE;
2530        STDMETHOD(GetOverlayPosition)(THIS_ LPLONG, LPLONG ) PURE;
2531        STDMETHOD(GetPalette)(THIS_ LPDIRECTDRAWPALETTE *) PURE;
2532        STDMETHOD(GetPixelFormat)(THIS_ LPDDPIXELFORMAT) PURE;
2533        STDMETHOD(GetSurfaceDesc)(THIS_ LPDDSURFACEDESC2) PURE;
2534        STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW, LPDDSURFACEDESC2) PURE;
2535        STDMETHOD(IsLost)(THIS) PURE;
2536        STDMETHOD(Lock)(THIS_ LPRECT,LPDDSURFACEDESC2,DWORD,HANDLE) PURE;
2537        STDMETHOD(ReleaseDC)(THIS_ HDC) PURE;
2538        STDMETHOD(Restore)(THIS) PURE;
2539        STDMETHOD(SetClipper)(THIS_ LPDIRECTDRAWCLIPPER) PURE;
2540        STDMETHOD(SetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE;
2541        STDMETHOD(SetOverlayPosition)(THIS_ LONG, LONG ) PURE;
2542        STDMETHOD(SetPalette)(THIS_ LPDIRECTDRAWPALETTE) PURE;
2543        STDMETHOD(Unlock)(THIS_ LPRECT) PURE;
2544        STDMETHOD(UpdateOverlay)(THIS_ LPRECT, LPDIRECTDRAWSURFACE7,LPRECT,DWORD, LPDDOVERLAYFX) PURE;
2545        STDMETHOD(UpdateOverlayDisplay)(THIS_ DWORD) PURE;
2546        STDMETHOD(UpdateOverlayZOrder)(THIS_ DWORD, LPDIRECTDRAWSURFACE7) PURE;
2547        STDMETHOD(GetDDInterface)(THIS_ LPVOID *) PURE;
2548        STDMETHOD(PageLock)(THIS_ DWORD) PURE;
2549        STDMETHOD(PageUnlock)(THIS_ DWORD) PURE;
2550        STDMETHOD(SetSurfaceDesc)(THIS_ LPDDSURFACEDESC2, DWORD) PURE;
2551        STDMETHOD(SetPrivateData)(THIS_ REFGUID, LPVOID, DWORD, DWORD) PURE;
2552        STDMETHOD(GetPrivateData)(THIS_ REFGUID, LPVOID, LPDWORD) PURE;
2553        STDMETHOD(FreePrivateData)(THIS_ REFGUID) PURE;
2554        STDMETHOD(GetUniquenessValue)(THIS_ LPDWORD) PURE;
2555        STDMETHOD(ChangeUniquenessValue)(THIS) PURE;
2556        STDMETHOD(SetPriority)(THIS_ DWORD) PURE;
2557        STDMETHOD(GetPriority)(THIS_ LPDWORD) PURE;
2558        STDMETHOD(SetLOD)(THIS_ DWORD) PURE;
2559        STDMETHOD(GetLOD)(THIS_ LPDWORD) PURE;
2560      };
2561      #if !defined(__cplusplus) || defined(CINTERFACE)
2562          #define IDirectDrawSurface7_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
2563          #define IDirectDrawSurface7_AddRef(p)                    (p)->lpVtbl->AddRef(p)
2564          #define IDirectDrawSurface7_Release(p)                   (p)->lpVtbl->Release(p)
2565          #define IDirectDrawSurface7_AddAttachedSurface(p,a)      (p)->lpVtbl->AddAttachedSurface(p,a)
2566          #define IDirectDrawSurface7_AddOverlayDirtyRect(p,a)     (p)->lpVtbl->AddOverlayDirtyRect(p,a)
2567          #define IDirectDrawSurface7_Blt(p,a,b,c,d,e)             (p)->lpVtbl->Blt(p,a,b,c,d,e)
2568          #define IDirectDrawSurface7_BltBatch(p,a,b,c)            (p)->lpVtbl->BltBatch(p,a,b,c)
2569          #define IDirectDrawSurface7_BltFast(p,a,b,c,d,e)         (p)->lpVtbl->BltFast(p,a,b,c,d,e)
2570          #define IDirectDrawSurface7_DeleteAttachedSurface(p,a,b) (p)->lpVtbl->DeleteAttachedSurface(p,a,b)
2571          #define IDirectDrawSurface7_EnumAttachedSurfaces(p,a,b)  (p)->lpVtbl->EnumAttachedSurfaces(p,a,b)
2572          #define IDirectDrawSurface7_EnumOverlayZOrders(p,a,b,c)  (p)->lpVtbl->EnumOverlayZOrders(p,a,b,c)
2573          #define IDirectDrawSurface7_Flip(p,a,b)                  (p)->lpVtbl->Flip(p,a,b)
2574          #define IDirectDrawSurface7_GetAttachedSurface(p,a,b)    (p)->lpVtbl->GetAttachedSurface(p,a,b)
2575          #define IDirectDrawSurface7_GetBltStatus(p,a)            (p)->lpVtbl->GetBltStatus(p,a)
2576          #define IDirectDrawSurface7_GetCaps(p,b)                 (p)->lpVtbl->GetCaps(p,b)
2577          #define IDirectDrawSurface7_GetClipper(p,a)              (p)->lpVtbl->GetClipper(p,a)
2578          #define IDirectDrawSurface7_GetColorKey(p,a,b)           (p)->lpVtbl->GetColorKey(p,a,b)
2579          #define IDirectDrawSurface7_GetDC(p,a)                   (p)->lpVtbl->GetDC(p,a)
2580          #define IDirectDrawSurface7_GetFlipStatus(p,a)           (p)->lpVtbl->GetFlipStatus(p,a)
2581          #define IDirectDrawSurface7_GetOverlayPosition(p,a,b)    (p)->lpVtbl->GetOverlayPosition(p,a,b)
2582          #define IDirectDrawSurface7_GetPalette(p,a)              (p)->lpVtbl->GetPalette(p,a)
2583          #define IDirectDrawSurface7_GetPixelFormat(p,a)          (p)->lpVtbl->GetPixelFormat(p,a)
2584          #define IDirectDrawSurface7_GetSurfaceDesc(p,a)          (p)->lpVtbl->GetSurfaceDesc(p,a)
2585          #define IDirectDrawSurface7_Initialize(p,a,b)            (p)->lpVtbl->Initialize(p,a,b)
2586          #define IDirectDrawSurface7_IsLost(p)                    (p)->lpVtbl->IsLost(p)
2587          #define IDirectDrawSurface7_Lock(p,a,b,c,d)              (p)->lpVtbl->Lock(p,a,b,c,d)
2588          #define IDirectDrawSurface7_ReleaseDC(p,a)               (p)->lpVtbl->ReleaseDC(p,a)
2589          #define IDirectDrawSurface7_Restore(p)                   (p)->lpVtbl->Restore(p)
2590          #define IDirectDrawSurface7_SetClipper(p,a)              (p)->lpVtbl->SetClipper(p,a)
2591          #define IDirectDrawSurface7_SetColorKey(p,a,b)           (p)->lpVtbl->SetColorKey(p,a,b)
2592          #define IDirectDrawSurface7_SetOverlayPosition(p,a,b)    (p)->lpVtbl->SetOverlayPosition(p,a,b)
2593          #define IDirectDrawSurface7_SetPalette(p,a)              (p)->lpVtbl->SetPalette(p,a)
2594          #define IDirectDrawSurface7_Unlock(p,b)                  (p)->lpVtbl->Unlock(p,b)
2595          #define IDirectDrawSurface7_UpdateOverlay(p,a,b,c,d,e)   (p)->lpVtbl->UpdateOverlay(p,a,b,c,d,e)
2596          #define IDirectDrawSurface7_UpdateOverlayDisplay(p,a)    (p)->lpVtbl->UpdateOverlayDisplay(p,a)
2597          #define IDirectDrawSurface7_UpdateOverlayZOrder(p,a,b)   (p)->lpVtbl->UpdateOverlayZOrder(p,a,b)
2598          #define IDirectDrawSurface7_GetDDInterface(p,a)          (p)->lpVtbl->GetDDInterface(p,a)
2599          #define IDirectDrawSurface7_PageLock(p,a)                (p)->lpVtbl->PageLock(p,a)
2600          #define IDirectDrawSurface7_PageUnlock(p,a)              (p)->lpVtbl->PageUnlock(p,a)
2601          #define IDirectDrawSurface7_SetSurfaceDesc(p,a,b)        (p)->lpVtbl->SetSurfaceDesc(p,a,b)
2602          #define IDirectDrawSurface7_SetPrivateData(p,a,b,c,d)    (p)->lpVtbl->SetPrivateData(p,a,b,c,d)
2603          #define IDirectDrawSurface7_GetPrivateData(p,a,b,c)      (p)->lpVtbl->GetPrivateData(p,a,b,c)
2604          #define IDirectDrawSurface7_FreePrivateData(p,a)         (p)->lpVtbl->FreePrivateData(p,a)
2605          #define IDirectDrawSurface7_GetUniquenessValue(p, a)     (p)->lpVtbl->GetUniquenessValue(p, a)
2606          #define IDirectDrawSurface7_ChangeUniquenessValue(p)     (p)->lpVtbl->ChangeUniquenessValue(p)
2607          #define IDirectDrawSurface7_SetPriority(p,a)             (p)->lpVtbl->SetPriority(p,a)
2608          #define IDirectDrawSurface7_GetPriority(p,a)             (p)->lpVtbl->GetPriority(p,a)
2609          #define IDirectDrawSurface7_SetLOD(p,a)                  (p)->lpVtbl->SetLOD(p,a)
2610          #define IDirectDrawSurface7_GetLOD(p,a)                  (p)->lpVtbl->GetLOD(p,a)
2611      #else
2612          #define IDirectDrawSurface7_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
2613          #define IDirectDrawSurface7_AddRef(p)                    (p)->AddRef()
2614          #define IDirectDrawSurface7_Release(p)                   (p)->Release()
2615          #define IDirectDrawSurface7_AddAttachedSurface(p,a)      (p)->AddAttachedSurface(a)
2616          #define IDirectDrawSurface7_AddOverlayDirtyRect(p,a)     (p)->AddOverlayDirtyRect(a)
2617          #define IDirectDrawSurface7_Blt(p,a,b,c,d,e)             (p)->Blt(a,b,c,d,e)
2618          #define IDirectDrawSurface7_BltBatch(p,a,b,c)            (p)->BltBatch(a,b,c)
2619          #define IDirectDrawSurface7_BltFast(p,a,b,c,d,e)         (p)->BltFast(a,b,c,d,e)
2620          #define IDirectDrawSurface7_DeleteAttachedSurface(p,a,b) (p)->DeleteAttachedSurface(a,b)
2621          #define IDirectDrawSurface7_EnumAttachedSurfaces(p,a,b)  (p)->EnumAttachedSurfaces(a,b)
2622          #define IDirectDrawSurface7_EnumOverlayZOrders(p,a,b,c)  (p)->EnumOverlayZOrders(a,b,c)
2623          #define IDirectDrawSurface7_Flip(p,a,b)                  (p)->Flip(a,b)
2624          #define IDirectDrawSurface7_GetAttachedSurface(p,a,b)    (p)->GetAttachedSurface(a,b)
2625          #define IDirectDrawSurface7_GetBltStatus(p,a)            (p)->GetBltStatus(a)
2626          #define IDirectDrawSurface7_GetCaps(p,b)                 (p)->GetCaps(b)
2627          #define IDirectDrawSurface7_GetClipper(p,a)              (p)->GetClipper(a)
2628          #define IDirectDrawSurface7_GetColorKey(p,a,b)           (p)->GetColorKey(a,b)
2629          #define IDirectDrawSurface7_GetDC(p,a)                   (p)->GetDC(a)
2630          #define IDirectDrawSurface7_GetFlipStatus(p,a)           (p)->GetFlipStatus(a)
2631          #define IDirectDrawSurface7_GetOverlayPosition(p,a,b)    (p)->GetOverlayPosition(a,b)
2632          #define IDirectDrawSurface7_GetPalette(p,a)              (p)->GetPalette(a)
2633          #define IDirectDrawSurface7_GetPixelFormat(p,a)          (p)->GetPixelFormat(a)
2634          #define IDirectDrawSurface7_GetSurfaceDesc(p,a)          (p)->GetSurfaceDesc(a)
2635          #define IDirectDrawSurface7_Initialize(p,a,b)            (p)->Initialize(a,b)
2636          #define IDirectDrawSurface7_IsLost(p)                    (p)->IsLost()
2637          #define IDirectDrawSurface7_Lock(p,a,b,c,d)              (p)->Lock(a,b,c,d)
2638          #define IDirectDrawSurface7_ReleaseDC(p,a)               (p)->ReleaseDC(a)
2639          #define IDirectDrawSurface7_Restore(p)                   (p)->Restore()
2640          #define IDirectDrawSurface7_SetClipper(p,a)              (p)->SetClipper(a)
2641          #define IDirectDrawSurface7_SetColorKey(p,a,b)           (p)->SetColorKey(a,b)
2642          #define IDirectDrawSurface7_SetOverlayPosition(p,a,b)    (p)->SetOverlayPosition(a,b)
2643          #define IDirectDrawSurface7_SetPalette(p,a)              (p)->SetPalette(a)
2644          #define IDirectDrawSurface7_Unlock(p,b)                  (p)->Unlock(b)
2645          #define IDirectDrawSurface7_UpdateOverlay(p,a,b,c,d,e)   (p)->UpdateOverlay(a,b,c,d,e)
2646          #define IDirectDrawSurface7_UpdateOverlayDisplay(p,a)    (p)->UpdateOverlayDisplay(a)
2647          #define IDirectDrawSurface7_UpdateOverlayZOrder(p,a,b)   (p)->UpdateOverlayZOrder(a,b)
2648          #define IDirectDrawSurface7_GetDDInterface(p,a)          (p)->GetDDInterface(a)
2649          #define IDirectDrawSurface7_PageLock(p,a)                (p)->PageLock(a)
2650          #define IDirectDrawSurface7_PageUnlock(p,a)              (p)->PageUnlock(a)
2651          #define IDirectDrawSurface7_SetSurfaceDesc(p,a,b)        (p)->SetSurfaceDesc(a,b)
2652          #define IDirectDrawSurface7_SetPrivateData(p,a,b,c,d)    (p)->SetPrivateData(a,b,c,d)
2653          #define IDirectDrawSurface7_GetPrivateData(p,a,b,c)      (p)->GetPrivateData(a,b,c)
2654          #define IDirectDrawSurface7_FreePrivateData(p,a)         (p)->FreePrivateData(a)
2655          #define IDirectDrawSurface7_GetUniquenessValue(p, a)     (p)->GetUniquenessValue(a)
2656          #define IDirectDrawSurface7_ChangeUniquenessValue(p)     (p)->ChangeUniquenessValue()
2657          #define IDirectDrawSurface7_SetPriority(p,a)             (p)->SetPriority(a)
2658          #define IDirectDrawSurface7_GetPriority(p,a)             (p)->GetPriority(a)
2659          #define IDirectDrawSurface7_SetLOD(p,a)                  (p)->SetLOD(a)
2660          #define IDirectDrawSurface7_GetLOD(p,a)                  (p)->GetLOD(a)
2661      #endif
2662 #endif
2663 #undef INTERFACE
2664 
2665 #ifdef __cplusplus
2666 }
2667 #endif
2668 
2669 #ifdef ENABLE_NAMELESS_UNION_PRAGMA
2670   #pragma warning(default:4201)
2671 #endif
2672 
2673 #endif
2674