135c4bbdfSmrg#ifdef __MINGW64_VERSION_MAJOR
235c4bbdfSmrg#include_next <ddraw.h>
335c4bbdfSmrg#define __XWIN_DDRAW_H
435c4bbdfSmrg#endif
505b261ecSmrg#ifndef __XWIN_DDRAW_H
605b261ecSmrg#define __XWIN_DDRAW_H
705b261ecSmrg
805b261ecSmrg#include <winnt.h>
905b261ecSmrg#include <wingdi.h>
1005b261ecSmrg#include <objbase.h>
1105b261ecSmrg
1205b261ecSmrg#if defined(NONAMELESSUNION) && !defined(DUMMYUNIONNAME1)
1305b261ecSmrg#define DUMMYUNIONNAME1 u1
1405b261ecSmrg#endif
1505b261ecSmrg
1605b261ecSmrg#define ICOM_CALL_( xfn, p, args) (p)->lpVtbl->xfn args
1705b261ecSmrg
1835c4bbdfSmrg#ifdef UNICODE
1935c4bbdfSmrg#define WINELIB_NAME_AW(func) func##W
2035c4bbdfSmrg#else
2135c4bbdfSmrg#define WINELIB_NAME_AW(func) func##A
2235c4bbdfSmrg#endif                          /* UNICODE */
2305b261ecSmrg#define DECL_WINELIB_TYPE_AW(type)  typedef WINELIB_NAME_AW(type) type;
2405b261ecSmrg
2505b261ecSmrg#ifdef __cplusplus
2605b261ecSmrgextern "C" {
2735c4bbdfSmrg#endif                          /* defined(__cplusplus) */
2805b261ecSmrg
2905b261ecSmrg#ifndef	DIRECTDRAW_VERSION
3005b261ecSmrg#define	DIRECTDRAW_VERSION	0x0700
3135c4bbdfSmrg#endif                          /* DIRECTDRAW_VERSION */
3205b261ecSmrg
3305b261ecSmrg/*****************************************************************************
3405b261ecSmrg * Predeclare the interfaces
3505b261ecSmrg */
3635c4bbdfSmrg    DEFINE_GUID(CLSID_DirectDraw, 0xD7B70EE0, 0x4340, 0x11CF, 0xB0, 0x63, 0x00,
3735c4bbdfSmrg                0x20, 0xAF, 0xC2, 0xCD, 0x35);
3835c4bbdfSmrg    DEFINE_GUID(CLSID_DirectDraw7, 0x3C305196, 0x50DB, 0x11D3, 0x9C, 0xFE, 0x00,
3935c4bbdfSmrg                0xC0, 0x4F, 0xD9, 0x30, 0xC5);
4035c4bbdfSmrg    DEFINE_GUID(CLSID_DirectDrawClipper, 0x593817A0, 0x7DB3, 0x11CF, 0xA2, 0xDE,
4135c4bbdfSmrg                0x00, 0xAA, 0x00, 0xb9, 0x33, 0x56);
4235c4bbdfSmrg    DEFINE_GUID(IID_IDirectDraw, 0x6C14DB80, 0xA733, 0x11CE, 0xA5, 0x21, 0x00,
4335c4bbdfSmrg                0x20, 0xAF, 0x0B, 0xE5, 0x60);
4435c4bbdfSmrg    DEFINE_GUID(IID_IDirectDraw2, 0xB3A6F3E0, 0x2B43, 0x11CF, 0xA2, 0xDE, 0x00,
4535c4bbdfSmrg                0xAA, 0x00, 0xB9, 0x33, 0x56);
4635c4bbdfSmrg    DEFINE_GUID(IID_IDirectDraw4, 0x9c59509a, 0x39bd, 0x11d1, 0x8c, 0x4a, 0x00,
4735c4bbdfSmrg                0xc0, 0x4f, 0xd9, 0x30, 0xc5);
4835c4bbdfSmrg    DEFINE_GUID(IID_IDirectDraw7, 0x15e65ec0, 0x3b9c, 0x11d2, 0xb9, 0x2f, 0x00,
4935c4bbdfSmrg                0x60, 0x97, 0x97, 0xea, 0x5b);
5035c4bbdfSmrg    DEFINE_GUID(IID_IDirectDrawSurface, 0x6C14DB81, 0xA733, 0x11CE, 0xA5, 0x21,
5135c4bbdfSmrg                0x00, 0x20, 0xAF, 0x0B, 0xE5, 0x60);
5235c4bbdfSmrg    DEFINE_GUID(IID_IDirectDrawSurface2, 0x57805885, 0x6eec, 0x11cf, 0x94, 0x41,
5335c4bbdfSmrg                0xa8, 0x23, 0x03, 0xc1, 0x0e, 0x27);
5435c4bbdfSmrg    DEFINE_GUID(IID_IDirectDrawSurface3, 0xDA044E00, 0x69B2, 0x11D0, 0xA1, 0xD5,
5535c4bbdfSmrg                0x00, 0xAA, 0x00, 0xB8, 0xDF, 0xBB);
5635c4bbdfSmrg    DEFINE_GUID(IID_IDirectDrawSurface4, 0x0B2B8630, 0xAD35, 0x11D0, 0x8E, 0xA6,
5735c4bbdfSmrg                0x00, 0x60, 0x97, 0x97, 0xEA, 0x5B);
5835c4bbdfSmrg    DEFINE_GUID(IID_IDirectDrawSurface7, 0x06675a80, 0x3b9b, 0x11d2, 0xb9, 0x2f,
5935c4bbdfSmrg                0x00, 0x60, 0x97, 0x97, 0xea, 0x5b);
6035c4bbdfSmrg    DEFINE_GUID(IID_IDirectDrawPalette, 0x6C14DB84, 0xA733, 0x11CE, 0xA5, 0x21,
6135c4bbdfSmrg                0x00, 0x20, 0xAF, 0x0B, 0xE5, 0x60);
6235c4bbdfSmrg    DEFINE_GUID(IID_IDirectDrawClipper, 0x6C14DB85, 0xA733, 0x11CE, 0xA5, 0x21,
6335c4bbdfSmrg                0x00, 0x20, 0xAF, 0x0B, 0xE5, 0x60);
6435c4bbdfSmrg    DEFINE_GUID(IID_IDirectDrawColorControl, 0x4B9F0EE0, 0x0D7E, 0x11D0, 0x9B,
6535c4bbdfSmrg                0x06, 0x00, 0xA0, 0xC9, 0x03, 0xA3, 0xB8);
6635c4bbdfSmrg    DEFINE_GUID(IID_IDirectDrawGammaControl, 0x69C11C3E, 0xB46B, 0x11D1, 0xAD,
6735c4bbdfSmrg                0x7A, 0x00, 0xC0, 0x4F, 0xC2, 0x9B, 0x4E);
6835c4bbdfSmrg
6935c4bbdfSmrg    typedef struct IDirectDraw *LPDIRECTDRAW;
7035c4bbdfSmrg    typedef struct IDirectDraw2 *LPDIRECTDRAW2;
7135c4bbdfSmrg    typedef struct IDirectDraw4 *LPDIRECTDRAW4;
7235c4bbdfSmrg    typedef struct IDirectDraw7 *LPDIRECTDRAW7;
7335c4bbdfSmrg    typedef struct IDirectDrawClipper *LPDIRECTDRAWCLIPPER;
7435c4bbdfSmrg    typedef struct IDirectDrawPalette *LPDIRECTDRAWPALETTE;
7535c4bbdfSmrg    typedef struct IDirectDrawSurface *LPDIRECTDRAWSURFACE;
7635c4bbdfSmrg    typedef struct IDirectDrawSurface2 *LPDIRECTDRAWSURFACE2;
7735c4bbdfSmrg    typedef struct IDirectDrawSurface3 *LPDIRECTDRAWSURFACE3;
7835c4bbdfSmrg    typedef struct IDirectDrawSurface4 *LPDIRECTDRAWSURFACE4;
7935c4bbdfSmrg    typedef struct IDirectDrawSurface7 *LPDIRECTDRAWSURFACE7;
8035c4bbdfSmrg    typedef struct IDirectDrawColorControl *LPDIRECTDRAWCOLORCONTROL;
8135c4bbdfSmrg    typedef struct IDirectDrawGammaControl *LPDIRECTDRAWGAMMACONTROL;
8205b261ecSmrg
8305b261ecSmrg#define DDENUMRET_CANCEL	0
8405b261ecSmrg#define DDENUMRET_OK		1
8505b261ecSmrg
8605b261ecSmrg#define DD_OK			0
8705b261ecSmrg
8805b261ecSmrg#define _FACDD		0x876
8905b261ecSmrg#define MAKE_DDHRESULT( code )  MAKE_HRESULT( 1, _FACDD, code )
9005b261ecSmrg
9105b261ecSmrg#define DDERR_ALREADYINITIALIZED		MAKE_DDHRESULT( 5 )
9205b261ecSmrg#define DDERR_CANNOTATTACHSURFACE		MAKE_DDHRESULT( 10 )
9305b261ecSmrg#define DDERR_CANNOTDETACHSURFACE		MAKE_DDHRESULT( 20 )
9405b261ecSmrg#define DDERR_CURRENTLYNOTAVAIL			MAKE_DDHRESULT( 40 )
9505b261ecSmrg#define DDERR_EXCEPTION				MAKE_DDHRESULT( 55 )
9605b261ecSmrg#define DDERR_GENERIC				E_FAIL
9705b261ecSmrg#define DDERR_HEIGHTALIGN			MAKE_DDHRESULT( 90 )
9805b261ecSmrg#define DDERR_INCOMPATIBLEPRIMARY		MAKE_DDHRESULT( 95 )
9905b261ecSmrg#define DDERR_INVALIDCAPS			MAKE_DDHRESULT( 100 )
10005b261ecSmrg#define DDERR_INVALIDCLIPLIST			MAKE_DDHRESULT( 110 )
10105b261ecSmrg#define DDERR_INVALIDMODE			MAKE_DDHRESULT( 120 )
10205b261ecSmrg#define DDERR_INVALIDOBJECT			MAKE_DDHRESULT( 130 )
10305b261ecSmrg#define DDERR_INVALIDPARAMS			E_INVALIDARG
10405b261ecSmrg#define DDERR_INVALIDPIXELFORMAT		MAKE_DDHRESULT( 145 )
10505b261ecSmrg#define DDERR_INVALIDRECT			MAKE_DDHRESULT( 150 )
10605b261ecSmrg#define DDERR_LOCKEDSURFACES			MAKE_DDHRESULT( 160 )
10705b261ecSmrg#define DDERR_NO3D				MAKE_DDHRESULT( 170 )
10805b261ecSmrg#define DDERR_NOALPHAHW				MAKE_DDHRESULT( 180 )
10905b261ecSmrg#define DDERR_NOSTEREOHARDWARE          	MAKE_DDHRESULT( 181 )
11005b261ecSmrg#define DDERR_NOSURFACELEFT                     MAKE_DDHRESULT( 182 )
11105b261ecSmrg#define DDERR_NOCLIPLIST			MAKE_DDHRESULT( 205 )
11205b261ecSmrg#define DDERR_NOCOLORCONVHW			MAKE_DDHRESULT( 210 )
11305b261ecSmrg#define DDERR_NOCOOPERATIVELEVELSET		MAKE_DDHRESULT( 212 )
11405b261ecSmrg#define DDERR_NOCOLORKEY			MAKE_DDHRESULT( 215 )
11505b261ecSmrg#define DDERR_NOCOLORKEYHW			MAKE_DDHRESULT( 220 )
11605b261ecSmrg#define DDERR_NODIRECTDRAWSUPPORT		MAKE_DDHRESULT( 222 )
11705b261ecSmrg#define DDERR_NOEXCLUSIVEMODE			MAKE_DDHRESULT( 225 )
11805b261ecSmrg#define DDERR_NOFLIPHW				MAKE_DDHRESULT( 230 )
11905b261ecSmrg#define DDERR_NOGDI				MAKE_DDHRESULT( 240 )
12005b261ecSmrg#define DDERR_NOMIRRORHW			MAKE_DDHRESULT( 250 )
12105b261ecSmrg#define DDERR_NOTFOUND				MAKE_DDHRESULT( 255 )
12205b261ecSmrg#define DDERR_NOOVERLAYHW			MAKE_DDHRESULT( 260 )
12305b261ecSmrg#define DDERR_OVERLAPPINGRECTS                  MAKE_DDHRESULT( 270 )
12405b261ecSmrg#define DDERR_NORASTEROPHW			MAKE_DDHRESULT( 280 )
12505b261ecSmrg#define DDERR_NOROTATIONHW			MAKE_DDHRESULT( 290 )
12605b261ecSmrg#define DDERR_NOSTRETCHHW			MAKE_DDHRESULT( 310 )
12705b261ecSmrg#define DDERR_NOT4BITCOLOR			MAKE_DDHRESULT( 316 )
12805b261ecSmrg#define DDERR_NOT4BITCOLORINDEX			MAKE_DDHRESULT( 317 )
12905b261ecSmrg#define DDERR_NOT8BITCOLOR			MAKE_DDHRESULT( 320 )
13005b261ecSmrg#define DDERR_NOTEXTUREHW			MAKE_DDHRESULT( 330 )
13105b261ecSmrg#define DDERR_NOVSYNCHW				MAKE_DDHRESULT( 335 )
13205b261ecSmrg#define DDERR_NOZBUFFERHW			MAKE_DDHRESULT( 340 )
13305b261ecSmrg#define DDERR_NOZOVERLAYHW			MAKE_DDHRESULT( 350 )
13405b261ecSmrg#define DDERR_OUTOFCAPS				MAKE_DDHRESULT( 360 )
13505b261ecSmrg#define DDERR_OUTOFMEMORY			E_OUTOFMEMORY
13605b261ecSmrg#define DDERR_OUTOFVIDEOMEMORY			MAKE_DDHRESULT( 380 )
13705b261ecSmrg#define DDERR_OVERLAYCANTCLIP			MAKE_DDHRESULT( 382 )
13805b261ecSmrg#define DDERR_OVERLAYCOLORKEYONLYONEACTIVE	MAKE_DDHRESULT( 384 )
13905b261ecSmrg#define DDERR_PALETTEBUSY			MAKE_DDHRESULT( 387 )
14005b261ecSmrg#define DDERR_COLORKEYNOTSET			MAKE_DDHRESULT( 400 )
14105b261ecSmrg#define DDERR_SURFACEALREADYATTACHED		MAKE_DDHRESULT( 410 )
14205b261ecSmrg#define DDERR_SURFACEALREADYDEPENDENT		MAKE_DDHRESULT( 420 )
14305b261ecSmrg#define DDERR_SURFACEBUSY			MAKE_DDHRESULT( 430 )
14405b261ecSmrg#define DDERR_CANTLOCKSURFACE			MAKE_DDHRESULT( 435 )
14505b261ecSmrg#define DDERR_SURFACEISOBSCURED			MAKE_DDHRESULT( 440 )
14605b261ecSmrg#define DDERR_SURFACELOST			MAKE_DDHRESULT( 450 )
14705b261ecSmrg#define DDERR_SURFACENOTATTACHED		MAKE_DDHRESULT( 460 )
14805b261ecSmrg#define DDERR_TOOBIGHEIGHT			MAKE_DDHRESULT( 470 )
14905b261ecSmrg#define DDERR_TOOBIGSIZE			MAKE_DDHRESULT( 480 )
15005b261ecSmrg#define DDERR_TOOBIGWIDTH			MAKE_DDHRESULT( 490 )
15105b261ecSmrg#define DDERR_UNSUPPORTED			E_NOTIMPL
15205b261ecSmrg#define DDERR_UNSUPPORTEDFORMAT			MAKE_DDHRESULT( 510 )
15305b261ecSmrg#define DDERR_UNSUPPORTEDMASK			MAKE_DDHRESULT( 520 )
15405b261ecSmrg#define DDERR_INVALIDSTREAM                     MAKE_DDHRESULT( 521 )
15505b261ecSmrg#define DDERR_VERTICALBLANKINPROGRESS		MAKE_DDHRESULT( 537 )
15605b261ecSmrg#define DDERR_WASSTILLDRAWING			MAKE_DDHRESULT( 540 )
15705b261ecSmrg#define DDERR_DDSCAPSCOMPLEXREQUIRED            MAKE_DDHRESULT( 542 )
15805b261ecSmrg#define DDERR_XALIGN				MAKE_DDHRESULT( 560 )
15905b261ecSmrg#define DDERR_INVALIDDIRECTDRAWGUID		MAKE_DDHRESULT( 561 )
16005b261ecSmrg#define DDERR_DIRECTDRAWALREADYCREATED		MAKE_DDHRESULT( 562 )
16105b261ecSmrg#define DDERR_NODIRECTDRAWHW			MAKE_DDHRESULT( 563 )
16205b261ecSmrg#define DDERR_PRIMARYSURFACEALREADYEXISTS	MAKE_DDHRESULT( 564 )
16305b261ecSmrg#define DDERR_NOEMULATION			MAKE_DDHRESULT( 565 )
16405b261ecSmrg#define DDERR_REGIONTOOSMALL			MAKE_DDHRESULT( 566 )
16505b261ecSmrg#define DDERR_CLIPPERISUSINGHWND		MAKE_DDHRESULT( 567 )
16605b261ecSmrg#define DDERR_NOCLIPPERATTACHED			MAKE_DDHRESULT( 568 )
16705b261ecSmrg#define DDERR_NOHWND				MAKE_DDHRESULT( 569 )
16805b261ecSmrg#define DDERR_HWNDSUBCLASSED			MAKE_DDHRESULT( 570 )
16905b261ecSmrg#define DDERR_HWNDALREADYSET			MAKE_DDHRESULT( 571 )
17005b261ecSmrg#define DDERR_NOPALETTEATTACHED			MAKE_DDHRESULT( 572 )
17105b261ecSmrg#define DDERR_NOPALETTEHW			MAKE_DDHRESULT( 573 )
17205b261ecSmrg#define DDERR_BLTFASTCANTCLIP			MAKE_DDHRESULT( 574 )
17305b261ecSmrg#define DDERR_NOBLTHW				MAKE_DDHRESULT( 575 )
17405b261ecSmrg#define DDERR_NODDROPSHW			MAKE_DDHRESULT( 576 )
17505b261ecSmrg#define DDERR_OVERLAYNOTVISIBLE			MAKE_DDHRESULT( 577 )
17605b261ecSmrg#define DDERR_NOOVERLAYDEST			MAKE_DDHRESULT( 578 )
17705b261ecSmrg#define DDERR_INVALIDPOSITION			MAKE_DDHRESULT( 579 )
17805b261ecSmrg#define DDERR_NOTAOVERLAYSURFACE		MAKE_DDHRESULT( 580 )
17905b261ecSmrg#define DDERR_EXCLUSIVEMODEALREADYSET		MAKE_DDHRESULT( 581 )
18005b261ecSmrg#define DDERR_NOTFLIPPABLE			MAKE_DDHRESULT( 582 )
18105b261ecSmrg#define DDERR_CANTDUPLICATE			MAKE_DDHRESULT( 583 )
18205b261ecSmrg#define DDERR_NOTLOCKED				MAKE_DDHRESULT( 584 )
18305b261ecSmrg#define DDERR_CANTCREATEDC			MAKE_DDHRESULT( 585 )
18405b261ecSmrg#define DDERR_NODC				MAKE_DDHRESULT( 586 )
18505b261ecSmrg#define DDERR_WRONGMODE				MAKE_DDHRESULT( 587 )
18605b261ecSmrg#define DDERR_IMPLICITLYCREATED			MAKE_DDHRESULT( 588 )
18705b261ecSmrg#define DDERR_NOTPALETTIZED			MAKE_DDHRESULT( 589 )
18805b261ecSmrg#define DDERR_UNSUPPORTEDMODE			MAKE_DDHRESULT( 590 )
18905b261ecSmrg#define DDERR_NOMIPMAPHW			MAKE_DDHRESULT( 591 )
19005b261ecSmrg#define DDERR_INVALIDSURFACETYPE		MAKE_DDHRESULT( 592 )
19105b261ecSmrg#define DDERR_NOOPTIMIZEHW			MAKE_DDHRESULT( 600 )
19205b261ecSmrg#define DDERR_NOTLOADED				MAKE_DDHRESULT( 601 )
19305b261ecSmrg#define DDERR_NOFOCUSWINDOW			MAKE_DDHRESULT( 602 )
19405b261ecSmrg#define DDERR_NOTONMIPMAPSUBLEVEL               MAKE_DDHRESULT( 603 )
19505b261ecSmrg#define DDERR_DCALREADYCREATED			MAKE_DDHRESULT( 620 )
19605b261ecSmrg#define DDERR_NONONLOCALVIDMEM			MAKE_DDHRESULT( 630 )
19705b261ecSmrg#define DDERR_CANTPAGELOCK			MAKE_DDHRESULT( 640 )
19805b261ecSmrg#define DDERR_CANTPAGEUNLOCK			MAKE_DDHRESULT( 660 )
19905b261ecSmrg#define DDERR_NOTPAGELOCKED			MAKE_DDHRESULT( 680 )
20005b261ecSmrg#define DDERR_MOREDATA				MAKE_DDHRESULT( 690 )
20105b261ecSmrg#define DDERR_EXPIRED                           MAKE_DDHRESULT( 691 )
20205b261ecSmrg#define DDERR_TESTFINISHED                      MAKE_DDHRESULT( 692 )
20305b261ecSmrg#define DDERR_NEWMODE                           MAKE_DDHRESULT( 693 )
20405b261ecSmrg#define DDERR_D3DNOTINITIALIZED                 MAKE_DDHRESULT( 694 )
20505b261ecSmrg#define DDERR_VIDEONOTACTIVE			MAKE_DDHRESULT( 695 )
20605b261ecSmrg#define DDERR_NOMONITORINFORMATION              MAKE_DDHRESULT( 696 )
20705b261ecSmrg#define DDERR_NODRIVERSUPPORT                   MAKE_DDHRESULT( 697 )
20805b261ecSmrg#define DDERR_DEVICEDOESNTOWNSURFACE		MAKE_DDHRESULT( 699 )
20905b261ecSmrg#define DDERR_NOTINITIALIZED			CO_E_NOTINITIALIZED
21005b261ecSmrg
21105b261ecSmrg/* dwFlags for Blt* */
21205b261ecSmrg#define DDBLT_ALPHADEST				0x00000001
21305b261ecSmrg#define DDBLT_ALPHADESTCONSTOVERRIDE		0x00000002
21405b261ecSmrg#define DDBLT_ALPHADESTNEG			0x00000004
21505b261ecSmrg#define DDBLT_ALPHADESTSURFACEOVERRIDE		0x00000008
21605b261ecSmrg#define DDBLT_ALPHAEDGEBLEND			0x00000010
21705b261ecSmrg#define DDBLT_ALPHASRC				0x00000020
21805b261ecSmrg#define DDBLT_ALPHASRCCONSTOVERRIDE		0x00000040
21905b261ecSmrg#define DDBLT_ALPHASRCNEG			0x00000080
22005b261ecSmrg#define DDBLT_ALPHASRCSURFACEOVERRIDE		0x00000100
22105b261ecSmrg#define DDBLT_ASYNC				0x00000200
22205b261ecSmrg#define DDBLT_COLORFILL				0x00000400
22305b261ecSmrg#define DDBLT_DDFX				0x00000800
22405b261ecSmrg#define DDBLT_DDROPS				0x00001000
22505b261ecSmrg#define DDBLT_KEYDEST				0x00002000
22605b261ecSmrg#define DDBLT_KEYDESTOVERRIDE			0x00004000
22705b261ecSmrg#define DDBLT_KEYSRC				0x00008000
22805b261ecSmrg#define DDBLT_KEYSRCOVERRIDE			0x00010000
22905b261ecSmrg#define DDBLT_ROP				0x00020000
23005b261ecSmrg#define DDBLT_ROTATIONANGLE			0x00040000
23105b261ecSmrg#define DDBLT_ZBUFFER				0x00080000
23205b261ecSmrg#define DDBLT_ZBUFFERDESTCONSTOVERRIDE		0x00100000
23305b261ecSmrg#define DDBLT_ZBUFFERDESTOVERRIDE		0x00200000
23405b261ecSmrg#define DDBLT_ZBUFFERSRCCONSTOVERRIDE		0x00400000
23505b261ecSmrg#define DDBLT_ZBUFFERSRCOVERRIDE		0x00800000
23605b261ecSmrg#define DDBLT_WAIT				0x01000000
23705b261ecSmrg#define DDBLT_DEPTHFILL				0x02000000
23805b261ecSmrg#define DDBLT_DONOTWAIT                         0x08000000
23905b261ecSmrg
24005b261ecSmrg/* dwTrans for BltFast */
24105b261ecSmrg#define DDBLTFAST_NOCOLORKEY			0x00000000
24205b261ecSmrg#define DDBLTFAST_SRCCOLORKEY			0x00000001
24305b261ecSmrg#define DDBLTFAST_DESTCOLORKEY			0x00000002
24405b261ecSmrg#define DDBLTFAST_WAIT				0x00000010
24505b261ecSmrg#define DDBLTFAST_DONOTWAIT                     0x00000020
24605b261ecSmrg
24705b261ecSmrg/* dwFlags for Flip */
24805b261ecSmrg#define DDFLIP_WAIT		0x00000001
24935c4bbdfSmrg#define DDFLIP_EVEN		0x00000002      /* only valid for overlay */
25035c4bbdfSmrg#define DDFLIP_ODD		0x00000004      /* only valid for overlay */
25105b261ecSmrg#define DDFLIP_NOVSYNC		0x00000008
25205b261ecSmrg#define DDFLIP_STEREO		0x00000010
25305b261ecSmrg#define DDFLIP_DONOTWAIT	0x00000020
25405b261ecSmrg
25505b261ecSmrg/* dwFlags for GetBltStatus */
25605b261ecSmrg#define DDGBS_CANBLT				0x00000001
25705b261ecSmrg#define DDGBS_ISBLTDONE				0x00000002
25805b261ecSmrg
25905b261ecSmrg/* dwFlags for IDirectDrawSurface7::GetFlipStatus */
26005b261ecSmrg#define DDGFS_CANFLIP		1L
26105b261ecSmrg#define DDGFS_ISFLIPDONE	2L
26205b261ecSmrg
26305b261ecSmrg/* dwFlags for IDirectDrawSurface7::SetPrivateData */
26405b261ecSmrg#define DDSPD_IUNKNOWNPTR	1L
26505b261ecSmrg#define DDSPD_VOLATILE		2L
26605b261ecSmrg
26705b261ecSmrg/* DDSCAPS.dwCaps */
26805b261ecSmrg/* reserved1, was 3d capable */
26905b261ecSmrg#define DDSCAPS_RESERVED1		0x00000001
27005b261ecSmrg/* surface contains alpha information */
27105b261ecSmrg#define DDSCAPS_ALPHA			0x00000002
27205b261ecSmrg/* this surface is a backbuffer */
27305b261ecSmrg#define DDSCAPS_BACKBUFFER		0x00000004
27405b261ecSmrg/* complex surface structure */
27505b261ecSmrg#define DDSCAPS_COMPLEX			0x00000008
27605b261ecSmrg/* part of surface flipping structure */
27705b261ecSmrg#define DDSCAPS_FLIP			0x00000010
27805b261ecSmrg/* this surface is the frontbuffer surface */
27905b261ecSmrg#define DDSCAPS_FRONTBUFFER		0x00000020
28005b261ecSmrg/* this is a plain offscreen surface */
28105b261ecSmrg#define DDSCAPS_OFFSCREENPLAIN		0x00000040
28205b261ecSmrg/* overlay */
28305b261ecSmrg#define DDSCAPS_OVERLAY			0x00000080
28405b261ecSmrg/* palette objects can be created and attached to us */
28505b261ecSmrg#define DDSCAPS_PALETTE			0x00000100
28605b261ecSmrg/* primary surface (the one the user looks at currently)(right eye)*/
28705b261ecSmrg#define DDSCAPS_PRIMARYSURFACE		0x00000200
28805b261ecSmrg/* primary surface for left eye */
28905b261ecSmrg#define DDSCAPS_PRIMARYSURFACELEFT	0x00000400
29005b261ecSmrg/* surface exists in systemmemory */
29105b261ecSmrg#define DDSCAPS_SYSTEMMEMORY		0x00000800
29205b261ecSmrg/* surface can be used as a texture */
29305b261ecSmrg#define DDSCAPS_TEXTURE		        0x00001000
29405b261ecSmrg/* surface may be destination for 3d rendering */
29505b261ecSmrg#define DDSCAPS_3DDEVICE		0x00002000
29605b261ecSmrg/* surface exists in videomemory */
29705b261ecSmrg#define DDSCAPS_VIDEOMEMORY		0x00004000
29805b261ecSmrg/* surface changes immediately visible */
29905b261ecSmrg#define DDSCAPS_VISIBLE			0x00008000
30005b261ecSmrg/* write only surface */
30105b261ecSmrg#define DDSCAPS_WRITEONLY		0x00010000
30205b261ecSmrg/* zbuffer surface */
30305b261ecSmrg#define DDSCAPS_ZBUFFER			0x00020000
30405b261ecSmrg/* has its own DC */
30505b261ecSmrg#define DDSCAPS_OWNDC			0x00040000
30605b261ecSmrg/* surface should be able to receive live video */
30705b261ecSmrg#define DDSCAPS_LIVEVIDEO		0x00080000
30805b261ecSmrg/* should be able to have a hw codec decompress stuff into it */
30905b261ecSmrg#define DDSCAPS_HWCODEC			0x00100000
31005b261ecSmrg/* mode X (320x200 or 320x240) surface */
31105b261ecSmrg#define DDSCAPS_MODEX			0x00200000
31205b261ecSmrg/* one mipmap surface (1 level) */
31305b261ecSmrg#define DDSCAPS_MIPMAP			0x00400000
31405b261ecSmrg#define DDSCAPS_RESERVED2		0x00800000
31505b261ecSmrg/* memory allocation delayed until Load() */
31605b261ecSmrg#define DDSCAPS_ALLOCONLOAD		0x04000000
31705b261ecSmrg/* Indicates that the surface will receive data from a video port */
31805b261ecSmrg#define DDSCAPS_VIDEOPORT		0x08000000
31905b261ecSmrg/* surface is in local videomemory */
32005b261ecSmrg#define DDSCAPS_LOCALVIDMEM		0x10000000
32105b261ecSmrg/* surface is in nonlocal videomemory */
32205b261ecSmrg#define DDSCAPS_NONLOCALVIDMEM		0x20000000
32305b261ecSmrg/* surface is a standard VGA mode surface (NOT ModeX) */
32405b261ecSmrg#define DDSCAPS_STANDARDVGAMODE		0x40000000
32505b261ecSmrg/* optimized? surface */
32605b261ecSmrg#define DDSCAPS_OPTIMIZED		0x80000000
32705b261ecSmrg
32835c4bbdfSmrg    typedef struct _DDSCAPS {
32935c4bbdfSmrg        DWORD dwCaps;           /* capabilities of surface wanted */
33035c4bbdfSmrg    } DDSCAPS, *LPDDSCAPS;
33105b261ecSmrg
33205b261ecSmrg/* DDSCAPS2.dwCaps2 */
33305b261ecSmrg/* indicates the surface will receive data from a video port using
33405b261ecSmrg   deinterlacing hardware. */
33505b261ecSmrg#define DDSCAPS2_HARDWAREDEINTERLACE	0x00000002
33605b261ecSmrg/* indicates the surface will be locked very frequently. */
33705b261ecSmrg#define DDSCAPS2_HINTDYNAMIC		0x00000004
33805b261ecSmrg/* indicates surface can be re-ordered or retiled on load() */
33905b261ecSmrg#define DDSCAPS2_HINTSTATIC             0x00000008
34005b261ecSmrg/* indicates surface to be managed by directdraw/direct3D */
34105b261ecSmrg#define DDSCAPS2_TEXTUREMANAGE          0x00000010
34205b261ecSmrg/* reserved bits */
34305b261ecSmrg#define DDSCAPS2_RESERVED1              0x00000020
34405b261ecSmrg#define DDSCAPS2_RESERVED2              0x00000040
34505b261ecSmrg/* indicates surface will never be locked again */
34605b261ecSmrg#define DDSCAPS2_OPAQUE                 0x00000080
347ed6184dfSmrg/* set at CreateSurface() time to indicate antialiasing will be used */
34805b261ecSmrg#define DDSCAPS2_HINTANTIALIASING       0x00000100
34905b261ecSmrg/* set at CreateSurface() time to indicate cubic environment map */
35005b261ecSmrg#define DDSCAPS2_CUBEMAP                0x00000200
35105b261ecSmrg/* face flags for cube maps */
35205b261ecSmrg#define DDSCAPS2_CUBEMAP_POSITIVEX      0x00000400
35305b261ecSmrg#define DDSCAPS2_CUBEMAP_NEGATIVEX      0x00000800
35405b261ecSmrg#define DDSCAPS2_CUBEMAP_POSITIVEY      0x00001000
35505b261ecSmrg#define DDSCAPS2_CUBEMAP_NEGATIVEY      0x00002000
35605b261ecSmrg#define DDSCAPS2_CUBEMAP_POSITIVEZ      0x00004000
35705b261ecSmrg#define DDSCAPS2_CUBEMAP_NEGATIVEZ      0x00008000
35805b261ecSmrg/* specifies all faces of a cube for CreateSurface() */
35905b261ecSmrg#define DDSCAPS2_CUBEMAP_ALLFACES ( DDSCAPS2_CUBEMAP_POSITIVEX |\
36005b261ecSmrg                                    DDSCAPS2_CUBEMAP_NEGATIVEX |\
36105b261ecSmrg                                    DDSCAPS2_CUBEMAP_POSITIVEY |\
36205b261ecSmrg                                    DDSCAPS2_CUBEMAP_NEGATIVEY |\
36305b261ecSmrg                                    DDSCAPS2_CUBEMAP_POSITIVEZ |\
36405b261ecSmrg                                    DDSCAPS2_CUBEMAP_NEGATIVEZ )
36505b261ecSmrg/* set for mipmap sublevels on DirectX7 and later.  ignored by CreateSurface() */
36605b261ecSmrg#define DDSCAPS2_MIPMAPSUBLEVEL         0x00010000
36705b261ecSmrg/* indicates texture surface to be managed by Direct3D *only* */
36805b261ecSmrg#define DDSCAPS2_D3DTEXTUREMANAGE       0x00020000
36905b261ecSmrg/* indicates managed surface that can safely be lost */
37005b261ecSmrg#define DDSCAPS2_DONOTPERSIST           0x00040000
37105b261ecSmrg/* indicates surface is part of a stereo flipping chain */
37205b261ecSmrg#define DDSCAPS2_STEREOSURFACELEFT      0x00080000
37305b261ecSmrg
37435c4bbdfSmrg    typedef struct _DDSCAPS2 {
37535c4bbdfSmrg        DWORD dwCaps;           /* capabilities of surface wanted */
37635c4bbdfSmrg        DWORD dwCaps2;          /* additional capabilities */
37735c4bbdfSmrg        DWORD dwCaps3;          /* reserved capabilities */
37835c4bbdfSmrg        DWORD dwCaps4;          /* more reserved capabilities */
37935c4bbdfSmrg    } DDSCAPS2, *LPDDSCAPS2;
38035c4bbdfSmrg
38135c4bbdfSmrg#define	DD_ROP_SPACE	(256/32)        /* space required to store ROP array */
38235c4bbdfSmrg
38335c4bbdfSmrg    typedef struct _DDCAPS_DX7 {        /* DirectX 7 version of caps struct */
38435c4bbdfSmrg        DWORD dwSize;           /* size of the DDDRIVERCAPS structure */
38535c4bbdfSmrg        DWORD dwCaps;           /* driver specific capabilities */
386ed6184dfSmrg        DWORD dwCaps2;          /* more driver specific capabilities */
38735c4bbdfSmrg        DWORD dwCKeyCaps;       /* color key capabilities of the surface */
388ed6184dfSmrg        DWORD dwFXCaps;         /* driver specific stretching and effects capabilities */
38935c4bbdfSmrg        DWORD dwFXAlphaCaps;    /* alpha driver specific capabilities */
39035c4bbdfSmrg        DWORD dwPalCaps;        /* palette capabilities */
39135c4bbdfSmrg        DWORD dwSVCaps;         /* stereo vision capabilities */
39235c4bbdfSmrg        DWORD dwAlphaBltConstBitDepths; /* DDBD_2,4,8 */
39335c4bbdfSmrg        DWORD dwAlphaBltPixelBitDepths; /* DDBD_1,2,4,8 */
39435c4bbdfSmrg        DWORD dwAlphaBltSurfaceBitDepths;       /* DDBD_1,2,4,8 */
39535c4bbdfSmrg        DWORD dwAlphaOverlayConstBitDepths;     /* DDBD_2,4,8 */
39635c4bbdfSmrg        DWORD dwAlphaOverlayPixelBitDepths;     /* DDBD_1,2,4,8 */
39735c4bbdfSmrg        DWORD dwAlphaOverlaySurfaceBitDepths;   /* DDBD_1,2,4,8 */
39835c4bbdfSmrg        DWORD dwZBufferBitDepths;       /* DDBD_8,16,24,32 */
39935c4bbdfSmrg        DWORD dwVidMemTotal;    /* total amount of video memory */
40035c4bbdfSmrg        DWORD dwVidMemFree;     /* amount of free video memory */
40135c4bbdfSmrg        DWORD dwMaxVisibleOverlays;     /* maximum number of visible overlays */
40235c4bbdfSmrg        DWORD dwCurrVisibleOverlays;    /* current number of visible overlays */
40335c4bbdfSmrg        DWORD dwNumFourCCCodes; /* number of four cc codes */
40435c4bbdfSmrg        DWORD dwAlignBoundarySrc;       /* source rectangle alignment */
40535c4bbdfSmrg        DWORD dwAlignSizeSrc;   /* source rectangle byte size */
40635c4bbdfSmrg        DWORD dwAlignBoundaryDest;      /* dest rectangle alignment */
40735c4bbdfSmrg        DWORD dwAlignSizeDest;  /* dest rectangle byte size */
40835c4bbdfSmrg        DWORD dwAlignStrideAlign;       /* stride alignment */
40935c4bbdfSmrg        DWORD dwRops[DD_ROP_SPACE];     /* ROPS supported */
410ed6184dfSmrg        DDSCAPS ddsOldCaps;     /* old DDSCAPS - superseded for DirectX6+ */
41135c4bbdfSmrg        DWORD dwMinOverlayStretch;      /* minimum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
41235c4bbdfSmrg        DWORD dwMaxOverlayStretch;      /* maximum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
41335c4bbdfSmrg        DWORD dwMinLiveVideoStretch;    /* minimum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
41435c4bbdfSmrg        DWORD dwMaxLiveVideoStretch;    /* maximum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
41535c4bbdfSmrg        DWORD dwMinHwCodecStretch;      /* minimum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
41635c4bbdfSmrg        DWORD dwMaxHwCodecStretch;      /* maximum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
41735c4bbdfSmrg        DWORD dwReserved1;
41835c4bbdfSmrg        DWORD dwReserved2;
41935c4bbdfSmrg        DWORD dwReserved3;
42035c4bbdfSmrg        DWORD dwSVBCaps;        /* driver specific capabilities for System->Vmem blts */
42135c4bbdfSmrg        DWORD dwSVBCKeyCaps;    /* driver color key capabilities for System->Vmem blts */
42235c4bbdfSmrg        DWORD dwSVBFXCaps;      /* driver FX capabilities for System->Vmem blts */
42335c4bbdfSmrg        DWORD dwSVBRops[DD_ROP_SPACE];  /* ROPS supported for System->Vmem blts */
42435c4bbdfSmrg        DWORD dwVSBCaps;        /* driver specific capabilities for Vmem->System blts */
42535c4bbdfSmrg        DWORD dwVSBCKeyCaps;    /* driver color key capabilities for Vmem->System blts */
42635c4bbdfSmrg        DWORD dwVSBFXCaps;      /* driver FX capabilities for Vmem->System blts */
42735c4bbdfSmrg        DWORD dwVSBRops[DD_ROP_SPACE];  /* ROPS supported for Vmem->System blts */
42835c4bbdfSmrg        DWORD dwSSBCaps;        /* driver specific capabilities for System->System blts */
42935c4bbdfSmrg        DWORD dwSSBCKeyCaps;    /* driver color key capabilities for System->System blts */
43035c4bbdfSmrg        DWORD dwSSBFXCaps;      /* driver FX capabilities for System->System blts */
43135c4bbdfSmrg        DWORD dwSSBRops[DD_ROP_SPACE];  /* ROPS supported for System->System blts */
43235c4bbdfSmrg        DWORD dwMaxVideoPorts;  /* maximum number of usable video ports */
43335c4bbdfSmrg        DWORD dwCurrVideoPorts; /* current number of video ports used */
43435c4bbdfSmrg        DWORD dwSVBCaps2;       /* more driver specific capabilities for System->Vmem blts */
43535c4bbdfSmrg        DWORD dwNLVBCaps;       /* driver specific capabilities for non-local->local vidmem blts */
43635c4bbdfSmrg        DWORD dwNLVBCaps2;      /* more driver specific capabilities non-local->local vidmem blts */
43735c4bbdfSmrg        DWORD dwNLVBCKeyCaps;   /* driver color key capabilities for non-local->local vidmem blts */
43835c4bbdfSmrg        DWORD dwNLVBFXCaps;     /* driver FX capabilities for non-local->local blts */
43935c4bbdfSmrg        DWORD dwNLVBRops[DD_ROP_SPACE]; /* ROPS supported for non-local->local blts */
44035c4bbdfSmrg        DDSCAPS2 ddsCaps;       /* surface capabilities */
44135c4bbdfSmrg    } DDCAPS_DX7, *LPDDCAPS_DX7;
44235c4bbdfSmrg
44335c4bbdfSmrg    typedef struct _DDCAPS_DX6 {        /* DirectX 6 version of caps struct */
44435c4bbdfSmrg        DWORD dwSize;           /* size of the DDDRIVERCAPS structure */
44535c4bbdfSmrg        DWORD dwCaps;           /* driver specific capabilities */
446ed6184dfSmrg        DWORD dwCaps2;          /* more driver specific capabilities */
44735c4bbdfSmrg        DWORD dwCKeyCaps;       /* color key capabilities of the surface */
448ed6184dfSmrg        DWORD dwFXCaps;         /* driver specific stretching and effects capabilities */
44935c4bbdfSmrg        DWORD dwFXAlphaCaps;    /* alpha driver specific capabilities */
45035c4bbdfSmrg        DWORD dwPalCaps;        /* palette capabilities */
45135c4bbdfSmrg        DWORD dwSVCaps;         /* stereo vision capabilities */
45235c4bbdfSmrg        DWORD dwAlphaBltConstBitDepths; /* DDBD_2,4,8 */
45335c4bbdfSmrg        DWORD dwAlphaBltPixelBitDepths; /* DDBD_1,2,4,8 */
45435c4bbdfSmrg        DWORD dwAlphaBltSurfaceBitDepths;       /* DDBD_1,2,4,8 */
45535c4bbdfSmrg        DWORD dwAlphaOverlayConstBitDepths;     /* DDBD_2,4,8 */
45635c4bbdfSmrg        DWORD dwAlphaOverlayPixelBitDepths;     /* DDBD_1,2,4,8 */
45735c4bbdfSmrg        DWORD dwAlphaOverlaySurfaceBitDepths;   /* DDBD_1,2,4,8 */
45835c4bbdfSmrg        DWORD dwZBufferBitDepths;       /* DDBD_8,16,24,32 */
45935c4bbdfSmrg        DWORD dwVidMemTotal;    /* total amount of video memory */
46035c4bbdfSmrg        DWORD dwVidMemFree;     /* amount of free video memory */
46135c4bbdfSmrg        DWORD dwMaxVisibleOverlays;     /* maximum number of visible overlays */
46235c4bbdfSmrg        DWORD dwCurrVisibleOverlays;    /* current number of visible overlays */
46335c4bbdfSmrg        DWORD dwNumFourCCCodes; /* number of four cc codes */
46435c4bbdfSmrg        DWORD dwAlignBoundarySrc;       /* source rectangle alignment */
46535c4bbdfSmrg        DWORD dwAlignSizeSrc;   /* source rectangle byte size */
46635c4bbdfSmrg        DWORD dwAlignBoundaryDest;      /* dest rectangle alignment */
46735c4bbdfSmrg        DWORD dwAlignSizeDest;  /* dest rectangle byte size */
46835c4bbdfSmrg        DWORD dwAlignStrideAlign;       /* stride alignment */
46935c4bbdfSmrg        DWORD dwRops[DD_ROP_SPACE];     /* ROPS supported */
470ed6184dfSmrg        DDSCAPS ddsOldCaps;     /* old DDSCAPS - superseded for DirectX6+ */
47135c4bbdfSmrg        DWORD dwMinOverlayStretch;      /* minimum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
47235c4bbdfSmrg        DWORD dwMaxOverlayStretch;      /* maximum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
47335c4bbdfSmrg        DWORD dwMinLiveVideoStretch;    /* minimum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
47435c4bbdfSmrg        DWORD dwMaxLiveVideoStretch;    /* maximum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
47535c4bbdfSmrg        DWORD dwMinHwCodecStretch;      /* minimum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
47635c4bbdfSmrg        DWORD dwMaxHwCodecStretch;      /* maximum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
47735c4bbdfSmrg        DWORD dwReserved1;
47835c4bbdfSmrg        DWORD dwReserved2;
47935c4bbdfSmrg        DWORD dwReserved3;
48035c4bbdfSmrg        DWORD dwSVBCaps;        /* driver specific capabilities for System->Vmem blts */
48135c4bbdfSmrg        DWORD dwSVBCKeyCaps;    /* driver color key capabilities for System->Vmem blts */
48235c4bbdfSmrg        DWORD dwSVBFXCaps;      /* driver FX capabilities for System->Vmem blts */
48335c4bbdfSmrg        DWORD dwSVBRops[DD_ROP_SPACE];  /* ROPS supported for System->Vmem blts */
48435c4bbdfSmrg        DWORD dwVSBCaps;        /* driver specific capabilities for Vmem->System blts */
48535c4bbdfSmrg        DWORD dwVSBCKeyCaps;    /* driver color key capabilities for Vmem->System blts */
48635c4bbdfSmrg        DWORD dwVSBFXCaps;      /* driver FX capabilities for Vmem->System blts */
48735c4bbdfSmrg        DWORD dwVSBRops[DD_ROP_SPACE];  /* ROPS supported for Vmem->System blts */
48835c4bbdfSmrg        DWORD dwSSBCaps;        /* driver specific capabilities for System->System blts */
48935c4bbdfSmrg        DWORD dwSSBCKeyCaps;    /* driver color key capabilities for System->System blts */
49035c4bbdfSmrg        DWORD dwSSBFXCaps;      /* driver FX capabilities for System->System blts */
49135c4bbdfSmrg        DWORD dwSSBRops[DD_ROP_SPACE];  /* ROPS supported for System->System blts */
49235c4bbdfSmrg        DWORD dwMaxVideoPorts;  /* maximum number of usable video ports */
49335c4bbdfSmrg        DWORD dwCurrVideoPorts; /* current number of video ports used */
49435c4bbdfSmrg        DWORD dwSVBCaps2;       /* more driver specific capabilities for System->Vmem blts */
49535c4bbdfSmrg        DWORD dwNLVBCaps;       /* driver specific capabilities for non-local->local vidmem blts */
49635c4bbdfSmrg        DWORD dwNLVBCaps2;      /* more driver specific capabilities non-local->local vidmem blts */
49735c4bbdfSmrg        DWORD dwNLVBCKeyCaps;   /* driver color key capabilities for non-local->local vidmem blts */
49835c4bbdfSmrg        DWORD dwNLVBFXCaps;     /* driver FX capabilities for non-local->local blts */
49935c4bbdfSmrg        DWORD dwNLVBRops[DD_ROP_SPACE]; /* ROPS supported for non-local->local blts */
50035c4bbdfSmrg        /* and one new member for DirectX 6 */
50135c4bbdfSmrg        DDSCAPS2 ddsCaps;       /* surface capabilities */
50235c4bbdfSmrg    } DDCAPS_DX6, *LPDDCAPS_DX6;
50335c4bbdfSmrg
50435c4bbdfSmrg    typedef struct _DDCAPS_DX5 {        /* DirectX5 version of caps struct */
50535c4bbdfSmrg        DWORD dwSize;           /* size of the DDDRIVERCAPS structure */
50635c4bbdfSmrg        DWORD dwCaps;           /* driver specific capabilities */
507ed6184dfSmrg        DWORD dwCaps2;          /* more driver specific capabilities */
50835c4bbdfSmrg        DWORD dwCKeyCaps;       /* color key capabilities of the surface */
509ed6184dfSmrg        DWORD dwFXCaps;         /* driver specific stretching and effects capabilities */
51035c4bbdfSmrg        DWORD dwFXAlphaCaps;    /* alpha driver specific capabilities */
51135c4bbdfSmrg        DWORD dwPalCaps;        /* palette capabilities */
51235c4bbdfSmrg        DWORD dwSVCaps;         /* stereo vision capabilities */
51335c4bbdfSmrg        DWORD dwAlphaBltConstBitDepths; /* DDBD_2,4,8 */
51435c4bbdfSmrg        DWORD dwAlphaBltPixelBitDepths; /* DDBD_1,2,4,8 */
51535c4bbdfSmrg        DWORD dwAlphaBltSurfaceBitDepths;       /* DDBD_1,2,4,8 */
51635c4bbdfSmrg        DWORD dwAlphaOverlayConstBitDepths;     /* DDBD_2,4,8 */
51735c4bbdfSmrg        DWORD dwAlphaOverlayPixelBitDepths;     /* DDBD_1,2,4,8 */
51835c4bbdfSmrg        DWORD dwAlphaOverlaySurfaceBitDepths;   /* DDBD_1,2,4,8 */
51935c4bbdfSmrg        DWORD dwZBufferBitDepths;       /* DDBD_8,16,24,32 */
52035c4bbdfSmrg        DWORD dwVidMemTotal;    /* total amount of video memory */
52135c4bbdfSmrg        DWORD dwVidMemFree;     /* amount of free video memory */
52235c4bbdfSmrg        DWORD dwMaxVisibleOverlays;     /* maximum number of visible overlays */
52335c4bbdfSmrg        DWORD dwCurrVisibleOverlays;    /* current number of visible overlays */
52435c4bbdfSmrg        DWORD dwNumFourCCCodes; /* number of four cc codes */
52535c4bbdfSmrg        DWORD dwAlignBoundarySrc;       /* source rectangle alignment */
52635c4bbdfSmrg        DWORD dwAlignSizeSrc;   /* source rectangle byte size */
52735c4bbdfSmrg        DWORD dwAlignBoundaryDest;      /* dest rectangle alignment */
52835c4bbdfSmrg        DWORD dwAlignSizeDest;  /* dest rectangle byte size */
52935c4bbdfSmrg        DWORD dwAlignStrideAlign;       /* stride alignment */
53035c4bbdfSmrg        DWORD dwRops[DD_ROP_SPACE];     /* ROPS supported */
53135c4bbdfSmrg        DDSCAPS ddsCaps;        /* DDSCAPS structure has all the general capabilities */
53235c4bbdfSmrg        DWORD dwMinOverlayStretch;      /* minimum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
53335c4bbdfSmrg        DWORD dwMaxOverlayStretch;      /* maximum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
53435c4bbdfSmrg        DWORD dwMinLiveVideoStretch;    /* minimum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
53535c4bbdfSmrg        DWORD dwMaxLiveVideoStretch;    /* maximum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
53635c4bbdfSmrg        DWORD dwMinHwCodecStretch;      /* minimum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
53735c4bbdfSmrg        DWORD dwMaxHwCodecStretch;      /* maximum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
53835c4bbdfSmrg        DWORD dwReserved1;
53935c4bbdfSmrg        DWORD dwReserved2;
54035c4bbdfSmrg        DWORD dwReserved3;
54135c4bbdfSmrg        DWORD dwSVBCaps;        /* driver specific capabilities for System->Vmem blts */
54235c4bbdfSmrg        DWORD dwSVBCKeyCaps;    /* driver color key capabilities for System->Vmem blts */
54335c4bbdfSmrg        DWORD dwSVBFXCaps;      /* driver FX capabilities for System->Vmem blts */
54435c4bbdfSmrg        DWORD dwSVBRops[DD_ROP_SPACE];  /* ROPS supported for System->Vmem blts */
54535c4bbdfSmrg        DWORD dwVSBCaps;        /* driver specific capabilities for Vmem->System blts */
54635c4bbdfSmrg        DWORD dwVSBCKeyCaps;    /* driver color key capabilities for Vmem->System blts */
54735c4bbdfSmrg        DWORD dwVSBFXCaps;      /* driver FX capabilities for Vmem->System blts */
54835c4bbdfSmrg        DWORD dwVSBRops[DD_ROP_SPACE];  /* ROPS supported for Vmem->System blts */
54935c4bbdfSmrg        DWORD dwSSBCaps;        /* driver specific capabilities for System->System blts */
55035c4bbdfSmrg        DWORD dwSSBCKeyCaps;    /* driver color key capabilities for System->System blts */
55135c4bbdfSmrg        DWORD dwSSBFXCaps;      /* driver FX capabilities for System->System blts */
55235c4bbdfSmrg        DWORD dwSSBRops[DD_ROP_SPACE];  /* ROPS supported for System->System blts */
55335c4bbdfSmrg        /* the following are the new DirectX 5 members */
55435c4bbdfSmrg        DWORD dwMaxVideoPorts;  /* maximum number of usable video ports */
55535c4bbdfSmrg        DWORD dwCurrVideoPorts; /* current number of video ports used */
55635c4bbdfSmrg        DWORD dwSVBCaps2;       /* more driver specific capabilities for System->Vmem blts */
55735c4bbdfSmrg        DWORD dwNLVBCaps;       /* driver specific capabilities for non-local->local vidmem blts */
55835c4bbdfSmrg        DWORD dwNLVBCaps2;      /* more driver specific capabilities non-local->local vidmem blts */
55935c4bbdfSmrg        DWORD dwNLVBCKeyCaps;   /* driver color key capabilities for non-local->local vidmem blts */
56035c4bbdfSmrg        DWORD dwNLVBFXCaps;     /* driver FX capabilities for non-local->local blts */
56135c4bbdfSmrg        DWORD dwNLVBRops[DD_ROP_SPACE]; /* ROPS supported for non-local->local blts */
56235c4bbdfSmrg    } DDCAPS_DX5, *LPDDCAPS_DX5;
56335c4bbdfSmrg
56435c4bbdfSmrg    typedef struct _DDCAPS_DX3 {        /* DirectX3 version of caps struct */
56535c4bbdfSmrg        DWORD dwSize;           /* size of the DDDRIVERCAPS structure */
56635c4bbdfSmrg        DWORD dwCaps;           /* driver specific capabilities */
567ed6184dfSmrg        DWORD dwCaps2;          /* more driver specific capabilities */
56835c4bbdfSmrg        DWORD dwCKeyCaps;       /* color key capabilities of the surface */
569ed6184dfSmrg        DWORD dwFXCaps;         /* driver specific stretching and effects capabilities */
57035c4bbdfSmrg        DWORD dwFXAlphaCaps;    /* alpha driver specific capabilities */
57135c4bbdfSmrg        DWORD dwPalCaps;        /* palette capabilities */
57235c4bbdfSmrg        DWORD dwSVCaps;         /* stereo vision capabilities */
57335c4bbdfSmrg        DWORD dwAlphaBltConstBitDepths; /* DDBD_2,4,8 */
57435c4bbdfSmrg        DWORD dwAlphaBltPixelBitDepths; /* DDBD_1,2,4,8 */
57535c4bbdfSmrg        DWORD dwAlphaBltSurfaceBitDepths;       /* DDBD_1,2,4,8 */
57635c4bbdfSmrg        DWORD dwAlphaOverlayConstBitDepths;     /* DDBD_2,4,8 */
57735c4bbdfSmrg        DWORD dwAlphaOverlayPixelBitDepths;     /* DDBD_1,2,4,8 */
57835c4bbdfSmrg        DWORD dwAlphaOverlaySurfaceBitDepths;   /* DDBD_1,2,4,8 */
57935c4bbdfSmrg        DWORD dwZBufferBitDepths;       /* DDBD_8,16,24,32 */
58035c4bbdfSmrg        DWORD dwVidMemTotal;    /* total amount of video memory */
58135c4bbdfSmrg        DWORD dwVidMemFree;     /* amount of free video memory */
58235c4bbdfSmrg        DWORD dwMaxVisibleOverlays;     /* maximum number of visible overlays */
58335c4bbdfSmrg        DWORD dwCurrVisibleOverlays;    /* current number of visible overlays */
58435c4bbdfSmrg        DWORD dwNumFourCCCodes; /* number of four cc codes */
58535c4bbdfSmrg        DWORD dwAlignBoundarySrc;       /* source rectangle alignment */
58635c4bbdfSmrg        DWORD dwAlignSizeSrc;   /* source rectangle byte size */
58735c4bbdfSmrg        DWORD dwAlignBoundaryDest;      /* dest rectangle alignment */
58835c4bbdfSmrg        DWORD dwAlignSizeDest;  /* dest rectangle byte size */
58935c4bbdfSmrg        DWORD dwAlignStrideAlign;       /* stride alignment */
59035c4bbdfSmrg        DWORD dwRops[DD_ROP_SPACE];     /* ROPS supported */
59135c4bbdfSmrg        DDSCAPS ddsCaps;        /* DDSCAPS structure has all the general capabilities */
59235c4bbdfSmrg        DWORD dwMinOverlayStretch;      /* minimum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
59335c4bbdfSmrg        DWORD dwMaxOverlayStretch;      /* maximum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
59435c4bbdfSmrg        DWORD dwMinLiveVideoStretch;    /* minimum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
59535c4bbdfSmrg        DWORD dwMaxLiveVideoStretch;    /* maximum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
59635c4bbdfSmrg        DWORD dwMinHwCodecStretch;      /* minimum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
59735c4bbdfSmrg        DWORD dwMaxHwCodecStretch;      /* maximum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
59835c4bbdfSmrg        DWORD dwReserved1;
59935c4bbdfSmrg        DWORD dwReserved2;
60035c4bbdfSmrg        DWORD dwReserved3;
60135c4bbdfSmrg        DWORD dwSVBCaps;        /* driver specific capabilities for System->Vmem blts */
60235c4bbdfSmrg        DWORD dwSVBCKeyCaps;    /* driver color key capabilities for System->Vmem blts */
60335c4bbdfSmrg        DWORD dwSVBFXCaps;      /* driver FX capabilities for System->Vmem blts */
60435c4bbdfSmrg        DWORD dwSVBRops[DD_ROP_SPACE];  /* ROPS supported for System->Vmem blts */
60535c4bbdfSmrg        DWORD dwVSBCaps;        /* driver specific capabilities for Vmem->System blts */
60635c4bbdfSmrg        DWORD dwVSBCKeyCaps;    /* driver color key capabilities for Vmem->System blts */
60735c4bbdfSmrg        DWORD dwVSBFXCaps;      /* driver FX capabilities for Vmem->System blts */
60835c4bbdfSmrg        DWORD dwVSBRops[DD_ROP_SPACE];  /* ROPS supported for Vmem->System blts */
60935c4bbdfSmrg        DWORD dwSSBCaps;        /* driver specific capabilities for System->System blts */
61035c4bbdfSmrg        DWORD dwSSBCKeyCaps;    /* driver color key capabilities for System->System blts */
61135c4bbdfSmrg        DWORD dwSSBFXCaps;      /* driver FX capabilities for System->System blts */
61235c4bbdfSmrg        DWORD dwSSBRops[DD_ROP_SPACE];  /* ROPS supported for System->System blts */
61335c4bbdfSmrg        DWORD dwReserved4;
61435c4bbdfSmrg        DWORD dwReserved5;
61535c4bbdfSmrg        DWORD dwReserved6;
61635c4bbdfSmrg    } DDCAPS_DX3, *LPDDCAPS_DX3;
61705b261ecSmrg
61805b261ecSmrg/* set caps struct according to DIRECTDRAW_VERSION */
61905b261ecSmrg
62005b261ecSmrg#if DIRECTDRAW_VERSION <= 0x300
62135c4bbdfSmrg    typedef DDCAPS_DX3 DDCAPS;
62205b261ecSmrg#elif DIRECTDRAW_VERSION <= 0x500
62335c4bbdfSmrg    typedef DDCAPS_DX5 DDCAPS;
62405b261ecSmrg#elif DIRECTDRAW_VERSION <= 0x600
62535c4bbdfSmrg    typedef DDCAPS_DX6 DDCAPS;
62605b261ecSmrg#else
62735c4bbdfSmrg    typedef DDCAPS_DX7 DDCAPS;
62805b261ecSmrg#endif
62905b261ecSmrg
63035c4bbdfSmrg    typedef DDCAPS *LPDDCAPS;
63105b261ecSmrg
63205b261ecSmrg/* DDCAPS.dwCaps */
63305b261ecSmrg#define DDCAPS_3D			0x00000001
63405b261ecSmrg#define DDCAPS_ALIGNBOUNDARYDEST	0x00000002
63505b261ecSmrg#define DDCAPS_ALIGNSIZEDEST		0x00000004
63605b261ecSmrg#define DDCAPS_ALIGNBOUNDARYSRC		0x00000008
63705b261ecSmrg#define DDCAPS_ALIGNSIZESRC		0x00000010
63805b261ecSmrg#define DDCAPS_ALIGNSTRIDE		0x00000020
63905b261ecSmrg#define DDCAPS_BLT			0x00000040
64005b261ecSmrg#define DDCAPS_BLTQUEUE			0x00000080
64105b261ecSmrg#define DDCAPS_BLTFOURCC		0x00000100
64205b261ecSmrg#define DDCAPS_BLTSTRETCH		0x00000200
64305b261ecSmrg#define DDCAPS_GDI			0x00000400
64405b261ecSmrg#define DDCAPS_OVERLAY			0x00000800
64505b261ecSmrg#define DDCAPS_OVERLAYCANTCLIP		0x00001000
64605b261ecSmrg#define DDCAPS_OVERLAYFOURCC		0x00002000
64705b261ecSmrg#define DDCAPS_OVERLAYSTRETCH		0x00004000
64805b261ecSmrg#define DDCAPS_PALETTE			0x00008000
64905b261ecSmrg#define DDCAPS_PALETTEVSYNC		0x00010000
65005b261ecSmrg#define DDCAPS_READSCANLINE		0x00020000
65105b261ecSmrg#define DDCAPS_STEREOVIEW		0x00040000
65205b261ecSmrg#define DDCAPS_VBI			0x00080000
65305b261ecSmrg#define DDCAPS_ZBLTS			0x00100000
65405b261ecSmrg#define DDCAPS_ZOVERLAYS		0x00200000
65505b261ecSmrg#define DDCAPS_COLORKEY			0x00400000
65605b261ecSmrg#define DDCAPS_ALPHA			0x00800000
65705b261ecSmrg#define DDCAPS_COLORKEYHWASSIST		0x01000000
65805b261ecSmrg#define DDCAPS_NOHARDWARE		0x02000000
65905b261ecSmrg#define DDCAPS_BLTCOLORFILL		0x04000000
66005b261ecSmrg#define DDCAPS_BANKSWITCHED		0x08000000
66105b261ecSmrg#define DDCAPS_BLTDEPTHFILL		0x10000000
66205b261ecSmrg#define DDCAPS_CANCLIP			0x20000000
66305b261ecSmrg#define DDCAPS_CANCLIPSTRETCHED		0x40000000
66405b261ecSmrg#define DDCAPS_CANBLTSYSMEM		0x80000000
66505b261ecSmrg
66605b261ecSmrg/* DDCAPS.dwCaps2 */
66705b261ecSmrg#define DDCAPS2_CERTIFIED		0x00000001
66805b261ecSmrg#define DDCAPS2_NO2DDURING3DSCENE       0x00000002
66905b261ecSmrg#define DDCAPS2_VIDEOPORT		0x00000004
67005b261ecSmrg#define DDCAPS2_AUTOFLIPOVERLAY		0x00000008
67105b261ecSmrg#define DDCAPS2_CANBOBINTERLEAVED	0x00000010
67205b261ecSmrg#define DDCAPS2_CANBOBNONINTERLEAVED	0x00000020
67305b261ecSmrg#define DDCAPS2_COLORCONTROLOVERLAY	0x00000040
67405b261ecSmrg#define DDCAPS2_COLORCONTROLPRIMARY	0x00000080
67505b261ecSmrg#define DDCAPS2_CANDROPZ16BIT		0x00000100
67605b261ecSmrg#define DDCAPS2_NONLOCALVIDMEM		0x00000200
67705b261ecSmrg#define DDCAPS2_NONLOCALVIDMEMCAPS	0x00000400
67805b261ecSmrg#define DDCAPS2_NOPAGELOCKREQUIRED	0x00000800
67905b261ecSmrg#define DDCAPS2_WIDESURFACES		0x00001000
68005b261ecSmrg#define DDCAPS2_CANFLIPODDEVEN		0x00002000
68105b261ecSmrg#define DDCAPS2_CANBOBHARDWARE		0x00004000
68205b261ecSmrg#define DDCAPS2_COPYFOURCC              0x00008000
68305b261ecSmrg#define DDCAPS2_PRIMARYGAMMA            0x00020000
68405b261ecSmrg#define DDCAPS2_CANRENDERWINDOWED       0x00080000
68505b261ecSmrg#define DDCAPS2_CANCALIBRATEGAMMA       0x00100000
68605b261ecSmrg#define DDCAPS2_FLIPINTERVAL            0x00200000
68705b261ecSmrg#define DDCAPS2_FLIPNOVSYNC             0x00400000
68805b261ecSmrg#define DDCAPS2_CANMANAGETEXTURE        0x00800000
68905b261ecSmrg#define DDCAPS2_TEXMANINNONLOCALVIDMEM  0x01000000
69005b261ecSmrg#define DDCAPS2_STEREO                  0x02000000
69105b261ecSmrg#define DDCAPS2_SYSTONONLOCAL_AS_SYSTOLOCAL   0x04000000
69205b261ecSmrg
69305b261ecSmrg/* Set/Get Colour Key Flags */
69435c4bbdfSmrg#define DDCKEY_COLORSPACE  0x00000001   /* Struct is single colour space */
69535c4bbdfSmrg#define DDCKEY_DESTBLT     0x00000002   /* To be used as dest for blt */
69635c4bbdfSmrg#define DDCKEY_DESTOVERLAY 0x00000004   /* To be used as dest for CK overlays */
69735c4bbdfSmrg#define DDCKEY_SRCBLT      0x00000008   /* To be used as src for blt */
69835c4bbdfSmrg#define DDCKEY_SRCOVERLAY  0x00000010   /* To be used as src for CK overlays */
69935c4bbdfSmrg
70035c4bbdfSmrg    typedef struct _DDCOLORKEY {
70135c4bbdfSmrg        DWORD dwColorSpaceLowValue;     /* low boundary of color space that is to
70235c4bbdfSmrg                                         * be treated as Color Key, inclusive
70335c4bbdfSmrg                                         */
70435c4bbdfSmrg        DWORD dwColorSpaceHighValue;    /* high boundary of color space that is
70535c4bbdfSmrg                                         * to be treated as Color Key, inclusive
70635c4bbdfSmrg                                         */
70735c4bbdfSmrg    } DDCOLORKEY, *LPDDCOLORKEY;
70805b261ecSmrg
70905b261ecSmrg/* ddCKEYCAPS bits */
71005b261ecSmrg#define DDCKEYCAPS_DESTBLT			0x00000001
71105b261ecSmrg#define DDCKEYCAPS_DESTBLTCLRSPACE		0x00000002
71205b261ecSmrg#define DDCKEYCAPS_DESTBLTCLRSPACEYUV		0x00000004
71305b261ecSmrg#define DDCKEYCAPS_DESTBLTYUV			0x00000008
71405b261ecSmrg#define DDCKEYCAPS_DESTOVERLAY			0x00000010
71505b261ecSmrg#define DDCKEYCAPS_DESTOVERLAYCLRSPACE		0x00000020
71605b261ecSmrg#define DDCKEYCAPS_DESTOVERLAYCLRSPACEYUV	0x00000040
71705b261ecSmrg#define DDCKEYCAPS_DESTOVERLAYONEACTIVE		0x00000080
71805b261ecSmrg#define DDCKEYCAPS_DESTOVERLAYYUV		0x00000100
71905b261ecSmrg#define DDCKEYCAPS_SRCBLT			0x00000200
72005b261ecSmrg#define DDCKEYCAPS_SRCBLTCLRSPACE		0x00000400
72105b261ecSmrg#define DDCKEYCAPS_SRCBLTCLRSPACEYUV		0x00000800
72205b261ecSmrg#define DDCKEYCAPS_SRCBLTYUV			0x00001000
72305b261ecSmrg#define DDCKEYCAPS_SRCOVERLAY			0x00002000
72405b261ecSmrg#define DDCKEYCAPS_SRCOVERLAYCLRSPACE		0x00004000
72505b261ecSmrg#define DDCKEYCAPS_SRCOVERLAYCLRSPACEYUV	0x00008000
72605b261ecSmrg#define DDCKEYCAPS_SRCOVERLAYONEACTIVE		0x00010000
72705b261ecSmrg#define DDCKEYCAPS_SRCOVERLAYYUV		0x00020000
72805b261ecSmrg#define DDCKEYCAPS_NOCOSTOVERLAY		0x00040000
72905b261ecSmrg
73035c4bbdfSmrg    typedef struct _DDPIXELFORMAT {
73135c4bbdfSmrg        DWORD dwSize;           /* 0: size of structure */
73235c4bbdfSmrg        DWORD dwFlags;          /* 4: pixel format flags */
73335c4bbdfSmrg        DWORD dwFourCC;         /* 8: (FOURCC code) */
73435c4bbdfSmrg        union {
73535c4bbdfSmrg            DWORD dwRGBBitCount;        /* C: how many bits per pixel */
73635c4bbdfSmrg            DWORD dwYUVBitCount;        /* C: how many bits per pixel */
73735c4bbdfSmrg            DWORD dwZBufferBitDepth;    /* C: how many bits for z buffers */
73835c4bbdfSmrg            DWORD dwAlphaBitDepth;      /* C: how many bits for alpha channels */
73935c4bbdfSmrg            DWORD dwLuminanceBitCount;
74035c4bbdfSmrg            DWORD dwBumpBitCount;
74135c4bbdfSmrg        } DUMMYUNIONNAME1;
74235c4bbdfSmrg        union {
74335c4bbdfSmrg            DWORD dwRBitMask;   /* 10: mask for red bit */
74435c4bbdfSmrg            DWORD dwYBitMask;   /* 10: mask for Y bits */
74535c4bbdfSmrg            DWORD dwStencilBitDepth;
74635c4bbdfSmrg            DWORD dwLuminanceBitMask;
74735c4bbdfSmrg            DWORD dwBumpDuBitMask;
74835c4bbdfSmrg        } DUMMYUNIONNAME2;
74935c4bbdfSmrg        union {
75035c4bbdfSmrg            DWORD dwGBitMask;   /* 14: mask for green bits */
75135c4bbdfSmrg            DWORD dwUBitMask;   /* 14: mask for U bits */
75235c4bbdfSmrg            DWORD dwZBitMask;
75335c4bbdfSmrg            DWORD dwBumpDvBitMask;
75435c4bbdfSmrg        } DUMMYUNIONNAME3;
75535c4bbdfSmrg        union {
75635c4bbdfSmrg            DWORD dwBBitMask;   /* 18: mask for blue bits */
75735c4bbdfSmrg            DWORD dwVBitMask;   /* 18: mask for V bits */
75835c4bbdfSmrg            DWORD dwStencilBitMask;
75935c4bbdfSmrg            DWORD dwBumpLuminanceBitMask;
76035c4bbdfSmrg        } DUMMYUNIONNAME4;
76135c4bbdfSmrg        union {
76235c4bbdfSmrg            DWORD dwRGBAlphaBitMask;    /* 1C: mask for alpha channel */
76335c4bbdfSmrg            DWORD dwYUVAlphaBitMask;    /* 1C: mask for alpha channel */
76435c4bbdfSmrg            DWORD dwLuminanceAlphaBitMask;
76535c4bbdfSmrg            DWORD dwRGBZBitMask;        /* 1C: mask for Z channel */
76635c4bbdfSmrg            DWORD dwYUVZBitMask;        /* 1C: mask for Z channel */
76735c4bbdfSmrg        } DUMMYUNIONNAME5;
76835c4bbdfSmrg        /* 20: next structure */
76935c4bbdfSmrg    } DDPIXELFORMAT, *LPDDPIXELFORMAT;
77005b261ecSmrg
77105b261ecSmrg/* DDCAPS.dwFXCaps */
77205b261ecSmrg#define DDFXCAPS_BLTALPHA               0x00000001
77305b261ecSmrg#define DDFXCAPS_OVERLAYALPHA           0x00000004
77405b261ecSmrg#define DDFXCAPS_BLTARITHSTRETCHYN	0x00000010
77505b261ecSmrg#define DDFXCAPS_BLTARITHSTRETCHY	0x00000020
77605b261ecSmrg#define DDFXCAPS_BLTMIRRORLEFTRIGHT	0x00000040
77705b261ecSmrg#define DDFXCAPS_BLTMIRRORUPDOWN	0x00000080
77805b261ecSmrg#define DDFXCAPS_BLTROTATION		0x00000100
77905b261ecSmrg#define DDFXCAPS_BLTROTATION90		0x00000200
78005b261ecSmrg#define DDFXCAPS_BLTSHRINKX		0x00000400
78105b261ecSmrg#define DDFXCAPS_BLTSHRINKXN		0x00000800
78205b261ecSmrg#define DDFXCAPS_BLTSHRINKY		0x00001000
78305b261ecSmrg#define DDFXCAPS_BLTSHRINKYN		0x00002000
78405b261ecSmrg#define DDFXCAPS_BLTSTRETCHX		0x00004000
78505b261ecSmrg#define DDFXCAPS_BLTSTRETCHXN		0x00008000
78605b261ecSmrg#define DDFXCAPS_BLTSTRETCHY		0x00010000
78705b261ecSmrg#define DDFXCAPS_BLTSTRETCHYN		0x00020000
78805b261ecSmrg#define DDFXCAPS_OVERLAYARITHSTRETCHY	0x00040000
78905b261ecSmrg#define DDFXCAPS_OVERLAYARITHSTRETCHYN	0x00000008
79005b261ecSmrg#define DDFXCAPS_OVERLAYSHRINKX		0x00080000
79105b261ecSmrg#define DDFXCAPS_OVERLAYSHRINKXN	0x00100000
79205b261ecSmrg#define DDFXCAPS_OVERLAYSHRINKY		0x00200000
79305b261ecSmrg#define DDFXCAPS_OVERLAYSHRINKYN	0x00400000
79405b261ecSmrg#define DDFXCAPS_OVERLAYSTRETCHX	0x00800000
79505b261ecSmrg#define DDFXCAPS_OVERLAYSTRETCHXN	0x01000000
79605b261ecSmrg#define DDFXCAPS_OVERLAYSTRETCHY	0x02000000
79705b261ecSmrg#define DDFXCAPS_OVERLAYSTRETCHYN	0x04000000
79805b261ecSmrg#define DDFXCAPS_OVERLAYMIRRORLEFTRIGHT	0x08000000
79905b261ecSmrg#define DDFXCAPS_OVERLAYMIRRORUPDOWN	0x10000000
80005b261ecSmrg
80105b261ecSmrg#define DDFXCAPS_OVERLAYFILTER          DDFXCAPS_OVERLAYARITHSTRETCHY
80205b261ecSmrg
80305b261ecSmrg/* DDCAPS.dwFXAlphaCaps */
80405b261ecSmrg#define DDFXALPHACAPS_BLTALPHAEDGEBLEND		0x00000001
80505b261ecSmrg#define DDFXALPHACAPS_BLTALPHAPIXELS		0x00000002
80605b261ecSmrg#define DDFXALPHACAPS_BLTALPHAPIXELSNEG		0x00000004
80705b261ecSmrg#define DDFXALPHACAPS_BLTALPHASURFACES		0x00000008
80805b261ecSmrg#define DDFXALPHACAPS_BLTALPHASURFACESNEG	0x00000010
80905b261ecSmrg#define DDFXALPHACAPS_OVERLAYALPHAEDGEBLEND	0x00000020
81005b261ecSmrg#define DDFXALPHACAPS_OVERLAYALPHAPIXELS	0x00000040
81105b261ecSmrg#define DDFXALPHACAPS_OVERLAYALPHAPIXELSNEG	0x00000080
81205b261ecSmrg#define DDFXALPHACAPS_OVERLAYALPHASURFACES	0x00000100
81305b261ecSmrg#define DDFXALPHACAPS_OVERLAYALPHASURFACESNEG	0x00000200
81405b261ecSmrg
81505b261ecSmrg/* DDCAPS.dwPalCaps */
81605b261ecSmrg#define DDPCAPS_4BIT			0x00000001
81705b261ecSmrg#define DDPCAPS_8BITENTRIES		0x00000002
81805b261ecSmrg#define DDPCAPS_8BIT			0x00000004
81905b261ecSmrg#define DDPCAPS_INITIALIZE		0x00000008
82005b261ecSmrg#define DDPCAPS_PRIMARYSURFACE		0x00000010
82105b261ecSmrg#define DDPCAPS_PRIMARYSURFACELEFT	0x00000020
82205b261ecSmrg#define DDPCAPS_ALLOW256		0x00000040
82305b261ecSmrg#define DDPCAPS_VSYNC			0x00000080
82405b261ecSmrg#define DDPCAPS_1BIT			0x00000100
82505b261ecSmrg#define DDPCAPS_2BIT			0x00000200
82605b261ecSmrg#define DDPCAPS_ALPHA                   0x00000400
82705b261ecSmrg
82805b261ecSmrg/* DDCAPS.dwSVCaps */
82905b261ecSmrg/* the first 4 of these are now obsolete */
830ed6184dfSmrg#if DIRECTDRAW_VERSION >= 0x700 /* FIXME: I'm not sure when this switch occurred */
83105b261ecSmrg#define DDSVCAPS_RESERVED1		0x00000001
83205b261ecSmrg#define DDSVCAPS_RESERVED2		0x00000002
83305b261ecSmrg#define DDSVCAPS_RESERVED3		0x00000004
83405b261ecSmrg#define DDSVCAPS_RESERVED4		0x00000008
83505b261ecSmrg#else
83605b261ecSmrg#define DDSVCAPS_ENIGMA			0x00000001
83705b261ecSmrg#define DDSVCAPS_FLICKER		0x00000002
83805b261ecSmrg#define DDSVCAPS_REDBLUE		0x00000004
83905b261ecSmrg#define DDSVCAPS_SPLIT			0x00000008
84005b261ecSmrg#endif
84105b261ecSmrg#define DDSVCAPS_STEREOSEQUENTIAL       0x00000010
84205b261ecSmrg
84305b261ecSmrg/* BitDepths */
84405b261ecSmrg#define DDBD_1				0x00004000
84505b261ecSmrg#define DDBD_2				0x00002000
84605b261ecSmrg#define DDBD_4				0x00001000
84705b261ecSmrg#define DDBD_8				0x00000800
84805b261ecSmrg#define DDBD_16				0x00000400
84905b261ecSmrg#define DDBD_24				0x00000200
85005b261ecSmrg#define DDBD_32				0x00000100
85105b261ecSmrg
85205b261ecSmrg/* DDOVERLAYFX.dwDDFX */
85305b261ecSmrg#define DDOVERFX_ARITHSTRETCHY		0x00000001
85405b261ecSmrg#define DDOVERFX_MIRRORLEFTRIGHT	0x00000002
85505b261ecSmrg#define DDOVERFX_MIRRORUPDOWN		0x00000004
85605b261ecSmrg
85705b261ecSmrg/* UpdateOverlay flags */
85805b261ecSmrg#define DDOVER_ALPHADEST                        0x00000001
85905b261ecSmrg#define DDOVER_ALPHADESTCONSTOVERRIDE           0x00000002
86005b261ecSmrg#define DDOVER_ALPHADESTNEG                     0x00000004
86105b261ecSmrg#define DDOVER_ALPHADESTSURFACEOVERRIDE         0x00000008
86205b261ecSmrg#define DDOVER_ALPHAEDGEBLEND                   0x00000010
86305b261ecSmrg#define DDOVER_ALPHASRC                         0x00000020
86405b261ecSmrg#define DDOVER_ALPHASRCCONSTOVERRIDE            0x00000040
86505b261ecSmrg#define DDOVER_ALPHASRCNEG                      0x00000080
86605b261ecSmrg#define DDOVER_ALPHASRCSURFACEOVERRIDE          0x00000100
86705b261ecSmrg#define DDOVER_HIDE                             0x00000200
86805b261ecSmrg#define DDOVER_KEYDEST                          0x00000400
86905b261ecSmrg#define DDOVER_KEYDESTOVERRIDE                  0x00000800
87005b261ecSmrg#define DDOVER_KEYSRC                           0x00001000
87105b261ecSmrg#define DDOVER_KEYSRCOVERRIDE                   0x00002000
87205b261ecSmrg#define DDOVER_SHOW                             0x00004000
87305b261ecSmrg#define DDOVER_ADDDIRTYRECT                     0x00008000
87405b261ecSmrg#define DDOVER_REFRESHDIRTYRECTS                0x00010000
87505b261ecSmrg#define DDOVER_REFRESHALL                       0x00020000
87605b261ecSmrg#define DDOVER_DDFX                             0x00080000
87705b261ecSmrg#define DDOVER_AUTOFLIP                         0x00100000
87805b261ecSmrg#define DDOVER_BOB                              0x00200000
87905b261ecSmrg#define DDOVER_OVERRIDEBOBWEAVE                 0x00400000
88005b261ecSmrg#define DDOVER_INTERLEAVED                      0x00800000
88105b261ecSmrg
88205b261ecSmrg/* DDCOLORKEY.dwFlags */
88305b261ecSmrg#define DDPF_ALPHAPIXELS		0x00000001
88405b261ecSmrg#define DDPF_ALPHA			0x00000002
88505b261ecSmrg#define DDPF_FOURCC			0x00000004
88605b261ecSmrg#define DDPF_PALETTEINDEXED4		0x00000008
88705b261ecSmrg#define DDPF_PALETTEINDEXEDTO8		0x00000010
88805b261ecSmrg#define DDPF_PALETTEINDEXED8		0x00000020
88905b261ecSmrg#define DDPF_RGB			0x00000040
89005b261ecSmrg#define DDPF_COMPRESSED			0x00000080
89105b261ecSmrg#define DDPF_RGBTOYUV			0x00000100
89205b261ecSmrg#define DDPF_YUV			0x00000200
89305b261ecSmrg#define DDPF_ZBUFFER			0x00000400
89405b261ecSmrg#define DDPF_PALETTEINDEXED1		0x00000800
89505b261ecSmrg#define DDPF_PALETTEINDEXED2		0x00001000
89605b261ecSmrg#define DDPF_ZPIXELS			0x00002000
89705b261ecSmrg#define DDPF_STENCILBUFFER              0x00004000
89805b261ecSmrg#define DDPF_ALPHAPREMULT               0x00008000
89905b261ecSmrg#define DDPF_LUMINANCE                  0x00020000
90005b261ecSmrg#define DDPF_BUMPLUMINANCE              0x00040000
90105b261ecSmrg#define DDPF_BUMPDUDV                   0x00080000
90205b261ecSmrg
90305b261ecSmrg/* SetCooperativeLevel dwFlags */
90405b261ecSmrg#define DDSCL_FULLSCREEN		0x00000001
90505b261ecSmrg#define DDSCL_ALLOWREBOOT		0x00000002
90605b261ecSmrg#define DDSCL_NOWINDOWCHANGES		0x00000004
90705b261ecSmrg#define DDSCL_NORMAL			0x00000008
90805b261ecSmrg#define DDSCL_EXCLUSIVE			0x00000010
90905b261ecSmrg#define DDSCL_ALLOWMODEX		0x00000040
91005b261ecSmrg#define DDSCL_SETFOCUSWINDOW		0x00000080
91105b261ecSmrg#define DDSCL_SETDEVICEWINDOW		0x00000100
91205b261ecSmrg#define DDSCL_CREATEDEVICEWINDOW	0x00000200
91305b261ecSmrg#define DDSCL_MULTITHREADED             0x00000400
91405b261ecSmrg#define DDSCL_FPUSETUP                  0x00000800
91505b261ecSmrg#define DDSCL_FPUPRESERVE               0x00001000
91605b261ecSmrg
91705b261ecSmrg/* DDSURFACEDESC.dwFlags */
91805b261ecSmrg#define	DDSD_CAPS		0x00000001
91905b261ecSmrg#define	DDSD_HEIGHT		0x00000002
92005b261ecSmrg#define	DDSD_WIDTH		0x00000004
92105b261ecSmrg#define	DDSD_PITCH		0x00000008
92205b261ecSmrg#define	DDSD_BACKBUFFERCOUNT	0x00000020
92305b261ecSmrg#define	DDSD_ZBUFFERBITDEPTH	0x00000040
92405b261ecSmrg#define	DDSD_ALPHABITDEPTH	0x00000080
92505b261ecSmrg#define	DDSD_LPSURFACE		0x00000800
92605b261ecSmrg#define	DDSD_PIXELFORMAT	0x00001000
92705b261ecSmrg#define	DDSD_CKDESTOVERLAY	0x00002000
92805b261ecSmrg#define	DDSD_CKDESTBLT		0x00004000
92905b261ecSmrg#define	DDSD_CKSRCOVERLAY	0x00008000
93005b261ecSmrg#define	DDSD_CKSRCBLT		0x00010000
93105b261ecSmrg#define	DDSD_MIPMAPCOUNT	0x00020000
93205b261ecSmrg#define	DDSD_REFRESHRATE	0x00040000
93305b261ecSmrg#define	DDSD_LINEARSIZE		0x00080000
93405b261ecSmrg#define DDSD_TEXTURESTAGE       0x00100000
93505b261ecSmrg#define DDSD_FVF                0x00200000
93605b261ecSmrg#define DDSD_SRCVBHANDLE        0x00400000
93705b261ecSmrg#define	DDSD_ALL		0x007ff9ee
93805b261ecSmrg
93905b261ecSmrg/* EnumSurfaces flags */
94005b261ecSmrg#define DDENUMSURFACES_ALL          0x00000001
94105b261ecSmrg#define DDENUMSURFACES_MATCH        0x00000002
94205b261ecSmrg#define DDENUMSURFACES_NOMATCH      0x00000004
94305b261ecSmrg#define DDENUMSURFACES_CANBECREATED 0x00000008
94405b261ecSmrg#define DDENUMSURFACES_DOESEXIST    0x00000010
94505b261ecSmrg
94605b261ecSmrg/* SetDisplayMode flags */
94705b261ecSmrg#define DDSDM_STANDARDVGAMODE	0x00000001
94805b261ecSmrg
94905b261ecSmrg/* EnumDisplayModes flags */
95005b261ecSmrg#define DDEDM_REFRESHRATES	0x00000001
95105b261ecSmrg#define DDEDM_STANDARDVGAMODES	0x00000002
95205b261ecSmrg
95305b261ecSmrg/* WaitForVerticalDisplay flags */
95405b261ecSmrg
95505b261ecSmrg#define DDWAITVB_BLOCKBEGIN		0x00000001
95605b261ecSmrg#define DDWAITVB_BLOCKBEGINEVENT	0x00000002
95705b261ecSmrg#define DDWAITVB_BLOCKEND		0x00000004
95805b261ecSmrg
95935c4bbdfSmrg    typedef struct _DDSURFACEDESC {
96035c4bbdfSmrg        DWORD dwSize;           /* 0: size of the DDSURFACEDESC structure */
96135c4bbdfSmrg        DWORD dwFlags;          /* 4: determines what fields are valid */
96235c4bbdfSmrg        DWORD dwHeight;         /* 8: height of surface to be created */
96335c4bbdfSmrg        DWORD dwWidth;          /* C: width of input surface */
96435c4bbdfSmrg        union {
96535c4bbdfSmrg            LONG lPitch;        /* 10: distance to start of next line (return value only) */
96635c4bbdfSmrg            DWORD dwLinearSize;
96735c4bbdfSmrg        } DUMMYUNIONNAME1;
96835c4bbdfSmrg        DWORD dwBackBufferCount;        /* 14: number of back buffers requested */
96935c4bbdfSmrg        union {
97035c4bbdfSmrg            DWORD dwMipMapCount;        /* 18:number of mip-map levels requested */
97135c4bbdfSmrg            DWORD dwZBufferBitDepth;    /*18: depth of Z buffer requested */
97235c4bbdfSmrg            DWORD dwRefreshRate;        /* 18:refresh rate (used when display mode is described) */
97335c4bbdfSmrg        } DUMMYUNIONNAME2;
97435c4bbdfSmrg        DWORD dwAlphaBitDepth;  /* 1C:depth of alpha buffer requested */
97535c4bbdfSmrg        DWORD dwReserved;       /* 20:reserved */
97635c4bbdfSmrg        LPVOID lpSurface;       /* 24:pointer to the associated surface memory */
97735c4bbdfSmrg        DDCOLORKEY ddckCKDestOverlay;   /* 28: CK for dest overlay use */
97835c4bbdfSmrg        DDCOLORKEY ddckCKDestBlt;       /* 30: CK for destination blt use */
97935c4bbdfSmrg        DDCOLORKEY ddckCKSrcOverlay;    /* 38: CK for source overlay use */
98035c4bbdfSmrg        DDCOLORKEY ddckCKSrcBlt;        /* 40: CK for source blt use */
98135c4bbdfSmrg        DDPIXELFORMAT ddpfPixelFormat;  /* 48: pixel format description of the surface */
98235c4bbdfSmrg        DDSCAPS ddsCaps;        /* 68: direct draw surface caps */
98335c4bbdfSmrg    } DDSURFACEDESC, *LPDDSURFACEDESC;
98435c4bbdfSmrg
98535c4bbdfSmrg    typedef struct _DDSURFACEDESC2 {
98635c4bbdfSmrg        DWORD dwSize;           /* 0: size of the DDSURFACEDESC structure */
98735c4bbdfSmrg        DWORD dwFlags;          /* 4: determines what fields are valid */
98835c4bbdfSmrg        DWORD dwHeight;         /* 8: height of surface to be created */
98935c4bbdfSmrg        DWORD dwWidth;          /* C: width of input surface */
99035c4bbdfSmrg        union {
99135c4bbdfSmrg            LONG lPitch;        /*10: distance to start of next line (return value only) */
99235c4bbdfSmrg            DWORD dwLinearSize; /*10: formless late-allocated optimized surface size */
99335c4bbdfSmrg        } DUMMYUNIONNAME1;
99435c4bbdfSmrg        DWORD dwBackBufferCount;        /* 14: number of back buffers requested */
99535c4bbdfSmrg        union {
99635c4bbdfSmrg            DWORD dwMipMapCount;        /* 18:number of mip-map levels requested */
99735c4bbdfSmrg            DWORD dwRefreshRate;        /* 18:refresh rate (used when display mode is described) */
99835c4bbdfSmrg            DWORD dwSrcVBHandle;        /* 18:source used in VB::Optimize */
99935c4bbdfSmrg        } DUMMYUNIONNAME2;
100035c4bbdfSmrg        DWORD dwAlphaBitDepth;  /* 1C:depth of alpha buffer requested */
100135c4bbdfSmrg        DWORD dwReserved;       /* 20:reserved */
100235c4bbdfSmrg        LPVOID lpSurface;       /* 24:pointer to the associated surface memory */
100335c4bbdfSmrg        union {
100435c4bbdfSmrg            DDCOLORKEY ddckCKDestOverlay;       /* 28: CK for dest overlay use */
100535c4bbdfSmrg            DWORD dwEmptyFaceColor;     /* 28: color for empty cubemap faces */
100635c4bbdfSmrg        } DUMMYUNIONNAME3;
100735c4bbdfSmrg        DDCOLORKEY ddckCKDestBlt;       /* 30: CK for destination blt use */
100835c4bbdfSmrg        DDCOLORKEY ddckCKSrcOverlay;    /* 38: CK for source overlay use */
100935c4bbdfSmrg        DDCOLORKEY ddckCKSrcBlt;        /* 40: CK for source blt use */
101035c4bbdfSmrg
101135c4bbdfSmrg        union {
101235c4bbdfSmrg            DDPIXELFORMAT ddpfPixelFormat;      /* 48: pixel format description of the surface */
101335c4bbdfSmrg            DWORD dwFVF;        /* 48: vertex format description of vertex buffers */
101435c4bbdfSmrg        } DUMMYUNIONNAME4;
101535c4bbdfSmrg        DDSCAPS2 ddsCaps;       /* 68: DDraw surface caps */
101635c4bbdfSmrg        DWORD dwTextureStage;   /* 78: stage in multitexture cascade */
101735c4bbdfSmrg    } DDSURFACEDESC2, *LPDDSURFACEDESC2;
101805b261ecSmrg
101905b261ecSmrg/* DDCOLORCONTROL.dwFlags */
102005b261ecSmrg#define DDCOLOR_BRIGHTNESS	0x00000001
102105b261ecSmrg#define DDCOLOR_CONTRAST	0x00000002
102205b261ecSmrg#define DDCOLOR_HUE		0x00000004
102305b261ecSmrg#define DDCOLOR_SATURATION	0x00000008
102405b261ecSmrg#define DDCOLOR_SHARPNESS	0x00000010
102505b261ecSmrg#define DDCOLOR_GAMMA		0x00000020
102605b261ecSmrg#define DDCOLOR_COLORENABLE	0x00000040
102705b261ecSmrg
102835c4bbdfSmrg    typedef struct {
102935c4bbdfSmrg        DWORD dwSize;
103035c4bbdfSmrg        DWORD dwFlags;
103135c4bbdfSmrg        LONG lBrightness;
103235c4bbdfSmrg        LONG lContrast;
103335c4bbdfSmrg        LONG lHue;
103435c4bbdfSmrg        LONG lSaturation;
103535c4bbdfSmrg        LONG lSharpness;
103635c4bbdfSmrg        LONG lGamma;
103735c4bbdfSmrg        LONG lColorEnable;
103835c4bbdfSmrg        DWORD dwReserved1;
103935c4bbdfSmrg    } DDCOLORCONTROL, *LPDDCOLORCONTROL;
104035c4bbdfSmrg
104135c4bbdfSmrg    typedef struct {
104235c4bbdfSmrg        WORD red[256];
104335c4bbdfSmrg        WORD green[256];
104435c4bbdfSmrg        WORD blue[256];
104535c4bbdfSmrg    } DDGAMMARAMP, *LPDDGAMMARAMP;
104635c4bbdfSmrg
104735c4bbdfSmrg    typedef BOOL CALLBACK(*LPDDENUMCALLBACKA) (GUID *, LPSTR, LPSTR, LPVOID);
104835c4bbdfSmrg    typedef BOOL CALLBACK(*LPDDENUMCALLBACKW) (GUID *, LPWSTR, LPWSTR, LPVOID);
104935c4bbdfSmrg     DECL_WINELIB_TYPE_AW(LPDDENUMCALLBACK)
105035c4bbdfSmrg
105135c4bbdfSmrg    typedef HRESULT CALLBACK(*LPDDENUMMODESCALLBACK) (LPDDSURFACEDESC, LPVOID);
105235c4bbdfSmrg    typedef HRESULT CALLBACK(*LPDDENUMMODESCALLBACK2) (LPDDSURFACEDESC2,
105335c4bbdfSmrg                                                       LPVOID);
105435c4bbdfSmrg    typedef HRESULT CALLBACK(*LPDDENUMSURFACESCALLBACK) (LPDIRECTDRAWSURFACE,
105535c4bbdfSmrg                                                         LPDDSURFACEDESC,
105635c4bbdfSmrg                                                         LPVOID);
105735c4bbdfSmrg    typedef HRESULT CALLBACK(*LPDDENUMSURFACESCALLBACK2) (LPDIRECTDRAWSURFACE4,
105835c4bbdfSmrg                                                          LPDDSURFACEDESC2,
105935c4bbdfSmrg                                                          LPVOID);
106035c4bbdfSmrg    typedef HRESULT CALLBACK(*LPDDENUMSURFACESCALLBACK7) (LPDIRECTDRAWSURFACE7,
106135c4bbdfSmrg                                                          LPDDSURFACEDESC2,
106235c4bbdfSmrg                                                          LPVOID);
106335c4bbdfSmrg
106435c4bbdfSmrg    typedef BOOL CALLBACK(*LPDDENUMCALLBACKEXA) (GUID *, LPSTR, LPSTR, LPVOID,
106535c4bbdfSmrg                                                 HMONITOR);
106635c4bbdfSmrg    typedef BOOL CALLBACK(*LPDDENUMCALLBACKEXW) (GUID *, LPWSTR, LPWSTR, LPVOID,
106735c4bbdfSmrg                                                 HMONITOR);
106835c4bbdfSmrg     DECL_WINELIB_TYPE_AW(LPDDENUMCALLBACKEX)
106935c4bbdfSmrg
107035c4bbdfSmrg    HRESULT WINAPI DirectDrawEnumerateExA(LPDDENUMCALLBACKEXA lpCallback,
107135c4bbdfSmrg                                          LPVOID lpContext, DWORD dwFlags);
107235c4bbdfSmrg    HRESULT WINAPI DirectDrawEnumerateExW(LPDDENUMCALLBACKEXW lpCallback,
107335c4bbdfSmrg                                          LPVOID lpContext, DWORD dwFlags);
107405b261ecSmrg#define DirectDrawEnumerateEx WINELIB_NAME_AW(DirectDrawEnumerateEx)
107505b261ecSmrg
107605b261ecSmrg/* flags for DirectDrawEnumerateEx */
107705b261ecSmrg#define DDENUM_ATTACHEDSECONDARYDEVICES	0x00000001
107805b261ecSmrg#define DDENUM_DETACHEDSECONDARYDEVICES	0x00000002
107905b261ecSmrg#define DDENUM_NONDISPLAYDEVICES	0x00000004
108005b261ecSmrg
108105b261ecSmrg/* flags for DirectDrawCreate or IDirectDraw::Initialize */
108205b261ecSmrg#define DDCREATE_HARDWAREONLY	1L
108305b261ecSmrg#define DDCREATE_EMULATIONONLY	2L
108405b261ecSmrg
108535c4bbdfSmrg    typedef struct _DDBLTFX {
108635c4bbdfSmrg        DWORD dwSize;           /* size of structure */
108735c4bbdfSmrg        DWORD dwDDFX;           /* FX operations */
108835c4bbdfSmrg        DWORD dwROP;            /* Win32 raster operations */
108935c4bbdfSmrg        DWORD dwDDROP;          /* Raster operations new for DirectDraw */
109035c4bbdfSmrg        DWORD dwRotationAngle;  /* Rotation angle for blt */
109135c4bbdfSmrg        DWORD dwZBufferOpCode;  /* ZBuffer compares */
109235c4bbdfSmrg        DWORD dwZBufferLow;     /* Low limit of Z buffer */
109335c4bbdfSmrg        DWORD dwZBufferHigh;    /* High limit of Z buffer */
109435c4bbdfSmrg        DWORD dwZBufferBaseDest;        /* Destination base value */
109535c4bbdfSmrg        DWORD dwZDestConstBitDepth;     /* Bit depth used to specify Z constant for destination */
109635c4bbdfSmrg        union {
109735c4bbdfSmrg            DWORD dwZDestConst; /* Constant to use as Z buffer for dest */
109835c4bbdfSmrg            LPDIRECTDRAWSURFACE lpDDSZBufferDest;       /* Surface to use as Z buffer for dest */
109935c4bbdfSmrg        } DUMMYUNIONNAME1;
110035c4bbdfSmrg        DWORD dwZSrcConstBitDepth;      /* Bit depth used to specify Z constant for source */
110135c4bbdfSmrg        union {
110235c4bbdfSmrg            DWORD dwZSrcConst;  /* Constant to use as Z buffer for src */
110335c4bbdfSmrg            LPDIRECTDRAWSURFACE lpDDSZBufferSrc;        /* Surface to use as Z buffer for src */
110435c4bbdfSmrg        } DUMMYUNIONNAME2;
110535c4bbdfSmrg        DWORD dwAlphaEdgeBlendBitDepth; /* Bit depth used to specify constant for alpha edge blend */
110635c4bbdfSmrg        DWORD dwAlphaEdgeBlend; /* Alpha for edge blending */
110735c4bbdfSmrg        DWORD dwReserved;
110835c4bbdfSmrg        DWORD dwAlphaDestConstBitDepth; /* Bit depth used to specify alpha constant for destination */
110935c4bbdfSmrg        union {
111035c4bbdfSmrg            DWORD dwAlphaDestConst;     /* Constant to use as Alpha Channel */
111135c4bbdfSmrg            LPDIRECTDRAWSURFACE lpDDSAlphaDest; /* Surface to use as Alpha Channel */
111235c4bbdfSmrg        } DUMMYUNIONNAME3;
111335c4bbdfSmrg        DWORD dwAlphaSrcConstBitDepth;  /* Bit depth used to specify alpha constant for source */
111435c4bbdfSmrg        union {
111535c4bbdfSmrg            DWORD dwAlphaSrcConst;      /* Constant to use as Alpha Channel */
111635c4bbdfSmrg            LPDIRECTDRAWSURFACE lpDDSAlphaSrc;  /* Surface to use as Alpha Channel */
111735c4bbdfSmrg        } DUMMYUNIONNAME4;
111835c4bbdfSmrg        union {
111935c4bbdfSmrg            DWORD dwFillColor;  /* color in RGB or Palettized */
112035c4bbdfSmrg            DWORD dwFillDepth;  /* depth value for z-buffer */
112135c4bbdfSmrg            DWORD dwFillPixel;  /* pixel val for RGBA or RGBZ */
112235c4bbdfSmrg            LPDIRECTDRAWSURFACE lpDDSPattern;   /* Surface to use as pattern */
112335c4bbdfSmrg        } DUMMYUNIONNAME5;
112435c4bbdfSmrg        DDCOLORKEY ddckDestColorkey;    /* DestColorkey override */
112535c4bbdfSmrg        DDCOLORKEY ddckSrcColorkey;     /* SrcColorkey override */
112635c4bbdfSmrg    } DDBLTFX, *LPDDBLTFX;
112705b261ecSmrg
112805b261ecSmrg/* dwDDFX */
112905b261ecSmrg/* arithmetic stretching along y axis */
113005b261ecSmrg#define DDBLTFX_ARITHSTRETCHY			0x00000001
113105b261ecSmrg/* mirror on y axis */
113205b261ecSmrg#define DDBLTFX_MIRRORLEFTRIGHT			0x00000002
113305b261ecSmrg/* mirror on x axis */
113405b261ecSmrg#define DDBLTFX_MIRRORUPDOWN			0x00000004
113505b261ecSmrg/* do not tear */
113605b261ecSmrg#define DDBLTFX_NOTEARING			0x00000008
113705b261ecSmrg/* 180 degrees clockwise rotation */
113805b261ecSmrg#define DDBLTFX_ROTATE180			0x00000010
113905b261ecSmrg/* 270 degrees clockwise rotation */
114005b261ecSmrg#define DDBLTFX_ROTATE270			0x00000020
114105b261ecSmrg/* 90 degrees clockwise rotation */
114205b261ecSmrg#define DDBLTFX_ROTATE90			0x00000040
114305b261ecSmrg/* dwZBufferLow and dwZBufferHigh specify limits to the copied Z values */
114405b261ecSmrg#define DDBLTFX_ZBUFFERRANGE			0x00000080
114505b261ecSmrg/* add dwZBufferBaseDest to every source z value before compare */
114605b261ecSmrg#define DDBLTFX_ZBUFFERBASEDEST			0x00000100
114705b261ecSmrg
114835c4bbdfSmrg    typedef struct _DDOVERLAYFX {
114935c4bbdfSmrg        DWORD dwSize;           /* size of structure */
115035c4bbdfSmrg        DWORD dwAlphaEdgeBlendBitDepth; /* Bit depth used to specify constant for alpha edge blend */
115135c4bbdfSmrg        DWORD dwAlphaEdgeBlend; /* Constant to use as alpha for edge blend */
115235c4bbdfSmrg        DWORD dwReserved;
115335c4bbdfSmrg        DWORD dwAlphaDestConstBitDepth; /* Bit depth used to specify alpha constant for destination */
115435c4bbdfSmrg        union {
115535c4bbdfSmrg            DWORD dwAlphaDestConst;     /* Constant to use as alpha channel for dest */
115635c4bbdfSmrg            LPDIRECTDRAWSURFACE lpDDSAlphaDest; /* Surface to use as alpha channel for dest */
115735c4bbdfSmrg        } DUMMYUNIONNAME1;
115835c4bbdfSmrg        DWORD dwAlphaSrcConstBitDepth;  /* Bit depth used to specify alpha constant for source */
115935c4bbdfSmrg        union {
116035c4bbdfSmrg            DWORD dwAlphaSrcConst;      /* Constant to use as alpha channel for src */
116135c4bbdfSmrg            LPDIRECTDRAWSURFACE lpDDSAlphaSrc;  /* Surface to use as alpha channel for src */
116235c4bbdfSmrg        } DUMMYUNIONNAME2;
116335c4bbdfSmrg        DDCOLORKEY dckDestColorkey;     /* DestColorkey override */
116435c4bbdfSmrg        DDCOLORKEY dckSrcColorkey;      /* DestColorkey override */
116535c4bbdfSmrg        DWORD dwDDFX;           /* Overlay FX */
116635c4bbdfSmrg        DWORD dwFlags;          /* flags */
116735c4bbdfSmrg    } DDOVERLAYFX, *LPDDOVERLAYFX;
116835c4bbdfSmrg
116935c4bbdfSmrg    typedef struct _DDBLTBATCH {
117035c4bbdfSmrg        LPRECT lprDest;
117135c4bbdfSmrg        LPDIRECTDRAWSURFACE lpDDSSrc;
117235c4bbdfSmrg        LPRECT lprSrc;
117335c4bbdfSmrg        DWORD dwFlags;
117435c4bbdfSmrg        LPDDBLTFX lpDDBltFx;
117535c4bbdfSmrg    } DDBLTBATCH, *LPDDBLTBATCH;
117605b261ecSmrg
117705b261ecSmrg#define MAX_DDDEVICEID_STRING          512
117805b261ecSmrg
117935c4bbdfSmrg    typedef struct tagDDDEVICEIDENTIFIER {
118035c4bbdfSmrg        char szDriver[MAX_DDDEVICEID_STRING];
118135c4bbdfSmrg        char szDescription[MAX_DDDEVICEID_STRING];
118235c4bbdfSmrg        LARGE_INTEGER liDriverVersion;
118335c4bbdfSmrg        DWORD dwVendorId;
118435c4bbdfSmrg        DWORD dwDeviceId;
118535c4bbdfSmrg        DWORD dwSubSysId;
118635c4bbdfSmrg        DWORD dwRevision;
118735c4bbdfSmrg        GUID guidDeviceIdentifier;
118835c4bbdfSmrg    } DDDEVICEIDENTIFIER, *LPDDDEVICEIDENTIFIER;
118935c4bbdfSmrg
119035c4bbdfSmrg    typedef struct tagDDDEVICEIDENTIFIER2 {
119135c4bbdfSmrg        char szDriver[MAX_DDDEVICEID_STRING];   /* user readable driver name */
119235c4bbdfSmrg        char szDescription[MAX_DDDEVICEID_STRING];      /* user readable description */
119335c4bbdfSmrg        LARGE_INTEGER liDriverVersion;  /* driver version */
119435c4bbdfSmrg        DWORD dwVendorId;       /* vendor ID, zero if unknown */
119535c4bbdfSmrg        DWORD dwDeviceId;       /* chipset ID, zero if unknown */
119635c4bbdfSmrg        DWORD dwSubSysId;       /* board ID, zero if unknown */
119735c4bbdfSmrg        DWORD dwRevision;       /* chipset version, zero if unknown */
119835c4bbdfSmrg        GUID guidDeviceIdentifier;      /* unique ID for this driver/chipset combination */
119935c4bbdfSmrg        DWORD dwWHQLLevel;      /* Windows Hardware Quality Lab certification level */
120035c4bbdfSmrg    } DDDEVICEIDENTIFIER2, *LPDDDEVICEIDENTIFIER2;
120105b261ecSmrg
120205b261ecSmrg/*****************************************************************************
120305b261ecSmrg * IDirectDrawPalette interface
120405b261ecSmrg */
120505b261ecSmrg#undef INTERFACE
120605b261ecSmrg#define INTERFACE IDirectDrawPalette
120735c4bbdfSmrg     DECLARE_INTERFACE_(IDirectDrawPalette, IUnknown) {
120835c4bbdfSmrg        STDMETHOD(QueryInterface) (THIS_ REFIID, PVOID *) PURE;
120935c4bbdfSmrg        STDMETHOD_(ULONG, AddRef) (THIS) PURE;
121035c4bbdfSmrg        STDMETHOD_(ULONG, Release) (THIS) PURE;
121135c4bbdfSmrg        STDMETHOD(GetCaps) (THIS_ LPDWORD lpdwCaps) PURE;
121235c4bbdfSmrg        STDMETHOD(GetEntries) (THIS_ DWORD dwFlags, DWORD dwBase,
121335c4bbdfSmrg                               DWORD dwNumEntries,
121435c4bbdfSmrg                               LPPALETTEENTRY lpEntries) PURE;
121535c4bbdfSmrg        STDMETHOD(Initialize) (THIS_ LPDIRECTDRAW lpDD, DWORD dwFlags,
121635c4bbdfSmrg                               LPPALETTEENTRY lpDDColorTable) PURE;
121735c4bbdfSmrg        STDMETHOD(SetEntries) (THIS_ DWORD dwFlags, DWORD dwStartingEntry,
121835c4bbdfSmrg                               DWORD dwCount, LPPALETTEENTRY lpEntries) PURE;
121935c4bbdfSmrg    };
122005b261ecSmrg
122105b261ecSmrg    /*** IUnknown methods ***/
122205b261ecSmrg#define IDirectDrawPalette_QueryInterface(p,a,b) ICOM_CALL_(QueryInterface,p,(p,a,b))
122305b261ecSmrg#define IDirectDrawPalette_AddRef(p)             ICOM_CALL_(AddRef,p,(p))
122405b261ecSmrg#define IDirectDrawPalette_Release(p)            ICOM_CALL_(Release,p,(p))
122505b261ecSmrg    /*** IDirectDrawPalette methods ***/
122605b261ecSmrg#define IDirectDrawPalette_GetCaps(p,a)          ICOM_CALL_(GetCaps,p,(p,a))
122705b261ecSmrg#define IDirectDrawPalette_GetEntries(p,a,b,c,d) ICOM_CALL_(GetEntries,p,(p,a,b,c,d))
122805b261ecSmrg#define IDirectDrawPalette_Initialize(p,a,b,c)   ICOM_CALL_(Initialize,p,(p,a,b,c))
122905b261ecSmrg#define IDirectDrawPalette_SetEntries(p,a,b,c,d) ICOM_CALL_(SetEntries,p,(p,a,b,c,d))
123005b261ecSmrg
123105b261ecSmrg/*****************************************************************************
123205b261ecSmrg * IDirectDrawClipper interface
123305b261ecSmrg */
123405b261ecSmrg#undef INTERFACE
123505b261ecSmrg#define INTERFACE IDirectDrawClipper
123635c4bbdfSmrg    DECLARE_INTERFACE_(IDirectDrawClipper, IUnknown) {
123735c4bbdfSmrg        STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE;
123835c4bbdfSmrg        STDMETHOD_(ULONG, AddRef) (THIS) PURE;
123935c4bbdfSmrg        STDMETHOD_(ULONG, Release) (THIS) PURE;
124035c4bbdfSmrg        STDMETHOD(GetClipList) (THIS_ LPRECT lpRect, LPRGNDATA lpClipList,
124135c4bbdfSmrg                                LPDWORD lpdwSize) PURE;
124235c4bbdfSmrg        STDMETHOD(GetHWnd) (THIS_ HWND * lphWnd) PURE;
124335c4bbdfSmrg        STDMETHOD(Initialize) (THIS_ LPDIRECTDRAW lpDD, DWORD dwFlags) PURE;
124435c4bbdfSmrg        STDMETHOD(IsClipListChanged) (THIS_ BOOL * lpbChanged) PURE;
124535c4bbdfSmrg        STDMETHOD(SetClipList) (THIS_ LPRGNDATA lpClipList, DWORD dwFlags) PURE;
124635c4bbdfSmrg        STDMETHOD(SetHWnd) (THIS_ DWORD dwFlags, HWND hWnd) PURE;
124735c4bbdfSmrg    };
124805b261ecSmrg
124905b261ecSmrg    /*** IUnknown methods ***/
125005b261ecSmrg#define IDirectDrawClipper_QueryInterface(p,a,b) ICOM_CALL_(QueryInterface,p,(p,a,b))
125105b261ecSmrg#define IDirectDrawClipper_AddRef(p)             ICOM_CALL_(AddRef,p,(p))
125205b261ecSmrg#define IDirectDrawClipper_Release(p)            ICOM_CALL_(Release,p,(p))
125305b261ecSmrg    /*** IDirectDrawClipper methods ***/
125405b261ecSmrg#define IDirectDrawClipper_GetClipList(p,a,b,c)   ICOM_CALL_(GetClipList,p,(p,a,b,c))
125505b261ecSmrg#define IDirectDrawClipper_GetHWnd(p,a)           ICOM_CALL_(GetHWnd,p,(p,a))
125605b261ecSmrg#define IDirectDrawClipper_Initialize(p,a,b)      ICOM_CALL_(Initialize,p,(p,a,b))
125705b261ecSmrg#define IDirectDrawClipper_IsClipListChanged(p,a) ICOM_CALL_(IsClipListChanged,p,(p,a))
125805b261ecSmrg#define IDirectDrawClipper_SetClipList(p,a,b)     ICOM_CALL_(SetClipList,p,(p,a,b))
125905b261ecSmrg#define IDirectDrawClipper_SetHWnd(p,a,b)         ICOM_CALL_(SetHWnd,p,(p,a,b))
126005b261ecSmrg
126105b261ecSmrg/*****************************************************************************
126205b261ecSmrg * IDirectDraw interface
126305b261ecSmrg */
126405b261ecSmrg#undef INTERFACE
126505b261ecSmrg#define INTERFACE IDirectDraw
126635c4bbdfSmrg    DECLARE_INTERFACE_(IDirectDraw, IUnknown) {
126735c4bbdfSmrg        STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE;
126835c4bbdfSmrg        STDMETHOD_(ULONG, AddRef) (THIS) PURE;
126935c4bbdfSmrg        STDMETHOD_(ULONG, Release) (THIS) PURE;
127035c4bbdfSmrg        STDMETHOD(Compact) (THIS) PURE;
127135c4bbdfSmrg        STDMETHOD(CreateClipper) (THIS_ DWORD dwFlags,
127235c4bbdfSmrg                                  LPDIRECTDRAWCLIPPER * lplpDDClipper,
127335c4bbdfSmrg                                  IUnknown * pUnkOuter) PURE;
127435c4bbdfSmrg        STDMETHOD(CreatePalette) (THIS_ DWORD dwFlags,
127535c4bbdfSmrg                                  LPPALETTEENTRY lpColorTable,
127635c4bbdfSmrg                                  LPDIRECTDRAWPALETTE * lplpDDPalette,
127735c4bbdfSmrg                                  IUnknown * pUnkOuter) PURE;
127835c4bbdfSmrg        STDMETHOD(CreateSurface) (THIS_ LPDDSURFACEDESC lpDDSurfaceDesc,
127935c4bbdfSmrg                                  LPDIRECTDRAWSURFACE * lplpDDSurface,
128035c4bbdfSmrg                                  IUnknown * pUnkOuter) PURE;
128135c4bbdfSmrg        STDMETHOD(DuplicateSurface) (THIS_ LPDIRECTDRAWSURFACE lpDDSurface,
128235c4bbdfSmrg                                     LPDIRECTDRAWSURFACE *
128335c4bbdfSmrg                                     lplpDupDDSurface) PURE;
128435c4bbdfSmrg        STDMETHOD(EnumDisplayModes) (THIS_ DWORD dwFlags,
128535c4bbdfSmrg                                     LPDDSURFACEDESC lpDDSurfaceDesc,
128635c4bbdfSmrg                                     LPVOID lpContext,
128735c4bbdfSmrg                                     LPDDENUMMODESCALLBACK lpEnumModesCallback)
128835c4bbdfSmrg            PURE;
128935c4bbdfSmrg        STDMETHOD(EnumSurfaces) (THIS_ DWORD dwFlags, LPDDSURFACEDESC lpDDSD,
129035c4bbdfSmrg                                 LPVOID lpContext,
129135c4bbdfSmrg                                 LPDDENUMSURFACESCALLBACK
129235c4bbdfSmrg                                 lpEnumSurfacesCallback) PURE;
129335c4bbdfSmrg        STDMETHOD(FlipToGDISurface) (THIS) PURE;
129435c4bbdfSmrg        STDMETHOD(GetCaps) (THIS_ LPDDCAPS lpDDDriverCaps,
129535c4bbdfSmrg                            LPDDCAPS lpDDHELCaps) PURE;
129635c4bbdfSmrg        STDMETHOD(GetDisplayMode) (THIS_ LPDDSURFACEDESC lpDDSurfaceDesc) PURE;
129735c4bbdfSmrg        STDMETHOD(GetFourCCCodes) (THIS_ LPDWORD lpNumCodes,
129835c4bbdfSmrg                                   LPDWORD lpCodes) PURE;
129935c4bbdfSmrg        STDMETHOD(GetGDISurface) (THIS_ LPDIRECTDRAWSURFACE *
130035c4bbdfSmrg                                  lplpGDIDDSurface) PURE;
130135c4bbdfSmrg        STDMETHOD(GetMonitorFrequency) (THIS_ LPDWORD lpdwFrequency) PURE;
130235c4bbdfSmrg        STDMETHOD(GetScanLine) (THIS_ LPDWORD lpdwScanLine) PURE;
130335c4bbdfSmrg        STDMETHOD(GetVerticalBlankStatus) (THIS_ BOOL * lpbIsInVB) PURE;
130435c4bbdfSmrg        STDMETHOD(Initialize) (THIS_ GUID * lpGUID) PURE;
130535c4bbdfSmrg        STDMETHOD(RestoreDisplayMode) (THIS) PURE;
130635c4bbdfSmrg        STDMETHOD(SetCooperativeLevel) (THIS_ HWND hWnd, DWORD dwFlags) PURE;
130735c4bbdfSmrg        STDMETHOD(SetDisplayMode) (THIS_ DWORD, DWORD, DWORD) PURE;
130835c4bbdfSmrg        STDMETHOD(WaitForVerticalBlank) (THIS_ DWORD dwFlags,
130935c4bbdfSmrg                                         HANDLE hEvent) PURE;
131035c4bbdfSmrg    };
131105b261ecSmrg
131205b261ecSmrg    /*** IUnknown methods ***/
131305b261ecSmrg#define IDirectDraw_QueryInterface(p,a,b) ICOM_CALL_(QueryInterface,p,(p,a,b))
131405b261ecSmrg#define IDirectDraw_AddRef(p)             ICOM_CALL_(AddRef,p,(p))
131505b261ecSmrg#define IDirectDraw_Release(p)            ICOM_CALL_(Release,p,(p))
131605b261ecSmrg    /*** IDirectDraw methods ***/
131705b261ecSmrg#define IDirectDraw_Compact(p)                  ICOM_CALL_(Compact,p,(p))
131805b261ecSmrg#define IDirectDraw_CreateClipper(p,a,b,c)      ICOM_CALL_(CreateClipper,p,(p,a,b,c))
131905b261ecSmrg#define IDirectDraw_CreatePalette(p,a,b,c,d)    ICOM_CALL_(CreatePalette,p,(p,a,b,c,d))
132005b261ecSmrg#define IDirectDraw_CreateSurface(p,a,b,c)      ICOM_CALL_(CreateSurface,p,(p,a,b,c))
132105b261ecSmrg#define IDirectDraw_DuplicateSurface(p,a,b)     ICOM_CALL_(DuplicateSurface,p,(p,a,b))
132205b261ecSmrg#define IDirectDraw_EnumDisplayModes(p,a,b,c,d) ICOM_CALL_(EnumDisplayModes,p,(p,a,b,c,d))
132305b261ecSmrg#define IDirectDraw_EnumSurfaces(p,a,b,c,d)     ICOM_CALL_(EnumSurfaces,p,(p,a,b,c,d))
132405b261ecSmrg#define IDirectDraw_FlipToGDISurface(p)         ICOM_CALL_(FlipToGDISurface,p,(p))
132505b261ecSmrg#define IDirectDraw_GetCaps(p,a,b)              ICOM_CALL_(GetCaps,p,(p,a,b))
132605b261ecSmrg#define IDirectDraw_GetDisplayMode(p,a)         ICOM_CALL_(GetDisplayMode,p,(p,a))
132705b261ecSmrg#define IDirectDraw_GetFourCCCodes(p,a,b)       ICOM_CALL_(GetFourCCCodes,p,(p,a,b))
132805b261ecSmrg#define IDirectDraw_GetGDISurface(p,a)          ICOM_CALL_(GetGDISurface,p,(p,a))
132905b261ecSmrg#define IDirectDraw_GetMonitorFrequency(p,a)    ICOM_CALL_(GetMonitorFrequency,p,(p,a))
133005b261ecSmrg#define IDirectDraw_GetScanLine(p,a)            ICOM_CALL_(GetScanLine,p,(p,a))
133105b261ecSmrg#define IDirectDraw_GetVerticalBlankStatus(p,a) ICOM_CALL_(GetVerticalBlankStatus,p,(p,a))
133205b261ecSmrg#define IDirectDraw_Initialize(p,a)             ICOM_CALL_(Initialize,p,(p,a))
133305b261ecSmrg#define IDirectDraw_RestoreDisplayMode(p)       ICOM_CALL_(RestoreDisplayMode,p,(p))
133405b261ecSmrg#define IDirectDraw_SetCooperativeLevel(p,a,b)  ICOM_CALL_(SetCooperativeLevel,p,(p,a,b))
133505b261ecSmrg#define IDirectDraw_SetDisplayMode(p,a,b,c)     ICOM_CALL_(SetDisplayMode,p,(p,a,b,c))
133605b261ecSmrg#define IDirectDraw_WaitForVerticalBlank(p,a,b) ICOM_CALL_(WaitForVerticalBlank,p,(p,a,b))
133705b261ecSmrg
133805b261ecSmrg/* flags for Lock() */
133905b261ecSmrg#define DDLOCK_SURFACEMEMORYPTR	0x00000000
134005b261ecSmrg#define DDLOCK_WAIT		0x00000001
134105b261ecSmrg#define DDLOCK_EVENT		0x00000002
134205b261ecSmrg#define DDLOCK_READONLY		0x00000010
134305b261ecSmrg#define DDLOCK_WRITEONLY	0x00000020
134405b261ecSmrg#define DDLOCK_NOSYSLOCK	0x00000800
134505b261ecSmrg
134605b261ecSmrg/*****************************************************************************
134705b261ecSmrg * IDirectDraw2 interface
134805b261ecSmrg */
134935c4bbdfSmrg/* Note: IDirectDraw2 cannot derive from IDirectDraw because the number of
135005b261ecSmrg * arguments of SetDisplayMode has changed !
135105b261ecSmrg */
135205b261ecSmrg#undef INTERFACE
135305b261ecSmrg#define INTERFACE IDirectDraw2
135435c4bbdfSmrg    DECLARE_INTERFACE_(IDirectDraw2, IUnknown) {
135535c4bbdfSmrg        STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE;
135635c4bbdfSmrg        STDMETHOD_(ULONG, AddRef) (THIS) PURE;
135735c4bbdfSmrg        STDMETHOD_(ULONG, Release) (THIS) PURE;
135835c4bbdfSmrg        STDMETHOD(Compact) (THIS) PURE;
135935c4bbdfSmrg        STDMETHOD(CreateClipper) (THIS_ DWORD dwFlags,
136035c4bbdfSmrg                                  LPDIRECTDRAWCLIPPER * lplpDDClipper,
136135c4bbdfSmrg                                  IUnknown * pUnkOuter) PURE;
136235c4bbdfSmrg        STDMETHOD(CreatePalette) (THIS_ DWORD dwFlags,
136335c4bbdfSmrg                                  LPPALETTEENTRY lpColorTable,
136435c4bbdfSmrg                                  LPDIRECTDRAWPALETTE * lplpDDPalette,
136535c4bbdfSmrg                                  IUnknown * pUnkOuter) PURE;
136635c4bbdfSmrg        STDMETHOD(CreateSurface) (THIS_ LPDDSURFACEDESC lpDDSurfaceDesc,
136735c4bbdfSmrg                                  LPDIRECTDRAWSURFACE2 * lplpDDSurface,
136835c4bbdfSmrg                                  IUnknown * pUnkOuter) PURE;
136935c4bbdfSmrg        STDMETHOD(DuplicateSurface) (THIS_ LPDIRECTDRAWSURFACE2 lpDDSurface,
137035c4bbdfSmrg                                     LPDIRECTDRAWSURFACE2 *
137135c4bbdfSmrg                                     lplpDupDDSurface) PURE;
137235c4bbdfSmrg        STDMETHOD(EnumDisplayModes) (THIS_ DWORD dwFlags,
137335c4bbdfSmrg                                     LPDDSURFACEDESC lpDDSurfaceDesc,
137435c4bbdfSmrg                                     LPVOID lpContext,
137535c4bbdfSmrg                                     LPDDENUMMODESCALLBACK lpEnumModesCallback)
137635c4bbdfSmrg            PURE;
137735c4bbdfSmrg        STDMETHOD(EnumSurfaces) (THIS_ DWORD dwFlags, LPDDSURFACEDESC lpDDSD,
137835c4bbdfSmrg                                 LPVOID lpContext,
137935c4bbdfSmrg                                 LPDDENUMSURFACESCALLBACK
138035c4bbdfSmrg                                 lpEnumSurfacesCallback) PURE;
138135c4bbdfSmrg        STDMETHOD(FlipToGDISurface) (THIS) PURE;
138235c4bbdfSmrg        STDMETHOD(GetCaps) (THIS_ LPDDCAPS lpDDDriverCaps,
138335c4bbdfSmrg                            LPDDCAPS lpDDHELCaps) PURE;
138435c4bbdfSmrg        STDMETHOD(GetDisplayMode) (THIS_ LPDDSURFACEDESC lpDDSurfaceDesc) PURE;
138535c4bbdfSmrg        STDMETHOD(GetFourCCCodes) (THIS_ LPDWORD lpNumCodes,
138635c4bbdfSmrg                                   LPDWORD lpCodes) PURE;
138735c4bbdfSmrg        STDMETHOD(GetGDISurface) (THIS_ LPDIRECTDRAWSURFACE2 *
138835c4bbdfSmrg                                  lplpGDIDDSurface) PURE;
138935c4bbdfSmrg        STDMETHOD(GetMonitorFrequency) (THIS_ LPDWORD lpdwFrequency) PURE;
139035c4bbdfSmrg        STDMETHOD(GetScanLine) (THIS_ LPDWORD lpdwScanLine) PURE;
139135c4bbdfSmrg        STDMETHOD(GetVerticalBlankStatus) (THIS_ BOOL * lpbIsInVB) PURE;
139235c4bbdfSmrg        STDMETHOD(Initialize) (THIS_ GUID * lpGUID) PURE;
139335c4bbdfSmrg        STDMETHOD(RestoreDisplayMode) (THIS) PURE;
139435c4bbdfSmrg        STDMETHOD(SetCooperativeLevel) (THIS_ HWND hWnd, DWORD dwFlags) PURE;
139535c4bbdfSmrg        STDMETHOD(SetDisplayMode) (THIS_ DWORD dwWidth, DWORD dwHeight,
139635c4bbdfSmrg                                   DWORD dwBPP, DWORD dwRefreshRate,
139735c4bbdfSmrg                                   DWORD dwFlags) PURE;
139835c4bbdfSmrg        STDMETHOD(WaitForVerticalBlank) (THIS_ DWORD dwFlags,
139935c4bbdfSmrg                                         HANDLE hEvent) PURE;
140035c4bbdfSmrg
140135c4bbdfSmrg        STDMETHOD(GetAvailableVidMem) (THIS_ LPDDSCAPS lpDDCaps,
140235c4bbdfSmrg                                       LPDWORD lpdwTotal,
140335c4bbdfSmrg                                       LPDWORD lpdwFree) PURE;
140435c4bbdfSmrg    };
140505b261ecSmrg
140605b261ecSmrg    /*** IUnknown methods ***/
140705b261ecSmrg#define IDirectDraw2_QueryInterface(p,a,b) ICOM_CALL_(QueryInterface,p,(p,a,b))
140805b261ecSmrg#define IDirectDraw2_AddRef(p)             ICOM_CALL_(AddRef,p,(p))
140905b261ecSmrg#define IDirectDraw2_Release(p)            ICOM_CALL_(Release,p,(p))
141005b261ecSmrg    /*** IDirectDraw methods ***/
141105b261ecSmrg#define IDirectDraw2_Compact(p)                  ICOM_CALL_(Compact,p,(p))
141205b261ecSmrg#define IDirectDraw2_CreateClipper(p,a,b,c)      ICOM_CALL_(CreateClipper,p,(p,a,b,c))
141305b261ecSmrg#define IDirectDraw2_CreatePalette(p,a,b,c,d)    ICOM_CALL_(CreatePalette,p,(p,a,b,c,d))
141405b261ecSmrg#define IDirectDraw2_CreateSurface(p,a,b,c)      ICOM_CALL_(CreateSurface,p,(p,a,b,c))
141505b261ecSmrg#define IDirectDraw2_DuplicateSurface(p,a,b)     ICOM_CALL_(DuplicateSurface,p,(p,a,b))
141605b261ecSmrg#define IDirectDraw2_EnumDisplayModes(p,a,b,c,d) ICOM_CALL_(EnumDisplayModes,p,(p,a,b,c,d))
141705b261ecSmrg#define IDirectDraw2_EnumSurfaces(p,a,b,c,d)     ICOM_CALL_(EnumSurfaces,p,(p,a,b,c,d))
141805b261ecSmrg#define IDirectDraw2_FlipToGDISurface(p)         ICOM_CALL_(FlipToGDISurface,p,(p))
141905b261ecSmrg#define IDirectDraw2_GetCaps(p,a,b)              ICOM_CALL_(GetCaps,p,(p,a,b))
142005b261ecSmrg#define IDirectDraw2_GetDisplayMode(p,a)         ICOM_CALL_(GetDisplayMode,p,(p,a))
142105b261ecSmrg#define IDirectDraw2_GetFourCCCodes(p,a,b)       ICOM_CALL_(GetFourCCCodes,p,(p,a,b))
142205b261ecSmrg#define IDirectDraw2_GetGDISurface(p,a)          ICOM_CALL_(GetGDISurface,p,(p,a))
142305b261ecSmrg#define IDirectDraw2_GetMonitorFrequency(p,a)    ICOM_CALL_(GetMonitorFrequency,p,(p,a))
142405b261ecSmrg#define IDirectDraw2_GetScanLine(p,a)            ICOM_CALL_(GetScanLine,p,(p,a))
142505b261ecSmrg#define IDirectDraw2_GetVerticalBlankStatus(p,a) ICOM_CALL_(GetVerticalBlankStatus,p,(p,a))
142605b261ecSmrg#define IDirectDraw2_Initialize(p,a)             ICOM_CALL_(Initialize,p,(p,a))
142705b261ecSmrg#define IDirectDraw2_RestoreDisplayMode(p)       ICOM_CALL_(RestoreDisplayMode,p,(p))
142805b261ecSmrg#define IDirectDraw2_SetCooperativeLevel(p,a,b)  ICOM_CALL_(SetCooperativeLevel,p,(p,a,b))
142905b261ecSmrg#define IDirectDraw2_SetDisplayMode(p,a,b,c,d,e) ICOM_CALL_(SetDisplayMode,p,(p,a,b,c,d,e))
143005b261ecSmrg#define IDirectDraw2_WaitForVerticalBlank(p,a,b) ICOM_CALL_(WaitForVerticalBlank,p,(p,a,b))
143105b261ecSmrg/*** IDirectDraw2 methods ***/
143205b261ecSmrg#define IDirectDraw2_GetAvailableVidMem(p,a,b,c) ICOM_CALL_(GetAvailableVidMem,p,(p,a,b,c))
143305b261ecSmrg
143405b261ecSmrg/*****************************************************************************
143505b261ecSmrg * IDirectDraw4 interface
143605b261ecSmrg */
143705b261ecSmrg#undef INTERFACE
143805b261ecSmrg#define INTERFACE IDirectDraw4
143935c4bbdfSmrg    DECLARE_INTERFACE_(IDirectDraw4, IUnknown) {
144035c4bbdfSmrg        STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE;
144135c4bbdfSmrg        STDMETHOD_(ULONG, AddRef) (THIS) PURE;
144235c4bbdfSmrg        STDMETHOD_(ULONG, Release) (THIS) PURE;
144335c4bbdfSmrg        STDMETHOD(Compact) (THIS) PURE;
144435c4bbdfSmrg        STDMETHOD(CreateClipper) (THIS_ DWORD dwFlags,
144535c4bbdfSmrg                                  LPDIRECTDRAWCLIPPER * lplpDDClipper,
144635c4bbdfSmrg                                  IUnknown * pUnkOuter) PURE;
144735c4bbdfSmrg        STDMETHOD(CreatePalette) (THIS_ DWORD dwFlags,
144835c4bbdfSmrg                                  LPPALETTEENTRY lpColorTable,
144935c4bbdfSmrg                                  LPDIRECTDRAWPALETTE * lplpDDPalette,
145035c4bbdfSmrg                                  IUnknown * pUnkOuter) PURE;
145135c4bbdfSmrg        STDMETHOD(CreateSurface) (THIS_ LPDDSURFACEDESC2 lpDDSurfaceDesc,
145235c4bbdfSmrg                                  LPDIRECTDRAWSURFACE4 * lplpDDSurface,
145335c4bbdfSmrg                                  IUnknown * pUnkOuter) PURE;
145435c4bbdfSmrg        STDMETHOD(DuplicateSurface) (THIS_ LPDIRECTDRAWSURFACE4 lpDDSurface,
145535c4bbdfSmrg                                     LPDIRECTDRAWSURFACE4 *
145635c4bbdfSmrg                                     lplpDupDDSurface) PURE;
145735c4bbdfSmrg        STDMETHOD(EnumDisplayModes) (THIS_ DWORD dwFlags,
145835c4bbdfSmrg                                     LPDDSURFACEDESC2 lpDDSurfaceDesc,
145935c4bbdfSmrg                                     LPVOID lpContext,
146035c4bbdfSmrg                                     LPDDENUMMODESCALLBACK2 lpEnumModesCallback)
146135c4bbdfSmrg            PURE;
146235c4bbdfSmrg        STDMETHOD(EnumSurfaces) (THIS_ DWORD dwFlags, LPDDSURFACEDESC2 lpDDSD,
146335c4bbdfSmrg                                 LPVOID lpContext,
146435c4bbdfSmrg                                 LPDDENUMSURFACESCALLBACK2
146535c4bbdfSmrg                                 lpEnumSurfacesCallback) PURE;
146635c4bbdfSmrg        STDMETHOD(FlipToGDISurface) (THIS) PURE;
146735c4bbdfSmrg        STDMETHOD(GetCaps) (THIS_ LPDDCAPS lpDDDriverCaps,
146835c4bbdfSmrg                            LPDDCAPS lpDDHELCaps) PURE;
146935c4bbdfSmrg        STDMETHOD(GetDisplayMode) (THIS_ LPDDSURFACEDESC2 lpDDSurfaceDesc) PURE;
147035c4bbdfSmrg        STDMETHOD(GetFourCCCodes) (THIS_ LPDWORD lpNumCodes,
147135c4bbdfSmrg                                   LPDWORD lpCodes) PURE;
147235c4bbdfSmrg        STDMETHOD(GetGDISurface) (THIS_ LPDIRECTDRAWSURFACE4 *
147335c4bbdfSmrg                                  lplpGDIDDSurface) PURE;
147435c4bbdfSmrg        STDMETHOD(GetMonitorFrequency) (THIS_ LPDWORD lpdwFrequency) PURE;
147535c4bbdfSmrg        STDMETHOD(GetScanLine) (THIS_ LPDWORD lpdwScanLine) PURE;
147635c4bbdfSmrg        STDMETHOD(GetVerticalBlankStatus) (THIS_ BOOL * lpbIsInVB) PURE;
147735c4bbdfSmrg        STDMETHOD(Initialize) (THIS_ GUID * lpGUID) PURE;
147835c4bbdfSmrg        STDMETHOD(RestoreDisplayMode) (THIS) PURE;
147935c4bbdfSmrg        STDMETHOD(SetCooperativeLevel) (THIS_ HWND hWnd, DWORD dwFlags) PURE;
148035c4bbdfSmrg        STDMETHOD(SetDisplayMode) (THIS_ DWORD dwWidth, DWORD dwHeight,
148135c4bbdfSmrg                                   DWORD dwBPP, DWORD dwRefreshRate,
148235c4bbdfSmrg                                   DWORD dwFlags) PURE;
148335c4bbdfSmrg        STDMETHOD(WaitForVerticalBlank) (THIS_ DWORD dwFlags,
148435c4bbdfSmrg                                         HANDLE hEvent) PURE;
148535c4bbdfSmrg
148635c4bbdfSmrg        STDMETHOD(GetAvailableVidMem) (THIS_ LPDDSCAPS2 lpDDCaps,
148735c4bbdfSmrg                                       LPDWORD lpdwTotal,
148835c4bbdfSmrg                                       LPDWORD lpdwFree) PURE;
148935c4bbdfSmrg
149035c4bbdfSmrg        STDMETHOD(GetSurfaceFromDC) (THIS_ HDC, LPDIRECTDRAWSURFACE4 *) PURE;
149135c4bbdfSmrg        STDMETHOD(RestoreAllSurfaces) (THIS) PURE;
149235c4bbdfSmrg        STDMETHOD(TestCooperativeLevel) (THIS) PURE;
149335c4bbdfSmrg        STDMETHOD(GetDeviceIdentifier) (THIS_ LPDDDEVICEIDENTIFIER, DWORD) PURE;
149435c4bbdfSmrg    };
149505b261ecSmrg
149605b261ecSmrg    /*** IUnknown methods ***/
149705b261ecSmrg#define IDirectDraw4_QueryInterface(p,a,b) ICOM_CALL_(QueryInterface,p,(p,a,b))
149805b261ecSmrg#define IDirectDraw4_AddRef(p)             ICOM_CALL_(AddRef,p,(p))
149905b261ecSmrg#define IDirectDraw4_Release(p)            ICOM_CALL_(Release,p,(p))
150005b261ecSmrg    /*** IDirectDraw methods ***/
150105b261ecSmrg#define IDirectDraw4_Compact(p)                  ICOM_CALL_(Compact,p,(p))
150205b261ecSmrg#define IDirectDraw4_CreateClipper(p,a,b,c)      ICOM_CALL_(CreateClipper,p,(p,a,b,c))
150305b261ecSmrg#define IDirectDraw4_CreatePalette(p,a,b,c,d)    ICOM_CALL_(CreatePalette,p,(p,a,b,c,d))
150405b261ecSmrg#define IDirectDraw4_CreateSurface(p,a,b,c)      ICOM_CALL_(CreateSurface,p,(p,a,b,c))
150505b261ecSmrg#define IDirectDraw4_DuplicateSurface(p,a,b)     ICOM_CALL_(DuplicateSurface,p,(p,a,b))
150605b261ecSmrg#define IDirectDraw4_EnumDisplayModes(p,a,b,c,d) ICOM_CALL_(EnumDisplayModes,p,(p,a,b,c,d))
150705b261ecSmrg#define IDirectDraw4_EnumSurfaces(p,a,b,c,d)     ICOM_CALL_(EnumSurfaces,p,(p,a,b,c,d))
150805b261ecSmrg#define IDirectDraw4_FlipToGDISurface(p)         ICOM_CALL_(FlipToGDISurface,p,(p))
150905b261ecSmrg#define IDirectDraw4_GetCaps(p,a,b)              ICOM_CALL_(GetCaps,p,(p,a,b))
151005b261ecSmrg#define IDirectDraw4_GetDisplayMode(p,a)         ICOM_CALL_(GetDisplayMode,p,(p,a))
151105b261ecSmrg#define IDirectDraw4_GetFourCCCodes(p,a,b)       ICOM_CALL_(GetFourCCCodes,p,(p,a,b))
151205b261ecSmrg#define IDirectDraw4_GetGDISurface(p,a)          ICOM_CALL_(GetGDISurface,p,(p,a))
151305b261ecSmrg#define IDirectDraw4_GetMonitorFrequency(p,a)    ICOM_CALL_(GetMonitorFrequency,p,(p,a))
151405b261ecSmrg#define IDirectDraw4_GetScanLine(p,a)            ICOM_CALL_(GetScanLine,p,(p,a))
151505b261ecSmrg#define IDirectDraw4_GetVerticalBlankStatus(p,a) ICOM_CALL_(GetVerticalBlankStatus,p,(p,a))
151605b261ecSmrg#define IDirectDraw4_Initialize(p,a)             ICOM_CALL_(Initialize,p,(p,a))
151705b261ecSmrg#define IDirectDraw4_RestoreDisplayMode(p)       ICOM_CALL_(RestoreDisplayMode,p,(p))
151805b261ecSmrg#define IDirectDraw4_SetCooperativeLevel(p,a,b)  ICOM_CALL_(SetCooperativeLevel,p,(p,a,b))
151905b261ecSmrg#define IDirectDraw4_SetDisplayMode(p,a,b,c,d,e) ICOM_CALL_(SetDisplayMode,p,(p,a,b,c,d,e))
152005b261ecSmrg#define IDirectDraw4_WaitForVerticalBlank(p,a,b) ICOM_CALL_(WaitForVerticalBlank,p,(p,a,b))
152105b261ecSmrg/*** IDirectDraw2 methods ***/
152205b261ecSmrg#define IDirectDraw4_GetAvailableVidMem(p,a,b,c) ICOM_CALL_(GetAvailableVidMem,p,(p,a,b,c))
152305b261ecSmrg/*** IDirectDraw4 methods ***/
152405b261ecSmrg#define IDirectDraw4_GetSurfaceFromDC(p,a,b)    ICOM_CALL_(GetSurfaceFromDC,p,(p,a,b))
152535c4bbdfSmrg#define IDirectDraw4_RestoreAllSurfaces(p)      ICOM_CALL_(RestoreAllSurfaces,p,(p))
152605b261ecSmrg#define IDirectDraw4_TestCooperativeLevel(p)    ICOM_CALL_(TestCooperativeLevel,p,(p))
152705b261ecSmrg#define IDirectDraw4_GetDeviceIdentifier(p,a,b) ICOM_CALL_(GetDeviceIdentifier,p,(p,a,b))
152805b261ecSmrg
152905b261ecSmrg/*****************************************************************************
153005b261ecSmrg * IDirectDraw7 interface
153105b261ecSmrg */
153205b261ecSmrg/* Note: IDirectDraw7 cannot derive from IDirectDraw4; it is even documented
153305b261ecSmrg * as not interchangeable with earlier DirectDraw interfaces.
153405b261ecSmrg */
153505b261ecSmrg#undef INTERFACE
153605b261ecSmrg#define INTERFACE IDirectDraw7
153735c4bbdfSmrg    DECLARE_INTERFACE_(IDirectDraw7, IUnknown) {
153835c4bbdfSmrg        STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE;
153935c4bbdfSmrg        STDMETHOD_(ULONG, AddRef) (THIS) PURE;
154035c4bbdfSmrg        STDMETHOD_(ULONG, Release) (THIS) PURE;
154135c4bbdfSmrg        STDMETHOD(Compact) (THIS) PURE;
154235c4bbdfSmrg        STDMETHOD(CreateClipper) (THIS_ DWORD dwFlags,
154335c4bbdfSmrg                                  LPDIRECTDRAWCLIPPER * lplpDDClipper,
154435c4bbdfSmrg                                  IUnknown * pUnkOuter) PURE;
154535c4bbdfSmrg        STDMETHOD(CreatePalette) (THIS_ DWORD dwFlags,
154635c4bbdfSmrg                                  LPPALETTEENTRY lpColorTable,
154735c4bbdfSmrg                                  LPDIRECTDRAWPALETTE * lplpDDPalette,
154835c4bbdfSmrg                                  IUnknown * pUnkOuter) PURE;
154935c4bbdfSmrg        STDMETHOD(CreateSurface) (THIS_ LPDDSURFACEDESC2 lpDDSurfaceDesc,
155035c4bbdfSmrg                                  LPDIRECTDRAWSURFACE7 * lplpDDSurface,
155135c4bbdfSmrg                                  IUnknown * pUnkOuter) PURE;
155235c4bbdfSmrg        STDMETHOD(DuplicateSurface) (THIS_ LPDIRECTDRAWSURFACE7 lpDDSurface,
155335c4bbdfSmrg                                     LPDIRECTDRAWSURFACE7 *
155435c4bbdfSmrg                                     lplpDupDDSurface) PURE;
155535c4bbdfSmrg        STDMETHOD(EnumDisplayModes) (THIS_ DWORD dwFlags,
155635c4bbdfSmrg                                     LPDDSURFACEDESC2 lpDDSurfaceDesc,
155735c4bbdfSmrg                                     LPVOID lpContext,
155835c4bbdfSmrg                                     LPDDENUMMODESCALLBACK2 lpEnumModesCallback)
155935c4bbdfSmrg            PURE;
156035c4bbdfSmrg        STDMETHOD(EnumSurfaces) (THIS_ DWORD dwFlags, LPDDSURFACEDESC2 lpDDSD,
156135c4bbdfSmrg                                 LPVOID lpContext,
156235c4bbdfSmrg                                 LPDDENUMSURFACESCALLBACK7
156335c4bbdfSmrg                                 lpEnumSurfacesCallback) PURE;
156435c4bbdfSmrg        STDMETHOD(FlipToGDISurface) (THIS) PURE;
156535c4bbdfSmrg        STDMETHOD(GetCaps) (THIS_ LPDDCAPS lpDDDriverCaps,
156635c4bbdfSmrg                            LPDDCAPS lpDDHELCaps) PURE;
156735c4bbdfSmrg        STDMETHOD(GetDisplayMode) (THIS_ LPDDSURFACEDESC2 lpDDSurfaceDesc) PURE;
156835c4bbdfSmrg        STDMETHOD(GetFourCCCodes) (THIS_ LPDWORD lpNumCodes,
156935c4bbdfSmrg                                   LPDWORD lpCodes) PURE;
157035c4bbdfSmrg        STDMETHOD(GetGDISurface) (THIS_ LPDIRECTDRAWSURFACE7 *
157135c4bbdfSmrg                                  lplpGDIDDSurface) PURE;
157235c4bbdfSmrg        STDMETHOD(GetMonitorFrequency) (THIS_ LPDWORD lpdwFrequency) PURE;
157335c4bbdfSmrg        STDMETHOD(GetScanLine) (THIS_ LPDWORD lpdwScanLine) PURE;
157435c4bbdfSmrg        STDMETHOD(GetVerticalBlankStatus) (THIS_ BOOL * lpbIsInVB) PURE;
157535c4bbdfSmrg        STDMETHOD(Initialize) (THIS_ GUID * lpGUID) PURE;
157635c4bbdfSmrg        STDMETHOD(RestoreDisplayMode) (THIS) PURE;
157735c4bbdfSmrg        STDMETHOD(SetCooperativeLevel) (THIS_ HWND hWnd, DWORD dwFlags) PURE;
157835c4bbdfSmrg        STDMETHOD(SetDisplayMode) (THIS_ DWORD dwWidth, DWORD dwHeight,
157935c4bbdfSmrg                                   DWORD dwBPP, DWORD dwRefreshRate,
158035c4bbdfSmrg                                   DWORD dwFlags) PURE;
158135c4bbdfSmrg        STDMETHOD(WaitForVerticalBlank) (THIS_ DWORD dwFlags,
158235c4bbdfSmrg                                         HANDLE hEvent) PURE;
158335c4bbdfSmrg
158435c4bbdfSmrg        STDMETHOD(GetAvailableVidMem) (THIS_ LPDDSCAPS2 lpDDCaps,
158535c4bbdfSmrg                                       LPDWORD lpdwTotal,
158635c4bbdfSmrg                                       LPDWORD lpdwFree) PURE;
158735c4bbdfSmrg
158835c4bbdfSmrg        STDMETHOD(GetSurfaceFromDC) (THIS_ HDC, LPDIRECTDRAWSURFACE7 *) PURE;
158935c4bbdfSmrg        STDMETHOD(RestoreAllSurfaces) (THIS) PURE;
159035c4bbdfSmrg        STDMETHOD(TestCooperativeLevel) (THIS) PURE;
159135c4bbdfSmrg        STDMETHOD(GetDeviceIdentifier) (THIS_ LPDDDEVICEIDENTIFIER2,
159235c4bbdfSmrg                                        DWORD) PURE;
159335c4bbdfSmrg
159435c4bbdfSmrg        STDMETHOD(StartModeTest) (THIS_ LPSIZE, DWORD, DWORD) PURE;
159535c4bbdfSmrg        STDMETHOD(EvaluateMode) (THIS_ DWORD, DWORD *) PURE;
159635c4bbdfSmrg    };
159705b261ecSmrg
159805b261ecSmrg    /*** IUnknown methods ***/
159905b261ecSmrg#define IDirectDraw7_QueryInterface(p,a,b) ICOM_CALL_(QueryInterface,p,(p,a,b))
160005b261ecSmrg#define IDirectDraw7_AddRef(p)             ICOM_CALL_(AddRef,p,(p))
160105b261ecSmrg#define IDirectDraw7_Release(p)            ICOM_CALL_(Release,p,(p))
160205b261ecSmrg    /*** IDirectDraw methods ***/
160305b261ecSmrg#define IDirectDraw7_Compact(p)                  ICOM_CALL_(Compact,p,(p))
160405b261ecSmrg#define IDirectDraw7_CreateClipper(p,a,b,c)      ICOM_CALL_(CreateClipper,p,(p,a,b,c))
160505b261ecSmrg#define IDirectDraw7_CreatePalette(p,a,b,c,d)    ICOM_CALL_(CreatePalette,p,(p,a,b,c,d))
160605b261ecSmrg#define IDirectDraw7_CreateSurface(p,a,b,c)      ICOM_CALL_(CreateSurface,p,(p,a,b,c))
160705b261ecSmrg#define IDirectDraw7_DuplicateSurface(p,a,b)     ICOM_CALL_(DuplicateSurface,p,(p,a,b))
160805b261ecSmrg#define IDirectDraw7_EnumDisplayModes(p,a,b,c,d) ICOM_CALL_(EnumDisplayModes,p,(p,a,b,c,d))
160905b261ecSmrg#define IDirectDraw7_EnumSurfaces(p,a,b,c,d)     ICOM_CALL_(EnumSurfaces,p,(p,a,b,c,d))
161005b261ecSmrg#define IDirectDraw7_FlipToGDISurface(p)         ICOM_CALL_(FlipToGDISurface,p,(p))
161105b261ecSmrg#define IDirectDraw7_GetCaps(p,a,b)              ICOM_CALL_(GetCaps,p,(p,a,b))
161205b261ecSmrg#define IDirectDraw7_GetDisplayMode(p,a)         ICOM_CALL_(GetDisplayMode,p,(p,a))
161305b261ecSmrg#define IDirectDraw7_GetFourCCCodes(p,a,b)       ICOM_CALL_(GetFourCCCodes,p,(p,a,b))
161405b261ecSmrg#define IDirectDraw7_GetGDISurface(p,a)          ICOM_CALL_(GetGDISurface,p,(p,a))
161505b261ecSmrg#define IDirectDraw7_GetMonitorFrequency(p,a)    ICOM_CALL_(GetMonitorFrequency,p,(p,a))
161605b261ecSmrg#define IDirectDraw7_GetScanLine(p,a)            ICOM_CALL_(GetScanLine,p,(p,a))
161705b261ecSmrg#define IDirectDraw7_GetVerticalBlankStatus(p,a) ICOM_CALL_(GetVerticalBlankStatus,p,(p,a))
161805b261ecSmrg#define IDirectDraw7_Initialize(p,a)             ICOM_CALL_(Initialize,p,(p,a))
161905b261ecSmrg#define IDirectDraw7_RestoreDisplayMode(p)       ICOM_CALL_(RestoreDisplayMode,p,(p))
162005b261ecSmrg#define IDirectDraw7_SetCooperativeLevel(p,a,b)  ICOM_CALL_(SetCooperativeLevel,p,(p,a,b))
162105b261ecSmrg#define IDirectDraw7_SetDisplayMode(p,a,b,c,d,e) ICOM_CALL_(SetDisplayMode,p,(p,a,b,c,d,e))
162205b261ecSmrg#define IDirectDraw7_WaitForVerticalBlank(p,a,b) ICOM_CALL_(WaitForVerticalBlank,p,(p,a,b))
162305b261ecSmrg/*** added in IDirectDraw2 ***/
162405b261ecSmrg#define IDirectDraw7_GetAvailableVidMem(p,a,b,c) ICOM_CALL_(GetAvailableVidMem,p,(p,a,b,c))
162505b261ecSmrg/*** added in IDirectDraw4 ***/
162605b261ecSmrg#define IDirectDraw7_GetSurfaceFromDC(p,a,b)    ICOM_CALL_(GetSurfaceFromDC,p,(p,a,b))
162705b261ecSmrg#define IDirectDraw7_RestoreAllSurfaces(p)     ICOM_CALL_(RestoreAllSurfaces,p,(p))
162805b261ecSmrg#define IDirectDraw7_TestCooperativeLevel(p)    ICOM_CALL_(TestCooperativeLevel,p,(p))
162905b261ecSmrg#define IDirectDraw7_GetDeviceIdentifier(p,a,b) ICOM_CALL_(GetDeviceIdentifier,p,(p,a,b))
163005b261ecSmrg/*** added in IDirectDraw 7 ***/
163105b261ecSmrg#define IDirectDraw7_StartModeTest(p,a,b,c)     ICOM_CALL_(StartModeTest,p,(p,a,b,c))
163205b261ecSmrg#define IDirectDraw7_EvaluateMode(p,a,b)        ICOM_CALL_(EvaluateMode,p,(p,a,b))
163305b261ecSmrg
163405b261ecSmrg/*****************************************************************************
163505b261ecSmrg * IDirectDrawSurface interface
163605b261ecSmrg */
163705b261ecSmrg#undef INTERFACE
163805b261ecSmrg#define INTERFACE IDirectDrawSurface
163935c4bbdfSmrg    DECLARE_INTERFACE_(IDirectDrawSurface, IUnknown) {
164035c4bbdfSmrg        STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE;
164135c4bbdfSmrg        STDMETHOD_(ULONG, AddRef) (THIS) PURE;
164235c4bbdfSmrg        STDMETHOD_(ULONG, Release) (THIS) PURE;
164335c4bbdfSmrg        STDMETHOD(AddAttachedSurface) (THIS_ LPDIRECTDRAWSURFACE
164435c4bbdfSmrg                                       lpDDSAttachedSurface) PURE;
164535c4bbdfSmrg        STDMETHOD(AddOverlayDirtyRect) (THIS_ LPRECT lpRect) PURE;
164635c4bbdfSmrg        STDMETHOD(Blt) (THIS_ LPRECT lpDestRect,
164735c4bbdfSmrg                        LPDIRECTDRAWSURFACE lpDDSrcSurface, LPRECT lpSrcRect,
164835c4bbdfSmrg                        DWORD dwFlags, LPDDBLTFX lpDDBltFx) PURE;
164935c4bbdfSmrg        STDMETHOD(BltBatch) (THIS_ LPDDBLTBATCH lpDDBltBatch, DWORD dwCount,
165035c4bbdfSmrg                             DWORD dwFlags) PURE;
165135c4bbdfSmrg        STDMETHOD(BltFast) (THIS_ DWORD dwX, DWORD dwY,
165235c4bbdfSmrg                            LPDIRECTDRAWSURFACE lpDDSrcSurface,
165335c4bbdfSmrg                            LPRECT lpSrcRect, DWORD dwTrans) PURE;
165435c4bbdfSmrg        STDMETHOD(DeleteAttachedSurface) (THIS_ DWORD dwFlags,
165535c4bbdfSmrg                                          LPDIRECTDRAWSURFACE
165635c4bbdfSmrg                                          lpDDSAttachedSurface) PURE;
165735c4bbdfSmrg        STDMETHOD(EnumAttachedSurfaces) (THIS_ LPVOID lpContext,
165835c4bbdfSmrg                                         LPDDENUMSURFACESCALLBACK
165935c4bbdfSmrg                                         lpEnumSurfacesCallback) PURE;
166035c4bbdfSmrg        STDMETHOD(EnumOverlayZOrders) (THIS_ DWORD dwFlags, LPVOID lpContext,
166135c4bbdfSmrg                                       LPDDENUMSURFACESCALLBACK lpfnCallback)
166235c4bbdfSmrg            PURE;
166335c4bbdfSmrg        STDMETHOD(Flip) (THIS_ LPDIRECTDRAWSURFACE lpDDSurfaceTargetOverride,
166435c4bbdfSmrg                         DWORD dwFlags) PURE;
166535c4bbdfSmrg        STDMETHOD(GetAttachedSurface) (THIS_ LPDDSCAPS lpDDSCaps,
166635c4bbdfSmrg                                       LPDIRECTDRAWSURFACE *
166735c4bbdfSmrg                                       lplpDDAttachedSurface) PURE;
166835c4bbdfSmrg        STDMETHOD(GetBltStatus) (THIS_ DWORD dwFlags) PURE;
166935c4bbdfSmrg        STDMETHOD(GetCaps) (THIS_ LPDDSCAPS lpDDSCaps) PURE;
167035c4bbdfSmrg        STDMETHOD(GetClipper) (THIS_ LPDIRECTDRAWCLIPPER * lplpDDClipper) PURE;
167135c4bbdfSmrg        STDMETHOD(GetColorKey) (THIS_ DWORD dwFlags,
167235c4bbdfSmrg                                LPDDCOLORKEY lpDDColorKey) PURE;
167335c4bbdfSmrg        STDMETHOD(GetDC) (THIS_ HDC * lphDC) PURE;
167435c4bbdfSmrg        STDMETHOD(GetFlipStatus) (THIS_ DWORD dwFlags) PURE;
167535c4bbdfSmrg        STDMETHOD(GetOverlayPosition) (THIS_ LPLONG lplX, LPLONG lplY) PURE;
167635c4bbdfSmrg        STDMETHOD(GetPalette) (THIS_ LPDIRECTDRAWPALETTE * lplpDDPalette) PURE;
167735c4bbdfSmrg        STDMETHOD(GetPixelFormat) (THIS_ LPDDPIXELFORMAT lpDDPixelFormat) PURE;
167835c4bbdfSmrg        STDMETHOD(GetSurfaceDesc) (THIS_ LPDDSURFACEDESC lpDDSurfaceDesc) PURE;
167935c4bbdfSmrg        STDMETHOD(Initialize) (THIS_ LPDIRECTDRAW lpDD,
168035c4bbdfSmrg                               LPDDSURFACEDESC lpDDSurfaceDesc) PURE;
168135c4bbdfSmrg        STDMETHOD(IsLost) (THIS) PURE;
168235c4bbdfSmrg        STDMETHOD(Lock) (THIS_ LPRECT lpDestRect,
168335c4bbdfSmrg                         LPDDSURFACEDESC lpDDSurfaceDesc, DWORD dwFlags,
168435c4bbdfSmrg                         HANDLE hEvent) PURE;
168535c4bbdfSmrg        STDMETHOD(ReleaseDC) (THIS_ HDC hDC) PURE;
168635c4bbdfSmrg        STDMETHOD(Restore) (THIS) PURE;
168735c4bbdfSmrg        STDMETHOD(SetClipper) (THIS_ LPDIRECTDRAWCLIPPER lpDDClipper) PURE;
168835c4bbdfSmrg        STDMETHOD(SetColorKey) (THIS_ DWORD dwFlags,
168935c4bbdfSmrg                                LPDDCOLORKEY lpDDColorKey) PURE;
169035c4bbdfSmrg        STDMETHOD(SetOverlayPosition) (THIS_ LONG lX, LONG lY) PURE;
169135c4bbdfSmrg        STDMETHOD(SetPalette) (THIS_ LPDIRECTDRAWPALETTE lpDDPalette) PURE;
169235c4bbdfSmrg        STDMETHOD(Unlock) (THIS_ LPVOID lpSurfaceData) PURE;
169335c4bbdfSmrg        STDMETHOD(UpdateOverlay) (THIS_ LPRECT lpSrcRect,
169435c4bbdfSmrg                                  LPDIRECTDRAWSURFACE lpDDDestSurface,
169535c4bbdfSmrg                                  LPRECT lpDestRect, DWORD dwFlags,
169635c4bbdfSmrg                                  LPDDOVERLAYFX lpDDOverlayFx) PURE;
169735c4bbdfSmrg        STDMETHOD(UpdateOverlayDisplay) (THIS_ DWORD dwFlags) PURE;
169835c4bbdfSmrg        STDMETHOD(UpdateOverlayZOrder) (THIS_ DWORD dwFlags,
169935c4bbdfSmrg                                        LPDIRECTDRAWSURFACE lpDDSReference)
170035c4bbdfSmrg            PURE;
170135c4bbdfSmrg    };
170205b261ecSmrg
170305b261ecSmrg    /*** IUnknown methods ***/
170405b261ecSmrg#define IDirectDrawSurface_QueryInterface(p,a,b) ICOM_CALL_(QueryInterface,p,(p,a,b))
170505b261ecSmrg#define IDirectDrawSurface_AddRef(p)             ICOM_CALL_(AddRef,p,(p))
170605b261ecSmrg#define IDirectDrawSurface_Release(p)            ICOM_CALL_(Release,p,(p))
170705b261ecSmrg    /*** IDirectDrawSurface methods ***/
170805b261ecSmrg#define IDirectDrawSurface_AddAttachedSurface(p,a)      ICOM_CALL_(AddAttachedSurface,p,(p,a))
170905b261ecSmrg#define IDirectDrawSurface_AddOverlayDirtyRect(p,a)     ICOM_CALL_(AddOverlayDirtyRect,p,(p,a))
171005b261ecSmrg#define IDirectDrawSurface_Blt(p,a,b,c,d,e)             ICOM_CALL_(Blt,p,(p,a,b,c,d,e))
171105b261ecSmrg#define IDirectDrawSurface_BltBatch(p,a,b,c)            ICOM_CALL_(BltBatch,p,(p,a,b,c))
171205b261ecSmrg#define IDirectDrawSurface_BltFast(p,a,b,c,d,e)         ICOM_CALL_(BltFast,p,(p,a,b,c,d,e))
171305b261ecSmrg#define IDirectDrawSurface_DeleteAttachedSurface(p,a,b) ICOM_CALL_(DeleteAttachedSurface,p,(p,a,b))
171405b261ecSmrg#define IDirectDrawSurface_EnumAttachedSurfaces(p,a,b)  ICOM_CALL_(EnumAttachedSurfaces,p,(p,a,b))
171505b261ecSmrg#define IDirectDrawSurface_EnumOverlayZOrders(p,a,b,c)  ICOM_CALL_(EnumOverlayZOrders,p,(p,a,b,c))
171605b261ecSmrg#define IDirectDrawSurface_Flip(p,a,b)                  ICOM_CALL_(Flip,p,(p,a,b))
171705b261ecSmrg#define IDirectDrawSurface_GetAttachedSurface(p,a,b)    ICOM_CALL_(GetAttachedSurface,p,(p,a,b))
171805b261ecSmrg#define IDirectDrawSurface_GetBltStatus(p,a)            ICOM_CALL_(GetBltStatus,p,(p,a))
171905b261ecSmrg#define IDirectDrawSurface_GetCaps(p,a)                 ICOM_CALL_(GetCaps,p,(p,a))
172005b261ecSmrg#define IDirectDrawSurface_GetClipper(p,a)              ICOM_CALL_(GetClipper,p,(p,a))
172105b261ecSmrg#define IDirectDrawSurface_GetColorKey(p,a,b)           ICOM_CALL_(GetColorKey,p,(p,a,b))
172205b261ecSmrg#define IDirectDrawSurface_GetDC(p,a)                   ICOM_CALL_(GetDC,p,(p,a))
172305b261ecSmrg#define IDirectDrawSurface_GetFlipStatus(p,a)           ICOM_CALL_(GetFlipStatus,p,(p,a))
172405b261ecSmrg#define IDirectDrawSurface_GetOverlayPosition(p,a,b)    ICOM_CALL_(GetOverlayPosition,p,(p,a,b))
172505b261ecSmrg#define IDirectDrawSurface_GetPalette(p,a)              ICOM_CALL_(GetPalette,p,(p,a))
172605b261ecSmrg#define IDirectDrawSurface_GetPixelFormat(p,a)          ICOM_CALL_(GetPixelFormat,p,(p,a))
172705b261ecSmrg#define IDirectDrawSurface_GetSurfaceDesc(p,a)          ICOM_CALL_(GetSurfaceDesc,p,(p,a))
172805b261ecSmrg#define IDirectDrawSurface_Initialize(p,a,b)            ICOM_CALL_(Initialize,p,(p,a,b))
172905b261ecSmrg#define IDirectDrawSurface_IsLost(p)                    ICOM_CALL_(IsLost,p,(p))
173005b261ecSmrg#define IDirectDrawSurface_Lock(p,a,b,c,d)              ICOM_CALL_(Lock,p,(p,a,b,c,d))
173105b261ecSmrg#define IDirectDrawSurface_ReleaseDC(p,a)               ICOM_CALL_(ReleaseDC,p,(p,a))
173205b261ecSmrg#define IDirectDrawSurface_Restore(p)                   ICOM_CALL_(Restore,p,(p))
173305b261ecSmrg#define IDirectDrawSurface_SetClipper(p,a)              ICOM_CALL_(SetClipper,p,(p,a))
173405b261ecSmrg#define IDirectDrawSurface_SetColorKey(p,a,b)           ICOM_CALL_(SetColorKey,p,(p,a,b))
173505b261ecSmrg#define IDirectDrawSurface_SetOverlayPosition(p,a,b)    ICOM_CALL_(SetOverlayPosition,p,(p,a,b))
173605b261ecSmrg#define IDirectDrawSurface_SetPalette(p,a)              ICOM_CALL_(SetPalette,p,(p,a))
173705b261ecSmrg#define IDirectDrawSurface_Unlock(p,a)                  ICOM_CALL_(Unlock,p,(p,a))
173805b261ecSmrg#define IDirectDrawSurface_UpdateOverlay(p,a,b,c,d,e)   ICOM_CALL_(UpdateOverlay,p,(p,a,b,c,d,e))
173905b261ecSmrg#define IDirectDrawSurface_UpdateOverlayDisplay(p,a)    ICOM_CALL_(UpdateOverlayDisplay,p,(p,a))
174005b261ecSmrg#define IDirectDrawSurface_UpdateOverlayZOrder(p,a,b)   ICOM_CALL_(UpdateOverlayZOrder,p,(p,a,b))
174105b261ecSmrg
174205b261ecSmrg/*****************************************************************************
174305b261ecSmrg * IDirectDrawSurface2 interface
174405b261ecSmrg */
174535c4bbdfSmrg/* Cannot inherit from IDirectDrawSurface because the LPDIRECTDRAWSURFACE parameters
174605b261ecSmrg * have been converted to LPDIRECTDRAWSURFACE2.
174705b261ecSmrg */
174805b261ecSmrg#undef INTERFACE
174905b261ecSmrg#define INTERFACE IDirectDrawSurface2
175035c4bbdfSmrg    DECLARE_INTERFACE_(IDirectDrawSurface2, IUnknown) {
175135c4bbdfSmrg        STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE;
175235c4bbdfSmrg        STDMETHOD_(ULONG, AddRef) (THIS) PURE;
175335c4bbdfSmrg        STDMETHOD_(ULONG, Release) (THIS) PURE;
175435c4bbdfSmrg        STDMETHOD(AddAttachedSurface) (THIS_ LPDIRECTDRAWSURFACE2
175535c4bbdfSmrg                                       lpDDSAttachedSurface) PURE;
175635c4bbdfSmrg        STDMETHOD(AddOverlayDirtyRect) (THIS_ LPRECT lpRect) PURE;
175735c4bbdfSmrg        STDMETHOD(Blt) (THIS_ LPRECT lpDestRect,
175835c4bbdfSmrg                        LPDIRECTDRAWSURFACE2 lpDDSrcSurface, LPRECT lpSrcRect,
175935c4bbdfSmrg                        DWORD dwFlags, LPDDBLTFX lpDDBltFx) PURE;
176035c4bbdfSmrg        STDMETHOD(BltBatch) (THIS_ LPDDBLTBATCH lpDDBltBatch, DWORD dwCount,
176135c4bbdfSmrg                             DWORD dwFlags) PURE;
176235c4bbdfSmrg        STDMETHOD(BltFast) (THIS_ DWORD dwX, DWORD dwY,
176335c4bbdfSmrg                            LPDIRECTDRAWSURFACE2 lpDDSrcSurface,
176435c4bbdfSmrg                            LPRECT lpSrcRect, DWORD dwTrans) PURE;
176535c4bbdfSmrg        STDMETHOD(DeleteAttachedSurface) (THIS_ DWORD dwFlags,
176635c4bbdfSmrg                                          LPDIRECTDRAWSURFACE2
176735c4bbdfSmrg                                          lpDDSAttachedSurface) PURE;
176835c4bbdfSmrg        STDMETHOD(EnumAttachedSurfaces) (THIS_ LPVOID lpContext,
176935c4bbdfSmrg                                         LPDDENUMSURFACESCALLBACK
177035c4bbdfSmrg                                         lpEnumSurfacesCallback) PURE;
177135c4bbdfSmrg        STDMETHOD(EnumOverlayZOrders) (THIS_ DWORD dwFlags, LPVOID lpContext,
177235c4bbdfSmrg                                       LPDDENUMSURFACESCALLBACK lpfnCallback)
177335c4bbdfSmrg            PURE;
177435c4bbdfSmrg        STDMETHOD(Flip) (THIS_ LPDIRECTDRAWSURFACE2 lpDDSurfaceTargetOverride,
177535c4bbdfSmrg                         DWORD dwFlags) PURE;
177635c4bbdfSmrg        STDMETHOD(GetAttachedSurface) (THIS_ LPDDSCAPS lpDDSCaps,
177735c4bbdfSmrg                                       LPDIRECTDRAWSURFACE2 *
177835c4bbdfSmrg                                       lplpDDAttachedSurface) PURE;
177935c4bbdfSmrg        STDMETHOD(GetBltStatus) (THIS_ DWORD dwFlags) PURE;
178035c4bbdfSmrg        STDMETHOD(GetCaps) (THIS_ LPDDSCAPS lpDDSCaps) PURE;
178135c4bbdfSmrg        STDMETHOD(GetClipper) (THIS_ LPDIRECTDRAWCLIPPER * lplpDDClipper) PURE;
178235c4bbdfSmrg        STDMETHOD(GetColorKey) (THIS_ DWORD dwFlags,
178335c4bbdfSmrg                                LPDDCOLORKEY lpDDColorKey) PURE;
178435c4bbdfSmrg        STDMETHOD(GetDC) (THIS_ HDC * lphDC) PURE;
178535c4bbdfSmrg        STDMETHOD(GetFlipStatus) (THIS_ DWORD dwFlags) PURE;
178635c4bbdfSmrg        STDMETHOD(GetOverlayPosition) (THIS_ LPLONG lplX, LPLONG lplY) PURE;
178735c4bbdfSmrg        STDMETHOD(GetPalette) (THIS_ LPDIRECTDRAWPALETTE * lplpDDPalette) PURE;
178835c4bbdfSmrg        STDMETHOD(GetPixelFormat) (THIS_ LPDDPIXELFORMAT lpDDPixelFormat) PURE;
178935c4bbdfSmrg        STDMETHOD(GetSurfaceDesc) (THIS_ LPDDSURFACEDESC lpDDSurfaceDesc) PURE;
179035c4bbdfSmrg        STDMETHOD(Initialize) (THIS_ LPDIRECTDRAW lpDD,
179135c4bbdfSmrg                               LPDDSURFACEDESC lpDDSurfaceDesc) PURE;
179235c4bbdfSmrg        STDMETHOD(IsLost) (THIS) PURE;
179335c4bbdfSmrg        STDMETHOD(Lock) (THIS_ LPRECT lpDestRect,
179435c4bbdfSmrg                         LPDDSURFACEDESC lpDDSurfaceDesc, DWORD dwFlags,
179535c4bbdfSmrg                         HANDLE hEvent) PURE;
179635c4bbdfSmrg        STDMETHOD(ReleaseDC) (THIS_ HDC hDC) PURE;
179735c4bbdfSmrg        STDMETHOD(Restore) (THIS) PURE;
179835c4bbdfSmrg        STDMETHOD(SetClipper) (THIS_ LPDIRECTDRAWCLIPPER lpDDClipper) PURE;
179935c4bbdfSmrg        STDMETHOD(SetColorKey) (THIS_ DWORD dwFlags,
180035c4bbdfSmrg                                LPDDCOLORKEY lpDDColorKey) PURE;
180135c4bbdfSmrg        STDMETHOD(SetOverlayPosition) (THIS_ LONG lX, LONG lY) PURE;
180235c4bbdfSmrg        STDMETHOD(SetPalette) (THIS_ LPDIRECTDRAWPALETTE lpDDPalette) PURE;
180335c4bbdfSmrg        STDMETHOD(Unlock) (THIS_ LPVOID lpSurfaceData) PURE;
180435c4bbdfSmrg        STDMETHOD(UpdateOverlay) (THIS_ LPRECT lpSrcRect,
180535c4bbdfSmrg                                  LPDIRECTDRAWSURFACE2 lpDDDestSurface,
180635c4bbdfSmrg                                  LPRECT lpDestRect, DWORD dwFlags,
180735c4bbdfSmrg                                  LPDDOVERLAYFX lpDDOverlayFx) PURE;
180835c4bbdfSmrg        STDMETHOD(UpdateOverlayDisplay) (THIS_ DWORD dwFlags) PURE;
180935c4bbdfSmrg        STDMETHOD(UpdateOverlayZOrder) (THIS_ DWORD dwFlags,
181035c4bbdfSmrg                                        LPDIRECTDRAWSURFACE2 lpDDSReference)
181135c4bbdfSmrg            PURE;
181235c4bbdfSmrg        /* added in v2 */
181335c4bbdfSmrg        STDMETHOD(GetDDInterface) (THIS_ LPVOID * lplpDD) PURE;
181435c4bbdfSmrg        STDMETHOD(PageLock) (THIS_ DWORD dwFlags) PURE;
181535c4bbdfSmrg        STDMETHOD(PageUnlock) (THIS_ DWORD dwFlags) PURE;
181635c4bbdfSmrg    };
181705b261ecSmrg
181805b261ecSmrg    /*** IUnknown methods ***/
181905b261ecSmrg#define IDirectDrawSurface2_QueryInterface(p,a,b) ICOM_CALL_(QueryInterface,p,(p,a,b))
182005b261ecSmrg#define IDirectDrawSurface2_AddRef(p)             ICOM_CALL_(AddRef,p,(p))
182105b261ecSmrg#define IDirectDrawSurface2_Release(p)            ICOM_CALL_(Release,p,(p))
182205b261ecSmrg/*** IDirectDrawSurface methods (almost) ***/
182305b261ecSmrg#define IDirectDrawSurface2_AddAttachedSurface(p,a)      ICOM_CALL_(AddAttachedSurface,p,(p,a))
182405b261ecSmrg#define IDirectDrawSurface2_AddOverlayDirtyRect(p,a)     ICOM_CALL_(AddOverlayDirtyRect,p,(p,a))
182505b261ecSmrg#define IDirectDrawSurface2_Blt(p,a,b,c,d,e)             ICOM_CALL_(Blt,p,(p,a,b,c,d,e))
182605b261ecSmrg#define IDirectDrawSurface2_BltBatch(p,a,b,c)            ICOM_CALL_(BltBatch,p,(p,a,b,c))
182705b261ecSmrg#define IDirectDrawSurface2_BltFast(p,a,b,c,d,e)         ICOM_CALL_(BltFast,p,(p,a,b,c,d,e))
182805b261ecSmrg#define IDirectDrawSurface2_DeleteAttachedSurface(p,a,b) ICOM_CALL_(DeleteAttachedSurface,p,(p,a,b))
182905b261ecSmrg#define IDirectDrawSurface2_EnumAttachedSurfaces(p,a,b)  ICOM_CALL_(EnumAttachedSurfaces,p,(p,a,b))
183005b261ecSmrg#define IDirectDrawSurface2_EnumOverlayZOrders(p,a,b,c)  ICOM_CALL_(EnumOverlayZOrders,p,(p,a,b,c))
183105b261ecSmrg#define IDirectDrawSurface2_Flip(p,a,b)                  ICOM_CALL_(Flip,p,(p,a,b))
183205b261ecSmrg#define IDirectDrawSurface2_GetAttachedSurface(p,a,b)    ICOM_CALL_(GetAttachedSurface,p,(p,a,b))
183305b261ecSmrg#define IDirectDrawSurface2_GetBltStatus(p,a)            ICOM_CALL_(GetBltStatus,p,(p,a))
183405b261ecSmrg#define IDirectDrawSurface2_GetCaps(p,a)                 ICOM_CALL_(GetCaps,p,(p,a))
183505b261ecSmrg#define IDirectDrawSurface2_GetClipper(p,a)              ICOM_CALL_(GetClipper,p,(p,a))
183605b261ecSmrg#define IDirectDrawSurface2_GetColorKey(p,a,b)           ICOM_CALL_(GetColorKey,p,(p,a,b))
183705b261ecSmrg#define IDirectDrawSurface2_GetDC(p,a)                   ICOM_CALL_(GetDC,p,(p,a))
183805b261ecSmrg#define IDirectDrawSurface2_GetFlipStatus(p,a)           ICOM_CALL_(GetFlipStatus,p,(p,a))
183905b261ecSmrg#define IDirectDrawSurface2_GetOverlayPosition(p,a,b)    ICOM_CALL_(GetOverlayPosition,p,(p,a,b))
184005b261ecSmrg#define IDirectDrawSurface2_GetPalette(p,a)              ICOM_CALL_(GetPalette,p,(p,a))
184105b261ecSmrg#define IDirectDrawSurface2_GetPixelFormat(p,a)          ICOM_CALL_(GetPixelFormat,p,(p,a))
184205b261ecSmrg#define IDirectDrawSurface2_GetSurfaceDesc(p,a)          ICOM_CALL_(GetSurfaceDesc,p,(p,a))
184305b261ecSmrg#define IDirectDrawSurface2_Initialize(p,a,b)            ICOM_CALL_(Initialize,p,(p,a,b))
184405b261ecSmrg#define IDirectDrawSurface2_IsLost(p)                    ICOM_CALL_(IsLost,p,(p))
184505b261ecSmrg#define IDirectDrawSurface2_Lock(p,a,b,c,d)              ICOM_CALL_(Lock,p,(p,a,b,c,d))
184605b261ecSmrg#define IDirectDrawSurface2_ReleaseDC(p,a)               ICOM_CALL_(ReleaseDC,p,(p,a))
184705b261ecSmrg#define IDirectDrawSurface2_Restore(p)                   ICOM_CALL_(Restore,p,(p))
184805b261ecSmrg#define IDirectDrawSurface2_SetClipper(p,a)              ICOM_CALL_(SetClipper,p,(p,a))
184905b261ecSmrg#define IDirectDrawSurface2_SetColorKey(p,a,b)           ICOM_CALL_(SetColorKey,p,(p,a,b))
185005b261ecSmrg#define IDirectDrawSurface2_SetOverlayPosition(p,a,b)    ICOM_CALL_(SetOverlayPosition,p,(p,a,b))
185105b261ecSmrg#define IDirectDrawSurface2_SetPalette(p,a)              ICOM_CALL_(SetPalette,p,(p,a))
185205b261ecSmrg#define IDirectDrawSurface2_Unlock(p,a)                  ICOM_CALL_(Unlock,p,(p,a))
185305b261ecSmrg#define IDirectDrawSurface2_UpdateOverlay(p,a,b,c,d,e)   ICOM_CALL_(UpdateOverlay,p,(p,a,b,c,d,e))
185405b261ecSmrg#define IDirectDrawSurface2_UpdateOverlayDisplay(p,a)    ICOM_CALL_(UpdateOverlayDisplay,p,(p,a))
185505b261ecSmrg#define IDirectDrawSurface2_UpdateOverlayZOrder(p,a,b)   ICOM_CALL_(UpdateOverlayZOrder,p,(p,a,b))
185605b261ecSmrg/*** IDirectDrawSurface2 methods ***/
185705b261ecSmrg#define IDirectDrawSurface2_GetDDInterface(p,a) ICOM_CALL_(GetDDInterface,p,(p,a))
185805b261ecSmrg#define IDirectDrawSurface2_PageLock(p,a)       ICOM_CALL_(PageLock,p,(p,a))
185905b261ecSmrg#define IDirectDrawSurface2_PageUnlock(p,a)     ICOM_CALL_(PageUnlock,p,(p,a))
186005b261ecSmrg
186105b261ecSmrg/*****************************************************************************
186205b261ecSmrg * IDirectDrawSurface3 interface
186305b261ecSmrg */
186435c4bbdfSmrg/* Cannot inherit from IDirectDrawSurface2 because the LPDIRECTDRAWSURFACE2 parameters
186505b261ecSmrg * have been converted to LPDIRECTDRAWSURFACE3.
186605b261ecSmrg */
186705b261ecSmrg#undef INTERFACE
186805b261ecSmrg#define INTERFACE IDirectDrawSurface3
186935c4bbdfSmrg    DECLARE_INTERFACE_(IDirectDrawSurface3, IUnknown) {
187035c4bbdfSmrg        STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE;
187135c4bbdfSmrg        STDMETHOD_(ULONG, AddRef) (THIS) PURE;
187235c4bbdfSmrg        STDMETHOD_(ULONG, Release) (THIS) PURE;
187335c4bbdfSmrg        STDMETHOD(AddAttachedSurface) (THIS_ LPDIRECTDRAWSURFACE3
187435c4bbdfSmrg                                       lpDDSAttachedSurface) PURE;
187535c4bbdfSmrg        STDMETHOD(AddOverlayDirtyRect) (THIS_ LPRECT lpRect) PURE;
187635c4bbdfSmrg        STDMETHOD(Blt) (THIS_ LPRECT lpDestRect,
187735c4bbdfSmrg                        LPDIRECTDRAWSURFACE3 lpDDSrcSurface, LPRECT lpSrcRect,
187835c4bbdfSmrg                        DWORD dwFlags, LPDDBLTFX lpDDBltFx) PURE;
187935c4bbdfSmrg        STDMETHOD(BltBatch) (THIS_ LPDDBLTBATCH lpDDBltBatch, DWORD dwCount,
188035c4bbdfSmrg                             DWORD dwFlags) PURE;
188135c4bbdfSmrg        STDMETHOD(BltFast) (THIS_ DWORD dwX, DWORD dwY,
188235c4bbdfSmrg                            LPDIRECTDRAWSURFACE3 lpDDSrcSurface,
188335c4bbdfSmrg                            LPRECT lpSrcRect, DWORD dwTrans) PURE;
188435c4bbdfSmrg        STDMETHOD(DeleteAttachedSurface) (THIS_ DWORD dwFlags,
188535c4bbdfSmrg                                          LPDIRECTDRAWSURFACE3
188635c4bbdfSmrg                                          lpDDSAttachedSurface) PURE;
188735c4bbdfSmrg        STDMETHOD(EnumAttachedSurfaces) (THIS_ LPVOID lpContext,
188835c4bbdfSmrg                                         LPDDENUMSURFACESCALLBACK
188935c4bbdfSmrg                                         lpEnumSurfacesCallback) PURE;
189035c4bbdfSmrg        STDMETHOD(EnumOverlayZOrders) (THIS_ DWORD dwFlags, LPVOID lpContext,
189135c4bbdfSmrg                                       LPDDENUMSURFACESCALLBACK lpfnCallback)
189235c4bbdfSmrg            PURE;
189335c4bbdfSmrg        STDMETHOD(Flip) (THIS_ LPDIRECTDRAWSURFACE3 lpDDSurfaceTargetOverride,
189435c4bbdfSmrg                         DWORD dwFlags) PURE;
189535c4bbdfSmrg        STDMETHOD(GetAttachedSurface) (THIS_ LPDDSCAPS lpDDSCaps,
189635c4bbdfSmrg                                       LPDIRECTDRAWSURFACE3 *
189735c4bbdfSmrg                                       lplpDDAttachedSurface) PURE;
189835c4bbdfSmrg        STDMETHOD(GetBltStatus) (THIS_ DWORD dwFlags) PURE;
189935c4bbdfSmrg        STDMETHOD(GetCaps) (THIS_ LPDDSCAPS lpDDSCaps) PURE;
190035c4bbdfSmrg        STDMETHOD(GetClipper) (THIS_ LPDIRECTDRAWCLIPPER * lplpDDClipper) PURE;
190135c4bbdfSmrg        STDMETHOD(GetColorKey) (THIS_ DWORD dwFlags,
190235c4bbdfSmrg                                LPDDCOLORKEY lpDDColorKey) PURE;
190335c4bbdfSmrg        STDMETHOD(GetDC) (THIS_ HDC * lphDC) PURE;
190435c4bbdfSmrg        STDMETHOD(GetFlipStatus) (THIS_ DWORD dwFlags) PURE;
190535c4bbdfSmrg        STDMETHOD(GetOverlayPosition) (THIS_ LPLONG lplX, LPLONG lplY) PURE;
190635c4bbdfSmrg        STDMETHOD(GetPalette) (THIS_ LPDIRECTDRAWPALETTE * lplpDDPalette) PURE;
190735c4bbdfSmrg        STDMETHOD(GetPixelFormat) (THIS_ LPDDPIXELFORMAT lpDDPixelFormat) PURE;
190835c4bbdfSmrg        STDMETHOD(GetSurfaceDesc) (THIS_ LPDDSURFACEDESC lpDDSurfaceDesc) PURE;
190935c4bbdfSmrg        STDMETHOD(Initialize) (THIS_ LPDIRECTDRAW lpDD,
191035c4bbdfSmrg                               LPDDSURFACEDESC lpDDSurfaceDesc) PURE;
191135c4bbdfSmrg        STDMETHOD(IsLost) (THIS) PURE;
191235c4bbdfSmrg        STDMETHOD(Lock) (THIS_ LPRECT lpDestRect,
191335c4bbdfSmrg                         LPDDSURFACEDESC lpDDSurfaceDesc, DWORD dwFlags,
191435c4bbdfSmrg                         HANDLE hEvent) PURE;
191535c4bbdfSmrg        STDMETHOD(ReleaseDC) (THIS_ HDC hDC) PURE;
191635c4bbdfSmrg        STDMETHOD(Restore) (THIS) PURE;
191735c4bbdfSmrg        STDMETHOD(SetClipper) (THIS_ LPDIRECTDRAWCLIPPER lpDDClipper) PURE;
191835c4bbdfSmrg        STDMETHOD(SetColorKey) (THIS_ DWORD dwFlags,
191935c4bbdfSmrg                                LPDDCOLORKEY lpDDColorKey) PURE;
192035c4bbdfSmrg        STDMETHOD(SetOverlayPosition) (THIS_ LONG lX, LONG lY) PURE;
192135c4bbdfSmrg        STDMETHOD(SetPalette) (THIS_ LPDIRECTDRAWPALETTE lpDDPalette) PURE;
192235c4bbdfSmrg        STDMETHOD(Unlock) (THIS_ LPVOID lpSurfaceData) PURE;
192335c4bbdfSmrg        STDMETHOD(UpdateOverlay) (THIS_ LPRECT lpSrcRect,
192435c4bbdfSmrg                                  LPDIRECTDRAWSURFACE3 lpDDDestSurface,
192535c4bbdfSmrg                                  LPRECT lpDestRect, DWORD dwFlags,
192635c4bbdfSmrg                                  LPDDOVERLAYFX lpDDOverlayFx) PURE;
192735c4bbdfSmrg        STDMETHOD(UpdateOverlayDisplay) (THIS_ DWORD dwFlags) PURE;
192835c4bbdfSmrg        STDMETHOD(UpdateOverlayZOrder) (THIS_ DWORD dwFlags,
192935c4bbdfSmrg                                        LPDIRECTDRAWSURFACE3 lpDDSReference)
193035c4bbdfSmrg            PURE;
193135c4bbdfSmrg        /* added in v2 */
193235c4bbdfSmrg        STDMETHOD(GetDDInterface) (THIS_ LPVOID * lplpDD) PURE;
193335c4bbdfSmrg        STDMETHOD(PageLock) (THIS_ DWORD dwFlags) PURE;
193435c4bbdfSmrg        STDMETHOD(PageUnlock) (THIS_ DWORD dwFlags) PURE;
193535c4bbdfSmrg        /* added in v3 */
193635c4bbdfSmrg        STDMETHOD(SetSurfaceDesc) (THIS_ LPDDSURFACEDESC lpDDSD,
193735c4bbdfSmrg                                   DWORD dwFlags) PURE;
193835c4bbdfSmrg    };
193905b261ecSmrg
194005b261ecSmrg    /*** IUnknown methods ***/
194105b261ecSmrg#define IDirectDrawSurface3_QueryInterface(p,a,b) ICOM_CALL_(QueryInterface,p,(p,a,b))
194205b261ecSmrg#define IDirectDrawSurface3_AddRef(p)             ICOM_CALL_(AddRef,p,(p))
194305b261ecSmrg#define IDirectDrawSurface3_Release(p)            ICOM_CALL_(Release,p,(p))
194405b261ecSmrg/*** IDirectDrawSurface methods (almost) ***/
194505b261ecSmrg#define IDirectDrawSurface3_AddAttachedSurface(p,a)      ICOM_CALL_(AddAttachedSurface,p,(p,a))
194605b261ecSmrg#define IDirectDrawSurface3_AddOverlayDirtyRect(p,a)     ICOM_CALL_(AddOverlayDirtyRect,p,(p,a))
194705b261ecSmrg#define IDirectDrawSurface3_Blt(p,a,b,c,d,e)             ICOM_CALL_(Blt,p,(p,a,b,c,d,e))
194805b261ecSmrg#define IDirectDrawSurface3_BltBatch(p,a,b,c)            ICOM_CALL_(BltBatch,p,(p,a,b,c))
194905b261ecSmrg#define IDirectDrawSurface3_BltFast(p,a,b,c,d,e)         ICOM_CALL_(BltFast,p,(p,a,b,c,d,e))
195005b261ecSmrg#define IDirectDrawSurface3_DeleteAttachedSurface(p,a,b) ICOM_CALL_(DeleteAttachedSurface,p,(p,a,b))
195105b261ecSmrg#define IDirectDrawSurface3_EnumAttachedSurfaces(p,a,b)  ICOM_CALL_(EnumAttachedSurfaces,p,(p,a,b))
195205b261ecSmrg#define IDirectDrawSurface3_EnumOverlayZOrders(p,a,b,c)  ICOM_CALL_(EnumOverlayZOrders,p,(p,a,b,c))
195305b261ecSmrg#define IDirectDrawSurface3_Flip(p,a,b)                  ICOM_CALL_(Flip,p,(p,a,b))
195405b261ecSmrg#define IDirectDrawSurface3_GetAttachedSurface(p,a,b)    ICOM_CALL_(GetAttachedSurface,p,(p,a,b))
195505b261ecSmrg#define IDirectDrawSurface3_GetBltStatus(p,a)            ICOM_CALL_(GetBltStatus,p,(p,a))
195605b261ecSmrg#define IDirectDrawSurface3_GetCaps(p,a)                 ICOM_CALL_(GetCaps,p,(p,a))
195705b261ecSmrg#define IDirectDrawSurface3_GetClipper(p,a)              ICOM_CALL_(GetClipper,p,(p,a))
195805b261ecSmrg#define IDirectDrawSurface3_GetColorKey(p,a,b)           ICOM_CALL_(GetColorKey,p,(p,a,b))
195905b261ecSmrg#define IDirectDrawSurface3_GetDC(p,a)                   ICOM_CALL_(GetDC,p,(p,a))
196005b261ecSmrg#define IDirectDrawSurface3_GetFlipStatus(p,a)           ICOM_CALL_(GetFlipStatus,p,(p,a))
196105b261ecSmrg#define IDirectDrawSurface3_GetOverlayPosition(p,a,b)    ICOM_CALL_(GetOverlayPosition,p,(p,a,b))
196205b261ecSmrg#define IDirectDrawSurface3_GetPalette(p,a)              ICOM_CALL_(GetPalette,p,(p,a))
196305b261ecSmrg#define IDirectDrawSurface3_GetPixelFormat(p,a)          ICOM_CALL_(GetPixelFormat,p,(p,a))
196405b261ecSmrg#define IDirectDrawSurface3_GetSurfaceDesc(p,a)          ICOM_CALL_(GetSurfaceDesc,p,(p,a))
196505b261ecSmrg#define IDirectDrawSurface3_Initialize(p,a,b)            ICOM_CALL_(Initialize,p,(p,a,b))
196605b261ecSmrg#define IDirectDrawSurface3_IsLost(p)                    ICOM_CALL_(IsLost,p,(p))
196705b261ecSmrg#define IDirectDrawSurface3_Lock(p,a,b,c,d)              ICOM_CALL_(Lock,p,(p,a,b,c,d))
196805b261ecSmrg#define IDirectDrawSurface3_ReleaseDC(p,a)               ICOM_CALL_(ReleaseDC,p,(p,a))
196905b261ecSmrg#define IDirectDrawSurface3_Restore(p)                   ICOM_CALL_(Restore,p,(p))
197005b261ecSmrg#define IDirectDrawSurface3_SetClipper(p,a)              ICOM_CALL_(SetClipper,p,(p,a))
197105b261ecSmrg#define IDirectDrawSurface3_SetColorKey(p,a,b)           ICOM_CALL_(SetColorKey,p,(p,a,b))
197205b261ecSmrg#define IDirectDrawSurface3_SetOverlayPosition(p,a,b)    ICOM_CALL_(SetOverlayPosition,p,(p,a,b))
197305b261ecSmrg#define IDirectDrawSurface3_SetPalette(p,a)              ICOM_CALL_(SetPalette,p,(p,a))
197405b261ecSmrg#define IDirectDrawSurface3_Unlock(p,a)                  ICOM_CALL_(Unlock,p,(p,a))
197505b261ecSmrg#define IDirectDrawSurface3_UpdateOverlay(p,a,b,c,d,e)   ICOM_CALL_(UpdateOverlay,p,(p,a,b,c,d,e))
197605b261ecSmrg#define IDirectDrawSurface3_UpdateOverlayDisplay(p,a)    ICOM_CALL_(UpdateOverlayDisplay,p,(p,a))
197705b261ecSmrg#define IDirectDrawSurface3_UpdateOverlayZOrder(p,a,b)   ICOM_CALL_(UpdateOverlayZOrder,p,(p,a,b))
197805b261ecSmrg/*** IDirectDrawSurface2 methods ***/
197905b261ecSmrg#define IDirectDrawSurface3_GetDDInterface(p,a) ICOM_CALL_(GetDDInterface,p,(p,a))
198005b261ecSmrg#define IDirectDrawSurface3_PageLock(p,a)       ICOM_CALL_(PageLock,p,(p,a))
198105b261ecSmrg#define IDirectDrawSurface3_PageUnlock(p,a)     ICOM_CALL_(PageUnlock,p,(p,a))
198205b261ecSmrg/*** IDirectDrawSurface3 methods ***/
198305b261ecSmrg#define IDirectDrawSurface3_SetSurfaceDesc(p,a,b) ICOM_CALL_(SetSurfaceDesc,p,(p,a,b))
198405b261ecSmrg
198505b261ecSmrg/*****************************************************************************
198605b261ecSmrg * IDirectDrawSurface4 interface
198705b261ecSmrg */
198805b261ecSmrg/* Cannot inherit from IDirectDrawSurface2 because DDSCAPS changed to DDSCAPS2.
198905b261ecSmrg */
199005b261ecSmrg#undef INTERFACE
199105b261ecSmrg#define INTERFACE IDirectDrawSurface4
199235c4bbdfSmrg    DECLARE_INTERFACE_(IDirectDrawSurface4, IUnknown) {
199335c4bbdfSmrg        STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE;
199435c4bbdfSmrg        STDMETHOD_(ULONG, AddRef) (THIS) PURE;
199535c4bbdfSmrg        STDMETHOD_(ULONG, Release) (THIS) PURE;
199635c4bbdfSmrg        STDMETHOD(AddAttachedSurface) (THIS_ LPDIRECTDRAWSURFACE4
199735c4bbdfSmrg                                       lpDDSAttachedSurface) PURE;
199835c4bbdfSmrg        STDMETHOD(AddOverlayDirtyRect) (THIS_ LPRECT lpRect) PURE;
199935c4bbdfSmrg        STDMETHOD(Blt) (THIS_ LPRECT lpDestRect,
200035c4bbdfSmrg                        LPDIRECTDRAWSURFACE4 lpDDSrcSurface, LPRECT lpSrcRect,
200135c4bbdfSmrg                        DWORD dwFlags, LPDDBLTFX lpDDBltFx) PURE;
200235c4bbdfSmrg        STDMETHOD(BltBatch) (THIS_ LPDDBLTBATCH lpDDBltBatch, DWORD dwCount,
200335c4bbdfSmrg                             DWORD dwFlags) PURE;
200435c4bbdfSmrg        STDMETHOD(BltFast) (THIS_ DWORD dwX, DWORD dwY,
200535c4bbdfSmrg                            LPDIRECTDRAWSURFACE4 lpDDSrcSurface,
200635c4bbdfSmrg                            LPRECT lpSrcRect, DWORD dwTrans) PURE;
200735c4bbdfSmrg        STDMETHOD(DeleteAttachedSurface) (THIS_ DWORD dwFlags,
200835c4bbdfSmrg                                          LPDIRECTDRAWSURFACE4
200935c4bbdfSmrg                                          lpDDSAttachedSurface) PURE;
201035c4bbdfSmrg        STDMETHOD(EnumAttachedSurfaces) (THIS_ LPVOID lpContext,
201135c4bbdfSmrg                                         LPDDENUMSURFACESCALLBACK
201235c4bbdfSmrg                                         lpEnumSurfacesCallback) PURE;
201335c4bbdfSmrg        STDMETHOD(EnumOverlayZOrders) (THIS_ DWORD dwFlags, LPVOID lpContext,
201435c4bbdfSmrg                                       LPDDENUMSURFACESCALLBACK lpfnCallback)
201535c4bbdfSmrg            PURE;
201635c4bbdfSmrg        STDMETHOD(Flip) (THIS_ LPDIRECTDRAWSURFACE4 lpDDSurfaceTargetOverride,
201735c4bbdfSmrg                         DWORD dwFlags) PURE;
201835c4bbdfSmrg        STDMETHOD(GetAttachedSurface) (THIS_ LPDDSCAPS2 lpDDSCaps,
201935c4bbdfSmrg                                       LPDIRECTDRAWSURFACE4 *
202035c4bbdfSmrg                                       lplpDDAttachedSurface) PURE;
202135c4bbdfSmrg        STDMETHOD(GetBltStatus) (THIS_ DWORD dwFlags) PURE;
202235c4bbdfSmrg        STDMETHOD(GetCaps) (THIS_ LPDDSCAPS2 lpDDSCaps) PURE;
202335c4bbdfSmrg        STDMETHOD(GetClipper) (THIS_ LPDIRECTDRAWCLIPPER * lplpDDClipper) PURE;
202435c4bbdfSmrg        STDMETHOD(GetColorKey) (THIS_ DWORD dwFlags,
202535c4bbdfSmrg                                LPDDCOLORKEY lpDDColorKey) PURE;
202635c4bbdfSmrg        STDMETHOD(GetDC) (THIS_ HDC * lphDC) PURE;
202735c4bbdfSmrg        STDMETHOD(GetFlipStatus) (THIS_ DWORD dwFlags) PURE;
202835c4bbdfSmrg        STDMETHOD(GetOverlayPosition) (THIS_ LPLONG lplX, LPLONG lplY) PURE;
202935c4bbdfSmrg        STDMETHOD(GetPalette) (THIS_ LPDIRECTDRAWPALETTE * lplpDDPalette) PURE;
203035c4bbdfSmrg        STDMETHOD(GetPixelFormat) (THIS_ LPDDPIXELFORMAT lpDDPixelFormat) PURE;
203135c4bbdfSmrg        STDMETHOD(GetSurfaceDesc) (THIS_ LPDDSURFACEDESC lpDDSurfaceDesc) PURE;
203235c4bbdfSmrg        STDMETHOD(Initialize) (THIS_ LPDIRECTDRAW lpDD,
203335c4bbdfSmrg                               LPDDSURFACEDESC lpDDSurfaceDesc) PURE;
203435c4bbdfSmrg        STDMETHOD(IsLost) (THIS) PURE;
203535c4bbdfSmrg        STDMETHOD(Lock) (THIS_ LPRECT lpDestRect,
203635c4bbdfSmrg                         LPDDSURFACEDESC lpDDSurfaceDesc, DWORD dwFlags,
203735c4bbdfSmrg                         HANDLE hEvent) PURE;
203835c4bbdfSmrg        STDMETHOD(ReleaseDC) (THIS_ HDC hDC) PURE;
203935c4bbdfSmrg        STDMETHOD(Restore) (THIS) PURE;
204035c4bbdfSmrg        STDMETHOD(SetClipper) (THIS_ LPDIRECTDRAWCLIPPER lpDDClipper) PURE;
204135c4bbdfSmrg        STDMETHOD(SetColorKey) (THIS_ DWORD dwFlags,
204235c4bbdfSmrg                                LPDDCOLORKEY lpDDColorKey) PURE;
204335c4bbdfSmrg        STDMETHOD(SetOverlayPosition) (THIS_ LONG lX, LONG lY) PURE;
204435c4bbdfSmrg        STDMETHOD(SetPalette) (THIS_ LPDIRECTDRAWPALETTE lpDDPalette) PURE;
204535c4bbdfSmrg        STDMETHOD(Unlock) (THIS_ LPRECT lpSurfaceData) PURE;
204635c4bbdfSmrg        STDMETHOD(UpdateOverlay) (THIS_ LPRECT lpSrcRect,
204735c4bbdfSmrg                                  LPDIRECTDRAWSURFACE4 lpDDDestSurface,
204835c4bbdfSmrg                                  LPRECT lpDestRect, DWORD dwFlags,
204935c4bbdfSmrg                                  LPDDOVERLAYFX lpDDOverlayFx) PURE;
205035c4bbdfSmrg        STDMETHOD(UpdateOverlayDisplay) (THIS_ DWORD dwFlags) PURE;
205135c4bbdfSmrg        STDMETHOD(UpdateOverlayZOrder) (THIS_ DWORD dwFlags,
205235c4bbdfSmrg                                        LPDIRECTDRAWSURFACE4 lpDDSReference)
205335c4bbdfSmrg            PURE;
205435c4bbdfSmrg        /* added in v2 */
205535c4bbdfSmrg        STDMETHOD(GetDDInterface) (THIS_ LPVOID * lplpDD) PURE;
205635c4bbdfSmrg        STDMETHOD(PageLock) (THIS_ DWORD dwFlags) PURE;
205735c4bbdfSmrg        STDMETHOD(PageUnlock) (THIS_ DWORD dwFlags) PURE;
205835c4bbdfSmrg        /* added in v3 */
205935c4bbdfSmrg        STDMETHOD(SetSurfaceDesc) (THIS_ LPDDSURFACEDESC lpDDSD,
206035c4bbdfSmrg                                   DWORD dwFlags) PURE;
206135c4bbdfSmrg        /* added in v4 */
206235c4bbdfSmrg        STDMETHOD(SetPrivateData) (THIS_ REFGUID, LPVOID, DWORD, DWORD) PURE;
206335c4bbdfSmrg        STDMETHOD(GetPrivateData) (THIS_ REFGUID, LPVOID, LPDWORD) PURE;
206435c4bbdfSmrg        STDMETHOD(FreePrivateData) (THIS_ REFGUID) PURE;
206535c4bbdfSmrg        STDMETHOD(GetUniquenessValue) (THIS_ LPDWORD) PURE;
206635c4bbdfSmrg        STDMETHOD(ChangeUniquenessValue) (THIS) PURE;
206735c4bbdfSmrg    };
206805b261ecSmrg
206905b261ecSmrg    /*** IUnknown methods ***/
207005b261ecSmrg#define IDirectDrawSurface4_QueryInterface(p,a,b) ICOM_CALL_(QueryInterface,p,(p,a,b))
207105b261ecSmrg#define IDirectDrawSurface4_AddRef(p)             ICOM_CALL_(AddRef,p,(p))
207205b261ecSmrg#define IDirectDrawSurface4_Release(p)            ICOM_CALL_(Release,p,(p))
207305b261ecSmrg/*** IDirectDrawSurface (almost) methods ***/
207405b261ecSmrg#define IDirectDrawSurface4_AddAttachedSurface(p,a)      ICOM_CALL_(AddAttachedSurface,p,(p,a))
207505b261ecSmrg#define IDirectDrawSurface4_AddOverlayDirtyRect(p,a)     ICOM_CALL_(AddOverlayDirtyRect,p,(p,a))
207605b261ecSmrg#define IDirectDrawSurface4_Blt(p,a,b,c,d,e)             ICOM_CALL_(Blt,p,(p,a,b,c,d,e))
207705b261ecSmrg#define IDirectDrawSurface4_BltBatch(p,a,b,c)            ICOM_CALL_(BltBatch,p,(p,a,b,c))
207805b261ecSmrg#define IDirectDrawSurface4_BltFast(p,a,b,c,d,e)         ICOM_CALL_(BltFast,p,(p,a,b,c,d,e))
207905b261ecSmrg#define IDirectDrawSurface4_DeleteAttachedSurface(p,a,b) ICOM_CALL_(DeleteAttachedSurface,p,(p,a,b))
208005b261ecSmrg#define IDirectDrawSurface4_EnumAttachedSurfaces(p,a,b)  ICOM_CALL_(EnumAttachedSurfaces,p,(p,a,b))
208105b261ecSmrg#define IDirectDrawSurface4_EnumOverlayZOrders(p,a,b,c)  ICOM_CALL_(EnumOverlayZOrders,p,(p,a,b,c))
208205b261ecSmrg#define IDirectDrawSurface4_Flip(p,a,b)                  ICOM_CALL_(Flip,p,(p,a,b))
208305b261ecSmrg#define IDirectDrawSurface4_GetAttachedSurface(p,a,b)    ICOM_CALL_(GetAttachedSurface,p,(p,a,b))
208405b261ecSmrg#define IDirectDrawSurface4_GetBltStatus(p,a)            ICOM_CALL_(GetBltStatus,p,(p,a))
208505b261ecSmrg#define IDirectDrawSurface4_GetCaps(p,a)                 ICOM_CALL_(GetCaps,p,(p,a))
208605b261ecSmrg#define IDirectDrawSurface4_GetClipper(p,a)              ICOM_CALL_(GetClipper,p,(p,a))
208705b261ecSmrg#define IDirectDrawSurface4_GetColorKey(p,a,b)           ICOM_CALL_(GetColorKey,p,(p,a,b))
208805b261ecSmrg#define IDirectDrawSurface4_GetDC(p,a)                   ICOM_CALL_(GetDC,p,(p,a))
208905b261ecSmrg#define IDirectDrawSurface4_GetFlipStatus(p,a)           ICOM_CALL_(GetFlipStatus,p,(p,a))
209005b261ecSmrg#define IDirectDrawSurface4_GetOverlayPosition(p,a,b)    ICOM_CALL_(GetOverlayPosition,p,(p,a,b))
209105b261ecSmrg#define IDirectDrawSurface4_GetPalette(p,a)              ICOM_CALL_(GetPalette,p,(p,a))
209205b261ecSmrg#define IDirectDrawSurface4_GetPixelFormat(p,a)          ICOM_CALL_(GetPixelFormat,p,(p,a))
209305b261ecSmrg#define IDirectDrawSurface4_GetSurfaceDesc(p,a)          ICOM_CALL_(GetSurfaceDesc,p,(p,a))
209405b261ecSmrg#define IDirectDrawSurface4_Initialize(p,a,b)            ICOM_CALL_(Initialize,p,(p,a,b))
209505b261ecSmrg#define IDirectDrawSurface4_IsLost(p)                    ICOM_CALL_(IsLost,p,(p))
209605b261ecSmrg#define IDirectDrawSurface4_Lock(p,a,b,c,d)              ICOM_CALL_(Lock,p,(p,a,b,c,d))
209705b261ecSmrg#define IDirectDrawSurface4_ReleaseDC(p,a)               ICOM_CALL_(ReleaseDC,p,(p,a))
209805b261ecSmrg#define IDirectDrawSurface4_Restore(p)                   ICOM_CALL_(Restore,p,(p))
209905b261ecSmrg#define IDirectDrawSurface4_SetClipper(p,a)              ICOM_CALL_(SetClipper,p,(p,a))
210005b261ecSmrg#define IDirectDrawSurface4_SetColorKey(p,a,b)           ICOM_CALL_(SetColorKey,p,(p,a,b))
210105b261ecSmrg#define IDirectDrawSurface4_SetOverlayPosition(p,a,b)    ICOM_CALL_(SetOverlayPosition,p,(p,a,b))
210205b261ecSmrg#define IDirectDrawSurface4_SetPalette(p,a)              ICOM_CALL_(SetPalette,p,(p,a))
210305b261ecSmrg#define IDirectDrawSurface4_Unlock(p,a)                  ICOM_CALL_(Unlock,p,(p,a))
210405b261ecSmrg#define IDirectDrawSurface4_UpdateOverlay(p,a,b,c,d,e)   ICOM_CALL_(UpdateOverlay,p,(p,a,b,c,d,e))
210505b261ecSmrg#define IDirectDrawSurface4_UpdateOverlayDisplay(p,a)    ICOM_CALL_(UpdateOverlayDisplay,p,(p,a))
210605b261ecSmrg#define IDirectDrawSurface4_UpdateOverlayZOrder(p,a,b)   ICOM_CALL_(UpdateOverlayZOrder,p,(p,a,b))
210705b261ecSmrg/*** IDirectDrawSurface2 methods ***/
210805b261ecSmrg#define IDirectDrawSurface4_GetDDInterface(p,a) ICOM_CALL_(GetDDInterface,p,(p,a))
210905b261ecSmrg#define IDirectDrawSurface4_PageLock(p,a)       ICOM_CALL_(PageLock,p,(p,a))
211005b261ecSmrg#define IDirectDrawSurface4_PageUnlock(p,a)     ICOM_CALL_(PageUnlock,p,(p,a))
211105b261ecSmrg/*** IDirectDrawSurface3 methods ***/
211205b261ecSmrg#define IDirectDrawSurface4_SetSurfaceDesc(p,a,b) ICOM_CALL_(SetSurfaceDesc,p,(p,a,b))
211305b261ecSmrg/*** IDirectDrawSurface4 methods ***/
211405b261ecSmrg#define IDirectDrawSurface4_SetPrivateData(p,a,b,c,d) ICOM_CALL_(SetPrivateData,p,(p,a,b,c,d))
211505b261ecSmrg#define IDirectDrawSurface4_GetPrivateData(p,a,b,c)   ICOM_CALL_(GetPrivateData,p,(p,a,b,c))
211605b261ecSmrg#define IDirectDrawSurface4_FreePrivateData(p,a)      ICOM_CALL_(FreePrivateData,p,(p,a))
211705b261ecSmrg#define IDirectDrawSurface4_GetUniquenessValue(p,a)   ICOM_CALL_(GetUniquenessValue,p,(p,a))
211805b261ecSmrg#define IDirectDrawSurface4_ChangeUniquenessValue(p)  ICOM_CALL_(ChangeUniquenessValue,p,(p))
211905b261ecSmrg
212005b261ecSmrg/*****************************************************************************
212105b261ecSmrg * IDirectDrawSurface7 interface
212205b261ecSmrg */
212305b261ecSmrg#undef INTERFACE
212405b261ecSmrg#define INTERFACE IDirectDrawSurface7
212535c4bbdfSmrg    DECLARE_INTERFACE_(IDirectDrawSurface7, IUnknown) {
212635c4bbdfSmrg        STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE;
212735c4bbdfSmrg        STDMETHOD_(ULONG, AddRef) (THIS) PURE;
212835c4bbdfSmrg        STDMETHOD_(ULONG, Release) (THIS) PURE;
212935c4bbdfSmrg        STDMETHOD(AddAttachedSurface) (THIS_ LPDIRECTDRAWSURFACE7
213035c4bbdfSmrg                                       lpDDSAttachedSurface) PURE;
213135c4bbdfSmrg        STDMETHOD(AddOverlayDirtyRect) (THIS_ LPRECT lpRect) PURE;
213235c4bbdfSmrg        STDMETHOD(Blt) (THIS_ LPRECT lpDestRect,
213335c4bbdfSmrg                        LPDIRECTDRAWSURFACE7 lpDDSrcSurface, LPRECT lpSrcRect,
213435c4bbdfSmrg                        DWORD dwFlags, LPDDBLTFX lpDDBltFx) PURE;
213535c4bbdfSmrg        STDMETHOD(BltBatch) (THIS_ LPDDBLTBATCH lpDDBltBatch, DWORD dwCount,
213635c4bbdfSmrg                             DWORD dwFlags) PURE;
213735c4bbdfSmrg        STDMETHOD(BltFast) (THIS_ DWORD dwX, DWORD dwY,
213835c4bbdfSmrg                            LPDIRECTDRAWSURFACE7 lpDDSrcSurface,
213935c4bbdfSmrg                            LPRECT lpSrcRect, DWORD dwTrans) PURE;
214035c4bbdfSmrg        STDMETHOD(DeleteAttachedSurface) (THIS_ DWORD dwFlags,
214135c4bbdfSmrg                                          LPDIRECTDRAWSURFACE7
214235c4bbdfSmrg                                          lpDDSAttachedSurface) PURE;
214335c4bbdfSmrg        STDMETHOD(EnumAttachedSurfaces) (THIS_ LPVOID lpContext,
214435c4bbdfSmrg                                         LPDDENUMSURFACESCALLBACK7
214535c4bbdfSmrg                                         lpEnumSurfacesCallback) PURE;
214635c4bbdfSmrg        STDMETHOD(EnumOverlayZOrders) (THIS_ DWORD dwFlags, LPVOID lpContext,
214735c4bbdfSmrg                                       LPDDENUMSURFACESCALLBACK7 lpfnCallback)
214835c4bbdfSmrg            PURE;
214935c4bbdfSmrg        STDMETHOD(Flip) (THIS_ LPDIRECTDRAWSURFACE7 lpDDSurfaceTargetOverride,
215035c4bbdfSmrg                         DWORD dwFlags) PURE;
215135c4bbdfSmrg        STDMETHOD(GetAttachedSurface) (THIS_ LPDDSCAPS2 lpDDSCaps,
215235c4bbdfSmrg                                       LPDIRECTDRAWSURFACE7 *
215335c4bbdfSmrg                                       lplpDDAttachedSurface) PURE;
215435c4bbdfSmrg        STDMETHOD(GetBltStatus) (THIS_ DWORD dwFlags) PURE;
215535c4bbdfSmrg        STDMETHOD(GetCaps) (THIS_ LPDDSCAPS2 lpDDSCaps) PURE;
215635c4bbdfSmrg        STDMETHOD(GetClipper) (THIS_ LPDIRECTDRAWCLIPPER * lplpDDClipper) PURE;
215735c4bbdfSmrg        STDMETHOD(GetColorKey) (THIS_ DWORD dwFlags,
215835c4bbdfSmrg                                LPDDCOLORKEY lpDDColorKey) PURE;
215935c4bbdfSmrg        STDMETHOD(GetDC) (THIS_ HDC * lphDC) PURE;
216035c4bbdfSmrg        STDMETHOD(GetFlipStatus) (THIS_ DWORD dwFlags) PURE;
216135c4bbdfSmrg        STDMETHOD(GetOverlayPosition) (THIS_ LPLONG lplX, LPLONG lplY) PURE;
216235c4bbdfSmrg        STDMETHOD(GetPalette) (THIS_ LPDIRECTDRAWPALETTE * lplpDDPalette) PURE;
216335c4bbdfSmrg        STDMETHOD(GetPixelFormat) (THIS_ LPDDPIXELFORMAT lpDDPixelFormat) PURE;
216435c4bbdfSmrg        STDMETHOD(GetSurfaceDesc) (THIS_ LPDDSURFACEDESC2 lpDDSurfaceDesc) PURE;
216535c4bbdfSmrg        STDMETHOD(Initialize) (THIS_ LPDIRECTDRAW lpDD,
216635c4bbdfSmrg                               LPDDSURFACEDESC2 lpDDSurfaceDesc) PURE;
216735c4bbdfSmrg        STDMETHOD(IsLost) (THIS) PURE;
216835c4bbdfSmrg        STDMETHOD(Lock) (THIS_ LPRECT lpDestRect,
216935c4bbdfSmrg                         LPDDSURFACEDESC2 lpDDSurfaceDesc, DWORD dwFlags,
217035c4bbdfSmrg                         HANDLE hEvent) PURE;
217135c4bbdfSmrg        STDMETHOD(ReleaseDC) (THIS_ HDC hDC) PURE;
217235c4bbdfSmrg        STDMETHOD(Restore) (THIS) PURE;
217335c4bbdfSmrg        STDMETHOD(SetClipper) (THIS_ LPDIRECTDRAWCLIPPER lpDDClipper) PURE;
217435c4bbdfSmrg        STDMETHOD(SetColorKey) (THIS_ DWORD dwFlags,
217535c4bbdfSmrg                                LPDDCOLORKEY lpDDColorKey) PURE;
217635c4bbdfSmrg        STDMETHOD(SetOverlayPosition) (THIS_ LONG lX, LONG lY) PURE;
217735c4bbdfSmrg        STDMETHOD(SetPalette) (THIS_ LPDIRECTDRAWPALETTE lpDDPalette) PURE;
217835c4bbdfSmrg        STDMETHOD(Unlock) (THIS_ LPRECT lpSurfaceData) PURE;
217935c4bbdfSmrg        STDMETHOD(UpdateOverlay) (THIS_ LPRECT lpSrcRect,
218035c4bbdfSmrg                                  LPDIRECTDRAWSURFACE7 lpDDDestSurface,
218135c4bbdfSmrg                                  LPRECT lpDestRect, DWORD dwFlags,
218235c4bbdfSmrg                                  LPDDOVERLAYFX lpDDOverlayFx) PURE;
218335c4bbdfSmrg        STDMETHOD(UpdateOverlayDisplay) (THIS_ DWORD dwFlags) PURE;
218435c4bbdfSmrg        STDMETHOD(UpdateOverlayZOrder) (THIS_ DWORD dwFlags,
218535c4bbdfSmrg                                        LPDIRECTDRAWSURFACE7 lpDDSReference)
218635c4bbdfSmrg            PURE;
218735c4bbdfSmrg        /* added in v2 */
218835c4bbdfSmrg        STDMETHOD(GetDDInterface) (THIS_ LPVOID * lplpDD) PURE;
218935c4bbdfSmrg        STDMETHOD(PageLock) (THIS_ DWORD dwFlags) PURE;
219035c4bbdfSmrg        STDMETHOD(PageUnlock) (THIS_ DWORD dwFlags) PURE;
219135c4bbdfSmrg        /* added in v3 */
219235c4bbdfSmrg        STDMETHOD(SetSurfaceDesc) (THIS_ LPDDSURFACEDESC2 lpDDSD,
219335c4bbdfSmrg                                   DWORD dwFlags) PURE;
219435c4bbdfSmrg        /* added in v4 */
219535c4bbdfSmrg        STDMETHOD(SetPrivateData) (THIS_ REFGUID, LPVOID, DWORD, DWORD) PURE;
219635c4bbdfSmrg        STDMETHOD(GetPrivateData) (THIS_ REFGUID, LPVOID, LPDWORD) PURE;
219735c4bbdfSmrg        STDMETHOD(FreePrivateData) (THIS_ REFGUID) PURE;
219835c4bbdfSmrg        STDMETHOD(GetUniquenessValue) (THIS_ LPDWORD) PURE;
219935c4bbdfSmrg        STDMETHOD(ChangeUniquenessValue) (THIS) PURE;
220035c4bbdfSmrg        /* added in v7 */
220135c4bbdfSmrg        STDMETHOD(SetPriority) (THIS_ DWORD prio) PURE;
220235c4bbdfSmrg        STDMETHOD(GetPriority) (THIS_ LPDWORD prio) PURE;
220335c4bbdfSmrg        STDMETHOD(SetLOD) (THIS_ DWORD lod) PURE;
220435c4bbdfSmrg        STDMETHOD(GetLOD) (THIS_ LPDWORD lod) PURE;
220535c4bbdfSmrg    };
220605b261ecSmrg
220705b261ecSmrg    /*** IUnknown methods ***/
220805b261ecSmrg#define IDirectDrawSurface7_QueryInterface(p,a,b) ICOM_CALL_(QueryInterface,p,(p,a,b))
220905b261ecSmrg#define IDirectDrawSurface7_AddRef(p)             ICOM_CALL_(AddRef,p,(p))
221005b261ecSmrg#define IDirectDrawSurface7_Release(p)            ICOM_CALL_(Release,p,(p))
221105b261ecSmrg/*** IDirectDrawSurface (almost) methods ***/
221205b261ecSmrg#define IDirectDrawSurface7_AddAttachedSurface(p,a)      ICOM_CALL_(AddAttachedSurface,p,(p,a))
221305b261ecSmrg#define IDirectDrawSurface7_AddOverlayDirtyRect(p,a)     ICOM_CALL_(AddOverlayDirtyRect,p,(p,a))
221405b261ecSmrg#define IDirectDrawSurface7_Blt(p,a,b,c,d,e)             ICOM_CALL_(Blt,p,(p,a,b,c,d,e))
221505b261ecSmrg#define IDirectDrawSurface7_BltBatch(p,a,b,c)            ICOM_CALL_(BltBatch,p,(p,a,b,c))
221605b261ecSmrg#define IDirectDrawSurface7_BltFast(p,a,b,c,d,e)         ICOM_CALL_(BltFast,p,(p,a,b,c,d,e))
221705b261ecSmrg#define IDirectDrawSurface7_DeleteAttachedSurface(p,a,b) ICOM_CALL_(DeleteAttachedSurface,p,(p,a,b))
221805b261ecSmrg#define IDirectDrawSurface7_EnumAttachedSurfaces(p,a,b)  ICOM_CALL_(EnumAttachedSurfaces,p,(p,a,b))
221905b261ecSmrg#define IDirectDrawSurface7_EnumOverlayZOrders(p,a,b,c)  ICOM_CALL_(EnumOverlayZOrders,p,(p,a,b,c))
222005b261ecSmrg#define IDirectDrawSurface7_Flip(p,a,b)                  ICOM_CALL_(Flip,p,(p,a,b))
222105b261ecSmrg#define IDirectDrawSurface7_GetAttachedSurface(p,a,b)    ICOM_CALL_(GetAttachedSurface,p,(p,a,b))
222205b261ecSmrg#define IDirectDrawSurface7_GetBltStatus(p,a)            ICOM_CALL_(GetBltStatus,p,(p,a))
222305b261ecSmrg#define IDirectDrawSurface7_GetCaps(p,a)                 ICOM_CALL_(GetCaps,p,(p,a))
222405b261ecSmrg#define IDirectDrawSurface7_GetClipper(p,a)              ICOM_CALL_(GetClipper,p,(p,a))
222505b261ecSmrg#define IDirectDrawSurface7_GetColorKey(p,a,b)           ICOM_CALL_(GetColorKey,p,(p,a,b))
222605b261ecSmrg#define IDirectDrawSurface7_GetDC(p,a)                   ICOM_CALL_(GetDC,p,(p,a))
222705b261ecSmrg#define IDirectDrawSurface7_GetFlipStatus(p,a)           ICOM_CALL_(GetFlipStatus,p,(p,a))
222805b261ecSmrg#define IDirectDrawSurface7_GetOverlayPosition(p,a,b)    ICOM_CALL_(GetOverlayPosition,p,(p,a,b))
222905b261ecSmrg#define IDirectDrawSurface7_GetPalette(p,a)              ICOM_CALL_(GetPalette,p,(p,a))
223005b261ecSmrg#define IDirectDrawSurface7_GetPixelFormat(p,a)          ICOM_CALL_(GetPixelFormat,p,(p,a))
223105b261ecSmrg#define IDirectDrawSurface7_GetSurfaceDesc(p,a)          ICOM_CALL_(GetSurfaceDesc,p,(p,a))
223205b261ecSmrg#define IDirectDrawSurface7_Initialize(p,a,b)            ICOM_CALL_(Initialize,p,(p,a,b))
223305b261ecSmrg#define IDirectDrawSurface7_IsLost(p)                    ICOM_CALL_(IsLost,p,(p))
223405b261ecSmrg#define IDirectDrawSurface7_Lock(p,a,b,c,d)              ICOM_CALL_(Lock,p,(p,a,b,c,d))
223505b261ecSmrg#define IDirectDrawSurface7_ReleaseDC(p,a)               ICOM_CALL_(ReleaseDC,p,(p,a))
223605b261ecSmrg#define IDirectDrawSurface7_Restore(p)                   ICOM_CALL_(Restore,p,(p))
223705b261ecSmrg#define IDirectDrawSurface7_SetClipper(p,a)              ICOM_CALL_(SetClipper,p,(p,a))
223805b261ecSmrg#define IDirectDrawSurface7_SetColorKey(p,a,b)           ICOM_CALL_(SetColorKey,p,(p,a,b))
223905b261ecSmrg#define IDirectDrawSurface7_SetOverlayPosition(p,a,b)    ICOM_CALL_(SetOverlayPosition,p,(p,a,b))
224005b261ecSmrg#define IDirectDrawSurface7_SetPalette(p,a)              ICOM_CALL_(SetPalette,p,(p,a))
224105b261ecSmrg#define IDirectDrawSurface7_Unlock(p,a)                  ICOM_CALL_(Unlock,p,(p,a))
224205b261ecSmrg#define IDirectDrawSurface7_UpdateOverlay(p,a,b,c,d,e)   ICOM_CALL_(UpdateOverlay,p,(p,a,b,c,d,e))
224305b261ecSmrg#define IDirectDrawSurface7_UpdateOverlayDisplay(p,a)    ICOM_CALL_(UpdateOverlayDisplay,p,(p,a))
224405b261ecSmrg#define IDirectDrawSurface7_UpdateOverlayZOrder(p,a,b)   ICOM_CALL_(UpdateOverlayZOrder,p,(p,a,b))
224505b261ecSmrg/*** IDirectDrawSurface2 methods ***/
224605b261ecSmrg#define IDirectDrawSurface7_GetDDInterface(p,a) ICOM_CALL_(GetDDInterface,p,(p,a))
224705b261ecSmrg#define IDirectDrawSurface7_PageLock(p,a)       ICOM_CALL_(PageLock,p,(p,a))
224805b261ecSmrg#define IDirectDrawSurface7_PageUnlock(p,a)     ICOM_CALL_(PageUnlock,p,(p,a))
224905b261ecSmrg/*** IDirectDrawSurface3 methods ***/
225005b261ecSmrg#define IDirectDrawSurface7_SetSurfaceDesc(p,a,b) ICOM_CALL_(SetSurfaceDesc,p,(p,a,b))
225105b261ecSmrg/*** IDirectDrawSurface4 methods ***/
225205b261ecSmrg#define IDirectDrawSurface7_SetPrivateData(p,a,b,c,d) ICOM_CALL_(SetPrivateData,p,(p,a,b,c,d))
225305b261ecSmrg#define IDirectDrawSurface7_GetPrivateData(p,a,b,c)   ICOM_CALL_(GetPrivateData,p,(p,a,b,c))
225405b261ecSmrg#define IDirectDrawSurface7_FreePrivateData(p,a)      ICOM_CALL_(FreePrivateData,p,(p,a))
225505b261ecSmrg#define IDirectDrawSurface7_GetUniquenessValue(p,a)   ICOM_CALL_(GetUniquenessValue,p,(p,a))
225605b261ecSmrg#define IDirectDrawSurface7_ChangeUniquenessValue(p)  ICOM_CALL_(ChangeUniquenessValue,p,(p))
225705b261ecSmrg/*** IDirectDrawSurface7 methods ***/
225805b261ecSmrg#define IDirectDrawSurface7_SetPriority(p,a)          ICOM_CALL_(SetPriority,p,(p,a))
225905b261ecSmrg#define IDirectDrawSurface7_GetPriority(p,a)          ICOM_CALL_(GetPriority,p,(p,a))
226005b261ecSmrg#define IDirectDrawSurface7_SetLOD(p,a)               ICOM_CALL_(SetLOD,p,(p,a))
226105b261ecSmrg#define IDirectDrawSurface7_GetLOD(p,a)               ICOM_CALL_(GetLOD,p,(p,a))
226205b261ecSmrg
226305b261ecSmrg/*****************************************************************************
226405b261ecSmrg * IDirectDrawColorControl interface
226505b261ecSmrg */
226605b261ecSmrg#undef INTERFACE
226705b261ecSmrg#define INTERFACE IDirectDrawColorControl
226835c4bbdfSmrg    DECLARE_INTERFACE_(IDirectDrawColorControl, IUnknown) {
226935c4bbdfSmrg        STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE;
227035c4bbdfSmrg        STDMETHOD_(ULONG, AddRef) (THIS) PURE;
227135c4bbdfSmrg        STDMETHOD_(ULONG, Release) (THIS) PURE;
227235c4bbdfSmrg        STDMETHOD(GetColorControls) (THIS_ LPDDCOLORCONTROL lpColorControl)
227335c4bbdfSmrg            PURE;
227435c4bbdfSmrg        STDMETHOD(SetColorControls) (THIS_ LPDDCOLORCONTROL lpColorControl)
227535c4bbdfSmrg            PURE;
227635c4bbdfSmrg    };
227735c4bbdfSmrg
227835c4bbdfSmrg        /*** IUnknown methods ***/
227905b261ecSmrg#define IDirectDrawColorControl_QueryInterface(p,a,b) ICOM_CALL_(QueryInterface,p,(p,a,b))
228005b261ecSmrg#define IDirectDrawColorControl_AddRef(p)             ICOM_CALL_(AddRef,p,(p))
228105b261ecSmrg#define IDirectDrawColorControl_Release(p)            ICOM_CALL_(Release,p,(p))
228235c4bbdfSmrg        /*** IDirectDrawColorControl methods ***/
228305b261ecSmrg#define IDirectDrawColorControl_GetColorControls(p,a) ICOM_CALL_(GetColorControls,p,(p,a))
228405b261ecSmrg#define IDirectDrawColorControl_SetColorControls(p,a) ICOM_CALL_(SetColorControls,p,(p,a))
228505b261ecSmrg
228605b261ecSmrg/*****************************************************************************
228705b261ecSmrg * IDirectDrawGammaControl interface
228805b261ecSmrg */
228905b261ecSmrg#undef INTERFACE
229005b261ecSmrg#define INTERFACE IDirectDrawGammaControl
229135c4bbdfSmrg    DECLARE_INTERFACE_(IDirectDrawGammaControl, IUnknown) {
229235c4bbdfSmrg        STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE;
229335c4bbdfSmrg        STDMETHOD_(ULONG, AddRef) (THIS) PURE;
229435c4bbdfSmrg        STDMETHOD_(ULONG, Release) (THIS) PURE;
229535c4bbdfSmrg        STDMETHOD(GetGammaRamp) (THIS_ DWORD dwFlags,
229635c4bbdfSmrg                                 LPDDGAMMARAMP lpGammaRamp) PURE;
229735c4bbdfSmrg        STDMETHOD(SetGammaRamp) (THIS_ DWORD dwFlags,
229835c4bbdfSmrg                                 LPDDGAMMARAMP lpGammaRamp) PURE;
229935c4bbdfSmrg    };
230035c4bbdfSmrg
230135c4bbdfSmrg        /*** IUnknown methods ***/
230205b261ecSmrg#define IDirectDrawGammaControl_QueryInterface(p,a,b) ICOM_CALL_(QueryInterface,p,(p,a,b))
230305b261ecSmrg#define IDirectDrawGammaControl_AddRef(p)             ICOM_CALL_(AddRef,p,(p))
230405b261ecSmrg#define IDirectDrawGammaControl_Release(p)            ICOM_CALL_(Release,p,(p))
230535c4bbdfSmrg        /*** IDirectDrawGammaControl methods ***/
230605b261ecSmrg#define IDirectDrawGammaControl_GetGammaRamp(p,a,b)   ICOM_CALL_(GetGammaRamp,p,(p,a,b))
230705b261ecSmrg#define IDirectDrawGammaControl_SetGammaRamp(p,a,b)   ICOM_CALL_(SetGammaRamp,p,(p,a,b))
230805b261ecSmrg
230935c4bbdfSmrg    HRESULT WINAPI DirectDrawCreate(LPGUID, LPDIRECTDRAW *, LPUNKNOWN);
231035c4bbdfSmrg    HRESULT WINAPI DirectDrawCreateEx(LPGUID, LPVOID *, REFIID, LPUNKNOWN);
231135c4bbdfSmrg    HRESULT WINAPI DirectDrawEnumerateA(LPDDENUMCALLBACKA, LPVOID);
231235c4bbdfSmrg    HRESULT WINAPI DirectDrawEnumerateW(LPDDENUMCALLBACKW, LPVOID);
231305b261ecSmrg
231405b261ecSmrg#define DirectDrawEnumerate WINELIB_NAME_AW(DirectDrawEnumerate)
231535c4bbdfSmrg    HRESULT WINAPI DirectDrawCreateClipper(DWORD, LPDIRECTDRAWCLIPPER *,
231635c4bbdfSmrg                                           LPUNKNOWN);
231705b261ecSmrg
231805b261ecSmrg#ifdef __cplusplus
231935c4bbdfSmrg}                               /* extern "C" */
232035c4bbdfSmrg#endif                          /* defined(__cplusplus) */
232105b261ecSmrg
232235c4bbdfSmrg#endif                          /* __XWIN_DDRAW_H */
2323