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