ddraw.h revision 05b261ec
105b261ecSmrg#ifndef __XWIN_DDRAW_H
205b261ecSmrg#define __XWIN_DDRAW_H
305b261ecSmrg
405b261ecSmrg#include <winnt.h>
505b261ecSmrg#include <wingdi.h>
605b261ecSmrg#include <objbase.h>
705b261ecSmrg
805b261ecSmrg#if defined(NONAMELESSUNION) && !defined(DUMMYUNIONNAME1)
905b261ecSmrg#define DUMMYUNIONNAME1 u1
1005b261ecSmrg#endif
1105b261ecSmrg
1205b261ecSmrg#define ICOM_CALL_( xfn, p, args) (p)->lpVtbl->xfn args
1305b261ecSmrg
1405b261ecSmrg# ifdef UNICODE
1505b261ecSmrg#  define WINELIB_NAME_AW(func) func##W
1605b261ecSmrg# else
1705b261ecSmrg#  define WINELIB_NAME_AW(func) func##A
1805b261ecSmrg# endif  /* UNICODE */
1905b261ecSmrg#define DECL_WINELIB_TYPE_AW(type)  typedef WINELIB_NAME_AW(type) type;
2005b261ecSmrg
2105b261ecSmrg#ifdef __cplusplus
2205b261ecSmrgextern "C" {
2305b261ecSmrg#endif /* defined(__cplusplus) */
2405b261ecSmrg
2505b261ecSmrg#ifndef	DIRECTDRAW_VERSION
2605b261ecSmrg#define	DIRECTDRAW_VERSION	0x0700
2705b261ecSmrg#endif /* DIRECTDRAW_VERSION */
2805b261ecSmrg
2905b261ecSmrg/*****************************************************************************
3005b261ecSmrg * Predeclare the interfaces
3105b261ecSmrg */
3205b261ecSmrgDEFINE_GUID( CLSID_DirectDraw,		0xD7B70EE0,0x4340,0x11CF,0xB0,0x63,0x00,0x20,0xAF,0xC2,0xCD,0x35 );
3305b261ecSmrgDEFINE_GUID( CLSID_DirectDraw7,         0x3C305196,0x50DB,0x11D3,0x9C,0xFE,0x00,0xC0,0x4F,0xD9,0x30,0xC5 );
3405b261ecSmrgDEFINE_GUID( CLSID_DirectDrawClipper,	0x593817A0,0x7DB3,0x11CF,0xA2,0xDE,0x00,0xAA,0x00,0xb9,0x33,0x56 );
3505b261ecSmrgDEFINE_GUID( IID_IDirectDraw,		0x6C14DB80,0xA733,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60 );
3605b261ecSmrgDEFINE_GUID( IID_IDirectDraw2,		0xB3A6F3E0,0x2B43,0x11CF,0xA2,0xDE,0x00,0xAA,0x00,0xB9,0x33,0x56 );
3705b261ecSmrgDEFINE_GUID( IID_IDirectDraw4,          0x9c59509a,0x39bd,0x11d1,0x8c,0x4a,0x00,0xc0,0x4f,0xd9,0x30,0xc5 );
3805b261ecSmrgDEFINE_GUID( IID_IDirectDraw7,          0x15e65ec0,0x3b9c,0x11d2,0xb9,0x2f,0x00,0x60,0x97,0x97,0xea,0x5b );
3905b261ecSmrgDEFINE_GUID( IID_IDirectDrawSurface,	0x6C14DB81,0xA733,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60 );
4005b261ecSmrgDEFINE_GUID( IID_IDirectDrawSurface2,	0x57805885,0x6eec,0x11cf,0x94,0x41,0xa8,0x23,0x03,0xc1,0x0e,0x27 );
4105b261ecSmrgDEFINE_GUID( IID_IDirectDrawSurface3,	0xDA044E00,0x69B2,0x11D0,0xA1,0xD5,0x00,0xAA,0x00,0xB8,0xDF,0xBB );
4205b261ecSmrgDEFINE_GUID( IID_IDirectDrawSurface4,   0x0B2B8630,0xAD35,0x11D0,0x8E,0xA6,0x00,0x60,0x97,0x97,0xEA,0x5B );
4305b261ecSmrgDEFINE_GUID( IID_IDirectDrawSurface7,   0x06675a80,0x3b9b,0x11d2,0xb9,0x2f,0x00,0x60,0x97,0x97,0xea,0x5b );
4405b261ecSmrgDEFINE_GUID( IID_IDirectDrawPalette,	0x6C14DB84,0xA733,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60 );
4505b261ecSmrgDEFINE_GUID( IID_IDirectDrawClipper,	0x6C14DB85,0xA733,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60 );
4605b261ecSmrgDEFINE_GUID( IID_IDirectDrawColorControl,0x4B9F0EE0,0x0D7E,0x11D0,0x9B,0x06,0x00,0xA0,0xC9,0x03,0xA3,0xB8 );
4705b261ecSmrgDEFINE_GUID( IID_IDirectDrawGammaControl,0x69C11C3E,0xB46B,0x11D1,0xAD,0x7A,0x00,0xC0,0x4F,0xC2,0x9B,0x4E );
4805b261ecSmrg
4905b261ecSmrgtypedef struct IDirectDraw *LPDIRECTDRAW;
5005b261ecSmrgtypedef struct IDirectDraw2 *LPDIRECTDRAW2;
5105b261ecSmrgtypedef struct IDirectDraw4 *LPDIRECTDRAW4;
5205b261ecSmrgtypedef struct IDirectDraw7 *LPDIRECTDRAW7;
5305b261ecSmrgtypedef struct IDirectDrawClipper *LPDIRECTDRAWCLIPPER;
5405b261ecSmrgtypedef struct IDirectDrawPalette *LPDIRECTDRAWPALETTE;
5505b261ecSmrgtypedef struct IDirectDrawSurface *LPDIRECTDRAWSURFACE;
5605b261ecSmrgtypedef struct IDirectDrawSurface2 *LPDIRECTDRAWSURFACE2;
5705b261ecSmrgtypedef struct IDirectDrawSurface3 *LPDIRECTDRAWSURFACE3;
5805b261ecSmrgtypedef struct IDirectDrawSurface4 *LPDIRECTDRAWSURFACE4;
5905b261ecSmrgtypedef struct IDirectDrawSurface7 *LPDIRECTDRAWSURFACE7;
6005b261ecSmrgtypedef struct IDirectDrawColorControl *LPDIRECTDRAWCOLORCONTROL;
6105b261ecSmrgtypedef struct IDirectDrawGammaControl *LPDIRECTDRAWGAMMACONTROL;
6205b261ecSmrg
6305b261ecSmrg
6405b261ecSmrg#define DDENUMRET_CANCEL	0
6505b261ecSmrg#define DDENUMRET_OK		1
6605b261ecSmrg
6705b261ecSmrg#define DD_OK			0
6805b261ecSmrg
6905b261ecSmrg
7005b261ecSmrg#define _FACDD		0x876
7105b261ecSmrg#define MAKE_DDHRESULT( code )  MAKE_HRESULT( 1, _FACDD, code )
7205b261ecSmrg
7305b261ecSmrg#define DDERR_ALREADYINITIALIZED		MAKE_DDHRESULT( 5 )
7405b261ecSmrg#define DDERR_CANNOTATTACHSURFACE		MAKE_DDHRESULT( 10 )
7505b261ecSmrg#define DDERR_CANNOTDETACHSURFACE		MAKE_DDHRESULT( 20 )
7605b261ecSmrg#define DDERR_CURRENTLYNOTAVAIL			MAKE_DDHRESULT( 40 )
7705b261ecSmrg#define DDERR_EXCEPTION				MAKE_DDHRESULT( 55 )
7805b261ecSmrg#define DDERR_GENERIC				E_FAIL
7905b261ecSmrg#define DDERR_HEIGHTALIGN			MAKE_DDHRESULT( 90 )
8005b261ecSmrg#define DDERR_INCOMPATIBLEPRIMARY		MAKE_DDHRESULT( 95 )
8105b261ecSmrg#define DDERR_INVALIDCAPS			MAKE_DDHRESULT( 100 )
8205b261ecSmrg#define DDERR_INVALIDCLIPLIST			MAKE_DDHRESULT( 110 )
8305b261ecSmrg#define DDERR_INVALIDMODE			MAKE_DDHRESULT( 120 )
8405b261ecSmrg#define DDERR_INVALIDOBJECT			MAKE_DDHRESULT( 130 )
8505b261ecSmrg#define DDERR_INVALIDPARAMS			E_INVALIDARG
8605b261ecSmrg#define DDERR_INVALIDPIXELFORMAT		MAKE_DDHRESULT( 145 )
8705b261ecSmrg#define DDERR_INVALIDRECT			MAKE_DDHRESULT( 150 )
8805b261ecSmrg#define DDERR_LOCKEDSURFACES			MAKE_DDHRESULT( 160 )
8905b261ecSmrg#define DDERR_NO3D				MAKE_DDHRESULT( 170 )
9005b261ecSmrg#define DDERR_NOALPHAHW				MAKE_DDHRESULT( 180 )
9105b261ecSmrg#define DDERR_NOSTEREOHARDWARE          	MAKE_DDHRESULT( 181 )
9205b261ecSmrg#define DDERR_NOSURFACELEFT                     MAKE_DDHRESULT( 182 )
9305b261ecSmrg#define DDERR_NOCLIPLIST			MAKE_DDHRESULT( 205 )
9405b261ecSmrg#define DDERR_NOCOLORCONVHW			MAKE_DDHRESULT( 210 )
9505b261ecSmrg#define DDERR_NOCOOPERATIVELEVELSET		MAKE_DDHRESULT( 212 )
9605b261ecSmrg#define DDERR_NOCOLORKEY			MAKE_DDHRESULT( 215 )
9705b261ecSmrg#define DDERR_NOCOLORKEYHW			MAKE_DDHRESULT( 220 )
9805b261ecSmrg#define DDERR_NODIRECTDRAWSUPPORT		MAKE_DDHRESULT( 222 )
9905b261ecSmrg#define DDERR_NOEXCLUSIVEMODE			MAKE_DDHRESULT( 225 )
10005b261ecSmrg#define DDERR_NOFLIPHW				MAKE_DDHRESULT( 230 )
10105b261ecSmrg#define DDERR_NOGDI				MAKE_DDHRESULT( 240 )
10205b261ecSmrg#define DDERR_NOMIRRORHW			MAKE_DDHRESULT( 250 )
10305b261ecSmrg#define DDERR_NOTFOUND				MAKE_DDHRESULT( 255 )
10405b261ecSmrg#define DDERR_NOOVERLAYHW			MAKE_DDHRESULT( 260 )
10505b261ecSmrg#define DDERR_OVERLAPPINGRECTS                  MAKE_DDHRESULT( 270 )
10605b261ecSmrg#define DDERR_NORASTEROPHW			MAKE_DDHRESULT( 280 )
10705b261ecSmrg#define DDERR_NOROTATIONHW			MAKE_DDHRESULT( 290 )
10805b261ecSmrg#define DDERR_NOSTRETCHHW			MAKE_DDHRESULT( 310 )
10905b261ecSmrg#define DDERR_NOT4BITCOLOR			MAKE_DDHRESULT( 316 )
11005b261ecSmrg#define DDERR_NOT4BITCOLORINDEX			MAKE_DDHRESULT( 317 )
11105b261ecSmrg#define DDERR_NOT8BITCOLOR			MAKE_DDHRESULT( 320 )
11205b261ecSmrg#define DDERR_NOTEXTUREHW			MAKE_DDHRESULT( 330 )
11305b261ecSmrg#define DDERR_NOVSYNCHW				MAKE_DDHRESULT( 335 )
11405b261ecSmrg#define DDERR_NOZBUFFERHW			MAKE_DDHRESULT( 340 )
11505b261ecSmrg#define DDERR_NOZOVERLAYHW			MAKE_DDHRESULT( 350 )
11605b261ecSmrg#define DDERR_OUTOFCAPS				MAKE_DDHRESULT( 360 )
11705b261ecSmrg#define DDERR_OUTOFMEMORY			E_OUTOFMEMORY
11805b261ecSmrg#define DDERR_OUTOFVIDEOMEMORY			MAKE_DDHRESULT( 380 )
11905b261ecSmrg#define DDERR_OVERLAYCANTCLIP			MAKE_DDHRESULT( 382 )
12005b261ecSmrg#define DDERR_OVERLAYCOLORKEYONLYONEACTIVE	MAKE_DDHRESULT( 384 )
12105b261ecSmrg#define DDERR_PALETTEBUSY			MAKE_DDHRESULT( 387 )
12205b261ecSmrg#define DDERR_COLORKEYNOTSET			MAKE_DDHRESULT( 400 )
12305b261ecSmrg#define DDERR_SURFACEALREADYATTACHED		MAKE_DDHRESULT( 410 )
12405b261ecSmrg#define DDERR_SURFACEALREADYDEPENDENT		MAKE_DDHRESULT( 420 )
12505b261ecSmrg#define DDERR_SURFACEBUSY			MAKE_DDHRESULT( 430 )
12605b261ecSmrg#define DDERR_CANTLOCKSURFACE			MAKE_DDHRESULT( 435 )
12705b261ecSmrg#define DDERR_SURFACEISOBSCURED			MAKE_DDHRESULT( 440 )
12805b261ecSmrg#define DDERR_SURFACELOST			MAKE_DDHRESULT( 450 )
12905b261ecSmrg#define DDERR_SURFACENOTATTACHED		MAKE_DDHRESULT( 460 )
13005b261ecSmrg#define DDERR_TOOBIGHEIGHT			MAKE_DDHRESULT( 470 )
13105b261ecSmrg#define DDERR_TOOBIGSIZE			MAKE_DDHRESULT( 480 )
13205b261ecSmrg#define DDERR_TOOBIGWIDTH			MAKE_DDHRESULT( 490 )
13305b261ecSmrg#define DDERR_UNSUPPORTED			E_NOTIMPL
13405b261ecSmrg#define DDERR_UNSUPPORTEDFORMAT			MAKE_DDHRESULT( 510 )
13505b261ecSmrg#define DDERR_UNSUPPORTEDMASK			MAKE_DDHRESULT( 520 )
13605b261ecSmrg#define DDERR_INVALIDSTREAM                     MAKE_DDHRESULT( 521 )
13705b261ecSmrg#define DDERR_VERTICALBLANKINPROGRESS		MAKE_DDHRESULT( 537 )
13805b261ecSmrg#define DDERR_WASSTILLDRAWING			MAKE_DDHRESULT( 540 )
13905b261ecSmrg#define DDERR_DDSCAPSCOMPLEXREQUIRED            MAKE_DDHRESULT( 542 )
14005b261ecSmrg#define DDERR_XALIGN				MAKE_DDHRESULT( 560 )
14105b261ecSmrg#define DDERR_INVALIDDIRECTDRAWGUID		MAKE_DDHRESULT( 561 )
14205b261ecSmrg#define DDERR_DIRECTDRAWALREADYCREATED		MAKE_DDHRESULT( 562 )
14305b261ecSmrg#define DDERR_NODIRECTDRAWHW			MAKE_DDHRESULT( 563 )
14405b261ecSmrg#define DDERR_PRIMARYSURFACEALREADYEXISTS	MAKE_DDHRESULT( 564 )
14505b261ecSmrg#define DDERR_NOEMULATION			MAKE_DDHRESULT( 565 )
14605b261ecSmrg#define DDERR_REGIONTOOSMALL			MAKE_DDHRESULT( 566 )
14705b261ecSmrg#define DDERR_CLIPPERISUSINGHWND		MAKE_DDHRESULT( 567 )
14805b261ecSmrg#define DDERR_NOCLIPPERATTACHED			MAKE_DDHRESULT( 568 )
14905b261ecSmrg#define DDERR_NOHWND				MAKE_DDHRESULT( 569 )
15005b261ecSmrg#define DDERR_HWNDSUBCLASSED			MAKE_DDHRESULT( 570 )
15105b261ecSmrg#define DDERR_HWNDALREADYSET			MAKE_DDHRESULT( 571 )
15205b261ecSmrg#define DDERR_NOPALETTEATTACHED			MAKE_DDHRESULT( 572 )
15305b261ecSmrg#define DDERR_NOPALETTEHW			MAKE_DDHRESULT( 573 )
15405b261ecSmrg#define DDERR_BLTFASTCANTCLIP			MAKE_DDHRESULT( 574 )
15505b261ecSmrg#define DDERR_NOBLTHW				MAKE_DDHRESULT( 575 )
15605b261ecSmrg#define DDERR_NODDROPSHW			MAKE_DDHRESULT( 576 )
15705b261ecSmrg#define DDERR_OVERLAYNOTVISIBLE			MAKE_DDHRESULT( 577 )
15805b261ecSmrg#define DDERR_NOOVERLAYDEST			MAKE_DDHRESULT( 578 )
15905b261ecSmrg#define DDERR_INVALIDPOSITION			MAKE_DDHRESULT( 579 )
16005b261ecSmrg#define DDERR_NOTAOVERLAYSURFACE		MAKE_DDHRESULT( 580 )
16105b261ecSmrg#define DDERR_EXCLUSIVEMODEALREADYSET		MAKE_DDHRESULT( 581 )
16205b261ecSmrg#define DDERR_NOTFLIPPABLE			MAKE_DDHRESULT( 582 )
16305b261ecSmrg#define DDERR_CANTDUPLICATE			MAKE_DDHRESULT( 583 )
16405b261ecSmrg#define DDERR_NOTLOCKED				MAKE_DDHRESULT( 584 )
16505b261ecSmrg#define DDERR_CANTCREATEDC			MAKE_DDHRESULT( 585 )
16605b261ecSmrg#define DDERR_NODC				MAKE_DDHRESULT( 586 )
16705b261ecSmrg#define DDERR_WRONGMODE				MAKE_DDHRESULT( 587 )
16805b261ecSmrg#define DDERR_IMPLICITLYCREATED			MAKE_DDHRESULT( 588 )
16905b261ecSmrg#define DDERR_NOTPALETTIZED			MAKE_DDHRESULT( 589 )
17005b261ecSmrg#define DDERR_UNSUPPORTEDMODE			MAKE_DDHRESULT( 590 )
17105b261ecSmrg#define DDERR_NOMIPMAPHW			MAKE_DDHRESULT( 591 )
17205b261ecSmrg#define DDERR_INVALIDSURFACETYPE		MAKE_DDHRESULT( 592 )
17305b261ecSmrg#define DDERR_NOOPTIMIZEHW			MAKE_DDHRESULT( 600 )
17405b261ecSmrg#define DDERR_NOTLOADED				MAKE_DDHRESULT( 601 )
17505b261ecSmrg#define DDERR_NOFOCUSWINDOW			MAKE_DDHRESULT( 602 )
17605b261ecSmrg#define DDERR_NOTONMIPMAPSUBLEVEL               MAKE_DDHRESULT( 603 )
17705b261ecSmrg#define DDERR_DCALREADYCREATED			MAKE_DDHRESULT( 620 )
17805b261ecSmrg#define DDERR_NONONLOCALVIDMEM			MAKE_DDHRESULT( 630 )
17905b261ecSmrg#define DDERR_CANTPAGELOCK			MAKE_DDHRESULT( 640 )
18005b261ecSmrg#define DDERR_CANTPAGEUNLOCK			MAKE_DDHRESULT( 660 )
18105b261ecSmrg#define DDERR_NOTPAGELOCKED			MAKE_DDHRESULT( 680 )
18205b261ecSmrg#define DDERR_MOREDATA				MAKE_DDHRESULT( 690 )
18305b261ecSmrg#define DDERR_EXPIRED                           MAKE_DDHRESULT( 691 )
18405b261ecSmrg#define DDERR_TESTFINISHED                      MAKE_DDHRESULT( 692 )
18505b261ecSmrg#define DDERR_NEWMODE                           MAKE_DDHRESULT( 693 )
18605b261ecSmrg#define DDERR_D3DNOTINITIALIZED                 MAKE_DDHRESULT( 694 )
18705b261ecSmrg#define DDERR_VIDEONOTACTIVE			MAKE_DDHRESULT( 695 )
18805b261ecSmrg#define DDERR_NOMONITORINFORMATION              MAKE_DDHRESULT( 696 )
18905b261ecSmrg#define DDERR_NODRIVERSUPPORT                   MAKE_DDHRESULT( 697 )
19005b261ecSmrg#define DDERR_DEVICEDOESNTOWNSURFACE		MAKE_DDHRESULT( 699 )
19105b261ecSmrg#define DDERR_NOTINITIALIZED			CO_E_NOTINITIALIZED
19205b261ecSmrg
19305b261ecSmrg/* dwFlags for Blt* */
19405b261ecSmrg#define DDBLT_ALPHADEST				0x00000001
19505b261ecSmrg#define DDBLT_ALPHADESTCONSTOVERRIDE		0x00000002
19605b261ecSmrg#define DDBLT_ALPHADESTNEG			0x00000004
19705b261ecSmrg#define DDBLT_ALPHADESTSURFACEOVERRIDE		0x00000008
19805b261ecSmrg#define DDBLT_ALPHAEDGEBLEND			0x00000010
19905b261ecSmrg#define DDBLT_ALPHASRC				0x00000020
20005b261ecSmrg#define DDBLT_ALPHASRCCONSTOVERRIDE		0x00000040
20105b261ecSmrg#define DDBLT_ALPHASRCNEG			0x00000080
20205b261ecSmrg#define DDBLT_ALPHASRCSURFACEOVERRIDE		0x00000100
20305b261ecSmrg#define DDBLT_ASYNC				0x00000200
20405b261ecSmrg#define DDBLT_COLORFILL				0x00000400
20505b261ecSmrg#define DDBLT_DDFX				0x00000800
20605b261ecSmrg#define DDBLT_DDROPS				0x00001000
20705b261ecSmrg#define DDBLT_KEYDEST				0x00002000
20805b261ecSmrg#define DDBLT_KEYDESTOVERRIDE			0x00004000
20905b261ecSmrg#define DDBLT_KEYSRC				0x00008000
21005b261ecSmrg#define DDBLT_KEYSRCOVERRIDE			0x00010000
21105b261ecSmrg#define DDBLT_ROP				0x00020000
21205b261ecSmrg#define DDBLT_ROTATIONANGLE			0x00040000
21305b261ecSmrg#define DDBLT_ZBUFFER				0x00080000
21405b261ecSmrg#define DDBLT_ZBUFFERDESTCONSTOVERRIDE		0x00100000
21505b261ecSmrg#define DDBLT_ZBUFFERDESTOVERRIDE		0x00200000
21605b261ecSmrg#define DDBLT_ZBUFFERSRCCONSTOVERRIDE		0x00400000
21705b261ecSmrg#define DDBLT_ZBUFFERSRCOVERRIDE		0x00800000
21805b261ecSmrg#define DDBLT_WAIT				0x01000000
21905b261ecSmrg#define DDBLT_DEPTHFILL				0x02000000
22005b261ecSmrg#define DDBLT_DONOTWAIT                         0x08000000
22105b261ecSmrg
22205b261ecSmrg/* dwTrans for BltFast */
22305b261ecSmrg#define DDBLTFAST_NOCOLORKEY			0x00000000
22405b261ecSmrg#define DDBLTFAST_SRCCOLORKEY			0x00000001
22505b261ecSmrg#define DDBLTFAST_DESTCOLORKEY			0x00000002
22605b261ecSmrg#define DDBLTFAST_WAIT				0x00000010
22705b261ecSmrg#define DDBLTFAST_DONOTWAIT                     0x00000020
22805b261ecSmrg
22905b261ecSmrg/* dwFlags for Flip */
23005b261ecSmrg#define DDFLIP_WAIT		0x00000001
23105b261ecSmrg#define DDFLIP_EVEN		0x00000002 /* only valid for overlay */
23205b261ecSmrg#define DDFLIP_ODD		0x00000004 /* only valid for overlay */
23305b261ecSmrg#define DDFLIP_NOVSYNC		0x00000008
23405b261ecSmrg#define DDFLIP_STEREO		0x00000010
23505b261ecSmrg#define DDFLIP_DONOTWAIT	0x00000020
23605b261ecSmrg
23705b261ecSmrg/* dwFlags for GetBltStatus */
23805b261ecSmrg#define DDGBS_CANBLT				0x00000001
23905b261ecSmrg#define DDGBS_ISBLTDONE				0x00000002
24005b261ecSmrg
24105b261ecSmrg/* dwFlags for IDirectDrawSurface7::GetFlipStatus */
24205b261ecSmrg#define DDGFS_CANFLIP		1L
24305b261ecSmrg#define DDGFS_ISFLIPDONE	2L
24405b261ecSmrg
24505b261ecSmrg/* dwFlags for IDirectDrawSurface7::SetPrivateData */
24605b261ecSmrg#define DDSPD_IUNKNOWNPTR	1L
24705b261ecSmrg#define DDSPD_VOLATILE		2L
24805b261ecSmrg
24905b261ecSmrg/* DDSCAPS.dwCaps */
25005b261ecSmrg/* reserved1, was 3d capable */
25105b261ecSmrg#define DDSCAPS_RESERVED1		0x00000001
25205b261ecSmrg/* surface contains alpha information */
25305b261ecSmrg#define DDSCAPS_ALPHA			0x00000002
25405b261ecSmrg/* this surface is a backbuffer */
25505b261ecSmrg#define DDSCAPS_BACKBUFFER		0x00000004
25605b261ecSmrg/* complex surface structure */
25705b261ecSmrg#define DDSCAPS_COMPLEX			0x00000008
25805b261ecSmrg/* part of surface flipping structure */
25905b261ecSmrg#define DDSCAPS_FLIP			0x00000010
26005b261ecSmrg/* this surface is the frontbuffer surface */
26105b261ecSmrg#define DDSCAPS_FRONTBUFFER		0x00000020
26205b261ecSmrg/* this is a plain offscreen surface */
26305b261ecSmrg#define DDSCAPS_OFFSCREENPLAIN		0x00000040
26405b261ecSmrg/* overlay */
26505b261ecSmrg#define DDSCAPS_OVERLAY			0x00000080
26605b261ecSmrg/* palette objects can be created and attached to us */
26705b261ecSmrg#define DDSCAPS_PALETTE			0x00000100
26805b261ecSmrg/* primary surface (the one the user looks at currently)(right eye)*/
26905b261ecSmrg#define DDSCAPS_PRIMARYSURFACE		0x00000200
27005b261ecSmrg/* primary surface for left eye */
27105b261ecSmrg#define DDSCAPS_PRIMARYSURFACELEFT	0x00000400
27205b261ecSmrg/* surface exists in systemmemory */
27305b261ecSmrg#define DDSCAPS_SYSTEMMEMORY		0x00000800
27405b261ecSmrg/* surface can be used as a texture */
27505b261ecSmrg#define DDSCAPS_TEXTURE		        0x00001000
27605b261ecSmrg/* surface may be destination for 3d rendering */
27705b261ecSmrg#define DDSCAPS_3DDEVICE		0x00002000
27805b261ecSmrg/* surface exists in videomemory */
27905b261ecSmrg#define DDSCAPS_VIDEOMEMORY		0x00004000
28005b261ecSmrg/* surface changes immediately visible */
28105b261ecSmrg#define DDSCAPS_VISIBLE			0x00008000
28205b261ecSmrg/* write only surface */
28305b261ecSmrg#define DDSCAPS_WRITEONLY		0x00010000
28405b261ecSmrg/* zbuffer surface */
28505b261ecSmrg#define DDSCAPS_ZBUFFER			0x00020000
28605b261ecSmrg/* has its own DC */
28705b261ecSmrg#define DDSCAPS_OWNDC			0x00040000
28805b261ecSmrg/* surface should be able to receive live video */
28905b261ecSmrg#define DDSCAPS_LIVEVIDEO		0x00080000
29005b261ecSmrg/* should be able to have a hw codec decompress stuff into it */
29105b261ecSmrg#define DDSCAPS_HWCODEC			0x00100000
29205b261ecSmrg/* mode X (320x200 or 320x240) surface */
29305b261ecSmrg#define DDSCAPS_MODEX			0x00200000
29405b261ecSmrg/* one mipmap surface (1 level) */
29505b261ecSmrg#define DDSCAPS_MIPMAP			0x00400000
29605b261ecSmrg#define DDSCAPS_RESERVED2		0x00800000
29705b261ecSmrg/* memory allocation delayed until Load() */
29805b261ecSmrg#define DDSCAPS_ALLOCONLOAD		0x04000000
29905b261ecSmrg/* Indicates that the surface will receive data from a video port */
30005b261ecSmrg#define DDSCAPS_VIDEOPORT		0x08000000
30105b261ecSmrg/* surface is in local videomemory */
30205b261ecSmrg#define DDSCAPS_LOCALVIDMEM		0x10000000
30305b261ecSmrg/* surface is in nonlocal videomemory */
30405b261ecSmrg#define DDSCAPS_NONLOCALVIDMEM		0x20000000
30505b261ecSmrg/* surface is a standard VGA mode surface (NOT ModeX) */
30605b261ecSmrg#define DDSCAPS_STANDARDVGAMODE		0x40000000
30705b261ecSmrg/* optimized? surface */
30805b261ecSmrg#define DDSCAPS_OPTIMIZED		0x80000000
30905b261ecSmrg
31005b261ecSmrgtypedef struct _DDSCAPS {
31105b261ecSmrg	DWORD	dwCaps;	/* capabilities of surface wanted */
31205b261ecSmrg} DDSCAPS,*LPDDSCAPS;
31305b261ecSmrg
31405b261ecSmrg/* DDSCAPS2.dwCaps2 */
31505b261ecSmrg/* indicates the surface will receive data from a video port using
31605b261ecSmrg   deinterlacing hardware. */
31705b261ecSmrg#define DDSCAPS2_HARDWAREDEINTERLACE	0x00000002
31805b261ecSmrg/* indicates the surface will be locked very frequently. */
31905b261ecSmrg#define DDSCAPS2_HINTDYNAMIC		0x00000004
32005b261ecSmrg/* indicates surface can be re-ordered or retiled on load() */
32105b261ecSmrg#define DDSCAPS2_HINTSTATIC             0x00000008
32205b261ecSmrg/* indicates surface to be managed by directdraw/direct3D */
32305b261ecSmrg#define DDSCAPS2_TEXTUREMANAGE          0x00000010
32405b261ecSmrg/* reserved bits */
32505b261ecSmrg#define DDSCAPS2_RESERVED1              0x00000020
32605b261ecSmrg#define DDSCAPS2_RESERVED2              0x00000040
32705b261ecSmrg/* indicates surface will never be locked again */
32805b261ecSmrg#define DDSCAPS2_OPAQUE                 0x00000080
32905b261ecSmrg/* set at CreateSurface() time to indicate antialising will be used */
33005b261ecSmrg#define DDSCAPS2_HINTANTIALIASING       0x00000100
33105b261ecSmrg/* set at CreateSurface() time to indicate cubic environment map */
33205b261ecSmrg#define DDSCAPS2_CUBEMAP                0x00000200
33305b261ecSmrg/* face flags for cube maps */
33405b261ecSmrg#define DDSCAPS2_CUBEMAP_POSITIVEX      0x00000400
33505b261ecSmrg#define DDSCAPS2_CUBEMAP_NEGATIVEX      0x00000800
33605b261ecSmrg#define DDSCAPS2_CUBEMAP_POSITIVEY      0x00001000
33705b261ecSmrg#define DDSCAPS2_CUBEMAP_NEGATIVEY      0x00002000
33805b261ecSmrg#define DDSCAPS2_CUBEMAP_POSITIVEZ      0x00004000
33905b261ecSmrg#define DDSCAPS2_CUBEMAP_NEGATIVEZ      0x00008000
34005b261ecSmrg/* specifies all faces of a cube for CreateSurface() */
34105b261ecSmrg#define DDSCAPS2_CUBEMAP_ALLFACES ( DDSCAPS2_CUBEMAP_POSITIVEX |\
34205b261ecSmrg                                    DDSCAPS2_CUBEMAP_NEGATIVEX |\
34305b261ecSmrg                                    DDSCAPS2_CUBEMAP_POSITIVEY |\
34405b261ecSmrg                                    DDSCAPS2_CUBEMAP_NEGATIVEY |\
34505b261ecSmrg                                    DDSCAPS2_CUBEMAP_POSITIVEZ |\
34605b261ecSmrg                                    DDSCAPS2_CUBEMAP_NEGATIVEZ )
34705b261ecSmrg/* set for mipmap sublevels on DirectX7 and later.  ignored by CreateSurface() */
34805b261ecSmrg#define DDSCAPS2_MIPMAPSUBLEVEL         0x00010000
34905b261ecSmrg/* indicates texture surface to be managed by Direct3D *only* */
35005b261ecSmrg#define DDSCAPS2_D3DTEXTUREMANAGE       0x00020000
35105b261ecSmrg/* indicates managed surface that can safely be lost */
35205b261ecSmrg#define DDSCAPS2_DONOTPERSIST           0x00040000
35305b261ecSmrg/* indicates surface is part of a stereo flipping chain */
35405b261ecSmrg#define DDSCAPS2_STEREOSURFACELEFT      0x00080000
35505b261ecSmrg
35605b261ecSmrgtypedef struct _DDSCAPS2 {
35705b261ecSmrg	DWORD	dwCaps;	/* capabilities of surface wanted */
35805b261ecSmrg	DWORD   dwCaps2; /* additional capabilities */
35905b261ecSmrg	DWORD   dwCaps3; /* reserved capabilities */
36005b261ecSmrg	DWORD   dwCaps4; /* more reserved capabilities */
36105b261ecSmrg} DDSCAPS2,*LPDDSCAPS2;
36205b261ecSmrg
36305b261ecSmrg#define	DD_ROP_SPACE	(256/32)	/* space required to store ROP array */
36405b261ecSmrg
36505b261ecSmrgtypedef struct _DDCAPS_DX7		/* DirectX 7 version of caps struct */
36605b261ecSmrg{
36705b261ecSmrg    DWORD	dwSize;                 /* size of the DDDRIVERCAPS structure */
36805b261ecSmrg    DWORD	dwCaps;                 /* driver specific capabilities */
36905b261ecSmrg    DWORD	dwCaps2;                /* more driver specific capabilites */
37005b261ecSmrg    DWORD	dwCKeyCaps;             /* color key capabilities of the surface */
37105b261ecSmrg    DWORD	dwFXCaps;               /* driver specific stretching and effects capabilites */
37205b261ecSmrg    DWORD	dwFXAlphaCaps;          /* alpha driver specific capabilities */
37305b261ecSmrg    DWORD	dwPalCaps;              /* palette capabilities */
37405b261ecSmrg    DWORD	dwSVCaps;               /* stereo vision capabilities */
37505b261ecSmrg    DWORD	dwAlphaBltConstBitDepths;       /* DDBD_2,4,8 */
37605b261ecSmrg    DWORD	dwAlphaBltPixelBitDepths;       /* DDBD_1,2,4,8 */
37705b261ecSmrg    DWORD	dwAlphaBltSurfaceBitDepths;     /* DDBD_1,2,4,8 */
37805b261ecSmrg    DWORD	dwAlphaOverlayConstBitDepths;   /* DDBD_2,4,8 */
37905b261ecSmrg    DWORD	dwAlphaOverlayPixelBitDepths;   /* DDBD_1,2,4,8 */
38005b261ecSmrg    DWORD	dwAlphaOverlaySurfaceBitDepths; /* DDBD_1,2,4,8 */
38105b261ecSmrg    DWORD	dwZBufferBitDepths;             /* DDBD_8,16,24,32 */
38205b261ecSmrg    DWORD	dwVidMemTotal;          /* total amount of video memory */
38305b261ecSmrg    DWORD	dwVidMemFree;           /* amount of free video memory */
38405b261ecSmrg    DWORD	dwMaxVisibleOverlays;   /* maximum number of visible overlays */
38505b261ecSmrg    DWORD	dwCurrVisibleOverlays;  /* current number of visible overlays */
38605b261ecSmrg    DWORD	dwNumFourCCCodes;       /* number of four cc codes */
38705b261ecSmrg    DWORD	dwAlignBoundarySrc;     /* source rectangle alignment */
38805b261ecSmrg    DWORD	dwAlignSizeSrc;         /* source rectangle byte size */
38905b261ecSmrg    DWORD	dwAlignBoundaryDest;    /* dest rectangle alignment */
39005b261ecSmrg    DWORD	dwAlignSizeDest;        /* dest rectangle byte size */
39105b261ecSmrg    DWORD	dwAlignStrideAlign;     /* stride alignment */
39205b261ecSmrg    DWORD	dwRops[DD_ROP_SPACE];   /* ROPS supported */
39305b261ecSmrg    DDSCAPS	ddsOldCaps;             /* old DDSCAPS - superceded for DirectX6+ */
39405b261ecSmrg    DWORD	dwMinOverlayStretch;    /* minimum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
39505b261ecSmrg    DWORD	dwMaxOverlayStretch;    /* maximum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
39605b261ecSmrg    DWORD	dwMinLiveVideoStretch;  /* minimum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
39705b261ecSmrg    DWORD	dwMaxLiveVideoStretch;  /* maximum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
39805b261ecSmrg    DWORD	dwMinHwCodecStretch;    /* minimum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
39905b261ecSmrg    DWORD	dwMaxHwCodecStretch;    /* maximum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
40005b261ecSmrg    DWORD	dwReserved1;
40105b261ecSmrg    DWORD	dwReserved2;
40205b261ecSmrg    DWORD	dwReserved3;
40305b261ecSmrg    DWORD	dwSVBCaps;              /* driver specific capabilities for System->Vmem blts */
40405b261ecSmrg    DWORD	dwSVBCKeyCaps;          /* driver color key capabilities for System->Vmem blts */
40505b261ecSmrg    DWORD	dwSVBFXCaps;            /* driver FX capabilities for System->Vmem blts */
40605b261ecSmrg    DWORD	dwSVBRops[DD_ROP_SPACE];/* ROPS supported for System->Vmem blts */
40705b261ecSmrg    DWORD	dwVSBCaps;              /* driver specific capabilities for Vmem->System blts */
40805b261ecSmrg    DWORD	dwVSBCKeyCaps;          /* driver color key capabilities for Vmem->System blts */
40905b261ecSmrg    DWORD	dwVSBFXCaps;            /* driver FX capabilities for Vmem->System blts */
41005b261ecSmrg    DWORD	dwVSBRops[DD_ROP_SPACE];/* ROPS supported for Vmem->System blts */
41105b261ecSmrg    DWORD	dwSSBCaps;              /* driver specific capabilities for System->System blts */
41205b261ecSmrg    DWORD	dwSSBCKeyCaps;          /* driver color key capabilities for System->System blts */
41305b261ecSmrg    DWORD	dwSSBFXCaps;            /* driver FX capabilities for System->System blts */
41405b261ecSmrg    DWORD	dwSSBRops[DD_ROP_SPACE];/* ROPS supported for System->System blts */
41505b261ecSmrg    DWORD       dwMaxVideoPorts;        /* maximum number of usable video ports */
41605b261ecSmrg    DWORD   	dwCurrVideoPorts;       /* current number of video ports used */
41705b261ecSmrg    DWORD   	dwSVBCaps2;             /* more driver specific capabilities for System->Vmem blts */
41805b261ecSmrg    DWORD   	dwNLVBCaps;             /* driver specific capabilities for non-local->local vidmem blts */
41905b261ecSmrg    DWORD   	dwNLVBCaps2;            /* more driver specific capabilities non-local->local vidmem blts */
42005b261ecSmrg    DWORD   	dwNLVBCKeyCaps;         /* driver color key capabilities for non-local->local vidmem blts */
42105b261ecSmrg    DWORD   	dwNLVBFXCaps;           /* driver FX capabilities for non-local->local blts */
42205b261ecSmrg    DWORD   	dwNLVBRops[DD_ROP_SPACE]; /* ROPS supported for non-local->local blts */
42305b261ecSmrg    DDSCAPS2    ddsCaps;		/* surface capabilities */
42405b261ecSmrg} DDCAPS_DX7,*LPDDCAPS_DX7;
42505b261ecSmrg
42605b261ecSmrgtypedef struct _DDCAPS_DX6		/* DirectX 6 version of caps struct */
42705b261ecSmrg{
42805b261ecSmrg    DWORD	dwSize;                 /* size of the DDDRIVERCAPS structure */
42905b261ecSmrg    DWORD	dwCaps;                 /* driver specific capabilities */
43005b261ecSmrg    DWORD	dwCaps2;                /* more driver specific capabilites */
43105b261ecSmrg    DWORD	dwCKeyCaps;             /* color key capabilities of the surface */
43205b261ecSmrg    DWORD	dwFXCaps;               /* driver specific stretching and effects capabilites */
43305b261ecSmrg    DWORD	dwFXAlphaCaps;          /* alpha driver specific capabilities */
43405b261ecSmrg    DWORD	dwPalCaps;              /* palette capabilities */
43505b261ecSmrg    DWORD	dwSVCaps;               /* stereo vision capabilities */
43605b261ecSmrg    DWORD	dwAlphaBltConstBitDepths;       /* DDBD_2,4,8 */
43705b261ecSmrg    DWORD	dwAlphaBltPixelBitDepths;       /* DDBD_1,2,4,8 */
43805b261ecSmrg    DWORD	dwAlphaBltSurfaceBitDepths;     /* DDBD_1,2,4,8 */
43905b261ecSmrg    DWORD	dwAlphaOverlayConstBitDepths;   /* DDBD_2,4,8 */
44005b261ecSmrg    DWORD	dwAlphaOverlayPixelBitDepths;   /* DDBD_1,2,4,8 */
44105b261ecSmrg    DWORD	dwAlphaOverlaySurfaceBitDepths; /* DDBD_1,2,4,8 */
44205b261ecSmrg    DWORD	dwZBufferBitDepths;             /* DDBD_8,16,24,32 */
44305b261ecSmrg    DWORD	dwVidMemTotal;          /* total amount of video memory */
44405b261ecSmrg    DWORD	dwVidMemFree;           /* amount of free video memory */
44505b261ecSmrg    DWORD	dwMaxVisibleOverlays;   /* maximum number of visible overlays */
44605b261ecSmrg    DWORD	dwCurrVisibleOverlays;  /* current number of visible overlays */
44705b261ecSmrg    DWORD	dwNumFourCCCodes;       /* number of four cc codes */
44805b261ecSmrg    DWORD	dwAlignBoundarySrc;     /* source rectangle alignment */
44905b261ecSmrg    DWORD	dwAlignSizeSrc;         /* source rectangle byte size */
45005b261ecSmrg    DWORD	dwAlignBoundaryDest;    /* dest rectangle alignment */
45105b261ecSmrg    DWORD	dwAlignSizeDest;        /* dest rectangle byte size */
45205b261ecSmrg    DWORD	dwAlignStrideAlign;     /* stride alignment */
45305b261ecSmrg    DWORD	dwRops[DD_ROP_SPACE];   /* ROPS supported */
45405b261ecSmrg    DDSCAPS	ddsOldCaps;             /* old DDSCAPS - superceded for DirectX6+ */
45505b261ecSmrg    DWORD	dwMinOverlayStretch;    /* minimum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
45605b261ecSmrg    DWORD	dwMaxOverlayStretch;    /* maximum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
45705b261ecSmrg    DWORD	dwMinLiveVideoStretch;  /* minimum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
45805b261ecSmrg    DWORD	dwMaxLiveVideoStretch;  /* maximum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
45905b261ecSmrg    DWORD	dwMinHwCodecStretch;    /* minimum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
46005b261ecSmrg    DWORD	dwMaxHwCodecStretch;    /* maximum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
46105b261ecSmrg    DWORD	dwReserved1;
46205b261ecSmrg    DWORD	dwReserved2;
46305b261ecSmrg    DWORD	dwReserved3;
46405b261ecSmrg    DWORD	dwSVBCaps;              /* driver specific capabilities for System->Vmem blts */
46505b261ecSmrg    DWORD	dwSVBCKeyCaps;          /* driver color key capabilities for System->Vmem blts */
46605b261ecSmrg    DWORD	dwSVBFXCaps;            /* driver FX capabilities for System->Vmem blts */
46705b261ecSmrg    DWORD	dwSVBRops[DD_ROP_SPACE];/* ROPS supported for System->Vmem blts */
46805b261ecSmrg    DWORD	dwVSBCaps;              /* driver specific capabilities for Vmem->System blts */
46905b261ecSmrg    DWORD	dwVSBCKeyCaps;          /* driver color key capabilities for Vmem->System blts */
47005b261ecSmrg    DWORD	dwVSBFXCaps;            /* driver FX capabilities for Vmem->System blts */
47105b261ecSmrg    DWORD	dwVSBRops[DD_ROP_SPACE];/* ROPS supported for Vmem->System blts */
47205b261ecSmrg    DWORD	dwSSBCaps;              /* driver specific capabilities for System->System blts */
47305b261ecSmrg    DWORD	dwSSBCKeyCaps;          /* driver color key capabilities for System->System blts */
47405b261ecSmrg    DWORD	dwSSBFXCaps;            /* driver FX capabilities for System->System blts */
47505b261ecSmrg    DWORD	dwSSBRops[DD_ROP_SPACE];/* ROPS supported for System->System blts */
47605b261ecSmrg    DWORD       dwMaxVideoPorts;        /* maximum number of usable video ports */
47705b261ecSmrg    DWORD   	dwCurrVideoPorts;       /* current number of video ports used */
47805b261ecSmrg    DWORD   	dwSVBCaps2;             /* more driver specific capabilities for System->Vmem blts */
47905b261ecSmrg    DWORD   	dwNLVBCaps;             /* driver specific capabilities for non-local->local vidmem blts */
48005b261ecSmrg    DWORD   	dwNLVBCaps2;            /* more driver specific capabilities non-local->local vidmem blts */
48105b261ecSmrg    DWORD   	dwNLVBCKeyCaps;         /* driver color key capabilities for non-local->local vidmem blts */
48205b261ecSmrg    DWORD   	dwNLVBFXCaps;           /* driver FX capabilities for non-local->local blts */
48305b261ecSmrg    DWORD   	dwNLVBRops[DD_ROP_SPACE]; /* ROPS supported for non-local->local blts */
48405b261ecSmrg    /* and one new member for DirectX 6 */
48505b261ecSmrg    DDSCAPS2    ddsCaps;		/* surface capabilities */
48605b261ecSmrg} DDCAPS_DX6,*LPDDCAPS_DX6;
48705b261ecSmrg
48805b261ecSmrgtypedef struct _DDCAPS_DX5		/* DirectX5 version of caps struct */
48905b261ecSmrg{
49005b261ecSmrg    DWORD	dwSize;                 /* size of the DDDRIVERCAPS structure */
49105b261ecSmrg    DWORD	dwCaps;                 /* driver specific capabilities */
49205b261ecSmrg    DWORD	dwCaps2;                /* more driver specific capabilites */
49305b261ecSmrg    DWORD	dwCKeyCaps;             /* color key capabilities of the surface */
49405b261ecSmrg    DWORD	dwFXCaps;               /* driver specific stretching and effects capabilites */
49505b261ecSmrg    DWORD	dwFXAlphaCaps;          /* alpha driver specific capabilities */
49605b261ecSmrg    DWORD	dwPalCaps;              /* palette capabilities */
49705b261ecSmrg    DWORD	dwSVCaps;               /* stereo vision capabilities */
49805b261ecSmrg    DWORD	dwAlphaBltConstBitDepths;       /* DDBD_2,4,8 */
49905b261ecSmrg    DWORD	dwAlphaBltPixelBitDepths;       /* DDBD_1,2,4,8 */
50005b261ecSmrg    DWORD	dwAlphaBltSurfaceBitDepths;     /* DDBD_1,2,4,8 */
50105b261ecSmrg    DWORD	dwAlphaOverlayConstBitDepths;   /* DDBD_2,4,8 */
50205b261ecSmrg    DWORD	dwAlphaOverlayPixelBitDepths;   /* DDBD_1,2,4,8 */
50305b261ecSmrg    DWORD	dwAlphaOverlaySurfaceBitDepths; /* DDBD_1,2,4,8 */
50405b261ecSmrg    DWORD	dwZBufferBitDepths;             /* DDBD_8,16,24,32 */
50505b261ecSmrg    DWORD	dwVidMemTotal;          /* total amount of video memory */
50605b261ecSmrg    DWORD	dwVidMemFree;           /* amount of free video memory */
50705b261ecSmrg    DWORD	dwMaxVisibleOverlays;   /* maximum number of visible overlays */
50805b261ecSmrg    DWORD	dwCurrVisibleOverlays;  /* current number of visible overlays */
50905b261ecSmrg    DWORD	dwNumFourCCCodes;       /* number of four cc codes */
51005b261ecSmrg    DWORD	dwAlignBoundarySrc;     /* source rectangle alignment */
51105b261ecSmrg    DWORD	dwAlignSizeSrc;         /* source rectangle byte size */
51205b261ecSmrg    DWORD	dwAlignBoundaryDest;    /* dest rectangle alignment */
51305b261ecSmrg    DWORD	dwAlignSizeDest;        /* dest rectangle byte size */
51405b261ecSmrg    DWORD	dwAlignStrideAlign;     /* stride alignment */
51505b261ecSmrg    DWORD	dwRops[DD_ROP_SPACE];   /* ROPS supported */
51605b261ecSmrg    DDSCAPS	ddsCaps;                /* DDSCAPS structure has all the general capabilities */
51705b261ecSmrg    DWORD	dwMinOverlayStretch;    /* minimum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
51805b261ecSmrg    DWORD	dwMaxOverlayStretch;    /* maximum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
51905b261ecSmrg    DWORD	dwMinLiveVideoStretch;  /* minimum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
52005b261ecSmrg    DWORD	dwMaxLiveVideoStretch;  /* maximum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
52105b261ecSmrg    DWORD	dwMinHwCodecStretch;    /* minimum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
52205b261ecSmrg    DWORD	dwMaxHwCodecStretch;    /* maximum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
52305b261ecSmrg    DWORD	dwReserved1;
52405b261ecSmrg    DWORD	dwReserved2;
52505b261ecSmrg    DWORD	dwReserved3;
52605b261ecSmrg    DWORD	dwSVBCaps;              /* driver specific capabilities for System->Vmem blts */
52705b261ecSmrg    DWORD	dwSVBCKeyCaps;          /* driver color key capabilities for System->Vmem blts */
52805b261ecSmrg    DWORD	dwSVBFXCaps;            /* driver FX capabilities for System->Vmem blts */
52905b261ecSmrg    DWORD	dwSVBRops[DD_ROP_SPACE];/* ROPS supported for System->Vmem blts */
53005b261ecSmrg    DWORD	dwVSBCaps;              /* driver specific capabilities for Vmem->System blts */
53105b261ecSmrg    DWORD	dwVSBCKeyCaps;          /* driver color key capabilities for Vmem->System blts */
53205b261ecSmrg    DWORD	dwVSBFXCaps;            /* driver FX capabilities for Vmem->System blts */
53305b261ecSmrg    DWORD	dwVSBRops[DD_ROP_SPACE];/* ROPS supported for Vmem->System blts */
53405b261ecSmrg    DWORD	dwSSBCaps;              /* driver specific capabilities for System->System blts */
53505b261ecSmrg    DWORD	dwSSBCKeyCaps;          /* driver color key capabilities for System->System blts */
53605b261ecSmrg    DWORD	dwSSBFXCaps;            /* driver FX capabilities for System->System blts */
53705b261ecSmrg    DWORD	dwSSBRops[DD_ROP_SPACE];/* ROPS supported for System->System blts */
53805b261ecSmrg    /* the following are the new DirectX 5 members */
53905b261ecSmrg    DWORD       dwMaxVideoPorts;        /* maximum number of usable video ports */
54005b261ecSmrg    DWORD   	dwCurrVideoPorts;       /* current number of video ports used */
54105b261ecSmrg    DWORD   	dwSVBCaps2;             /* more driver specific capabilities for System->Vmem blts */
54205b261ecSmrg    DWORD   	dwNLVBCaps;             /* driver specific capabilities for non-local->local vidmem blts */
54305b261ecSmrg    DWORD   	dwNLVBCaps2;            /* more driver specific capabilities non-local->local vidmem blts */
54405b261ecSmrg    DWORD   	dwNLVBCKeyCaps;         /* driver color key capabilities for non-local->local vidmem blts */
54505b261ecSmrg    DWORD   	dwNLVBFXCaps;           /* driver FX capabilities for non-local->local blts */
54605b261ecSmrg    DWORD   	dwNLVBRops[DD_ROP_SPACE]; /* ROPS supported for non-local->local blts */
54705b261ecSmrg} DDCAPS_DX5,*LPDDCAPS_DX5;
54805b261ecSmrg
54905b261ecSmrgtypedef struct _DDCAPS_DX3		/* DirectX3 version of caps struct */
55005b261ecSmrg{
55105b261ecSmrg    DWORD	dwSize;                 /* size of the DDDRIVERCAPS structure */
55205b261ecSmrg    DWORD	dwCaps;                 /* driver specific capabilities */
55305b261ecSmrg    DWORD	dwCaps2;                /* more driver specific capabilites */
55405b261ecSmrg    DWORD	dwCKeyCaps;             /* color key capabilities of the surface */
55505b261ecSmrg    DWORD	dwFXCaps;               /* driver specific stretching and effects capabilites */
55605b261ecSmrg    DWORD	dwFXAlphaCaps;          /* alpha driver specific capabilities */
55705b261ecSmrg    DWORD	dwPalCaps;              /* palette capabilities */
55805b261ecSmrg    DWORD	dwSVCaps;               /* stereo vision capabilities */
55905b261ecSmrg    DWORD	dwAlphaBltConstBitDepths;       /* DDBD_2,4,8 */
56005b261ecSmrg    DWORD	dwAlphaBltPixelBitDepths;       /* DDBD_1,2,4,8 */
56105b261ecSmrg    DWORD	dwAlphaBltSurfaceBitDepths;     /* DDBD_1,2,4,8 */
56205b261ecSmrg    DWORD	dwAlphaOverlayConstBitDepths;   /* DDBD_2,4,8 */
56305b261ecSmrg    DWORD	dwAlphaOverlayPixelBitDepths;   /* DDBD_1,2,4,8 */
56405b261ecSmrg    DWORD	dwAlphaOverlaySurfaceBitDepths; /* DDBD_1,2,4,8 */
56505b261ecSmrg    DWORD	dwZBufferBitDepths;             /* DDBD_8,16,24,32 */
56605b261ecSmrg    DWORD	dwVidMemTotal;          /* total amount of video memory */
56705b261ecSmrg    DWORD	dwVidMemFree;           /* amount of free video memory */
56805b261ecSmrg    DWORD	dwMaxVisibleOverlays;   /* maximum number of visible overlays */
56905b261ecSmrg    DWORD	dwCurrVisibleOverlays;  /* current number of visible overlays */
57005b261ecSmrg    DWORD	dwNumFourCCCodes;       /* number of four cc codes */
57105b261ecSmrg    DWORD	dwAlignBoundarySrc;     /* source rectangle alignment */
57205b261ecSmrg    DWORD	dwAlignSizeSrc;         /* source rectangle byte size */
57305b261ecSmrg    DWORD	dwAlignBoundaryDest;    /* dest rectangle alignment */
57405b261ecSmrg    DWORD	dwAlignSizeDest;        /* dest rectangle byte size */
57505b261ecSmrg    DWORD	dwAlignStrideAlign;     /* stride alignment */
57605b261ecSmrg    DWORD	dwRops[DD_ROP_SPACE];   /* ROPS supported */
57705b261ecSmrg    DDSCAPS	ddsCaps;                /* DDSCAPS structure has all the general capabilities */
57805b261ecSmrg    DWORD	dwMinOverlayStretch;    /* minimum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
57905b261ecSmrg    DWORD	dwMaxOverlayStretch;    /* maximum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
58005b261ecSmrg    DWORD	dwMinLiveVideoStretch;  /* minimum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
58105b261ecSmrg    DWORD	dwMaxLiveVideoStretch;  /* maximum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
58205b261ecSmrg    DWORD	dwMinHwCodecStretch;    /* minimum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
58305b261ecSmrg    DWORD	dwMaxHwCodecStretch;    /* maximum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
58405b261ecSmrg    DWORD	dwReserved1;
58505b261ecSmrg    DWORD	dwReserved2;
58605b261ecSmrg    DWORD	dwReserved3;
58705b261ecSmrg    DWORD	dwSVBCaps;              /* driver specific capabilities for System->Vmem blts */
58805b261ecSmrg    DWORD	dwSVBCKeyCaps;          /* driver color key capabilities for System->Vmem blts */
58905b261ecSmrg    DWORD	dwSVBFXCaps;            /* driver FX capabilities for System->Vmem blts */
59005b261ecSmrg    DWORD	dwSVBRops[DD_ROP_SPACE];/* ROPS supported for System->Vmem blts */
59105b261ecSmrg    DWORD	dwVSBCaps;              /* driver specific capabilities for Vmem->System blts */
59205b261ecSmrg    DWORD	dwVSBCKeyCaps;          /* driver color key capabilities for Vmem->System blts */
59305b261ecSmrg    DWORD	dwVSBFXCaps;            /* driver FX capabilities for Vmem->System blts */
59405b261ecSmrg    DWORD	dwVSBRops[DD_ROP_SPACE];/* ROPS supported for Vmem->System blts */
59505b261ecSmrg    DWORD	dwSSBCaps;              /* driver specific capabilities for System->System blts */
59605b261ecSmrg    DWORD	dwSSBCKeyCaps;          /* driver color key capabilities for System->System blts */
59705b261ecSmrg    DWORD	dwSSBFXCaps;            /* driver FX capabilities for System->System blts */
59805b261ecSmrg    DWORD	dwSSBRops[DD_ROP_SPACE];/* ROPS supported for System->System blts */
59905b261ecSmrg    DWORD	dwReserved4;
60005b261ecSmrg    DWORD	dwReserved5;
60105b261ecSmrg    DWORD	dwReserved6;
60205b261ecSmrg} DDCAPS_DX3,*LPDDCAPS_DX3;
60305b261ecSmrg
60405b261ecSmrg/* set caps struct according to DIRECTDRAW_VERSION */
60505b261ecSmrg
60605b261ecSmrg#if DIRECTDRAW_VERSION <= 0x300
60705b261ecSmrgtypedef DDCAPS_DX3 DDCAPS;
60805b261ecSmrg#elif DIRECTDRAW_VERSION <= 0x500
60905b261ecSmrgtypedef DDCAPS_DX5 DDCAPS;
61005b261ecSmrg#elif DIRECTDRAW_VERSION <= 0x600
61105b261ecSmrgtypedef DDCAPS_DX6 DDCAPS;
61205b261ecSmrg#else
61305b261ecSmrgtypedef DDCAPS_DX7 DDCAPS;
61405b261ecSmrg#endif
61505b261ecSmrg
61605b261ecSmrgtypedef DDCAPS *LPDDCAPS;
61705b261ecSmrg
61805b261ecSmrg/* DDCAPS.dwCaps */
61905b261ecSmrg#define DDCAPS_3D			0x00000001
62005b261ecSmrg#define DDCAPS_ALIGNBOUNDARYDEST	0x00000002
62105b261ecSmrg#define DDCAPS_ALIGNSIZEDEST		0x00000004
62205b261ecSmrg#define DDCAPS_ALIGNBOUNDARYSRC		0x00000008
62305b261ecSmrg#define DDCAPS_ALIGNSIZESRC		0x00000010
62405b261ecSmrg#define DDCAPS_ALIGNSTRIDE		0x00000020
62505b261ecSmrg#define DDCAPS_BLT			0x00000040
62605b261ecSmrg#define DDCAPS_BLTQUEUE			0x00000080
62705b261ecSmrg#define DDCAPS_BLTFOURCC		0x00000100
62805b261ecSmrg#define DDCAPS_BLTSTRETCH		0x00000200
62905b261ecSmrg#define DDCAPS_GDI			0x00000400
63005b261ecSmrg#define DDCAPS_OVERLAY			0x00000800
63105b261ecSmrg#define DDCAPS_OVERLAYCANTCLIP		0x00001000
63205b261ecSmrg#define DDCAPS_OVERLAYFOURCC		0x00002000
63305b261ecSmrg#define DDCAPS_OVERLAYSTRETCH		0x00004000
63405b261ecSmrg#define DDCAPS_PALETTE			0x00008000
63505b261ecSmrg#define DDCAPS_PALETTEVSYNC		0x00010000
63605b261ecSmrg#define DDCAPS_READSCANLINE		0x00020000
63705b261ecSmrg#define DDCAPS_STEREOVIEW		0x00040000
63805b261ecSmrg#define DDCAPS_VBI			0x00080000
63905b261ecSmrg#define DDCAPS_ZBLTS			0x00100000
64005b261ecSmrg#define DDCAPS_ZOVERLAYS		0x00200000
64105b261ecSmrg#define DDCAPS_COLORKEY			0x00400000
64205b261ecSmrg#define DDCAPS_ALPHA			0x00800000
64305b261ecSmrg#define DDCAPS_COLORKEYHWASSIST		0x01000000
64405b261ecSmrg#define DDCAPS_NOHARDWARE		0x02000000
64505b261ecSmrg#define DDCAPS_BLTCOLORFILL		0x04000000
64605b261ecSmrg#define DDCAPS_BANKSWITCHED		0x08000000
64705b261ecSmrg#define DDCAPS_BLTDEPTHFILL		0x10000000
64805b261ecSmrg#define DDCAPS_CANCLIP			0x20000000
64905b261ecSmrg#define DDCAPS_CANCLIPSTRETCHED		0x40000000
65005b261ecSmrg#define DDCAPS_CANBLTSYSMEM		0x80000000
65105b261ecSmrg
65205b261ecSmrg/* DDCAPS.dwCaps2 */
65305b261ecSmrg#define DDCAPS2_CERTIFIED		0x00000001
65405b261ecSmrg#define DDCAPS2_NO2DDURING3DSCENE       0x00000002
65505b261ecSmrg#define DDCAPS2_VIDEOPORT		0x00000004
65605b261ecSmrg#define DDCAPS2_AUTOFLIPOVERLAY		0x00000008
65705b261ecSmrg#define DDCAPS2_CANBOBINTERLEAVED	0x00000010
65805b261ecSmrg#define DDCAPS2_CANBOBNONINTERLEAVED	0x00000020
65905b261ecSmrg#define DDCAPS2_COLORCONTROLOVERLAY	0x00000040
66005b261ecSmrg#define DDCAPS2_COLORCONTROLPRIMARY	0x00000080
66105b261ecSmrg#define DDCAPS2_CANDROPZ16BIT		0x00000100
66205b261ecSmrg#define DDCAPS2_NONLOCALVIDMEM		0x00000200
66305b261ecSmrg#define DDCAPS2_NONLOCALVIDMEMCAPS	0x00000400
66405b261ecSmrg#define DDCAPS2_NOPAGELOCKREQUIRED	0x00000800
66505b261ecSmrg#define DDCAPS2_WIDESURFACES		0x00001000
66605b261ecSmrg#define DDCAPS2_CANFLIPODDEVEN		0x00002000
66705b261ecSmrg#define DDCAPS2_CANBOBHARDWARE		0x00004000
66805b261ecSmrg#define DDCAPS2_COPYFOURCC              0x00008000
66905b261ecSmrg#define DDCAPS2_PRIMARYGAMMA            0x00020000
67005b261ecSmrg#define DDCAPS2_CANRENDERWINDOWED       0x00080000
67105b261ecSmrg#define DDCAPS2_CANCALIBRATEGAMMA       0x00100000
67205b261ecSmrg#define DDCAPS2_FLIPINTERVAL            0x00200000
67305b261ecSmrg#define DDCAPS2_FLIPNOVSYNC             0x00400000
67405b261ecSmrg#define DDCAPS2_CANMANAGETEXTURE        0x00800000
67505b261ecSmrg#define DDCAPS2_TEXMANINNONLOCALVIDMEM  0x01000000
67605b261ecSmrg#define DDCAPS2_STEREO                  0x02000000
67705b261ecSmrg#define DDCAPS2_SYSTONONLOCAL_AS_SYSTOLOCAL   0x04000000
67805b261ecSmrg
67905b261ecSmrg
68005b261ecSmrg/* Set/Get Colour Key Flags */
68105b261ecSmrg#define DDCKEY_COLORSPACE  0x00000001  /* Struct is single colour space */
68205b261ecSmrg#define DDCKEY_DESTBLT     0x00000002  /* To be used as dest for blt */
68305b261ecSmrg#define DDCKEY_DESTOVERLAY 0x00000004  /* To be used as dest for CK overlays */
68405b261ecSmrg#define DDCKEY_SRCBLT      0x00000008  /* To be used as src for blt */
68505b261ecSmrg#define DDCKEY_SRCOVERLAY  0x00000010  /* To be used as src for CK overlays */
68605b261ecSmrg
68705b261ecSmrgtypedef struct _DDCOLORKEY
68805b261ecSmrg{
68905b261ecSmrg	DWORD	dwColorSpaceLowValue;/* low boundary of color space that is to
69005b261ecSmrg                                      * be treated as Color Key, inclusive
69105b261ecSmrg				      */
69205b261ecSmrg	DWORD	dwColorSpaceHighValue;/* high boundary of color space that is
69305b261ecSmrg                                       * to be treated as Color Key, inclusive
69405b261ecSmrg				       */
69505b261ecSmrg} DDCOLORKEY,*LPDDCOLORKEY;
69605b261ecSmrg
69705b261ecSmrg/* ddCKEYCAPS bits */
69805b261ecSmrg#define DDCKEYCAPS_DESTBLT			0x00000001
69905b261ecSmrg#define DDCKEYCAPS_DESTBLTCLRSPACE		0x00000002
70005b261ecSmrg#define DDCKEYCAPS_DESTBLTCLRSPACEYUV		0x00000004
70105b261ecSmrg#define DDCKEYCAPS_DESTBLTYUV			0x00000008
70205b261ecSmrg#define DDCKEYCAPS_DESTOVERLAY			0x00000010
70305b261ecSmrg#define DDCKEYCAPS_DESTOVERLAYCLRSPACE		0x00000020
70405b261ecSmrg#define DDCKEYCAPS_DESTOVERLAYCLRSPACEYUV	0x00000040
70505b261ecSmrg#define DDCKEYCAPS_DESTOVERLAYONEACTIVE		0x00000080
70605b261ecSmrg#define DDCKEYCAPS_DESTOVERLAYYUV		0x00000100
70705b261ecSmrg#define DDCKEYCAPS_SRCBLT			0x00000200
70805b261ecSmrg#define DDCKEYCAPS_SRCBLTCLRSPACE		0x00000400
70905b261ecSmrg#define DDCKEYCAPS_SRCBLTCLRSPACEYUV		0x00000800
71005b261ecSmrg#define DDCKEYCAPS_SRCBLTYUV			0x00001000
71105b261ecSmrg#define DDCKEYCAPS_SRCOVERLAY			0x00002000
71205b261ecSmrg#define DDCKEYCAPS_SRCOVERLAYCLRSPACE		0x00004000
71305b261ecSmrg#define DDCKEYCAPS_SRCOVERLAYCLRSPACEYUV	0x00008000
71405b261ecSmrg#define DDCKEYCAPS_SRCOVERLAYONEACTIVE		0x00010000
71505b261ecSmrg#define DDCKEYCAPS_SRCOVERLAYYUV		0x00020000
71605b261ecSmrg#define DDCKEYCAPS_NOCOSTOVERLAY		0x00040000
71705b261ecSmrg
71805b261ecSmrgtypedef struct _DDPIXELFORMAT {
71905b261ecSmrg    DWORD	dwSize;                 /* 0: size of structure */
72005b261ecSmrg    DWORD	dwFlags;                /* 4: pixel format flags */
72105b261ecSmrg    DWORD	dwFourCC;               /* 8: (FOURCC code) */
72205b261ecSmrg    union {
72305b261ecSmrg	DWORD	dwRGBBitCount;          /* C: how many bits per pixel */
72405b261ecSmrg	DWORD	dwYUVBitCount;          /* C: how many bits per pixel */
72505b261ecSmrg	DWORD	dwZBufferBitDepth;      /* C: how many bits for z buffers */
72605b261ecSmrg	DWORD	dwAlphaBitDepth;        /* C: how many bits for alpha channels*/
72705b261ecSmrg	DWORD	dwLuminanceBitCount;
72805b261ecSmrg	DWORD	dwBumpBitCount;
72905b261ecSmrg    } DUMMYUNIONNAME1;
73005b261ecSmrg    union {
73105b261ecSmrg	DWORD	dwRBitMask;             /* 10: mask for red bit*/
73205b261ecSmrg	DWORD	dwYBitMask;             /* 10: mask for Y bits*/
73305b261ecSmrg	DWORD	dwStencilBitDepth;
73405b261ecSmrg	DWORD	dwLuminanceBitMask;
73505b261ecSmrg	DWORD	dwBumpDuBitMask;
73605b261ecSmrg    } DUMMYUNIONNAME2;
73705b261ecSmrg    union {
73805b261ecSmrg	DWORD	dwGBitMask;             /* 14: mask for green bits*/
73905b261ecSmrg	DWORD	dwUBitMask;             /* 14: mask for U bits*/
74005b261ecSmrg	DWORD	dwZBitMask;
74105b261ecSmrg	DWORD	dwBumpDvBitMask;
74205b261ecSmrg    } DUMMYUNIONNAME3;
74305b261ecSmrg    union {
74405b261ecSmrg	DWORD   dwBBitMask;             /* 18: mask for blue bits*/
74505b261ecSmrg	DWORD   dwVBitMask;             /* 18: mask for V bits*/
74605b261ecSmrg	DWORD	dwStencilBitMask;
74705b261ecSmrg	DWORD	dwBumpLuminanceBitMask;
74805b261ecSmrg    } DUMMYUNIONNAME4;
74905b261ecSmrg    union {
75005b261ecSmrg    	DWORD	dwRGBAlphaBitMask;	/* 1C: mask for alpha channel */
75105b261ecSmrg    	DWORD	dwYUVAlphaBitMask;	/* 1C: mask for alpha channel */
75205b261ecSmrg	DWORD	dwLuminanceAlphaBitMask;
75305b261ecSmrg	DWORD	dwRGBZBitMask;		/* 1C: mask for Z channel */
75405b261ecSmrg	DWORD	dwYUVZBitMask;		/* 1C: mask for Z channel */
75505b261ecSmrg    } DUMMYUNIONNAME5;
75605b261ecSmrg    					/* 20: next structure */
75705b261ecSmrg} DDPIXELFORMAT,*LPDDPIXELFORMAT;
75805b261ecSmrg
75905b261ecSmrg/* DDCAPS.dwFXCaps */
76005b261ecSmrg#define DDFXCAPS_BLTALPHA               0x00000001
76105b261ecSmrg#define DDFXCAPS_OVERLAYALPHA           0x00000004
76205b261ecSmrg#define DDFXCAPS_BLTARITHSTRETCHYN	0x00000010
76305b261ecSmrg#define DDFXCAPS_BLTARITHSTRETCHY	0x00000020
76405b261ecSmrg#define DDFXCAPS_BLTMIRRORLEFTRIGHT	0x00000040
76505b261ecSmrg#define DDFXCAPS_BLTMIRRORUPDOWN	0x00000080
76605b261ecSmrg#define DDFXCAPS_BLTROTATION		0x00000100
76705b261ecSmrg#define DDFXCAPS_BLTROTATION90		0x00000200
76805b261ecSmrg#define DDFXCAPS_BLTSHRINKX		0x00000400
76905b261ecSmrg#define DDFXCAPS_BLTSHRINKXN		0x00000800
77005b261ecSmrg#define DDFXCAPS_BLTSHRINKY		0x00001000
77105b261ecSmrg#define DDFXCAPS_BLTSHRINKYN		0x00002000
77205b261ecSmrg#define DDFXCAPS_BLTSTRETCHX		0x00004000
77305b261ecSmrg#define DDFXCAPS_BLTSTRETCHXN		0x00008000
77405b261ecSmrg#define DDFXCAPS_BLTSTRETCHY		0x00010000
77505b261ecSmrg#define DDFXCAPS_BLTSTRETCHYN		0x00020000
77605b261ecSmrg#define DDFXCAPS_OVERLAYARITHSTRETCHY	0x00040000
77705b261ecSmrg#define DDFXCAPS_OVERLAYARITHSTRETCHYN	0x00000008
77805b261ecSmrg#define DDFXCAPS_OVERLAYSHRINKX		0x00080000
77905b261ecSmrg#define DDFXCAPS_OVERLAYSHRINKXN	0x00100000
78005b261ecSmrg#define DDFXCAPS_OVERLAYSHRINKY		0x00200000
78105b261ecSmrg#define DDFXCAPS_OVERLAYSHRINKYN	0x00400000
78205b261ecSmrg#define DDFXCAPS_OVERLAYSTRETCHX	0x00800000
78305b261ecSmrg#define DDFXCAPS_OVERLAYSTRETCHXN	0x01000000
78405b261ecSmrg#define DDFXCAPS_OVERLAYSTRETCHY	0x02000000
78505b261ecSmrg#define DDFXCAPS_OVERLAYSTRETCHYN	0x04000000
78605b261ecSmrg#define DDFXCAPS_OVERLAYMIRRORLEFTRIGHT	0x08000000
78705b261ecSmrg#define DDFXCAPS_OVERLAYMIRRORUPDOWN	0x10000000
78805b261ecSmrg
78905b261ecSmrg#define DDFXCAPS_OVERLAYFILTER          DDFXCAPS_OVERLAYARITHSTRETCHY
79005b261ecSmrg
79105b261ecSmrg/* DDCAPS.dwFXAlphaCaps */
79205b261ecSmrg#define DDFXALPHACAPS_BLTALPHAEDGEBLEND		0x00000001
79305b261ecSmrg#define DDFXALPHACAPS_BLTALPHAPIXELS		0x00000002
79405b261ecSmrg#define DDFXALPHACAPS_BLTALPHAPIXELSNEG		0x00000004
79505b261ecSmrg#define DDFXALPHACAPS_BLTALPHASURFACES		0x00000008
79605b261ecSmrg#define DDFXALPHACAPS_BLTALPHASURFACESNEG	0x00000010
79705b261ecSmrg#define DDFXALPHACAPS_OVERLAYALPHAEDGEBLEND	0x00000020
79805b261ecSmrg#define DDFXALPHACAPS_OVERLAYALPHAPIXELS	0x00000040
79905b261ecSmrg#define DDFXALPHACAPS_OVERLAYALPHAPIXELSNEG	0x00000080
80005b261ecSmrg#define DDFXALPHACAPS_OVERLAYALPHASURFACES	0x00000100
80105b261ecSmrg#define DDFXALPHACAPS_OVERLAYALPHASURFACESNEG	0x00000200
80205b261ecSmrg
80305b261ecSmrg/* DDCAPS.dwPalCaps */
80405b261ecSmrg#define DDPCAPS_4BIT			0x00000001
80505b261ecSmrg#define DDPCAPS_8BITENTRIES		0x00000002
80605b261ecSmrg#define DDPCAPS_8BIT			0x00000004
80705b261ecSmrg#define DDPCAPS_INITIALIZE		0x00000008
80805b261ecSmrg#define DDPCAPS_PRIMARYSURFACE		0x00000010
80905b261ecSmrg#define DDPCAPS_PRIMARYSURFACELEFT	0x00000020
81005b261ecSmrg#define DDPCAPS_ALLOW256		0x00000040
81105b261ecSmrg#define DDPCAPS_VSYNC			0x00000080
81205b261ecSmrg#define DDPCAPS_1BIT			0x00000100
81305b261ecSmrg#define DDPCAPS_2BIT			0x00000200
81405b261ecSmrg#define DDPCAPS_ALPHA                   0x00000400
81505b261ecSmrg
81605b261ecSmrg/* DDCAPS.dwSVCaps */
81705b261ecSmrg/* the first 4 of these are now obsolete */
81805b261ecSmrg#if DIRECTDRAW_VERSION >= 0x700	/* FIXME: I'm not sure when this switch occured */
81905b261ecSmrg#define DDSVCAPS_RESERVED1		0x00000001
82005b261ecSmrg#define DDSVCAPS_RESERVED2		0x00000002
82105b261ecSmrg#define DDSVCAPS_RESERVED3		0x00000004
82205b261ecSmrg#define DDSVCAPS_RESERVED4		0x00000008
82305b261ecSmrg#else
82405b261ecSmrg#define DDSVCAPS_ENIGMA			0x00000001
82505b261ecSmrg#define DDSVCAPS_FLICKER		0x00000002
82605b261ecSmrg#define DDSVCAPS_REDBLUE		0x00000004
82705b261ecSmrg#define DDSVCAPS_SPLIT			0x00000008
82805b261ecSmrg#endif
82905b261ecSmrg#define DDSVCAPS_STEREOSEQUENTIAL       0x00000010
83005b261ecSmrg
83105b261ecSmrg/* BitDepths */
83205b261ecSmrg#define DDBD_1				0x00004000
83305b261ecSmrg#define DDBD_2				0x00002000
83405b261ecSmrg#define DDBD_4				0x00001000
83505b261ecSmrg#define DDBD_8				0x00000800
83605b261ecSmrg#define DDBD_16				0x00000400
83705b261ecSmrg#define DDBD_24				0x00000200
83805b261ecSmrg#define DDBD_32				0x00000100
83905b261ecSmrg
84005b261ecSmrg/* DDOVERLAYFX.dwDDFX */
84105b261ecSmrg#define DDOVERFX_ARITHSTRETCHY		0x00000001
84205b261ecSmrg#define DDOVERFX_MIRRORLEFTRIGHT	0x00000002
84305b261ecSmrg#define DDOVERFX_MIRRORUPDOWN		0x00000004
84405b261ecSmrg
84505b261ecSmrg/* UpdateOverlay flags */
84605b261ecSmrg#define DDOVER_ALPHADEST                        0x00000001
84705b261ecSmrg#define DDOVER_ALPHADESTCONSTOVERRIDE           0x00000002
84805b261ecSmrg#define DDOVER_ALPHADESTNEG                     0x00000004
84905b261ecSmrg#define DDOVER_ALPHADESTSURFACEOVERRIDE         0x00000008
85005b261ecSmrg#define DDOVER_ALPHAEDGEBLEND                   0x00000010
85105b261ecSmrg#define DDOVER_ALPHASRC                         0x00000020
85205b261ecSmrg#define DDOVER_ALPHASRCCONSTOVERRIDE            0x00000040
85305b261ecSmrg#define DDOVER_ALPHASRCNEG                      0x00000080
85405b261ecSmrg#define DDOVER_ALPHASRCSURFACEOVERRIDE          0x00000100
85505b261ecSmrg#define DDOVER_HIDE                             0x00000200
85605b261ecSmrg#define DDOVER_KEYDEST                          0x00000400
85705b261ecSmrg#define DDOVER_KEYDESTOVERRIDE                  0x00000800
85805b261ecSmrg#define DDOVER_KEYSRC                           0x00001000
85905b261ecSmrg#define DDOVER_KEYSRCOVERRIDE                   0x00002000
86005b261ecSmrg#define DDOVER_SHOW                             0x00004000
86105b261ecSmrg#define DDOVER_ADDDIRTYRECT                     0x00008000
86205b261ecSmrg#define DDOVER_REFRESHDIRTYRECTS                0x00010000
86305b261ecSmrg#define DDOVER_REFRESHALL                       0x00020000
86405b261ecSmrg#define DDOVER_DDFX                             0x00080000
86505b261ecSmrg#define DDOVER_AUTOFLIP                         0x00100000
86605b261ecSmrg#define DDOVER_BOB                              0x00200000
86705b261ecSmrg#define DDOVER_OVERRIDEBOBWEAVE                 0x00400000
86805b261ecSmrg#define DDOVER_INTERLEAVED                      0x00800000
86905b261ecSmrg
87005b261ecSmrg/* DDCOLORKEY.dwFlags */
87105b261ecSmrg#define DDPF_ALPHAPIXELS		0x00000001
87205b261ecSmrg#define DDPF_ALPHA			0x00000002
87305b261ecSmrg#define DDPF_FOURCC			0x00000004
87405b261ecSmrg#define DDPF_PALETTEINDEXED4		0x00000008
87505b261ecSmrg#define DDPF_PALETTEINDEXEDTO8		0x00000010
87605b261ecSmrg#define DDPF_PALETTEINDEXED8		0x00000020
87705b261ecSmrg#define DDPF_RGB			0x00000040
87805b261ecSmrg#define DDPF_COMPRESSED			0x00000080
87905b261ecSmrg#define DDPF_RGBTOYUV			0x00000100
88005b261ecSmrg#define DDPF_YUV			0x00000200
88105b261ecSmrg#define DDPF_ZBUFFER			0x00000400
88205b261ecSmrg#define DDPF_PALETTEINDEXED1		0x00000800
88305b261ecSmrg#define DDPF_PALETTEINDEXED2		0x00001000
88405b261ecSmrg#define DDPF_ZPIXELS			0x00002000
88505b261ecSmrg#define DDPF_STENCILBUFFER              0x00004000
88605b261ecSmrg#define DDPF_ALPHAPREMULT               0x00008000
88705b261ecSmrg#define DDPF_LUMINANCE                  0x00020000
88805b261ecSmrg#define DDPF_BUMPLUMINANCE              0x00040000
88905b261ecSmrg#define DDPF_BUMPDUDV                   0x00080000
89005b261ecSmrg
89105b261ecSmrg/* SetCooperativeLevel dwFlags */
89205b261ecSmrg#define DDSCL_FULLSCREEN		0x00000001
89305b261ecSmrg#define DDSCL_ALLOWREBOOT		0x00000002
89405b261ecSmrg#define DDSCL_NOWINDOWCHANGES		0x00000004
89505b261ecSmrg#define DDSCL_NORMAL			0x00000008
89605b261ecSmrg#define DDSCL_EXCLUSIVE			0x00000010
89705b261ecSmrg#define DDSCL_ALLOWMODEX		0x00000040
89805b261ecSmrg#define DDSCL_SETFOCUSWINDOW		0x00000080
89905b261ecSmrg#define DDSCL_SETDEVICEWINDOW		0x00000100
90005b261ecSmrg#define DDSCL_CREATEDEVICEWINDOW	0x00000200
90105b261ecSmrg#define DDSCL_MULTITHREADED             0x00000400
90205b261ecSmrg#define DDSCL_FPUSETUP                  0x00000800
90305b261ecSmrg#define DDSCL_FPUPRESERVE               0x00001000
90405b261ecSmrg
90505b261ecSmrg
90605b261ecSmrg/* DDSURFACEDESC.dwFlags */
90705b261ecSmrg#define	DDSD_CAPS		0x00000001
90805b261ecSmrg#define	DDSD_HEIGHT		0x00000002
90905b261ecSmrg#define	DDSD_WIDTH		0x00000004
91005b261ecSmrg#define	DDSD_PITCH		0x00000008
91105b261ecSmrg#define	DDSD_BACKBUFFERCOUNT	0x00000020
91205b261ecSmrg#define	DDSD_ZBUFFERBITDEPTH	0x00000040
91305b261ecSmrg#define	DDSD_ALPHABITDEPTH	0x00000080
91405b261ecSmrg#define	DDSD_LPSURFACE		0x00000800
91505b261ecSmrg#define	DDSD_PIXELFORMAT	0x00001000
91605b261ecSmrg#define	DDSD_CKDESTOVERLAY	0x00002000
91705b261ecSmrg#define	DDSD_CKDESTBLT		0x00004000
91805b261ecSmrg#define	DDSD_CKSRCOVERLAY	0x00008000
91905b261ecSmrg#define	DDSD_CKSRCBLT		0x00010000
92005b261ecSmrg#define	DDSD_MIPMAPCOUNT	0x00020000
92105b261ecSmrg#define	DDSD_REFRESHRATE	0x00040000
92205b261ecSmrg#define	DDSD_LINEARSIZE		0x00080000
92305b261ecSmrg#define DDSD_TEXTURESTAGE       0x00100000
92405b261ecSmrg#define DDSD_FVF                0x00200000
92505b261ecSmrg#define DDSD_SRCVBHANDLE        0x00400000
92605b261ecSmrg#define	DDSD_ALL		0x007ff9ee
92705b261ecSmrg
92805b261ecSmrg/* EnumSurfaces flags */
92905b261ecSmrg#define DDENUMSURFACES_ALL          0x00000001
93005b261ecSmrg#define DDENUMSURFACES_MATCH        0x00000002
93105b261ecSmrg#define DDENUMSURFACES_NOMATCH      0x00000004
93205b261ecSmrg#define DDENUMSURFACES_CANBECREATED 0x00000008
93305b261ecSmrg#define DDENUMSURFACES_DOESEXIST    0x00000010
93405b261ecSmrg
93505b261ecSmrg/* SetDisplayMode flags */
93605b261ecSmrg#define DDSDM_STANDARDVGAMODE	0x00000001
93705b261ecSmrg
93805b261ecSmrg/* EnumDisplayModes flags */
93905b261ecSmrg#define DDEDM_REFRESHRATES	0x00000001
94005b261ecSmrg#define DDEDM_STANDARDVGAMODES	0x00000002
94105b261ecSmrg
94205b261ecSmrg/* WaitForVerticalDisplay flags */
94305b261ecSmrg
94405b261ecSmrg#define DDWAITVB_BLOCKBEGIN		0x00000001
94505b261ecSmrg#define DDWAITVB_BLOCKBEGINEVENT	0x00000002
94605b261ecSmrg#define DDWAITVB_BLOCKEND		0x00000004
94705b261ecSmrg
94805b261ecSmrgtypedef struct _DDSURFACEDESC
94905b261ecSmrg{
95005b261ecSmrg	DWORD	dwSize;		/* 0: size of the DDSURFACEDESC structure*/
95105b261ecSmrg	DWORD	dwFlags;	/* 4: determines what fields are valid*/
95205b261ecSmrg	DWORD	dwHeight;	/* 8: height of surface to be created*/
95305b261ecSmrg	DWORD	dwWidth;	/* C: width of input surface*/
95405b261ecSmrg	union {
95505b261ecSmrg		LONG	lPitch;	/* 10: distance to start of next line (return value only)*/
95605b261ecSmrg		DWORD	dwLinearSize;
95705b261ecSmrg	} DUMMYUNIONNAME1;
95805b261ecSmrg	DWORD	dwBackBufferCount;/* 14: number of back buffers requested*/
95905b261ecSmrg	union {
96005b261ecSmrg		DWORD	dwMipMapCount;/* 18:number of mip-map levels requested*/
96105b261ecSmrg		DWORD	dwZBufferBitDepth;/*18: depth of Z buffer requested*/
96205b261ecSmrg		DWORD	dwRefreshRate;/* 18:refresh rate (used when display mode is described)*/
96305b261ecSmrg	} DUMMYUNIONNAME2;
96405b261ecSmrg	DWORD	dwAlphaBitDepth;/* 1C:depth of alpha buffer requested*/
96505b261ecSmrg	DWORD	dwReserved;	/* 20:reserved*/
96605b261ecSmrg	LPVOID	lpSurface;	/* 24:pointer to the associated surface memory*/
96705b261ecSmrg	DDCOLORKEY	ddckCKDestOverlay;/* 28: CK for dest overlay use*/
96805b261ecSmrg	DDCOLORKEY	ddckCKDestBlt;	/* 30: CK for destination blt use*/
96905b261ecSmrg	DDCOLORKEY	ddckCKSrcOverlay;/* 38: CK for source overlay use*/
97005b261ecSmrg	DDCOLORKEY	ddckCKSrcBlt;	/* 40: CK for source blt use*/
97105b261ecSmrg	DDPIXELFORMAT	ddpfPixelFormat;/* 48: pixel format description of the surface*/
97205b261ecSmrg	DDSCAPS		ddsCaps;	/* 68: direct draw surface caps */
97305b261ecSmrg} DDSURFACEDESC,*LPDDSURFACEDESC;
97405b261ecSmrg
97505b261ecSmrgtypedef struct _DDSURFACEDESC2
97605b261ecSmrg{
97705b261ecSmrg	DWORD	dwSize;		/* 0: size of the DDSURFACEDESC structure*/
97805b261ecSmrg	DWORD	dwFlags;	/* 4: determines what fields are valid*/
97905b261ecSmrg	DWORD	dwHeight;	/* 8: height of surface to be created*/
98005b261ecSmrg	DWORD	dwWidth;	/* C: width of input surface*/
98105b261ecSmrg	union {
98205b261ecSmrg		LONG	lPitch;	      /*10: distance to start of next line (return value only)*/
98305b261ecSmrg		DWORD   dwLinearSize; /*10: formless late-allocated optimized surface size */
98405b261ecSmrg	} DUMMYUNIONNAME1;
98505b261ecSmrg	DWORD	dwBackBufferCount;/* 14: number of back buffers requested*/
98605b261ecSmrg	union {
98705b261ecSmrg		DWORD	dwMipMapCount;/* 18:number of mip-map levels requested*/
98805b261ecSmrg		DWORD	dwRefreshRate;/* 18:refresh rate (used when display mode is described)*/
98905b261ecSmrg		DWORD   dwSrcVBHandle;/* 18:source used in VB::Optimize */
99005b261ecSmrg	} DUMMYUNIONNAME2;
99105b261ecSmrg	DWORD	dwAlphaBitDepth;/* 1C:depth of alpha buffer requested*/
99205b261ecSmrg	DWORD	dwReserved;	/* 20:reserved*/
99305b261ecSmrg	LPVOID	lpSurface;	/* 24:pointer to the associated surface memory*/
99405b261ecSmrg	union {
99505b261ecSmrg		DDCOLORKEY	ddckCKDestOverlay; /* 28: CK for dest overlay use*/
99605b261ecSmrg		DWORD 		dwEmptyFaceColor;  /* 28: color for empty cubemap faces */
99705b261ecSmrg	} DUMMYUNIONNAME3;
99805b261ecSmrg	DDCOLORKEY	ddckCKDestBlt;	/* 30: CK for destination blt use*/
99905b261ecSmrg	DDCOLORKEY	ddckCKSrcOverlay;/* 38: CK for source overlay use*/
100005b261ecSmrg	DDCOLORKEY	ddckCKSrcBlt;	/* 40: CK for source blt use*/
100105b261ecSmrg
100205b261ecSmrg	union {
100305b261ecSmrg		DDPIXELFORMAT	ddpfPixelFormat;/* 48: pixel format description of the surface*/
100405b261ecSmrg		DWORD 		dwFVF;	/* 48: vertex format description of vertex buffers */
100505b261ecSmrg	} DUMMYUNIONNAME4;
100605b261ecSmrg	DDSCAPS2	ddsCaps;  /* 68: DDraw surface caps */
100705b261ecSmrg	DWORD		dwTextureStage; /* 78: stage in multitexture cascade */
100805b261ecSmrg} DDSURFACEDESC2,*LPDDSURFACEDESC2;
100905b261ecSmrg
101005b261ecSmrg/* DDCOLORCONTROL.dwFlags */
101105b261ecSmrg#define DDCOLOR_BRIGHTNESS	0x00000001
101205b261ecSmrg#define DDCOLOR_CONTRAST	0x00000002
101305b261ecSmrg#define DDCOLOR_HUE		0x00000004
101405b261ecSmrg#define DDCOLOR_SATURATION	0x00000008
101505b261ecSmrg#define DDCOLOR_SHARPNESS	0x00000010
101605b261ecSmrg#define DDCOLOR_GAMMA		0x00000020
101705b261ecSmrg#define DDCOLOR_COLORENABLE	0x00000040
101805b261ecSmrg
101905b261ecSmrgtypedef struct {
102005b261ecSmrg	DWORD	dwSize;
102105b261ecSmrg	DWORD	dwFlags;
102205b261ecSmrg	LONG	lBrightness;
102305b261ecSmrg	LONG	lContrast;
102405b261ecSmrg	LONG	lHue;
102505b261ecSmrg	LONG	lSaturation;
102605b261ecSmrg	LONG	lSharpness;
102705b261ecSmrg	LONG	lGamma;
102805b261ecSmrg	LONG	lColorEnable;
102905b261ecSmrg	DWORD	dwReserved1;
103005b261ecSmrg} DDCOLORCONTROL,*LPDDCOLORCONTROL;
103105b261ecSmrg
103205b261ecSmrgtypedef struct {
103305b261ecSmrg	WORD	red[256];
103405b261ecSmrg	WORD	green[256];
103505b261ecSmrg	WORD	blue[256];
103605b261ecSmrg} DDGAMMARAMP,*LPDDGAMMARAMP;
103705b261ecSmrg
103805b261ecSmrgtypedef BOOL CALLBACK (*LPDDENUMCALLBACKA)(GUID *, LPSTR, LPSTR, LPVOID);
103905b261ecSmrgtypedef BOOL CALLBACK (*LPDDENUMCALLBACKW)(GUID *, LPWSTR, LPWSTR, LPVOID);
104005b261ecSmrgDECL_WINELIB_TYPE_AW(LPDDENUMCALLBACK)
104105b261ecSmrg
104205b261ecSmrgtypedef HRESULT CALLBACK (*LPDDENUMMODESCALLBACK)(LPDDSURFACEDESC, LPVOID);
104305b261ecSmrgtypedef HRESULT CALLBACK (*LPDDENUMMODESCALLBACK2)(LPDDSURFACEDESC2, LPVOID);
104405b261ecSmrgtypedef HRESULT CALLBACK (*LPDDENUMSURFACESCALLBACK)(LPDIRECTDRAWSURFACE, LPDDSURFACEDESC, LPVOID);
104505b261ecSmrgtypedef HRESULT CALLBACK (*LPDDENUMSURFACESCALLBACK2)(LPDIRECTDRAWSURFACE4, LPDDSURFACEDESC2, LPVOID);
104605b261ecSmrgtypedef HRESULT CALLBACK (*LPDDENUMSURFACESCALLBACK7)(LPDIRECTDRAWSURFACE7, LPDDSURFACEDESC2, LPVOID);
104705b261ecSmrg
104805b261ecSmrgtypedef BOOL CALLBACK (*LPDDENUMCALLBACKEXA)(GUID *, LPSTR, LPSTR, LPVOID, HMONITOR);
104905b261ecSmrgtypedef BOOL CALLBACK (*LPDDENUMCALLBACKEXW)(GUID *, LPWSTR, LPWSTR, LPVOID, HMONITOR);
105005b261ecSmrgDECL_WINELIB_TYPE_AW(LPDDENUMCALLBACKEX)
105105b261ecSmrg
105205b261ecSmrgHRESULT WINAPI DirectDrawEnumerateExA( LPDDENUMCALLBACKEXA lpCallback, LPVOID lpContext, DWORD dwFlags);
105305b261ecSmrgHRESULT WINAPI DirectDrawEnumerateExW( LPDDENUMCALLBACKEXW lpCallback, LPVOID lpContext, DWORD dwFlags);
105405b261ecSmrg#define DirectDrawEnumerateEx WINELIB_NAME_AW(DirectDrawEnumerateEx)
105505b261ecSmrg
105605b261ecSmrg/* flags for DirectDrawEnumerateEx */
105705b261ecSmrg#define DDENUM_ATTACHEDSECONDARYDEVICES	0x00000001
105805b261ecSmrg#define DDENUM_DETACHEDSECONDARYDEVICES	0x00000002
105905b261ecSmrg#define DDENUM_NONDISPLAYDEVICES	0x00000004
106005b261ecSmrg
106105b261ecSmrg/* flags for DirectDrawCreate or IDirectDraw::Initialize */
106205b261ecSmrg#define DDCREATE_HARDWAREONLY	1L
106305b261ecSmrg#define DDCREATE_EMULATIONONLY	2L
106405b261ecSmrg
106505b261ecSmrgtypedef struct _DDBLTFX
106605b261ecSmrg{
106705b261ecSmrg    DWORD       dwSize;                         /* size of structure */
106805b261ecSmrg    DWORD       dwDDFX;                         /* FX operations */
106905b261ecSmrg    DWORD       dwROP;                          /* Win32 raster operations */
107005b261ecSmrg    DWORD       dwDDROP;                        /* Raster operations new for DirectDraw */
107105b261ecSmrg    DWORD       dwRotationAngle;                /* Rotation angle for blt */
107205b261ecSmrg    DWORD       dwZBufferOpCode;                /* ZBuffer compares */
107305b261ecSmrg    DWORD       dwZBufferLow;                   /* Low limit of Z buffer */
107405b261ecSmrg    DWORD       dwZBufferHigh;                  /* High limit of Z buffer */
107505b261ecSmrg    DWORD       dwZBufferBaseDest;              /* Destination base value */
107605b261ecSmrg    DWORD       dwZDestConstBitDepth;           /* Bit depth used to specify Z constant for destination */
107705b261ecSmrg    union
107805b261ecSmrg    {
107905b261ecSmrg        DWORD   dwZDestConst;                   /* Constant to use as Z buffer for dest */
108005b261ecSmrg        LPDIRECTDRAWSURFACE lpDDSZBufferDest;   /* Surface to use as Z buffer for dest */
108105b261ecSmrg    } DUMMYUNIONNAME1;
108205b261ecSmrg    DWORD       dwZSrcConstBitDepth;            /* Bit depth used to specify Z constant for source */
108305b261ecSmrg    union
108405b261ecSmrg    {
108505b261ecSmrg        DWORD   dwZSrcConst;                    /* Constant to use as Z buffer for src */
108605b261ecSmrg        LPDIRECTDRAWSURFACE lpDDSZBufferSrc;    /* Surface to use as Z buffer for src */
108705b261ecSmrg    } DUMMYUNIONNAME2;
108805b261ecSmrg    DWORD       dwAlphaEdgeBlendBitDepth;       /* Bit depth used to specify constant for alpha edge blend */
108905b261ecSmrg    DWORD       dwAlphaEdgeBlend;               /* Alpha for edge blending */
109005b261ecSmrg    DWORD       dwReserved;
109105b261ecSmrg    DWORD       dwAlphaDestConstBitDepth;       /* Bit depth used to specify alpha constant for destination */
109205b261ecSmrg    union
109305b261ecSmrg    {
109405b261ecSmrg        DWORD   dwAlphaDestConst;               /* Constant to use as Alpha Channel */
109505b261ecSmrg        LPDIRECTDRAWSURFACE lpDDSAlphaDest;     /* Surface to use as Alpha Channel */
109605b261ecSmrg    } DUMMYUNIONNAME3;
109705b261ecSmrg    DWORD       dwAlphaSrcConstBitDepth;        /* Bit depth used to specify alpha constant for source */
109805b261ecSmrg    union
109905b261ecSmrg    {
110005b261ecSmrg        DWORD   dwAlphaSrcConst;                /* Constant to use as Alpha Channel */
110105b261ecSmrg        LPDIRECTDRAWSURFACE lpDDSAlphaSrc;      /* Surface to use as Alpha Channel */
110205b261ecSmrg    } DUMMYUNIONNAME4;
110305b261ecSmrg    union
110405b261ecSmrg    {
110505b261ecSmrg        DWORD   dwFillColor;                    /* color in RGB or Palettized */
110605b261ecSmrg        DWORD   dwFillDepth;                    /* depth value for z-buffer */
110705b261ecSmrg	DWORD   dwFillPixel;			/* pixel val for RGBA or RGBZ */
110805b261ecSmrg        LPDIRECTDRAWSURFACE lpDDSPattern;       /* Surface to use as pattern */
110905b261ecSmrg    } DUMMYUNIONNAME5;
111005b261ecSmrg    DDCOLORKEY  ddckDestColorkey;               /* DestColorkey override */
111105b261ecSmrg    DDCOLORKEY  ddckSrcColorkey;                /* SrcColorkey override */
111205b261ecSmrg} DDBLTFX,*LPDDBLTFX;
111305b261ecSmrg
111405b261ecSmrg/* dwDDFX */
111505b261ecSmrg/* arithmetic stretching along y axis */
111605b261ecSmrg#define DDBLTFX_ARITHSTRETCHY			0x00000001
111705b261ecSmrg/* mirror on y axis */
111805b261ecSmrg#define DDBLTFX_MIRRORLEFTRIGHT			0x00000002
111905b261ecSmrg/* mirror on x axis */
112005b261ecSmrg#define DDBLTFX_MIRRORUPDOWN			0x00000004
112105b261ecSmrg/* do not tear */
112205b261ecSmrg#define DDBLTFX_NOTEARING			0x00000008
112305b261ecSmrg/* 180 degrees clockwise rotation */
112405b261ecSmrg#define DDBLTFX_ROTATE180			0x00000010
112505b261ecSmrg/* 270 degrees clockwise rotation */
112605b261ecSmrg#define DDBLTFX_ROTATE270			0x00000020
112705b261ecSmrg/* 90 degrees clockwise rotation */
112805b261ecSmrg#define DDBLTFX_ROTATE90			0x00000040
112905b261ecSmrg/* dwZBufferLow and dwZBufferHigh specify limits to the copied Z values */
113005b261ecSmrg#define DDBLTFX_ZBUFFERRANGE			0x00000080
113105b261ecSmrg/* add dwZBufferBaseDest to every source z value before compare */
113205b261ecSmrg#define DDBLTFX_ZBUFFERBASEDEST			0x00000100
113305b261ecSmrg
113405b261ecSmrgtypedef struct _DDOVERLAYFX
113505b261ecSmrg{
113605b261ecSmrg    DWORD       dwSize;                         /* size of structure */
113705b261ecSmrg    DWORD       dwAlphaEdgeBlendBitDepth;       /* Bit depth used to specify constant for alpha edge blend */
113805b261ecSmrg    DWORD       dwAlphaEdgeBlend;               /* Constant to use as alpha for edge blend */
113905b261ecSmrg    DWORD       dwReserved;
114005b261ecSmrg    DWORD       dwAlphaDestConstBitDepth;       /* Bit depth used to specify alpha constant for destination */
114105b261ecSmrg    union
114205b261ecSmrg    {
114305b261ecSmrg        DWORD   dwAlphaDestConst;               /* Constant to use as alpha channel for dest */
114405b261ecSmrg        LPDIRECTDRAWSURFACE lpDDSAlphaDest;     /* Surface to use as alpha channel for dest */
114505b261ecSmrg    } DUMMYUNIONNAME1;
114605b261ecSmrg    DWORD       dwAlphaSrcConstBitDepth;        /* Bit depth used to specify alpha constant for source */
114705b261ecSmrg    union
114805b261ecSmrg    {
114905b261ecSmrg        DWORD   dwAlphaSrcConst;                /* Constant to use as alpha channel for src */
115005b261ecSmrg        LPDIRECTDRAWSURFACE lpDDSAlphaSrc;      /* Surface to use as alpha channel for src */
115105b261ecSmrg    } DUMMYUNIONNAME2;
115205b261ecSmrg    DDCOLORKEY  dckDestColorkey;                /* DestColorkey override */
115305b261ecSmrg    DDCOLORKEY  dckSrcColorkey;                 /* DestColorkey override */
115405b261ecSmrg    DWORD       dwDDFX;                         /* Overlay FX */
115505b261ecSmrg    DWORD       dwFlags;                        /* flags */
115605b261ecSmrg} DDOVERLAYFX,*LPDDOVERLAYFX;
115705b261ecSmrg
115805b261ecSmrgtypedef struct _DDBLTBATCH
115905b261ecSmrg{
116005b261ecSmrg    LPRECT		lprDest;
116105b261ecSmrg    LPDIRECTDRAWSURFACE	lpDDSSrc;
116205b261ecSmrg    LPRECT		lprSrc;
116305b261ecSmrg    DWORD		dwFlags;
116405b261ecSmrg    LPDDBLTFX		lpDDBltFx;
116505b261ecSmrg} DDBLTBATCH,*LPDDBLTBATCH;
116605b261ecSmrg
116705b261ecSmrg#define MAX_DDDEVICEID_STRING          512
116805b261ecSmrg
116905b261ecSmrgtypedef struct tagDDDEVICEIDENTIFIER {
117005b261ecSmrg  char    szDriver[MAX_DDDEVICEID_STRING];
117105b261ecSmrg  char    szDescription[MAX_DDDEVICEID_STRING];
117205b261ecSmrg  LARGE_INTEGER  liDriverVersion;
117305b261ecSmrg  DWORD   dwVendorId;
117405b261ecSmrg  DWORD   dwDeviceId;
117505b261ecSmrg  DWORD   dwSubSysId;
117605b261ecSmrg  DWORD   dwRevision;
117705b261ecSmrg  GUID    guidDeviceIdentifier;
117805b261ecSmrg} DDDEVICEIDENTIFIER, * LPDDDEVICEIDENTIFIER;
117905b261ecSmrg
118005b261ecSmrgtypedef struct tagDDDEVICEIDENTIFIER2 {
118105b261ecSmrg  char    szDriver[MAX_DDDEVICEID_STRING];	/* user readable driver name */
118205b261ecSmrg  char    szDescription[MAX_DDDEVICEID_STRING]; /* user readable description */
118305b261ecSmrg  LARGE_INTEGER  liDriverVersion;		/* driver version */
118405b261ecSmrg  DWORD   dwVendorId;				/* vendor ID, zero if unknown */
118505b261ecSmrg  DWORD   dwDeviceId;				/* chipset ID, zero if unknown */
118605b261ecSmrg  DWORD   dwSubSysId;				/* board ID, zero if unknown */
118705b261ecSmrg  DWORD   dwRevision;				/* chipset version, zero if unknown */
118805b261ecSmrg  GUID    guidDeviceIdentifier;			/* unique ID for this driver/chipset combination */
118905b261ecSmrg  DWORD   dwWHQLLevel;				/* Windows Hardware Quality Lab certification level */
119005b261ecSmrg} DDDEVICEIDENTIFIER2, * LPDDDEVICEIDENTIFIER2;
119105b261ecSmrg
119205b261ecSmrg/*****************************************************************************
119305b261ecSmrg * IDirectDrawPalette interface
119405b261ecSmrg */
119505b261ecSmrg#undef INTERFACE
119605b261ecSmrg#define INTERFACE IDirectDrawPalette
119705b261ecSmrgDECLARE_INTERFACE_(IDirectDrawPalette,IUnknown)
119805b261ecSmrg{
119905b261ecSmrg    STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
120005b261ecSmrg    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
120105b261ecSmrg    STDMETHOD_(ULONG,Release)(THIS) PURE;
120205b261ecSmrg    STDMETHOD(GetCaps)(THIS_ LPDWORD lpdwCaps) PURE;
120305b261ecSmrg    STDMETHOD(GetEntries)(THIS_ DWORD dwFlags, DWORD dwBase, DWORD dwNumEntries, LPPALETTEENTRY lpEntries) PURE;
120405b261ecSmrg    STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW lpDD, DWORD dwFlags, LPPALETTEENTRY lpDDColorTable) PURE;
120505b261ecSmrg    STDMETHOD(SetEntries)(THIS_ DWORD dwFlags, DWORD dwStartingEntry, DWORD dwCount, LPPALETTEENTRY lpEntries) PURE;
120605b261ecSmrg};
120705b261ecSmrg
120805b261ecSmrg    /*** IUnknown methods ***/
120905b261ecSmrg#define IDirectDrawPalette_QueryInterface(p,a,b) ICOM_CALL_(QueryInterface,p,(p,a,b))
121005b261ecSmrg#define IDirectDrawPalette_AddRef(p)             ICOM_CALL_(AddRef,p,(p))
121105b261ecSmrg#define IDirectDrawPalette_Release(p)            ICOM_CALL_(Release,p,(p))
121205b261ecSmrg    /*** IDirectDrawPalette methods ***/
121305b261ecSmrg#define IDirectDrawPalette_GetCaps(p,a)          ICOM_CALL_(GetCaps,p,(p,a))
121405b261ecSmrg#define IDirectDrawPalette_GetEntries(p,a,b,c,d) ICOM_CALL_(GetEntries,p,(p,a,b,c,d))
121505b261ecSmrg#define IDirectDrawPalette_Initialize(p,a,b,c)   ICOM_CALL_(Initialize,p,(p,a,b,c))
121605b261ecSmrg#define IDirectDrawPalette_SetEntries(p,a,b,c,d) ICOM_CALL_(SetEntries,p,(p,a,b,c,d))
121705b261ecSmrg
121805b261ecSmrg
121905b261ecSmrg/*****************************************************************************
122005b261ecSmrg * IDirectDrawClipper interface
122105b261ecSmrg */
122205b261ecSmrg#undef INTERFACE
122305b261ecSmrg#define INTERFACE IDirectDrawClipper
122405b261ecSmrgDECLARE_INTERFACE_(IDirectDrawClipper,IUnknown)
122505b261ecSmrg{
122605b261ecSmrg    STDMETHOD(QueryInterface)(THIS_ REFIID,LPVOID*) PURE;
122705b261ecSmrg    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
122805b261ecSmrg    STDMETHOD_(ULONG,Release)(THIS) PURE;
122905b261ecSmrg    STDMETHOD(GetClipList)(THIS_ LPRECT lpRect, LPRGNDATA lpClipList, LPDWORD lpdwSize) PURE;
123005b261ecSmrg    STDMETHOD(GetHWnd)(THIS_ HWND* lphWnd) PURE;
123105b261ecSmrg    STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW lpDD, DWORD dwFlags) PURE;
123205b261ecSmrg    STDMETHOD(IsClipListChanged)(THIS_ BOOL* lpbChanged) PURE;
123305b261ecSmrg    STDMETHOD(SetClipList)(THIS_ LPRGNDATA lpClipList, DWORD dwFlags) PURE;
123405b261ecSmrg    STDMETHOD(SetHWnd)(THIS_ DWORD dwFlags, HWND hWnd) PURE;
123505b261ecSmrg};
123605b261ecSmrg
123705b261ecSmrg    /*** IUnknown methods ***/
123805b261ecSmrg#define IDirectDrawClipper_QueryInterface(p,a,b) ICOM_CALL_(QueryInterface,p,(p,a,b))
123905b261ecSmrg#define IDirectDrawClipper_AddRef(p)             ICOM_CALL_(AddRef,p,(p))
124005b261ecSmrg#define IDirectDrawClipper_Release(p)            ICOM_CALL_(Release,p,(p))
124105b261ecSmrg    /*** IDirectDrawClipper methods ***/
124205b261ecSmrg#define IDirectDrawClipper_GetClipList(p,a,b,c)   ICOM_CALL_(GetClipList,p,(p,a,b,c))
124305b261ecSmrg#define IDirectDrawClipper_GetHWnd(p,a)           ICOM_CALL_(GetHWnd,p,(p,a))
124405b261ecSmrg#define IDirectDrawClipper_Initialize(p,a,b)      ICOM_CALL_(Initialize,p,(p,a,b))
124505b261ecSmrg#define IDirectDrawClipper_IsClipListChanged(p,a) ICOM_CALL_(IsClipListChanged,p,(p,a))
124605b261ecSmrg#define IDirectDrawClipper_SetClipList(p,a,b)     ICOM_CALL_(SetClipList,p,(p,a,b))
124705b261ecSmrg#define IDirectDrawClipper_SetHWnd(p,a,b)         ICOM_CALL_(SetHWnd,p,(p,a,b))
124805b261ecSmrg
124905b261ecSmrg
125005b261ecSmrg/*****************************************************************************
125105b261ecSmrg * IDirectDraw interface
125205b261ecSmrg */
125305b261ecSmrg#undef INTERFACE
125405b261ecSmrg#define INTERFACE IDirectDraw
125505b261ecSmrgDECLARE_INTERFACE_(IDirectDraw,IUnknown)
125605b261ecSmrg{
125705b261ecSmrg    STDMETHOD(QueryInterface)(THIS_ REFIID,LPVOID*) PURE;
125805b261ecSmrg    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
125905b261ecSmrg    STDMETHOD_(ULONG,Release)(THIS) PURE;
126005b261ecSmrg    STDMETHOD(Compact)(THIS) PURE;
126105b261ecSmrg    STDMETHOD(CreateClipper)(THIS_ DWORD dwFlags, LPDIRECTDRAWCLIPPER* lplpDDClipper, IUnknown* pUnkOuter) PURE;
126205b261ecSmrg    STDMETHOD(CreatePalette)(THIS_ DWORD dwFlags, LPPALETTEENTRY lpColorTable, LPDIRECTDRAWPALETTE* lplpDDPalette, IUnknown* pUnkOuter) PURE;
126305b261ecSmrg    STDMETHOD(CreateSurface)(THIS_ LPDDSURFACEDESC lpDDSurfaceDesc, LPDIRECTDRAWSURFACE* lplpDDSurface, IUnknown* pUnkOuter) PURE;
126405b261ecSmrg    STDMETHOD(DuplicateSurface)(THIS_ LPDIRECTDRAWSURFACE lpDDSurface, LPDIRECTDRAWSURFACE* lplpDupDDSurface) PURE;
126505b261ecSmrg    STDMETHOD(EnumDisplayModes)(THIS_ DWORD dwFlags, LPDDSURFACEDESC lpDDSurfaceDesc, LPVOID lpContext, LPDDENUMMODESCALLBACK lpEnumModesCallback) PURE;
126605b261ecSmrg    STDMETHOD(EnumSurfaces)(THIS_ DWORD dwFlags, LPDDSURFACEDESC lpDDSD, LPVOID lpContext, LPDDENUMSURFACESCALLBACK lpEnumSurfacesCallback) PURE;
126705b261ecSmrg    STDMETHOD(FlipToGDISurface)(THIS) PURE;
126805b261ecSmrg    STDMETHOD(GetCaps)(THIS_ LPDDCAPS lpDDDriverCaps, LPDDCAPS lpDDHELCaps) PURE;
126905b261ecSmrg    STDMETHOD(GetDisplayMode)(THIS_ LPDDSURFACEDESC lpDDSurfaceDesc) PURE;
127005b261ecSmrg    STDMETHOD(GetFourCCCodes)(THIS_ LPDWORD lpNumCodes, LPDWORD lpCodes) PURE;
127105b261ecSmrg    STDMETHOD(GetGDISurface)(THIS_ LPDIRECTDRAWSURFACE* lplpGDIDDSurface) PURE;
127205b261ecSmrg    STDMETHOD(GetMonitorFrequency)(THIS_ LPDWORD lpdwFrequency) PURE;
127305b261ecSmrg    STDMETHOD(GetScanLine)(THIS_ LPDWORD lpdwScanLine) PURE;
127405b261ecSmrg    STDMETHOD(GetVerticalBlankStatus)(THIS_ BOOL* lpbIsInVB) PURE;
127505b261ecSmrg    STDMETHOD(Initialize)(THIS_ GUID* lpGUID) PURE;
127605b261ecSmrg    STDMETHOD(RestoreDisplayMode)(THIS) PURE;
127705b261ecSmrg    STDMETHOD(SetCooperativeLevel)(THIS_ HWND hWnd, DWORD dwFlags) PURE;
127805b261ecSmrg    STDMETHOD(SetDisplayMode)(THIS_ DWORD, DWORD, DWORD) PURE;
127905b261ecSmrg    STDMETHOD(WaitForVerticalBlank)(THIS_ DWORD dwFlags, HANDLE hEvent) PURE;
128005b261ecSmrg};
128105b261ecSmrg
128205b261ecSmrg    /*** IUnknown methods ***/
128305b261ecSmrg#define IDirectDraw_QueryInterface(p,a,b) ICOM_CALL_(QueryInterface,p,(p,a,b))
128405b261ecSmrg#define IDirectDraw_AddRef(p)             ICOM_CALL_(AddRef,p,(p))
128505b261ecSmrg#define IDirectDraw_Release(p)            ICOM_CALL_(Release,p,(p))
128605b261ecSmrg    /*** IDirectDraw methods ***/
128705b261ecSmrg#define IDirectDraw_Compact(p)                  ICOM_CALL_(Compact,p,(p))
128805b261ecSmrg#define IDirectDraw_CreateClipper(p,a,b,c)      ICOM_CALL_(CreateClipper,p,(p,a,b,c))
128905b261ecSmrg#define IDirectDraw_CreatePalette(p,a,b,c,d)    ICOM_CALL_(CreatePalette,p,(p,a,b,c,d))
129005b261ecSmrg#define IDirectDraw_CreateSurface(p,a,b,c)      ICOM_CALL_(CreateSurface,p,(p,a,b,c))
129105b261ecSmrg#define IDirectDraw_DuplicateSurface(p,a,b)     ICOM_CALL_(DuplicateSurface,p,(p,a,b))
129205b261ecSmrg#define IDirectDraw_EnumDisplayModes(p,a,b,c,d) ICOM_CALL_(EnumDisplayModes,p,(p,a,b,c,d))
129305b261ecSmrg#define IDirectDraw_EnumSurfaces(p,a,b,c,d)     ICOM_CALL_(EnumSurfaces,p,(p,a,b,c,d))
129405b261ecSmrg#define IDirectDraw_FlipToGDISurface(p)         ICOM_CALL_(FlipToGDISurface,p,(p))
129505b261ecSmrg#define IDirectDraw_GetCaps(p,a,b)              ICOM_CALL_(GetCaps,p,(p,a,b))
129605b261ecSmrg#define IDirectDraw_GetDisplayMode(p,a)         ICOM_CALL_(GetDisplayMode,p,(p,a))
129705b261ecSmrg#define IDirectDraw_GetFourCCCodes(p,a,b)       ICOM_CALL_(GetFourCCCodes,p,(p,a,b))
129805b261ecSmrg#define IDirectDraw_GetGDISurface(p,a)          ICOM_CALL_(GetGDISurface,p,(p,a))
129905b261ecSmrg#define IDirectDraw_GetMonitorFrequency(p,a)    ICOM_CALL_(GetMonitorFrequency,p,(p,a))
130005b261ecSmrg#define IDirectDraw_GetScanLine(p,a)            ICOM_CALL_(GetScanLine,p,(p,a))
130105b261ecSmrg#define IDirectDraw_GetVerticalBlankStatus(p,a) ICOM_CALL_(GetVerticalBlankStatus,p,(p,a))
130205b261ecSmrg#define IDirectDraw_Initialize(p,a)             ICOM_CALL_(Initialize,p,(p,a))
130305b261ecSmrg#define IDirectDraw_RestoreDisplayMode(p)       ICOM_CALL_(RestoreDisplayMode,p,(p))
130405b261ecSmrg#define IDirectDraw_SetCooperativeLevel(p,a,b)  ICOM_CALL_(SetCooperativeLevel,p,(p,a,b))
130505b261ecSmrg#define IDirectDraw_SetDisplayMode(p,a,b,c)     ICOM_CALL_(SetDisplayMode,p,(p,a,b,c))
130605b261ecSmrg#define IDirectDraw_WaitForVerticalBlank(p,a,b) ICOM_CALL_(WaitForVerticalBlank,p,(p,a,b))
130705b261ecSmrg
130805b261ecSmrg
130905b261ecSmrg/* flags for Lock() */
131005b261ecSmrg#define DDLOCK_SURFACEMEMORYPTR	0x00000000
131105b261ecSmrg#define DDLOCK_WAIT		0x00000001
131205b261ecSmrg#define DDLOCK_EVENT		0x00000002
131305b261ecSmrg#define DDLOCK_READONLY		0x00000010
131405b261ecSmrg#define DDLOCK_WRITEONLY	0x00000020
131505b261ecSmrg#define DDLOCK_NOSYSLOCK	0x00000800
131605b261ecSmrg
131705b261ecSmrg
131805b261ecSmrg/*****************************************************************************
131905b261ecSmrg * IDirectDraw2 interface
132005b261ecSmrg */
132105b261ecSmrg/* Note: IDirectDraw2 cannot derive from IDirectDraw because the number of
132205b261ecSmrg * arguments of SetDisplayMode has changed !
132305b261ecSmrg */
132405b261ecSmrg#undef INTERFACE
132505b261ecSmrg#define INTERFACE IDirectDraw2
132605b261ecSmrgDECLARE_INTERFACE_(IDirectDraw2,IUnknown)
132705b261ecSmrg{
132805b261ecSmrg    STDMETHOD(QueryInterface)(THIS_ REFIID,LPVOID*) PURE;
132905b261ecSmrg    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
133005b261ecSmrg    STDMETHOD_(ULONG,Release)(THIS) PURE;
133105b261ecSmrg    STDMETHOD(Compact)(THIS) PURE;
133205b261ecSmrg    STDMETHOD(CreateClipper)(THIS_ DWORD dwFlags, LPDIRECTDRAWCLIPPER* lplpDDClipper, IUnknown* pUnkOuter) PURE;
133305b261ecSmrg    STDMETHOD(CreatePalette)(THIS_ DWORD dwFlags, LPPALETTEENTRY lpColorTable, LPDIRECTDRAWPALETTE* lplpDDPalette, IUnknown* pUnkOuter) PURE;
133405b261ecSmrg    STDMETHOD(CreateSurface)(THIS_ LPDDSURFACEDESC lpDDSurfaceDesc, LPDIRECTDRAWSURFACE2* lplpDDSurface, IUnknown* pUnkOuter) PURE;
133505b261ecSmrg    STDMETHOD(DuplicateSurface)(THIS_ LPDIRECTDRAWSURFACE2 lpDDSurface, LPDIRECTDRAWSURFACE2* lplpDupDDSurface) PURE;
133605b261ecSmrg    STDMETHOD(EnumDisplayModes)(THIS_ DWORD dwFlags, LPDDSURFACEDESC lpDDSurfaceDesc, LPVOID lpContext, LPDDENUMMODESCALLBACK lpEnumModesCallback) PURE;
133705b261ecSmrg    STDMETHOD(EnumSurfaces)(THIS_ DWORD dwFlags, LPDDSURFACEDESC lpDDSD, LPVOID lpContext, LPDDENUMSURFACESCALLBACK lpEnumSurfacesCallback) PURE;
133805b261ecSmrg    STDMETHOD(FlipToGDISurface)(THIS) PURE;
133905b261ecSmrg    STDMETHOD(GetCaps)(THIS_ LPDDCAPS lpDDDriverCaps, LPDDCAPS lpDDHELCaps) PURE;
134005b261ecSmrg    STDMETHOD(GetDisplayMode)(THIS_ LPDDSURFACEDESC lpDDSurfaceDesc) PURE;
134105b261ecSmrg    STDMETHOD(GetFourCCCodes)(THIS_ LPDWORD lpNumCodes, LPDWORD lpCodes) PURE;
134205b261ecSmrg    STDMETHOD(GetGDISurface)(THIS_ LPDIRECTDRAWSURFACE2* lplpGDIDDSurface) PURE;
134305b261ecSmrg    STDMETHOD(GetMonitorFrequency)(THIS_ LPDWORD lpdwFrequency) PURE;
134405b261ecSmrg    STDMETHOD(GetScanLine)(THIS_ LPDWORD lpdwScanLine) PURE;
134505b261ecSmrg    STDMETHOD(GetVerticalBlankStatus)(THIS_ BOOL* lpbIsInVB) PURE;
134605b261ecSmrg    STDMETHOD(Initialize)(THIS_ GUID* lpGUID) PURE;
134705b261ecSmrg    STDMETHOD(RestoreDisplayMode)(THIS) PURE;
134805b261ecSmrg    STDMETHOD(SetCooperativeLevel)(THIS_ HWND hWnd, DWORD dwFlags) PURE;
134905b261ecSmrg    STDMETHOD(SetDisplayMode)(THIS_ DWORD dwWidth, DWORD dwHeight, DWORD dwBPP, DWORD dwRefreshRate, DWORD dwFlags) PURE;
135005b261ecSmrg    STDMETHOD(WaitForVerticalBlank)(THIS_ DWORD dwFlags, HANDLE hEvent) PURE;
135105b261ecSmrg
135205b261ecSmrg    STDMETHOD(GetAvailableVidMem)(THIS_ LPDDSCAPS lpDDCaps, LPDWORD lpdwTotal, LPDWORD lpdwFree) PURE;
135305b261ecSmrg};
135405b261ecSmrg
135505b261ecSmrg    /*** IUnknown methods ***/
135605b261ecSmrg#define IDirectDraw2_QueryInterface(p,a,b) ICOM_CALL_(QueryInterface,p,(p,a,b))
135705b261ecSmrg#define IDirectDraw2_AddRef(p)             ICOM_CALL_(AddRef,p,(p))
135805b261ecSmrg#define IDirectDraw2_Release(p)            ICOM_CALL_(Release,p,(p))
135905b261ecSmrg    /*** IDirectDraw methods ***/
136005b261ecSmrg#define IDirectDraw2_Compact(p)                  ICOM_CALL_(Compact,p,(p))
136105b261ecSmrg#define IDirectDraw2_CreateClipper(p,a,b,c)      ICOM_CALL_(CreateClipper,p,(p,a,b,c))
136205b261ecSmrg#define IDirectDraw2_CreatePalette(p,a,b,c,d)    ICOM_CALL_(CreatePalette,p,(p,a,b,c,d))
136305b261ecSmrg#define IDirectDraw2_CreateSurface(p,a,b,c)      ICOM_CALL_(CreateSurface,p,(p,a,b,c))
136405b261ecSmrg#define IDirectDraw2_DuplicateSurface(p,a,b)     ICOM_CALL_(DuplicateSurface,p,(p,a,b))
136505b261ecSmrg#define IDirectDraw2_EnumDisplayModes(p,a,b,c,d) ICOM_CALL_(EnumDisplayModes,p,(p,a,b,c,d))
136605b261ecSmrg#define IDirectDraw2_EnumSurfaces(p,a,b,c,d)     ICOM_CALL_(EnumSurfaces,p,(p,a,b,c,d))
136705b261ecSmrg#define IDirectDraw2_FlipToGDISurface(p)         ICOM_CALL_(FlipToGDISurface,p,(p))
136805b261ecSmrg#define IDirectDraw2_GetCaps(p,a,b)              ICOM_CALL_(GetCaps,p,(p,a,b))
136905b261ecSmrg#define IDirectDraw2_GetDisplayMode(p,a)         ICOM_CALL_(GetDisplayMode,p,(p,a))
137005b261ecSmrg#define IDirectDraw2_GetFourCCCodes(p,a,b)       ICOM_CALL_(GetFourCCCodes,p,(p,a,b))
137105b261ecSmrg#define IDirectDraw2_GetGDISurface(p,a)          ICOM_CALL_(GetGDISurface,p,(p,a))
137205b261ecSmrg#define IDirectDraw2_GetMonitorFrequency(p,a)    ICOM_CALL_(GetMonitorFrequency,p,(p,a))
137305b261ecSmrg#define IDirectDraw2_GetScanLine(p,a)            ICOM_CALL_(GetScanLine,p,(p,a))
137405b261ecSmrg#define IDirectDraw2_GetVerticalBlankStatus(p,a) ICOM_CALL_(GetVerticalBlankStatus,p,(p,a))
137505b261ecSmrg#define IDirectDraw2_Initialize(p,a)             ICOM_CALL_(Initialize,p,(p,a))
137605b261ecSmrg#define IDirectDraw2_RestoreDisplayMode(p)       ICOM_CALL_(RestoreDisplayMode,p,(p))
137705b261ecSmrg#define IDirectDraw2_SetCooperativeLevel(p,a,b)  ICOM_CALL_(SetCooperativeLevel,p,(p,a,b))
137805b261ecSmrg#define IDirectDraw2_SetDisplayMode(p,a,b,c,d,e) ICOM_CALL_(SetDisplayMode,p,(p,a,b,c,d,e))
137905b261ecSmrg#define IDirectDraw2_WaitForVerticalBlank(p,a,b) ICOM_CALL_(WaitForVerticalBlank,p,(p,a,b))
138005b261ecSmrg/*** IDirectDraw2 methods ***/
138105b261ecSmrg#define IDirectDraw2_GetAvailableVidMem(p,a,b,c) ICOM_CALL_(GetAvailableVidMem,p,(p,a,b,c))
138205b261ecSmrg
138305b261ecSmrg
138405b261ecSmrg/*****************************************************************************
138505b261ecSmrg * IDirectDraw4 interface
138605b261ecSmrg */
138705b261ecSmrg#undef INTERFACE
138805b261ecSmrg#define INTERFACE IDirectDraw4
138905b261ecSmrgDECLARE_INTERFACE_(IDirectDraw4,IUnknown)
139005b261ecSmrg{
139105b261ecSmrg    STDMETHOD(QueryInterface)(THIS_ REFIID,LPVOID*) PURE;
139205b261ecSmrg    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
139305b261ecSmrg    STDMETHOD_(ULONG,Release)(THIS) PURE;
139405b261ecSmrg    STDMETHOD(Compact)(THIS) PURE;
139505b261ecSmrg    STDMETHOD(CreateClipper)(THIS_ DWORD dwFlags, LPDIRECTDRAWCLIPPER* lplpDDClipper, IUnknown* pUnkOuter) PURE;
139605b261ecSmrg    STDMETHOD(CreatePalette)(THIS_ DWORD dwFlags, LPPALETTEENTRY lpColorTable, LPDIRECTDRAWPALETTE* lplpDDPalette, IUnknown* pUnkOuter) PURE;
139705b261ecSmrg    STDMETHOD(CreateSurface)(THIS_ LPDDSURFACEDESC2 lpDDSurfaceDesc, LPDIRECTDRAWSURFACE4* lplpDDSurface, IUnknown* pUnkOuter) PURE;
139805b261ecSmrg    STDMETHOD(DuplicateSurface)(THIS_ LPDIRECTDRAWSURFACE4 lpDDSurface, LPDIRECTDRAWSURFACE4* lplpDupDDSurface) PURE;
139905b261ecSmrg    STDMETHOD(EnumDisplayModes)(THIS_ DWORD dwFlags, LPDDSURFACEDESC2 lpDDSurfaceDesc, LPVOID lpContext, LPDDENUMMODESCALLBACK2 lpEnumModesCallback) PURE;
140005b261ecSmrg    STDMETHOD(EnumSurfaces)(THIS_ DWORD dwFlags, LPDDSURFACEDESC2 lpDDSD, LPVOID lpContext, LPDDENUMSURFACESCALLBACK2 lpEnumSurfacesCallback) PURE;
140105b261ecSmrg    STDMETHOD(FlipToGDISurface)(THIS) PURE;
140205b261ecSmrg    STDMETHOD(GetCaps)(THIS_ LPDDCAPS lpDDDriverCaps, LPDDCAPS lpDDHELCaps) PURE;
140305b261ecSmrg    STDMETHOD(GetDisplayMode)(THIS_ LPDDSURFACEDESC2 lpDDSurfaceDesc) PURE;
140405b261ecSmrg    STDMETHOD(GetFourCCCodes)(THIS_ LPDWORD lpNumCodes, LPDWORD lpCodes) PURE;
140505b261ecSmrg    STDMETHOD(GetGDISurface)(THIS_ LPDIRECTDRAWSURFACE4* lplpGDIDDSurface) PURE;
140605b261ecSmrg    STDMETHOD(GetMonitorFrequency)(THIS_ LPDWORD lpdwFrequency) PURE;
140705b261ecSmrg    STDMETHOD(GetScanLine)(THIS_ LPDWORD lpdwScanLine) PURE;
140805b261ecSmrg    STDMETHOD(GetVerticalBlankStatus)(THIS_ BOOL* lpbIsInVB) PURE;
140905b261ecSmrg    STDMETHOD(Initialize)(THIS_ GUID* lpGUID) PURE;
141005b261ecSmrg    STDMETHOD(RestoreDisplayMode)(THIS) PURE;
141105b261ecSmrg    STDMETHOD(SetCooperativeLevel)(THIS_ HWND hWnd, DWORD dwFlags) PURE;
141205b261ecSmrg    STDMETHOD(SetDisplayMode)(THIS_ DWORD dwWidth, DWORD dwHeight, DWORD dwBPP, DWORD dwRefreshRate, DWORD dwFlags) PURE;
141305b261ecSmrg    STDMETHOD(WaitForVerticalBlank)(THIS_ DWORD dwFlags, HANDLE hEvent) PURE;
141405b261ecSmrg
141505b261ecSmrg    STDMETHOD(GetAvailableVidMem)(THIS_ LPDDSCAPS2 lpDDCaps, LPDWORD lpdwTotal, LPDWORD lpdwFree) PURE;
141605b261ecSmrg
141705b261ecSmrg    STDMETHOD(GetSurfaceFromDC)(THIS_ HDC , LPDIRECTDRAWSURFACE4* ) PURE;
141805b261ecSmrg    STDMETHOD(RestoreAllSurfaces)(THIS) PURE;
141905b261ecSmrg    STDMETHOD(TestCooperativeLevel)(THIS) PURE;
142005b261ecSmrg    STDMETHOD(GetDeviceIdentifier)(THIS_ LPDDDEVICEIDENTIFIER , DWORD ) PURE;
142105b261ecSmrg};
142205b261ecSmrg
142305b261ecSmrg    /*** IUnknown methods ***/
142405b261ecSmrg#define IDirectDraw4_QueryInterface(p,a,b) ICOM_CALL_(QueryInterface,p,(p,a,b))
142505b261ecSmrg#define IDirectDraw4_AddRef(p)             ICOM_CALL_(AddRef,p,(p))
142605b261ecSmrg#define IDirectDraw4_Release(p)            ICOM_CALL_(Release,p,(p))
142705b261ecSmrg    /*** IDirectDraw methods ***/
142805b261ecSmrg#define IDirectDraw4_Compact(p)                  ICOM_CALL_(Compact,p,(p))
142905b261ecSmrg#define IDirectDraw4_CreateClipper(p,a,b,c)      ICOM_CALL_(CreateClipper,p,(p,a,b,c))
143005b261ecSmrg#define IDirectDraw4_CreatePalette(p,a,b,c,d)    ICOM_CALL_(CreatePalette,p,(p,a,b,c,d))
143105b261ecSmrg#define IDirectDraw4_CreateSurface(p,a,b,c)      ICOM_CALL_(CreateSurface,p,(p,a,b,c))
143205b261ecSmrg#define IDirectDraw4_DuplicateSurface(p,a,b)     ICOM_CALL_(DuplicateSurface,p,(p,a,b))
143305b261ecSmrg#define IDirectDraw4_EnumDisplayModes(p,a,b,c,d) ICOM_CALL_(EnumDisplayModes,p,(p,a,b,c,d))
143405b261ecSmrg#define IDirectDraw4_EnumSurfaces(p,a,b,c,d)     ICOM_CALL_(EnumSurfaces,p,(p,a,b,c,d))
143505b261ecSmrg#define IDirectDraw4_FlipToGDISurface(p)         ICOM_CALL_(FlipToGDISurface,p,(p))
143605b261ecSmrg#define IDirectDraw4_GetCaps(p,a,b)              ICOM_CALL_(GetCaps,p,(p,a,b))
143705b261ecSmrg#define IDirectDraw4_GetDisplayMode(p,a)         ICOM_CALL_(GetDisplayMode,p,(p,a))
143805b261ecSmrg#define IDirectDraw4_GetFourCCCodes(p,a,b)       ICOM_CALL_(GetFourCCCodes,p,(p,a,b))
143905b261ecSmrg#define IDirectDraw4_GetGDISurface(p,a)          ICOM_CALL_(GetGDISurface,p,(p,a))
144005b261ecSmrg#define IDirectDraw4_GetMonitorFrequency(p,a)    ICOM_CALL_(GetMonitorFrequency,p,(p,a))
144105b261ecSmrg#define IDirectDraw4_GetScanLine(p,a)            ICOM_CALL_(GetScanLine,p,(p,a))
144205b261ecSmrg#define IDirectDraw4_GetVerticalBlankStatus(p,a) ICOM_CALL_(GetVerticalBlankStatus,p,(p,a))
144305b261ecSmrg#define IDirectDraw4_Initialize(p,a)             ICOM_CALL_(Initialize,p,(p,a))
144405b261ecSmrg#define IDirectDraw4_RestoreDisplayMode(p)       ICOM_CALL_(RestoreDisplayMode,p,(p))
144505b261ecSmrg#define IDirectDraw4_SetCooperativeLevel(p,a,b)  ICOM_CALL_(SetCooperativeLevel,p,(p,a,b))
144605b261ecSmrg#define IDirectDraw4_SetDisplayMode(p,a,b,c,d,e) ICOM_CALL_(SetDisplayMode,p,(p,a,b,c,d,e))
144705b261ecSmrg#define IDirectDraw4_WaitForVerticalBlank(p,a,b) ICOM_CALL_(WaitForVerticalBlank,p,(p,a,b))
144805b261ecSmrg/*** IDirectDraw2 methods ***/
144905b261ecSmrg#define IDirectDraw4_GetAvailableVidMem(p,a,b,c) ICOM_CALL_(GetAvailableVidMem,p,(p,a,b,c))
145005b261ecSmrg/*** IDirectDraw4 methods ***/
145105b261ecSmrg#define IDirectDraw4_GetSurfaceFromDC(p,a,b)    ICOM_CALL_(GetSurfaceFromDC,p,(p,a,b))
145205b261ecSmrg#define IDirectDraw4_RestoreAllSurfaces(pc)     ICOM_CALL_(RestoreAllSurfaces,p,(p))
145305b261ecSmrg#define IDirectDraw4_TestCooperativeLevel(p)    ICOM_CALL_(TestCooperativeLevel,p,(p))
145405b261ecSmrg#define IDirectDraw4_GetDeviceIdentifier(p,a,b) ICOM_CALL_(GetDeviceIdentifier,p,(p,a,b))
145505b261ecSmrg
145605b261ecSmrg
145705b261ecSmrg/*****************************************************************************
145805b261ecSmrg * IDirectDraw7 interface
145905b261ecSmrg */
146005b261ecSmrg/* Note: IDirectDraw7 cannot derive from IDirectDraw4; it is even documented
146105b261ecSmrg * as not interchangeable with earlier DirectDraw interfaces.
146205b261ecSmrg */
146305b261ecSmrg#undef INTERFACE
146405b261ecSmrg#define INTERFACE IDirectDraw7
146505b261ecSmrgDECLARE_INTERFACE_(IDirectDraw7,IUnknown)
146605b261ecSmrg{
146705b261ecSmrg    STDMETHOD(QueryInterface)(THIS_ REFIID,LPVOID*) PURE;
146805b261ecSmrg    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
146905b261ecSmrg    STDMETHOD_(ULONG,Release)(THIS) PURE;
147005b261ecSmrg    STDMETHOD(Compact)(THIS) PURE;
147105b261ecSmrg    STDMETHOD(CreateClipper)(THIS_ DWORD dwFlags, LPDIRECTDRAWCLIPPER* lplpDDClipper, IUnknown* pUnkOuter) PURE;
147205b261ecSmrg    STDMETHOD(CreatePalette)(THIS_ DWORD dwFlags, LPPALETTEENTRY lpColorTable, LPDIRECTDRAWPALETTE* lplpDDPalette, IUnknown* pUnkOuter) PURE;
147305b261ecSmrg    STDMETHOD(CreateSurface)(THIS_ LPDDSURFACEDESC2 lpDDSurfaceDesc, LPDIRECTDRAWSURFACE7* lplpDDSurface, IUnknown* pUnkOuter) PURE;
147405b261ecSmrg    STDMETHOD(DuplicateSurface)(THIS_ LPDIRECTDRAWSURFACE7 lpDDSurface, LPDIRECTDRAWSURFACE7* lplpDupDDSurface) PURE;
147505b261ecSmrg    STDMETHOD(EnumDisplayModes)(THIS_ DWORD dwFlags, LPDDSURFACEDESC2 lpDDSurfaceDesc, LPVOID lpContext, LPDDENUMMODESCALLBACK2 lpEnumModesCallback) PURE;
147605b261ecSmrg    STDMETHOD(EnumSurfaces)(THIS_ DWORD dwFlags, LPDDSURFACEDESC2 lpDDSD, LPVOID lpContext, LPDDENUMSURFACESCALLBACK7 lpEnumSurfacesCallback) PURE;
147705b261ecSmrg    STDMETHOD(FlipToGDISurface)(THIS) PURE;
147805b261ecSmrg    STDMETHOD(GetCaps)(THIS_ LPDDCAPS lpDDDriverCaps, LPDDCAPS lpDDHELCaps) PURE;
147905b261ecSmrg    STDMETHOD(GetDisplayMode)(THIS_ LPDDSURFACEDESC2 lpDDSurfaceDesc) PURE;
148005b261ecSmrg    STDMETHOD(GetFourCCCodes)(THIS_ LPDWORD lpNumCodes, LPDWORD lpCodes) PURE;
148105b261ecSmrg    STDMETHOD(GetGDISurface)(THIS_ LPDIRECTDRAWSURFACE7* lplpGDIDDSurface) PURE;
148205b261ecSmrg    STDMETHOD(GetMonitorFrequency)(THIS_ LPDWORD lpdwFrequency) PURE;
148305b261ecSmrg    STDMETHOD(GetScanLine)(THIS_ LPDWORD lpdwScanLine) PURE;
148405b261ecSmrg    STDMETHOD(GetVerticalBlankStatus)(THIS_ BOOL* lpbIsInVB) PURE;
148505b261ecSmrg    STDMETHOD(Initialize)(THIS_ GUID* lpGUID) PURE;
148605b261ecSmrg    STDMETHOD(RestoreDisplayMode)(THIS) PURE;
148705b261ecSmrg    STDMETHOD(SetCooperativeLevel)(THIS_ HWND hWnd, DWORD dwFlags) PURE;
148805b261ecSmrg    STDMETHOD(SetDisplayMode)(THIS_ DWORD dwWidth, DWORD dwHeight, DWORD dwBPP, DWORD dwRefreshRate, DWORD dwFlags) PURE;
148905b261ecSmrg    STDMETHOD(WaitForVerticalBlank)(THIS_ DWORD dwFlags, HANDLE hEvent) PURE;
149005b261ecSmrg
149105b261ecSmrg    STDMETHOD(GetAvailableVidMem)(THIS_ LPDDSCAPS2 lpDDCaps, LPDWORD lpdwTotal, LPDWORD lpdwFree) PURE;
149205b261ecSmrg
149305b261ecSmrg    STDMETHOD(GetSurfaceFromDC)(THIS_ HDC , LPDIRECTDRAWSURFACE7* ) PURE;
149405b261ecSmrg    STDMETHOD(RestoreAllSurfaces)(THIS) PURE;
149505b261ecSmrg    STDMETHOD(TestCooperativeLevel)(THIS) PURE;
149605b261ecSmrg    STDMETHOD(GetDeviceIdentifier)(THIS_ LPDDDEVICEIDENTIFIER2 , DWORD ) PURE;
149705b261ecSmrg
149805b261ecSmrg    STDMETHOD(StartModeTest)(THIS_ LPSIZE , DWORD , DWORD ) PURE;
149905b261ecSmrg    STDMETHOD(EvaluateMode)(THIS_ DWORD , DWORD * ) PURE;
150005b261ecSmrg};
150105b261ecSmrg
150205b261ecSmrg    /*** IUnknown methods ***/
150305b261ecSmrg#define IDirectDraw7_QueryInterface(p,a,b) ICOM_CALL_(QueryInterface,p,(p,a,b))
150405b261ecSmrg#define IDirectDraw7_AddRef(p)             ICOM_CALL_(AddRef,p,(p))
150505b261ecSmrg#define IDirectDraw7_Release(p)            ICOM_CALL_(Release,p,(p))
150605b261ecSmrg    /*** IDirectDraw methods ***/
150705b261ecSmrg#define IDirectDraw7_Compact(p)                  ICOM_CALL_(Compact,p,(p))
150805b261ecSmrg#define IDirectDraw7_CreateClipper(p,a,b,c)      ICOM_CALL_(CreateClipper,p,(p,a,b,c))
150905b261ecSmrg#define IDirectDraw7_CreatePalette(p,a,b,c,d)    ICOM_CALL_(CreatePalette,p,(p,a,b,c,d))
151005b261ecSmrg#define IDirectDraw7_CreateSurface(p,a,b,c)      ICOM_CALL_(CreateSurface,p,(p,a,b,c))
151105b261ecSmrg#define IDirectDraw7_DuplicateSurface(p,a,b)     ICOM_CALL_(DuplicateSurface,p,(p,a,b))
151205b261ecSmrg#define IDirectDraw7_EnumDisplayModes(p,a,b,c,d) ICOM_CALL_(EnumDisplayModes,p,(p,a,b,c,d))
151305b261ecSmrg#define IDirectDraw7_EnumSurfaces(p,a,b,c,d)     ICOM_CALL_(EnumSurfaces,p,(p,a,b,c,d))
151405b261ecSmrg#define IDirectDraw7_FlipToGDISurface(p)         ICOM_CALL_(FlipToGDISurface,p,(p))
151505b261ecSmrg#define IDirectDraw7_GetCaps(p,a,b)              ICOM_CALL_(GetCaps,p,(p,a,b))
151605b261ecSmrg#define IDirectDraw7_GetDisplayMode(p,a)         ICOM_CALL_(GetDisplayMode,p,(p,a))
151705b261ecSmrg#define IDirectDraw7_GetFourCCCodes(p,a,b)       ICOM_CALL_(GetFourCCCodes,p,(p,a,b))
151805b261ecSmrg#define IDirectDraw7_GetGDISurface(p,a)          ICOM_CALL_(GetGDISurface,p,(p,a))
151905b261ecSmrg#define IDirectDraw7_GetMonitorFrequency(p,a)    ICOM_CALL_(GetMonitorFrequency,p,(p,a))
152005b261ecSmrg#define IDirectDraw7_GetScanLine(p,a)            ICOM_CALL_(GetScanLine,p,(p,a))
152105b261ecSmrg#define IDirectDraw7_GetVerticalBlankStatus(p,a) ICOM_CALL_(GetVerticalBlankStatus,p,(p,a))
152205b261ecSmrg#define IDirectDraw7_Initialize(p,a)             ICOM_CALL_(Initialize,p,(p,a))
152305b261ecSmrg#define IDirectDraw7_RestoreDisplayMode(p)       ICOM_CALL_(RestoreDisplayMode,p,(p))
152405b261ecSmrg#define IDirectDraw7_SetCooperativeLevel(p,a,b)  ICOM_CALL_(SetCooperativeLevel,p,(p,a,b))
152505b261ecSmrg#define IDirectDraw7_SetDisplayMode(p,a,b,c,d,e) ICOM_CALL_(SetDisplayMode,p,(p,a,b,c,d,e))
152605b261ecSmrg#define IDirectDraw7_WaitForVerticalBlank(p,a,b) ICOM_CALL_(WaitForVerticalBlank,p,(p,a,b))
152705b261ecSmrg/*** added in IDirectDraw2 ***/
152805b261ecSmrg#define IDirectDraw7_GetAvailableVidMem(p,a,b,c) ICOM_CALL_(GetAvailableVidMem,p,(p,a,b,c))
152905b261ecSmrg/*** added in IDirectDraw4 ***/
153005b261ecSmrg#define IDirectDraw7_GetSurfaceFromDC(p,a,b)    ICOM_CALL_(GetSurfaceFromDC,p,(p,a,b))
153105b261ecSmrg#define IDirectDraw7_RestoreAllSurfaces(p)     ICOM_CALL_(RestoreAllSurfaces,p,(p))
153205b261ecSmrg#define IDirectDraw7_TestCooperativeLevel(p)    ICOM_CALL_(TestCooperativeLevel,p,(p))
153305b261ecSmrg#define IDirectDraw7_GetDeviceIdentifier(p,a,b) ICOM_CALL_(GetDeviceIdentifier,p,(p,a,b))
153405b261ecSmrg/*** added in IDirectDraw 7 ***/
153505b261ecSmrg#define IDirectDraw7_StartModeTest(p,a,b,c)     ICOM_CALL_(StartModeTest,p,(p,a,b,c))
153605b261ecSmrg#define IDirectDraw7_EvaluateMode(p,a,b)        ICOM_CALL_(EvaluateMode,p,(p,a,b))
153705b261ecSmrg
153805b261ecSmrg
153905b261ecSmrg/*****************************************************************************
154005b261ecSmrg * IDirectDrawSurface interface
154105b261ecSmrg */
154205b261ecSmrg#undef INTERFACE
154305b261ecSmrg#define INTERFACE IDirectDrawSurface
154405b261ecSmrgDECLARE_INTERFACE_(IDirectDrawSurface,IUnknown)
154505b261ecSmrg{
154605b261ecSmrg    STDMETHOD(QueryInterface)(THIS_ REFIID,LPVOID*) PURE;
154705b261ecSmrg    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
154805b261ecSmrg    STDMETHOD_(ULONG,Release)(THIS) PURE;
154905b261ecSmrg    STDMETHOD(AddAttachedSurface)(THIS_ LPDIRECTDRAWSURFACE lpDDSAttachedSurface) PURE;
155005b261ecSmrg    STDMETHOD(AddOverlayDirtyRect)(THIS_ LPRECT lpRect) PURE;
155105b261ecSmrg    STDMETHOD(Blt)(THIS_ LPRECT lpDestRect, LPDIRECTDRAWSURFACE lpDDSrcSurface, LPRECT lpSrcRect, DWORD dwFlags, LPDDBLTFX lpDDBltFx) PURE;
155205b261ecSmrg    STDMETHOD(BltBatch)(THIS_ LPDDBLTBATCH lpDDBltBatch, DWORD dwCount, DWORD dwFlags) PURE;
155305b261ecSmrg    STDMETHOD(BltFast)(THIS_ DWORD dwX, DWORD dwY, LPDIRECTDRAWSURFACE lpDDSrcSurface, LPRECT lpSrcRect, DWORD dwTrans) PURE;
155405b261ecSmrg    STDMETHOD(DeleteAttachedSurface)(THIS_ DWORD dwFlags, LPDIRECTDRAWSURFACE lpDDSAttachedSurface) PURE;
155505b261ecSmrg    STDMETHOD(EnumAttachedSurfaces)(THIS_ LPVOID lpContext, LPDDENUMSURFACESCALLBACK lpEnumSurfacesCallback) PURE;
155605b261ecSmrg    STDMETHOD(EnumOverlayZOrders)(THIS_ DWORD dwFlags, LPVOID lpContext, LPDDENUMSURFACESCALLBACK lpfnCallback) PURE;
155705b261ecSmrg    STDMETHOD(Flip)(THIS_ LPDIRECTDRAWSURFACE lpDDSurfaceTargetOverride, DWORD dwFlags) PURE;
155805b261ecSmrg    STDMETHOD(GetAttachedSurface)(THIS_ LPDDSCAPS lpDDSCaps, LPDIRECTDRAWSURFACE* lplpDDAttachedSurface) PURE;
155905b261ecSmrg    STDMETHOD(GetBltStatus)(THIS_ DWORD dwFlags) PURE;
156005b261ecSmrg    STDMETHOD(GetCaps)(THIS_ LPDDSCAPS lpDDSCaps) PURE;
156105b261ecSmrg    STDMETHOD(GetClipper)(THIS_ LPDIRECTDRAWCLIPPER* lplpDDClipper) PURE;
156205b261ecSmrg    STDMETHOD(GetColorKey)(THIS_ DWORD dwFlags, LPDDCOLORKEY lpDDColorKey) PURE;
156305b261ecSmrg    STDMETHOD(GetDC)(THIS_ HDC* lphDC) PURE;
156405b261ecSmrg    STDMETHOD(GetFlipStatus)(THIS_ DWORD dwFlags) PURE;
156505b261ecSmrg    STDMETHOD(GetOverlayPosition)(THIS_ LPLONG lplX, LPLONG lplY) PURE;
156605b261ecSmrg    STDMETHOD(GetPalette)(THIS_ LPDIRECTDRAWPALETTE* lplpDDPalette) PURE;
156705b261ecSmrg    STDMETHOD(GetPixelFormat)(THIS_ LPDDPIXELFORMAT lpDDPixelFormat) PURE;
156805b261ecSmrg    STDMETHOD(GetSurfaceDesc)(THIS_ LPDDSURFACEDESC lpDDSurfaceDesc) PURE;
156905b261ecSmrg    STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW lpDD, LPDDSURFACEDESC lpDDSurfaceDesc) PURE;
157005b261ecSmrg    STDMETHOD(IsLost)(THIS) PURE;
157105b261ecSmrg    STDMETHOD(Lock)(THIS_ LPRECT lpDestRect, LPDDSURFACEDESC lpDDSurfaceDesc, DWORD dwFlags, HANDLE hEvent) PURE;
157205b261ecSmrg    STDMETHOD(ReleaseDC)(THIS_ HDC hDC) PURE;
157305b261ecSmrg    STDMETHOD(Restore)(THIS) PURE;
157405b261ecSmrg    STDMETHOD(SetClipper)(THIS_ LPDIRECTDRAWCLIPPER lpDDClipper) PURE;
157505b261ecSmrg    STDMETHOD(SetColorKey)(THIS_ DWORD dwFlags, LPDDCOLORKEY lpDDColorKey) PURE;
157605b261ecSmrg    STDMETHOD(SetOverlayPosition)(THIS_ LONG lX, LONG lY) PURE;
157705b261ecSmrg    STDMETHOD(SetPalette)(THIS_ LPDIRECTDRAWPALETTE lpDDPalette) PURE;
157805b261ecSmrg    STDMETHOD(Unlock)(THIS_ LPVOID lpSurfaceData) PURE;
157905b261ecSmrg    STDMETHOD(UpdateOverlay)(THIS_ LPRECT lpSrcRect, LPDIRECTDRAWSURFACE lpDDDestSurface, LPRECT lpDestRect, DWORD dwFlags, LPDDOVERLAYFX lpDDOverlayFx) PURE;
158005b261ecSmrg    STDMETHOD(UpdateOverlayDisplay)(THIS_ DWORD dwFlags) PURE;
158105b261ecSmrg    STDMETHOD(UpdateOverlayZOrder)(THIS_ DWORD dwFlags, LPDIRECTDRAWSURFACE lpDDSReference) PURE;
158205b261ecSmrg};
158305b261ecSmrg
158405b261ecSmrg    /*** IUnknown methods ***/
158505b261ecSmrg#define IDirectDrawSurface_QueryInterface(p,a,b) ICOM_CALL_(QueryInterface,p,(p,a,b))
158605b261ecSmrg#define IDirectDrawSurface_AddRef(p)             ICOM_CALL_(AddRef,p,(p))
158705b261ecSmrg#define IDirectDrawSurface_Release(p)            ICOM_CALL_(Release,p,(p))
158805b261ecSmrg    /*** IDirectDrawSurface methods ***/
158905b261ecSmrg#define IDirectDrawSurface_AddAttachedSurface(p,a)      ICOM_CALL_(AddAttachedSurface,p,(p,a))
159005b261ecSmrg#define IDirectDrawSurface_AddOverlayDirtyRect(p,a)     ICOM_CALL_(AddOverlayDirtyRect,p,(p,a))
159105b261ecSmrg#define IDirectDrawSurface_Blt(p,a,b,c,d,e)             ICOM_CALL_(Blt,p,(p,a,b,c,d,e))
159205b261ecSmrg#define IDirectDrawSurface_BltBatch(p,a,b,c)            ICOM_CALL_(BltBatch,p,(p,a,b,c))
159305b261ecSmrg#define IDirectDrawSurface_BltFast(p,a,b,c,d,e)         ICOM_CALL_(BltFast,p,(p,a,b,c,d,e))
159405b261ecSmrg#define IDirectDrawSurface_DeleteAttachedSurface(p,a,b) ICOM_CALL_(DeleteAttachedSurface,p,(p,a,b))
159505b261ecSmrg#define IDirectDrawSurface_EnumAttachedSurfaces(p,a,b)  ICOM_CALL_(EnumAttachedSurfaces,p,(p,a,b))
159605b261ecSmrg#define IDirectDrawSurface_EnumOverlayZOrders(p,a,b,c)  ICOM_CALL_(EnumOverlayZOrders,p,(p,a,b,c))
159705b261ecSmrg#define IDirectDrawSurface_Flip(p,a,b)                  ICOM_CALL_(Flip,p,(p,a,b))
159805b261ecSmrg#define IDirectDrawSurface_GetAttachedSurface(p,a,b)    ICOM_CALL_(GetAttachedSurface,p,(p,a,b))
159905b261ecSmrg#define IDirectDrawSurface_GetBltStatus(p,a)            ICOM_CALL_(GetBltStatus,p,(p,a))
160005b261ecSmrg#define IDirectDrawSurface_GetCaps(p,a)                 ICOM_CALL_(GetCaps,p,(p,a))
160105b261ecSmrg#define IDirectDrawSurface_GetClipper(p,a)              ICOM_CALL_(GetClipper,p,(p,a))
160205b261ecSmrg#define IDirectDrawSurface_GetColorKey(p,a,b)           ICOM_CALL_(GetColorKey,p,(p,a,b))
160305b261ecSmrg#define IDirectDrawSurface_GetDC(p,a)                   ICOM_CALL_(GetDC,p,(p,a))
160405b261ecSmrg#define IDirectDrawSurface_GetFlipStatus(p,a)           ICOM_CALL_(GetFlipStatus,p,(p,a))
160505b261ecSmrg#define IDirectDrawSurface_GetOverlayPosition(p,a,b)    ICOM_CALL_(GetOverlayPosition,p,(p,a,b))
160605b261ecSmrg#define IDirectDrawSurface_GetPalette(p,a)              ICOM_CALL_(GetPalette,p,(p,a))
160705b261ecSmrg#define IDirectDrawSurface_GetPixelFormat(p,a)          ICOM_CALL_(GetPixelFormat,p,(p,a))
160805b261ecSmrg#define IDirectDrawSurface_GetSurfaceDesc(p,a)          ICOM_CALL_(GetSurfaceDesc,p,(p,a))
160905b261ecSmrg#define IDirectDrawSurface_Initialize(p,a,b)            ICOM_CALL_(Initialize,p,(p,a,b))
161005b261ecSmrg#define IDirectDrawSurface_IsLost(p)                    ICOM_CALL_(IsLost,p,(p))
161105b261ecSmrg#define IDirectDrawSurface_Lock(p,a,b,c,d)              ICOM_CALL_(Lock,p,(p,a,b,c,d))
161205b261ecSmrg#define IDirectDrawSurface_ReleaseDC(p,a)               ICOM_CALL_(ReleaseDC,p,(p,a))
161305b261ecSmrg#define IDirectDrawSurface_Restore(p)                   ICOM_CALL_(Restore,p,(p))
161405b261ecSmrg#define IDirectDrawSurface_SetClipper(p,a)              ICOM_CALL_(SetClipper,p,(p,a))
161505b261ecSmrg#define IDirectDrawSurface_SetColorKey(p,a,b)           ICOM_CALL_(SetColorKey,p,(p,a,b))
161605b261ecSmrg#define IDirectDrawSurface_SetOverlayPosition(p,a,b)    ICOM_CALL_(SetOverlayPosition,p,(p,a,b))
161705b261ecSmrg#define IDirectDrawSurface_SetPalette(p,a)              ICOM_CALL_(SetPalette,p,(p,a))
161805b261ecSmrg#define IDirectDrawSurface_Unlock(p,a)                  ICOM_CALL_(Unlock,p,(p,a))
161905b261ecSmrg#define IDirectDrawSurface_UpdateOverlay(p,a,b,c,d,e)   ICOM_CALL_(UpdateOverlay,p,(p,a,b,c,d,e))
162005b261ecSmrg#define IDirectDrawSurface_UpdateOverlayDisplay(p,a)    ICOM_CALL_(UpdateOverlayDisplay,p,(p,a))
162105b261ecSmrg#define IDirectDrawSurface_UpdateOverlayZOrder(p,a,b)   ICOM_CALL_(UpdateOverlayZOrder,p,(p,a,b))
162205b261ecSmrg
162305b261ecSmrg
162405b261ecSmrg/*****************************************************************************
162505b261ecSmrg * IDirectDrawSurface2 interface
162605b261ecSmrg */
162705b261ecSmrg/* Cannot inherit from IDirectDrawSurface because the LPDIRECTDRAWSURFACE parameters
162805b261ecSmrg * have been converted to LPDIRECTDRAWSURFACE2.
162905b261ecSmrg */
163005b261ecSmrg#undef INTERFACE
163105b261ecSmrg#define INTERFACE IDirectDrawSurface2
163205b261ecSmrgDECLARE_INTERFACE_(IDirectDrawSurface2,IUnknown)
163305b261ecSmrg{
163405b261ecSmrg    STDMETHOD(QueryInterface)(THIS_ REFIID,LPVOID*) PURE;
163505b261ecSmrg    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
163605b261ecSmrg    STDMETHOD_(ULONG,Release)(THIS) PURE;
163705b261ecSmrg    STDMETHOD(AddAttachedSurface)(THIS_ LPDIRECTDRAWSURFACE2 lpDDSAttachedSurface) PURE;
163805b261ecSmrg    STDMETHOD(AddOverlayDirtyRect)(THIS_ LPRECT lpRect) PURE;
163905b261ecSmrg    STDMETHOD(Blt)(THIS_ LPRECT lpDestRect, LPDIRECTDRAWSURFACE2 lpDDSrcSurface, LPRECT lpSrcRect, DWORD dwFlags, LPDDBLTFX lpDDBltFx) PURE;
164005b261ecSmrg    STDMETHOD(BltBatch)(THIS_ LPDDBLTBATCH lpDDBltBatch, DWORD dwCount, DWORD dwFlags) PURE;
164105b261ecSmrg    STDMETHOD(BltFast)(THIS_ DWORD dwX, DWORD dwY, LPDIRECTDRAWSURFACE2 lpDDSrcSurface, LPRECT lpSrcRect, DWORD dwTrans) PURE;
164205b261ecSmrg    STDMETHOD(DeleteAttachedSurface)(THIS_ DWORD dwFlags, LPDIRECTDRAWSURFACE2 lpDDSAttachedSurface) PURE;
164305b261ecSmrg    STDMETHOD(EnumAttachedSurfaces)(THIS_ LPVOID lpContext, LPDDENUMSURFACESCALLBACK lpEnumSurfacesCallback) PURE;
164405b261ecSmrg    STDMETHOD(EnumOverlayZOrders)(THIS_ DWORD dwFlags, LPVOID lpContext, LPDDENUMSURFACESCALLBACK lpfnCallback) PURE;
164505b261ecSmrg    STDMETHOD(Flip)(THIS_ LPDIRECTDRAWSURFACE2 lpDDSurfaceTargetOverride, DWORD dwFlags) PURE;
164605b261ecSmrg    STDMETHOD(GetAttachedSurface)(THIS_ LPDDSCAPS lpDDSCaps, LPDIRECTDRAWSURFACE2* lplpDDAttachedSurface) PURE;
164705b261ecSmrg    STDMETHOD(GetBltStatus)(THIS_ DWORD dwFlags) PURE;
164805b261ecSmrg    STDMETHOD(GetCaps)(THIS_ LPDDSCAPS lpDDSCaps) PURE;
164905b261ecSmrg    STDMETHOD(GetClipper)(THIS_ LPDIRECTDRAWCLIPPER* lplpDDClipper) PURE;
165005b261ecSmrg    STDMETHOD(GetColorKey)(THIS_ DWORD dwFlags, LPDDCOLORKEY lpDDColorKey) PURE;
165105b261ecSmrg    STDMETHOD(GetDC)(THIS_ HDC* lphDC) PURE;
165205b261ecSmrg    STDMETHOD(GetFlipStatus)(THIS_ DWORD dwFlags) PURE;
165305b261ecSmrg    STDMETHOD(GetOverlayPosition)(THIS_ LPLONG lplX, LPLONG lplY) PURE;
165405b261ecSmrg    STDMETHOD(GetPalette)(THIS_ LPDIRECTDRAWPALETTE* lplpDDPalette) PURE;
165505b261ecSmrg    STDMETHOD(GetPixelFormat)(THIS_ LPDDPIXELFORMAT lpDDPixelFormat) PURE;
165605b261ecSmrg    STDMETHOD(GetSurfaceDesc)(THIS_ LPDDSURFACEDESC lpDDSurfaceDesc) PURE;
165705b261ecSmrg    STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW lpDD, LPDDSURFACEDESC lpDDSurfaceDesc) PURE;
165805b261ecSmrg    STDMETHOD(IsLost)(THIS) PURE;
165905b261ecSmrg    STDMETHOD(Lock)(THIS_ LPRECT lpDestRect, LPDDSURFACEDESC lpDDSurfaceDesc, DWORD dwFlags, HANDLE hEvent) PURE;
166005b261ecSmrg    STDMETHOD(ReleaseDC)(THIS_ HDC hDC) PURE;
166105b261ecSmrg    STDMETHOD(Restore)(THIS) PURE;
166205b261ecSmrg    STDMETHOD(SetClipper)(THIS_ LPDIRECTDRAWCLIPPER lpDDClipper) PURE;
166305b261ecSmrg    STDMETHOD(SetColorKey)(THIS_ DWORD dwFlags, LPDDCOLORKEY lpDDColorKey) PURE;
166405b261ecSmrg    STDMETHOD(SetOverlayPosition)(THIS_ LONG lX, LONG lY) PURE;
166505b261ecSmrg    STDMETHOD(SetPalette)(THIS_ LPDIRECTDRAWPALETTE lpDDPalette) PURE;
166605b261ecSmrg    STDMETHOD(Unlock)(THIS_ LPVOID lpSurfaceData) PURE;
166705b261ecSmrg    STDMETHOD(UpdateOverlay)(THIS_ LPRECT lpSrcRect, LPDIRECTDRAWSURFACE2 lpDDDestSurface, LPRECT lpDestRect, DWORD dwFlags, LPDDOVERLAYFX lpDDOverlayFx) PURE;
166805b261ecSmrg    STDMETHOD(UpdateOverlayDisplay)(THIS_ DWORD dwFlags) PURE;
166905b261ecSmrg    STDMETHOD(UpdateOverlayZOrder)(THIS_ DWORD dwFlags, LPDIRECTDRAWSURFACE2 lpDDSReference) PURE;
167005b261ecSmrg    /* added in v2 */
167105b261ecSmrg    STDMETHOD(GetDDInterface)(THIS_ LPVOID* lplpDD) PURE;
167205b261ecSmrg    STDMETHOD(PageLock)(THIS_ DWORD dwFlags) PURE;
167305b261ecSmrg    STDMETHOD(PageUnlock)(THIS_ DWORD dwFlags) PURE;
167405b261ecSmrg};
167505b261ecSmrg
167605b261ecSmrg    /*** IUnknown methods ***/
167705b261ecSmrg#define IDirectDrawSurface2_QueryInterface(p,a,b) ICOM_CALL_(QueryInterface,p,(p,a,b))
167805b261ecSmrg#define IDirectDrawSurface2_AddRef(p)             ICOM_CALL_(AddRef,p,(p))
167905b261ecSmrg#define IDirectDrawSurface2_Release(p)            ICOM_CALL_(Release,p,(p))
168005b261ecSmrg/*** IDirectDrawSurface methods (almost) ***/
168105b261ecSmrg#define IDirectDrawSurface2_AddAttachedSurface(p,a)      ICOM_CALL_(AddAttachedSurface,p,(p,a))
168205b261ecSmrg#define IDirectDrawSurface2_AddOverlayDirtyRect(p,a)     ICOM_CALL_(AddOverlayDirtyRect,p,(p,a))
168305b261ecSmrg#define IDirectDrawSurface2_Blt(p,a,b,c,d,e)             ICOM_CALL_(Blt,p,(p,a,b,c,d,e))
168405b261ecSmrg#define IDirectDrawSurface2_BltBatch(p,a,b,c)            ICOM_CALL_(BltBatch,p,(p,a,b,c))
168505b261ecSmrg#define IDirectDrawSurface2_BltFast(p,a,b,c,d,e)         ICOM_CALL_(BltFast,p,(p,a,b,c,d,e))
168605b261ecSmrg#define IDirectDrawSurface2_DeleteAttachedSurface(p,a,b) ICOM_CALL_(DeleteAttachedSurface,p,(p,a,b))
168705b261ecSmrg#define IDirectDrawSurface2_EnumAttachedSurfaces(p,a,b)  ICOM_CALL_(EnumAttachedSurfaces,p,(p,a,b))
168805b261ecSmrg#define IDirectDrawSurface2_EnumOverlayZOrders(p,a,b,c)  ICOM_CALL_(EnumOverlayZOrders,p,(p,a,b,c))
168905b261ecSmrg#define IDirectDrawSurface2_Flip(p,a,b)                  ICOM_CALL_(Flip,p,(p,a,b))
169005b261ecSmrg#define IDirectDrawSurface2_GetAttachedSurface(p,a,b)    ICOM_CALL_(GetAttachedSurface,p,(p,a,b))
169105b261ecSmrg#define IDirectDrawSurface2_GetBltStatus(p,a)            ICOM_CALL_(GetBltStatus,p,(p,a))
169205b261ecSmrg#define IDirectDrawSurface2_GetCaps(p,a)                 ICOM_CALL_(GetCaps,p,(p,a))
169305b261ecSmrg#define IDirectDrawSurface2_GetClipper(p,a)              ICOM_CALL_(GetClipper,p,(p,a))
169405b261ecSmrg#define IDirectDrawSurface2_GetColorKey(p,a,b)           ICOM_CALL_(GetColorKey,p,(p,a,b))
169505b261ecSmrg#define IDirectDrawSurface2_GetDC(p,a)                   ICOM_CALL_(GetDC,p,(p,a))
169605b261ecSmrg#define IDirectDrawSurface2_GetFlipStatus(p,a)           ICOM_CALL_(GetFlipStatus,p,(p,a))
169705b261ecSmrg#define IDirectDrawSurface2_GetOverlayPosition(p,a,b)    ICOM_CALL_(GetOverlayPosition,p,(p,a,b))
169805b261ecSmrg#define IDirectDrawSurface2_GetPalette(p,a)              ICOM_CALL_(GetPalette,p,(p,a))
169905b261ecSmrg#define IDirectDrawSurface2_GetPixelFormat(p,a)          ICOM_CALL_(GetPixelFormat,p,(p,a))
170005b261ecSmrg#define IDirectDrawSurface2_GetSurfaceDesc(p,a)          ICOM_CALL_(GetSurfaceDesc,p,(p,a))
170105b261ecSmrg#define IDirectDrawSurface2_Initialize(p,a,b)            ICOM_CALL_(Initialize,p,(p,a,b))
170205b261ecSmrg#define IDirectDrawSurface2_IsLost(p)                    ICOM_CALL_(IsLost,p,(p))
170305b261ecSmrg#define IDirectDrawSurface2_Lock(p,a,b,c,d)              ICOM_CALL_(Lock,p,(p,a,b,c,d))
170405b261ecSmrg#define IDirectDrawSurface2_ReleaseDC(p,a)               ICOM_CALL_(ReleaseDC,p,(p,a))
170505b261ecSmrg#define IDirectDrawSurface2_Restore(p)                   ICOM_CALL_(Restore,p,(p))
170605b261ecSmrg#define IDirectDrawSurface2_SetClipper(p,a)              ICOM_CALL_(SetClipper,p,(p,a))
170705b261ecSmrg#define IDirectDrawSurface2_SetColorKey(p,a,b)           ICOM_CALL_(SetColorKey,p,(p,a,b))
170805b261ecSmrg#define IDirectDrawSurface2_SetOverlayPosition(p,a,b)    ICOM_CALL_(SetOverlayPosition,p,(p,a,b))
170905b261ecSmrg#define IDirectDrawSurface2_SetPalette(p,a)              ICOM_CALL_(SetPalette,p,(p,a))
171005b261ecSmrg#define IDirectDrawSurface2_Unlock(p,a)                  ICOM_CALL_(Unlock,p,(p,a))
171105b261ecSmrg#define IDirectDrawSurface2_UpdateOverlay(p,a,b,c,d,e)   ICOM_CALL_(UpdateOverlay,p,(p,a,b,c,d,e))
171205b261ecSmrg#define IDirectDrawSurface2_UpdateOverlayDisplay(p,a)    ICOM_CALL_(UpdateOverlayDisplay,p,(p,a))
171305b261ecSmrg#define IDirectDrawSurface2_UpdateOverlayZOrder(p,a,b)   ICOM_CALL_(UpdateOverlayZOrder,p,(p,a,b))
171405b261ecSmrg/*** IDirectDrawSurface2 methods ***/
171505b261ecSmrg#define IDirectDrawSurface2_GetDDInterface(p,a) ICOM_CALL_(GetDDInterface,p,(p,a))
171605b261ecSmrg#define IDirectDrawSurface2_PageLock(p,a)       ICOM_CALL_(PageLock,p,(p,a))
171705b261ecSmrg#define IDirectDrawSurface2_PageUnlock(p,a)     ICOM_CALL_(PageUnlock,p,(p,a))
171805b261ecSmrg
171905b261ecSmrg
172005b261ecSmrg/*****************************************************************************
172105b261ecSmrg * IDirectDrawSurface3 interface
172205b261ecSmrg */
172305b261ecSmrg/* Cannot inherit from IDirectDrawSurface2 because the LPDIRECTDRAWSURFACE2 parameters
172405b261ecSmrg * have been converted to LPDIRECTDRAWSURFACE3.
172505b261ecSmrg */
172605b261ecSmrg#undef INTERFACE
172705b261ecSmrg#define INTERFACE IDirectDrawSurface3
172805b261ecSmrgDECLARE_INTERFACE_(IDirectDrawSurface3,IUnknown)
172905b261ecSmrg{
173005b261ecSmrg    STDMETHOD(QueryInterface)(THIS_ REFIID,LPVOID*) PURE;
173105b261ecSmrg    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
173205b261ecSmrg    STDMETHOD_(ULONG,Release)(THIS) PURE;
173305b261ecSmrg    STDMETHOD(AddAttachedSurface)(THIS_ LPDIRECTDRAWSURFACE3 lpDDSAttachedSurface) PURE;
173405b261ecSmrg    STDMETHOD(AddOverlayDirtyRect)(THIS_ LPRECT lpRect) PURE;
173505b261ecSmrg    STDMETHOD(Blt)(THIS_ LPRECT lpDestRect, LPDIRECTDRAWSURFACE3 lpDDSrcSurface, LPRECT lpSrcRect, DWORD dwFlags, LPDDBLTFX lpDDBltFx) PURE;
173605b261ecSmrg    STDMETHOD(BltBatch)(THIS_ LPDDBLTBATCH lpDDBltBatch, DWORD dwCount, DWORD dwFlags) PURE;
173705b261ecSmrg    STDMETHOD(BltFast)(THIS_ DWORD dwX, DWORD dwY, LPDIRECTDRAWSURFACE3 lpDDSrcSurface, LPRECT lpSrcRect, DWORD dwTrans) PURE;
173805b261ecSmrg    STDMETHOD(DeleteAttachedSurface)(THIS_ DWORD dwFlags, LPDIRECTDRAWSURFACE3 lpDDSAttachedSurface) PURE;
173905b261ecSmrg    STDMETHOD(EnumAttachedSurfaces)(THIS_ LPVOID lpContext, LPDDENUMSURFACESCALLBACK lpEnumSurfacesCallback) PURE;
174005b261ecSmrg    STDMETHOD(EnumOverlayZOrders)(THIS_ DWORD dwFlags, LPVOID lpContext, LPDDENUMSURFACESCALLBACK lpfnCallback) PURE;
174105b261ecSmrg    STDMETHOD(Flip)(THIS_ LPDIRECTDRAWSURFACE3 lpDDSurfaceTargetOverride, DWORD dwFlags) PURE;
174205b261ecSmrg    STDMETHOD(GetAttachedSurface)(THIS_ LPDDSCAPS lpDDSCaps, LPDIRECTDRAWSURFACE3* lplpDDAttachedSurface) PURE;
174305b261ecSmrg    STDMETHOD(GetBltStatus)(THIS_ DWORD dwFlags) PURE;
174405b261ecSmrg    STDMETHOD(GetCaps)(THIS_ LPDDSCAPS lpDDSCaps) PURE;
174505b261ecSmrg    STDMETHOD(GetClipper)(THIS_ LPDIRECTDRAWCLIPPER* lplpDDClipper) PURE;
174605b261ecSmrg    STDMETHOD(GetColorKey)(THIS_ DWORD dwFlags, LPDDCOLORKEY lpDDColorKey) PURE;
174705b261ecSmrg    STDMETHOD(GetDC)(THIS_ HDC* lphDC) PURE;
174805b261ecSmrg    STDMETHOD(GetFlipStatus)(THIS_ DWORD dwFlags) PURE;
174905b261ecSmrg    STDMETHOD(GetOverlayPosition)(THIS_ LPLONG lplX, LPLONG lplY) PURE;
175005b261ecSmrg    STDMETHOD(GetPalette)(THIS_ LPDIRECTDRAWPALETTE* lplpDDPalette) PURE;
175105b261ecSmrg    STDMETHOD(GetPixelFormat)(THIS_ LPDDPIXELFORMAT lpDDPixelFormat) PURE;
175205b261ecSmrg    STDMETHOD(GetSurfaceDesc)(THIS_ LPDDSURFACEDESC lpDDSurfaceDesc) PURE;
175305b261ecSmrg    STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW lpDD, LPDDSURFACEDESC lpDDSurfaceDesc) PURE;
175405b261ecSmrg    STDMETHOD(IsLost)(THIS) PURE;
175505b261ecSmrg    STDMETHOD(Lock)(THIS_ LPRECT lpDestRect, LPDDSURFACEDESC lpDDSurfaceDesc, DWORD dwFlags, HANDLE hEvent) PURE;
175605b261ecSmrg    STDMETHOD(ReleaseDC)(THIS_ HDC hDC) PURE;
175705b261ecSmrg    STDMETHOD(Restore)(THIS) PURE;
175805b261ecSmrg    STDMETHOD(SetClipper)(THIS_ LPDIRECTDRAWCLIPPER lpDDClipper) PURE;
175905b261ecSmrg    STDMETHOD(SetColorKey)(THIS_ DWORD dwFlags, LPDDCOLORKEY lpDDColorKey) PURE;
176005b261ecSmrg    STDMETHOD(SetOverlayPosition)(THIS_ LONG lX, LONG lY) PURE;
176105b261ecSmrg    STDMETHOD(SetPalette)(THIS_ LPDIRECTDRAWPALETTE lpDDPalette) PURE;
176205b261ecSmrg    STDMETHOD(Unlock)(THIS_ LPVOID lpSurfaceData) PURE;
176305b261ecSmrg    STDMETHOD(UpdateOverlay)(THIS_ LPRECT lpSrcRect, LPDIRECTDRAWSURFACE3 lpDDDestSurface, LPRECT lpDestRect, DWORD dwFlags, LPDDOVERLAYFX lpDDOverlayFx) PURE;
176405b261ecSmrg    STDMETHOD(UpdateOverlayDisplay)(THIS_ DWORD dwFlags) PURE;
176505b261ecSmrg    STDMETHOD(UpdateOverlayZOrder)(THIS_ DWORD dwFlags, LPDIRECTDRAWSURFACE3 lpDDSReference) PURE;
176605b261ecSmrg    /* added in v2 */
176705b261ecSmrg    STDMETHOD(GetDDInterface)(THIS_ LPVOID* lplpDD) PURE;
176805b261ecSmrg    STDMETHOD(PageLock)(THIS_ DWORD dwFlags) PURE;
176905b261ecSmrg    STDMETHOD(PageUnlock)(THIS_ DWORD dwFlags) PURE;
177005b261ecSmrg    /* added in v3 */
177105b261ecSmrg    STDMETHOD(SetSurfaceDesc)(THIS_ LPDDSURFACEDESC lpDDSD, DWORD dwFlags) PURE;
177205b261ecSmrg};
177305b261ecSmrg
177405b261ecSmrg    /*** IUnknown methods ***/
177505b261ecSmrg#define IDirectDrawSurface3_QueryInterface(p,a,b) ICOM_CALL_(QueryInterface,p,(p,a,b))
177605b261ecSmrg#define IDirectDrawSurface3_AddRef(p)             ICOM_CALL_(AddRef,p,(p))
177705b261ecSmrg#define IDirectDrawSurface3_Release(p)            ICOM_CALL_(Release,p,(p))
177805b261ecSmrg/*** IDirectDrawSurface methods (almost) ***/
177905b261ecSmrg#define IDirectDrawSurface3_AddAttachedSurface(p,a)      ICOM_CALL_(AddAttachedSurface,p,(p,a))
178005b261ecSmrg#define IDirectDrawSurface3_AddOverlayDirtyRect(p,a)     ICOM_CALL_(AddOverlayDirtyRect,p,(p,a))
178105b261ecSmrg#define IDirectDrawSurface3_Blt(p,a,b,c,d,e)             ICOM_CALL_(Blt,p,(p,a,b,c,d,e))
178205b261ecSmrg#define IDirectDrawSurface3_BltBatch(p,a,b,c)            ICOM_CALL_(BltBatch,p,(p,a,b,c))
178305b261ecSmrg#define IDirectDrawSurface3_BltFast(p,a,b,c,d,e)         ICOM_CALL_(BltFast,p,(p,a,b,c,d,e))
178405b261ecSmrg#define IDirectDrawSurface3_DeleteAttachedSurface(p,a,b) ICOM_CALL_(DeleteAttachedSurface,p,(p,a,b))
178505b261ecSmrg#define IDirectDrawSurface3_EnumAttachedSurfaces(p,a,b)  ICOM_CALL_(EnumAttachedSurfaces,p,(p,a,b))
178605b261ecSmrg#define IDirectDrawSurface3_EnumOverlayZOrders(p,a,b,c)  ICOM_CALL_(EnumOverlayZOrders,p,(p,a,b,c))
178705b261ecSmrg#define IDirectDrawSurface3_Flip(p,a,b)                  ICOM_CALL_(Flip,p,(p,a,b))
178805b261ecSmrg#define IDirectDrawSurface3_GetAttachedSurface(p,a,b)    ICOM_CALL_(GetAttachedSurface,p,(p,a,b))
178905b261ecSmrg#define IDirectDrawSurface3_GetBltStatus(p,a)            ICOM_CALL_(GetBltStatus,p,(p,a))
179005b261ecSmrg#define IDirectDrawSurface3_GetCaps(p,a)                 ICOM_CALL_(GetCaps,p,(p,a))
179105b261ecSmrg#define IDirectDrawSurface3_GetClipper(p,a)              ICOM_CALL_(GetClipper,p,(p,a))
179205b261ecSmrg#define IDirectDrawSurface3_GetColorKey(p,a,b)           ICOM_CALL_(GetColorKey,p,(p,a,b))
179305b261ecSmrg#define IDirectDrawSurface3_GetDC(p,a)                   ICOM_CALL_(GetDC,p,(p,a))
179405b261ecSmrg#define IDirectDrawSurface3_GetFlipStatus(p,a)           ICOM_CALL_(GetFlipStatus,p,(p,a))
179505b261ecSmrg#define IDirectDrawSurface3_GetOverlayPosition(p,a,b)    ICOM_CALL_(GetOverlayPosition,p,(p,a,b))
179605b261ecSmrg#define IDirectDrawSurface3_GetPalette(p,a)              ICOM_CALL_(GetPalette,p,(p,a))
179705b261ecSmrg#define IDirectDrawSurface3_GetPixelFormat(p,a)          ICOM_CALL_(GetPixelFormat,p,(p,a))
179805b261ecSmrg#define IDirectDrawSurface3_GetSurfaceDesc(p,a)          ICOM_CALL_(GetSurfaceDesc,p,(p,a))
179905b261ecSmrg#define IDirectDrawSurface3_Initialize(p,a,b)            ICOM_CALL_(Initialize,p,(p,a,b))
180005b261ecSmrg#define IDirectDrawSurface3_IsLost(p)                    ICOM_CALL_(IsLost,p,(p))
180105b261ecSmrg#define IDirectDrawSurface3_Lock(p,a,b,c,d)              ICOM_CALL_(Lock,p,(p,a,b,c,d))
180205b261ecSmrg#define IDirectDrawSurface3_ReleaseDC(p,a)               ICOM_CALL_(ReleaseDC,p,(p,a))
180305b261ecSmrg#define IDirectDrawSurface3_Restore(p)                   ICOM_CALL_(Restore,p,(p))
180405b261ecSmrg#define IDirectDrawSurface3_SetClipper(p,a)              ICOM_CALL_(SetClipper,p,(p,a))
180505b261ecSmrg#define IDirectDrawSurface3_SetColorKey(p,a,b)           ICOM_CALL_(SetColorKey,p,(p,a,b))
180605b261ecSmrg#define IDirectDrawSurface3_SetOverlayPosition(p,a,b)    ICOM_CALL_(SetOverlayPosition,p,(p,a,b))
180705b261ecSmrg#define IDirectDrawSurface3_SetPalette(p,a)              ICOM_CALL_(SetPalette,p,(p,a))
180805b261ecSmrg#define IDirectDrawSurface3_Unlock(p,a)                  ICOM_CALL_(Unlock,p,(p,a))
180905b261ecSmrg#define IDirectDrawSurface3_UpdateOverlay(p,a,b,c,d,e)   ICOM_CALL_(UpdateOverlay,p,(p,a,b,c,d,e))
181005b261ecSmrg#define IDirectDrawSurface3_UpdateOverlayDisplay(p,a)    ICOM_CALL_(UpdateOverlayDisplay,p,(p,a))
181105b261ecSmrg#define IDirectDrawSurface3_UpdateOverlayZOrder(p,a,b)   ICOM_CALL_(UpdateOverlayZOrder,p,(p,a,b))
181205b261ecSmrg/*** IDirectDrawSurface2 methods ***/
181305b261ecSmrg#define IDirectDrawSurface3_GetDDInterface(p,a) ICOM_CALL_(GetDDInterface,p,(p,a))
181405b261ecSmrg#define IDirectDrawSurface3_PageLock(p,a)       ICOM_CALL_(PageLock,p,(p,a))
181505b261ecSmrg#define IDirectDrawSurface3_PageUnlock(p,a)     ICOM_CALL_(PageUnlock,p,(p,a))
181605b261ecSmrg/*** IDirectDrawSurface3 methods ***/
181705b261ecSmrg#define IDirectDrawSurface3_SetSurfaceDesc(p,a,b) ICOM_CALL_(SetSurfaceDesc,p,(p,a,b))
181805b261ecSmrg
181905b261ecSmrg
182005b261ecSmrg/*****************************************************************************
182105b261ecSmrg * IDirectDrawSurface4 interface
182205b261ecSmrg */
182305b261ecSmrg/* Cannot inherit from IDirectDrawSurface2 because DDSCAPS changed to DDSCAPS2.
182405b261ecSmrg */
182505b261ecSmrg#undef INTERFACE
182605b261ecSmrg#define INTERFACE IDirectDrawSurface4
182705b261ecSmrgDECLARE_INTERFACE_(IDirectDrawSurface4,IUnknown)
182805b261ecSmrg{
182905b261ecSmrg    STDMETHOD(QueryInterface)(THIS_ REFIID,LPVOID*) PURE;
183005b261ecSmrg    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
183105b261ecSmrg    STDMETHOD_(ULONG,Release)(THIS) PURE;
183205b261ecSmrg    STDMETHOD(AddAttachedSurface)(THIS_ LPDIRECTDRAWSURFACE4 lpDDSAttachedSurface) PURE;
183305b261ecSmrg    STDMETHOD(AddOverlayDirtyRect)(THIS_ LPRECT lpRect) PURE;
183405b261ecSmrg    STDMETHOD(Blt)(THIS_ LPRECT lpDestRect, LPDIRECTDRAWSURFACE4 lpDDSrcSurface, LPRECT lpSrcRect, DWORD dwFlags, LPDDBLTFX lpDDBltFx) PURE;
183505b261ecSmrg    STDMETHOD(BltBatch)(THIS_ LPDDBLTBATCH lpDDBltBatch, DWORD dwCount, DWORD dwFlags) PURE;
183605b261ecSmrg    STDMETHOD(BltFast)(THIS_ DWORD dwX, DWORD dwY, LPDIRECTDRAWSURFACE4 lpDDSrcSurface, LPRECT lpSrcRect, DWORD dwTrans) PURE;
183705b261ecSmrg    STDMETHOD(DeleteAttachedSurface)(THIS_ DWORD dwFlags, LPDIRECTDRAWSURFACE4 lpDDSAttachedSurface) PURE;
183805b261ecSmrg    STDMETHOD(EnumAttachedSurfaces)(THIS_ LPVOID lpContext, LPDDENUMSURFACESCALLBACK lpEnumSurfacesCallback) PURE;
183905b261ecSmrg    STDMETHOD(EnumOverlayZOrders)(THIS_ DWORD dwFlags, LPVOID lpContext, LPDDENUMSURFACESCALLBACK lpfnCallback) PURE;
184005b261ecSmrg    STDMETHOD(Flip)(THIS_ LPDIRECTDRAWSURFACE4 lpDDSurfaceTargetOverride, DWORD dwFlags) PURE;
184105b261ecSmrg    STDMETHOD(GetAttachedSurface)(THIS_ LPDDSCAPS2 lpDDSCaps, LPDIRECTDRAWSURFACE4* lplpDDAttachedSurface) PURE;
184205b261ecSmrg    STDMETHOD(GetBltStatus)(THIS_ DWORD dwFlags) PURE;
184305b261ecSmrg    STDMETHOD(GetCaps)(THIS_ LPDDSCAPS2 lpDDSCaps) PURE;
184405b261ecSmrg    STDMETHOD(GetClipper)(THIS_ LPDIRECTDRAWCLIPPER* lplpDDClipper) PURE;
184505b261ecSmrg    STDMETHOD(GetColorKey)(THIS_ DWORD dwFlags, LPDDCOLORKEY lpDDColorKey) PURE;
184605b261ecSmrg    STDMETHOD(GetDC)(THIS_ HDC* lphDC) PURE;
184705b261ecSmrg    STDMETHOD(GetFlipStatus)(THIS_ DWORD dwFlags) PURE;
184805b261ecSmrg    STDMETHOD(GetOverlayPosition)(THIS_ LPLONG lplX, LPLONG lplY) PURE;
184905b261ecSmrg    STDMETHOD(GetPalette)(THIS_ LPDIRECTDRAWPALETTE* lplpDDPalette) PURE;
185005b261ecSmrg    STDMETHOD(GetPixelFormat)(THIS_ LPDDPIXELFORMAT lpDDPixelFormat) PURE;
185105b261ecSmrg    STDMETHOD(GetSurfaceDesc)(THIS_ LPDDSURFACEDESC lpDDSurfaceDesc) PURE;
185205b261ecSmrg    STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW lpDD, LPDDSURFACEDESC lpDDSurfaceDesc) PURE;
185305b261ecSmrg    STDMETHOD(IsLost)(THIS) PURE;
185405b261ecSmrg    STDMETHOD(Lock)(THIS_ LPRECT lpDestRect, LPDDSURFACEDESC lpDDSurfaceDesc, DWORD dwFlags, HANDLE hEvent) PURE;
185505b261ecSmrg    STDMETHOD(ReleaseDC)(THIS_ HDC hDC) PURE;
185605b261ecSmrg    STDMETHOD(Restore)(THIS) PURE;
185705b261ecSmrg    STDMETHOD(SetClipper)(THIS_ LPDIRECTDRAWCLIPPER lpDDClipper) PURE;
185805b261ecSmrg    STDMETHOD(SetColorKey)(THIS_ DWORD dwFlags, LPDDCOLORKEY lpDDColorKey) PURE;
185905b261ecSmrg    STDMETHOD(SetOverlayPosition)(THIS_ LONG lX, LONG lY) PURE;
186005b261ecSmrg    STDMETHOD(SetPalette)(THIS_ LPDIRECTDRAWPALETTE lpDDPalette) PURE;
186105b261ecSmrg    STDMETHOD(Unlock)(THIS_ LPRECT lpSurfaceData) PURE;
186205b261ecSmrg    STDMETHOD(UpdateOverlay)(THIS_ LPRECT lpSrcRect, LPDIRECTDRAWSURFACE4 lpDDDestSurface, LPRECT lpDestRect, DWORD dwFlags, LPDDOVERLAYFX lpDDOverlayFx) PURE;
186305b261ecSmrg    STDMETHOD(UpdateOverlayDisplay)(THIS_ DWORD dwFlags) PURE;
186405b261ecSmrg    STDMETHOD(UpdateOverlayZOrder)(THIS_ DWORD dwFlags, LPDIRECTDRAWSURFACE4 lpDDSReference) PURE;
186505b261ecSmrg    /* added in v2 */
186605b261ecSmrg    STDMETHOD(GetDDInterface)(THIS_ LPVOID* lplpDD) PURE;
186705b261ecSmrg    STDMETHOD(PageLock)(THIS_ DWORD dwFlags) PURE;
186805b261ecSmrg    STDMETHOD(PageUnlock)(THIS_ DWORD dwFlags) PURE;
186905b261ecSmrg    /* added in v3 */
187005b261ecSmrg    STDMETHOD(SetSurfaceDesc)(THIS_ LPDDSURFACEDESC lpDDSD, DWORD dwFlags) PURE;
187105b261ecSmrg    /* added in v4 */
187205b261ecSmrg    STDMETHOD(SetPrivateData)(THIS_ REFGUID , LPVOID , DWORD , DWORD ) PURE;
187305b261ecSmrg    STDMETHOD(GetPrivateData)(THIS_ REFGUID , LPVOID , LPDWORD ) PURE;
187405b261ecSmrg    STDMETHOD(FreePrivateData)(THIS_ REFGUID ) PURE;
187505b261ecSmrg    STDMETHOD(GetUniquenessValue)(THIS_ LPDWORD ) PURE;
187605b261ecSmrg    STDMETHOD(ChangeUniquenessValue)(THIS) PURE;
187705b261ecSmrg};
187805b261ecSmrg
187905b261ecSmrg    /*** IUnknown methods ***/
188005b261ecSmrg#define IDirectDrawSurface4_QueryInterface(p,a,b) ICOM_CALL_(QueryInterface,p,(p,a,b))
188105b261ecSmrg#define IDirectDrawSurface4_AddRef(p)             ICOM_CALL_(AddRef,p,(p))
188205b261ecSmrg#define IDirectDrawSurface4_Release(p)            ICOM_CALL_(Release,p,(p))
188305b261ecSmrg/*** IDirectDrawSurface (almost) methods ***/
188405b261ecSmrg#define IDirectDrawSurface4_AddAttachedSurface(p,a)      ICOM_CALL_(AddAttachedSurface,p,(p,a))
188505b261ecSmrg#define IDirectDrawSurface4_AddOverlayDirtyRect(p,a)     ICOM_CALL_(AddOverlayDirtyRect,p,(p,a))
188605b261ecSmrg#define IDirectDrawSurface4_Blt(p,a,b,c,d,e)             ICOM_CALL_(Blt,p,(p,a,b,c,d,e))
188705b261ecSmrg#define IDirectDrawSurface4_BltBatch(p,a,b,c)            ICOM_CALL_(BltBatch,p,(p,a,b,c))
188805b261ecSmrg#define IDirectDrawSurface4_BltFast(p,a,b,c,d,e)         ICOM_CALL_(BltFast,p,(p,a,b,c,d,e))
188905b261ecSmrg#define IDirectDrawSurface4_DeleteAttachedSurface(p,a,b) ICOM_CALL_(DeleteAttachedSurface,p,(p,a,b))
189005b261ecSmrg#define IDirectDrawSurface4_EnumAttachedSurfaces(p,a,b)  ICOM_CALL_(EnumAttachedSurfaces,p,(p,a,b))
189105b261ecSmrg#define IDirectDrawSurface4_EnumOverlayZOrders(p,a,b,c)  ICOM_CALL_(EnumOverlayZOrders,p,(p,a,b,c))
189205b261ecSmrg#define IDirectDrawSurface4_Flip(p,a,b)                  ICOM_CALL_(Flip,p,(p,a,b))
189305b261ecSmrg#define IDirectDrawSurface4_GetAttachedSurface(p,a,b)    ICOM_CALL_(GetAttachedSurface,p,(p,a,b))
189405b261ecSmrg#define IDirectDrawSurface4_GetBltStatus(p,a)            ICOM_CALL_(GetBltStatus,p,(p,a))
189505b261ecSmrg#define IDirectDrawSurface4_GetCaps(p,a)                 ICOM_CALL_(GetCaps,p,(p,a))
189605b261ecSmrg#define IDirectDrawSurface4_GetClipper(p,a)              ICOM_CALL_(GetClipper,p,(p,a))
189705b261ecSmrg#define IDirectDrawSurface4_GetColorKey(p,a,b)           ICOM_CALL_(GetColorKey,p,(p,a,b))
189805b261ecSmrg#define IDirectDrawSurface4_GetDC(p,a)                   ICOM_CALL_(GetDC,p,(p,a))
189905b261ecSmrg#define IDirectDrawSurface4_GetFlipStatus(p,a)           ICOM_CALL_(GetFlipStatus,p,(p,a))
190005b261ecSmrg#define IDirectDrawSurface4_GetOverlayPosition(p,a,b)    ICOM_CALL_(GetOverlayPosition,p,(p,a,b))
190105b261ecSmrg#define IDirectDrawSurface4_GetPalette(p,a)              ICOM_CALL_(GetPalette,p,(p,a))
190205b261ecSmrg#define IDirectDrawSurface4_GetPixelFormat(p,a)          ICOM_CALL_(GetPixelFormat,p,(p,a))
190305b261ecSmrg#define IDirectDrawSurface4_GetSurfaceDesc(p,a)          ICOM_CALL_(GetSurfaceDesc,p,(p,a))
190405b261ecSmrg#define IDirectDrawSurface4_Initialize(p,a,b)            ICOM_CALL_(Initialize,p,(p,a,b))
190505b261ecSmrg#define IDirectDrawSurface4_IsLost(p)                    ICOM_CALL_(IsLost,p,(p))
190605b261ecSmrg#define IDirectDrawSurface4_Lock(p,a,b,c,d)              ICOM_CALL_(Lock,p,(p,a,b,c,d))
190705b261ecSmrg#define IDirectDrawSurface4_ReleaseDC(p,a)               ICOM_CALL_(ReleaseDC,p,(p,a))
190805b261ecSmrg#define IDirectDrawSurface4_Restore(p)                   ICOM_CALL_(Restore,p,(p))
190905b261ecSmrg#define IDirectDrawSurface4_SetClipper(p,a)              ICOM_CALL_(SetClipper,p,(p,a))
191005b261ecSmrg#define IDirectDrawSurface4_SetColorKey(p,a,b)           ICOM_CALL_(SetColorKey,p,(p,a,b))
191105b261ecSmrg#define IDirectDrawSurface4_SetOverlayPosition(p,a,b)    ICOM_CALL_(SetOverlayPosition,p,(p,a,b))
191205b261ecSmrg#define IDirectDrawSurface4_SetPalette(p,a)              ICOM_CALL_(SetPalette,p,(p,a))
191305b261ecSmrg#define IDirectDrawSurface4_Unlock(p,a)                  ICOM_CALL_(Unlock,p,(p,a))
191405b261ecSmrg#define IDirectDrawSurface4_UpdateOverlay(p,a,b,c,d,e)   ICOM_CALL_(UpdateOverlay,p,(p,a,b,c,d,e))
191505b261ecSmrg#define IDirectDrawSurface4_UpdateOverlayDisplay(p,a)    ICOM_CALL_(UpdateOverlayDisplay,p,(p,a))
191605b261ecSmrg#define IDirectDrawSurface4_UpdateOverlayZOrder(p,a,b)   ICOM_CALL_(UpdateOverlayZOrder,p,(p,a,b))
191705b261ecSmrg/*** IDirectDrawSurface2 methods ***/
191805b261ecSmrg#define IDirectDrawSurface4_GetDDInterface(p,a) ICOM_CALL_(GetDDInterface,p,(p,a))
191905b261ecSmrg#define IDirectDrawSurface4_PageLock(p,a)       ICOM_CALL_(PageLock,p,(p,a))
192005b261ecSmrg#define IDirectDrawSurface4_PageUnlock(p,a)     ICOM_CALL_(PageUnlock,p,(p,a))
192105b261ecSmrg/*** IDirectDrawSurface3 methods ***/
192205b261ecSmrg#define IDirectDrawSurface4_SetSurfaceDesc(p,a,b) ICOM_CALL_(SetSurfaceDesc,p,(p,a,b))
192305b261ecSmrg/*** IDirectDrawSurface4 methods ***/
192405b261ecSmrg#define IDirectDrawSurface4_SetPrivateData(p,a,b,c,d) ICOM_CALL_(SetPrivateData,p,(p,a,b,c,d))
192505b261ecSmrg#define IDirectDrawSurface4_GetPrivateData(p,a,b,c)   ICOM_CALL_(GetPrivateData,p,(p,a,b,c))
192605b261ecSmrg#define IDirectDrawSurface4_FreePrivateData(p,a)      ICOM_CALL_(FreePrivateData,p,(p,a))
192705b261ecSmrg#define IDirectDrawSurface4_GetUniquenessValue(p,a)   ICOM_CALL_(GetUniquenessValue,p,(p,a))
192805b261ecSmrg#define IDirectDrawSurface4_ChangeUniquenessValue(p)  ICOM_CALL_(ChangeUniquenessValue,p,(p))
192905b261ecSmrg
193005b261ecSmrg
193105b261ecSmrg/*****************************************************************************
193205b261ecSmrg * IDirectDrawSurface7 interface
193305b261ecSmrg */
193405b261ecSmrg#undef INTERFACE
193505b261ecSmrg#define INTERFACE IDirectDrawSurface7
193605b261ecSmrgDECLARE_INTERFACE_(IDirectDrawSurface7,IUnknown)
193705b261ecSmrg{
193805b261ecSmrg    STDMETHOD(QueryInterface)(THIS_ REFIID,LPVOID*) PURE;
193905b261ecSmrg    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
194005b261ecSmrg    STDMETHOD_(ULONG,Release)(THIS) PURE;
194105b261ecSmrg    STDMETHOD(AddAttachedSurface)(THIS_ LPDIRECTDRAWSURFACE7 lpDDSAttachedSurface) PURE;
194205b261ecSmrg    STDMETHOD(AddOverlayDirtyRect)(THIS_ LPRECT lpRect) PURE;
194305b261ecSmrg    STDMETHOD(Blt)(THIS_ LPRECT lpDestRect, LPDIRECTDRAWSURFACE7 lpDDSrcSurface, LPRECT lpSrcRect, DWORD dwFlags, LPDDBLTFX lpDDBltFx) PURE;
194405b261ecSmrg    STDMETHOD(BltBatch)(THIS_ LPDDBLTBATCH lpDDBltBatch, DWORD dwCount, DWORD dwFlags) PURE;
194505b261ecSmrg    STDMETHOD(BltFast)(THIS_ DWORD dwX, DWORD dwY, LPDIRECTDRAWSURFACE7 lpDDSrcSurface, LPRECT lpSrcRect, DWORD dwTrans) PURE;
194605b261ecSmrg    STDMETHOD(DeleteAttachedSurface)(THIS_ DWORD dwFlags, LPDIRECTDRAWSURFACE7 lpDDSAttachedSurface) PURE;
194705b261ecSmrg    STDMETHOD(EnumAttachedSurfaces)(THIS_ LPVOID lpContext, LPDDENUMSURFACESCALLBACK7 lpEnumSurfacesCallback) PURE;
194805b261ecSmrg    STDMETHOD(EnumOverlayZOrders)(THIS_ DWORD dwFlags, LPVOID lpContext, LPDDENUMSURFACESCALLBACK7 lpfnCallback) PURE;
194905b261ecSmrg    STDMETHOD(Flip)(THIS_ LPDIRECTDRAWSURFACE7 lpDDSurfaceTargetOverride, DWORD dwFlags) PURE;
195005b261ecSmrg    STDMETHOD(GetAttachedSurface)(THIS_ LPDDSCAPS2 lpDDSCaps, LPDIRECTDRAWSURFACE7* lplpDDAttachedSurface) PURE;
195105b261ecSmrg    STDMETHOD(GetBltStatus)(THIS_ DWORD dwFlags) PURE;
195205b261ecSmrg    STDMETHOD(GetCaps)(THIS_ LPDDSCAPS2 lpDDSCaps) PURE;
195305b261ecSmrg    STDMETHOD(GetClipper)(THIS_ LPDIRECTDRAWCLIPPER* lplpDDClipper) PURE;
195405b261ecSmrg    STDMETHOD(GetColorKey)(THIS_ DWORD dwFlags, LPDDCOLORKEY lpDDColorKey) PURE;
195505b261ecSmrg    STDMETHOD(GetDC)(THIS_ HDC* lphDC) PURE;
195605b261ecSmrg    STDMETHOD(GetFlipStatus)(THIS_ DWORD dwFlags) PURE;
195705b261ecSmrg    STDMETHOD(GetOverlayPosition)(THIS_ LPLONG lplX, LPLONG lplY) PURE;
195805b261ecSmrg    STDMETHOD(GetPalette)(THIS_ LPDIRECTDRAWPALETTE* lplpDDPalette) PURE;
195905b261ecSmrg    STDMETHOD(GetPixelFormat)(THIS_ LPDDPIXELFORMAT lpDDPixelFormat) PURE;
196005b261ecSmrg    STDMETHOD(GetSurfaceDesc)(THIS_ LPDDSURFACEDESC2 lpDDSurfaceDesc) PURE;
196105b261ecSmrg    STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW lpDD, LPDDSURFACEDESC2 lpDDSurfaceDesc) PURE;
196205b261ecSmrg    STDMETHOD(IsLost)(THIS) PURE;
196305b261ecSmrg    STDMETHOD(Lock)(THIS_ LPRECT lpDestRect, LPDDSURFACEDESC2 lpDDSurfaceDesc, DWORD dwFlags, HANDLE hEvent) PURE;
196405b261ecSmrg    STDMETHOD(ReleaseDC)(THIS_ HDC hDC) PURE;
196505b261ecSmrg    STDMETHOD(Restore)(THIS) PURE;
196605b261ecSmrg    STDMETHOD(SetClipper)(THIS_ LPDIRECTDRAWCLIPPER lpDDClipper) PURE;
196705b261ecSmrg    STDMETHOD(SetColorKey)(THIS_ DWORD dwFlags, LPDDCOLORKEY lpDDColorKey) PURE;
196805b261ecSmrg    STDMETHOD(SetOverlayPosition)(THIS_ LONG lX, LONG lY) PURE;
196905b261ecSmrg    STDMETHOD(SetPalette)(THIS_ LPDIRECTDRAWPALETTE lpDDPalette) PURE;
197005b261ecSmrg    STDMETHOD(Unlock)(THIS_ LPRECT lpSurfaceData) PURE;
197105b261ecSmrg    STDMETHOD(UpdateOverlay)(THIS_ LPRECT lpSrcRect, LPDIRECTDRAWSURFACE7 lpDDDestSurface, LPRECT lpDestRect, DWORD dwFlags, LPDDOVERLAYFX lpDDOverlayFx) PURE;
197205b261ecSmrg    STDMETHOD(UpdateOverlayDisplay)(THIS_ DWORD dwFlags) PURE;
197305b261ecSmrg    STDMETHOD(UpdateOverlayZOrder)(THIS_ DWORD dwFlags, LPDIRECTDRAWSURFACE7 lpDDSReference) PURE;
197405b261ecSmrg    /* added in v2 */
197505b261ecSmrg    STDMETHOD(GetDDInterface)(THIS_ LPVOID* lplpDD) PURE;
197605b261ecSmrg    STDMETHOD(PageLock)(THIS_ DWORD dwFlags) PURE;
197705b261ecSmrg    STDMETHOD(PageUnlock)(THIS_ DWORD dwFlags) PURE;
197805b261ecSmrg    /* added in v3 */
197905b261ecSmrg    STDMETHOD(SetSurfaceDesc)(THIS_ LPDDSURFACEDESC2 lpDDSD, DWORD dwFlags) PURE;
198005b261ecSmrg    /* added in v4 */
198105b261ecSmrg    STDMETHOD(SetPrivateData)(THIS_ REFGUID , LPVOID , DWORD , DWORD ) PURE;
198205b261ecSmrg    STDMETHOD(GetPrivateData)(THIS_ REFGUID , LPVOID , LPDWORD ) PURE;
198305b261ecSmrg    STDMETHOD(FreePrivateData)(THIS_ REFGUID ) PURE;
198405b261ecSmrg    STDMETHOD(GetUniquenessValue)(THIS_ LPDWORD ) PURE;
198505b261ecSmrg    STDMETHOD(ChangeUniquenessValue)(THIS) PURE;
198605b261ecSmrg    /* added in v7 */
198705b261ecSmrg    STDMETHOD(SetPriority)(THIS_ DWORD prio) PURE;
198805b261ecSmrg    STDMETHOD(GetPriority)(THIS_ LPDWORD prio) PURE;
198905b261ecSmrg    STDMETHOD(SetLOD)(THIS_ DWORD lod) PURE;
199005b261ecSmrg    STDMETHOD(GetLOD)(THIS_ LPDWORD lod) PURE;
199105b261ecSmrg};
199205b261ecSmrg
199305b261ecSmrg    /*** IUnknown methods ***/
199405b261ecSmrg#define IDirectDrawSurface7_QueryInterface(p,a,b) ICOM_CALL_(QueryInterface,p,(p,a,b))
199505b261ecSmrg#define IDirectDrawSurface7_AddRef(p)             ICOM_CALL_(AddRef,p,(p))
199605b261ecSmrg#define IDirectDrawSurface7_Release(p)            ICOM_CALL_(Release,p,(p))
199705b261ecSmrg/*** IDirectDrawSurface (almost) methods ***/
199805b261ecSmrg#define IDirectDrawSurface7_AddAttachedSurface(p,a)      ICOM_CALL_(AddAttachedSurface,p,(p,a))
199905b261ecSmrg#define IDirectDrawSurface7_AddOverlayDirtyRect(p,a)     ICOM_CALL_(AddOverlayDirtyRect,p,(p,a))
200005b261ecSmrg#define IDirectDrawSurface7_Blt(p,a,b,c,d,e)             ICOM_CALL_(Blt,p,(p,a,b,c,d,e))
200105b261ecSmrg#define IDirectDrawSurface7_BltBatch(p,a,b,c)            ICOM_CALL_(BltBatch,p,(p,a,b,c))
200205b261ecSmrg#define IDirectDrawSurface7_BltFast(p,a,b,c,d,e)         ICOM_CALL_(BltFast,p,(p,a,b,c,d,e))
200305b261ecSmrg#define IDirectDrawSurface7_DeleteAttachedSurface(p,a,b) ICOM_CALL_(DeleteAttachedSurface,p,(p,a,b))
200405b261ecSmrg#define IDirectDrawSurface7_EnumAttachedSurfaces(p,a,b)  ICOM_CALL_(EnumAttachedSurfaces,p,(p,a,b))
200505b261ecSmrg#define IDirectDrawSurface7_EnumOverlayZOrders(p,a,b,c)  ICOM_CALL_(EnumOverlayZOrders,p,(p,a,b,c))
200605b261ecSmrg#define IDirectDrawSurface7_Flip(p,a,b)                  ICOM_CALL_(Flip,p,(p,a,b))
200705b261ecSmrg#define IDirectDrawSurface7_GetAttachedSurface(p,a,b)    ICOM_CALL_(GetAttachedSurface,p,(p,a,b))
200805b261ecSmrg#define IDirectDrawSurface7_GetBltStatus(p,a)            ICOM_CALL_(GetBltStatus,p,(p,a))
200905b261ecSmrg#define IDirectDrawSurface7_GetCaps(p,a)                 ICOM_CALL_(GetCaps,p,(p,a))
201005b261ecSmrg#define IDirectDrawSurface7_GetClipper(p,a)              ICOM_CALL_(GetClipper,p,(p,a))
201105b261ecSmrg#define IDirectDrawSurface7_GetColorKey(p,a,b)           ICOM_CALL_(GetColorKey,p,(p,a,b))
201205b261ecSmrg#define IDirectDrawSurface7_GetDC(p,a)                   ICOM_CALL_(GetDC,p,(p,a))
201305b261ecSmrg#define IDirectDrawSurface7_GetFlipStatus(p,a)           ICOM_CALL_(GetFlipStatus,p,(p,a))
201405b261ecSmrg#define IDirectDrawSurface7_GetOverlayPosition(p,a,b)    ICOM_CALL_(GetOverlayPosition,p,(p,a,b))
201505b261ecSmrg#define IDirectDrawSurface7_GetPalette(p,a)              ICOM_CALL_(GetPalette,p,(p,a))
201605b261ecSmrg#define IDirectDrawSurface7_GetPixelFormat(p,a)          ICOM_CALL_(GetPixelFormat,p,(p,a))
201705b261ecSmrg#define IDirectDrawSurface7_GetSurfaceDesc(p,a)          ICOM_CALL_(GetSurfaceDesc,p,(p,a))
201805b261ecSmrg#define IDirectDrawSurface7_Initialize(p,a,b)            ICOM_CALL_(Initialize,p,(p,a,b))
201905b261ecSmrg#define IDirectDrawSurface7_IsLost(p)                    ICOM_CALL_(IsLost,p,(p))
202005b261ecSmrg#define IDirectDrawSurface7_Lock(p,a,b,c,d)              ICOM_CALL_(Lock,p,(p,a,b,c,d))
202105b261ecSmrg#define IDirectDrawSurface7_ReleaseDC(p,a)               ICOM_CALL_(ReleaseDC,p,(p,a))
202205b261ecSmrg#define IDirectDrawSurface7_Restore(p)                   ICOM_CALL_(Restore,p,(p))
202305b261ecSmrg#define IDirectDrawSurface7_SetClipper(p,a)              ICOM_CALL_(SetClipper,p,(p,a))
202405b261ecSmrg#define IDirectDrawSurface7_SetColorKey(p,a,b)           ICOM_CALL_(SetColorKey,p,(p,a,b))
202505b261ecSmrg#define IDirectDrawSurface7_SetOverlayPosition(p,a,b)    ICOM_CALL_(SetOverlayPosition,p,(p,a,b))
202605b261ecSmrg#define IDirectDrawSurface7_SetPalette(p,a)              ICOM_CALL_(SetPalette,p,(p,a))
202705b261ecSmrg#define IDirectDrawSurface7_Unlock(p,a)                  ICOM_CALL_(Unlock,p,(p,a))
202805b261ecSmrg#define IDirectDrawSurface7_UpdateOverlay(p,a,b,c,d,e)   ICOM_CALL_(UpdateOverlay,p,(p,a,b,c,d,e))
202905b261ecSmrg#define IDirectDrawSurface7_UpdateOverlayDisplay(p,a)    ICOM_CALL_(UpdateOverlayDisplay,p,(p,a))
203005b261ecSmrg#define IDirectDrawSurface7_UpdateOverlayZOrder(p,a,b)   ICOM_CALL_(UpdateOverlayZOrder,p,(p,a,b))
203105b261ecSmrg/*** IDirectDrawSurface2 methods ***/
203205b261ecSmrg#define IDirectDrawSurface7_GetDDInterface(p,a) ICOM_CALL_(GetDDInterface,p,(p,a))
203305b261ecSmrg#define IDirectDrawSurface7_PageLock(p,a)       ICOM_CALL_(PageLock,p,(p,a))
203405b261ecSmrg#define IDirectDrawSurface7_PageUnlock(p,a)     ICOM_CALL_(PageUnlock,p,(p,a))
203505b261ecSmrg/*** IDirectDrawSurface3 methods ***/
203605b261ecSmrg#define IDirectDrawSurface7_SetSurfaceDesc(p,a,b) ICOM_CALL_(SetSurfaceDesc,p,(p,a,b))
203705b261ecSmrg/*** IDirectDrawSurface4 methods ***/
203805b261ecSmrg#define IDirectDrawSurface7_SetPrivateData(p,a,b,c,d) ICOM_CALL_(SetPrivateData,p,(p,a,b,c,d))
203905b261ecSmrg#define IDirectDrawSurface7_GetPrivateData(p,a,b,c)   ICOM_CALL_(GetPrivateData,p,(p,a,b,c))
204005b261ecSmrg#define IDirectDrawSurface7_FreePrivateData(p,a)      ICOM_CALL_(FreePrivateData,p,(p,a))
204105b261ecSmrg#define IDirectDrawSurface7_GetUniquenessValue(p,a)   ICOM_CALL_(GetUniquenessValue,p,(p,a))
204205b261ecSmrg#define IDirectDrawSurface7_ChangeUniquenessValue(p)  ICOM_CALL_(ChangeUniquenessValue,p,(p))
204305b261ecSmrg/*** IDirectDrawSurface7 methods ***/
204405b261ecSmrg#define IDirectDrawSurface7_SetPriority(p,a)          ICOM_CALL_(SetPriority,p,(p,a))
204505b261ecSmrg#define IDirectDrawSurface7_GetPriority(p,a)          ICOM_CALL_(GetPriority,p,(p,a))
204605b261ecSmrg#define IDirectDrawSurface7_SetLOD(p,a)               ICOM_CALL_(SetLOD,p,(p,a))
204705b261ecSmrg#define IDirectDrawSurface7_GetLOD(p,a)               ICOM_CALL_(GetLOD,p,(p,a))
204805b261ecSmrg
204905b261ecSmrg/*****************************************************************************
205005b261ecSmrg * IDirectDrawColorControl interface
205105b261ecSmrg */
205205b261ecSmrg#undef INTERFACE
205305b261ecSmrg#define INTERFACE IDirectDrawColorControl
205405b261ecSmrgDECLARE_INTERFACE_(IDirectDrawColorControl,IUnknown)
205505b261ecSmrg{
205605b261ecSmrg    STDMETHOD(QueryInterface)(THIS_ REFIID,LPVOID*) PURE;
205705b261ecSmrg    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
205805b261ecSmrg    STDMETHOD_(ULONG,Release)(THIS) PURE;
205905b261ecSmrg    STDMETHOD(GetColorControls)(THIS_ LPDDCOLORCONTROL lpColorControl) PURE;
206005b261ecSmrg    STDMETHOD(SetColorControls)(THIS_ LPDDCOLORCONTROL lpColorControl) PURE;
206105b261ecSmrg};
206205b261ecSmrg
206305b261ecSmrg	/*** IUnknown methods ***/
206405b261ecSmrg#define IDirectDrawColorControl_QueryInterface(p,a,b) ICOM_CALL_(QueryInterface,p,(p,a,b))
206505b261ecSmrg#define IDirectDrawColorControl_AddRef(p)             ICOM_CALL_(AddRef,p,(p))
206605b261ecSmrg#define IDirectDrawColorControl_Release(p)            ICOM_CALL_(Release,p,(p))
206705b261ecSmrg	/*** IDirectDrawColorControl methods ***/
206805b261ecSmrg#define IDirectDrawColorControl_GetColorControls(p,a) ICOM_CALL_(GetColorControls,p,(p,a))
206905b261ecSmrg#define IDirectDrawColorControl_SetColorControls(p,a) ICOM_CALL_(SetColorControls,p,(p,a))
207005b261ecSmrg
207105b261ecSmrg/*****************************************************************************
207205b261ecSmrg * IDirectDrawGammaControl interface
207305b261ecSmrg */
207405b261ecSmrg#undef INTERFACE
207505b261ecSmrg#define INTERFACE IDirectDrawGammaControl
207605b261ecSmrgDECLARE_INTERFACE_(IDirectDrawGammaControl,IUnknown)
207705b261ecSmrg{
207805b261ecSmrg    STDMETHOD(QueryInterface)(THIS_ REFIID,LPVOID*) PURE;
207905b261ecSmrg    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
208005b261ecSmrg    STDMETHOD_(ULONG,Release)(THIS) PURE;
208105b261ecSmrg    STDMETHOD(GetGammaRamp)(THIS_ DWORD dwFlags, LPDDGAMMARAMP lpGammaRamp) PURE;
208205b261ecSmrg    STDMETHOD(SetGammaRamp)(THIS_ DWORD dwFlags, LPDDGAMMARAMP lpGammaRamp) PURE;
208305b261ecSmrg};
208405b261ecSmrg
208505b261ecSmrg	/*** IUnknown methods ***/
208605b261ecSmrg#define IDirectDrawGammaControl_QueryInterface(p,a,b) ICOM_CALL_(QueryInterface,p,(p,a,b))
208705b261ecSmrg#define IDirectDrawGammaControl_AddRef(p)             ICOM_CALL_(AddRef,p,(p))
208805b261ecSmrg#define IDirectDrawGammaControl_Release(p)            ICOM_CALL_(Release,p,(p))
208905b261ecSmrg	/*** IDirectDrawGammaControl methods ***/
209005b261ecSmrg#define IDirectDrawGammaControl_GetGammaRamp(p,a,b)   ICOM_CALL_(GetGammaRamp,p,(p,a,b))
209105b261ecSmrg#define IDirectDrawGammaControl_SetGammaRamp(p,a,b)   ICOM_CALL_(SetGammaRamp,p,(p,a,b))
209205b261ecSmrg
209305b261ecSmrg
209405b261ecSmrgHRESULT WINAPI DirectDrawCreate(LPGUID,LPDIRECTDRAW*,LPUNKNOWN);
209505b261ecSmrgHRESULT WINAPI DirectDrawCreateEx(LPGUID,LPVOID*,REFIID,LPUNKNOWN);
209605b261ecSmrgHRESULT WINAPI DirectDrawEnumerateA(LPDDENUMCALLBACKA,LPVOID);
209705b261ecSmrgHRESULT WINAPI DirectDrawEnumerateW(LPDDENUMCALLBACKW,LPVOID);
209805b261ecSmrg#define DirectDrawEnumerate WINELIB_NAME_AW(DirectDrawEnumerate)
209905b261ecSmrgHRESULT WINAPI DirectDrawCreateClipper(DWORD,LPDIRECTDRAWCLIPPER*,LPUNKNOWN);
210005b261ecSmrg
210105b261ecSmrg
210205b261ecSmrg#ifdef __cplusplus
210305b261ecSmrg} /* extern "C" */
210405b261ecSmrg#endif /* defined(__cplusplus) */
210505b261ecSmrg
210605b261ecSmrg#endif /* __XWIN_DDRAW_H */
2107