xref: /OK3568_Linux_fs/external/xserver/hw/xwin/ddraw.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun #ifdef __MINGW64_VERSION_MAJOR
2*4882a593Smuzhiyun #include_next <ddraw.h>
3*4882a593Smuzhiyun #define __XWIN_DDRAW_H
4*4882a593Smuzhiyun #endif
5*4882a593Smuzhiyun #ifndef __XWIN_DDRAW_H
6*4882a593Smuzhiyun #define __XWIN_DDRAW_H
7*4882a593Smuzhiyun 
8*4882a593Smuzhiyun #include <winnt.h>
9*4882a593Smuzhiyun #include <wingdi.h>
10*4882a593Smuzhiyun #include <objbase.h>
11*4882a593Smuzhiyun 
12*4882a593Smuzhiyun #if defined(NONAMELESSUNION) && !defined(DUMMYUNIONNAME1)
13*4882a593Smuzhiyun #define DUMMYUNIONNAME1 u1
14*4882a593Smuzhiyun #endif
15*4882a593Smuzhiyun 
16*4882a593Smuzhiyun #define ICOM_CALL_( xfn, p, args) (p)->lpVtbl->xfn args
17*4882a593Smuzhiyun 
18*4882a593Smuzhiyun #ifdef UNICODE
19*4882a593Smuzhiyun #define WINELIB_NAME_AW(func) func##W
20*4882a593Smuzhiyun #else
21*4882a593Smuzhiyun #define WINELIB_NAME_AW(func) func##A
22*4882a593Smuzhiyun #endif                          /* UNICODE */
23*4882a593Smuzhiyun #define DECL_WINELIB_TYPE_AW(type)  typedef WINELIB_NAME_AW(type) type;
24*4882a593Smuzhiyun 
25*4882a593Smuzhiyun #ifdef __cplusplus
26*4882a593Smuzhiyun extern "C" {
27*4882a593Smuzhiyun #endif                          /* defined(__cplusplus) */
28*4882a593Smuzhiyun 
29*4882a593Smuzhiyun #ifndef	DIRECTDRAW_VERSION
30*4882a593Smuzhiyun #define	DIRECTDRAW_VERSION	0x0700
31*4882a593Smuzhiyun #endif                          /* DIRECTDRAW_VERSION */
32*4882a593Smuzhiyun 
33*4882a593Smuzhiyun /*****************************************************************************
34*4882a593Smuzhiyun  * Predeclare the interfaces
35*4882a593Smuzhiyun  */
36*4882a593Smuzhiyun     DEFINE_GUID(CLSID_DirectDraw, 0xD7B70EE0, 0x4340, 0x11CF, 0xB0, 0x63, 0x00,
37*4882a593Smuzhiyun                 0x20, 0xAF, 0xC2, 0xCD, 0x35);
38*4882a593Smuzhiyun     DEFINE_GUID(CLSID_DirectDraw7, 0x3C305196, 0x50DB, 0x11D3, 0x9C, 0xFE, 0x00,
39*4882a593Smuzhiyun                 0xC0, 0x4F, 0xD9, 0x30, 0xC5);
40*4882a593Smuzhiyun     DEFINE_GUID(CLSID_DirectDrawClipper, 0x593817A0, 0x7DB3, 0x11CF, 0xA2, 0xDE,
41*4882a593Smuzhiyun                 0x00, 0xAA, 0x00, 0xb9, 0x33, 0x56);
42*4882a593Smuzhiyun     DEFINE_GUID(IID_IDirectDraw, 0x6C14DB80, 0xA733, 0x11CE, 0xA5, 0x21, 0x00,
43*4882a593Smuzhiyun                 0x20, 0xAF, 0x0B, 0xE5, 0x60);
44*4882a593Smuzhiyun     DEFINE_GUID(IID_IDirectDraw2, 0xB3A6F3E0, 0x2B43, 0x11CF, 0xA2, 0xDE, 0x00,
45*4882a593Smuzhiyun                 0xAA, 0x00, 0xB9, 0x33, 0x56);
46*4882a593Smuzhiyun     DEFINE_GUID(IID_IDirectDraw4, 0x9c59509a, 0x39bd, 0x11d1, 0x8c, 0x4a, 0x00,
47*4882a593Smuzhiyun                 0xc0, 0x4f, 0xd9, 0x30, 0xc5);
48*4882a593Smuzhiyun     DEFINE_GUID(IID_IDirectDraw7, 0x15e65ec0, 0x3b9c, 0x11d2, 0xb9, 0x2f, 0x00,
49*4882a593Smuzhiyun                 0x60, 0x97, 0x97, 0xea, 0x5b);
50*4882a593Smuzhiyun     DEFINE_GUID(IID_IDirectDrawSurface, 0x6C14DB81, 0xA733, 0x11CE, 0xA5, 0x21,
51*4882a593Smuzhiyun                 0x00, 0x20, 0xAF, 0x0B, 0xE5, 0x60);
52*4882a593Smuzhiyun     DEFINE_GUID(IID_IDirectDrawSurface2, 0x57805885, 0x6eec, 0x11cf, 0x94, 0x41,
53*4882a593Smuzhiyun                 0xa8, 0x23, 0x03, 0xc1, 0x0e, 0x27);
54*4882a593Smuzhiyun     DEFINE_GUID(IID_IDirectDrawSurface3, 0xDA044E00, 0x69B2, 0x11D0, 0xA1, 0xD5,
55*4882a593Smuzhiyun                 0x00, 0xAA, 0x00, 0xB8, 0xDF, 0xBB);
56*4882a593Smuzhiyun     DEFINE_GUID(IID_IDirectDrawSurface4, 0x0B2B8630, 0xAD35, 0x11D0, 0x8E, 0xA6,
57*4882a593Smuzhiyun                 0x00, 0x60, 0x97, 0x97, 0xEA, 0x5B);
58*4882a593Smuzhiyun     DEFINE_GUID(IID_IDirectDrawSurface7, 0x06675a80, 0x3b9b, 0x11d2, 0xb9, 0x2f,
59*4882a593Smuzhiyun                 0x00, 0x60, 0x97, 0x97, 0xea, 0x5b);
60*4882a593Smuzhiyun     DEFINE_GUID(IID_IDirectDrawPalette, 0x6C14DB84, 0xA733, 0x11CE, 0xA5, 0x21,
61*4882a593Smuzhiyun                 0x00, 0x20, 0xAF, 0x0B, 0xE5, 0x60);
62*4882a593Smuzhiyun     DEFINE_GUID(IID_IDirectDrawClipper, 0x6C14DB85, 0xA733, 0x11CE, 0xA5, 0x21,
63*4882a593Smuzhiyun                 0x00, 0x20, 0xAF, 0x0B, 0xE5, 0x60);
64*4882a593Smuzhiyun     DEFINE_GUID(IID_IDirectDrawColorControl, 0x4B9F0EE0, 0x0D7E, 0x11D0, 0x9B,
65*4882a593Smuzhiyun                 0x06, 0x00, 0xA0, 0xC9, 0x03, 0xA3, 0xB8);
66*4882a593Smuzhiyun     DEFINE_GUID(IID_IDirectDrawGammaControl, 0x69C11C3E, 0xB46B, 0x11D1, 0xAD,
67*4882a593Smuzhiyun                 0x7A, 0x00, 0xC0, 0x4F, 0xC2, 0x9B, 0x4E);
68*4882a593Smuzhiyun 
69*4882a593Smuzhiyun     typedef struct IDirectDraw *LPDIRECTDRAW;
70*4882a593Smuzhiyun     typedef struct IDirectDraw2 *LPDIRECTDRAW2;
71*4882a593Smuzhiyun     typedef struct IDirectDraw4 *LPDIRECTDRAW4;
72*4882a593Smuzhiyun     typedef struct IDirectDraw7 *LPDIRECTDRAW7;
73*4882a593Smuzhiyun     typedef struct IDirectDrawClipper *LPDIRECTDRAWCLIPPER;
74*4882a593Smuzhiyun     typedef struct IDirectDrawPalette *LPDIRECTDRAWPALETTE;
75*4882a593Smuzhiyun     typedef struct IDirectDrawSurface *LPDIRECTDRAWSURFACE;
76*4882a593Smuzhiyun     typedef struct IDirectDrawSurface2 *LPDIRECTDRAWSURFACE2;
77*4882a593Smuzhiyun     typedef struct IDirectDrawSurface3 *LPDIRECTDRAWSURFACE3;
78*4882a593Smuzhiyun     typedef struct IDirectDrawSurface4 *LPDIRECTDRAWSURFACE4;
79*4882a593Smuzhiyun     typedef struct IDirectDrawSurface7 *LPDIRECTDRAWSURFACE7;
80*4882a593Smuzhiyun     typedef struct IDirectDrawColorControl *LPDIRECTDRAWCOLORCONTROL;
81*4882a593Smuzhiyun     typedef struct IDirectDrawGammaControl *LPDIRECTDRAWGAMMACONTROL;
82*4882a593Smuzhiyun 
83*4882a593Smuzhiyun #define DDENUMRET_CANCEL	0
84*4882a593Smuzhiyun #define DDENUMRET_OK		1
85*4882a593Smuzhiyun 
86*4882a593Smuzhiyun #define DD_OK			0
87*4882a593Smuzhiyun 
88*4882a593Smuzhiyun #define _FACDD		0x876
89*4882a593Smuzhiyun #define MAKE_DDHRESULT( code )  MAKE_HRESULT( 1, _FACDD, code )
90*4882a593Smuzhiyun 
91*4882a593Smuzhiyun #define DDERR_ALREADYINITIALIZED		MAKE_DDHRESULT( 5 )
92*4882a593Smuzhiyun #define DDERR_CANNOTATTACHSURFACE		MAKE_DDHRESULT( 10 )
93*4882a593Smuzhiyun #define DDERR_CANNOTDETACHSURFACE		MAKE_DDHRESULT( 20 )
94*4882a593Smuzhiyun #define DDERR_CURRENTLYNOTAVAIL			MAKE_DDHRESULT( 40 )
95*4882a593Smuzhiyun #define DDERR_EXCEPTION				MAKE_DDHRESULT( 55 )
96*4882a593Smuzhiyun #define DDERR_GENERIC				E_FAIL
97*4882a593Smuzhiyun #define DDERR_HEIGHTALIGN			MAKE_DDHRESULT( 90 )
98*4882a593Smuzhiyun #define DDERR_INCOMPATIBLEPRIMARY		MAKE_DDHRESULT( 95 )
99*4882a593Smuzhiyun #define DDERR_INVALIDCAPS			MAKE_DDHRESULT( 100 )
100*4882a593Smuzhiyun #define DDERR_INVALIDCLIPLIST			MAKE_DDHRESULT( 110 )
101*4882a593Smuzhiyun #define DDERR_INVALIDMODE			MAKE_DDHRESULT( 120 )
102*4882a593Smuzhiyun #define DDERR_INVALIDOBJECT			MAKE_DDHRESULT( 130 )
103*4882a593Smuzhiyun #define DDERR_INVALIDPARAMS			E_INVALIDARG
104*4882a593Smuzhiyun #define DDERR_INVALIDPIXELFORMAT		MAKE_DDHRESULT( 145 )
105*4882a593Smuzhiyun #define DDERR_INVALIDRECT			MAKE_DDHRESULT( 150 )
106*4882a593Smuzhiyun #define DDERR_LOCKEDSURFACES			MAKE_DDHRESULT( 160 )
107*4882a593Smuzhiyun #define DDERR_NO3D				MAKE_DDHRESULT( 170 )
108*4882a593Smuzhiyun #define DDERR_NOALPHAHW				MAKE_DDHRESULT( 180 )
109*4882a593Smuzhiyun #define DDERR_NOSTEREOHARDWARE          	MAKE_DDHRESULT( 181 )
110*4882a593Smuzhiyun #define DDERR_NOSURFACELEFT                     MAKE_DDHRESULT( 182 )
111*4882a593Smuzhiyun #define DDERR_NOCLIPLIST			MAKE_DDHRESULT( 205 )
112*4882a593Smuzhiyun #define DDERR_NOCOLORCONVHW			MAKE_DDHRESULT( 210 )
113*4882a593Smuzhiyun #define DDERR_NOCOOPERATIVELEVELSET		MAKE_DDHRESULT( 212 )
114*4882a593Smuzhiyun #define DDERR_NOCOLORKEY			MAKE_DDHRESULT( 215 )
115*4882a593Smuzhiyun #define DDERR_NOCOLORKEYHW			MAKE_DDHRESULT( 220 )
116*4882a593Smuzhiyun #define DDERR_NODIRECTDRAWSUPPORT		MAKE_DDHRESULT( 222 )
117*4882a593Smuzhiyun #define DDERR_NOEXCLUSIVEMODE			MAKE_DDHRESULT( 225 )
118*4882a593Smuzhiyun #define DDERR_NOFLIPHW				MAKE_DDHRESULT( 230 )
119*4882a593Smuzhiyun #define DDERR_NOGDI				MAKE_DDHRESULT( 240 )
120*4882a593Smuzhiyun #define DDERR_NOMIRRORHW			MAKE_DDHRESULT( 250 )
121*4882a593Smuzhiyun #define DDERR_NOTFOUND				MAKE_DDHRESULT( 255 )
122*4882a593Smuzhiyun #define DDERR_NOOVERLAYHW			MAKE_DDHRESULT( 260 )
123*4882a593Smuzhiyun #define DDERR_OVERLAPPINGRECTS                  MAKE_DDHRESULT( 270 )
124*4882a593Smuzhiyun #define DDERR_NORASTEROPHW			MAKE_DDHRESULT( 280 )
125*4882a593Smuzhiyun #define DDERR_NOROTATIONHW			MAKE_DDHRESULT( 290 )
126*4882a593Smuzhiyun #define DDERR_NOSTRETCHHW			MAKE_DDHRESULT( 310 )
127*4882a593Smuzhiyun #define DDERR_NOT4BITCOLOR			MAKE_DDHRESULT( 316 )
128*4882a593Smuzhiyun #define DDERR_NOT4BITCOLORINDEX			MAKE_DDHRESULT( 317 )
129*4882a593Smuzhiyun #define DDERR_NOT8BITCOLOR			MAKE_DDHRESULT( 320 )
130*4882a593Smuzhiyun #define DDERR_NOTEXTUREHW			MAKE_DDHRESULT( 330 )
131*4882a593Smuzhiyun #define DDERR_NOVSYNCHW				MAKE_DDHRESULT( 335 )
132*4882a593Smuzhiyun #define DDERR_NOZBUFFERHW			MAKE_DDHRESULT( 340 )
133*4882a593Smuzhiyun #define DDERR_NOZOVERLAYHW			MAKE_DDHRESULT( 350 )
134*4882a593Smuzhiyun #define DDERR_OUTOFCAPS				MAKE_DDHRESULT( 360 )
135*4882a593Smuzhiyun #define DDERR_OUTOFMEMORY			E_OUTOFMEMORY
136*4882a593Smuzhiyun #define DDERR_OUTOFVIDEOMEMORY			MAKE_DDHRESULT( 380 )
137*4882a593Smuzhiyun #define DDERR_OVERLAYCANTCLIP			MAKE_DDHRESULT( 382 )
138*4882a593Smuzhiyun #define DDERR_OVERLAYCOLORKEYONLYONEACTIVE	MAKE_DDHRESULT( 384 )
139*4882a593Smuzhiyun #define DDERR_PALETTEBUSY			MAKE_DDHRESULT( 387 )
140*4882a593Smuzhiyun #define DDERR_COLORKEYNOTSET			MAKE_DDHRESULT( 400 )
141*4882a593Smuzhiyun #define DDERR_SURFACEALREADYATTACHED		MAKE_DDHRESULT( 410 )
142*4882a593Smuzhiyun #define DDERR_SURFACEALREADYDEPENDENT		MAKE_DDHRESULT( 420 )
143*4882a593Smuzhiyun #define DDERR_SURFACEBUSY			MAKE_DDHRESULT( 430 )
144*4882a593Smuzhiyun #define DDERR_CANTLOCKSURFACE			MAKE_DDHRESULT( 435 )
145*4882a593Smuzhiyun #define DDERR_SURFACEISOBSCURED			MAKE_DDHRESULT( 440 )
146*4882a593Smuzhiyun #define DDERR_SURFACELOST			MAKE_DDHRESULT( 450 )
147*4882a593Smuzhiyun #define DDERR_SURFACENOTATTACHED		MAKE_DDHRESULT( 460 )
148*4882a593Smuzhiyun #define DDERR_TOOBIGHEIGHT			MAKE_DDHRESULT( 470 )
149*4882a593Smuzhiyun #define DDERR_TOOBIGSIZE			MAKE_DDHRESULT( 480 )
150*4882a593Smuzhiyun #define DDERR_TOOBIGWIDTH			MAKE_DDHRESULT( 490 )
151*4882a593Smuzhiyun #define DDERR_UNSUPPORTED			E_NOTIMPL
152*4882a593Smuzhiyun #define DDERR_UNSUPPORTEDFORMAT			MAKE_DDHRESULT( 510 )
153*4882a593Smuzhiyun #define DDERR_UNSUPPORTEDMASK			MAKE_DDHRESULT( 520 )
154*4882a593Smuzhiyun #define DDERR_INVALIDSTREAM                     MAKE_DDHRESULT( 521 )
155*4882a593Smuzhiyun #define DDERR_VERTICALBLANKINPROGRESS		MAKE_DDHRESULT( 537 )
156*4882a593Smuzhiyun #define DDERR_WASSTILLDRAWING			MAKE_DDHRESULT( 540 )
157*4882a593Smuzhiyun #define DDERR_DDSCAPSCOMPLEXREQUIRED            MAKE_DDHRESULT( 542 )
158*4882a593Smuzhiyun #define DDERR_XALIGN				MAKE_DDHRESULT( 560 )
159*4882a593Smuzhiyun #define DDERR_INVALIDDIRECTDRAWGUID		MAKE_DDHRESULT( 561 )
160*4882a593Smuzhiyun #define DDERR_DIRECTDRAWALREADYCREATED		MAKE_DDHRESULT( 562 )
161*4882a593Smuzhiyun #define DDERR_NODIRECTDRAWHW			MAKE_DDHRESULT( 563 )
162*4882a593Smuzhiyun #define DDERR_PRIMARYSURFACEALREADYEXISTS	MAKE_DDHRESULT( 564 )
163*4882a593Smuzhiyun #define DDERR_NOEMULATION			MAKE_DDHRESULT( 565 )
164*4882a593Smuzhiyun #define DDERR_REGIONTOOSMALL			MAKE_DDHRESULT( 566 )
165*4882a593Smuzhiyun #define DDERR_CLIPPERISUSINGHWND		MAKE_DDHRESULT( 567 )
166*4882a593Smuzhiyun #define DDERR_NOCLIPPERATTACHED			MAKE_DDHRESULT( 568 )
167*4882a593Smuzhiyun #define DDERR_NOHWND				MAKE_DDHRESULT( 569 )
168*4882a593Smuzhiyun #define DDERR_HWNDSUBCLASSED			MAKE_DDHRESULT( 570 )
169*4882a593Smuzhiyun #define DDERR_HWNDALREADYSET			MAKE_DDHRESULT( 571 )
170*4882a593Smuzhiyun #define DDERR_NOPALETTEATTACHED			MAKE_DDHRESULT( 572 )
171*4882a593Smuzhiyun #define DDERR_NOPALETTEHW			MAKE_DDHRESULT( 573 )
172*4882a593Smuzhiyun #define DDERR_BLTFASTCANTCLIP			MAKE_DDHRESULT( 574 )
173*4882a593Smuzhiyun #define DDERR_NOBLTHW				MAKE_DDHRESULT( 575 )
174*4882a593Smuzhiyun #define DDERR_NODDROPSHW			MAKE_DDHRESULT( 576 )
175*4882a593Smuzhiyun #define DDERR_OVERLAYNOTVISIBLE			MAKE_DDHRESULT( 577 )
176*4882a593Smuzhiyun #define DDERR_NOOVERLAYDEST			MAKE_DDHRESULT( 578 )
177*4882a593Smuzhiyun #define DDERR_INVALIDPOSITION			MAKE_DDHRESULT( 579 )
178*4882a593Smuzhiyun #define DDERR_NOTAOVERLAYSURFACE		MAKE_DDHRESULT( 580 )
179*4882a593Smuzhiyun #define DDERR_EXCLUSIVEMODEALREADYSET		MAKE_DDHRESULT( 581 )
180*4882a593Smuzhiyun #define DDERR_NOTFLIPPABLE			MAKE_DDHRESULT( 582 )
181*4882a593Smuzhiyun #define DDERR_CANTDUPLICATE			MAKE_DDHRESULT( 583 )
182*4882a593Smuzhiyun #define DDERR_NOTLOCKED				MAKE_DDHRESULT( 584 )
183*4882a593Smuzhiyun #define DDERR_CANTCREATEDC			MAKE_DDHRESULT( 585 )
184*4882a593Smuzhiyun #define DDERR_NODC				MAKE_DDHRESULT( 586 )
185*4882a593Smuzhiyun #define DDERR_WRONGMODE				MAKE_DDHRESULT( 587 )
186*4882a593Smuzhiyun #define DDERR_IMPLICITLYCREATED			MAKE_DDHRESULT( 588 )
187*4882a593Smuzhiyun #define DDERR_NOTPALETTIZED			MAKE_DDHRESULT( 589 )
188*4882a593Smuzhiyun #define DDERR_UNSUPPORTEDMODE			MAKE_DDHRESULT( 590 )
189*4882a593Smuzhiyun #define DDERR_NOMIPMAPHW			MAKE_DDHRESULT( 591 )
190*4882a593Smuzhiyun #define DDERR_INVALIDSURFACETYPE		MAKE_DDHRESULT( 592 )
191*4882a593Smuzhiyun #define DDERR_NOOPTIMIZEHW			MAKE_DDHRESULT( 600 )
192*4882a593Smuzhiyun #define DDERR_NOTLOADED				MAKE_DDHRESULT( 601 )
193*4882a593Smuzhiyun #define DDERR_NOFOCUSWINDOW			MAKE_DDHRESULT( 602 )
194*4882a593Smuzhiyun #define DDERR_NOTONMIPMAPSUBLEVEL               MAKE_DDHRESULT( 603 )
195*4882a593Smuzhiyun #define DDERR_DCALREADYCREATED			MAKE_DDHRESULT( 620 )
196*4882a593Smuzhiyun #define DDERR_NONONLOCALVIDMEM			MAKE_DDHRESULT( 630 )
197*4882a593Smuzhiyun #define DDERR_CANTPAGELOCK			MAKE_DDHRESULT( 640 )
198*4882a593Smuzhiyun #define DDERR_CANTPAGEUNLOCK			MAKE_DDHRESULT( 660 )
199*4882a593Smuzhiyun #define DDERR_NOTPAGELOCKED			MAKE_DDHRESULT( 680 )
200*4882a593Smuzhiyun #define DDERR_MOREDATA				MAKE_DDHRESULT( 690 )
201*4882a593Smuzhiyun #define DDERR_EXPIRED                           MAKE_DDHRESULT( 691 )
202*4882a593Smuzhiyun #define DDERR_TESTFINISHED                      MAKE_DDHRESULT( 692 )
203*4882a593Smuzhiyun #define DDERR_NEWMODE                           MAKE_DDHRESULT( 693 )
204*4882a593Smuzhiyun #define DDERR_D3DNOTINITIALIZED                 MAKE_DDHRESULT( 694 )
205*4882a593Smuzhiyun #define DDERR_VIDEONOTACTIVE			MAKE_DDHRESULT( 695 )
206*4882a593Smuzhiyun #define DDERR_NOMONITORINFORMATION              MAKE_DDHRESULT( 696 )
207*4882a593Smuzhiyun #define DDERR_NODRIVERSUPPORT                   MAKE_DDHRESULT( 697 )
208*4882a593Smuzhiyun #define DDERR_DEVICEDOESNTOWNSURFACE		MAKE_DDHRESULT( 699 )
209*4882a593Smuzhiyun #define DDERR_NOTINITIALIZED			CO_E_NOTINITIALIZED
210*4882a593Smuzhiyun 
211*4882a593Smuzhiyun /* dwFlags for Blt* */
212*4882a593Smuzhiyun #define DDBLT_ALPHADEST				0x00000001
213*4882a593Smuzhiyun #define DDBLT_ALPHADESTCONSTOVERRIDE		0x00000002
214*4882a593Smuzhiyun #define DDBLT_ALPHADESTNEG			0x00000004
215*4882a593Smuzhiyun #define DDBLT_ALPHADESTSURFACEOVERRIDE		0x00000008
216*4882a593Smuzhiyun #define DDBLT_ALPHAEDGEBLEND			0x00000010
217*4882a593Smuzhiyun #define DDBLT_ALPHASRC				0x00000020
218*4882a593Smuzhiyun #define DDBLT_ALPHASRCCONSTOVERRIDE		0x00000040
219*4882a593Smuzhiyun #define DDBLT_ALPHASRCNEG			0x00000080
220*4882a593Smuzhiyun #define DDBLT_ALPHASRCSURFACEOVERRIDE		0x00000100
221*4882a593Smuzhiyun #define DDBLT_ASYNC				0x00000200
222*4882a593Smuzhiyun #define DDBLT_COLORFILL				0x00000400
223*4882a593Smuzhiyun #define DDBLT_DDFX				0x00000800
224*4882a593Smuzhiyun #define DDBLT_DDROPS				0x00001000
225*4882a593Smuzhiyun #define DDBLT_KEYDEST				0x00002000
226*4882a593Smuzhiyun #define DDBLT_KEYDESTOVERRIDE			0x00004000
227*4882a593Smuzhiyun #define DDBLT_KEYSRC				0x00008000
228*4882a593Smuzhiyun #define DDBLT_KEYSRCOVERRIDE			0x00010000
229*4882a593Smuzhiyun #define DDBLT_ROP				0x00020000
230*4882a593Smuzhiyun #define DDBLT_ROTATIONANGLE			0x00040000
231*4882a593Smuzhiyun #define DDBLT_ZBUFFER				0x00080000
232*4882a593Smuzhiyun #define DDBLT_ZBUFFERDESTCONSTOVERRIDE		0x00100000
233*4882a593Smuzhiyun #define DDBLT_ZBUFFERDESTOVERRIDE		0x00200000
234*4882a593Smuzhiyun #define DDBLT_ZBUFFERSRCCONSTOVERRIDE		0x00400000
235*4882a593Smuzhiyun #define DDBLT_ZBUFFERSRCOVERRIDE		0x00800000
236*4882a593Smuzhiyun #define DDBLT_WAIT				0x01000000
237*4882a593Smuzhiyun #define DDBLT_DEPTHFILL				0x02000000
238*4882a593Smuzhiyun #define DDBLT_DONOTWAIT                         0x08000000
239*4882a593Smuzhiyun 
240*4882a593Smuzhiyun /* dwTrans for BltFast */
241*4882a593Smuzhiyun #define DDBLTFAST_NOCOLORKEY			0x00000000
242*4882a593Smuzhiyun #define DDBLTFAST_SRCCOLORKEY			0x00000001
243*4882a593Smuzhiyun #define DDBLTFAST_DESTCOLORKEY			0x00000002
244*4882a593Smuzhiyun #define DDBLTFAST_WAIT				0x00000010
245*4882a593Smuzhiyun #define DDBLTFAST_DONOTWAIT                     0x00000020
246*4882a593Smuzhiyun 
247*4882a593Smuzhiyun /* dwFlags for Flip */
248*4882a593Smuzhiyun #define DDFLIP_WAIT		0x00000001
249*4882a593Smuzhiyun #define DDFLIP_EVEN		0x00000002      /* only valid for overlay */
250*4882a593Smuzhiyun #define DDFLIP_ODD		0x00000004      /* only valid for overlay */
251*4882a593Smuzhiyun #define DDFLIP_NOVSYNC		0x00000008
252*4882a593Smuzhiyun #define DDFLIP_STEREO		0x00000010
253*4882a593Smuzhiyun #define DDFLIP_DONOTWAIT	0x00000020
254*4882a593Smuzhiyun 
255*4882a593Smuzhiyun /* dwFlags for GetBltStatus */
256*4882a593Smuzhiyun #define DDGBS_CANBLT				0x00000001
257*4882a593Smuzhiyun #define DDGBS_ISBLTDONE				0x00000002
258*4882a593Smuzhiyun 
259*4882a593Smuzhiyun /* dwFlags for IDirectDrawSurface7::GetFlipStatus */
260*4882a593Smuzhiyun #define DDGFS_CANFLIP		1L
261*4882a593Smuzhiyun #define DDGFS_ISFLIPDONE	2L
262*4882a593Smuzhiyun 
263*4882a593Smuzhiyun /* dwFlags for IDirectDrawSurface7::SetPrivateData */
264*4882a593Smuzhiyun #define DDSPD_IUNKNOWNPTR	1L
265*4882a593Smuzhiyun #define DDSPD_VOLATILE		2L
266*4882a593Smuzhiyun 
267*4882a593Smuzhiyun /* DDSCAPS.dwCaps */
268*4882a593Smuzhiyun /* reserved1, was 3d capable */
269*4882a593Smuzhiyun #define DDSCAPS_RESERVED1		0x00000001
270*4882a593Smuzhiyun /* surface contains alpha information */
271*4882a593Smuzhiyun #define DDSCAPS_ALPHA			0x00000002
272*4882a593Smuzhiyun /* this surface is a backbuffer */
273*4882a593Smuzhiyun #define DDSCAPS_BACKBUFFER		0x00000004
274*4882a593Smuzhiyun /* complex surface structure */
275*4882a593Smuzhiyun #define DDSCAPS_COMPLEX			0x00000008
276*4882a593Smuzhiyun /* part of surface flipping structure */
277*4882a593Smuzhiyun #define DDSCAPS_FLIP			0x00000010
278*4882a593Smuzhiyun /* this surface is the frontbuffer surface */
279*4882a593Smuzhiyun #define DDSCAPS_FRONTBUFFER		0x00000020
280*4882a593Smuzhiyun /* this is a plain offscreen surface */
281*4882a593Smuzhiyun #define DDSCAPS_OFFSCREENPLAIN		0x00000040
282*4882a593Smuzhiyun /* overlay */
283*4882a593Smuzhiyun #define DDSCAPS_OVERLAY			0x00000080
284*4882a593Smuzhiyun /* palette objects can be created and attached to us */
285*4882a593Smuzhiyun #define DDSCAPS_PALETTE			0x00000100
286*4882a593Smuzhiyun /* primary surface (the one the user looks at currently)(right eye)*/
287*4882a593Smuzhiyun #define DDSCAPS_PRIMARYSURFACE		0x00000200
288*4882a593Smuzhiyun /* primary surface for left eye */
289*4882a593Smuzhiyun #define DDSCAPS_PRIMARYSURFACELEFT	0x00000400
290*4882a593Smuzhiyun /* surface exists in systemmemory */
291*4882a593Smuzhiyun #define DDSCAPS_SYSTEMMEMORY		0x00000800
292*4882a593Smuzhiyun /* surface can be used as a texture */
293*4882a593Smuzhiyun #define DDSCAPS_TEXTURE		        0x00001000
294*4882a593Smuzhiyun /* surface may be destination for 3d rendering */
295*4882a593Smuzhiyun #define DDSCAPS_3DDEVICE		0x00002000
296*4882a593Smuzhiyun /* surface exists in videomemory */
297*4882a593Smuzhiyun #define DDSCAPS_VIDEOMEMORY		0x00004000
298*4882a593Smuzhiyun /* surface changes immediately visible */
299*4882a593Smuzhiyun #define DDSCAPS_VISIBLE			0x00008000
300*4882a593Smuzhiyun /* write only surface */
301*4882a593Smuzhiyun #define DDSCAPS_WRITEONLY		0x00010000
302*4882a593Smuzhiyun /* zbuffer surface */
303*4882a593Smuzhiyun #define DDSCAPS_ZBUFFER			0x00020000
304*4882a593Smuzhiyun /* has its own DC */
305*4882a593Smuzhiyun #define DDSCAPS_OWNDC			0x00040000
306*4882a593Smuzhiyun /* surface should be able to receive live video */
307*4882a593Smuzhiyun #define DDSCAPS_LIVEVIDEO		0x00080000
308*4882a593Smuzhiyun /* should be able to have a hw codec decompress stuff into it */
309*4882a593Smuzhiyun #define DDSCAPS_HWCODEC			0x00100000
310*4882a593Smuzhiyun /* mode X (320x200 or 320x240) surface */
311*4882a593Smuzhiyun #define DDSCAPS_MODEX			0x00200000
312*4882a593Smuzhiyun /* one mipmap surface (1 level) */
313*4882a593Smuzhiyun #define DDSCAPS_MIPMAP			0x00400000
314*4882a593Smuzhiyun #define DDSCAPS_RESERVED2		0x00800000
315*4882a593Smuzhiyun /* memory allocation delayed until Load() */
316*4882a593Smuzhiyun #define DDSCAPS_ALLOCONLOAD		0x04000000
317*4882a593Smuzhiyun /* Indicates that the surface will receive data from a video port */
318*4882a593Smuzhiyun #define DDSCAPS_VIDEOPORT		0x08000000
319*4882a593Smuzhiyun /* surface is in local videomemory */
320*4882a593Smuzhiyun #define DDSCAPS_LOCALVIDMEM		0x10000000
321*4882a593Smuzhiyun /* surface is in nonlocal videomemory */
322*4882a593Smuzhiyun #define DDSCAPS_NONLOCALVIDMEM		0x20000000
323*4882a593Smuzhiyun /* surface is a standard VGA mode surface (NOT ModeX) */
324*4882a593Smuzhiyun #define DDSCAPS_STANDARDVGAMODE		0x40000000
325*4882a593Smuzhiyun /* optimized? surface */
326*4882a593Smuzhiyun #define DDSCAPS_OPTIMIZED		0x80000000
327*4882a593Smuzhiyun 
328*4882a593Smuzhiyun     typedef struct _DDSCAPS {
329*4882a593Smuzhiyun         DWORD dwCaps;           /* capabilities of surface wanted */
330*4882a593Smuzhiyun     } DDSCAPS, *LPDDSCAPS;
331*4882a593Smuzhiyun 
332*4882a593Smuzhiyun /* DDSCAPS2.dwCaps2 */
333*4882a593Smuzhiyun /* indicates the surface will receive data from a video port using
334*4882a593Smuzhiyun    deinterlacing hardware. */
335*4882a593Smuzhiyun #define DDSCAPS2_HARDWAREDEINTERLACE	0x00000002
336*4882a593Smuzhiyun /* indicates the surface will be locked very frequently. */
337*4882a593Smuzhiyun #define DDSCAPS2_HINTDYNAMIC		0x00000004
338*4882a593Smuzhiyun /* indicates surface can be re-ordered or retiled on load() */
339*4882a593Smuzhiyun #define DDSCAPS2_HINTSTATIC             0x00000008
340*4882a593Smuzhiyun /* indicates surface to be managed by directdraw/direct3D */
341*4882a593Smuzhiyun #define DDSCAPS2_TEXTUREMANAGE          0x00000010
342*4882a593Smuzhiyun /* reserved bits */
343*4882a593Smuzhiyun #define DDSCAPS2_RESERVED1              0x00000020
344*4882a593Smuzhiyun #define DDSCAPS2_RESERVED2              0x00000040
345*4882a593Smuzhiyun /* indicates surface will never be locked again */
346*4882a593Smuzhiyun #define DDSCAPS2_OPAQUE                 0x00000080
347*4882a593Smuzhiyun /* set at CreateSurface() time to indicate antialising will be used */
348*4882a593Smuzhiyun #define DDSCAPS2_HINTANTIALIASING       0x00000100
349*4882a593Smuzhiyun /* set at CreateSurface() time to indicate cubic environment map */
350*4882a593Smuzhiyun #define DDSCAPS2_CUBEMAP                0x00000200
351*4882a593Smuzhiyun /* face flags for cube maps */
352*4882a593Smuzhiyun #define DDSCAPS2_CUBEMAP_POSITIVEX      0x00000400
353*4882a593Smuzhiyun #define DDSCAPS2_CUBEMAP_NEGATIVEX      0x00000800
354*4882a593Smuzhiyun #define DDSCAPS2_CUBEMAP_POSITIVEY      0x00001000
355*4882a593Smuzhiyun #define DDSCAPS2_CUBEMAP_NEGATIVEY      0x00002000
356*4882a593Smuzhiyun #define DDSCAPS2_CUBEMAP_POSITIVEZ      0x00004000
357*4882a593Smuzhiyun #define DDSCAPS2_CUBEMAP_NEGATIVEZ      0x00008000
358*4882a593Smuzhiyun /* specifies all faces of a cube for CreateSurface() */
359*4882a593Smuzhiyun #define DDSCAPS2_CUBEMAP_ALLFACES ( DDSCAPS2_CUBEMAP_POSITIVEX |\
360*4882a593Smuzhiyun                                     DDSCAPS2_CUBEMAP_NEGATIVEX |\
361*4882a593Smuzhiyun                                     DDSCAPS2_CUBEMAP_POSITIVEY |\
362*4882a593Smuzhiyun                                     DDSCAPS2_CUBEMAP_NEGATIVEY |\
363*4882a593Smuzhiyun                                     DDSCAPS2_CUBEMAP_POSITIVEZ |\
364*4882a593Smuzhiyun                                     DDSCAPS2_CUBEMAP_NEGATIVEZ )
365*4882a593Smuzhiyun /* set for mipmap sublevels on DirectX7 and later.  ignored by CreateSurface() */
366*4882a593Smuzhiyun #define DDSCAPS2_MIPMAPSUBLEVEL         0x00010000
367*4882a593Smuzhiyun /* indicates texture surface to be managed by Direct3D *only* */
368*4882a593Smuzhiyun #define DDSCAPS2_D3DTEXTUREMANAGE       0x00020000
369*4882a593Smuzhiyun /* indicates managed surface that can safely be lost */
370*4882a593Smuzhiyun #define DDSCAPS2_DONOTPERSIST           0x00040000
371*4882a593Smuzhiyun /* indicates surface is part of a stereo flipping chain */
372*4882a593Smuzhiyun #define DDSCAPS2_STEREOSURFACELEFT      0x00080000
373*4882a593Smuzhiyun 
374*4882a593Smuzhiyun     typedef struct _DDSCAPS2 {
375*4882a593Smuzhiyun         DWORD dwCaps;           /* capabilities of surface wanted */
376*4882a593Smuzhiyun         DWORD dwCaps2;          /* additional capabilities */
377*4882a593Smuzhiyun         DWORD dwCaps3;          /* reserved capabilities */
378*4882a593Smuzhiyun         DWORD dwCaps4;          /* more reserved capabilities */
379*4882a593Smuzhiyun     } DDSCAPS2, *LPDDSCAPS2;
380*4882a593Smuzhiyun 
381*4882a593Smuzhiyun #define	DD_ROP_SPACE	(256/32)        /* space required to store ROP array */
382*4882a593Smuzhiyun 
383*4882a593Smuzhiyun     typedef struct _DDCAPS_DX7 {        /* DirectX 7 version of caps struct */
384*4882a593Smuzhiyun         DWORD dwSize;           /* size of the DDDRIVERCAPS structure */
385*4882a593Smuzhiyun         DWORD dwCaps;           /* driver specific capabilities */
386*4882a593Smuzhiyun         DWORD dwCaps2;          /* more driver specific capabilites */
387*4882a593Smuzhiyun         DWORD dwCKeyCaps;       /* color key capabilities of the surface */
388*4882a593Smuzhiyun         DWORD dwFXCaps;         /* driver specific stretching and effects capabilites */
389*4882a593Smuzhiyun         DWORD dwFXAlphaCaps;    /* alpha driver specific capabilities */
390*4882a593Smuzhiyun         DWORD dwPalCaps;        /* palette capabilities */
391*4882a593Smuzhiyun         DWORD dwSVCaps;         /* stereo vision capabilities */
392*4882a593Smuzhiyun         DWORD dwAlphaBltConstBitDepths; /* DDBD_2,4,8 */
393*4882a593Smuzhiyun         DWORD dwAlphaBltPixelBitDepths; /* DDBD_1,2,4,8 */
394*4882a593Smuzhiyun         DWORD dwAlphaBltSurfaceBitDepths;       /* DDBD_1,2,4,8 */
395*4882a593Smuzhiyun         DWORD dwAlphaOverlayConstBitDepths;     /* DDBD_2,4,8 */
396*4882a593Smuzhiyun         DWORD dwAlphaOverlayPixelBitDepths;     /* DDBD_1,2,4,8 */
397*4882a593Smuzhiyun         DWORD dwAlphaOverlaySurfaceBitDepths;   /* DDBD_1,2,4,8 */
398*4882a593Smuzhiyun         DWORD dwZBufferBitDepths;       /* DDBD_8,16,24,32 */
399*4882a593Smuzhiyun         DWORD dwVidMemTotal;    /* total amount of video memory */
400*4882a593Smuzhiyun         DWORD dwVidMemFree;     /* amount of free video memory */
401*4882a593Smuzhiyun         DWORD dwMaxVisibleOverlays;     /* maximum number of visible overlays */
402*4882a593Smuzhiyun         DWORD dwCurrVisibleOverlays;    /* current number of visible overlays */
403*4882a593Smuzhiyun         DWORD dwNumFourCCCodes; /* number of four cc codes */
404*4882a593Smuzhiyun         DWORD dwAlignBoundarySrc;       /* source rectangle alignment */
405*4882a593Smuzhiyun         DWORD dwAlignSizeSrc;   /* source rectangle byte size */
406*4882a593Smuzhiyun         DWORD dwAlignBoundaryDest;      /* dest rectangle alignment */
407*4882a593Smuzhiyun         DWORD dwAlignSizeDest;  /* dest rectangle byte size */
408*4882a593Smuzhiyun         DWORD dwAlignStrideAlign;       /* stride alignment */
409*4882a593Smuzhiyun         DWORD dwRops[DD_ROP_SPACE];     /* ROPS supported */
410*4882a593Smuzhiyun         DDSCAPS ddsOldCaps;     /* old DDSCAPS - superceded for DirectX6+ */
411*4882a593Smuzhiyun         DWORD dwMinOverlayStretch;      /* minimum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
412*4882a593Smuzhiyun         DWORD dwMaxOverlayStretch;      /* maximum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
413*4882a593Smuzhiyun         DWORD dwMinLiveVideoStretch;    /* minimum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
414*4882a593Smuzhiyun         DWORD dwMaxLiveVideoStretch;    /* maximum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
415*4882a593Smuzhiyun         DWORD dwMinHwCodecStretch;      /* minimum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
416*4882a593Smuzhiyun         DWORD dwMaxHwCodecStretch;      /* maximum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
417*4882a593Smuzhiyun         DWORD dwReserved1;
418*4882a593Smuzhiyun         DWORD dwReserved2;
419*4882a593Smuzhiyun         DWORD dwReserved3;
420*4882a593Smuzhiyun         DWORD dwSVBCaps;        /* driver specific capabilities for System->Vmem blts */
421*4882a593Smuzhiyun         DWORD dwSVBCKeyCaps;    /* driver color key capabilities for System->Vmem blts */
422*4882a593Smuzhiyun         DWORD dwSVBFXCaps;      /* driver FX capabilities for System->Vmem blts */
423*4882a593Smuzhiyun         DWORD dwSVBRops[DD_ROP_SPACE];  /* ROPS supported for System->Vmem blts */
424*4882a593Smuzhiyun         DWORD dwVSBCaps;        /* driver specific capabilities for Vmem->System blts */
425*4882a593Smuzhiyun         DWORD dwVSBCKeyCaps;    /* driver color key capabilities for Vmem->System blts */
426*4882a593Smuzhiyun         DWORD dwVSBFXCaps;      /* driver FX capabilities for Vmem->System blts */
427*4882a593Smuzhiyun         DWORD dwVSBRops[DD_ROP_SPACE];  /* ROPS supported for Vmem->System blts */
428*4882a593Smuzhiyun         DWORD dwSSBCaps;        /* driver specific capabilities for System->System blts */
429*4882a593Smuzhiyun         DWORD dwSSBCKeyCaps;    /* driver color key capabilities for System->System blts */
430*4882a593Smuzhiyun         DWORD dwSSBFXCaps;      /* driver FX capabilities for System->System blts */
431*4882a593Smuzhiyun         DWORD dwSSBRops[DD_ROP_SPACE];  /* ROPS supported for System->System blts */
432*4882a593Smuzhiyun         DWORD dwMaxVideoPorts;  /* maximum number of usable video ports */
433*4882a593Smuzhiyun         DWORD dwCurrVideoPorts; /* current number of video ports used */
434*4882a593Smuzhiyun         DWORD dwSVBCaps2;       /* more driver specific capabilities for System->Vmem blts */
435*4882a593Smuzhiyun         DWORD dwNLVBCaps;       /* driver specific capabilities for non-local->local vidmem blts */
436*4882a593Smuzhiyun         DWORD dwNLVBCaps2;      /* more driver specific capabilities non-local->local vidmem blts */
437*4882a593Smuzhiyun         DWORD dwNLVBCKeyCaps;   /* driver color key capabilities for non-local->local vidmem blts */
438*4882a593Smuzhiyun         DWORD dwNLVBFXCaps;     /* driver FX capabilities for non-local->local blts */
439*4882a593Smuzhiyun         DWORD dwNLVBRops[DD_ROP_SPACE]; /* ROPS supported for non-local->local blts */
440*4882a593Smuzhiyun         DDSCAPS2 ddsCaps;       /* surface capabilities */
441*4882a593Smuzhiyun     } DDCAPS_DX7, *LPDDCAPS_DX7;
442*4882a593Smuzhiyun 
443*4882a593Smuzhiyun     typedef struct _DDCAPS_DX6 {        /* DirectX 6 version of caps struct */
444*4882a593Smuzhiyun         DWORD dwSize;           /* size of the DDDRIVERCAPS structure */
445*4882a593Smuzhiyun         DWORD dwCaps;           /* driver specific capabilities */
446*4882a593Smuzhiyun         DWORD dwCaps2;          /* more driver specific capabilites */
447*4882a593Smuzhiyun         DWORD dwCKeyCaps;       /* color key capabilities of the surface */
448*4882a593Smuzhiyun         DWORD dwFXCaps;         /* driver specific stretching and effects capabilites */
449*4882a593Smuzhiyun         DWORD dwFXAlphaCaps;    /* alpha driver specific capabilities */
450*4882a593Smuzhiyun         DWORD dwPalCaps;        /* palette capabilities */
451*4882a593Smuzhiyun         DWORD dwSVCaps;         /* stereo vision capabilities */
452*4882a593Smuzhiyun         DWORD dwAlphaBltConstBitDepths; /* DDBD_2,4,8 */
453*4882a593Smuzhiyun         DWORD dwAlphaBltPixelBitDepths; /* DDBD_1,2,4,8 */
454*4882a593Smuzhiyun         DWORD dwAlphaBltSurfaceBitDepths;       /* DDBD_1,2,4,8 */
455*4882a593Smuzhiyun         DWORD dwAlphaOverlayConstBitDepths;     /* DDBD_2,4,8 */
456*4882a593Smuzhiyun         DWORD dwAlphaOverlayPixelBitDepths;     /* DDBD_1,2,4,8 */
457*4882a593Smuzhiyun         DWORD dwAlphaOverlaySurfaceBitDepths;   /* DDBD_1,2,4,8 */
458*4882a593Smuzhiyun         DWORD dwZBufferBitDepths;       /* DDBD_8,16,24,32 */
459*4882a593Smuzhiyun         DWORD dwVidMemTotal;    /* total amount of video memory */
460*4882a593Smuzhiyun         DWORD dwVidMemFree;     /* amount of free video memory */
461*4882a593Smuzhiyun         DWORD dwMaxVisibleOverlays;     /* maximum number of visible overlays */
462*4882a593Smuzhiyun         DWORD dwCurrVisibleOverlays;    /* current number of visible overlays */
463*4882a593Smuzhiyun         DWORD dwNumFourCCCodes; /* number of four cc codes */
464*4882a593Smuzhiyun         DWORD dwAlignBoundarySrc;       /* source rectangle alignment */
465*4882a593Smuzhiyun         DWORD dwAlignSizeSrc;   /* source rectangle byte size */
466*4882a593Smuzhiyun         DWORD dwAlignBoundaryDest;      /* dest rectangle alignment */
467*4882a593Smuzhiyun         DWORD dwAlignSizeDest;  /* dest rectangle byte size */
468*4882a593Smuzhiyun         DWORD dwAlignStrideAlign;       /* stride alignment */
469*4882a593Smuzhiyun         DWORD dwRops[DD_ROP_SPACE];     /* ROPS supported */
470*4882a593Smuzhiyun         DDSCAPS ddsOldCaps;     /* old DDSCAPS - superceded for DirectX6+ */
471*4882a593Smuzhiyun         DWORD dwMinOverlayStretch;      /* minimum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
472*4882a593Smuzhiyun         DWORD dwMaxOverlayStretch;      /* maximum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
473*4882a593Smuzhiyun         DWORD dwMinLiveVideoStretch;    /* minimum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
474*4882a593Smuzhiyun         DWORD dwMaxLiveVideoStretch;    /* maximum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
475*4882a593Smuzhiyun         DWORD dwMinHwCodecStretch;      /* minimum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
476*4882a593Smuzhiyun         DWORD dwMaxHwCodecStretch;      /* maximum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
477*4882a593Smuzhiyun         DWORD dwReserved1;
478*4882a593Smuzhiyun         DWORD dwReserved2;
479*4882a593Smuzhiyun         DWORD dwReserved3;
480*4882a593Smuzhiyun         DWORD dwSVBCaps;        /* driver specific capabilities for System->Vmem blts */
481*4882a593Smuzhiyun         DWORD dwSVBCKeyCaps;    /* driver color key capabilities for System->Vmem blts */
482*4882a593Smuzhiyun         DWORD dwSVBFXCaps;      /* driver FX capabilities for System->Vmem blts */
483*4882a593Smuzhiyun         DWORD dwSVBRops[DD_ROP_SPACE];  /* ROPS supported for System->Vmem blts */
484*4882a593Smuzhiyun         DWORD dwVSBCaps;        /* driver specific capabilities for Vmem->System blts */
485*4882a593Smuzhiyun         DWORD dwVSBCKeyCaps;    /* driver color key capabilities for Vmem->System blts */
486*4882a593Smuzhiyun         DWORD dwVSBFXCaps;      /* driver FX capabilities for Vmem->System blts */
487*4882a593Smuzhiyun         DWORD dwVSBRops[DD_ROP_SPACE];  /* ROPS supported for Vmem->System blts */
488*4882a593Smuzhiyun         DWORD dwSSBCaps;        /* driver specific capabilities for System->System blts */
489*4882a593Smuzhiyun         DWORD dwSSBCKeyCaps;    /* driver color key capabilities for System->System blts */
490*4882a593Smuzhiyun         DWORD dwSSBFXCaps;      /* driver FX capabilities for System->System blts */
491*4882a593Smuzhiyun         DWORD dwSSBRops[DD_ROP_SPACE];  /* ROPS supported for System->System blts */
492*4882a593Smuzhiyun         DWORD dwMaxVideoPorts;  /* maximum number of usable video ports */
493*4882a593Smuzhiyun         DWORD dwCurrVideoPorts; /* current number of video ports used */
494*4882a593Smuzhiyun         DWORD dwSVBCaps2;       /* more driver specific capabilities for System->Vmem blts */
495*4882a593Smuzhiyun         DWORD dwNLVBCaps;       /* driver specific capabilities for non-local->local vidmem blts */
496*4882a593Smuzhiyun         DWORD dwNLVBCaps2;      /* more driver specific capabilities non-local->local vidmem blts */
497*4882a593Smuzhiyun         DWORD dwNLVBCKeyCaps;   /* driver color key capabilities for non-local->local vidmem blts */
498*4882a593Smuzhiyun         DWORD dwNLVBFXCaps;     /* driver FX capabilities for non-local->local blts */
499*4882a593Smuzhiyun         DWORD dwNLVBRops[DD_ROP_SPACE]; /* ROPS supported for non-local->local blts */
500*4882a593Smuzhiyun         /* and one new member for DirectX 6 */
501*4882a593Smuzhiyun         DDSCAPS2 ddsCaps;       /* surface capabilities */
502*4882a593Smuzhiyun     } DDCAPS_DX6, *LPDDCAPS_DX6;
503*4882a593Smuzhiyun 
504*4882a593Smuzhiyun     typedef struct _DDCAPS_DX5 {        /* DirectX5 version of caps struct */
505*4882a593Smuzhiyun         DWORD dwSize;           /* size of the DDDRIVERCAPS structure */
506*4882a593Smuzhiyun         DWORD dwCaps;           /* driver specific capabilities */
507*4882a593Smuzhiyun         DWORD dwCaps2;          /* more driver specific capabilites */
508*4882a593Smuzhiyun         DWORD dwCKeyCaps;       /* color key capabilities of the surface */
509*4882a593Smuzhiyun         DWORD dwFXCaps;         /* driver specific stretching and effects capabilites */
510*4882a593Smuzhiyun         DWORD dwFXAlphaCaps;    /* alpha driver specific capabilities */
511*4882a593Smuzhiyun         DWORD dwPalCaps;        /* palette capabilities */
512*4882a593Smuzhiyun         DWORD dwSVCaps;         /* stereo vision capabilities */
513*4882a593Smuzhiyun         DWORD dwAlphaBltConstBitDepths; /* DDBD_2,4,8 */
514*4882a593Smuzhiyun         DWORD dwAlphaBltPixelBitDepths; /* DDBD_1,2,4,8 */
515*4882a593Smuzhiyun         DWORD dwAlphaBltSurfaceBitDepths;       /* DDBD_1,2,4,8 */
516*4882a593Smuzhiyun         DWORD dwAlphaOverlayConstBitDepths;     /* DDBD_2,4,8 */
517*4882a593Smuzhiyun         DWORD dwAlphaOverlayPixelBitDepths;     /* DDBD_1,2,4,8 */
518*4882a593Smuzhiyun         DWORD dwAlphaOverlaySurfaceBitDepths;   /* DDBD_1,2,4,8 */
519*4882a593Smuzhiyun         DWORD dwZBufferBitDepths;       /* DDBD_8,16,24,32 */
520*4882a593Smuzhiyun         DWORD dwVidMemTotal;    /* total amount of video memory */
521*4882a593Smuzhiyun         DWORD dwVidMemFree;     /* amount of free video memory */
522*4882a593Smuzhiyun         DWORD dwMaxVisibleOverlays;     /* maximum number of visible overlays */
523*4882a593Smuzhiyun         DWORD dwCurrVisibleOverlays;    /* current number of visible overlays */
524*4882a593Smuzhiyun         DWORD dwNumFourCCCodes; /* number of four cc codes */
525*4882a593Smuzhiyun         DWORD dwAlignBoundarySrc;       /* source rectangle alignment */
526*4882a593Smuzhiyun         DWORD dwAlignSizeSrc;   /* source rectangle byte size */
527*4882a593Smuzhiyun         DWORD dwAlignBoundaryDest;      /* dest rectangle alignment */
528*4882a593Smuzhiyun         DWORD dwAlignSizeDest;  /* dest rectangle byte size */
529*4882a593Smuzhiyun         DWORD dwAlignStrideAlign;       /* stride alignment */
530*4882a593Smuzhiyun         DWORD dwRops[DD_ROP_SPACE];     /* ROPS supported */
531*4882a593Smuzhiyun         DDSCAPS ddsCaps;        /* DDSCAPS structure has all the general capabilities */
532*4882a593Smuzhiyun         DWORD dwMinOverlayStretch;      /* minimum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
533*4882a593Smuzhiyun         DWORD dwMaxOverlayStretch;      /* maximum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
534*4882a593Smuzhiyun         DWORD dwMinLiveVideoStretch;    /* minimum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
535*4882a593Smuzhiyun         DWORD dwMaxLiveVideoStretch;    /* maximum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
536*4882a593Smuzhiyun         DWORD dwMinHwCodecStretch;      /* minimum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
537*4882a593Smuzhiyun         DWORD dwMaxHwCodecStretch;      /* maximum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
538*4882a593Smuzhiyun         DWORD dwReserved1;
539*4882a593Smuzhiyun         DWORD dwReserved2;
540*4882a593Smuzhiyun         DWORD dwReserved3;
541*4882a593Smuzhiyun         DWORD dwSVBCaps;        /* driver specific capabilities for System->Vmem blts */
542*4882a593Smuzhiyun         DWORD dwSVBCKeyCaps;    /* driver color key capabilities for System->Vmem blts */
543*4882a593Smuzhiyun         DWORD dwSVBFXCaps;      /* driver FX capabilities for System->Vmem blts */
544*4882a593Smuzhiyun         DWORD dwSVBRops[DD_ROP_SPACE];  /* ROPS supported for System->Vmem blts */
545*4882a593Smuzhiyun         DWORD dwVSBCaps;        /* driver specific capabilities for Vmem->System blts */
546*4882a593Smuzhiyun         DWORD dwVSBCKeyCaps;    /* driver color key capabilities for Vmem->System blts */
547*4882a593Smuzhiyun         DWORD dwVSBFXCaps;      /* driver FX capabilities for Vmem->System blts */
548*4882a593Smuzhiyun         DWORD dwVSBRops[DD_ROP_SPACE];  /* ROPS supported for Vmem->System blts */
549*4882a593Smuzhiyun         DWORD dwSSBCaps;        /* driver specific capabilities for System->System blts */
550*4882a593Smuzhiyun         DWORD dwSSBCKeyCaps;    /* driver color key capabilities for System->System blts */
551*4882a593Smuzhiyun         DWORD dwSSBFXCaps;      /* driver FX capabilities for System->System blts */
552*4882a593Smuzhiyun         DWORD dwSSBRops[DD_ROP_SPACE];  /* ROPS supported for System->System blts */
553*4882a593Smuzhiyun         /* the following are the new DirectX 5 members */
554*4882a593Smuzhiyun         DWORD dwMaxVideoPorts;  /* maximum number of usable video ports */
555*4882a593Smuzhiyun         DWORD dwCurrVideoPorts; /* current number of video ports used */
556*4882a593Smuzhiyun         DWORD dwSVBCaps2;       /* more driver specific capabilities for System->Vmem blts */
557*4882a593Smuzhiyun         DWORD dwNLVBCaps;       /* driver specific capabilities for non-local->local vidmem blts */
558*4882a593Smuzhiyun         DWORD dwNLVBCaps2;      /* more driver specific capabilities non-local->local vidmem blts */
559*4882a593Smuzhiyun         DWORD dwNLVBCKeyCaps;   /* driver color key capabilities for non-local->local vidmem blts */
560*4882a593Smuzhiyun         DWORD dwNLVBFXCaps;     /* driver FX capabilities for non-local->local blts */
561*4882a593Smuzhiyun         DWORD dwNLVBRops[DD_ROP_SPACE]; /* ROPS supported for non-local->local blts */
562*4882a593Smuzhiyun     } DDCAPS_DX5, *LPDDCAPS_DX5;
563*4882a593Smuzhiyun 
564*4882a593Smuzhiyun     typedef struct _DDCAPS_DX3 {        /* DirectX3 version of caps struct */
565*4882a593Smuzhiyun         DWORD dwSize;           /* size of the DDDRIVERCAPS structure */
566*4882a593Smuzhiyun         DWORD dwCaps;           /* driver specific capabilities */
567*4882a593Smuzhiyun         DWORD dwCaps2;          /* more driver specific capabilites */
568*4882a593Smuzhiyun         DWORD dwCKeyCaps;       /* color key capabilities of the surface */
569*4882a593Smuzhiyun         DWORD dwFXCaps;         /* driver specific stretching and effects capabilites */
570*4882a593Smuzhiyun         DWORD dwFXAlphaCaps;    /* alpha driver specific capabilities */
571*4882a593Smuzhiyun         DWORD dwPalCaps;        /* palette capabilities */
572*4882a593Smuzhiyun         DWORD dwSVCaps;         /* stereo vision capabilities */
573*4882a593Smuzhiyun         DWORD dwAlphaBltConstBitDepths; /* DDBD_2,4,8 */
574*4882a593Smuzhiyun         DWORD dwAlphaBltPixelBitDepths; /* DDBD_1,2,4,8 */
575*4882a593Smuzhiyun         DWORD dwAlphaBltSurfaceBitDepths;       /* DDBD_1,2,4,8 */
576*4882a593Smuzhiyun         DWORD dwAlphaOverlayConstBitDepths;     /* DDBD_2,4,8 */
577*4882a593Smuzhiyun         DWORD dwAlphaOverlayPixelBitDepths;     /* DDBD_1,2,4,8 */
578*4882a593Smuzhiyun         DWORD dwAlphaOverlaySurfaceBitDepths;   /* DDBD_1,2,4,8 */
579*4882a593Smuzhiyun         DWORD dwZBufferBitDepths;       /* DDBD_8,16,24,32 */
580*4882a593Smuzhiyun         DWORD dwVidMemTotal;    /* total amount of video memory */
581*4882a593Smuzhiyun         DWORD dwVidMemFree;     /* amount of free video memory */
582*4882a593Smuzhiyun         DWORD dwMaxVisibleOverlays;     /* maximum number of visible overlays */
583*4882a593Smuzhiyun         DWORD dwCurrVisibleOverlays;    /* current number of visible overlays */
584*4882a593Smuzhiyun         DWORD dwNumFourCCCodes; /* number of four cc codes */
585*4882a593Smuzhiyun         DWORD dwAlignBoundarySrc;       /* source rectangle alignment */
586*4882a593Smuzhiyun         DWORD dwAlignSizeSrc;   /* source rectangle byte size */
587*4882a593Smuzhiyun         DWORD dwAlignBoundaryDest;      /* dest rectangle alignment */
588*4882a593Smuzhiyun         DWORD dwAlignSizeDest;  /* dest rectangle byte size */
589*4882a593Smuzhiyun         DWORD dwAlignStrideAlign;       /* stride alignment */
590*4882a593Smuzhiyun         DWORD dwRops[DD_ROP_SPACE];     /* ROPS supported */
591*4882a593Smuzhiyun         DDSCAPS ddsCaps;        /* DDSCAPS structure has all the general capabilities */
592*4882a593Smuzhiyun         DWORD dwMinOverlayStretch;      /* minimum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
593*4882a593Smuzhiyun         DWORD dwMaxOverlayStretch;      /* maximum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
594*4882a593Smuzhiyun         DWORD dwMinLiveVideoStretch;    /* minimum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
595*4882a593Smuzhiyun         DWORD dwMaxLiveVideoStretch;    /* maximum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
596*4882a593Smuzhiyun         DWORD dwMinHwCodecStretch;      /* minimum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
597*4882a593Smuzhiyun         DWORD dwMaxHwCodecStretch;      /* maximum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
598*4882a593Smuzhiyun         DWORD dwReserved1;
599*4882a593Smuzhiyun         DWORD dwReserved2;
600*4882a593Smuzhiyun         DWORD dwReserved3;
601*4882a593Smuzhiyun         DWORD dwSVBCaps;        /* driver specific capabilities for System->Vmem blts */
602*4882a593Smuzhiyun         DWORD dwSVBCKeyCaps;    /* driver color key capabilities for System->Vmem blts */
603*4882a593Smuzhiyun         DWORD dwSVBFXCaps;      /* driver FX capabilities for System->Vmem blts */
604*4882a593Smuzhiyun         DWORD dwSVBRops[DD_ROP_SPACE];  /* ROPS supported for System->Vmem blts */
605*4882a593Smuzhiyun         DWORD dwVSBCaps;        /* driver specific capabilities for Vmem->System blts */
606*4882a593Smuzhiyun         DWORD dwVSBCKeyCaps;    /* driver color key capabilities for Vmem->System blts */
607*4882a593Smuzhiyun         DWORD dwVSBFXCaps;      /* driver FX capabilities for Vmem->System blts */
608*4882a593Smuzhiyun         DWORD dwVSBRops[DD_ROP_SPACE];  /* ROPS supported for Vmem->System blts */
609*4882a593Smuzhiyun         DWORD dwSSBCaps;        /* driver specific capabilities for System->System blts */
610*4882a593Smuzhiyun         DWORD dwSSBCKeyCaps;    /* driver color key capabilities for System->System blts */
611*4882a593Smuzhiyun         DWORD dwSSBFXCaps;      /* driver FX capabilities for System->System blts */
612*4882a593Smuzhiyun         DWORD dwSSBRops[DD_ROP_SPACE];  /* ROPS supported for System->System blts */
613*4882a593Smuzhiyun         DWORD dwReserved4;
614*4882a593Smuzhiyun         DWORD dwReserved5;
615*4882a593Smuzhiyun         DWORD dwReserved6;
616*4882a593Smuzhiyun     } DDCAPS_DX3, *LPDDCAPS_DX3;
617*4882a593Smuzhiyun 
618*4882a593Smuzhiyun /* set caps struct according to DIRECTDRAW_VERSION */
619*4882a593Smuzhiyun 
620*4882a593Smuzhiyun #if DIRECTDRAW_VERSION <= 0x300
621*4882a593Smuzhiyun     typedef DDCAPS_DX3 DDCAPS;
622*4882a593Smuzhiyun #elif DIRECTDRAW_VERSION <= 0x500
623*4882a593Smuzhiyun     typedef DDCAPS_DX5 DDCAPS;
624*4882a593Smuzhiyun #elif DIRECTDRAW_VERSION <= 0x600
625*4882a593Smuzhiyun     typedef DDCAPS_DX6 DDCAPS;
626*4882a593Smuzhiyun #else
627*4882a593Smuzhiyun     typedef DDCAPS_DX7 DDCAPS;
628*4882a593Smuzhiyun #endif
629*4882a593Smuzhiyun 
630*4882a593Smuzhiyun     typedef DDCAPS *LPDDCAPS;
631*4882a593Smuzhiyun 
632*4882a593Smuzhiyun /* DDCAPS.dwCaps */
633*4882a593Smuzhiyun #define DDCAPS_3D			0x00000001
634*4882a593Smuzhiyun #define DDCAPS_ALIGNBOUNDARYDEST	0x00000002
635*4882a593Smuzhiyun #define DDCAPS_ALIGNSIZEDEST		0x00000004
636*4882a593Smuzhiyun #define DDCAPS_ALIGNBOUNDARYSRC		0x00000008
637*4882a593Smuzhiyun #define DDCAPS_ALIGNSIZESRC		0x00000010
638*4882a593Smuzhiyun #define DDCAPS_ALIGNSTRIDE		0x00000020
639*4882a593Smuzhiyun #define DDCAPS_BLT			0x00000040
640*4882a593Smuzhiyun #define DDCAPS_BLTQUEUE			0x00000080
641*4882a593Smuzhiyun #define DDCAPS_BLTFOURCC		0x00000100
642*4882a593Smuzhiyun #define DDCAPS_BLTSTRETCH		0x00000200
643*4882a593Smuzhiyun #define DDCAPS_GDI			0x00000400
644*4882a593Smuzhiyun #define DDCAPS_OVERLAY			0x00000800
645*4882a593Smuzhiyun #define DDCAPS_OVERLAYCANTCLIP		0x00001000
646*4882a593Smuzhiyun #define DDCAPS_OVERLAYFOURCC		0x00002000
647*4882a593Smuzhiyun #define DDCAPS_OVERLAYSTRETCH		0x00004000
648*4882a593Smuzhiyun #define DDCAPS_PALETTE			0x00008000
649*4882a593Smuzhiyun #define DDCAPS_PALETTEVSYNC		0x00010000
650*4882a593Smuzhiyun #define DDCAPS_READSCANLINE		0x00020000
651*4882a593Smuzhiyun #define DDCAPS_STEREOVIEW		0x00040000
652*4882a593Smuzhiyun #define DDCAPS_VBI			0x00080000
653*4882a593Smuzhiyun #define DDCAPS_ZBLTS			0x00100000
654*4882a593Smuzhiyun #define DDCAPS_ZOVERLAYS		0x00200000
655*4882a593Smuzhiyun #define DDCAPS_COLORKEY			0x00400000
656*4882a593Smuzhiyun #define DDCAPS_ALPHA			0x00800000
657*4882a593Smuzhiyun #define DDCAPS_COLORKEYHWASSIST		0x01000000
658*4882a593Smuzhiyun #define DDCAPS_NOHARDWARE		0x02000000
659*4882a593Smuzhiyun #define DDCAPS_BLTCOLORFILL		0x04000000
660*4882a593Smuzhiyun #define DDCAPS_BANKSWITCHED		0x08000000
661*4882a593Smuzhiyun #define DDCAPS_BLTDEPTHFILL		0x10000000
662*4882a593Smuzhiyun #define DDCAPS_CANCLIP			0x20000000
663*4882a593Smuzhiyun #define DDCAPS_CANCLIPSTRETCHED		0x40000000
664*4882a593Smuzhiyun #define DDCAPS_CANBLTSYSMEM		0x80000000
665*4882a593Smuzhiyun 
666*4882a593Smuzhiyun /* DDCAPS.dwCaps2 */
667*4882a593Smuzhiyun #define DDCAPS2_CERTIFIED		0x00000001
668*4882a593Smuzhiyun #define DDCAPS2_NO2DDURING3DSCENE       0x00000002
669*4882a593Smuzhiyun #define DDCAPS2_VIDEOPORT		0x00000004
670*4882a593Smuzhiyun #define DDCAPS2_AUTOFLIPOVERLAY		0x00000008
671*4882a593Smuzhiyun #define DDCAPS2_CANBOBINTERLEAVED	0x00000010
672*4882a593Smuzhiyun #define DDCAPS2_CANBOBNONINTERLEAVED	0x00000020
673*4882a593Smuzhiyun #define DDCAPS2_COLORCONTROLOVERLAY	0x00000040
674*4882a593Smuzhiyun #define DDCAPS2_COLORCONTROLPRIMARY	0x00000080
675*4882a593Smuzhiyun #define DDCAPS2_CANDROPZ16BIT		0x00000100
676*4882a593Smuzhiyun #define DDCAPS2_NONLOCALVIDMEM		0x00000200
677*4882a593Smuzhiyun #define DDCAPS2_NONLOCALVIDMEMCAPS	0x00000400
678*4882a593Smuzhiyun #define DDCAPS2_NOPAGELOCKREQUIRED	0x00000800
679*4882a593Smuzhiyun #define DDCAPS2_WIDESURFACES		0x00001000
680*4882a593Smuzhiyun #define DDCAPS2_CANFLIPODDEVEN		0x00002000
681*4882a593Smuzhiyun #define DDCAPS2_CANBOBHARDWARE		0x00004000
682*4882a593Smuzhiyun #define DDCAPS2_COPYFOURCC              0x00008000
683*4882a593Smuzhiyun #define DDCAPS2_PRIMARYGAMMA            0x00020000
684*4882a593Smuzhiyun #define DDCAPS2_CANRENDERWINDOWED       0x00080000
685*4882a593Smuzhiyun #define DDCAPS2_CANCALIBRATEGAMMA       0x00100000
686*4882a593Smuzhiyun #define DDCAPS2_FLIPINTERVAL            0x00200000
687*4882a593Smuzhiyun #define DDCAPS2_FLIPNOVSYNC             0x00400000
688*4882a593Smuzhiyun #define DDCAPS2_CANMANAGETEXTURE        0x00800000
689*4882a593Smuzhiyun #define DDCAPS2_TEXMANINNONLOCALVIDMEM  0x01000000
690*4882a593Smuzhiyun #define DDCAPS2_STEREO                  0x02000000
691*4882a593Smuzhiyun #define DDCAPS2_SYSTONONLOCAL_AS_SYSTOLOCAL   0x04000000
692*4882a593Smuzhiyun 
693*4882a593Smuzhiyun /* Set/Get Colour Key Flags */
694*4882a593Smuzhiyun #define DDCKEY_COLORSPACE  0x00000001   /* Struct is single colour space */
695*4882a593Smuzhiyun #define DDCKEY_DESTBLT     0x00000002   /* To be used as dest for blt */
696*4882a593Smuzhiyun #define DDCKEY_DESTOVERLAY 0x00000004   /* To be used as dest for CK overlays */
697*4882a593Smuzhiyun #define DDCKEY_SRCBLT      0x00000008   /* To be used as src for blt */
698*4882a593Smuzhiyun #define DDCKEY_SRCOVERLAY  0x00000010   /* To be used as src for CK overlays */
699*4882a593Smuzhiyun 
700*4882a593Smuzhiyun     typedef struct _DDCOLORKEY {
701*4882a593Smuzhiyun         DWORD dwColorSpaceLowValue;     /* low boundary of color space that is to
702*4882a593Smuzhiyun                                          * be treated as Color Key, inclusive
703*4882a593Smuzhiyun                                          */
704*4882a593Smuzhiyun         DWORD dwColorSpaceHighValue;    /* high boundary of color space that is
705*4882a593Smuzhiyun                                          * to be treated as Color Key, inclusive
706*4882a593Smuzhiyun                                          */
707*4882a593Smuzhiyun     } DDCOLORKEY, *LPDDCOLORKEY;
708*4882a593Smuzhiyun 
709*4882a593Smuzhiyun /* ddCKEYCAPS bits */
710*4882a593Smuzhiyun #define DDCKEYCAPS_DESTBLT			0x00000001
711*4882a593Smuzhiyun #define DDCKEYCAPS_DESTBLTCLRSPACE		0x00000002
712*4882a593Smuzhiyun #define DDCKEYCAPS_DESTBLTCLRSPACEYUV		0x00000004
713*4882a593Smuzhiyun #define DDCKEYCAPS_DESTBLTYUV			0x00000008
714*4882a593Smuzhiyun #define DDCKEYCAPS_DESTOVERLAY			0x00000010
715*4882a593Smuzhiyun #define DDCKEYCAPS_DESTOVERLAYCLRSPACE		0x00000020
716*4882a593Smuzhiyun #define DDCKEYCAPS_DESTOVERLAYCLRSPACEYUV	0x00000040
717*4882a593Smuzhiyun #define DDCKEYCAPS_DESTOVERLAYONEACTIVE		0x00000080
718*4882a593Smuzhiyun #define DDCKEYCAPS_DESTOVERLAYYUV		0x00000100
719*4882a593Smuzhiyun #define DDCKEYCAPS_SRCBLT			0x00000200
720*4882a593Smuzhiyun #define DDCKEYCAPS_SRCBLTCLRSPACE		0x00000400
721*4882a593Smuzhiyun #define DDCKEYCAPS_SRCBLTCLRSPACEYUV		0x00000800
722*4882a593Smuzhiyun #define DDCKEYCAPS_SRCBLTYUV			0x00001000
723*4882a593Smuzhiyun #define DDCKEYCAPS_SRCOVERLAY			0x00002000
724*4882a593Smuzhiyun #define DDCKEYCAPS_SRCOVERLAYCLRSPACE		0x00004000
725*4882a593Smuzhiyun #define DDCKEYCAPS_SRCOVERLAYCLRSPACEYUV	0x00008000
726*4882a593Smuzhiyun #define DDCKEYCAPS_SRCOVERLAYONEACTIVE		0x00010000
727*4882a593Smuzhiyun #define DDCKEYCAPS_SRCOVERLAYYUV		0x00020000
728*4882a593Smuzhiyun #define DDCKEYCAPS_NOCOSTOVERLAY		0x00040000
729*4882a593Smuzhiyun 
730*4882a593Smuzhiyun     typedef struct _DDPIXELFORMAT {
731*4882a593Smuzhiyun         DWORD dwSize;           /* 0: size of structure */
732*4882a593Smuzhiyun         DWORD dwFlags;          /* 4: pixel format flags */
733*4882a593Smuzhiyun         DWORD dwFourCC;         /* 8: (FOURCC code) */
734*4882a593Smuzhiyun         union {
735*4882a593Smuzhiyun             DWORD dwRGBBitCount;        /* C: how many bits per pixel */
736*4882a593Smuzhiyun             DWORD dwYUVBitCount;        /* C: how many bits per pixel */
737*4882a593Smuzhiyun             DWORD dwZBufferBitDepth;    /* C: how many bits for z buffers */
738*4882a593Smuzhiyun             DWORD dwAlphaBitDepth;      /* C: how many bits for alpha channels */
739*4882a593Smuzhiyun             DWORD dwLuminanceBitCount;
740*4882a593Smuzhiyun             DWORD dwBumpBitCount;
741*4882a593Smuzhiyun         } DUMMYUNIONNAME1;
742*4882a593Smuzhiyun         union {
743*4882a593Smuzhiyun             DWORD dwRBitMask;   /* 10: mask for red bit */
744*4882a593Smuzhiyun             DWORD dwYBitMask;   /* 10: mask for Y bits */
745*4882a593Smuzhiyun             DWORD dwStencilBitDepth;
746*4882a593Smuzhiyun             DWORD dwLuminanceBitMask;
747*4882a593Smuzhiyun             DWORD dwBumpDuBitMask;
748*4882a593Smuzhiyun         } DUMMYUNIONNAME2;
749*4882a593Smuzhiyun         union {
750*4882a593Smuzhiyun             DWORD dwGBitMask;   /* 14: mask for green bits */
751*4882a593Smuzhiyun             DWORD dwUBitMask;   /* 14: mask for U bits */
752*4882a593Smuzhiyun             DWORD dwZBitMask;
753*4882a593Smuzhiyun             DWORD dwBumpDvBitMask;
754*4882a593Smuzhiyun         } DUMMYUNIONNAME3;
755*4882a593Smuzhiyun         union {
756*4882a593Smuzhiyun             DWORD dwBBitMask;   /* 18: mask for blue bits */
757*4882a593Smuzhiyun             DWORD dwVBitMask;   /* 18: mask for V bits */
758*4882a593Smuzhiyun             DWORD dwStencilBitMask;
759*4882a593Smuzhiyun             DWORD dwBumpLuminanceBitMask;
760*4882a593Smuzhiyun         } DUMMYUNIONNAME4;
761*4882a593Smuzhiyun         union {
762*4882a593Smuzhiyun             DWORD dwRGBAlphaBitMask;    /* 1C: mask for alpha channel */
763*4882a593Smuzhiyun             DWORD dwYUVAlphaBitMask;    /* 1C: mask for alpha channel */
764*4882a593Smuzhiyun             DWORD dwLuminanceAlphaBitMask;
765*4882a593Smuzhiyun             DWORD dwRGBZBitMask;        /* 1C: mask for Z channel */
766*4882a593Smuzhiyun             DWORD dwYUVZBitMask;        /* 1C: mask for Z channel */
767*4882a593Smuzhiyun         } DUMMYUNIONNAME5;
768*4882a593Smuzhiyun         /* 20: next structure */
769*4882a593Smuzhiyun     } DDPIXELFORMAT, *LPDDPIXELFORMAT;
770*4882a593Smuzhiyun 
771*4882a593Smuzhiyun /* DDCAPS.dwFXCaps */
772*4882a593Smuzhiyun #define DDFXCAPS_BLTALPHA               0x00000001
773*4882a593Smuzhiyun #define DDFXCAPS_OVERLAYALPHA           0x00000004
774*4882a593Smuzhiyun #define DDFXCAPS_BLTARITHSTRETCHYN	0x00000010
775*4882a593Smuzhiyun #define DDFXCAPS_BLTARITHSTRETCHY	0x00000020
776*4882a593Smuzhiyun #define DDFXCAPS_BLTMIRRORLEFTRIGHT	0x00000040
777*4882a593Smuzhiyun #define DDFXCAPS_BLTMIRRORUPDOWN	0x00000080
778*4882a593Smuzhiyun #define DDFXCAPS_BLTROTATION		0x00000100
779*4882a593Smuzhiyun #define DDFXCAPS_BLTROTATION90		0x00000200
780*4882a593Smuzhiyun #define DDFXCAPS_BLTSHRINKX		0x00000400
781*4882a593Smuzhiyun #define DDFXCAPS_BLTSHRINKXN		0x00000800
782*4882a593Smuzhiyun #define DDFXCAPS_BLTSHRINKY		0x00001000
783*4882a593Smuzhiyun #define DDFXCAPS_BLTSHRINKYN		0x00002000
784*4882a593Smuzhiyun #define DDFXCAPS_BLTSTRETCHX		0x00004000
785*4882a593Smuzhiyun #define DDFXCAPS_BLTSTRETCHXN		0x00008000
786*4882a593Smuzhiyun #define DDFXCAPS_BLTSTRETCHY		0x00010000
787*4882a593Smuzhiyun #define DDFXCAPS_BLTSTRETCHYN		0x00020000
788*4882a593Smuzhiyun #define DDFXCAPS_OVERLAYARITHSTRETCHY	0x00040000
789*4882a593Smuzhiyun #define DDFXCAPS_OVERLAYARITHSTRETCHYN	0x00000008
790*4882a593Smuzhiyun #define DDFXCAPS_OVERLAYSHRINKX		0x00080000
791*4882a593Smuzhiyun #define DDFXCAPS_OVERLAYSHRINKXN	0x00100000
792*4882a593Smuzhiyun #define DDFXCAPS_OVERLAYSHRINKY		0x00200000
793*4882a593Smuzhiyun #define DDFXCAPS_OVERLAYSHRINKYN	0x00400000
794*4882a593Smuzhiyun #define DDFXCAPS_OVERLAYSTRETCHX	0x00800000
795*4882a593Smuzhiyun #define DDFXCAPS_OVERLAYSTRETCHXN	0x01000000
796*4882a593Smuzhiyun #define DDFXCAPS_OVERLAYSTRETCHY	0x02000000
797*4882a593Smuzhiyun #define DDFXCAPS_OVERLAYSTRETCHYN	0x04000000
798*4882a593Smuzhiyun #define DDFXCAPS_OVERLAYMIRRORLEFTRIGHT	0x08000000
799*4882a593Smuzhiyun #define DDFXCAPS_OVERLAYMIRRORUPDOWN	0x10000000
800*4882a593Smuzhiyun 
801*4882a593Smuzhiyun #define DDFXCAPS_OVERLAYFILTER          DDFXCAPS_OVERLAYARITHSTRETCHY
802*4882a593Smuzhiyun 
803*4882a593Smuzhiyun /* DDCAPS.dwFXAlphaCaps */
804*4882a593Smuzhiyun #define DDFXALPHACAPS_BLTALPHAEDGEBLEND		0x00000001
805*4882a593Smuzhiyun #define DDFXALPHACAPS_BLTALPHAPIXELS		0x00000002
806*4882a593Smuzhiyun #define DDFXALPHACAPS_BLTALPHAPIXELSNEG		0x00000004
807*4882a593Smuzhiyun #define DDFXALPHACAPS_BLTALPHASURFACES		0x00000008
808*4882a593Smuzhiyun #define DDFXALPHACAPS_BLTALPHASURFACESNEG	0x00000010
809*4882a593Smuzhiyun #define DDFXALPHACAPS_OVERLAYALPHAEDGEBLEND	0x00000020
810*4882a593Smuzhiyun #define DDFXALPHACAPS_OVERLAYALPHAPIXELS	0x00000040
811*4882a593Smuzhiyun #define DDFXALPHACAPS_OVERLAYALPHAPIXELSNEG	0x00000080
812*4882a593Smuzhiyun #define DDFXALPHACAPS_OVERLAYALPHASURFACES	0x00000100
813*4882a593Smuzhiyun #define DDFXALPHACAPS_OVERLAYALPHASURFACESNEG	0x00000200
814*4882a593Smuzhiyun 
815*4882a593Smuzhiyun /* DDCAPS.dwPalCaps */
816*4882a593Smuzhiyun #define DDPCAPS_4BIT			0x00000001
817*4882a593Smuzhiyun #define DDPCAPS_8BITENTRIES		0x00000002
818*4882a593Smuzhiyun #define DDPCAPS_8BIT			0x00000004
819*4882a593Smuzhiyun #define DDPCAPS_INITIALIZE		0x00000008
820*4882a593Smuzhiyun #define DDPCAPS_PRIMARYSURFACE		0x00000010
821*4882a593Smuzhiyun #define DDPCAPS_PRIMARYSURFACELEFT	0x00000020
822*4882a593Smuzhiyun #define DDPCAPS_ALLOW256		0x00000040
823*4882a593Smuzhiyun #define DDPCAPS_VSYNC			0x00000080
824*4882a593Smuzhiyun #define DDPCAPS_1BIT			0x00000100
825*4882a593Smuzhiyun #define DDPCAPS_2BIT			0x00000200
826*4882a593Smuzhiyun #define DDPCAPS_ALPHA                   0x00000400
827*4882a593Smuzhiyun 
828*4882a593Smuzhiyun /* DDCAPS.dwSVCaps */
829*4882a593Smuzhiyun /* the first 4 of these are now obsolete */
830*4882a593Smuzhiyun #if DIRECTDRAW_VERSION >= 0x700 /* FIXME: I'm not sure when this switch occured */
831*4882a593Smuzhiyun #define DDSVCAPS_RESERVED1		0x00000001
832*4882a593Smuzhiyun #define DDSVCAPS_RESERVED2		0x00000002
833*4882a593Smuzhiyun #define DDSVCAPS_RESERVED3		0x00000004
834*4882a593Smuzhiyun #define DDSVCAPS_RESERVED4		0x00000008
835*4882a593Smuzhiyun #else
836*4882a593Smuzhiyun #define DDSVCAPS_ENIGMA			0x00000001
837*4882a593Smuzhiyun #define DDSVCAPS_FLICKER		0x00000002
838*4882a593Smuzhiyun #define DDSVCAPS_REDBLUE		0x00000004
839*4882a593Smuzhiyun #define DDSVCAPS_SPLIT			0x00000008
840*4882a593Smuzhiyun #endif
841*4882a593Smuzhiyun #define DDSVCAPS_STEREOSEQUENTIAL       0x00000010
842*4882a593Smuzhiyun 
843*4882a593Smuzhiyun /* BitDepths */
844*4882a593Smuzhiyun #define DDBD_1				0x00004000
845*4882a593Smuzhiyun #define DDBD_2				0x00002000
846*4882a593Smuzhiyun #define DDBD_4				0x00001000
847*4882a593Smuzhiyun #define DDBD_8				0x00000800
848*4882a593Smuzhiyun #define DDBD_16				0x00000400
849*4882a593Smuzhiyun #define DDBD_24				0x00000200
850*4882a593Smuzhiyun #define DDBD_32				0x00000100
851*4882a593Smuzhiyun 
852*4882a593Smuzhiyun /* DDOVERLAYFX.dwDDFX */
853*4882a593Smuzhiyun #define DDOVERFX_ARITHSTRETCHY		0x00000001
854*4882a593Smuzhiyun #define DDOVERFX_MIRRORLEFTRIGHT	0x00000002
855*4882a593Smuzhiyun #define DDOVERFX_MIRRORUPDOWN		0x00000004
856*4882a593Smuzhiyun 
857*4882a593Smuzhiyun /* UpdateOverlay flags */
858*4882a593Smuzhiyun #define DDOVER_ALPHADEST                        0x00000001
859*4882a593Smuzhiyun #define DDOVER_ALPHADESTCONSTOVERRIDE           0x00000002
860*4882a593Smuzhiyun #define DDOVER_ALPHADESTNEG                     0x00000004
861*4882a593Smuzhiyun #define DDOVER_ALPHADESTSURFACEOVERRIDE         0x00000008
862*4882a593Smuzhiyun #define DDOVER_ALPHAEDGEBLEND                   0x00000010
863*4882a593Smuzhiyun #define DDOVER_ALPHASRC                         0x00000020
864*4882a593Smuzhiyun #define DDOVER_ALPHASRCCONSTOVERRIDE            0x00000040
865*4882a593Smuzhiyun #define DDOVER_ALPHASRCNEG                      0x00000080
866*4882a593Smuzhiyun #define DDOVER_ALPHASRCSURFACEOVERRIDE          0x00000100
867*4882a593Smuzhiyun #define DDOVER_HIDE                             0x00000200
868*4882a593Smuzhiyun #define DDOVER_KEYDEST                          0x00000400
869*4882a593Smuzhiyun #define DDOVER_KEYDESTOVERRIDE                  0x00000800
870*4882a593Smuzhiyun #define DDOVER_KEYSRC                           0x00001000
871*4882a593Smuzhiyun #define DDOVER_KEYSRCOVERRIDE                   0x00002000
872*4882a593Smuzhiyun #define DDOVER_SHOW                             0x00004000
873*4882a593Smuzhiyun #define DDOVER_ADDDIRTYRECT                     0x00008000
874*4882a593Smuzhiyun #define DDOVER_REFRESHDIRTYRECTS                0x00010000
875*4882a593Smuzhiyun #define DDOVER_REFRESHALL                       0x00020000
876*4882a593Smuzhiyun #define DDOVER_DDFX                             0x00080000
877*4882a593Smuzhiyun #define DDOVER_AUTOFLIP                         0x00100000
878*4882a593Smuzhiyun #define DDOVER_BOB                              0x00200000
879*4882a593Smuzhiyun #define DDOVER_OVERRIDEBOBWEAVE                 0x00400000
880*4882a593Smuzhiyun #define DDOVER_INTERLEAVED                      0x00800000
881*4882a593Smuzhiyun 
882*4882a593Smuzhiyun /* DDCOLORKEY.dwFlags */
883*4882a593Smuzhiyun #define DDPF_ALPHAPIXELS		0x00000001
884*4882a593Smuzhiyun #define DDPF_ALPHA			0x00000002
885*4882a593Smuzhiyun #define DDPF_FOURCC			0x00000004
886*4882a593Smuzhiyun #define DDPF_PALETTEINDEXED4		0x00000008
887*4882a593Smuzhiyun #define DDPF_PALETTEINDEXEDTO8		0x00000010
888*4882a593Smuzhiyun #define DDPF_PALETTEINDEXED8		0x00000020
889*4882a593Smuzhiyun #define DDPF_RGB			0x00000040
890*4882a593Smuzhiyun #define DDPF_COMPRESSED			0x00000080
891*4882a593Smuzhiyun #define DDPF_RGBTOYUV			0x00000100
892*4882a593Smuzhiyun #define DDPF_YUV			0x00000200
893*4882a593Smuzhiyun #define DDPF_ZBUFFER			0x00000400
894*4882a593Smuzhiyun #define DDPF_PALETTEINDEXED1		0x00000800
895*4882a593Smuzhiyun #define DDPF_PALETTEINDEXED2		0x00001000
896*4882a593Smuzhiyun #define DDPF_ZPIXELS			0x00002000
897*4882a593Smuzhiyun #define DDPF_STENCILBUFFER              0x00004000
898*4882a593Smuzhiyun #define DDPF_ALPHAPREMULT               0x00008000
899*4882a593Smuzhiyun #define DDPF_LUMINANCE                  0x00020000
900*4882a593Smuzhiyun #define DDPF_BUMPLUMINANCE              0x00040000
901*4882a593Smuzhiyun #define DDPF_BUMPDUDV                   0x00080000
902*4882a593Smuzhiyun 
903*4882a593Smuzhiyun /* SetCooperativeLevel dwFlags */
904*4882a593Smuzhiyun #define DDSCL_FULLSCREEN		0x00000001
905*4882a593Smuzhiyun #define DDSCL_ALLOWREBOOT		0x00000002
906*4882a593Smuzhiyun #define DDSCL_NOWINDOWCHANGES		0x00000004
907*4882a593Smuzhiyun #define DDSCL_NORMAL			0x00000008
908*4882a593Smuzhiyun #define DDSCL_EXCLUSIVE			0x00000010
909*4882a593Smuzhiyun #define DDSCL_ALLOWMODEX		0x00000040
910*4882a593Smuzhiyun #define DDSCL_SETFOCUSWINDOW		0x00000080
911*4882a593Smuzhiyun #define DDSCL_SETDEVICEWINDOW		0x00000100
912*4882a593Smuzhiyun #define DDSCL_CREATEDEVICEWINDOW	0x00000200
913*4882a593Smuzhiyun #define DDSCL_MULTITHREADED             0x00000400
914*4882a593Smuzhiyun #define DDSCL_FPUSETUP                  0x00000800
915*4882a593Smuzhiyun #define DDSCL_FPUPRESERVE               0x00001000
916*4882a593Smuzhiyun 
917*4882a593Smuzhiyun /* DDSURFACEDESC.dwFlags */
918*4882a593Smuzhiyun #define	DDSD_CAPS		0x00000001
919*4882a593Smuzhiyun #define	DDSD_HEIGHT		0x00000002
920*4882a593Smuzhiyun #define	DDSD_WIDTH		0x00000004
921*4882a593Smuzhiyun #define	DDSD_PITCH		0x00000008
922*4882a593Smuzhiyun #define	DDSD_BACKBUFFERCOUNT	0x00000020
923*4882a593Smuzhiyun #define	DDSD_ZBUFFERBITDEPTH	0x00000040
924*4882a593Smuzhiyun #define	DDSD_ALPHABITDEPTH	0x00000080
925*4882a593Smuzhiyun #define	DDSD_LPSURFACE		0x00000800
926*4882a593Smuzhiyun #define	DDSD_PIXELFORMAT	0x00001000
927*4882a593Smuzhiyun #define	DDSD_CKDESTOVERLAY	0x00002000
928*4882a593Smuzhiyun #define	DDSD_CKDESTBLT		0x00004000
929*4882a593Smuzhiyun #define	DDSD_CKSRCOVERLAY	0x00008000
930*4882a593Smuzhiyun #define	DDSD_CKSRCBLT		0x00010000
931*4882a593Smuzhiyun #define	DDSD_MIPMAPCOUNT	0x00020000
932*4882a593Smuzhiyun #define	DDSD_REFRESHRATE	0x00040000
933*4882a593Smuzhiyun #define	DDSD_LINEARSIZE		0x00080000
934*4882a593Smuzhiyun #define DDSD_TEXTURESTAGE       0x00100000
935*4882a593Smuzhiyun #define DDSD_FVF                0x00200000
936*4882a593Smuzhiyun #define DDSD_SRCVBHANDLE        0x00400000
937*4882a593Smuzhiyun #define	DDSD_ALL		0x007ff9ee
938*4882a593Smuzhiyun 
939*4882a593Smuzhiyun /* EnumSurfaces flags */
940*4882a593Smuzhiyun #define DDENUMSURFACES_ALL          0x00000001
941*4882a593Smuzhiyun #define DDENUMSURFACES_MATCH        0x00000002
942*4882a593Smuzhiyun #define DDENUMSURFACES_NOMATCH      0x00000004
943*4882a593Smuzhiyun #define DDENUMSURFACES_CANBECREATED 0x00000008
944*4882a593Smuzhiyun #define DDENUMSURFACES_DOESEXIST    0x00000010
945*4882a593Smuzhiyun 
946*4882a593Smuzhiyun /* SetDisplayMode flags */
947*4882a593Smuzhiyun #define DDSDM_STANDARDVGAMODE	0x00000001
948*4882a593Smuzhiyun 
949*4882a593Smuzhiyun /* EnumDisplayModes flags */
950*4882a593Smuzhiyun #define DDEDM_REFRESHRATES	0x00000001
951*4882a593Smuzhiyun #define DDEDM_STANDARDVGAMODES	0x00000002
952*4882a593Smuzhiyun 
953*4882a593Smuzhiyun /* WaitForVerticalDisplay flags */
954*4882a593Smuzhiyun 
955*4882a593Smuzhiyun #define DDWAITVB_BLOCKBEGIN		0x00000001
956*4882a593Smuzhiyun #define DDWAITVB_BLOCKBEGINEVENT	0x00000002
957*4882a593Smuzhiyun #define DDWAITVB_BLOCKEND		0x00000004
958*4882a593Smuzhiyun 
959*4882a593Smuzhiyun     typedef struct _DDSURFACEDESC {
960*4882a593Smuzhiyun         DWORD dwSize;           /* 0: size of the DDSURFACEDESC structure */
961*4882a593Smuzhiyun         DWORD dwFlags;          /* 4: determines what fields are valid */
962*4882a593Smuzhiyun         DWORD dwHeight;         /* 8: height of surface to be created */
963*4882a593Smuzhiyun         DWORD dwWidth;          /* C: width of input surface */
964*4882a593Smuzhiyun         union {
965*4882a593Smuzhiyun             LONG lPitch;        /* 10: distance to start of next line (return value only) */
966*4882a593Smuzhiyun             DWORD dwLinearSize;
967*4882a593Smuzhiyun         } DUMMYUNIONNAME1;
968*4882a593Smuzhiyun         DWORD dwBackBufferCount;        /* 14: number of back buffers requested */
969*4882a593Smuzhiyun         union {
970*4882a593Smuzhiyun             DWORD dwMipMapCount;        /* 18:number of mip-map levels requested */
971*4882a593Smuzhiyun             DWORD dwZBufferBitDepth;    /*18: depth of Z buffer requested */
972*4882a593Smuzhiyun             DWORD dwRefreshRate;        /* 18:refresh rate (used when display mode is described) */
973*4882a593Smuzhiyun         } DUMMYUNIONNAME2;
974*4882a593Smuzhiyun         DWORD dwAlphaBitDepth;  /* 1C:depth of alpha buffer requested */
975*4882a593Smuzhiyun         DWORD dwReserved;       /* 20:reserved */
976*4882a593Smuzhiyun         LPVOID lpSurface;       /* 24:pointer to the associated surface memory */
977*4882a593Smuzhiyun         DDCOLORKEY ddckCKDestOverlay;   /* 28: CK for dest overlay use */
978*4882a593Smuzhiyun         DDCOLORKEY ddckCKDestBlt;       /* 30: CK for destination blt use */
979*4882a593Smuzhiyun         DDCOLORKEY ddckCKSrcOverlay;    /* 38: CK for source overlay use */
980*4882a593Smuzhiyun         DDCOLORKEY ddckCKSrcBlt;        /* 40: CK for source blt use */
981*4882a593Smuzhiyun         DDPIXELFORMAT ddpfPixelFormat;  /* 48: pixel format description of the surface */
982*4882a593Smuzhiyun         DDSCAPS ddsCaps;        /* 68: direct draw surface caps */
983*4882a593Smuzhiyun     } DDSURFACEDESC, *LPDDSURFACEDESC;
984*4882a593Smuzhiyun 
985*4882a593Smuzhiyun     typedef struct _DDSURFACEDESC2 {
986*4882a593Smuzhiyun         DWORD dwSize;           /* 0: size of the DDSURFACEDESC structure */
987*4882a593Smuzhiyun         DWORD dwFlags;          /* 4: determines what fields are valid */
988*4882a593Smuzhiyun         DWORD dwHeight;         /* 8: height of surface to be created */
989*4882a593Smuzhiyun         DWORD dwWidth;          /* C: width of input surface */
990*4882a593Smuzhiyun         union {
991*4882a593Smuzhiyun             LONG lPitch;        /*10: distance to start of next line (return value only) */
992*4882a593Smuzhiyun             DWORD dwLinearSize; /*10: formless late-allocated optimized surface size */
993*4882a593Smuzhiyun         } DUMMYUNIONNAME1;
994*4882a593Smuzhiyun         DWORD dwBackBufferCount;        /* 14: number of back buffers requested */
995*4882a593Smuzhiyun         union {
996*4882a593Smuzhiyun             DWORD dwMipMapCount;        /* 18:number of mip-map levels requested */
997*4882a593Smuzhiyun             DWORD dwRefreshRate;        /* 18:refresh rate (used when display mode is described) */
998*4882a593Smuzhiyun             DWORD dwSrcVBHandle;        /* 18:source used in VB::Optimize */
999*4882a593Smuzhiyun         } DUMMYUNIONNAME2;
1000*4882a593Smuzhiyun         DWORD dwAlphaBitDepth;  /* 1C:depth of alpha buffer requested */
1001*4882a593Smuzhiyun         DWORD dwReserved;       /* 20:reserved */
1002*4882a593Smuzhiyun         LPVOID lpSurface;       /* 24:pointer to the associated surface memory */
1003*4882a593Smuzhiyun         union {
1004*4882a593Smuzhiyun             DDCOLORKEY ddckCKDestOverlay;       /* 28: CK for dest overlay use */
1005*4882a593Smuzhiyun             DWORD dwEmptyFaceColor;     /* 28: color for empty cubemap faces */
1006*4882a593Smuzhiyun         } DUMMYUNIONNAME3;
1007*4882a593Smuzhiyun         DDCOLORKEY ddckCKDestBlt;       /* 30: CK for destination blt use */
1008*4882a593Smuzhiyun         DDCOLORKEY ddckCKSrcOverlay;    /* 38: CK for source overlay use */
1009*4882a593Smuzhiyun         DDCOLORKEY ddckCKSrcBlt;        /* 40: CK for source blt use */
1010*4882a593Smuzhiyun 
1011*4882a593Smuzhiyun         union {
1012*4882a593Smuzhiyun             DDPIXELFORMAT ddpfPixelFormat;      /* 48: pixel format description of the surface */
1013*4882a593Smuzhiyun             DWORD dwFVF;        /* 48: vertex format description of vertex buffers */
1014*4882a593Smuzhiyun         } DUMMYUNIONNAME4;
1015*4882a593Smuzhiyun         DDSCAPS2 ddsCaps;       /* 68: DDraw surface caps */
1016*4882a593Smuzhiyun         DWORD dwTextureStage;   /* 78: stage in multitexture cascade */
1017*4882a593Smuzhiyun     } DDSURFACEDESC2, *LPDDSURFACEDESC2;
1018*4882a593Smuzhiyun 
1019*4882a593Smuzhiyun /* DDCOLORCONTROL.dwFlags */
1020*4882a593Smuzhiyun #define DDCOLOR_BRIGHTNESS	0x00000001
1021*4882a593Smuzhiyun #define DDCOLOR_CONTRAST	0x00000002
1022*4882a593Smuzhiyun #define DDCOLOR_HUE		0x00000004
1023*4882a593Smuzhiyun #define DDCOLOR_SATURATION	0x00000008
1024*4882a593Smuzhiyun #define DDCOLOR_SHARPNESS	0x00000010
1025*4882a593Smuzhiyun #define DDCOLOR_GAMMA		0x00000020
1026*4882a593Smuzhiyun #define DDCOLOR_COLORENABLE	0x00000040
1027*4882a593Smuzhiyun 
1028*4882a593Smuzhiyun     typedef struct {
1029*4882a593Smuzhiyun         DWORD dwSize;
1030*4882a593Smuzhiyun         DWORD dwFlags;
1031*4882a593Smuzhiyun         LONG lBrightness;
1032*4882a593Smuzhiyun         LONG lContrast;
1033*4882a593Smuzhiyun         LONG lHue;
1034*4882a593Smuzhiyun         LONG lSaturation;
1035*4882a593Smuzhiyun         LONG lSharpness;
1036*4882a593Smuzhiyun         LONG lGamma;
1037*4882a593Smuzhiyun         LONG lColorEnable;
1038*4882a593Smuzhiyun         DWORD dwReserved1;
1039*4882a593Smuzhiyun     } DDCOLORCONTROL, *LPDDCOLORCONTROL;
1040*4882a593Smuzhiyun 
1041*4882a593Smuzhiyun     typedef struct {
1042*4882a593Smuzhiyun         WORD red[256];
1043*4882a593Smuzhiyun         WORD green[256];
1044*4882a593Smuzhiyun         WORD blue[256];
1045*4882a593Smuzhiyun     } DDGAMMARAMP, *LPDDGAMMARAMP;
1046*4882a593Smuzhiyun 
1047*4882a593Smuzhiyun     typedef BOOL CALLBACK(*LPDDENUMCALLBACKA) (GUID *, LPSTR, LPSTR, LPVOID);
1048*4882a593Smuzhiyun     typedef BOOL CALLBACK(*LPDDENUMCALLBACKW) (GUID *, LPWSTR, LPWSTR, LPVOID);
1049*4882a593Smuzhiyun      DECL_WINELIB_TYPE_AW(LPDDENUMCALLBACK)
1050*4882a593Smuzhiyun 
1051*4882a593Smuzhiyun     typedef HRESULT CALLBACK(*LPDDENUMMODESCALLBACK) (LPDDSURFACEDESC, LPVOID);
1052*4882a593Smuzhiyun     typedef HRESULT CALLBACK(*LPDDENUMMODESCALLBACK2) (LPDDSURFACEDESC2,
1053*4882a593Smuzhiyun                                                        LPVOID);
1054*4882a593Smuzhiyun     typedef HRESULT CALLBACK(*LPDDENUMSURFACESCALLBACK) (LPDIRECTDRAWSURFACE,
1055*4882a593Smuzhiyun                                                          LPDDSURFACEDESC,
1056*4882a593Smuzhiyun                                                          LPVOID);
1057*4882a593Smuzhiyun     typedef HRESULT CALLBACK(*LPDDENUMSURFACESCALLBACK2) (LPDIRECTDRAWSURFACE4,
1058*4882a593Smuzhiyun                                                           LPDDSURFACEDESC2,
1059*4882a593Smuzhiyun                                                           LPVOID);
1060*4882a593Smuzhiyun     typedef HRESULT CALLBACK(*LPDDENUMSURFACESCALLBACK7) (LPDIRECTDRAWSURFACE7,
1061*4882a593Smuzhiyun                                                           LPDDSURFACEDESC2,
1062*4882a593Smuzhiyun                                                           LPVOID);
1063*4882a593Smuzhiyun 
1064*4882a593Smuzhiyun     typedef BOOL CALLBACK(*LPDDENUMCALLBACKEXA) (GUID *, LPSTR, LPSTR, LPVOID,
1065*4882a593Smuzhiyun                                                  HMONITOR);
1066*4882a593Smuzhiyun     typedef BOOL CALLBACK(*LPDDENUMCALLBACKEXW) (GUID *, LPWSTR, LPWSTR, LPVOID,
1067*4882a593Smuzhiyun                                                  HMONITOR);
1068*4882a593Smuzhiyun      DECL_WINELIB_TYPE_AW(LPDDENUMCALLBACKEX)
1069*4882a593Smuzhiyun 
1070*4882a593Smuzhiyun     HRESULT WINAPI DirectDrawEnumerateExA(LPDDENUMCALLBACKEXA lpCallback,
1071*4882a593Smuzhiyun                                           LPVOID lpContext, DWORD dwFlags);
1072*4882a593Smuzhiyun     HRESULT WINAPI DirectDrawEnumerateExW(LPDDENUMCALLBACKEXW lpCallback,
1073*4882a593Smuzhiyun                                           LPVOID lpContext, DWORD dwFlags);
1074*4882a593Smuzhiyun #define DirectDrawEnumerateEx WINELIB_NAME_AW(DirectDrawEnumerateEx)
1075*4882a593Smuzhiyun 
1076*4882a593Smuzhiyun /* flags for DirectDrawEnumerateEx */
1077*4882a593Smuzhiyun #define DDENUM_ATTACHEDSECONDARYDEVICES	0x00000001
1078*4882a593Smuzhiyun #define DDENUM_DETACHEDSECONDARYDEVICES	0x00000002
1079*4882a593Smuzhiyun #define DDENUM_NONDISPLAYDEVICES	0x00000004
1080*4882a593Smuzhiyun 
1081*4882a593Smuzhiyun /* flags for DirectDrawCreate or IDirectDraw::Initialize */
1082*4882a593Smuzhiyun #define DDCREATE_HARDWAREONLY	1L
1083*4882a593Smuzhiyun #define DDCREATE_EMULATIONONLY	2L
1084*4882a593Smuzhiyun 
1085*4882a593Smuzhiyun     typedef struct _DDBLTFX {
1086*4882a593Smuzhiyun         DWORD dwSize;           /* size of structure */
1087*4882a593Smuzhiyun         DWORD dwDDFX;           /* FX operations */
1088*4882a593Smuzhiyun         DWORD dwROP;            /* Win32 raster operations */
1089*4882a593Smuzhiyun         DWORD dwDDROP;          /* Raster operations new for DirectDraw */
1090*4882a593Smuzhiyun         DWORD dwRotationAngle;  /* Rotation angle for blt */
1091*4882a593Smuzhiyun         DWORD dwZBufferOpCode;  /* ZBuffer compares */
1092*4882a593Smuzhiyun         DWORD dwZBufferLow;     /* Low limit of Z buffer */
1093*4882a593Smuzhiyun         DWORD dwZBufferHigh;    /* High limit of Z buffer */
1094*4882a593Smuzhiyun         DWORD dwZBufferBaseDest;        /* Destination base value */
1095*4882a593Smuzhiyun         DWORD dwZDestConstBitDepth;     /* Bit depth used to specify Z constant for destination */
1096*4882a593Smuzhiyun         union {
1097*4882a593Smuzhiyun             DWORD dwZDestConst; /* Constant to use as Z buffer for dest */
1098*4882a593Smuzhiyun             LPDIRECTDRAWSURFACE lpDDSZBufferDest;       /* Surface to use as Z buffer for dest */
1099*4882a593Smuzhiyun         } DUMMYUNIONNAME1;
1100*4882a593Smuzhiyun         DWORD dwZSrcConstBitDepth;      /* Bit depth used to specify Z constant for source */
1101*4882a593Smuzhiyun         union {
1102*4882a593Smuzhiyun             DWORD dwZSrcConst;  /* Constant to use as Z buffer for src */
1103*4882a593Smuzhiyun             LPDIRECTDRAWSURFACE lpDDSZBufferSrc;        /* Surface to use as Z buffer for src */
1104*4882a593Smuzhiyun         } DUMMYUNIONNAME2;
1105*4882a593Smuzhiyun         DWORD dwAlphaEdgeBlendBitDepth; /* Bit depth used to specify constant for alpha edge blend */
1106*4882a593Smuzhiyun         DWORD dwAlphaEdgeBlend; /* Alpha for edge blending */
1107*4882a593Smuzhiyun         DWORD dwReserved;
1108*4882a593Smuzhiyun         DWORD dwAlphaDestConstBitDepth; /* Bit depth used to specify alpha constant for destination */
1109*4882a593Smuzhiyun         union {
1110*4882a593Smuzhiyun             DWORD dwAlphaDestConst;     /* Constant to use as Alpha Channel */
1111*4882a593Smuzhiyun             LPDIRECTDRAWSURFACE lpDDSAlphaDest; /* Surface to use as Alpha Channel */
1112*4882a593Smuzhiyun         } DUMMYUNIONNAME3;
1113*4882a593Smuzhiyun         DWORD dwAlphaSrcConstBitDepth;  /* Bit depth used to specify alpha constant for source */
1114*4882a593Smuzhiyun         union {
1115*4882a593Smuzhiyun             DWORD dwAlphaSrcConst;      /* Constant to use as Alpha Channel */
1116*4882a593Smuzhiyun             LPDIRECTDRAWSURFACE lpDDSAlphaSrc;  /* Surface to use as Alpha Channel */
1117*4882a593Smuzhiyun         } DUMMYUNIONNAME4;
1118*4882a593Smuzhiyun         union {
1119*4882a593Smuzhiyun             DWORD dwFillColor;  /* color in RGB or Palettized */
1120*4882a593Smuzhiyun             DWORD dwFillDepth;  /* depth value for z-buffer */
1121*4882a593Smuzhiyun             DWORD dwFillPixel;  /* pixel val for RGBA or RGBZ */
1122*4882a593Smuzhiyun             LPDIRECTDRAWSURFACE lpDDSPattern;   /* Surface to use as pattern */
1123*4882a593Smuzhiyun         } DUMMYUNIONNAME5;
1124*4882a593Smuzhiyun         DDCOLORKEY ddckDestColorkey;    /* DestColorkey override */
1125*4882a593Smuzhiyun         DDCOLORKEY ddckSrcColorkey;     /* SrcColorkey override */
1126*4882a593Smuzhiyun     } DDBLTFX, *LPDDBLTFX;
1127*4882a593Smuzhiyun 
1128*4882a593Smuzhiyun /* dwDDFX */
1129*4882a593Smuzhiyun /* arithmetic stretching along y axis */
1130*4882a593Smuzhiyun #define DDBLTFX_ARITHSTRETCHY			0x00000001
1131*4882a593Smuzhiyun /* mirror on y axis */
1132*4882a593Smuzhiyun #define DDBLTFX_MIRRORLEFTRIGHT			0x00000002
1133*4882a593Smuzhiyun /* mirror on x axis */
1134*4882a593Smuzhiyun #define DDBLTFX_MIRRORUPDOWN			0x00000004
1135*4882a593Smuzhiyun /* do not tear */
1136*4882a593Smuzhiyun #define DDBLTFX_NOTEARING			0x00000008
1137*4882a593Smuzhiyun /* 180 degrees clockwise rotation */
1138*4882a593Smuzhiyun #define DDBLTFX_ROTATE180			0x00000010
1139*4882a593Smuzhiyun /* 270 degrees clockwise rotation */
1140*4882a593Smuzhiyun #define DDBLTFX_ROTATE270			0x00000020
1141*4882a593Smuzhiyun /* 90 degrees clockwise rotation */
1142*4882a593Smuzhiyun #define DDBLTFX_ROTATE90			0x00000040
1143*4882a593Smuzhiyun /* dwZBufferLow and dwZBufferHigh specify limits to the copied Z values */
1144*4882a593Smuzhiyun #define DDBLTFX_ZBUFFERRANGE			0x00000080
1145*4882a593Smuzhiyun /* add dwZBufferBaseDest to every source z value before compare */
1146*4882a593Smuzhiyun #define DDBLTFX_ZBUFFERBASEDEST			0x00000100
1147*4882a593Smuzhiyun 
1148*4882a593Smuzhiyun     typedef struct _DDOVERLAYFX {
1149*4882a593Smuzhiyun         DWORD dwSize;           /* size of structure */
1150*4882a593Smuzhiyun         DWORD dwAlphaEdgeBlendBitDepth; /* Bit depth used to specify constant for alpha edge blend */
1151*4882a593Smuzhiyun         DWORD dwAlphaEdgeBlend; /* Constant to use as alpha for edge blend */
1152*4882a593Smuzhiyun         DWORD dwReserved;
1153*4882a593Smuzhiyun         DWORD dwAlphaDestConstBitDepth; /* Bit depth used to specify alpha constant for destination */
1154*4882a593Smuzhiyun         union {
1155*4882a593Smuzhiyun             DWORD dwAlphaDestConst;     /* Constant to use as alpha channel for dest */
1156*4882a593Smuzhiyun             LPDIRECTDRAWSURFACE lpDDSAlphaDest; /* Surface to use as alpha channel for dest */
1157*4882a593Smuzhiyun         } DUMMYUNIONNAME1;
1158*4882a593Smuzhiyun         DWORD dwAlphaSrcConstBitDepth;  /* Bit depth used to specify alpha constant for source */
1159*4882a593Smuzhiyun         union {
1160*4882a593Smuzhiyun             DWORD dwAlphaSrcConst;      /* Constant to use as alpha channel for src */
1161*4882a593Smuzhiyun             LPDIRECTDRAWSURFACE lpDDSAlphaSrc;  /* Surface to use as alpha channel for src */
1162*4882a593Smuzhiyun         } DUMMYUNIONNAME2;
1163*4882a593Smuzhiyun         DDCOLORKEY dckDestColorkey;     /* DestColorkey override */
1164*4882a593Smuzhiyun         DDCOLORKEY dckSrcColorkey;      /* DestColorkey override */
1165*4882a593Smuzhiyun         DWORD dwDDFX;           /* Overlay FX */
1166*4882a593Smuzhiyun         DWORD dwFlags;          /* flags */
1167*4882a593Smuzhiyun     } DDOVERLAYFX, *LPDDOVERLAYFX;
1168*4882a593Smuzhiyun 
1169*4882a593Smuzhiyun     typedef struct _DDBLTBATCH {
1170*4882a593Smuzhiyun         LPRECT lprDest;
1171*4882a593Smuzhiyun         LPDIRECTDRAWSURFACE lpDDSSrc;
1172*4882a593Smuzhiyun         LPRECT lprSrc;
1173*4882a593Smuzhiyun         DWORD dwFlags;
1174*4882a593Smuzhiyun         LPDDBLTFX lpDDBltFx;
1175*4882a593Smuzhiyun     } DDBLTBATCH, *LPDDBLTBATCH;
1176*4882a593Smuzhiyun 
1177*4882a593Smuzhiyun #define MAX_DDDEVICEID_STRING          512
1178*4882a593Smuzhiyun 
1179*4882a593Smuzhiyun     typedef struct tagDDDEVICEIDENTIFIER {
1180*4882a593Smuzhiyun         char szDriver[MAX_DDDEVICEID_STRING];
1181*4882a593Smuzhiyun         char szDescription[MAX_DDDEVICEID_STRING];
1182*4882a593Smuzhiyun         LARGE_INTEGER liDriverVersion;
1183*4882a593Smuzhiyun         DWORD dwVendorId;
1184*4882a593Smuzhiyun         DWORD dwDeviceId;
1185*4882a593Smuzhiyun         DWORD dwSubSysId;
1186*4882a593Smuzhiyun         DWORD dwRevision;
1187*4882a593Smuzhiyun         GUID guidDeviceIdentifier;
1188*4882a593Smuzhiyun     } DDDEVICEIDENTIFIER, *LPDDDEVICEIDENTIFIER;
1189*4882a593Smuzhiyun 
1190*4882a593Smuzhiyun     typedef struct tagDDDEVICEIDENTIFIER2 {
1191*4882a593Smuzhiyun         char szDriver[MAX_DDDEVICEID_STRING];   /* user readable driver name */
1192*4882a593Smuzhiyun         char szDescription[MAX_DDDEVICEID_STRING];      /* user readable description */
1193*4882a593Smuzhiyun         LARGE_INTEGER liDriverVersion;  /* driver version */
1194*4882a593Smuzhiyun         DWORD dwVendorId;       /* vendor ID, zero if unknown */
1195*4882a593Smuzhiyun         DWORD dwDeviceId;       /* chipset ID, zero if unknown */
1196*4882a593Smuzhiyun         DWORD dwSubSysId;       /* board ID, zero if unknown */
1197*4882a593Smuzhiyun         DWORD dwRevision;       /* chipset version, zero if unknown */
1198*4882a593Smuzhiyun         GUID guidDeviceIdentifier;      /* unique ID for this driver/chipset combination */
1199*4882a593Smuzhiyun         DWORD dwWHQLLevel;      /* Windows Hardware Quality Lab certification level */
1200*4882a593Smuzhiyun     } DDDEVICEIDENTIFIER2, *LPDDDEVICEIDENTIFIER2;
1201*4882a593Smuzhiyun 
1202*4882a593Smuzhiyun /*****************************************************************************
1203*4882a593Smuzhiyun  * IDirectDrawPalette interface
1204*4882a593Smuzhiyun  */
1205*4882a593Smuzhiyun #undef INTERFACE
1206*4882a593Smuzhiyun #define INTERFACE IDirectDrawPalette
DECLARE_INTERFACE_(IDirectDrawPalette,IUnknown)1207*4882a593Smuzhiyun      DECLARE_INTERFACE_(IDirectDrawPalette, IUnknown) {
1208*4882a593Smuzhiyun         STDMETHOD(QueryInterface) (THIS_ REFIID, PVOID *) PURE;
1209*4882a593Smuzhiyun         STDMETHOD_(ULONG, AddRef) (THIS) PURE;
1210*4882a593Smuzhiyun         STDMETHOD_(ULONG, Release) (THIS) PURE;
1211*4882a593Smuzhiyun         STDMETHOD(GetCaps) (THIS_ LPDWORD lpdwCaps) PURE;
1212*4882a593Smuzhiyun         STDMETHOD(GetEntries) (THIS_ DWORD dwFlags, DWORD dwBase,
1213*4882a593Smuzhiyun                                DWORD dwNumEntries,
1214*4882a593Smuzhiyun                                LPPALETTEENTRY lpEntries) PURE;
1215*4882a593Smuzhiyun         STDMETHOD(Initialize) (THIS_ LPDIRECTDRAW lpDD, DWORD dwFlags,
1216*4882a593Smuzhiyun                                LPPALETTEENTRY lpDDColorTable) PURE;
1217*4882a593Smuzhiyun         STDMETHOD(SetEntries) (THIS_ DWORD dwFlags, DWORD dwStartingEntry,
1218*4882a593Smuzhiyun                                DWORD dwCount, LPPALETTEENTRY lpEntries) PURE;
1219*4882a593Smuzhiyun     };
1220*4882a593Smuzhiyun 
1221*4882a593Smuzhiyun     /*** IUnknown methods ***/
1222*4882a593Smuzhiyun #define IDirectDrawPalette_QueryInterface(p,a,b) ICOM_CALL_(QueryInterface,p,(p,a,b))
1223*4882a593Smuzhiyun #define IDirectDrawPalette_AddRef(p)             ICOM_CALL_(AddRef,p,(p))
1224*4882a593Smuzhiyun #define IDirectDrawPalette_Release(p)            ICOM_CALL_(Release,p,(p))
1225*4882a593Smuzhiyun     /*** IDirectDrawPalette methods ***/
1226*4882a593Smuzhiyun #define IDirectDrawPalette_GetCaps(p,a)          ICOM_CALL_(GetCaps,p,(p,a))
1227*4882a593Smuzhiyun #define IDirectDrawPalette_GetEntries(p,a,b,c,d) ICOM_CALL_(GetEntries,p,(p,a,b,c,d))
1228*4882a593Smuzhiyun #define IDirectDrawPalette_Initialize(p,a,b,c)   ICOM_CALL_(Initialize,p,(p,a,b,c))
1229*4882a593Smuzhiyun #define IDirectDrawPalette_SetEntries(p,a,b,c,d) ICOM_CALL_(SetEntries,p,(p,a,b,c,d))
1230*4882a593Smuzhiyun 
1231*4882a593Smuzhiyun /*****************************************************************************
1232*4882a593Smuzhiyun  * IDirectDrawClipper interface
1233*4882a593Smuzhiyun  */
1234*4882a593Smuzhiyun #undef INTERFACE
1235*4882a593Smuzhiyun #define INTERFACE IDirectDrawClipper
DECLARE_INTERFACE_(IDirectDrawClipper,IUnknown)1236*4882a593Smuzhiyun     DECLARE_INTERFACE_(IDirectDrawClipper, IUnknown) {
1237*4882a593Smuzhiyun         STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE;
1238*4882a593Smuzhiyun         STDMETHOD_(ULONG, AddRef) (THIS) PURE;
1239*4882a593Smuzhiyun         STDMETHOD_(ULONG, Release) (THIS) PURE;
1240*4882a593Smuzhiyun         STDMETHOD(GetClipList) (THIS_ LPRECT lpRect, LPRGNDATA lpClipList,
1241*4882a593Smuzhiyun                                 LPDWORD lpdwSize) PURE;
1242*4882a593Smuzhiyun         STDMETHOD(GetHWnd) (THIS_ HWND * lphWnd) PURE;
1243*4882a593Smuzhiyun         STDMETHOD(Initialize) (THIS_ LPDIRECTDRAW lpDD, DWORD dwFlags) PURE;
1244*4882a593Smuzhiyun         STDMETHOD(IsClipListChanged) (THIS_ BOOL * lpbChanged) PURE;
1245*4882a593Smuzhiyun         STDMETHOD(SetClipList) (THIS_ LPRGNDATA lpClipList, DWORD dwFlags) PURE;
1246*4882a593Smuzhiyun         STDMETHOD(SetHWnd) (THIS_ DWORD dwFlags, HWND hWnd) PURE;
1247*4882a593Smuzhiyun     };
1248*4882a593Smuzhiyun 
1249*4882a593Smuzhiyun     /*** IUnknown methods ***/
1250*4882a593Smuzhiyun #define IDirectDrawClipper_QueryInterface(p,a,b) ICOM_CALL_(QueryInterface,p,(p,a,b))
1251*4882a593Smuzhiyun #define IDirectDrawClipper_AddRef(p)             ICOM_CALL_(AddRef,p,(p))
1252*4882a593Smuzhiyun #define IDirectDrawClipper_Release(p)            ICOM_CALL_(Release,p,(p))
1253*4882a593Smuzhiyun     /*** IDirectDrawClipper methods ***/
1254*4882a593Smuzhiyun #define IDirectDrawClipper_GetClipList(p,a,b,c)   ICOM_CALL_(GetClipList,p,(p,a,b,c))
1255*4882a593Smuzhiyun #define IDirectDrawClipper_GetHWnd(p,a)           ICOM_CALL_(GetHWnd,p,(p,a))
1256*4882a593Smuzhiyun #define IDirectDrawClipper_Initialize(p,a,b)      ICOM_CALL_(Initialize,p,(p,a,b))
1257*4882a593Smuzhiyun #define IDirectDrawClipper_IsClipListChanged(p,a) ICOM_CALL_(IsClipListChanged,p,(p,a))
1258*4882a593Smuzhiyun #define IDirectDrawClipper_SetClipList(p,a,b)     ICOM_CALL_(SetClipList,p,(p,a,b))
1259*4882a593Smuzhiyun #define IDirectDrawClipper_SetHWnd(p,a,b)         ICOM_CALL_(SetHWnd,p,(p,a,b))
1260*4882a593Smuzhiyun 
1261*4882a593Smuzhiyun /*****************************************************************************
1262*4882a593Smuzhiyun  * IDirectDraw interface
1263*4882a593Smuzhiyun  */
1264*4882a593Smuzhiyun #undef INTERFACE
1265*4882a593Smuzhiyun #define INTERFACE IDirectDraw
DECLARE_INTERFACE_(IDirectDraw,IUnknown)1266*4882a593Smuzhiyun     DECLARE_INTERFACE_(IDirectDraw, IUnknown) {
1267*4882a593Smuzhiyun         STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE;
1268*4882a593Smuzhiyun         STDMETHOD_(ULONG, AddRef) (THIS) PURE;
1269*4882a593Smuzhiyun         STDMETHOD_(ULONG, Release) (THIS) PURE;
1270*4882a593Smuzhiyun         STDMETHOD(Compact) (THIS) PURE;
1271*4882a593Smuzhiyun         STDMETHOD(CreateClipper) (THIS_ DWORD dwFlags,
1272*4882a593Smuzhiyun                                   LPDIRECTDRAWCLIPPER * lplpDDClipper,
1273*4882a593Smuzhiyun                                   IUnknown * pUnkOuter) PURE;
1274*4882a593Smuzhiyun         STDMETHOD(CreatePalette) (THIS_ DWORD dwFlags,
1275*4882a593Smuzhiyun                                   LPPALETTEENTRY lpColorTable,
1276*4882a593Smuzhiyun                                   LPDIRECTDRAWPALETTE * lplpDDPalette,
1277*4882a593Smuzhiyun                                   IUnknown * pUnkOuter) PURE;
1278*4882a593Smuzhiyun         STDMETHOD(CreateSurface) (THIS_ LPDDSURFACEDESC lpDDSurfaceDesc,
1279*4882a593Smuzhiyun                                   LPDIRECTDRAWSURFACE * lplpDDSurface,
1280*4882a593Smuzhiyun                                   IUnknown * pUnkOuter) PURE;
1281*4882a593Smuzhiyun         STDMETHOD(DuplicateSurface) (THIS_ LPDIRECTDRAWSURFACE lpDDSurface,
1282*4882a593Smuzhiyun                                      LPDIRECTDRAWSURFACE *
1283*4882a593Smuzhiyun                                      lplpDupDDSurface) PURE;
1284*4882a593Smuzhiyun         STDMETHOD(EnumDisplayModes) (THIS_ DWORD dwFlags,
1285*4882a593Smuzhiyun                                      LPDDSURFACEDESC lpDDSurfaceDesc,
1286*4882a593Smuzhiyun                                      LPVOID lpContext,
1287*4882a593Smuzhiyun                                      LPDDENUMMODESCALLBACK lpEnumModesCallback)
1288*4882a593Smuzhiyun             PURE;
1289*4882a593Smuzhiyun         STDMETHOD(EnumSurfaces) (THIS_ DWORD dwFlags, LPDDSURFACEDESC lpDDSD,
1290*4882a593Smuzhiyun                                  LPVOID lpContext,
1291*4882a593Smuzhiyun                                  LPDDENUMSURFACESCALLBACK
1292*4882a593Smuzhiyun                                  lpEnumSurfacesCallback) PURE;
1293*4882a593Smuzhiyun         STDMETHOD(FlipToGDISurface) (THIS) PURE;
1294*4882a593Smuzhiyun         STDMETHOD(GetCaps) (THIS_ LPDDCAPS lpDDDriverCaps,
1295*4882a593Smuzhiyun                             LPDDCAPS lpDDHELCaps) PURE;
1296*4882a593Smuzhiyun         STDMETHOD(GetDisplayMode) (THIS_ LPDDSURFACEDESC lpDDSurfaceDesc) PURE;
1297*4882a593Smuzhiyun         STDMETHOD(GetFourCCCodes) (THIS_ LPDWORD lpNumCodes,
1298*4882a593Smuzhiyun                                    LPDWORD lpCodes) PURE;
1299*4882a593Smuzhiyun         STDMETHOD(GetGDISurface) (THIS_ LPDIRECTDRAWSURFACE *
1300*4882a593Smuzhiyun                                   lplpGDIDDSurface) PURE;
1301*4882a593Smuzhiyun         STDMETHOD(GetMonitorFrequency) (THIS_ LPDWORD lpdwFrequency) PURE;
1302*4882a593Smuzhiyun         STDMETHOD(GetScanLine) (THIS_ LPDWORD lpdwScanLine) PURE;
1303*4882a593Smuzhiyun         STDMETHOD(GetVerticalBlankStatus) (THIS_ BOOL * lpbIsInVB) PURE;
1304*4882a593Smuzhiyun         STDMETHOD(Initialize) (THIS_ GUID * lpGUID) PURE;
1305*4882a593Smuzhiyun         STDMETHOD(RestoreDisplayMode) (THIS) PURE;
1306*4882a593Smuzhiyun         STDMETHOD(SetCooperativeLevel) (THIS_ HWND hWnd, DWORD dwFlags) PURE;
1307*4882a593Smuzhiyun         STDMETHOD(SetDisplayMode) (THIS_ DWORD, DWORD, DWORD) PURE;
1308*4882a593Smuzhiyun         STDMETHOD(WaitForVerticalBlank) (THIS_ DWORD dwFlags,
1309*4882a593Smuzhiyun                                          HANDLE hEvent) PURE;
1310*4882a593Smuzhiyun     };
1311*4882a593Smuzhiyun 
1312*4882a593Smuzhiyun     /*** IUnknown methods ***/
1313*4882a593Smuzhiyun #define IDirectDraw_QueryInterface(p,a,b) ICOM_CALL_(QueryInterface,p,(p,a,b))
1314*4882a593Smuzhiyun #define IDirectDraw_AddRef(p)             ICOM_CALL_(AddRef,p,(p))
1315*4882a593Smuzhiyun #define IDirectDraw_Release(p)            ICOM_CALL_(Release,p,(p))
1316*4882a593Smuzhiyun     /*** IDirectDraw methods ***/
1317*4882a593Smuzhiyun #define IDirectDraw_Compact(p)                  ICOM_CALL_(Compact,p,(p))
1318*4882a593Smuzhiyun #define IDirectDraw_CreateClipper(p,a,b,c)      ICOM_CALL_(CreateClipper,p,(p,a,b,c))
1319*4882a593Smuzhiyun #define IDirectDraw_CreatePalette(p,a,b,c,d)    ICOM_CALL_(CreatePalette,p,(p,a,b,c,d))
1320*4882a593Smuzhiyun #define IDirectDraw_CreateSurface(p,a,b,c)      ICOM_CALL_(CreateSurface,p,(p,a,b,c))
1321*4882a593Smuzhiyun #define IDirectDraw_DuplicateSurface(p,a,b)     ICOM_CALL_(DuplicateSurface,p,(p,a,b))
1322*4882a593Smuzhiyun #define IDirectDraw_EnumDisplayModes(p,a,b,c,d) ICOM_CALL_(EnumDisplayModes,p,(p,a,b,c,d))
1323*4882a593Smuzhiyun #define IDirectDraw_EnumSurfaces(p,a,b,c,d)     ICOM_CALL_(EnumSurfaces,p,(p,a,b,c,d))
1324*4882a593Smuzhiyun #define IDirectDraw_FlipToGDISurface(p)         ICOM_CALL_(FlipToGDISurface,p,(p))
1325*4882a593Smuzhiyun #define IDirectDraw_GetCaps(p,a,b)              ICOM_CALL_(GetCaps,p,(p,a,b))
1326*4882a593Smuzhiyun #define IDirectDraw_GetDisplayMode(p,a)         ICOM_CALL_(GetDisplayMode,p,(p,a))
1327*4882a593Smuzhiyun #define IDirectDraw_GetFourCCCodes(p,a,b)       ICOM_CALL_(GetFourCCCodes,p,(p,a,b))
1328*4882a593Smuzhiyun #define IDirectDraw_GetGDISurface(p,a)          ICOM_CALL_(GetGDISurface,p,(p,a))
1329*4882a593Smuzhiyun #define IDirectDraw_GetMonitorFrequency(p,a)    ICOM_CALL_(GetMonitorFrequency,p,(p,a))
1330*4882a593Smuzhiyun #define IDirectDraw_GetScanLine(p,a)            ICOM_CALL_(GetScanLine,p,(p,a))
1331*4882a593Smuzhiyun #define IDirectDraw_GetVerticalBlankStatus(p,a) ICOM_CALL_(GetVerticalBlankStatus,p,(p,a))
1332*4882a593Smuzhiyun #define IDirectDraw_Initialize(p,a)             ICOM_CALL_(Initialize,p,(p,a))
1333*4882a593Smuzhiyun #define IDirectDraw_RestoreDisplayMode(p)       ICOM_CALL_(RestoreDisplayMode,p,(p))
1334*4882a593Smuzhiyun #define IDirectDraw_SetCooperativeLevel(p,a,b)  ICOM_CALL_(SetCooperativeLevel,p,(p,a,b))
1335*4882a593Smuzhiyun #define IDirectDraw_SetDisplayMode(p,a,b,c)     ICOM_CALL_(SetDisplayMode,p,(p,a,b,c))
1336*4882a593Smuzhiyun #define IDirectDraw_WaitForVerticalBlank(p,a,b) ICOM_CALL_(WaitForVerticalBlank,p,(p,a,b))
1337*4882a593Smuzhiyun 
1338*4882a593Smuzhiyun /* flags for Lock() */
1339*4882a593Smuzhiyun #define DDLOCK_SURFACEMEMORYPTR	0x00000000
1340*4882a593Smuzhiyun #define DDLOCK_WAIT		0x00000001
1341*4882a593Smuzhiyun #define DDLOCK_EVENT		0x00000002
1342*4882a593Smuzhiyun #define DDLOCK_READONLY		0x00000010
1343*4882a593Smuzhiyun #define DDLOCK_WRITEONLY	0x00000020
1344*4882a593Smuzhiyun #define DDLOCK_NOSYSLOCK	0x00000800
1345*4882a593Smuzhiyun 
1346*4882a593Smuzhiyun /*****************************************************************************
1347*4882a593Smuzhiyun  * IDirectDraw2 interface
1348*4882a593Smuzhiyun  */
1349*4882a593Smuzhiyun /* Note: IDirectDraw2 cannot derive from IDirectDraw because the number of
1350*4882a593Smuzhiyun  * arguments of SetDisplayMode has changed !
1351*4882a593Smuzhiyun  */
1352*4882a593Smuzhiyun #undef INTERFACE
1353*4882a593Smuzhiyun #define INTERFACE IDirectDraw2
DECLARE_INTERFACE_(IDirectDraw2,IUnknown)1354*4882a593Smuzhiyun     DECLARE_INTERFACE_(IDirectDraw2, IUnknown) {
1355*4882a593Smuzhiyun         STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE;
1356*4882a593Smuzhiyun         STDMETHOD_(ULONG, AddRef) (THIS) PURE;
1357*4882a593Smuzhiyun         STDMETHOD_(ULONG, Release) (THIS) PURE;
1358*4882a593Smuzhiyun         STDMETHOD(Compact) (THIS) PURE;
1359*4882a593Smuzhiyun         STDMETHOD(CreateClipper) (THIS_ DWORD dwFlags,
1360*4882a593Smuzhiyun                                   LPDIRECTDRAWCLIPPER * lplpDDClipper,
1361*4882a593Smuzhiyun                                   IUnknown * pUnkOuter) PURE;
1362*4882a593Smuzhiyun         STDMETHOD(CreatePalette) (THIS_ DWORD dwFlags,
1363*4882a593Smuzhiyun                                   LPPALETTEENTRY lpColorTable,
1364*4882a593Smuzhiyun                                   LPDIRECTDRAWPALETTE * lplpDDPalette,
1365*4882a593Smuzhiyun                                   IUnknown * pUnkOuter) PURE;
1366*4882a593Smuzhiyun         STDMETHOD(CreateSurface) (THIS_ LPDDSURFACEDESC lpDDSurfaceDesc,
1367*4882a593Smuzhiyun                                   LPDIRECTDRAWSURFACE2 * lplpDDSurface,
1368*4882a593Smuzhiyun                                   IUnknown * pUnkOuter) PURE;
1369*4882a593Smuzhiyun         STDMETHOD(DuplicateSurface) (THIS_ LPDIRECTDRAWSURFACE2 lpDDSurface,
1370*4882a593Smuzhiyun                                      LPDIRECTDRAWSURFACE2 *
1371*4882a593Smuzhiyun                                      lplpDupDDSurface) PURE;
1372*4882a593Smuzhiyun         STDMETHOD(EnumDisplayModes) (THIS_ DWORD dwFlags,
1373*4882a593Smuzhiyun                                      LPDDSURFACEDESC lpDDSurfaceDesc,
1374*4882a593Smuzhiyun                                      LPVOID lpContext,
1375*4882a593Smuzhiyun                                      LPDDENUMMODESCALLBACK lpEnumModesCallback)
1376*4882a593Smuzhiyun             PURE;
1377*4882a593Smuzhiyun         STDMETHOD(EnumSurfaces) (THIS_ DWORD dwFlags, LPDDSURFACEDESC lpDDSD,
1378*4882a593Smuzhiyun                                  LPVOID lpContext,
1379*4882a593Smuzhiyun                                  LPDDENUMSURFACESCALLBACK
1380*4882a593Smuzhiyun                                  lpEnumSurfacesCallback) PURE;
1381*4882a593Smuzhiyun         STDMETHOD(FlipToGDISurface) (THIS) PURE;
1382*4882a593Smuzhiyun         STDMETHOD(GetCaps) (THIS_ LPDDCAPS lpDDDriverCaps,
1383*4882a593Smuzhiyun                             LPDDCAPS lpDDHELCaps) PURE;
1384*4882a593Smuzhiyun         STDMETHOD(GetDisplayMode) (THIS_ LPDDSURFACEDESC lpDDSurfaceDesc) PURE;
1385*4882a593Smuzhiyun         STDMETHOD(GetFourCCCodes) (THIS_ LPDWORD lpNumCodes,
1386*4882a593Smuzhiyun                                    LPDWORD lpCodes) PURE;
1387*4882a593Smuzhiyun         STDMETHOD(GetGDISurface) (THIS_ LPDIRECTDRAWSURFACE2 *
1388*4882a593Smuzhiyun                                   lplpGDIDDSurface) PURE;
1389*4882a593Smuzhiyun         STDMETHOD(GetMonitorFrequency) (THIS_ LPDWORD lpdwFrequency) PURE;
1390*4882a593Smuzhiyun         STDMETHOD(GetScanLine) (THIS_ LPDWORD lpdwScanLine) PURE;
1391*4882a593Smuzhiyun         STDMETHOD(GetVerticalBlankStatus) (THIS_ BOOL * lpbIsInVB) PURE;
1392*4882a593Smuzhiyun         STDMETHOD(Initialize) (THIS_ GUID * lpGUID) PURE;
1393*4882a593Smuzhiyun         STDMETHOD(RestoreDisplayMode) (THIS) PURE;
1394*4882a593Smuzhiyun         STDMETHOD(SetCooperativeLevel) (THIS_ HWND hWnd, DWORD dwFlags) PURE;
1395*4882a593Smuzhiyun         STDMETHOD(SetDisplayMode) (THIS_ DWORD dwWidth, DWORD dwHeight,
1396*4882a593Smuzhiyun                                    DWORD dwBPP, DWORD dwRefreshRate,
1397*4882a593Smuzhiyun                                    DWORD dwFlags) PURE;
1398*4882a593Smuzhiyun         STDMETHOD(WaitForVerticalBlank) (THIS_ DWORD dwFlags,
1399*4882a593Smuzhiyun                                          HANDLE hEvent) PURE;
1400*4882a593Smuzhiyun 
1401*4882a593Smuzhiyun         STDMETHOD(GetAvailableVidMem) (THIS_ LPDDSCAPS lpDDCaps,
1402*4882a593Smuzhiyun                                        LPDWORD lpdwTotal,
1403*4882a593Smuzhiyun                                        LPDWORD lpdwFree) PURE;
1404*4882a593Smuzhiyun     };
1405*4882a593Smuzhiyun 
1406*4882a593Smuzhiyun     /*** IUnknown methods ***/
1407*4882a593Smuzhiyun #define IDirectDraw2_QueryInterface(p,a,b) ICOM_CALL_(QueryInterface,p,(p,a,b))
1408*4882a593Smuzhiyun #define IDirectDraw2_AddRef(p)             ICOM_CALL_(AddRef,p,(p))
1409*4882a593Smuzhiyun #define IDirectDraw2_Release(p)            ICOM_CALL_(Release,p,(p))
1410*4882a593Smuzhiyun     /*** IDirectDraw methods ***/
1411*4882a593Smuzhiyun #define IDirectDraw2_Compact(p)                  ICOM_CALL_(Compact,p,(p))
1412*4882a593Smuzhiyun #define IDirectDraw2_CreateClipper(p,a,b,c)      ICOM_CALL_(CreateClipper,p,(p,a,b,c))
1413*4882a593Smuzhiyun #define IDirectDraw2_CreatePalette(p,a,b,c,d)    ICOM_CALL_(CreatePalette,p,(p,a,b,c,d))
1414*4882a593Smuzhiyun #define IDirectDraw2_CreateSurface(p,a,b,c)      ICOM_CALL_(CreateSurface,p,(p,a,b,c))
1415*4882a593Smuzhiyun #define IDirectDraw2_DuplicateSurface(p,a,b)     ICOM_CALL_(DuplicateSurface,p,(p,a,b))
1416*4882a593Smuzhiyun #define IDirectDraw2_EnumDisplayModes(p,a,b,c,d) ICOM_CALL_(EnumDisplayModes,p,(p,a,b,c,d))
1417*4882a593Smuzhiyun #define IDirectDraw2_EnumSurfaces(p,a,b,c,d)     ICOM_CALL_(EnumSurfaces,p,(p,a,b,c,d))
1418*4882a593Smuzhiyun #define IDirectDraw2_FlipToGDISurface(p)         ICOM_CALL_(FlipToGDISurface,p,(p))
1419*4882a593Smuzhiyun #define IDirectDraw2_GetCaps(p,a,b)              ICOM_CALL_(GetCaps,p,(p,a,b))
1420*4882a593Smuzhiyun #define IDirectDraw2_GetDisplayMode(p,a)         ICOM_CALL_(GetDisplayMode,p,(p,a))
1421*4882a593Smuzhiyun #define IDirectDraw2_GetFourCCCodes(p,a,b)       ICOM_CALL_(GetFourCCCodes,p,(p,a,b))
1422*4882a593Smuzhiyun #define IDirectDraw2_GetGDISurface(p,a)          ICOM_CALL_(GetGDISurface,p,(p,a))
1423*4882a593Smuzhiyun #define IDirectDraw2_GetMonitorFrequency(p,a)    ICOM_CALL_(GetMonitorFrequency,p,(p,a))
1424*4882a593Smuzhiyun #define IDirectDraw2_GetScanLine(p,a)            ICOM_CALL_(GetScanLine,p,(p,a))
1425*4882a593Smuzhiyun #define IDirectDraw2_GetVerticalBlankStatus(p,a) ICOM_CALL_(GetVerticalBlankStatus,p,(p,a))
1426*4882a593Smuzhiyun #define IDirectDraw2_Initialize(p,a)             ICOM_CALL_(Initialize,p,(p,a))
1427*4882a593Smuzhiyun #define IDirectDraw2_RestoreDisplayMode(p)       ICOM_CALL_(RestoreDisplayMode,p,(p))
1428*4882a593Smuzhiyun #define IDirectDraw2_SetCooperativeLevel(p,a,b)  ICOM_CALL_(SetCooperativeLevel,p,(p,a,b))
1429*4882a593Smuzhiyun #define IDirectDraw2_SetDisplayMode(p,a,b,c,d,e) ICOM_CALL_(SetDisplayMode,p,(p,a,b,c,d,e))
1430*4882a593Smuzhiyun #define IDirectDraw2_WaitForVerticalBlank(p,a,b) ICOM_CALL_(WaitForVerticalBlank,p,(p,a,b))
1431*4882a593Smuzhiyun /*** IDirectDraw2 methods ***/
1432*4882a593Smuzhiyun #define IDirectDraw2_GetAvailableVidMem(p,a,b,c) ICOM_CALL_(GetAvailableVidMem,p,(p,a,b,c))
1433*4882a593Smuzhiyun 
1434*4882a593Smuzhiyun /*****************************************************************************
1435*4882a593Smuzhiyun  * IDirectDraw4 interface
1436*4882a593Smuzhiyun  */
1437*4882a593Smuzhiyun #undef INTERFACE
1438*4882a593Smuzhiyun #define INTERFACE IDirectDraw4
DECLARE_INTERFACE_(IDirectDraw4,IUnknown)1439*4882a593Smuzhiyun     DECLARE_INTERFACE_(IDirectDraw4, IUnknown) {
1440*4882a593Smuzhiyun         STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE;
1441*4882a593Smuzhiyun         STDMETHOD_(ULONG, AddRef) (THIS) PURE;
1442*4882a593Smuzhiyun         STDMETHOD_(ULONG, Release) (THIS) PURE;
1443*4882a593Smuzhiyun         STDMETHOD(Compact) (THIS) PURE;
1444*4882a593Smuzhiyun         STDMETHOD(CreateClipper) (THIS_ DWORD dwFlags,
1445*4882a593Smuzhiyun                                   LPDIRECTDRAWCLIPPER * lplpDDClipper,
1446*4882a593Smuzhiyun                                   IUnknown * pUnkOuter) PURE;
1447*4882a593Smuzhiyun         STDMETHOD(CreatePalette) (THIS_ DWORD dwFlags,
1448*4882a593Smuzhiyun                                   LPPALETTEENTRY lpColorTable,
1449*4882a593Smuzhiyun                                   LPDIRECTDRAWPALETTE * lplpDDPalette,
1450*4882a593Smuzhiyun                                   IUnknown * pUnkOuter) PURE;
1451*4882a593Smuzhiyun         STDMETHOD(CreateSurface) (THIS_ LPDDSURFACEDESC2 lpDDSurfaceDesc,
1452*4882a593Smuzhiyun                                   LPDIRECTDRAWSURFACE4 * lplpDDSurface,
1453*4882a593Smuzhiyun                                   IUnknown * pUnkOuter) PURE;
1454*4882a593Smuzhiyun         STDMETHOD(DuplicateSurface) (THIS_ LPDIRECTDRAWSURFACE4 lpDDSurface,
1455*4882a593Smuzhiyun                                      LPDIRECTDRAWSURFACE4 *
1456*4882a593Smuzhiyun                                      lplpDupDDSurface) PURE;
1457*4882a593Smuzhiyun         STDMETHOD(EnumDisplayModes) (THIS_ DWORD dwFlags,
1458*4882a593Smuzhiyun                                      LPDDSURFACEDESC2 lpDDSurfaceDesc,
1459*4882a593Smuzhiyun                                      LPVOID lpContext,
1460*4882a593Smuzhiyun                                      LPDDENUMMODESCALLBACK2 lpEnumModesCallback)
1461*4882a593Smuzhiyun             PURE;
1462*4882a593Smuzhiyun         STDMETHOD(EnumSurfaces) (THIS_ DWORD dwFlags, LPDDSURFACEDESC2 lpDDSD,
1463*4882a593Smuzhiyun                                  LPVOID lpContext,
1464*4882a593Smuzhiyun                                  LPDDENUMSURFACESCALLBACK2
1465*4882a593Smuzhiyun                                  lpEnumSurfacesCallback) PURE;
1466*4882a593Smuzhiyun         STDMETHOD(FlipToGDISurface) (THIS) PURE;
1467*4882a593Smuzhiyun         STDMETHOD(GetCaps) (THIS_ LPDDCAPS lpDDDriverCaps,
1468*4882a593Smuzhiyun                             LPDDCAPS lpDDHELCaps) PURE;
1469*4882a593Smuzhiyun         STDMETHOD(GetDisplayMode) (THIS_ LPDDSURFACEDESC2 lpDDSurfaceDesc) PURE;
1470*4882a593Smuzhiyun         STDMETHOD(GetFourCCCodes) (THIS_ LPDWORD lpNumCodes,
1471*4882a593Smuzhiyun                                    LPDWORD lpCodes) PURE;
1472*4882a593Smuzhiyun         STDMETHOD(GetGDISurface) (THIS_ LPDIRECTDRAWSURFACE4 *
1473*4882a593Smuzhiyun                                   lplpGDIDDSurface) PURE;
1474*4882a593Smuzhiyun         STDMETHOD(GetMonitorFrequency) (THIS_ LPDWORD lpdwFrequency) PURE;
1475*4882a593Smuzhiyun         STDMETHOD(GetScanLine) (THIS_ LPDWORD lpdwScanLine) PURE;
1476*4882a593Smuzhiyun         STDMETHOD(GetVerticalBlankStatus) (THIS_ BOOL * lpbIsInVB) PURE;
1477*4882a593Smuzhiyun         STDMETHOD(Initialize) (THIS_ GUID * lpGUID) PURE;
1478*4882a593Smuzhiyun         STDMETHOD(RestoreDisplayMode) (THIS) PURE;
1479*4882a593Smuzhiyun         STDMETHOD(SetCooperativeLevel) (THIS_ HWND hWnd, DWORD dwFlags) PURE;
1480*4882a593Smuzhiyun         STDMETHOD(SetDisplayMode) (THIS_ DWORD dwWidth, DWORD dwHeight,
1481*4882a593Smuzhiyun                                    DWORD dwBPP, DWORD dwRefreshRate,
1482*4882a593Smuzhiyun                                    DWORD dwFlags) PURE;
1483*4882a593Smuzhiyun         STDMETHOD(WaitForVerticalBlank) (THIS_ DWORD dwFlags,
1484*4882a593Smuzhiyun                                          HANDLE hEvent) PURE;
1485*4882a593Smuzhiyun 
1486*4882a593Smuzhiyun         STDMETHOD(GetAvailableVidMem) (THIS_ LPDDSCAPS2 lpDDCaps,
1487*4882a593Smuzhiyun                                        LPDWORD lpdwTotal,
1488*4882a593Smuzhiyun                                        LPDWORD lpdwFree) PURE;
1489*4882a593Smuzhiyun 
1490*4882a593Smuzhiyun         STDMETHOD(GetSurfaceFromDC) (THIS_ HDC, LPDIRECTDRAWSURFACE4 *) PURE;
1491*4882a593Smuzhiyun         STDMETHOD(RestoreAllSurfaces) (THIS) PURE;
1492*4882a593Smuzhiyun         STDMETHOD(TestCooperativeLevel) (THIS) PURE;
1493*4882a593Smuzhiyun         STDMETHOD(GetDeviceIdentifier) (THIS_ LPDDDEVICEIDENTIFIER, DWORD) PURE;
1494*4882a593Smuzhiyun     };
1495*4882a593Smuzhiyun 
1496*4882a593Smuzhiyun     /*** IUnknown methods ***/
1497*4882a593Smuzhiyun #define IDirectDraw4_QueryInterface(p,a,b) ICOM_CALL_(QueryInterface,p,(p,a,b))
1498*4882a593Smuzhiyun #define IDirectDraw4_AddRef(p)             ICOM_CALL_(AddRef,p,(p))
1499*4882a593Smuzhiyun #define IDirectDraw4_Release(p)            ICOM_CALL_(Release,p,(p))
1500*4882a593Smuzhiyun     /*** IDirectDraw methods ***/
1501*4882a593Smuzhiyun #define IDirectDraw4_Compact(p)                  ICOM_CALL_(Compact,p,(p))
1502*4882a593Smuzhiyun #define IDirectDraw4_CreateClipper(p,a,b,c)      ICOM_CALL_(CreateClipper,p,(p,a,b,c))
1503*4882a593Smuzhiyun #define IDirectDraw4_CreatePalette(p,a,b,c,d)    ICOM_CALL_(CreatePalette,p,(p,a,b,c,d))
1504*4882a593Smuzhiyun #define IDirectDraw4_CreateSurface(p,a,b,c)      ICOM_CALL_(CreateSurface,p,(p,a,b,c))
1505*4882a593Smuzhiyun #define IDirectDraw4_DuplicateSurface(p,a,b)     ICOM_CALL_(DuplicateSurface,p,(p,a,b))
1506*4882a593Smuzhiyun #define IDirectDraw4_EnumDisplayModes(p,a,b,c,d) ICOM_CALL_(EnumDisplayModes,p,(p,a,b,c,d))
1507*4882a593Smuzhiyun #define IDirectDraw4_EnumSurfaces(p,a,b,c,d)     ICOM_CALL_(EnumSurfaces,p,(p,a,b,c,d))
1508*4882a593Smuzhiyun #define IDirectDraw4_FlipToGDISurface(p)         ICOM_CALL_(FlipToGDISurface,p,(p))
1509*4882a593Smuzhiyun #define IDirectDraw4_GetCaps(p,a,b)              ICOM_CALL_(GetCaps,p,(p,a,b))
1510*4882a593Smuzhiyun #define IDirectDraw4_GetDisplayMode(p,a)         ICOM_CALL_(GetDisplayMode,p,(p,a))
1511*4882a593Smuzhiyun #define IDirectDraw4_GetFourCCCodes(p,a,b)       ICOM_CALL_(GetFourCCCodes,p,(p,a,b))
1512*4882a593Smuzhiyun #define IDirectDraw4_GetGDISurface(p,a)          ICOM_CALL_(GetGDISurface,p,(p,a))
1513*4882a593Smuzhiyun #define IDirectDraw4_GetMonitorFrequency(p,a)    ICOM_CALL_(GetMonitorFrequency,p,(p,a))
1514*4882a593Smuzhiyun #define IDirectDraw4_GetScanLine(p,a)            ICOM_CALL_(GetScanLine,p,(p,a))
1515*4882a593Smuzhiyun #define IDirectDraw4_GetVerticalBlankStatus(p,a) ICOM_CALL_(GetVerticalBlankStatus,p,(p,a))
1516*4882a593Smuzhiyun #define IDirectDraw4_Initialize(p,a)             ICOM_CALL_(Initialize,p,(p,a))
1517*4882a593Smuzhiyun #define IDirectDraw4_RestoreDisplayMode(p)       ICOM_CALL_(RestoreDisplayMode,p,(p))
1518*4882a593Smuzhiyun #define IDirectDraw4_SetCooperativeLevel(p,a,b)  ICOM_CALL_(SetCooperativeLevel,p,(p,a,b))
1519*4882a593Smuzhiyun #define IDirectDraw4_SetDisplayMode(p,a,b,c,d,e) ICOM_CALL_(SetDisplayMode,p,(p,a,b,c,d,e))
1520*4882a593Smuzhiyun #define IDirectDraw4_WaitForVerticalBlank(p,a,b) ICOM_CALL_(WaitForVerticalBlank,p,(p,a,b))
1521*4882a593Smuzhiyun /*** IDirectDraw2 methods ***/
1522*4882a593Smuzhiyun #define IDirectDraw4_GetAvailableVidMem(p,a,b,c) ICOM_CALL_(GetAvailableVidMem,p,(p,a,b,c))
1523*4882a593Smuzhiyun /*** IDirectDraw4 methods ***/
1524*4882a593Smuzhiyun #define IDirectDraw4_GetSurfaceFromDC(p,a,b)    ICOM_CALL_(GetSurfaceFromDC,p,(p,a,b))
1525*4882a593Smuzhiyun #define IDirectDraw4_RestoreAllSurfaces(p)      ICOM_CALL_(RestoreAllSurfaces,p,(p))
1526*4882a593Smuzhiyun #define IDirectDraw4_TestCooperativeLevel(p)    ICOM_CALL_(TestCooperativeLevel,p,(p))
1527*4882a593Smuzhiyun #define IDirectDraw4_GetDeviceIdentifier(p,a,b) ICOM_CALL_(GetDeviceIdentifier,p,(p,a,b))
1528*4882a593Smuzhiyun 
1529*4882a593Smuzhiyun /*****************************************************************************
1530*4882a593Smuzhiyun  * IDirectDraw7 interface
1531*4882a593Smuzhiyun  */
1532*4882a593Smuzhiyun /* Note: IDirectDraw7 cannot derive from IDirectDraw4; it is even documented
1533*4882a593Smuzhiyun  * as not interchangeable with earlier DirectDraw interfaces.
1534*4882a593Smuzhiyun  */
1535*4882a593Smuzhiyun #undef INTERFACE
1536*4882a593Smuzhiyun #define INTERFACE IDirectDraw7
DECLARE_INTERFACE_(IDirectDraw7,IUnknown)1537*4882a593Smuzhiyun     DECLARE_INTERFACE_(IDirectDraw7, IUnknown) {
1538*4882a593Smuzhiyun         STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE;
1539*4882a593Smuzhiyun         STDMETHOD_(ULONG, AddRef) (THIS) PURE;
1540*4882a593Smuzhiyun         STDMETHOD_(ULONG, Release) (THIS) PURE;
1541*4882a593Smuzhiyun         STDMETHOD(Compact) (THIS) PURE;
1542*4882a593Smuzhiyun         STDMETHOD(CreateClipper) (THIS_ DWORD dwFlags,
1543*4882a593Smuzhiyun                                   LPDIRECTDRAWCLIPPER * lplpDDClipper,
1544*4882a593Smuzhiyun                                   IUnknown * pUnkOuter) PURE;
1545*4882a593Smuzhiyun         STDMETHOD(CreatePalette) (THIS_ DWORD dwFlags,
1546*4882a593Smuzhiyun                                   LPPALETTEENTRY lpColorTable,
1547*4882a593Smuzhiyun                                   LPDIRECTDRAWPALETTE * lplpDDPalette,
1548*4882a593Smuzhiyun                                   IUnknown * pUnkOuter) PURE;
1549*4882a593Smuzhiyun         STDMETHOD(CreateSurface) (THIS_ LPDDSURFACEDESC2 lpDDSurfaceDesc,
1550*4882a593Smuzhiyun                                   LPDIRECTDRAWSURFACE7 * lplpDDSurface,
1551*4882a593Smuzhiyun                                   IUnknown * pUnkOuter) PURE;
1552*4882a593Smuzhiyun         STDMETHOD(DuplicateSurface) (THIS_ LPDIRECTDRAWSURFACE7 lpDDSurface,
1553*4882a593Smuzhiyun                                      LPDIRECTDRAWSURFACE7 *
1554*4882a593Smuzhiyun                                      lplpDupDDSurface) PURE;
1555*4882a593Smuzhiyun         STDMETHOD(EnumDisplayModes) (THIS_ DWORD dwFlags,
1556*4882a593Smuzhiyun                                      LPDDSURFACEDESC2 lpDDSurfaceDesc,
1557*4882a593Smuzhiyun                                      LPVOID lpContext,
1558*4882a593Smuzhiyun                                      LPDDENUMMODESCALLBACK2 lpEnumModesCallback)
1559*4882a593Smuzhiyun             PURE;
1560*4882a593Smuzhiyun         STDMETHOD(EnumSurfaces) (THIS_ DWORD dwFlags, LPDDSURFACEDESC2 lpDDSD,
1561*4882a593Smuzhiyun                                  LPVOID lpContext,
1562*4882a593Smuzhiyun                                  LPDDENUMSURFACESCALLBACK7
1563*4882a593Smuzhiyun                                  lpEnumSurfacesCallback) PURE;
1564*4882a593Smuzhiyun         STDMETHOD(FlipToGDISurface) (THIS) PURE;
1565*4882a593Smuzhiyun         STDMETHOD(GetCaps) (THIS_ LPDDCAPS lpDDDriverCaps,
1566*4882a593Smuzhiyun                             LPDDCAPS lpDDHELCaps) PURE;
1567*4882a593Smuzhiyun         STDMETHOD(GetDisplayMode) (THIS_ LPDDSURFACEDESC2 lpDDSurfaceDesc) PURE;
1568*4882a593Smuzhiyun         STDMETHOD(GetFourCCCodes) (THIS_ LPDWORD lpNumCodes,
1569*4882a593Smuzhiyun                                    LPDWORD lpCodes) PURE;
1570*4882a593Smuzhiyun         STDMETHOD(GetGDISurface) (THIS_ LPDIRECTDRAWSURFACE7 *
1571*4882a593Smuzhiyun                                   lplpGDIDDSurface) PURE;
1572*4882a593Smuzhiyun         STDMETHOD(GetMonitorFrequency) (THIS_ LPDWORD lpdwFrequency) PURE;
1573*4882a593Smuzhiyun         STDMETHOD(GetScanLine) (THIS_ LPDWORD lpdwScanLine) PURE;
1574*4882a593Smuzhiyun         STDMETHOD(GetVerticalBlankStatus) (THIS_ BOOL * lpbIsInVB) PURE;
1575*4882a593Smuzhiyun         STDMETHOD(Initialize) (THIS_ GUID * lpGUID) PURE;
1576*4882a593Smuzhiyun         STDMETHOD(RestoreDisplayMode) (THIS) PURE;
1577*4882a593Smuzhiyun         STDMETHOD(SetCooperativeLevel) (THIS_ HWND hWnd, DWORD dwFlags) PURE;
1578*4882a593Smuzhiyun         STDMETHOD(SetDisplayMode) (THIS_ DWORD dwWidth, DWORD dwHeight,
1579*4882a593Smuzhiyun                                    DWORD dwBPP, DWORD dwRefreshRate,
1580*4882a593Smuzhiyun                                    DWORD dwFlags) PURE;
1581*4882a593Smuzhiyun         STDMETHOD(WaitForVerticalBlank) (THIS_ DWORD dwFlags,
1582*4882a593Smuzhiyun                                          HANDLE hEvent) PURE;
1583*4882a593Smuzhiyun 
1584*4882a593Smuzhiyun         STDMETHOD(GetAvailableVidMem) (THIS_ LPDDSCAPS2 lpDDCaps,
1585*4882a593Smuzhiyun                                        LPDWORD lpdwTotal,
1586*4882a593Smuzhiyun                                        LPDWORD lpdwFree) PURE;
1587*4882a593Smuzhiyun 
1588*4882a593Smuzhiyun         STDMETHOD(GetSurfaceFromDC) (THIS_ HDC, LPDIRECTDRAWSURFACE7 *) PURE;
1589*4882a593Smuzhiyun         STDMETHOD(RestoreAllSurfaces) (THIS) PURE;
1590*4882a593Smuzhiyun         STDMETHOD(TestCooperativeLevel) (THIS) PURE;
1591*4882a593Smuzhiyun         STDMETHOD(GetDeviceIdentifier) (THIS_ LPDDDEVICEIDENTIFIER2,
1592*4882a593Smuzhiyun                                         DWORD) PURE;
1593*4882a593Smuzhiyun 
1594*4882a593Smuzhiyun         STDMETHOD(StartModeTest) (THIS_ LPSIZE, DWORD, DWORD) PURE;
1595*4882a593Smuzhiyun         STDMETHOD(EvaluateMode) (THIS_ DWORD, DWORD *) PURE;
1596*4882a593Smuzhiyun     };
1597*4882a593Smuzhiyun 
1598*4882a593Smuzhiyun     /*** IUnknown methods ***/
1599*4882a593Smuzhiyun #define IDirectDraw7_QueryInterface(p,a,b) ICOM_CALL_(QueryInterface,p,(p,a,b))
1600*4882a593Smuzhiyun #define IDirectDraw7_AddRef(p)             ICOM_CALL_(AddRef,p,(p))
1601*4882a593Smuzhiyun #define IDirectDraw7_Release(p)            ICOM_CALL_(Release,p,(p))
1602*4882a593Smuzhiyun     /*** IDirectDraw methods ***/
1603*4882a593Smuzhiyun #define IDirectDraw7_Compact(p)                  ICOM_CALL_(Compact,p,(p))
1604*4882a593Smuzhiyun #define IDirectDraw7_CreateClipper(p,a,b,c)      ICOM_CALL_(CreateClipper,p,(p,a,b,c))
1605*4882a593Smuzhiyun #define IDirectDraw7_CreatePalette(p,a,b,c,d)    ICOM_CALL_(CreatePalette,p,(p,a,b,c,d))
1606*4882a593Smuzhiyun #define IDirectDraw7_CreateSurface(p,a,b,c)      ICOM_CALL_(CreateSurface,p,(p,a,b,c))
1607*4882a593Smuzhiyun #define IDirectDraw7_DuplicateSurface(p,a,b)     ICOM_CALL_(DuplicateSurface,p,(p,a,b))
1608*4882a593Smuzhiyun #define IDirectDraw7_EnumDisplayModes(p,a,b,c,d) ICOM_CALL_(EnumDisplayModes,p,(p,a,b,c,d))
1609*4882a593Smuzhiyun #define IDirectDraw7_EnumSurfaces(p,a,b,c,d)     ICOM_CALL_(EnumSurfaces,p,(p,a,b,c,d))
1610*4882a593Smuzhiyun #define IDirectDraw7_FlipToGDISurface(p)         ICOM_CALL_(FlipToGDISurface,p,(p))
1611*4882a593Smuzhiyun #define IDirectDraw7_GetCaps(p,a,b)              ICOM_CALL_(GetCaps,p,(p,a,b))
1612*4882a593Smuzhiyun #define IDirectDraw7_GetDisplayMode(p,a)         ICOM_CALL_(GetDisplayMode,p,(p,a))
1613*4882a593Smuzhiyun #define IDirectDraw7_GetFourCCCodes(p,a,b)       ICOM_CALL_(GetFourCCCodes,p,(p,a,b))
1614*4882a593Smuzhiyun #define IDirectDraw7_GetGDISurface(p,a)          ICOM_CALL_(GetGDISurface,p,(p,a))
1615*4882a593Smuzhiyun #define IDirectDraw7_GetMonitorFrequency(p,a)    ICOM_CALL_(GetMonitorFrequency,p,(p,a))
1616*4882a593Smuzhiyun #define IDirectDraw7_GetScanLine(p,a)            ICOM_CALL_(GetScanLine,p,(p,a))
1617*4882a593Smuzhiyun #define IDirectDraw7_GetVerticalBlankStatus(p,a) ICOM_CALL_(GetVerticalBlankStatus,p,(p,a))
1618*4882a593Smuzhiyun #define IDirectDraw7_Initialize(p,a)             ICOM_CALL_(Initialize,p,(p,a))
1619*4882a593Smuzhiyun #define IDirectDraw7_RestoreDisplayMode(p)       ICOM_CALL_(RestoreDisplayMode,p,(p))
1620*4882a593Smuzhiyun #define IDirectDraw7_SetCooperativeLevel(p,a,b)  ICOM_CALL_(SetCooperativeLevel,p,(p,a,b))
1621*4882a593Smuzhiyun #define IDirectDraw7_SetDisplayMode(p,a,b,c,d,e) ICOM_CALL_(SetDisplayMode,p,(p,a,b,c,d,e))
1622*4882a593Smuzhiyun #define IDirectDraw7_WaitForVerticalBlank(p,a,b) ICOM_CALL_(WaitForVerticalBlank,p,(p,a,b))
1623*4882a593Smuzhiyun /*** added in IDirectDraw2 ***/
1624*4882a593Smuzhiyun #define IDirectDraw7_GetAvailableVidMem(p,a,b,c) ICOM_CALL_(GetAvailableVidMem,p,(p,a,b,c))
1625*4882a593Smuzhiyun /*** added in IDirectDraw4 ***/
1626*4882a593Smuzhiyun #define IDirectDraw7_GetSurfaceFromDC(p,a,b)    ICOM_CALL_(GetSurfaceFromDC,p,(p,a,b))
1627*4882a593Smuzhiyun #define IDirectDraw7_RestoreAllSurfaces(p)     ICOM_CALL_(RestoreAllSurfaces,p,(p))
1628*4882a593Smuzhiyun #define IDirectDraw7_TestCooperativeLevel(p)    ICOM_CALL_(TestCooperativeLevel,p,(p))
1629*4882a593Smuzhiyun #define IDirectDraw7_GetDeviceIdentifier(p,a,b) ICOM_CALL_(GetDeviceIdentifier,p,(p,a,b))
1630*4882a593Smuzhiyun /*** added in IDirectDraw 7 ***/
1631*4882a593Smuzhiyun #define IDirectDraw7_StartModeTest(p,a,b,c)     ICOM_CALL_(StartModeTest,p,(p,a,b,c))
1632*4882a593Smuzhiyun #define IDirectDraw7_EvaluateMode(p,a,b)        ICOM_CALL_(EvaluateMode,p,(p,a,b))
1633*4882a593Smuzhiyun 
1634*4882a593Smuzhiyun /*****************************************************************************
1635*4882a593Smuzhiyun  * IDirectDrawSurface interface
1636*4882a593Smuzhiyun  */
1637*4882a593Smuzhiyun #undef INTERFACE
1638*4882a593Smuzhiyun #define INTERFACE IDirectDrawSurface
DECLARE_INTERFACE_(IDirectDrawSurface,IUnknown)1639*4882a593Smuzhiyun     DECLARE_INTERFACE_(IDirectDrawSurface, IUnknown) {
1640*4882a593Smuzhiyun         STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE;
1641*4882a593Smuzhiyun         STDMETHOD_(ULONG, AddRef) (THIS) PURE;
1642*4882a593Smuzhiyun         STDMETHOD_(ULONG, Release) (THIS) PURE;
1643*4882a593Smuzhiyun         STDMETHOD(AddAttachedSurface) (THIS_ LPDIRECTDRAWSURFACE
1644*4882a593Smuzhiyun                                        lpDDSAttachedSurface) PURE;
1645*4882a593Smuzhiyun         STDMETHOD(AddOverlayDirtyRect) (THIS_ LPRECT lpRect) PURE;
1646*4882a593Smuzhiyun         STDMETHOD(Blt) (THIS_ LPRECT lpDestRect,
1647*4882a593Smuzhiyun                         LPDIRECTDRAWSURFACE lpDDSrcSurface, LPRECT lpSrcRect,
1648*4882a593Smuzhiyun                         DWORD dwFlags, LPDDBLTFX lpDDBltFx) PURE;
1649*4882a593Smuzhiyun         STDMETHOD(BltBatch) (THIS_ LPDDBLTBATCH lpDDBltBatch, DWORD dwCount,
1650*4882a593Smuzhiyun                              DWORD dwFlags) PURE;
1651*4882a593Smuzhiyun         STDMETHOD(BltFast) (THIS_ DWORD dwX, DWORD dwY,
1652*4882a593Smuzhiyun                             LPDIRECTDRAWSURFACE lpDDSrcSurface,
1653*4882a593Smuzhiyun                             LPRECT lpSrcRect, DWORD dwTrans) PURE;
1654*4882a593Smuzhiyun         STDMETHOD(DeleteAttachedSurface) (THIS_ DWORD dwFlags,
1655*4882a593Smuzhiyun                                           LPDIRECTDRAWSURFACE
1656*4882a593Smuzhiyun                                           lpDDSAttachedSurface) PURE;
1657*4882a593Smuzhiyun         STDMETHOD(EnumAttachedSurfaces) (THIS_ LPVOID lpContext,
1658*4882a593Smuzhiyun                                          LPDDENUMSURFACESCALLBACK
1659*4882a593Smuzhiyun                                          lpEnumSurfacesCallback) PURE;
1660*4882a593Smuzhiyun         STDMETHOD(EnumOverlayZOrders) (THIS_ DWORD dwFlags, LPVOID lpContext,
1661*4882a593Smuzhiyun                                        LPDDENUMSURFACESCALLBACK lpfnCallback)
1662*4882a593Smuzhiyun             PURE;
1663*4882a593Smuzhiyun         STDMETHOD(Flip) (THIS_ LPDIRECTDRAWSURFACE lpDDSurfaceTargetOverride,
1664*4882a593Smuzhiyun                          DWORD dwFlags) PURE;
1665*4882a593Smuzhiyun         STDMETHOD(GetAttachedSurface) (THIS_ LPDDSCAPS lpDDSCaps,
1666*4882a593Smuzhiyun                                        LPDIRECTDRAWSURFACE *
1667*4882a593Smuzhiyun                                        lplpDDAttachedSurface) PURE;
1668*4882a593Smuzhiyun         STDMETHOD(GetBltStatus) (THIS_ DWORD dwFlags) PURE;
1669*4882a593Smuzhiyun         STDMETHOD(GetCaps) (THIS_ LPDDSCAPS lpDDSCaps) PURE;
1670*4882a593Smuzhiyun         STDMETHOD(GetClipper) (THIS_ LPDIRECTDRAWCLIPPER * lplpDDClipper) PURE;
1671*4882a593Smuzhiyun         STDMETHOD(GetColorKey) (THIS_ DWORD dwFlags,
1672*4882a593Smuzhiyun                                 LPDDCOLORKEY lpDDColorKey) PURE;
1673*4882a593Smuzhiyun         STDMETHOD(GetDC) (THIS_ HDC * lphDC) PURE;
1674*4882a593Smuzhiyun         STDMETHOD(GetFlipStatus) (THIS_ DWORD dwFlags) PURE;
1675*4882a593Smuzhiyun         STDMETHOD(GetOverlayPosition) (THIS_ LPLONG lplX, LPLONG lplY) PURE;
1676*4882a593Smuzhiyun         STDMETHOD(GetPalette) (THIS_ LPDIRECTDRAWPALETTE * lplpDDPalette) PURE;
1677*4882a593Smuzhiyun         STDMETHOD(GetPixelFormat) (THIS_ LPDDPIXELFORMAT lpDDPixelFormat) PURE;
1678*4882a593Smuzhiyun         STDMETHOD(GetSurfaceDesc) (THIS_ LPDDSURFACEDESC lpDDSurfaceDesc) PURE;
1679*4882a593Smuzhiyun         STDMETHOD(Initialize) (THIS_ LPDIRECTDRAW lpDD,
1680*4882a593Smuzhiyun                                LPDDSURFACEDESC lpDDSurfaceDesc) PURE;
1681*4882a593Smuzhiyun         STDMETHOD(IsLost) (THIS) PURE;
1682*4882a593Smuzhiyun         STDMETHOD(Lock) (THIS_ LPRECT lpDestRect,
1683*4882a593Smuzhiyun                          LPDDSURFACEDESC lpDDSurfaceDesc, DWORD dwFlags,
1684*4882a593Smuzhiyun                          HANDLE hEvent) PURE;
1685*4882a593Smuzhiyun         STDMETHOD(ReleaseDC) (THIS_ HDC hDC) PURE;
1686*4882a593Smuzhiyun         STDMETHOD(Restore) (THIS) PURE;
1687*4882a593Smuzhiyun         STDMETHOD(SetClipper) (THIS_ LPDIRECTDRAWCLIPPER lpDDClipper) PURE;
1688*4882a593Smuzhiyun         STDMETHOD(SetColorKey) (THIS_ DWORD dwFlags,
1689*4882a593Smuzhiyun                                 LPDDCOLORKEY lpDDColorKey) PURE;
1690*4882a593Smuzhiyun         STDMETHOD(SetOverlayPosition) (THIS_ LONG lX, LONG lY) PURE;
1691*4882a593Smuzhiyun         STDMETHOD(SetPalette) (THIS_ LPDIRECTDRAWPALETTE lpDDPalette) PURE;
1692*4882a593Smuzhiyun         STDMETHOD(Unlock) (THIS_ LPVOID lpSurfaceData) PURE;
1693*4882a593Smuzhiyun         STDMETHOD(UpdateOverlay) (THIS_ LPRECT lpSrcRect,
1694*4882a593Smuzhiyun                                   LPDIRECTDRAWSURFACE lpDDDestSurface,
1695*4882a593Smuzhiyun                                   LPRECT lpDestRect, DWORD dwFlags,
1696*4882a593Smuzhiyun                                   LPDDOVERLAYFX lpDDOverlayFx) PURE;
1697*4882a593Smuzhiyun         STDMETHOD(UpdateOverlayDisplay) (THIS_ DWORD dwFlags) PURE;
1698*4882a593Smuzhiyun         STDMETHOD(UpdateOverlayZOrder) (THIS_ DWORD dwFlags,
1699*4882a593Smuzhiyun                                         LPDIRECTDRAWSURFACE lpDDSReference)
1700*4882a593Smuzhiyun             PURE;
1701*4882a593Smuzhiyun     };
1702*4882a593Smuzhiyun 
1703*4882a593Smuzhiyun     /*** IUnknown methods ***/
1704*4882a593Smuzhiyun #define IDirectDrawSurface_QueryInterface(p,a,b) ICOM_CALL_(QueryInterface,p,(p,a,b))
1705*4882a593Smuzhiyun #define IDirectDrawSurface_AddRef(p)             ICOM_CALL_(AddRef,p,(p))
1706*4882a593Smuzhiyun #define IDirectDrawSurface_Release(p)            ICOM_CALL_(Release,p,(p))
1707*4882a593Smuzhiyun     /*** IDirectDrawSurface methods ***/
1708*4882a593Smuzhiyun #define IDirectDrawSurface_AddAttachedSurface(p,a)      ICOM_CALL_(AddAttachedSurface,p,(p,a))
1709*4882a593Smuzhiyun #define IDirectDrawSurface_AddOverlayDirtyRect(p,a)     ICOM_CALL_(AddOverlayDirtyRect,p,(p,a))
1710*4882a593Smuzhiyun #define IDirectDrawSurface_Blt(p,a,b,c,d,e)             ICOM_CALL_(Blt,p,(p,a,b,c,d,e))
1711*4882a593Smuzhiyun #define IDirectDrawSurface_BltBatch(p,a,b,c)            ICOM_CALL_(BltBatch,p,(p,a,b,c))
1712*4882a593Smuzhiyun #define IDirectDrawSurface_BltFast(p,a,b,c,d,e)         ICOM_CALL_(BltFast,p,(p,a,b,c,d,e))
1713*4882a593Smuzhiyun #define IDirectDrawSurface_DeleteAttachedSurface(p,a,b) ICOM_CALL_(DeleteAttachedSurface,p,(p,a,b))
1714*4882a593Smuzhiyun #define IDirectDrawSurface_EnumAttachedSurfaces(p,a,b)  ICOM_CALL_(EnumAttachedSurfaces,p,(p,a,b))
1715*4882a593Smuzhiyun #define IDirectDrawSurface_EnumOverlayZOrders(p,a,b,c)  ICOM_CALL_(EnumOverlayZOrders,p,(p,a,b,c))
1716*4882a593Smuzhiyun #define IDirectDrawSurface_Flip(p,a,b)                  ICOM_CALL_(Flip,p,(p,a,b))
1717*4882a593Smuzhiyun #define IDirectDrawSurface_GetAttachedSurface(p,a,b)    ICOM_CALL_(GetAttachedSurface,p,(p,a,b))
1718*4882a593Smuzhiyun #define IDirectDrawSurface_GetBltStatus(p,a)            ICOM_CALL_(GetBltStatus,p,(p,a))
1719*4882a593Smuzhiyun #define IDirectDrawSurface_GetCaps(p,a)                 ICOM_CALL_(GetCaps,p,(p,a))
1720*4882a593Smuzhiyun #define IDirectDrawSurface_GetClipper(p,a)              ICOM_CALL_(GetClipper,p,(p,a))
1721*4882a593Smuzhiyun #define IDirectDrawSurface_GetColorKey(p,a,b)           ICOM_CALL_(GetColorKey,p,(p,a,b))
1722*4882a593Smuzhiyun #define IDirectDrawSurface_GetDC(p,a)                   ICOM_CALL_(GetDC,p,(p,a))
1723*4882a593Smuzhiyun #define IDirectDrawSurface_GetFlipStatus(p,a)           ICOM_CALL_(GetFlipStatus,p,(p,a))
1724*4882a593Smuzhiyun #define IDirectDrawSurface_GetOverlayPosition(p,a,b)    ICOM_CALL_(GetOverlayPosition,p,(p,a,b))
1725*4882a593Smuzhiyun #define IDirectDrawSurface_GetPalette(p,a)              ICOM_CALL_(GetPalette,p,(p,a))
1726*4882a593Smuzhiyun #define IDirectDrawSurface_GetPixelFormat(p,a)          ICOM_CALL_(GetPixelFormat,p,(p,a))
1727*4882a593Smuzhiyun #define IDirectDrawSurface_GetSurfaceDesc(p,a)          ICOM_CALL_(GetSurfaceDesc,p,(p,a))
1728*4882a593Smuzhiyun #define IDirectDrawSurface_Initialize(p,a,b)            ICOM_CALL_(Initialize,p,(p,a,b))
1729*4882a593Smuzhiyun #define IDirectDrawSurface_IsLost(p)                    ICOM_CALL_(IsLost,p,(p))
1730*4882a593Smuzhiyun #define IDirectDrawSurface_Lock(p,a,b,c,d)              ICOM_CALL_(Lock,p,(p,a,b,c,d))
1731*4882a593Smuzhiyun #define IDirectDrawSurface_ReleaseDC(p,a)               ICOM_CALL_(ReleaseDC,p,(p,a))
1732*4882a593Smuzhiyun #define IDirectDrawSurface_Restore(p)                   ICOM_CALL_(Restore,p,(p))
1733*4882a593Smuzhiyun #define IDirectDrawSurface_SetClipper(p,a)              ICOM_CALL_(SetClipper,p,(p,a))
1734*4882a593Smuzhiyun #define IDirectDrawSurface_SetColorKey(p,a,b)           ICOM_CALL_(SetColorKey,p,(p,a,b))
1735*4882a593Smuzhiyun #define IDirectDrawSurface_SetOverlayPosition(p,a,b)    ICOM_CALL_(SetOverlayPosition,p,(p,a,b))
1736*4882a593Smuzhiyun #define IDirectDrawSurface_SetPalette(p,a)              ICOM_CALL_(SetPalette,p,(p,a))
1737*4882a593Smuzhiyun #define IDirectDrawSurface_Unlock(p,a)                  ICOM_CALL_(Unlock,p,(p,a))
1738*4882a593Smuzhiyun #define IDirectDrawSurface_UpdateOverlay(p,a,b,c,d,e)   ICOM_CALL_(UpdateOverlay,p,(p,a,b,c,d,e))
1739*4882a593Smuzhiyun #define IDirectDrawSurface_UpdateOverlayDisplay(p,a)    ICOM_CALL_(UpdateOverlayDisplay,p,(p,a))
1740*4882a593Smuzhiyun #define IDirectDrawSurface_UpdateOverlayZOrder(p,a,b)   ICOM_CALL_(UpdateOverlayZOrder,p,(p,a,b))
1741*4882a593Smuzhiyun 
1742*4882a593Smuzhiyun /*****************************************************************************
1743*4882a593Smuzhiyun  * IDirectDrawSurface2 interface
1744*4882a593Smuzhiyun  */
1745*4882a593Smuzhiyun /* Cannot inherit from IDirectDrawSurface because the LPDIRECTDRAWSURFACE parameters
1746*4882a593Smuzhiyun  * have been converted to LPDIRECTDRAWSURFACE2.
1747*4882a593Smuzhiyun  */
1748*4882a593Smuzhiyun #undef INTERFACE
1749*4882a593Smuzhiyun #define INTERFACE IDirectDrawSurface2
DECLARE_INTERFACE_(IDirectDrawSurface2,IUnknown)1750*4882a593Smuzhiyun     DECLARE_INTERFACE_(IDirectDrawSurface2, IUnknown) {
1751*4882a593Smuzhiyun         STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE;
1752*4882a593Smuzhiyun         STDMETHOD_(ULONG, AddRef) (THIS) PURE;
1753*4882a593Smuzhiyun         STDMETHOD_(ULONG, Release) (THIS) PURE;
1754*4882a593Smuzhiyun         STDMETHOD(AddAttachedSurface) (THIS_ LPDIRECTDRAWSURFACE2
1755*4882a593Smuzhiyun                                        lpDDSAttachedSurface) PURE;
1756*4882a593Smuzhiyun         STDMETHOD(AddOverlayDirtyRect) (THIS_ LPRECT lpRect) PURE;
1757*4882a593Smuzhiyun         STDMETHOD(Blt) (THIS_ LPRECT lpDestRect,
1758*4882a593Smuzhiyun                         LPDIRECTDRAWSURFACE2 lpDDSrcSurface, LPRECT lpSrcRect,
1759*4882a593Smuzhiyun                         DWORD dwFlags, LPDDBLTFX lpDDBltFx) PURE;
1760*4882a593Smuzhiyun         STDMETHOD(BltBatch) (THIS_ LPDDBLTBATCH lpDDBltBatch, DWORD dwCount,
1761*4882a593Smuzhiyun                              DWORD dwFlags) PURE;
1762*4882a593Smuzhiyun         STDMETHOD(BltFast) (THIS_ DWORD dwX, DWORD dwY,
1763*4882a593Smuzhiyun                             LPDIRECTDRAWSURFACE2 lpDDSrcSurface,
1764*4882a593Smuzhiyun                             LPRECT lpSrcRect, DWORD dwTrans) PURE;
1765*4882a593Smuzhiyun         STDMETHOD(DeleteAttachedSurface) (THIS_ DWORD dwFlags,
1766*4882a593Smuzhiyun                                           LPDIRECTDRAWSURFACE2
1767*4882a593Smuzhiyun                                           lpDDSAttachedSurface) PURE;
1768*4882a593Smuzhiyun         STDMETHOD(EnumAttachedSurfaces) (THIS_ LPVOID lpContext,
1769*4882a593Smuzhiyun                                          LPDDENUMSURFACESCALLBACK
1770*4882a593Smuzhiyun                                          lpEnumSurfacesCallback) PURE;
1771*4882a593Smuzhiyun         STDMETHOD(EnumOverlayZOrders) (THIS_ DWORD dwFlags, LPVOID lpContext,
1772*4882a593Smuzhiyun                                        LPDDENUMSURFACESCALLBACK lpfnCallback)
1773*4882a593Smuzhiyun             PURE;
1774*4882a593Smuzhiyun         STDMETHOD(Flip) (THIS_ LPDIRECTDRAWSURFACE2 lpDDSurfaceTargetOverride,
1775*4882a593Smuzhiyun                          DWORD dwFlags) PURE;
1776*4882a593Smuzhiyun         STDMETHOD(GetAttachedSurface) (THIS_ LPDDSCAPS lpDDSCaps,
1777*4882a593Smuzhiyun                                        LPDIRECTDRAWSURFACE2 *
1778*4882a593Smuzhiyun                                        lplpDDAttachedSurface) PURE;
1779*4882a593Smuzhiyun         STDMETHOD(GetBltStatus) (THIS_ DWORD dwFlags) PURE;
1780*4882a593Smuzhiyun         STDMETHOD(GetCaps) (THIS_ LPDDSCAPS lpDDSCaps) PURE;
1781*4882a593Smuzhiyun         STDMETHOD(GetClipper) (THIS_ LPDIRECTDRAWCLIPPER * lplpDDClipper) PURE;
1782*4882a593Smuzhiyun         STDMETHOD(GetColorKey) (THIS_ DWORD dwFlags,
1783*4882a593Smuzhiyun                                 LPDDCOLORKEY lpDDColorKey) PURE;
1784*4882a593Smuzhiyun         STDMETHOD(GetDC) (THIS_ HDC * lphDC) PURE;
1785*4882a593Smuzhiyun         STDMETHOD(GetFlipStatus) (THIS_ DWORD dwFlags) PURE;
1786*4882a593Smuzhiyun         STDMETHOD(GetOverlayPosition) (THIS_ LPLONG lplX, LPLONG lplY) PURE;
1787*4882a593Smuzhiyun         STDMETHOD(GetPalette) (THIS_ LPDIRECTDRAWPALETTE * lplpDDPalette) PURE;
1788*4882a593Smuzhiyun         STDMETHOD(GetPixelFormat) (THIS_ LPDDPIXELFORMAT lpDDPixelFormat) PURE;
1789*4882a593Smuzhiyun         STDMETHOD(GetSurfaceDesc) (THIS_ LPDDSURFACEDESC lpDDSurfaceDesc) PURE;
1790*4882a593Smuzhiyun         STDMETHOD(Initialize) (THIS_ LPDIRECTDRAW lpDD,
1791*4882a593Smuzhiyun                                LPDDSURFACEDESC lpDDSurfaceDesc) PURE;
1792*4882a593Smuzhiyun         STDMETHOD(IsLost) (THIS) PURE;
1793*4882a593Smuzhiyun         STDMETHOD(Lock) (THIS_ LPRECT lpDestRect,
1794*4882a593Smuzhiyun                          LPDDSURFACEDESC lpDDSurfaceDesc, DWORD dwFlags,
1795*4882a593Smuzhiyun                          HANDLE hEvent) PURE;
1796*4882a593Smuzhiyun         STDMETHOD(ReleaseDC) (THIS_ HDC hDC) PURE;
1797*4882a593Smuzhiyun         STDMETHOD(Restore) (THIS) PURE;
1798*4882a593Smuzhiyun         STDMETHOD(SetClipper) (THIS_ LPDIRECTDRAWCLIPPER lpDDClipper) PURE;
1799*4882a593Smuzhiyun         STDMETHOD(SetColorKey) (THIS_ DWORD dwFlags,
1800*4882a593Smuzhiyun                                 LPDDCOLORKEY lpDDColorKey) PURE;
1801*4882a593Smuzhiyun         STDMETHOD(SetOverlayPosition) (THIS_ LONG lX, LONG lY) PURE;
1802*4882a593Smuzhiyun         STDMETHOD(SetPalette) (THIS_ LPDIRECTDRAWPALETTE lpDDPalette) PURE;
1803*4882a593Smuzhiyun         STDMETHOD(Unlock) (THIS_ LPVOID lpSurfaceData) PURE;
1804*4882a593Smuzhiyun         STDMETHOD(UpdateOverlay) (THIS_ LPRECT lpSrcRect,
1805*4882a593Smuzhiyun                                   LPDIRECTDRAWSURFACE2 lpDDDestSurface,
1806*4882a593Smuzhiyun                                   LPRECT lpDestRect, DWORD dwFlags,
1807*4882a593Smuzhiyun                                   LPDDOVERLAYFX lpDDOverlayFx) PURE;
1808*4882a593Smuzhiyun         STDMETHOD(UpdateOverlayDisplay) (THIS_ DWORD dwFlags) PURE;
1809*4882a593Smuzhiyun         STDMETHOD(UpdateOverlayZOrder) (THIS_ DWORD dwFlags,
1810*4882a593Smuzhiyun                                         LPDIRECTDRAWSURFACE2 lpDDSReference)
1811*4882a593Smuzhiyun             PURE;
1812*4882a593Smuzhiyun         /* added in v2 */
1813*4882a593Smuzhiyun         STDMETHOD(GetDDInterface) (THIS_ LPVOID * lplpDD) PURE;
1814*4882a593Smuzhiyun         STDMETHOD(PageLock) (THIS_ DWORD dwFlags) PURE;
1815*4882a593Smuzhiyun         STDMETHOD(PageUnlock) (THIS_ DWORD dwFlags) PURE;
1816*4882a593Smuzhiyun     };
1817*4882a593Smuzhiyun 
1818*4882a593Smuzhiyun     /*** IUnknown methods ***/
1819*4882a593Smuzhiyun #define IDirectDrawSurface2_QueryInterface(p,a,b) ICOM_CALL_(QueryInterface,p,(p,a,b))
1820*4882a593Smuzhiyun #define IDirectDrawSurface2_AddRef(p)             ICOM_CALL_(AddRef,p,(p))
1821*4882a593Smuzhiyun #define IDirectDrawSurface2_Release(p)            ICOM_CALL_(Release,p,(p))
1822*4882a593Smuzhiyun /*** IDirectDrawSurface methods (almost) ***/
1823*4882a593Smuzhiyun #define IDirectDrawSurface2_AddAttachedSurface(p,a)      ICOM_CALL_(AddAttachedSurface,p,(p,a))
1824*4882a593Smuzhiyun #define IDirectDrawSurface2_AddOverlayDirtyRect(p,a)     ICOM_CALL_(AddOverlayDirtyRect,p,(p,a))
1825*4882a593Smuzhiyun #define IDirectDrawSurface2_Blt(p,a,b,c,d,e)             ICOM_CALL_(Blt,p,(p,a,b,c,d,e))
1826*4882a593Smuzhiyun #define IDirectDrawSurface2_BltBatch(p,a,b,c)            ICOM_CALL_(BltBatch,p,(p,a,b,c))
1827*4882a593Smuzhiyun #define IDirectDrawSurface2_BltFast(p,a,b,c,d,e)         ICOM_CALL_(BltFast,p,(p,a,b,c,d,e))
1828*4882a593Smuzhiyun #define IDirectDrawSurface2_DeleteAttachedSurface(p,a,b) ICOM_CALL_(DeleteAttachedSurface,p,(p,a,b))
1829*4882a593Smuzhiyun #define IDirectDrawSurface2_EnumAttachedSurfaces(p,a,b)  ICOM_CALL_(EnumAttachedSurfaces,p,(p,a,b))
1830*4882a593Smuzhiyun #define IDirectDrawSurface2_EnumOverlayZOrders(p,a,b,c)  ICOM_CALL_(EnumOverlayZOrders,p,(p,a,b,c))
1831*4882a593Smuzhiyun #define IDirectDrawSurface2_Flip(p,a,b)                  ICOM_CALL_(Flip,p,(p,a,b))
1832*4882a593Smuzhiyun #define IDirectDrawSurface2_GetAttachedSurface(p,a,b)    ICOM_CALL_(GetAttachedSurface,p,(p,a,b))
1833*4882a593Smuzhiyun #define IDirectDrawSurface2_GetBltStatus(p,a)            ICOM_CALL_(GetBltStatus,p,(p,a))
1834*4882a593Smuzhiyun #define IDirectDrawSurface2_GetCaps(p,a)                 ICOM_CALL_(GetCaps,p,(p,a))
1835*4882a593Smuzhiyun #define IDirectDrawSurface2_GetClipper(p,a)              ICOM_CALL_(GetClipper,p,(p,a))
1836*4882a593Smuzhiyun #define IDirectDrawSurface2_GetColorKey(p,a,b)           ICOM_CALL_(GetColorKey,p,(p,a,b))
1837*4882a593Smuzhiyun #define IDirectDrawSurface2_GetDC(p,a)                   ICOM_CALL_(GetDC,p,(p,a))
1838*4882a593Smuzhiyun #define IDirectDrawSurface2_GetFlipStatus(p,a)           ICOM_CALL_(GetFlipStatus,p,(p,a))
1839*4882a593Smuzhiyun #define IDirectDrawSurface2_GetOverlayPosition(p,a,b)    ICOM_CALL_(GetOverlayPosition,p,(p,a,b))
1840*4882a593Smuzhiyun #define IDirectDrawSurface2_GetPalette(p,a)              ICOM_CALL_(GetPalette,p,(p,a))
1841*4882a593Smuzhiyun #define IDirectDrawSurface2_GetPixelFormat(p,a)          ICOM_CALL_(GetPixelFormat,p,(p,a))
1842*4882a593Smuzhiyun #define IDirectDrawSurface2_GetSurfaceDesc(p,a)          ICOM_CALL_(GetSurfaceDesc,p,(p,a))
1843*4882a593Smuzhiyun #define IDirectDrawSurface2_Initialize(p,a,b)            ICOM_CALL_(Initialize,p,(p,a,b))
1844*4882a593Smuzhiyun #define IDirectDrawSurface2_IsLost(p)                    ICOM_CALL_(IsLost,p,(p))
1845*4882a593Smuzhiyun #define IDirectDrawSurface2_Lock(p,a,b,c,d)              ICOM_CALL_(Lock,p,(p,a,b,c,d))
1846*4882a593Smuzhiyun #define IDirectDrawSurface2_ReleaseDC(p,a)               ICOM_CALL_(ReleaseDC,p,(p,a))
1847*4882a593Smuzhiyun #define IDirectDrawSurface2_Restore(p)                   ICOM_CALL_(Restore,p,(p))
1848*4882a593Smuzhiyun #define IDirectDrawSurface2_SetClipper(p,a)              ICOM_CALL_(SetClipper,p,(p,a))
1849*4882a593Smuzhiyun #define IDirectDrawSurface2_SetColorKey(p,a,b)           ICOM_CALL_(SetColorKey,p,(p,a,b))
1850*4882a593Smuzhiyun #define IDirectDrawSurface2_SetOverlayPosition(p,a,b)    ICOM_CALL_(SetOverlayPosition,p,(p,a,b))
1851*4882a593Smuzhiyun #define IDirectDrawSurface2_SetPalette(p,a)              ICOM_CALL_(SetPalette,p,(p,a))
1852*4882a593Smuzhiyun #define IDirectDrawSurface2_Unlock(p,a)                  ICOM_CALL_(Unlock,p,(p,a))
1853*4882a593Smuzhiyun #define IDirectDrawSurface2_UpdateOverlay(p,a,b,c,d,e)   ICOM_CALL_(UpdateOverlay,p,(p,a,b,c,d,e))
1854*4882a593Smuzhiyun #define IDirectDrawSurface2_UpdateOverlayDisplay(p,a)    ICOM_CALL_(UpdateOverlayDisplay,p,(p,a))
1855*4882a593Smuzhiyun #define IDirectDrawSurface2_UpdateOverlayZOrder(p,a,b)   ICOM_CALL_(UpdateOverlayZOrder,p,(p,a,b))
1856*4882a593Smuzhiyun /*** IDirectDrawSurface2 methods ***/
1857*4882a593Smuzhiyun #define IDirectDrawSurface2_GetDDInterface(p,a) ICOM_CALL_(GetDDInterface,p,(p,a))
1858*4882a593Smuzhiyun #define IDirectDrawSurface2_PageLock(p,a)       ICOM_CALL_(PageLock,p,(p,a))
1859*4882a593Smuzhiyun #define IDirectDrawSurface2_PageUnlock(p,a)     ICOM_CALL_(PageUnlock,p,(p,a))
1860*4882a593Smuzhiyun 
1861*4882a593Smuzhiyun /*****************************************************************************
1862*4882a593Smuzhiyun  * IDirectDrawSurface3 interface
1863*4882a593Smuzhiyun  */
1864*4882a593Smuzhiyun /* Cannot inherit from IDirectDrawSurface2 because the LPDIRECTDRAWSURFACE2 parameters
1865*4882a593Smuzhiyun  * have been converted to LPDIRECTDRAWSURFACE3.
1866*4882a593Smuzhiyun  */
1867*4882a593Smuzhiyun #undef INTERFACE
1868*4882a593Smuzhiyun #define INTERFACE IDirectDrawSurface3
DECLARE_INTERFACE_(IDirectDrawSurface3,IUnknown)1869*4882a593Smuzhiyun     DECLARE_INTERFACE_(IDirectDrawSurface3, IUnknown) {
1870*4882a593Smuzhiyun         STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE;
1871*4882a593Smuzhiyun         STDMETHOD_(ULONG, AddRef) (THIS) PURE;
1872*4882a593Smuzhiyun         STDMETHOD_(ULONG, Release) (THIS) PURE;
1873*4882a593Smuzhiyun         STDMETHOD(AddAttachedSurface) (THIS_ LPDIRECTDRAWSURFACE3
1874*4882a593Smuzhiyun                                        lpDDSAttachedSurface) PURE;
1875*4882a593Smuzhiyun         STDMETHOD(AddOverlayDirtyRect) (THIS_ LPRECT lpRect) PURE;
1876*4882a593Smuzhiyun         STDMETHOD(Blt) (THIS_ LPRECT lpDestRect,
1877*4882a593Smuzhiyun                         LPDIRECTDRAWSURFACE3 lpDDSrcSurface, LPRECT lpSrcRect,
1878*4882a593Smuzhiyun                         DWORD dwFlags, LPDDBLTFX lpDDBltFx) PURE;
1879*4882a593Smuzhiyun         STDMETHOD(BltBatch) (THIS_ LPDDBLTBATCH lpDDBltBatch, DWORD dwCount,
1880*4882a593Smuzhiyun                              DWORD dwFlags) PURE;
1881*4882a593Smuzhiyun         STDMETHOD(BltFast) (THIS_ DWORD dwX, DWORD dwY,
1882*4882a593Smuzhiyun                             LPDIRECTDRAWSURFACE3 lpDDSrcSurface,
1883*4882a593Smuzhiyun                             LPRECT lpSrcRect, DWORD dwTrans) PURE;
1884*4882a593Smuzhiyun         STDMETHOD(DeleteAttachedSurface) (THIS_ DWORD dwFlags,
1885*4882a593Smuzhiyun                                           LPDIRECTDRAWSURFACE3
1886*4882a593Smuzhiyun                                           lpDDSAttachedSurface) PURE;
1887*4882a593Smuzhiyun         STDMETHOD(EnumAttachedSurfaces) (THIS_ LPVOID lpContext,
1888*4882a593Smuzhiyun                                          LPDDENUMSURFACESCALLBACK
1889*4882a593Smuzhiyun                                          lpEnumSurfacesCallback) PURE;
1890*4882a593Smuzhiyun         STDMETHOD(EnumOverlayZOrders) (THIS_ DWORD dwFlags, LPVOID lpContext,
1891*4882a593Smuzhiyun                                        LPDDENUMSURFACESCALLBACK lpfnCallback)
1892*4882a593Smuzhiyun             PURE;
1893*4882a593Smuzhiyun         STDMETHOD(Flip) (THIS_ LPDIRECTDRAWSURFACE3 lpDDSurfaceTargetOverride,
1894*4882a593Smuzhiyun                          DWORD dwFlags) PURE;
1895*4882a593Smuzhiyun         STDMETHOD(GetAttachedSurface) (THIS_ LPDDSCAPS lpDDSCaps,
1896*4882a593Smuzhiyun                                        LPDIRECTDRAWSURFACE3 *
1897*4882a593Smuzhiyun                                        lplpDDAttachedSurface) PURE;
1898*4882a593Smuzhiyun         STDMETHOD(GetBltStatus) (THIS_ DWORD dwFlags) PURE;
1899*4882a593Smuzhiyun         STDMETHOD(GetCaps) (THIS_ LPDDSCAPS lpDDSCaps) PURE;
1900*4882a593Smuzhiyun         STDMETHOD(GetClipper) (THIS_ LPDIRECTDRAWCLIPPER * lplpDDClipper) PURE;
1901*4882a593Smuzhiyun         STDMETHOD(GetColorKey) (THIS_ DWORD dwFlags,
1902*4882a593Smuzhiyun                                 LPDDCOLORKEY lpDDColorKey) PURE;
1903*4882a593Smuzhiyun         STDMETHOD(GetDC) (THIS_ HDC * lphDC) PURE;
1904*4882a593Smuzhiyun         STDMETHOD(GetFlipStatus) (THIS_ DWORD dwFlags) PURE;
1905*4882a593Smuzhiyun         STDMETHOD(GetOverlayPosition) (THIS_ LPLONG lplX, LPLONG lplY) PURE;
1906*4882a593Smuzhiyun         STDMETHOD(GetPalette) (THIS_ LPDIRECTDRAWPALETTE * lplpDDPalette) PURE;
1907*4882a593Smuzhiyun         STDMETHOD(GetPixelFormat) (THIS_ LPDDPIXELFORMAT lpDDPixelFormat) PURE;
1908*4882a593Smuzhiyun         STDMETHOD(GetSurfaceDesc) (THIS_ LPDDSURFACEDESC lpDDSurfaceDesc) PURE;
1909*4882a593Smuzhiyun         STDMETHOD(Initialize) (THIS_ LPDIRECTDRAW lpDD,
1910*4882a593Smuzhiyun                                LPDDSURFACEDESC lpDDSurfaceDesc) PURE;
1911*4882a593Smuzhiyun         STDMETHOD(IsLost) (THIS) PURE;
1912*4882a593Smuzhiyun         STDMETHOD(Lock) (THIS_ LPRECT lpDestRect,
1913*4882a593Smuzhiyun                          LPDDSURFACEDESC lpDDSurfaceDesc, DWORD dwFlags,
1914*4882a593Smuzhiyun                          HANDLE hEvent) PURE;
1915*4882a593Smuzhiyun         STDMETHOD(ReleaseDC) (THIS_ HDC hDC) PURE;
1916*4882a593Smuzhiyun         STDMETHOD(Restore) (THIS) PURE;
1917*4882a593Smuzhiyun         STDMETHOD(SetClipper) (THIS_ LPDIRECTDRAWCLIPPER lpDDClipper) PURE;
1918*4882a593Smuzhiyun         STDMETHOD(SetColorKey) (THIS_ DWORD dwFlags,
1919*4882a593Smuzhiyun                                 LPDDCOLORKEY lpDDColorKey) PURE;
1920*4882a593Smuzhiyun         STDMETHOD(SetOverlayPosition) (THIS_ LONG lX, LONG lY) PURE;
1921*4882a593Smuzhiyun         STDMETHOD(SetPalette) (THIS_ LPDIRECTDRAWPALETTE lpDDPalette) PURE;
1922*4882a593Smuzhiyun         STDMETHOD(Unlock) (THIS_ LPVOID lpSurfaceData) PURE;
1923*4882a593Smuzhiyun         STDMETHOD(UpdateOverlay) (THIS_ LPRECT lpSrcRect,
1924*4882a593Smuzhiyun                                   LPDIRECTDRAWSURFACE3 lpDDDestSurface,
1925*4882a593Smuzhiyun                                   LPRECT lpDestRect, DWORD dwFlags,
1926*4882a593Smuzhiyun                                   LPDDOVERLAYFX lpDDOverlayFx) PURE;
1927*4882a593Smuzhiyun         STDMETHOD(UpdateOverlayDisplay) (THIS_ DWORD dwFlags) PURE;
1928*4882a593Smuzhiyun         STDMETHOD(UpdateOverlayZOrder) (THIS_ DWORD dwFlags,
1929*4882a593Smuzhiyun                                         LPDIRECTDRAWSURFACE3 lpDDSReference)
1930*4882a593Smuzhiyun             PURE;
1931*4882a593Smuzhiyun         /* added in v2 */
1932*4882a593Smuzhiyun         STDMETHOD(GetDDInterface) (THIS_ LPVOID * lplpDD) PURE;
1933*4882a593Smuzhiyun         STDMETHOD(PageLock) (THIS_ DWORD dwFlags) PURE;
1934*4882a593Smuzhiyun         STDMETHOD(PageUnlock) (THIS_ DWORD dwFlags) PURE;
1935*4882a593Smuzhiyun         /* added in v3 */
1936*4882a593Smuzhiyun         STDMETHOD(SetSurfaceDesc) (THIS_ LPDDSURFACEDESC lpDDSD,
1937*4882a593Smuzhiyun                                    DWORD dwFlags) PURE;
1938*4882a593Smuzhiyun     };
1939*4882a593Smuzhiyun 
1940*4882a593Smuzhiyun     /*** IUnknown methods ***/
1941*4882a593Smuzhiyun #define IDirectDrawSurface3_QueryInterface(p,a,b) ICOM_CALL_(QueryInterface,p,(p,a,b))
1942*4882a593Smuzhiyun #define IDirectDrawSurface3_AddRef(p)             ICOM_CALL_(AddRef,p,(p))
1943*4882a593Smuzhiyun #define IDirectDrawSurface3_Release(p)            ICOM_CALL_(Release,p,(p))
1944*4882a593Smuzhiyun /*** IDirectDrawSurface methods (almost) ***/
1945*4882a593Smuzhiyun #define IDirectDrawSurface3_AddAttachedSurface(p,a)      ICOM_CALL_(AddAttachedSurface,p,(p,a))
1946*4882a593Smuzhiyun #define IDirectDrawSurface3_AddOverlayDirtyRect(p,a)     ICOM_CALL_(AddOverlayDirtyRect,p,(p,a))
1947*4882a593Smuzhiyun #define IDirectDrawSurface3_Blt(p,a,b,c,d,e)             ICOM_CALL_(Blt,p,(p,a,b,c,d,e))
1948*4882a593Smuzhiyun #define IDirectDrawSurface3_BltBatch(p,a,b,c)            ICOM_CALL_(BltBatch,p,(p,a,b,c))
1949*4882a593Smuzhiyun #define IDirectDrawSurface3_BltFast(p,a,b,c,d,e)         ICOM_CALL_(BltFast,p,(p,a,b,c,d,e))
1950*4882a593Smuzhiyun #define IDirectDrawSurface3_DeleteAttachedSurface(p,a,b) ICOM_CALL_(DeleteAttachedSurface,p,(p,a,b))
1951*4882a593Smuzhiyun #define IDirectDrawSurface3_EnumAttachedSurfaces(p,a,b)  ICOM_CALL_(EnumAttachedSurfaces,p,(p,a,b))
1952*4882a593Smuzhiyun #define IDirectDrawSurface3_EnumOverlayZOrders(p,a,b,c)  ICOM_CALL_(EnumOverlayZOrders,p,(p,a,b,c))
1953*4882a593Smuzhiyun #define IDirectDrawSurface3_Flip(p,a,b)                  ICOM_CALL_(Flip,p,(p,a,b))
1954*4882a593Smuzhiyun #define IDirectDrawSurface3_GetAttachedSurface(p,a,b)    ICOM_CALL_(GetAttachedSurface,p,(p,a,b))
1955*4882a593Smuzhiyun #define IDirectDrawSurface3_GetBltStatus(p,a)            ICOM_CALL_(GetBltStatus,p,(p,a))
1956*4882a593Smuzhiyun #define IDirectDrawSurface3_GetCaps(p,a)                 ICOM_CALL_(GetCaps,p,(p,a))
1957*4882a593Smuzhiyun #define IDirectDrawSurface3_GetClipper(p,a)              ICOM_CALL_(GetClipper,p,(p,a))
1958*4882a593Smuzhiyun #define IDirectDrawSurface3_GetColorKey(p,a,b)           ICOM_CALL_(GetColorKey,p,(p,a,b))
1959*4882a593Smuzhiyun #define IDirectDrawSurface3_GetDC(p,a)                   ICOM_CALL_(GetDC,p,(p,a))
1960*4882a593Smuzhiyun #define IDirectDrawSurface3_GetFlipStatus(p,a)           ICOM_CALL_(GetFlipStatus,p,(p,a))
1961*4882a593Smuzhiyun #define IDirectDrawSurface3_GetOverlayPosition(p,a,b)    ICOM_CALL_(GetOverlayPosition,p,(p,a,b))
1962*4882a593Smuzhiyun #define IDirectDrawSurface3_GetPalette(p,a)              ICOM_CALL_(GetPalette,p,(p,a))
1963*4882a593Smuzhiyun #define IDirectDrawSurface3_GetPixelFormat(p,a)          ICOM_CALL_(GetPixelFormat,p,(p,a))
1964*4882a593Smuzhiyun #define IDirectDrawSurface3_GetSurfaceDesc(p,a)          ICOM_CALL_(GetSurfaceDesc,p,(p,a))
1965*4882a593Smuzhiyun #define IDirectDrawSurface3_Initialize(p,a,b)            ICOM_CALL_(Initialize,p,(p,a,b))
1966*4882a593Smuzhiyun #define IDirectDrawSurface3_IsLost(p)                    ICOM_CALL_(IsLost,p,(p))
1967*4882a593Smuzhiyun #define IDirectDrawSurface3_Lock(p,a,b,c,d)              ICOM_CALL_(Lock,p,(p,a,b,c,d))
1968*4882a593Smuzhiyun #define IDirectDrawSurface3_ReleaseDC(p,a)               ICOM_CALL_(ReleaseDC,p,(p,a))
1969*4882a593Smuzhiyun #define IDirectDrawSurface3_Restore(p)                   ICOM_CALL_(Restore,p,(p))
1970*4882a593Smuzhiyun #define IDirectDrawSurface3_SetClipper(p,a)              ICOM_CALL_(SetClipper,p,(p,a))
1971*4882a593Smuzhiyun #define IDirectDrawSurface3_SetColorKey(p,a,b)           ICOM_CALL_(SetColorKey,p,(p,a,b))
1972*4882a593Smuzhiyun #define IDirectDrawSurface3_SetOverlayPosition(p,a,b)    ICOM_CALL_(SetOverlayPosition,p,(p,a,b))
1973*4882a593Smuzhiyun #define IDirectDrawSurface3_SetPalette(p,a)              ICOM_CALL_(SetPalette,p,(p,a))
1974*4882a593Smuzhiyun #define IDirectDrawSurface3_Unlock(p,a)                  ICOM_CALL_(Unlock,p,(p,a))
1975*4882a593Smuzhiyun #define IDirectDrawSurface3_UpdateOverlay(p,a,b,c,d,e)   ICOM_CALL_(UpdateOverlay,p,(p,a,b,c,d,e))
1976*4882a593Smuzhiyun #define IDirectDrawSurface3_UpdateOverlayDisplay(p,a)    ICOM_CALL_(UpdateOverlayDisplay,p,(p,a))
1977*4882a593Smuzhiyun #define IDirectDrawSurface3_UpdateOverlayZOrder(p,a,b)   ICOM_CALL_(UpdateOverlayZOrder,p,(p,a,b))
1978*4882a593Smuzhiyun /*** IDirectDrawSurface2 methods ***/
1979*4882a593Smuzhiyun #define IDirectDrawSurface3_GetDDInterface(p,a) ICOM_CALL_(GetDDInterface,p,(p,a))
1980*4882a593Smuzhiyun #define IDirectDrawSurface3_PageLock(p,a)       ICOM_CALL_(PageLock,p,(p,a))
1981*4882a593Smuzhiyun #define IDirectDrawSurface3_PageUnlock(p,a)     ICOM_CALL_(PageUnlock,p,(p,a))
1982*4882a593Smuzhiyun /*** IDirectDrawSurface3 methods ***/
1983*4882a593Smuzhiyun #define IDirectDrawSurface3_SetSurfaceDesc(p,a,b) ICOM_CALL_(SetSurfaceDesc,p,(p,a,b))
1984*4882a593Smuzhiyun 
1985*4882a593Smuzhiyun /*****************************************************************************
1986*4882a593Smuzhiyun  * IDirectDrawSurface4 interface
1987*4882a593Smuzhiyun  */
1988*4882a593Smuzhiyun /* Cannot inherit from IDirectDrawSurface2 because DDSCAPS changed to DDSCAPS2.
1989*4882a593Smuzhiyun  */
1990*4882a593Smuzhiyun #undef INTERFACE
1991*4882a593Smuzhiyun #define INTERFACE IDirectDrawSurface4
DECLARE_INTERFACE_(IDirectDrawSurface4,IUnknown)1992*4882a593Smuzhiyun     DECLARE_INTERFACE_(IDirectDrawSurface4, IUnknown) {
1993*4882a593Smuzhiyun         STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE;
1994*4882a593Smuzhiyun         STDMETHOD_(ULONG, AddRef) (THIS) PURE;
1995*4882a593Smuzhiyun         STDMETHOD_(ULONG, Release) (THIS) PURE;
1996*4882a593Smuzhiyun         STDMETHOD(AddAttachedSurface) (THIS_ LPDIRECTDRAWSURFACE4
1997*4882a593Smuzhiyun                                        lpDDSAttachedSurface) PURE;
1998*4882a593Smuzhiyun         STDMETHOD(AddOverlayDirtyRect) (THIS_ LPRECT lpRect) PURE;
1999*4882a593Smuzhiyun         STDMETHOD(Blt) (THIS_ LPRECT lpDestRect,
2000*4882a593Smuzhiyun                         LPDIRECTDRAWSURFACE4 lpDDSrcSurface, LPRECT lpSrcRect,
2001*4882a593Smuzhiyun                         DWORD dwFlags, LPDDBLTFX lpDDBltFx) PURE;
2002*4882a593Smuzhiyun         STDMETHOD(BltBatch) (THIS_ LPDDBLTBATCH lpDDBltBatch, DWORD dwCount,
2003*4882a593Smuzhiyun                              DWORD dwFlags) PURE;
2004*4882a593Smuzhiyun         STDMETHOD(BltFast) (THIS_ DWORD dwX, DWORD dwY,
2005*4882a593Smuzhiyun                             LPDIRECTDRAWSURFACE4 lpDDSrcSurface,
2006*4882a593Smuzhiyun                             LPRECT lpSrcRect, DWORD dwTrans) PURE;
2007*4882a593Smuzhiyun         STDMETHOD(DeleteAttachedSurface) (THIS_ DWORD dwFlags,
2008*4882a593Smuzhiyun                                           LPDIRECTDRAWSURFACE4
2009*4882a593Smuzhiyun                                           lpDDSAttachedSurface) PURE;
2010*4882a593Smuzhiyun         STDMETHOD(EnumAttachedSurfaces) (THIS_ LPVOID lpContext,
2011*4882a593Smuzhiyun                                          LPDDENUMSURFACESCALLBACK
2012*4882a593Smuzhiyun                                          lpEnumSurfacesCallback) PURE;
2013*4882a593Smuzhiyun         STDMETHOD(EnumOverlayZOrders) (THIS_ DWORD dwFlags, LPVOID lpContext,
2014*4882a593Smuzhiyun                                        LPDDENUMSURFACESCALLBACK lpfnCallback)
2015*4882a593Smuzhiyun             PURE;
2016*4882a593Smuzhiyun         STDMETHOD(Flip) (THIS_ LPDIRECTDRAWSURFACE4 lpDDSurfaceTargetOverride,
2017*4882a593Smuzhiyun                          DWORD dwFlags) PURE;
2018*4882a593Smuzhiyun         STDMETHOD(GetAttachedSurface) (THIS_ LPDDSCAPS2 lpDDSCaps,
2019*4882a593Smuzhiyun                                        LPDIRECTDRAWSURFACE4 *
2020*4882a593Smuzhiyun                                        lplpDDAttachedSurface) PURE;
2021*4882a593Smuzhiyun         STDMETHOD(GetBltStatus) (THIS_ DWORD dwFlags) PURE;
2022*4882a593Smuzhiyun         STDMETHOD(GetCaps) (THIS_ LPDDSCAPS2 lpDDSCaps) PURE;
2023*4882a593Smuzhiyun         STDMETHOD(GetClipper) (THIS_ LPDIRECTDRAWCLIPPER * lplpDDClipper) PURE;
2024*4882a593Smuzhiyun         STDMETHOD(GetColorKey) (THIS_ DWORD dwFlags,
2025*4882a593Smuzhiyun                                 LPDDCOLORKEY lpDDColorKey) PURE;
2026*4882a593Smuzhiyun         STDMETHOD(GetDC) (THIS_ HDC * lphDC) PURE;
2027*4882a593Smuzhiyun         STDMETHOD(GetFlipStatus) (THIS_ DWORD dwFlags) PURE;
2028*4882a593Smuzhiyun         STDMETHOD(GetOverlayPosition) (THIS_ LPLONG lplX, LPLONG lplY) PURE;
2029*4882a593Smuzhiyun         STDMETHOD(GetPalette) (THIS_ LPDIRECTDRAWPALETTE * lplpDDPalette) PURE;
2030*4882a593Smuzhiyun         STDMETHOD(GetPixelFormat) (THIS_ LPDDPIXELFORMAT lpDDPixelFormat) PURE;
2031*4882a593Smuzhiyun         STDMETHOD(GetSurfaceDesc) (THIS_ LPDDSURFACEDESC lpDDSurfaceDesc) PURE;
2032*4882a593Smuzhiyun         STDMETHOD(Initialize) (THIS_ LPDIRECTDRAW lpDD,
2033*4882a593Smuzhiyun                                LPDDSURFACEDESC lpDDSurfaceDesc) PURE;
2034*4882a593Smuzhiyun         STDMETHOD(IsLost) (THIS) PURE;
2035*4882a593Smuzhiyun         STDMETHOD(Lock) (THIS_ LPRECT lpDestRect,
2036*4882a593Smuzhiyun                          LPDDSURFACEDESC lpDDSurfaceDesc, DWORD dwFlags,
2037*4882a593Smuzhiyun                          HANDLE hEvent) PURE;
2038*4882a593Smuzhiyun         STDMETHOD(ReleaseDC) (THIS_ HDC hDC) PURE;
2039*4882a593Smuzhiyun         STDMETHOD(Restore) (THIS) PURE;
2040*4882a593Smuzhiyun         STDMETHOD(SetClipper) (THIS_ LPDIRECTDRAWCLIPPER lpDDClipper) PURE;
2041*4882a593Smuzhiyun         STDMETHOD(SetColorKey) (THIS_ DWORD dwFlags,
2042*4882a593Smuzhiyun                                 LPDDCOLORKEY lpDDColorKey) PURE;
2043*4882a593Smuzhiyun         STDMETHOD(SetOverlayPosition) (THIS_ LONG lX, LONG lY) PURE;
2044*4882a593Smuzhiyun         STDMETHOD(SetPalette) (THIS_ LPDIRECTDRAWPALETTE lpDDPalette) PURE;
2045*4882a593Smuzhiyun         STDMETHOD(Unlock) (THIS_ LPRECT lpSurfaceData) PURE;
2046*4882a593Smuzhiyun         STDMETHOD(UpdateOverlay) (THIS_ LPRECT lpSrcRect,
2047*4882a593Smuzhiyun                                   LPDIRECTDRAWSURFACE4 lpDDDestSurface,
2048*4882a593Smuzhiyun                                   LPRECT lpDestRect, DWORD dwFlags,
2049*4882a593Smuzhiyun                                   LPDDOVERLAYFX lpDDOverlayFx) PURE;
2050*4882a593Smuzhiyun         STDMETHOD(UpdateOverlayDisplay) (THIS_ DWORD dwFlags) PURE;
2051*4882a593Smuzhiyun         STDMETHOD(UpdateOverlayZOrder) (THIS_ DWORD dwFlags,
2052*4882a593Smuzhiyun                                         LPDIRECTDRAWSURFACE4 lpDDSReference)
2053*4882a593Smuzhiyun             PURE;
2054*4882a593Smuzhiyun         /* added in v2 */
2055*4882a593Smuzhiyun         STDMETHOD(GetDDInterface) (THIS_ LPVOID * lplpDD) PURE;
2056*4882a593Smuzhiyun         STDMETHOD(PageLock) (THIS_ DWORD dwFlags) PURE;
2057*4882a593Smuzhiyun         STDMETHOD(PageUnlock) (THIS_ DWORD dwFlags) PURE;
2058*4882a593Smuzhiyun         /* added in v3 */
2059*4882a593Smuzhiyun         STDMETHOD(SetSurfaceDesc) (THIS_ LPDDSURFACEDESC lpDDSD,
2060*4882a593Smuzhiyun                                    DWORD dwFlags) PURE;
2061*4882a593Smuzhiyun         /* added in v4 */
2062*4882a593Smuzhiyun         STDMETHOD(SetPrivateData) (THIS_ REFGUID, LPVOID, DWORD, DWORD) PURE;
2063*4882a593Smuzhiyun         STDMETHOD(GetPrivateData) (THIS_ REFGUID, LPVOID, LPDWORD) PURE;
2064*4882a593Smuzhiyun         STDMETHOD(FreePrivateData) (THIS_ REFGUID) PURE;
2065*4882a593Smuzhiyun         STDMETHOD(GetUniquenessValue) (THIS_ LPDWORD) PURE;
2066*4882a593Smuzhiyun         STDMETHOD(ChangeUniquenessValue) (THIS) PURE;
2067*4882a593Smuzhiyun     };
2068*4882a593Smuzhiyun 
2069*4882a593Smuzhiyun     /*** IUnknown methods ***/
2070*4882a593Smuzhiyun #define IDirectDrawSurface4_QueryInterface(p,a,b) ICOM_CALL_(QueryInterface,p,(p,a,b))
2071*4882a593Smuzhiyun #define IDirectDrawSurface4_AddRef(p)             ICOM_CALL_(AddRef,p,(p))
2072*4882a593Smuzhiyun #define IDirectDrawSurface4_Release(p)            ICOM_CALL_(Release,p,(p))
2073*4882a593Smuzhiyun /*** IDirectDrawSurface (almost) methods ***/
2074*4882a593Smuzhiyun #define IDirectDrawSurface4_AddAttachedSurface(p,a)      ICOM_CALL_(AddAttachedSurface,p,(p,a))
2075*4882a593Smuzhiyun #define IDirectDrawSurface4_AddOverlayDirtyRect(p,a)     ICOM_CALL_(AddOverlayDirtyRect,p,(p,a))
2076*4882a593Smuzhiyun #define IDirectDrawSurface4_Blt(p,a,b,c,d,e)             ICOM_CALL_(Blt,p,(p,a,b,c,d,e))
2077*4882a593Smuzhiyun #define IDirectDrawSurface4_BltBatch(p,a,b,c)            ICOM_CALL_(BltBatch,p,(p,a,b,c))
2078*4882a593Smuzhiyun #define IDirectDrawSurface4_BltFast(p,a,b,c,d,e)         ICOM_CALL_(BltFast,p,(p,a,b,c,d,e))
2079*4882a593Smuzhiyun #define IDirectDrawSurface4_DeleteAttachedSurface(p,a,b) ICOM_CALL_(DeleteAttachedSurface,p,(p,a,b))
2080*4882a593Smuzhiyun #define IDirectDrawSurface4_EnumAttachedSurfaces(p,a,b)  ICOM_CALL_(EnumAttachedSurfaces,p,(p,a,b))
2081*4882a593Smuzhiyun #define IDirectDrawSurface4_EnumOverlayZOrders(p,a,b,c)  ICOM_CALL_(EnumOverlayZOrders,p,(p,a,b,c))
2082*4882a593Smuzhiyun #define IDirectDrawSurface4_Flip(p,a,b)                  ICOM_CALL_(Flip,p,(p,a,b))
2083*4882a593Smuzhiyun #define IDirectDrawSurface4_GetAttachedSurface(p,a,b)    ICOM_CALL_(GetAttachedSurface,p,(p,a,b))
2084*4882a593Smuzhiyun #define IDirectDrawSurface4_GetBltStatus(p,a)            ICOM_CALL_(GetBltStatus,p,(p,a))
2085*4882a593Smuzhiyun #define IDirectDrawSurface4_GetCaps(p,a)                 ICOM_CALL_(GetCaps,p,(p,a))
2086*4882a593Smuzhiyun #define IDirectDrawSurface4_GetClipper(p,a)              ICOM_CALL_(GetClipper,p,(p,a))
2087*4882a593Smuzhiyun #define IDirectDrawSurface4_GetColorKey(p,a,b)           ICOM_CALL_(GetColorKey,p,(p,a,b))
2088*4882a593Smuzhiyun #define IDirectDrawSurface4_GetDC(p,a)                   ICOM_CALL_(GetDC,p,(p,a))
2089*4882a593Smuzhiyun #define IDirectDrawSurface4_GetFlipStatus(p,a)           ICOM_CALL_(GetFlipStatus,p,(p,a))
2090*4882a593Smuzhiyun #define IDirectDrawSurface4_GetOverlayPosition(p,a,b)    ICOM_CALL_(GetOverlayPosition,p,(p,a,b))
2091*4882a593Smuzhiyun #define IDirectDrawSurface4_GetPalette(p,a)              ICOM_CALL_(GetPalette,p,(p,a))
2092*4882a593Smuzhiyun #define IDirectDrawSurface4_GetPixelFormat(p,a)          ICOM_CALL_(GetPixelFormat,p,(p,a))
2093*4882a593Smuzhiyun #define IDirectDrawSurface4_GetSurfaceDesc(p,a)          ICOM_CALL_(GetSurfaceDesc,p,(p,a))
2094*4882a593Smuzhiyun #define IDirectDrawSurface4_Initialize(p,a,b)            ICOM_CALL_(Initialize,p,(p,a,b))
2095*4882a593Smuzhiyun #define IDirectDrawSurface4_IsLost(p)                    ICOM_CALL_(IsLost,p,(p))
2096*4882a593Smuzhiyun #define IDirectDrawSurface4_Lock(p,a,b,c,d)              ICOM_CALL_(Lock,p,(p,a,b,c,d))
2097*4882a593Smuzhiyun #define IDirectDrawSurface4_ReleaseDC(p,a)               ICOM_CALL_(ReleaseDC,p,(p,a))
2098*4882a593Smuzhiyun #define IDirectDrawSurface4_Restore(p)                   ICOM_CALL_(Restore,p,(p))
2099*4882a593Smuzhiyun #define IDirectDrawSurface4_SetClipper(p,a)              ICOM_CALL_(SetClipper,p,(p,a))
2100*4882a593Smuzhiyun #define IDirectDrawSurface4_SetColorKey(p,a,b)           ICOM_CALL_(SetColorKey,p,(p,a,b))
2101*4882a593Smuzhiyun #define IDirectDrawSurface4_SetOverlayPosition(p,a,b)    ICOM_CALL_(SetOverlayPosition,p,(p,a,b))
2102*4882a593Smuzhiyun #define IDirectDrawSurface4_SetPalette(p,a)              ICOM_CALL_(SetPalette,p,(p,a))
2103*4882a593Smuzhiyun #define IDirectDrawSurface4_Unlock(p,a)                  ICOM_CALL_(Unlock,p,(p,a))
2104*4882a593Smuzhiyun #define IDirectDrawSurface4_UpdateOverlay(p,a,b,c,d,e)   ICOM_CALL_(UpdateOverlay,p,(p,a,b,c,d,e))
2105*4882a593Smuzhiyun #define IDirectDrawSurface4_UpdateOverlayDisplay(p,a)    ICOM_CALL_(UpdateOverlayDisplay,p,(p,a))
2106*4882a593Smuzhiyun #define IDirectDrawSurface4_UpdateOverlayZOrder(p,a,b)   ICOM_CALL_(UpdateOverlayZOrder,p,(p,a,b))
2107*4882a593Smuzhiyun /*** IDirectDrawSurface2 methods ***/
2108*4882a593Smuzhiyun #define IDirectDrawSurface4_GetDDInterface(p,a) ICOM_CALL_(GetDDInterface,p,(p,a))
2109*4882a593Smuzhiyun #define IDirectDrawSurface4_PageLock(p,a)       ICOM_CALL_(PageLock,p,(p,a))
2110*4882a593Smuzhiyun #define IDirectDrawSurface4_PageUnlock(p,a)     ICOM_CALL_(PageUnlock,p,(p,a))
2111*4882a593Smuzhiyun /*** IDirectDrawSurface3 methods ***/
2112*4882a593Smuzhiyun #define IDirectDrawSurface4_SetSurfaceDesc(p,a,b) ICOM_CALL_(SetSurfaceDesc,p,(p,a,b))
2113*4882a593Smuzhiyun /*** IDirectDrawSurface4 methods ***/
2114*4882a593Smuzhiyun #define IDirectDrawSurface4_SetPrivateData(p,a,b,c,d) ICOM_CALL_(SetPrivateData,p,(p,a,b,c,d))
2115*4882a593Smuzhiyun #define IDirectDrawSurface4_GetPrivateData(p,a,b,c)   ICOM_CALL_(GetPrivateData,p,(p,a,b,c))
2116*4882a593Smuzhiyun #define IDirectDrawSurface4_FreePrivateData(p,a)      ICOM_CALL_(FreePrivateData,p,(p,a))
2117*4882a593Smuzhiyun #define IDirectDrawSurface4_GetUniquenessValue(p,a)   ICOM_CALL_(GetUniquenessValue,p,(p,a))
2118*4882a593Smuzhiyun #define IDirectDrawSurface4_ChangeUniquenessValue(p)  ICOM_CALL_(ChangeUniquenessValue,p,(p))
2119*4882a593Smuzhiyun 
2120*4882a593Smuzhiyun /*****************************************************************************
2121*4882a593Smuzhiyun  * IDirectDrawSurface7 interface
2122*4882a593Smuzhiyun  */
2123*4882a593Smuzhiyun #undef INTERFACE
2124*4882a593Smuzhiyun #define INTERFACE IDirectDrawSurface7
DECLARE_INTERFACE_(IDirectDrawSurface7,IUnknown)2125*4882a593Smuzhiyun     DECLARE_INTERFACE_(IDirectDrawSurface7, IUnknown) {
2126*4882a593Smuzhiyun         STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE;
2127*4882a593Smuzhiyun         STDMETHOD_(ULONG, AddRef) (THIS) PURE;
2128*4882a593Smuzhiyun         STDMETHOD_(ULONG, Release) (THIS) PURE;
2129*4882a593Smuzhiyun         STDMETHOD(AddAttachedSurface) (THIS_ LPDIRECTDRAWSURFACE7
2130*4882a593Smuzhiyun                                        lpDDSAttachedSurface) PURE;
2131*4882a593Smuzhiyun         STDMETHOD(AddOverlayDirtyRect) (THIS_ LPRECT lpRect) PURE;
2132*4882a593Smuzhiyun         STDMETHOD(Blt) (THIS_ LPRECT lpDestRect,
2133*4882a593Smuzhiyun                         LPDIRECTDRAWSURFACE7 lpDDSrcSurface, LPRECT lpSrcRect,
2134*4882a593Smuzhiyun                         DWORD dwFlags, LPDDBLTFX lpDDBltFx) PURE;
2135*4882a593Smuzhiyun         STDMETHOD(BltBatch) (THIS_ LPDDBLTBATCH lpDDBltBatch, DWORD dwCount,
2136*4882a593Smuzhiyun                              DWORD dwFlags) PURE;
2137*4882a593Smuzhiyun         STDMETHOD(BltFast) (THIS_ DWORD dwX, DWORD dwY,
2138*4882a593Smuzhiyun                             LPDIRECTDRAWSURFACE7 lpDDSrcSurface,
2139*4882a593Smuzhiyun                             LPRECT lpSrcRect, DWORD dwTrans) PURE;
2140*4882a593Smuzhiyun         STDMETHOD(DeleteAttachedSurface) (THIS_ DWORD dwFlags,
2141*4882a593Smuzhiyun                                           LPDIRECTDRAWSURFACE7
2142*4882a593Smuzhiyun                                           lpDDSAttachedSurface) PURE;
2143*4882a593Smuzhiyun         STDMETHOD(EnumAttachedSurfaces) (THIS_ LPVOID lpContext,
2144*4882a593Smuzhiyun                                          LPDDENUMSURFACESCALLBACK7
2145*4882a593Smuzhiyun                                          lpEnumSurfacesCallback) PURE;
2146*4882a593Smuzhiyun         STDMETHOD(EnumOverlayZOrders) (THIS_ DWORD dwFlags, LPVOID lpContext,
2147*4882a593Smuzhiyun                                        LPDDENUMSURFACESCALLBACK7 lpfnCallback)
2148*4882a593Smuzhiyun             PURE;
2149*4882a593Smuzhiyun         STDMETHOD(Flip) (THIS_ LPDIRECTDRAWSURFACE7 lpDDSurfaceTargetOverride,
2150*4882a593Smuzhiyun                          DWORD dwFlags) PURE;
2151*4882a593Smuzhiyun         STDMETHOD(GetAttachedSurface) (THIS_ LPDDSCAPS2 lpDDSCaps,
2152*4882a593Smuzhiyun                                        LPDIRECTDRAWSURFACE7 *
2153*4882a593Smuzhiyun                                        lplpDDAttachedSurface) PURE;
2154*4882a593Smuzhiyun         STDMETHOD(GetBltStatus) (THIS_ DWORD dwFlags) PURE;
2155*4882a593Smuzhiyun         STDMETHOD(GetCaps) (THIS_ LPDDSCAPS2 lpDDSCaps) PURE;
2156*4882a593Smuzhiyun         STDMETHOD(GetClipper) (THIS_ LPDIRECTDRAWCLIPPER * lplpDDClipper) PURE;
2157*4882a593Smuzhiyun         STDMETHOD(GetColorKey) (THIS_ DWORD dwFlags,
2158*4882a593Smuzhiyun                                 LPDDCOLORKEY lpDDColorKey) PURE;
2159*4882a593Smuzhiyun         STDMETHOD(GetDC) (THIS_ HDC * lphDC) PURE;
2160*4882a593Smuzhiyun         STDMETHOD(GetFlipStatus) (THIS_ DWORD dwFlags) PURE;
2161*4882a593Smuzhiyun         STDMETHOD(GetOverlayPosition) (THIS_ LPLONG lplX, LPLONG lplY) PURE;
2162*4882a593Smuzhiyun         STDMETHOD(GetPalette) (THIS_ LPDIRECTDRAWPALETTE * lplpDDPalette) PURE;
2163*4882a593Smuzhiyun         STDMETHOD(GetPixelFormat) (THIS_ LPDDPIXELFORMAT lpDDPixelFormat) PURE;
2164*4882a593Smuzhiyun         STDMETHOD(GetSurfaceDesc) (THIS_ LPDDSURFACEDESC2 lpDDSurfaceDesc) PURE;
2165*4882a593Smuzhiyun         STDMETHOD(Initialize) (THIS_ LPDIRECTDRAW lpDD,
2166*4882a593Smuzhiyun                                LPDDSURFACEDESC2 lpDDSurfaceDesc) PURE;
2167*4882a593Smuzhiyun         STDMETHOD(IsLost) (THIS) PURE;
2168*4882a593Smuzhiyun         STDMETHOD(Lock) (THIS_ LPRECT lpDestRect,
2169*4882a593Smuzhiyun                          LPDDSURFACEDESC2 lpDDSurfaceDesc, DWORD dwFlags,
2170*4882a593Smuzhiyun                          HANDLE hEvent) PURE;
2171*4882a593Smuzhiyun         STDMETHOD(ReleaseDC) (THIS_ HDC hDC) PURE;
2172*4882a593Smuzhiyun         STDMETHOD(Restore) (THIS) PURE;
2173*4882a593Smuzhiyun         STDMETHOD(SetClipper) (THIS_ LPDIRECTDRAWCLIPPER lpDDClipper) PURE;
2174*4882a593Smuzhiyun         STDMETHOD(SetColorKey) (THIS_ DWORD dwFlags,
2175*4882a593Smuzhiyun                                 LPDDCOLORKEY lpDDColorKey) PURE;
2176*4882a593Smuzhiyun         STDMETHOD(SetOverlayPosition) (THIS_ LONG lX, LONG lY) PURE;
2177*4882a593Smuzhiyun         STDMETHOD(SetPalette) (THIS_ LPDIRECTDRAWPALETTE lpDDPalette) PURE;
2178*4882a593Smuzhiyun         STDMETHOD(Unlock) (THIS_ LPRECT lpSurfaceData) PURE;
2179*4882a593Smuzhiyun         STDMETHOD(UpdateOverlay) (THIS_ LPRECT lpSrcRect,
2180*4882a593Smuzhiyun                                   LPDIRECTDRAWSURFACE7 lpDDDestSurface,
2181*4882a593Smuzhiyun                                   LPRECT lpDestRect, DWORD dwFlags,
2182*4882a593Smuzhiyun                                   LPDDOVERLAYFX lpDDOverlayFx) PURE;
2183*4882a593Smuzhiyun         STDMETHOD(UpdateOverlayDisplay) (THIS_ DWORD dwFlags) PURE;
2184*4882a593Smuzhiyun         STDMETHOD(UpdateOverlayZOrder) (THIS_ DWORD dwFlags,
2185*4882a593Smuzhiyun                                         LPDIRECTDRAWSURFACE7 lpDDSReference)
2186*4882a593Smuzhiyun             PURE;
2187*4882a593Smuzhiyun         /* added in v2 */
2188*4882a593Smuzhiyun         STDMETHOD(GetDDInterface) (THIS_ LPVOID * lplpDD) PURE;
2189*4882a593Smuzhiyun         STDMETHOD(PageLock) (THIS_ DWORD dwFlags) PURE;
2190*4882a593Smuzhiyun         STDMETHOD(PageUnlock) (THIS_ DWORD dwFlags) PURE;
2191*4882a593Smuzhiyun         /* added in v3 */
2192*4882a593Smuzhiyun         STDMETHOD(SetSurfaceDesc) (THIS_ LPDDSURFACEDESC2 lpDDSD,
2193*4882a593Smuzhiyun                                    DWORD dwFlags) PURE;
2194*4882a593Smuzhiyun         /* added in v4 */
2195*4882a593Smuzhiyun         STDMETHOD(SetPrivateData) (THIS_ REFGUID, LPVOID, DWORD, DWORD) PURE;
2196*4882a593Smuzhiyun         STDMETHOD(GetPrivateData) (THIS_ REFGUID, LPVOID, LPDWORD) PURE;
2197*4882a593Smuzhiyun         STDMETHOD(FreePrivateData) (THIS_ REFGUID) PURE;
2198*4882a593Smuzhiyun         STDMETHOD(GetUniquenessValue) (THIS_ LPDWORD) PURE;
2199*4882a593Smuzhiyun         STDMETHOD(ChangeUniquenessValue) (THIS) PURE;
2200*4882a593Smuzhiyun         /* added in v7 */
2201*4882a593Smuzhiyun         STDMETHOD(SetPriority) (THIS_ DWORD prio) PURE;
2202*4882a593Smuzhiyun         STDMETHOD(GetPriority) (THIS_ LPDWORD prio) PURE;
2203*4882a593Smuzhiyun         STDMETHOD(SetLOD) (THIS_ DWORD lod) PURE;
2204*4882a593Smuzhiyun         STDMETHOD(GetLOD) (THIS_ LPDWORD lod) PURE;
2205*4882a593Smuzhiyun     };
2206*4882a593Smuzhiyun 
2207*4882a593Smuzhiyun     /*** IUnknown methods ***/
2208*4882a593Smuzhiyun #define IDirectDrawSurface7_QueryInterface(p,a,b) ICOM_CALL_(QueryInterface,p,(p,a,b))
2209*4882a593Smuzhiyun #define IDirectDrawSurface7_AddRef(p)             ICOM_CALL_(AddRef,p,(p))
2210*4882a593Smuzhiyun #define IDirectDrawSurface7_Release(p)            ICOM_CALL_(Release,p,(p))
2211*4882a593Smuzhiyun /*** IDirectDrawSurface (almost) methods ***/
2212*4882a593Smuzhiyun #define IDirectDrawSurface7_AddAttachedSurface(p,a)      ICOM_CALL_(AddAttachedSurface,p,(p,a))
2213*4882a593Smuzhiyun #define IDirectDrawSurface7_AddOverlayDirtyRect(p,a)     ICOM_CALL_(AddOverlayDirtyRect,p,(p,a))
2214*4882a593Smuzhiyun #define IDirectDrawSurface7_Blt(p,a,b,c,d,e)             ICOM_CALL_(Blt,p,(p,a,b,c,d,e))
2215*4882a593Smuzhiyun #define IDirectDrawSurface7_BltBatch(p,a,b,c)            ICOM_CALL_(BltBatch,p,(p,a,b,c))
2216*4882a593Smuzhiyun #define IDirectDrawSurface7_BltFast(p,a,b,c,d,e)         ICOM_CALL_(BltFast,p,(p,a,b,c,d,e))
2217*4882a593Smuzhiyun #define IDirectDrawSurface7_DeleteAttachedSurface(p,a,b) ICOM_CALL_(DeleteAttachedSurface,p,(p,a,b))
2218*4882a593Smuzhiyun #define IDirectDrawSurface7_EnumAttachedSurfaces(p,a,b)  ICOM_CALL_(EnumAttachedSurfaces,p,(p,a,b))
2219*4882a593Smuzhiyun #define IDirectDrawSurface7_EnumOverlayZOrders(p,a,b,c)  ICOM_CALL_(EnumOverlayZOrders,p,(p,a,b,c))
2220*4882a593Smuzhiyun #define IDirectDrawSurface7_Flip(p,a,b)                  ICOM_CALL_(Flip,p,(p,a,b))
2221*4882a593Smuzhiyun #define IDirectDrawSurface7_GetAttachedSurface(p,a,b)    ICOM_CALL_(GetAttachedSurface,p,(p,a,b))
2222*4882a593Smuzhiyun #define IDirectDrawSurface7_GetBltStatus(p,a)            ICOM_CALL_(GetBltStatus,p,(p,a))
2223*4882a593Smuzhiyun #define IDirectDrawSurface7_GetCaps(p,a)                 ICOM_CALL_(GetCaps,p,(p,a))
2224*4882a593Smuzhiyun #define IDirectDrawSurface7_GetClipper(p,a)              ICOM_CALL_(GetClipper,p,(p,a))
2225*4882a593Smuzhiyun #define IDirectDrawSurface7_GetColorKey(p,a,b)           ICOM_CALL_(GetColorKey,p,(p,a,b))
2226*4882a593Smuzhiyun #define IDirectDrawSurface7_GetDC(p,a)                   ICOM_CALL_(GetDC,p,(p,a))
2227*4882a593Smuzhiyun #define IDirectDrawSurface7_GetFlipStatus(p,a)           ICOM_CALL_(GetFlipStatus,p,(p,a))
2228*4882a593Smuzhiyun #define IDirectDrawSurface7_GetOverlayPosition(p,a,b)    ICOM_CALL_(GetOverlayPosition,p,(p,a,b))
2229*4882a593Smuzhiyun #define IDirectDrawSurface7_GetPalette(p,a)              ICOM_CALL_(GetPalette,p,(p,a))
2230*4882a593Smuzhiyun #define IDirectDrawSurface7_GetPixelFormat(p,a)          ICOM_CALL_(GetPixelFormat,p,(p,a))
2231*4882a593Smuzhiyun #define IDirectDrawSurface7_GetSurfaceDesc(p,a)          ICOM_CALL_(GetSurfaceDesc,p,(p,a))
2232*4882a593Smuzhiyun #define IDirectDrawSurface7_Initialize(p,a,b)            ICOM_CALL_(Initialize,p,(p,a,b))
2233*4882a593Smuzhiyun #define IDirectDrawSurface7_IsLost(p)                    ICOM_CALL_(IsLost,p,(p))
2234*4882a593Smuzhiyun #define IDirectDrawSurface7_Lock(p,a,b,c,d)              ICOM_CALL_(Lock,p,(p,a,b,c,d))
2235*4882a593Smuzhiyun #define IDirectDrawSurface7_ReleaseDC(p,a)               ICOM_CALL_(ReleaseDC,p,(p,a))
2236*4882a593Smuzhiyun #define IDirectDrawSurface7_Restore(p)                   ICOM_CALL_(Restore,p,(p))
2237*4882a593Smuzhiyun #define IDirectDrawSurface7_SetClipper(p,a)              ICOM_CALL_(SetClipper,p,(p,a))
2238*4882a593Smuzhiyun #define IDirectDrawSurface7_SetColorKey(p,a,b)           ICOM_CALL_(SetColorKey,p,(p,a,b))
2239*4882a593Smuzhiyun #define IDirectDrawSurface7_SetOverlayPosition(p,a,b)    ICOM_CALL_(SetOverlayPosition,p,(p,a,b))
2240*4882a593Smuzhiyun #define IDirectDrawSurface7_SetPalette(p,a)              ICOM_CALL_(SetPalette,p,(p,a))
2241*4882a593Smuzhiyun #define IDirectDrawSurface7_Unlock(p,a)                  ICOM_CALL_(Unlock,p,(p,a))
2242*4882a593Smuzhiyun #define IDirectDrawSurface7_UpdateOverlay(p,a,b,c,d,e)   ICOM_CALL_(UpdateOverlay,p,(p,a,b,c,d,e))
2243*4882a593Smuzhiyun #define IDirectDrawSurface7_UpdateOverlayDisplay(p,a)    ICOM_CALL_(UpdateOverlayDisplay,p,(p,a))
2244*4882a593Smuzhiyun #define IDirectDrawSurface7_UpdateOverlayZOrder(p,a,b)   ICOM_CALL_(UpdateOverlayZOrder,p,(p,a,b))
2245*4882a593Smuzhiyun /*** IDirectDrawSurface2 methods ***/
2246*4882a593Smuzhiyun #define IDirectDrawSurface7_GetDDInterface(p,a) ICOM_CALL_(GetDDInterface,p,(p,a))
2247*4882a593Smuzhiyun #define IDirectDrawSurface7_PageLock(p,a)       ICOM_CALL_(PageLock,p,(p,a))
2248*4882a593Smuzhiyun #define IDirectDrawSurface7_PageUnlock(p,a)     ICOM_CALL_(PageUnlock,p,(p,a))
2249*4882a593Smuzhiyun /*** IDirectDrawSurface3 methods ***/
2250*4882a593Smuzhiyun #define IDirectDrawSurface7_SetSurfaceDesc(p,a,b) ICOM_CALL_(SetSurfaceDesc,p,(p,a,b))
2251*4882a593Smuzhiyun /*** IDirectDrawSurface4 methods ***/
2252*4882a593Smuzhiyun #define IDirectDrawSurface7_SetPrivateData(p,a,b,c,d) ICOM_CALL_(SetPrivateData,p,(p,a,b,c,d))
2253*4882a593Smuzhiyun #define IDirectDrawSurface7_GetPrivateData(p,a,b,c)   ICOM_CALL_(GetPrivateData,p,(p,a,b,c))
2254*4882a593Smuzhiyun #define IDirectDrawSurface7_FreePrivateData(p,a)      ICOM_CALL_(FreePrivateData,p,(p,a))
2255*4882a593Smuzhiyun #define IDirectDrawSurface7_GetUniquenessValue(p,a)   ICOM_CALL_(GetUniquenessValue,p,(p,a))
2256*4882a593Smuzhiyun #define IDirectDrawSurface7_ChangeUniquenessValue(p)  ICOM_CALL_(ChangeUniquenessValue,p,(p))
2257*4882a593Smuzhiyun /*** IDirectDrawSurface7 methods ***/
2258*4882a593Smuzhiyun #define IDirectDrawSurface7_SetPriority(p,a)          ICOM_CALL_(SetPriority,p,(p,a))
2259*4882a593Smuzhiyun #define IDirectDrawSurface7_GetPriority(p,a)          ICOM_CALL_(GetPriority,p,(p,a))
2260*4882a593Smuzhiyun #define IDirectDrawSurface7_SetLOD(p,a)               ICOM_CALL_(SetLOD,p,(p,a))
2261*4882a593Smuzhiyun #define IDirectDrawSurface7_GetLOD(p,a)               ICOM_CALL_(GetLOD,p,(p,a))
2262*4882a593Smuzhiyun 
2263*4882a593Smuzhiyun /*****************************************************************************
2264*4882a593Smuzhiyun  * IDirectDrawColorControl interface
2265*4882a593Smuzhiyun  */
2266*4882a593Smuzhiyun #undef INTERFACE
2267*4882a593Smuzhiyun #define INTERFACE IDirectDrawColorControl
DECLARE_INTERFACE_(IDirectDrawColorControl,IUnknown)2268*4882a593Smuzhiyun     DECLARE_INTERFACE_(IDirectDrawColorControl, IUnknown) {
2269*4882a593Smuzhiyun         STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE;
2270*4882a593Smuzhiyun         STDMETHOD_(ULONG, AddRef) (THIS) PURE;
2271*4882a593Smuzhiyun         STDMETHOD_(ULONG, Release) (THIS) PURE;
2272*4882a593Smuzhiyun         STDMETHOD(GetColorControls) (THIS_ LPDDCOLORCONTROL lpColorControl)
2273*4882a593Smuzhiyun             PURE;
2274*4882a593Smuzhiyun         STDMETHOD(SetColorControls) (THIS_ LPDDCOLORCONTROL lpColorControl)
2275*4882a593Smuzhiyun             PURE;
2276*4882a593Smuzhiyun     };
2277*4882a593Smuzhiyun 
2278*4882a593Smuzhiyun         /*** IUnknown methods ***/
2279*4882a593Smuzhiyun #define IDirectDrawColorControl_QueryInterface(p,a,b) ICOM_CALL_(QueryInterface,p,(p,a,b))
2280*4882a593Smuzhiyun #define IDirectDrawColorControl_AddRef(p)             ICOM_CALL_(AddRef,p,(p))
2281*4882a593Smuzhiyun #define IDirectDrawColorControl_Release(p)            ICOM_CALL_(Release,p,(p))
2282*4882a593Smuzhiyun         /*** IDirectDrawColorControl methods ***/
2283*4882a593Smuzhiyun #define IDirectDrawColorControl_GetColorControls(p,a) ICOM_CALL_(GetColorControls,p,(p,a))
2284*4882a593Smuzhiyun #define IDirectDrawColorControl_SetColorControls(p,a) ICOM_CALL_(SetColorControls,p,(p,a))
2285*4882a593Smuzhiyun 
2286*4882a593Smuzhiyun /*****************************************************************************
2287*4882a593Smuzhiyun  * IDirectDrawGammaControl interface
2288*4882a593Smuzhiyun  */
2289*4882a593Smuzhiyun #undef INTERFACE
2290*4882a593Smuzhiyun #define INTERFACE IDirectDrawGammaControl
DECLARE_INTERFACE_(IDirectDrawGammaControl,IUnknown)2291*4882a593Smuzhiyun     DECLARE_INTERFACE_(IDirectDrawGammaControl, IUnknown) {
2292*4882a593Smuzhiyun         STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE;
2293*4882a593Smuzhiyun         STDMETHOD_(ULONG, AddRef) (THIS) PURE;
2294*4882a593Smuzhiyun         STDMETHOD_(ULONG, Release) (THIS) PURE;
2295*4882a593Smuzhiyun         STDMETHOD(GetGammaRamp) (THIS_ DWORD dwFlags,
2296*4882a593Smuzhiyun                                  LPDDGAMMARAMP lpGammaRamp) PURE;
2297*4882a593Smuzhiyun         STDMETHOD(SetGammaRamp) (THIS_ DWORD dwFlags,
2298*4882a593Smuzhiyun                                  LPDDGAMMARAMP lpGammaRamp) PURE;
2299*4882a593Smuzhiyun     };
2300*4882a593Smuzhiyun 
2301*4882a593Smuzhiyun         /*** IUnknown methods ***/
2302*4882a593Smuzhiyun #define IDirectDrawGammaControl_QueryInterface(p,a,b) ICOM_CALL_(QueryInterface,p,(p,a,b))
2303*4882a593Smuzhiyun #define IDirectDrawGammaControl_AddRef(p)             ICOM_CALL_(AddRef,p,(p))
2304*4882a593Smuzhiyun #define IDirectDrawGammaControl_Release(p)            ICOM_CALL_(Release,p,(p))
2305*4882a593Smuzhiyun         /*** IDirectDrawGammaControl methods ***/
2306*4882a593Smuzhiyun #define IDirectDrawGammaControl_GetGammaRamp(p,a,b)   ICOM_CALL_(GetGammaRamp,p,(p,a,b))
2307*4882a593Smuzhiyun #define IDirectDrawGammaControl_SetGammaRamp(p,a,b)   ICOM_CALL_(SetGammaRamp,p,(p,a,b))
2308*4882a593Smuzhiyun 
2309*4882a593Smuzhiyun     HRESULT WINAPI DirectDrawCreate(LPGUID, LPDIRECTDRAW *, LPUNKNOWN);
2310*4882a593Smuzhiyun     HRESULT WINAPI DirectDrawCreateEx(LPGUID, LPVOID *, REFIID, LPUNKNOWN);
2311*4882a593Smuzhiyun     HRESULT WINAPI DirectDrawEnumerateA(LPDDENUMCALLBACKA, LPVOID);
2312*4882a593Smuzhiyun     HRESULT WINAPI DirectDrawEnumerateW(LPDDENUMCALLBACKW, LPVOID);
2313*4882a593Smuzhiyun 
2314*4882a593Smuzhiyun #define DirectDrawEnumerate WINELIB_NAME_AW(DirectDrawEnumerate)
2315*4882a593Smuzhiyun     HRESULT WINAPI DirectDrawCreateClipper(DWORD, LPDIRECTDRAWCLIPPER *,
2316*4882a593Smuzhiyun                                            LPUNKNOWN);
2317*4882a593Smuzhiyun 
2318*4882a593Smuzhiyun #ifdef __cplusplus
2319*4882a593Smuzhiyun }                               /* extern "C" */
2320*4882a593Smuzhiyun #endif                          /* defined(__cplusplus) */
2321*4882a593Smuzhiyun 
2322*4882a593Smuzhiyun #endif                          /* __XWIN_DDRAW_H */
2323