d3d.h 94.7 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
/*
 * Copyright (C) the Wine project
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * 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 20
#ifndef __WINE_D3D_H
#define __WINE_D3D_H
Alexandre Julliard's avatar
Alexandre Julliard committed
21

22
#include <stdlib.h>
23 24

#define COM_NO_WINDOWS_H
25
#include <objbase.h>
26 27
#include <d3dtypes.h> /* must precede d3dcaps.h */
#include <d3dcaps.h>
28

29 30 31
/*****************************************************************************
 * Predeclare the interfaces
 */
32 33
DEFINE_GUID(IID_IDirect3D,              0x3BBA0080,0x2421,0x11CF,0xA3,0x1A,0x00,0xAA,0x00,0xB9,0x33,0x56);
DEFINE_GUID(IID_IDirect3D2,             0x6aae1ec1,0x662a,0x11d0,0x88,0x9d,0x00,0xaa,0x00,0xbb,0xb7,0x6a);
34
DEFINE_GUID(IID_IDirect3D3,             0xbb223240,0xe72b,0x11d0,0xa9,0xb4,0x00,0xaa,0x00,0xc0,0x99,0x3e);
35
DEFINE_GUID(IID_IDirect3D7,             0xf5049e77,0x4861,0x11d2,0xa4,0x07,0x00,0xa0,0xc9,0x06,0x29,0xa8);
Alexandre Julliard's avatar
Alexandre Julliard committed
36

37 38 39 40
DEFINE_GUID(IID_IDirect3DRampDevice,	0xF2086B20,0x259F,0x11CF,0xA3,0x1A,0x00,0xAA,0x00,0xB9,0x33,0x56);
DEFINE_GUID(IID_IDirect3DRGBDevice,	0xA4665C60,0x2673,0x11CF,0xA3,0x1A,0x00,0xAA,0x00,0xB9,0x33,0x56);
DEFINE_GUID(IID_IDirect3DHALDevice,	0x84E63dE0,0x46AA,0x11CF,0x81,0x6F,0x00,0x00,0xC0,0x20,0x15,0x6E);
DEFINE_GUID(IID_IDirect3DMMXDevice,	0x881949a1,0xd6f3,0x11d0,0x89,0xab,0x00,0xa0,0xc9,0x05,0x41,0x29);
41 42
DEFINE_GUID(IID_IDirect3DRefDevice,     0x50936643,0x13e9,0x11d1,0x89,0xaa,0x00,0xa0,0xc9,0x05,0x41,0x29);
DEFINE_GUID(IID_IDirect3DTnLHalDevice,  0xf5049e78,0x4861,0x11d2,0xa4,0x07,0x00,0xa0,0xc9,0x06,0x29,0xa8);
43
DEFINE_GUID(IID_IDirect3DNullDevice,    0x8767df22,0xbacc,0x11d1,0x89,0x69,0x00,0xa0,0xc9,0x06,0x29,0xa8);
Alexandre Julliard's avatar
Alexandre Julliard committed
44

45
DEFINE_GUID(IID_IDirect3DDevice,	0x64108800,0x957d,0x11D0,0x89,0xAB,0x00,0xA0,0xC9,0x05,0x41,0x29);
Alexandre Julliard's avatar
Alexandre Julliard committed
46
DEFINE_GUID(IID_IDirect3DDevice2,	0x93281501,0x8CF8,0x11D0,0x89,0xAB,0x00,0xA0,0xC9,0x05,0x41,0x29);
47
DEFINE_GUID(IID_IDirect3DDevice3,       0xb0ab3b60,0x33d7,0x11d1,0xa9,0x81,0x00,0xc0,0x4f,0xd7,0xb1,0x74);
48
DEFINE_GUID(IID_IDirect3DDevice7,       0xf5049e79,0x4861,0x11d2,0xa4,0x07,0x00,0xa0,0xc9,0x06,0x29,0xa8);
49

Alexandre Julliard's avatar
Alexandre Julliard committed
50 51
DEFINE_GUID(IID_IDirect3DTexture,	0x2CDCD9E0,0x25A0,0x11CF,0xA3,0x1A,0x00,0xAA,0x00,0xB9,0x33,0x56);
DEFINE_GUID(IID_IDirect3DTexture2,	0x93281502,0x8CF8,0x11D0,0x89,0xAB,0x00,0xA0,0xC9,0x05,0x41,0x29);
52

Alexandre Julliard's avatar
Alexandre Julliard committed
53
DEFINE_GUID(IID_IDirect3DLight,		0x4417C142,0x33AD,0x11CF,0x81,0x6F,0x00,0x00,0xC0,0x20,0x15,0x6E);
54

Alexandre Julliard's avatar
Alexandre Julliard committed
55 56
DEFINE_GUID(IID_IDirect3DMaterial,	0x4417C144,0x33AD,0x11CF,0x81,0x6F,0x00,0x00,0xC0,0x20,0x15,0x6E);
DEFINE_GUID(IID_IDirect3DMaterial2,	0x93281503,0x8CF8,0x11D0,0x89,0xAB,0x00,0xA0,0xC9,0x05,0x41,0x29);
57 58
DEFINE_GUID(IID_IDirect3DMaterial3,     0xca9c46f4,0xd3c5,0x11d1,0xb7,0x5a,0x00,0x60,0x08,0x52,0xb3,0x12);

Alexandre Julliard's avatar
Alexandre Julliard committed
59
DEFINE_GUID(IID_IDirect3DExecuteBuffer,	0x4417C145,0x33AD,0x11CF,0x81,0x6F,0x00,0x00,0xC0,0x20,0x15,0x6E);
60

Alexandre Julliard's avatar
Alexandre Julliard committed
61 62
DEFINE_GUID(IID_IDirect3DViewport,	0x4417C146,0x33AD,0x11CF,0x81,0x6F,0x00,0x00,0xC0,0x20,0x15,0x6E);
DEFINE_GUID(IID_IDirect3DViewport2,	0x93281500,0x8CF8,0x11D0,0x89,0xAB,0x00,0xA0,0xC9,0x05,0x41,0x29);
63 64 65
DEFINE_GUID(IID_IDirect3DViewport3,     0xb0ab3b61,0x33d7,0x11d1,0xa9,0x81,0x00,0xc0,0x4f,0xd7,0xb1,0x74);

DEFINE_GUID(IID_IDirect3DVertexBuffer,  0x7a503555,0x4a83,0x11d1,0xa5,0xdb,0x00,0xa0,0xc9,0x03,0x67,0xf8);
66 67
DEFINE_GUID(IID_IDirect3DVertexBuffer7, 0xf5049e7d,0x4861,0x11d2,0xa4,0x07,0x00,0xa0,0xc9,0x06,0x29,0xa8);

68

69 70 71 72
typedef struct IDirect3D *LPDIRECT3D;
typedef struct IDirect3D2 *LPDIRECT3D2;
typedef struct IDirect3D3 *LPDIRECT3D3;
typedef struct IDirect3D7 *LPDIRECT3D7;
73

74
typedef struct IDirect3DLight *LPDIRECT3DLIGHT;
Alexandre Julliard's avatar
Alexandre Julliard committed
75

76 77 78 79
typedef struct IDirect3DDevice *LPDIRECT3DDEVICE;
typedef struct IDirect3DDevice2 *LPDIRECT3DDEVICE2;
typedef struct IDirect3DDevice3 *LPDIRECT3DDEVICE3;
typedef struct IDirect3DDevice7 *LPDIRECT3DDEVICE7;
80

81 82 83
typedef struct IDirect3DViewport *LPDIRECT3DVIEWPORT;
typedef struct IDirect3DViewport2 *LPDIRECT3DVIEWPORT2;
typedef struct IDirect3DViewport3 *LPDIRECT3DVIEWPORT3;
84

85 86 87
typedef struct IDirect3DMaterial *LPDIRECT3DMATERIAL;
typedef struct IDirect3DMaterial2 *LPDIRECT3DMATERIAL2;
typedef struct IDirect3DMaterial3 *LPDIRECT3DMATERIAL3;
88

89 90
typedef struct IDirect3DTexture *LPDIRECT3DTEXTURE;
typedef struct IDirect3DTexture2 *LPDIRECT3DTEXTURE2;
91

92
typedef struct IDirect3DExecuteBuffer *LPDIRECT3DEXECUTEBUFFER;
93

94 95
typedef struct IDirect3DVertexBuffer *LPDIRECT3DVERTEXBUFFER;
typedef struct IDirect3DVertexBuffer7 *LPDIRECT3DVERTEXBUFFER7;
96

97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154
/* ********************************************************************
   Error Codes
   ******************************************************************** */
#define D3D_OK                          DD_OK
#define D3DERR_BADMAJORVERSION          MAKE_DDHRESULT(700)
#define D3DERR_BADMINORVERSION          MAKE_DDHRESULT(701)
#define D3DERR_INVALID_DEVICE           MAKE_DDHRESULT(705)
#define D3DERR_INITFAILED               MAKE_DDHRESULT(706)
#define D3DERR_DEVICEAGGREGATED         MAKE_DDHRESULT(707)
#define D3DERR_EXECUTE_CREATE_FAILED    MAKE_DDHRESULT(710)
#define D3DERR_EXECUTE_DESTROY_FAILED   MAKE_DDHRESULT(711)
#define D3DERR_EXECUTE_LOCK_FAILED      MAKE_DDHRESULT(712)
#define D3DERR_EXECUTE_UNLOCK_FAILED    MAKE_DDHRESULT(713)
#define D3DERR_EXECUTE_LOCKED           MAKE_DDHRESULT(714)
#define D3DERR_EXECUTE_NOT_LOCKED       MAKE_DDHRESULT(715)
#define D3DERR_EXECUTE_FAILED           MAKE_DDHRESULT(716)
#define D3DERR_EXECUTE_CLIPPED_FAILED   MAKE_DDHRESULT(717)
#define D3DERR_TEXTURE_NO_SUPPORT       MAKE_DDHRESULT(720)
#define D3DERR_TEXTURE_CREATE_FAILED    MAKE_DDHRESULT(721)
#define D3DERR_TEXTURE_DESTROY_FAILED   MAKE_DDHRESULT(722)
#define D3DERR_TEXTURE_LOCK_FAILED      MAKE_DDHRESULT(723)
#define D3DERR_TEXTURE_UNLOCK_FAILED    MAKE_DDHRESULT(724)
#define D3DERR_TEXTURE_LOAD_FAILED      MAKE_DDHRESULT(725)
#define D3DERR_TEXTURE_SWAP_FAILED      MAKE_DDHRESULT(726)
#define D3DERR_TEXTURE_LOCKED           MAKE_DDHRESULT(727)
#define D3DERR_TEXTURE_NOT_LOCKED       MAKE_DDHRESULT(728)
#define D3DERR_TEXTURE_GETSURF_FAILED   MAKE_DDHRESULT(729)
#define D3DERR_MATRIX_CREATE_FAILED     MAKE_DDHRESULT(730)
#define D3DERR_MATRIX_DESTROY_FAILED    MAKE_DDHRESULT(731)
#define D3DERR_MATRIX_SETDATA_FAILED    MAKE_DDHRESULT(732)
#define D3DERR_MATRIX_GETDATA_FAILED    MAKE_DDHRESULT(733)
#define D3DERR_SETVIEWPORTDATA_FAILED   MAKE_DDHRESULT(734)
#define D3DERR_INVALIDCURRENTVIEWPORT   MAKE_DDHRESULT(735)
#define D3DERR_INVALIDPRIMITIVETYPE     MAKE_DDHRESULT(736)
#define D3DERR_INVALIDVERTEXTYPE        MAKE_DDHRESULT(737)
#define D3DERR_TEXTURE_BADSIZE          MAKE_DDHRESULT(738)
#define D3DERR_INVALIDRAMPTEXTURE       MAKE_DDHRESULT(739)
#define D3DERR_MATERIAL_CREATE_FAILED   MAKE_DDHRESULT(740)
#define D3DERR_MATERIAL_DESTROY_FAILED  MAKE_DDHRESULT(741)
#define D3DERR_MATERIAL_SETDATA_FAILED  MAKE_DDHRESULT(742)
#define D3DERR_MATERIAL_GETDATA_FAILED  MAKE_DDHRESULT(743)
#define D3DERR_INVALIDPALETTE           MAKE_DDHRESULT(744)
#define D3DERR_ZBUFF_NEEDS_SYSTEMMEMORY MAKE_DDHRESULT(745)
#define D3DERR_ZBUFF_NEEDS_VIDEOMEMORY  MAKE_DDHRESULT(746)
#define D3DERR_SURFACENOTINVIDMEM       MAKE_DDHRESULT(747)
#define D3DERR_LIGHT_SET_FAILED         MAKE_DDHRESULT(750)
#define D3DERR_LIGHTHASVIEWPORT         MAKE_DDHRESULT(751)
#define D3DERR_LIGHTNOTINTHISVIEWPORT   MAKE_DDHRESULT(752)
#define D3DERR_SCENE_IN_SCENE           MAKE_DDHRESULT(760)
#define D3DERR_SCENE_NOT_IN_SCENE       MAKE_DDHRESULT(761)
#define D3DERR_SCENE_BEGIN_FAILED       MAKE_DDHRESULT(762)
#define D3DERR_SCENE_END_FAILED         MAKE_DDHRESULT(763)
#define D3DERR_INBEGIN                  MAKE_DDHRESULT(770)
#define D3DERR_NOTINBEGIN               MAKE_DDHRESULT(771)
#define D3DERR_NOVIEWPORTS              MAKE_DDHRESULT(772)
#define D3DERR_VIEWPORTDATANOTSET       MAKE_DDHRESULT(773)
#define D3DERR_VIEWPORTHASNODEVICE      MAKE_DDHRESULT(774)
#define D3DERR_NOCURRENTVIEWPORT        MAKE_DDHRESULT(775)
Ove Kaaven's avatar
Ove Kaaven committed
155
#define D3DERR_INVALIDVERTEXFORMAT	MAKE_DDHRESULT(2048)
156
#define D3DERR_COLORKEYATTACHED         MAKE_DDHRESULT(2050)
Ove Kaaven's avatar
Ove Kaaven committed
157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181
#define D3DERR_VERTEXBUFFEROPTIMIZED	MAKE_DDHRESULT(2060)
#define D3DERR_VBUF_CREATE_FAILED	MAKE_DDHRESULT(2061)
#define D3DERR_VERTEXBUFFERLOCKED	MAKE_DDHRESULT(2062)
#define D3DERR_VERTEXBUFFERUNLOCKFAILED	MAKE_DDHRESULT(2063)
#define D3DERR_ZBUFFER_NOTPRESENT	MAKE_DDHRESULT(2070)
#define D3DERR_STENCILBUFFER_NOTPRESENT	MAKE_DDHRESULT(2071)

#define D3DERR_WRONGTEXTUREFORMAT		MAKE_DDHRESULT(2072)
#define D3DERR_UNSUPPORTEDCOLOROPERATION	MAKE_DDHRESULT(2073)
#define D3DERR_UNSUPPORTEDCOLORARG		MAKE_DDHRESULT(2074)
#define D3DERR_UNSUPPORTEDALPHAOPERATION	MAKE_DDHRESULT(2075)
#define D3DERR_UNSUPPORTEDALPHAARG		MAKE_DDHRESULT(2076)
#define D3DERR_TOOMANYOPERATIONS		MAKE_DDHRESULT(2077)
#define D3DERR_CONFLICTINGTEXTUREFILTER		MAKE_DDHRESULT(2078)
#define D3DERR_UNSUPPORTEDFACTORVALUE		MAKE_DDHRESULT(2079)
#define D3DERR_CONFLICTINGRENDERSTATE		MAKE_DDHRESULT(2081)
#define D3DERR_UNSUPPORTEDTEXTUREFILTER		MAKE_DDHRESULT(2082)
#define D3DERR_TOOMANYPRIMITIVES		MAKE_DDHRESULT(2083)
#define D3DERR_INVALIDMATRIX			MAKE_DDHRESULT(2084)
#define D3DERR_TOOMANYVERTICES			MAKE_DDHRESULT(2085)
#define D3DERR_CONFLICTINGTEXTUREPALETTE	MAKE_DDHRESULT(2086)

#define D3DERR_INVALIDSTATEBLOCK	MAKE_DDHRESULT(2100)
#define D3DERR_INBEGINSTATEBLOCK	MAKE_DDHRESULT(2101)
#define D3DERR_NOTINBEGINSTATEBLOCK	MAKE_DDHRESULT(2102)
182

183 184 185
/* ********************************************************************
   Enums
   ******************************************************************** */
186 187 188 189 190 191 192 193 194
#define D3DNEXT_NEXT __MSABI_LONG(0x01)
#define D3DNEXT_HEAD __MSABI_LONG(0x02)
#define D3DNEXT_TAIL __MSABI_LONG(0x04)

#define D3DDP_WAIT               __MSABI_LONG(0x00000001)
#define D3DDP_OUTOFORDER         __MSABI_LONG(0x00000002)
#define D3DDP_DONOTCLIP          __MSABI_LONG(0x00000004)
#define D3DDP_DONOTUPDATEEXTENTS __MSABI_LONG(0x00000008)
#define D3DDP_DONOTLIGHT         __MSABI_LONG(0x00000010)
195

196 197 198 199
/* ********************************************************************
   Types and structures
   ******************************************************************** */
typedef DWORD D3DVIEWPORTHANDLE, *LPD3DVIEWPORTHANDLE;
200

201

202 203 204
/*****************************************************************************
 * IDirect3D interface
 */
205
#undef INTERFACE
206
#define INTERFACE IDirect3D
207 208 209 210 211 212 213 214 215
DECLARE_INTERFACE_(IDirect3D,IUnknown)
{
    /*** IUnknown methods ***/
    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
    STDMETHOD_(ULONG,Release)(THIS) PURE;
    /*** IDirect3D methods ***/
    STDMETHOD(Initialize)(THIS_ REFIID riid) PURE;
    STDMETHOD(EnumDevices)(THIS_ LPD3DENUMDEVICESCALLBACK lpEnumDevicesCallback, LPVOID lpUserArg) PURE;
216
    STDMETHOD(CreateLight)(THIS_ struct IDirect3DLight **light, IUnknown *outer) PURE;
217
    STDMETHOD(CreateMaterial)(THIS_ struct IDirect3DMaterial **material, IUnknown *outer) PURE;
218
    STDMETHOD(CreateViewport)(THIS_ struct IDirect3DViewport **viewport, IUnknown *outer) PURE;
219
    STDMETHOD(FindDevice)(THIS_ D3DFINDDEVICESEARCH *search, D3DFINDDEVICERESULT *result) PURE;
220
};
221
#undef INTERFACE
222

223 224
#if !defined(__cplusplus) || defined(CINTERFACE)
/*** IUnknown methods ***/
225 226 227
#define IDirect3D_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IDirect3D_AddRef(p)             (p)->lpVtbl->AddRef(p)
#define IDirect3D_Release(p)            (p)->lpVtbl->Release(p)
228
/*** IDirect3D methods ***/
229 230 231 232 233 234
#define IDirect3D_Initialize(p,a)       (p)->lpVtbl->Initialize(p,a)
#define IDirect3D_EnumDevices(p,a,b)    (p)->lpVtbl->EnumDevices(p,a,b)
#define IDirect3D_CreateLight(p,a,b)    (p)->lpVtbl->CreateLight(p,a,b)
#define IDirect3D_CreateMaterial(p,a,b) (p)->lpVtbl->CreateMaterial(p,a,b)
#define IDirect3D_CreateViewport(p,a,b) (p)->lpVtbl->CreateViewport(p,a,b)
#define IDirect3D_FindDevice(p,a,b)     (p)->lpVtbl->FindDevice(p,a,b)
235 236 237 238 239 240 241 242 243 244 245 246
#else
/*** IUnknown methods ***/
#define IDirect3D_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
#define IDirect3D_AddRef(p)             (p)->AddRef()
#define IDirect3D_Release(p)            (p)->Release()
/*** IDirect3D methods ***/
#define IDirect3D_Initialize(p,a)       (p)->Initialize(a)
#define IDirect3D_EnumDevices(p,a,b)    (p)->EnumDevices(a,b)
#define IDirect3D_CreateLight(p,a,b)    (p)->CreateLight(a,b)
#define IDirect3D_CreateMaterial(p,a,b) (p)->CreateMaterial(a,b)
#define IDirect3D_CreateViewport(p,a,b) (p)->CreateViewport(a,b)
#define IDirect3D_FindDevice(p,a,b)     (p)->FindDevice(a,b)
247
#endif
Alexandre Julliard's avatar
Alexandre Julliard committed
248 249


250 251 252
/*****************************************************************************
 * IDirect3D2 interface
 */
253
#define INTERFACE IDirect3D2
254 255 256 257 258 259 260 261
DECLARE_INTERFACE_(IDirect3D2,IUnknown)
{
    /*** IUnknown methods ***/
    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
    STDMETHOD_(ULONG,Release)(THIS) PURE;
    /*** IDirect3D2 methods ***/
    STDMETHOD(EnumDevices)(THIS_ LPD3DENUMDEVICESCALLBACK lpEnumDevicesCallback, LPVOID lpUserArg) PURE;
262
    STDMETHOD(CreateLight)(THIS_ struct IDirect3DLight **light, IUnknown *outer) PURE;
263
    STDMETHOD(CreateMaterial)(THIS_ struct IDirect3DMaterial2 **material, IUnknown *outer) PURE;
264
    STDMETHOD(CreateViewport)(THIS_ struct IDirect3DViewport2 **viewport, IUnknown *outer) PURE;
265
    STDMETHOD(FindDevice)(THIS_ D3DFINDDEVICESEARCH *search, D3DFINDDEVICERESULT *result) PURE;
266 267
    STDMETHOD(CreateDevice)(THIS_ REFCLSID rclsid, IDirectDrawSurface *surface,
            struct IDirect3DDevice2 **device) PURE;
268
};
269
#undef INTERFACE
270

271
#if !defined(__cplusplus) || defined(CINTERFACE)
272
/*** IUnknown methods ***/
273 274 275
#define IDirect3D2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IDirect3D2_AddRef(p)             (p)->lpVtbl->AddRef(p)
#define IDirect3D2_Release(p)            (p)->lpVtbl->Release(p)
276
/*** IDirect3D2 methods ***/
277 278 279 280 281 282
#define IDirect3D2_EnumDevices(p,a,b)    (p)->lpVtbl->EnumDevices(p,a,b)
#define IDirect3D2_CreateLight(p,a,b)    (p)->lpVtbl->CreateLight(p,a,b)
#define IDirect3D2_CreateMaterial(p,a,b) (p)->lpVtbl->CreateMaterial(p,a,b)
#define IDirect3D2_CreateViewport(p,a,b) (p)->lpVtbl->CreateViewport(p,a,b)
#define IDirect3D2_FindDevice(p,a,b)     (p)->lpVtbl->FindDevice(p,a,b)
#define IDirect3D2_CreateDevice(p,a,b,c) (p)->lpVtbl->CreateDevice(p,a,b,c)
283 284 285 286 287 288 289 290 291 292 293 294
#else
/*** IUnknown methods ***/
#define IDirect3D2_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
#define IDirect3D2_AddRef(p)             (p)->AddRef()
#define IDirect3D2_Release(p)            (p)->Release()
/*** IDirect3D2 methods ***/
#define IDirect3D2_EnumDevices(p,a,b)    (p)->EnumDevices(a,b)
#define IDirect3D2_CreateLight(p,a,b)    (p)->CreateLight(a,b)
#define IDirect3D2_CreateMaterial(p,a,b) (p)->CreateMaterial(a,b)
#define IDirect3D2_CreateViewport(p,a,b) (p)->CreateViewport(a,b)
#define IDirect3D2_FindDevice(p,a,b)     (p)->FindDevice(a,b)
#define IDirect3D2_CreateDevice(p,a,b,c) (p)->CreateDevice(a,b,c)
295
#endif
296 297


298 299 300
/*****************************************************************************
 * IDirect3D3 interface
 */
301
#define INTERFACE IDirect3D3
302 303 304 305 306 307 308 309
DECLARE_INTERFACE_(IDirect3D3,IUnknown)
{
    /*** IUnknown methods ***/
    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
    STDMETHOD_(ULONG,Release)(THIS) PURE;
    /*** IDirect3D3 methods ***/
    STDMETHOD(EnumDevices)(THIS_ LPD3DENUMDEVICESCALLBACK lpEnumDevicesCallback, LPVOID lpUserArg) PURE;
310
    STDMETHOD(CreateLight)(THIS_ struct IDirect3DLight **light, IUnknown *outer) PURE;
311
    STDMETHOD(CreateMaterial)(THIS_ struct IDirect3DMaterial3 **material, IUnknown *outer) PURE;
312
    STDMETHOD(CreateViewport)(THIS_ struct IDirect3DViewport3 **viewport, IUnknown *outer) PURE;
313
    STDMETHOD(FindDevice)(THIS_ D3DFINDDEVICESEARCH *search, D3DFINDDEVICERESULT *result) PURE;
314 315
    STDMETHOD(CreateDevice)(THIS_ REFCLSID rclsid, IDirectDrawSurface4 *surface,
            struct IDirect3DDevice3 **device, IUnknown *outer) PURE;
316 317
    STDMETHOD(CreateVertexBuffer)(THIS_ D3DVERTEXBUFFERDESC *desc, struct IDirect3DVertexBuffer **buffer,
            DWORD flags, IUnknown *outer) PURE;
318
    STDMETHOD(EnumZBufferFormats)(THIS_ REFCLSID riidDevice,LPD3DENUMPIXELFORMATSCALLBACK lpEnumCallback,LPVOID lpContext) PURE;
319
    STDMETHOD(EvictManagedTextures)(THIS) PURE;
320
};
321
#undef INTERFACE
322

323
#if !defined(__cplusplus) || defined(CINTERFACE)
324
/*** IUnknown methods ***/
325 326 327
#define IDirect3D3_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IDirect3D3_AddRef(p)             (p)->lpVtbl->AddRef(p)
#define IDirect3D3_Release(p)            (p)->lpVtbl->Release(p)
328
/*** IDirect3D3 methods ***/
329 330 331 332 333 334 335 336 337
#define IDirect3D3_EnumDevices(p,a,b)            (p)->lpVtbl->EnumDevices(p,a,b)
#define IDirect3D3_CreateLight(p,a,b)            (p)->lpVtbl->CreateLight(p,a,b)
#define IDirect3D3_CreateMaterial(p,a,b)         (p)->lpVtbl->CreateMaterial(p,a,b)
#define IDirect3D3_CreateViewport(p,a,b)         (p)->lpVtbl->CreateViewport(p,a,b)
#define IDirect3D3_FindDevice(p,a,b)             (p)->lpVtbl->FindDevice(p,a,b)
#define IDirect3D3_CreateDevice(p,a,b,c,d)       (p)->lpVtbl->CreateDevice(p,a,b,c,d)
#define IDirect3D3_CreateVertexBuffer(p,a,b,c,d) (p)->lpVtbl->CreateVertexBuffer(p,a,b,c,d)
#define IDirect3D3_EnumZBufferFormats(p,a,b,c)   (p)->lpVtbl->EnumZBufferFormats(p,a,b,c)
#define IDirect3D3_EvictManagedTextures(p)       (p)->lpVtbl->EvictManagedTextures(p)
338 339 340 341 342 343 344 345 346 347 348 349 350 351 352
#else
/*** IUnknown methods ***/
#define IDirect3D3_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
#define IDirect3D3_AddRef(p)             (p)->AddRef()
#define IDirect3D3_Release(p)            (p)->Release()
/*** IDirect3D3 methods ***/
#define IDirect3D3_EnumDevices(p,a,b)            (p)->EnumDevices(a,b)
#define IDirect3D3_CreateLight(p,a,b)            (p)->CreateLight(a,b)
#define IDirect3D3_CreateMaterial(p,a,b)         (p)->CreateMaterial(a,b)
#define IDirect3D3_CreateViewport(p,a,b)         (p)->CreateViewport(a,b)
#define IDirect3D3_FindDevice(p,a,b)             (p)->FindDevice(a,b)
#define IDirect3D3_CreateDevice(p,a,b,c,d)       (p)->CreateDevice(a,b,c,d)
#define IDirect3D3_CreateVertexBuffer(p,a,b,c,d) (p)->CreateVertexBuffer(a,b,c,d)
#define IDirect3D3_EnumZBufferFormats(p,a,b,c)   (p)->EnumZBufferFormats(a,b,c)
#define IDirect3D3_EvictManagedTextures(p)       (p)->EvictManagedTextures()
353
#endif
354

355 356 357
/*****************************************************************************
 * IDirect3D7 interface
 */
358
#define INTERFACE IDirect3D7
359 360 361 362 363 364 365 366
DECLARE_INTERFACE_(IDirect3D7,IUnknown)
{
    /*** IUnknown methods ***/
    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
    STDMETHOD_(ULONG,Release)(THIS) PURE;
    /*** IDirect3D7 methods ***/
    STDMETHOD(EnumDevices)(THIS_ LPD3DENUMDEVICESCALLBACK7 lpEnumDevicesCallback, LPVOID lpUserArg) PURE;
367 368
    STDMETHOD(CreateDevice)(THIS_ REFCLSID rclsid, IDirectDrawSurface7 *surface,
            struct IDirect3DDevice7 **device) PURE;
369 370
    STDMETHOD(CreateVertexBuffer)(THIS_ D3DVERTEXBUFFERDESC *desc,
            struct IDirect3DVertexBuffer7 **buffer, DWORD flags) PURE;
371
    STDMETHOD(EnumZBufferFormats)(THIS_ REFCLSID riidDevice,LPD3DENUMPIXELFORMATSCALLBACK lpEnumCallback,LPVOID lpContext) PURE;
372
    STDMETHOD(EvictManagedTextures)(THIS) PURE;
373
};
374
#undef INTERFACE
375

376
#if !defined(__cplusplus) || defined(CINTERFACE)
377
/*** IUnknown methods ***/
378 379 380
#define IDirect3D7_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IDirect3D7_AddRef(p)             (p)->lpVtbl->AddRef(p)
#define IDirect3D7_Release(p)            (p)->lpVtbl->Release(p)
381
/*** IDirect3D3 methods ***/
382 383 384 385 386
#define IDirect3D7_EnumDevices(p,a,b)            (p)->lpVtbl->EnumDevices(p,a,b)
#define IDirect3D7_CreateDevice(p,a,b,c)         (p)->lpVtbl->CreateDevice(p,a,b,c)
#define IDirect3D7_CreateVertexBuffer(p,a,b,c)   (p)->lpVtbl->CreateVertexBuffer(p,a,b,c)
#define IDirect3D7_EnumZBufferFormats(p,a,b,c)   (p)->lpVtbl->EnumZBufferFormats(p,a,b,c)
#define IDirect3D7_EvictManagedTextures(p)       (p)->lpVtbl->EvictManagedTextures(p)
387 388 389 390 391 392 393 394 395 396 397
#else
/*** IUnknown methods ***/
#define IDirect3D7_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
#define IDirect3D7_AddRef(p)             (p)->AddRef()
#define IDirect3D7_Release(p)            (p)->Release()
/*** IDirect3D3 methods ***/
#define IDirect3D7_EnumDevices(p,a,b)            (p)->EnumDevices(a,b)
#define IDirect3D7_CreateDevice(p,a,b,c)         (p)->CreateDevice(a,b,c)
#define IDirect3D7_CreateVertexBuffer(p,a,b,c)   (p)->CreateVertexBuffer(a,b,c)
#define IDirect3D7_EnumZBufferFormats(p,a,b,c)   (p)->EnumZBufferFormats(a,b,c)
#define IDirect3D7_EvictManagedTextures(p)       (p)->EvictManagedTextures()
398
#endif
399

400

401 402 403
/*****************************************************************************
 * IDirect3DLight interface
 */
404
#define INTERFACE IDirect3DLight
405 406 407 408 409 410 411
DECLARE_INTERFACE_(IDirect3DLight,IUnknown)
{
    /*** IUnknown methods ***/
    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
    STDMETHOD_(ULONG,Release)(THIS) PURE;
    /*** IDirect3DLight methods ***/
Henri Verbeet's avatar
Henri Verbeet committed
412
    STDMETHOD(Initialize)(THIS_ IDirect3D *d3d) PURE;
Henri Verbeet's avatar
Henri Verbeet committed
413 414
    STDMETHOD(SetLight)(THIS_ D3DLIGHT *data) PURE;
    STDMETHOD(GetLight)(THIS_ D3DLIGHT *data) PURE;
415
};
416
#undef INTERFACE
417

418
#if !defined(__cplusplus) || defined(CINTERFACE)
419
/*** IUnknown methods ***/
420 421 422
#define IDirect3DLight_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IDirect3DLight_AddRef(p)             (p)->lpVtbl->AddRef(p)
#define IDirect3DLight_Release(p)            (p)->lpVtbl->Release(p)
423
/*** IDirect3DLight methods ***/
424 425 426
#define IDirect3DLight_Initialize(p,a) (p)->lpVtbl->Initialize(p,a)
#define IDirect3DLight_SetLight(p,a)   (p)->lpVtbl->SetLight(p,a)
#define IDirect3DLight_GetLight(p,a)   (p)->lpVtbl->GetLight(p,a)
427 428 429 430 431 432 433 434 435
#else
/*** IUnknown methods ***/
#define IDirect3DLight_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
#define IDirect3DLight_AddRef(p)             (p)->AddRef()
#define IDirect3DLight_Release(p)            (p)->Release()
/*** IDirect3DLight methods ***/
#define IDirect3DLight_Initialize(p,a) (p)->Initialize(a)
#define IDirect3DLight_SetLight(p,a)   (p)->SetLight(a)
#define IDirect3DLight_GetLight(p,a)   (p)->GetLight(a)
436
#endif
437 438


439 440 441
/*****************************************************************************
 * IDirect3DMaterial interface
 */
442
#define INTERFACE IDirect3DMaterial
443 444 445 446 447 448 449
DECLARE_INTERFACE_(IDirect3DMaterial,IUnknown)
{
    /*** IUnknown methods ***/
    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
    STDMETHOD_(ULONG,Release)(THIS) PURE;
    /*** IDirect3DMaterial methods ***/
Henri Verbeet's avatar
Henri Verbeet committed
450
    STDMETHOD(Initialize)(THIS_ IDirect3D *d3d) PURE;
451 452
    STDMETHOD(SetMaterial)(THIS_ D3DMATERIAL *data) PURE;
    STDMETHOD(GetMaterial)(THIS_ D3DMATERIAL *data) PURE;
453
    STDMETHOD(GetHandle)(THIS_ struct IDirect3DDevice *device, D3DMATERIALHANDLE *handle) PURE;
454
    STDMETHOD(Reserve)(THIS) PURE;
455
    STDMETHOD(Unreserve)(THIS) PURE;
456
};
457
#undef INTERFACE
458

459 460
#if !defined(__cplusplus) || defined(CINTERFACE)
/*** IUnknown methods ***/
461 462 463
#define IDirect3DMaterial_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IDirect3DMaterial_AddRef(p)             (p)->lpVtbl->AddRef(p)
#define IDirect3DMaterial_Release(p)            (p)->lpVtbl->Release(p)
464
/*** IDirect3DMaterial methods ***/
465 466 467 468 469 470
#define IDirect3DMaterial_Initialize(p,a)  (p)->lpVtbl->Initialize(p,a)
#define IDirect3DMaterial_SetMaterial(p,a) (p)->lpVtbl->SetMaterial(p,a)
#define IDirect3DMaterial_GetMaterial(p,a) (p)->lpVtbl->GetMaterial(p,a)
#define IDirect3DMaterial_GetHandle(p,a,b) (p)->lpVtbl->GetHandle(p,a,b)
#define IDirect3DMaterial_Reserve(p)       (p)->lpVtbl->Reserve(p)
#define IDirect3DMaterial_Unreserve(p)     (p)->lpVtbl->Unreserve(p)
471 472 473 474 475 476 477 478 479 480 481 482
#else
/*** IUnknown methods ***/
#define IDirect3DMaterial_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
#define IDirect3DMaterial_AddRef(p)             (p)->AddRef()
#define IDirect3DMaterial_Release(p)            (p)->Release()
/*** IDirect3DMaterial methods ***/
#define IDirect3DMaterial_Initialize(p,a)  (p)->Initialize(a)
#define IDirect3DMaterial_SetMaterial(p,a) (p)->SetMaterial(a)
#define IDirect3DMaterial_GetMaterial(p,a) (p)->GetMaterial(a)
#define IDirect3DMaterial_GetHandle(p,a,b) (p)->GetHandle(a,b)
#define IDirect3DMaterial_Reserve(p)       (p)->Reserve()
#define IDirect3DMaterial_Unreserve(p)     (p)->Unreserve()
483
#endif
484 485


486 487 488
/*****************************************************************************
 * IDirect3DMaterial2 interface
 */
489
#define INTERFACE IDirect3DMaterial2
490 491 492 493 494 495 496
DECLARE_INTERFACE_(IDirect3DMaterial2,IUnknown)
{
    /*** IUnknown methods ***/
    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
    STDMETHOD_(ULONG,Release)(THIS) PURE;
    /*** IDirect3DMaterial2 methods ***/
497 498
    STDMETHOD(SetMaterial)(THIS_ D3DMATERIAL *data) PURE;
    STDMETHOD(GetMaterial)(THIS_ D3DMATERIAL *data) PURE;
499
    STDMETHOD(GetHandle)(THIS_ struct IDirect3DDevice2 *device, D3DMATERIALHANDLE *handle) PURE;
500
};
501
#undef INTERFACE
502

503 504
#if !defined(__cplusplus) || defined(CINTERFACE)
/*** IUnknown methods ***/
505 506 507
#define IDirect3DMaterial2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IDirect3DMaterial2_AddRef(p)             (p)->lpVtbl->AddRef(p)
#define IDirect3DMaterial2_Release(p)            (p)->lpVtbl->Release(p)
508
/*** IDirect3DMaterial2 methods ***/
509 510 511
#define IDirect3DMaterial2_SetMaterial(p,a) (p)->lpVtbl->SetMaterial(p,a)
#define IDirect3DMaterial2_GetMaterial(p,a) (p)->lpVtbl->GetMaterial(p,a)
#define IDirect3DMaterial2_GetHandle(p,a,b) (p)->lpVtbl->GetHandle(p,a,b)
512 513 514 515 516 517 518 519 520
#else
/*** IUnknown methods ***/
#define IDirect3DMaterial2_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
#define IDirect3DMaterial2_AddRef(p)             (p)->AddRef()
#define IDirect3DMaterial2_Release(p)            (p)->Release()
/*** IDirect3DMaterial2 methods ***/
#define IDirect3DMaterial2_SetMaterial(p,a) (p)->SetMaterial(a)
#define IDirect3DMaterial2_GetMaterial(p,a) (p)->GetMaterial(a)
#define IDirect3DMaterial2_GetHandle(p,a,b) (p)->GetHandle(a,b)
521
#endif
522

523

524 525 526
/*****************************************************************************
 * IDirect3DMaterial3 interface
 */
527
#define INTERFACE IDirect3DMaterial3
528 529 530 531 532 533 534
DECLARE_INTERFACE_(IDirect3DMaterial3,IUnknown)
{
    /*** IUnknown methods ***/
    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
    STDMETHOD_(ULONG,Release)(THIS) PURE;
    /*** IDirect3DMaterial3 methods ***/
535 536
    STDMETHOD(SetMaterial)(THIS_ D3DMATERIAL *data) PURE;
    STDMETHOD(GetMaterial)(THIS_ D3DMATERIAL *data) PURE;
537
    STDMETHOD(GetHandle)(THIS_ struct IDirect3DDevice3 *device, D3DMATERIALHANDLE *handle) PURE;
538
};
539
#undef INTERFACE
540

541 542
#if !defined(__cplusplus) || defined(CINTERFACE)
/*** IUnknown methods ***/
543 544 545
#define IDirect3DMaterial3_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IDirect3DMaterial3_AddRef(p)             (p)->lpVtbl->AddRef(p)
#define IDirect3DMaterial3_Release(p)            (p)->lpVtbl->Release(p)
546
/*** IDirect3DMaterial3 methods ***/
547 548 549
#define IDirect3DMaterial3_SetMaterial(p,a) (p)->lpVtbl->SetMaterial(p,a)
#define IDirect3DMaterial3_GetMaterial(p,a) (p)->lpVtbl->GetMaterial(p,a)
#define IDirect3DMaterial3_GetHandle(p,a,b) (p)->lpVtbl->GetHandle(p,a,b)
550 551 552 553 554 555 556 557 558
#else
/*** IUnknown methods ***/
#define IDirect3DMaterial3_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
#define IDirect3DMaterial3_AddRef(p)             (p)->AddRef()
#define IDirect3DMaterial3_Release(p)            (p)->Release()
/*** IDirect3DMaterial3 methods ***/
#define IDirect3DMaterial3_SetMaterial(p,a) (p)->SetMaterial(a)
#define IDirect3DMaterial3_GetMaterial(p,a) (p)->GetMaterial(a)
#define IDirect3DMaterial3_GetHandle(p,a,b) (p)->GetHandle(a,b)
559
#endif
560

561

562 563 564
/*****************************************************************************
 * IDirect3DTexture interface
 */
565
#define INTERFACE IDirect3DTexture
566 567 568 569 570 571 572
DECLARE_INTERFACE_(IDirect3DTexture,IUnknown)
{
    /*** IUnknown methods ***/
    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
    STDMETHOD_(ULONG,Release)(THIS) PURE;
    /*** IDirect3DTexture methods ***/
573
    STDMETHOD(Initialize)(THIS_ struct IDirect3DDevice *device, IDirectDrawSurface *surface) PURE;
574
    STDMETHOD(GetHandle)(THIS_ struct IDirect3DDevice *device, D3DTEXTUREHANDLE *handle) PURE;
575
    STDMETHOD(PaletteChanged)(THIS_ DWORD dwStart, DWORD dwCount) PURE;
576
    STDMETHOD(Load)(THIS_ IDirect3DTexture *texture) PURE;
577
    STDMETHOD(Unload)(THIS) PURE;
578
};
579
#undef INTERFACE
580

581 582
#if !defined(__cplusplus) || defined(CINTERFACE)
/*** IUnknown methods ***/
583 584 585
#define IDirect3DTexture_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IDirect3DTexture_AddRef(p)             (p)->lpVtbl->AddRef(p)
#define IDirect3DTexture_Release(p)            (p)->lpVtbl->Release(p)
586
/*** IDirect3DTexture methods ***/
587 588 589 590 591
#define IDirect3DTexture_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b)
#define IDirect3DTexture_GetHandle(p,a,b) (p)->lpVtbl->GetHandle(p,a,b)
#define IDirect3DTexture_PaletteChanged(p,a,b) (p)->lpVtbl->PaletteChanged(p,a,b)
#define IDirect3DTexture_Load(p,a) (p)->lpVtbl->Load(p,a)
#define IDirect3DTexture_Unload(p) (p)->lpVtbl->Unload(p)
592 593 594 595 596 597
#else
/*** IUnknown methods ***/
#define IDirect3DTexture_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
#define IDirect3DTexture_AddRef(p)             (p)->AddRef()
#define IDirect3DTexture_Release(p)            (p)->Release()
/*** IDirect3DTexture methods ***/
598 599 600 601 602
#define IDirect3DTexture_Initialize(p,a,b) (p)->Initialize(a,b)
#define IDirect3DTexture_GetHandle(p,a,b) (p)->GetHandle(a,b)
#define IDirect3DTexture_PaletteChanged(p,a,b) (p)->PaletteChanged(a,b)
#define IDirect3DTexture_Load(p,a) (p)->Load(a)
#define IDirect3DTexture_Unload(p) (p)->Unload()
603
#endif
604 605


606 607 608
/*****************************************************************************
 * IDirect3DTexture2 interface
 */
609
#define INTERFACE IDirect3DTexture2
610 611 612 613 614 615 616
DECLARE_INTERFACE_(IDirect3DTexture2,IUnknown)
{
    /*** IUnknown methods ***/
    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
    STDMETHOD_(ULONG,Release)(THIS) PURE;
    /*** IDirect3DTexture2 methods ***/
617
    STDMETHOD(GetHandle)(THIS_ struct IDirect3DDevice2 *device, D3DTEXTUREHANDLE *handle) PURE;
618
    STDMETHOD(PaletteChanged)(THIS_ DWORD dwStart, DWORD dwCount) PURE;
619
    STDMETHOD(Load)(THIS_ IDirect3DTexture2 *texture) PURE;
620
};
621
#undef INTERFACE
622

623 624
#if !defined(__cplusplus) || defined(CINTERFACE)
/*** IUnknown methods ***/
625 626 627
#define IDirect3DTexture2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IDirect3DTexture2_AddRef(p)             (p)->lpVtbl->AddRef(p)
#define IDirect3DTexture2_Release(p)            (p)->lpVtbl->Release(p)
628
/*** IDirect3DTexture2 methods ***/
629 630 631
#define IDirect3DTexture2_GetHandle(p,a,b)      (p)->lpVtbl->GetHandle(p,a,b)
#define IDirect3DTexture2_PaletteChanged(p,a,b) (p)->lpVtbl->PaletteChanged(p,a,b)
#define IDirect3DTexture2_Load(p,a)             (p)->lpVtbl->Load(p,a)
632 633 634 635 636 637 638 639 640
#else
/*** IUnknown methods ***/
#define IDirect3DTexture2_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
#define IDirect3DTexture2_AddRef(p)             (p)->AddRef()
#define IDirect3DTexture2_Release(p)            (p)->Release()
/*** IDirect3DTexture2 methods ***/
#define IDirect3DTexture2_GetHandle(p,a,b)      (p)->GetHandle(a,b)
#define IDirect3DTexture2_PaletteChanged(p,a,b) (p)->PaletteChanged(a,b)
#define IDirect3DTexture2_Load(p,a)             (p)->Load(a)
641
#endif
642 643


644 645 646
/*****************************************************************************
 * IDirect3DViewport interface
 */
647
#define INTERFACE IDirect3DViewport
648 649 650 651 652 653 654
DECLARE_INTERFACE_(IDirect3DViewport,IUnknown)
{
    /*** IUnknown methods ***/
    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
    STDMETHOD_(ULONG,Release)(THIS) PURE;
    /*** IDirect3DViewport methods ***/
Henri Verbeet's avatar
Henri Verbeet committed
655
    STDMETHOD(Initialize)(THIS_ IDirect3D *d3d) PURE;
656 657
    STDMETHOD(GetViewport)(THIS_ D3DVIEWPORT *data) PURE;
    STDMETHOD(SetViewport)(THIS_ D3DVIEWPORT *data) PURE;
658
    STDMETHOD(TransformVertices)(THIS_ DWORD vertex_count, D3DTRANSFORMDATA *data, DWORD flags, DWORD *offscreen) PURE;
659
    STDMETHOD(LightElements)(THIS_ DWORD element_count, D3DLIGHTDATA *data) PURE;
660
    STDMETHOD(SetBackground)(THIS_ D3DMATERIALHANDLE hMat) PURE;
661
    STDMETHOD(GetBackground)(THIS_ D3DMATERIALHANDLE *material, BOOL *valid) PURE;
662 663
    STDMETHOD(SetBackgroundDepth)(THIS_ IDirectDrawSurface *surface) PURE;
    STDMETHOD(GetBackgroundDepth)(THIS_ IDirectDrawSurface **surface, BOOL *valid) PURE;
Henri Verbeet's avatar
Henri Verbeet committed
664
    STDMETHOD(Clear)(THIS_ DWORD count, D3DRECT *rects, DWORD flags) PURE;
665 666 667
    STDMETHOD(AddLight)(THIS_ IDirect3DLight *light) PURE;
    STDMETHOD(DeleteLight)(THIS_ IDirect3DLight *light) PURE;
    STDMETHOD(NextLight)(THIS_ IDirect3DLight *ref, IDirect3DLight **light, DWORD flags) PURE;
668
};
669
#undef INTERFACE
670

671 672
#if !defined(__cplusplus) || defined(CINTERFACE)
/*** IUnknown methods ***/
673 674 675
#define IDirect3DViewport_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IDirect3DViewport_AddRef(p)             (p)->lpVtbl->AddRef(p)
#define IDirect3DViewport_Release(p)            (p)->lpVtbl->Release(p)
676
/*** IDirect3DViewport methods ***/
677 678 679 680 681 682 683 684 685 686 687 688 689
#define IDirect3DViewport_Initialize(p,a)              (p)->lpVtbl->Initialize(p,a)
#define IDirect3DViewport_GetViewport(p,a)             (p)->lpVtbl->GetViewport(p,a)
#define IDirect3DViewport_SetViewport(p,a)             (p)->lpVtbl->SetViewport(p,a)
#define IDirect3DViewport_TransformVertices(p,a,b,c,d) (p)->lpVtbl->TransformVertices(p,a,b,c,d)
#define IDirect3DViewport_LightElements(p,a,b)         (p)->lpVtbl->LightElements(p,a,b)
#define IDirect3DViewport_SetBackground(p,a)           (p)->lpVtbl->SetBackground(p,a)
#define IDirect3DViewport_GetBackground(p,a,b)         (p)->lpVtbl->GetBackground(p,a,b)
#define IDirect3DViewport_SetBackgroundDepth(p,a)      (p)->lpVtbl->SetBackgroundDepth(p,a)
#define IDirect3DViewport_GetBackgroundDepth(p,a,b)    (p)->lpVtbl->GetBackgroundDepth(p,a,b)
#define IDirect3DViewport_Clear(p,a,b,c)               (p)->lpVtbl->Clear(p,a,b,c)
#define IDirect3DViewport_AddLight(p,a)                (p)->lpVtbl->AddLight(p,a)
#define IDirect3DViewport_DeleteLight(p,a)             (p)->lpVtbl->DeleteLight(p,a)
#define IDirect3DViewport_NextLight(p,a,b,c)           (p)->lpVtbl->NextLight(p,a,b,c)
690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708
#else
/*** IUnknown methods ***/
#define IDirect3DViewport_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
#define IDirect3DViewport_AddRef(p)             (p)->AddRef()
#define IDirect3DViewport_Release(p)            (p)->Release()
/*** IDirect3DViewport methods ***/
#define IDirect3DViewport_Initialize(p,a)              (p)->Initialize(a)
#define IDirect3DViewport_GetViewport(p,a)             (p)->GetViewport(a)
#define IDirect3DViewport_SetViewport(p,a)             (p)->SetViewport(a)
#define IDirect3DViewport_TransformVertices(p,a,b,c,d) (p)->TransformVertices(a,b,c,d)
#define IDirect3DViewport_LightElements(p,a,b)         (p)->LightElements(a,b)
#define IDirect3DViewport_SetBackground(p,a)           (p)->SetBackground(a)
#define IDirect3DViewport_GetBackground(p,a,b)         (p)->GetBackground(a,b)
#define IDirect3DViewport_SetBackgroundDepth(p,a)      (p)->SetBackgroundDepth(a)
#define IDirect3DViewport_GetBackgroundDepth(p,a,b)    (p)->GetBackgroundDepth(a,b)
#define IDirect3DViewport_Clear(p,a,b,c)               (p)->Clear(a,b,c)
#define IDirect3DViewport_AddLight(p,a)                (p)->AddLight(a)
#define IDirect3DViewport_DeleteLight(p,a)             (p)->DeleteLight(a)
#define IDirect3DViewport_NextLight(p,a,b,c)           (p)->NextLight(a,b,c)
709
#endif
710 711


712 713 714
/*****************************************************************************
 * IDirect3DViewport2 interface
 */
715
#define INTERFACE IDirect3DViewport2
716 717 718 719 720 721 722
DECLARE_INTERFACE_(IDirect3DViewport2,IDirect3DViewport)
{
    /*** IUnknown methods ***/
    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
    STDMETHOD_(ULONG,Release)(THIS) PURE;
    /*** IDirect3DViewport methods ***/
Henri Verbeet's avatar
Henri Verbeet committed
723
    STDMETHOD(Initialize)(THIS_ IDirect3D *d3d) PURE;
724 725
    STDMETHOD(GetViewport)(THIS_ D3DVIEWPORT *data) PURE;
    STDMETHOD(SetViewport)(THIS_ D3DVIEWPORT *data) PURE;
726
    STDMETHOD(TransformVertices)(THIS_ DWORD vertex_count, D3DTRANSFORMDATA *data, DWORD flags, DWORD *offscreen) PURE;
727
    STDMETHOD(LightElements)(THIS_ DWORD element_count, D3DLIGHTDATA *data) PURE;
728
    STDMETHOD(SetBackground)(THIS_ D3DMATERIALHANDLE hMat) PURE;
729
    STDMETHOD(GetBackground)(THIS_ D3DMATERIALHANDLE *material, BOOL *valid) PURE;
730 731
    STDMETHOD(SetBackgroundDepth)(THIS_ IDirectDrawSurface *surface) PURE;
    STDMETHOD(GetBackgroundDepth)(THIS_ IDirectDrawSurface **surface, BOOL *valid) PURE;
Henri Verbeet's avatar
Henri Verbeet committed
732
    STDMETHOD(Clear)(THIS_ DWORD count, D3DRECT *rects, DWORD flags) PURE;
733 734 735
    STDMETHOD(AddLight)(THIS_ IDirect3DLight *light) PURE;
    STDMETHOD(DeleteLight)(THIS_ IDirect3DLight *light) PURE;
    STDMETHOD(NextLight)(THIS_ IDirect3DLight *ref, IDirect3DLight **light, DWORD flags) PURE;
736
    /*** IDirect3DViewport2 methods ***/
737 738
    STDMETHOD(GetViewport2)(THIS_ D3DVIEWPORT2 *data) PURE;
    STDMETHOD(SetViewport2)(THIS_ D3DVIEWPORT2 *data) PURE;
739
};
740
#undef INTERFACE
741

742 743
#if !defined(__cplusplus) || defined(CINTERFACE)
/*** IUnknown methods ***/
744 745 746
#define IDirect3DViewport2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IDirect3DViewport2_AddRef(p)             (p)->lpVtbl->AddRef(p)
#define IDirect3DViewport2_Release(p)            (p)->lpVtbl->Release(p)
747
/*** IDirect3Viewport methods ***/
748 749 750 751 752 753 754 755 756 757 758 759 760
#define IDirect3DViewport2_Initialize(p,a)              (p)->lpVtbl->Initialize(p,a)
#define IDirect3DViewport2_GetViewport(p,a)             (p)->lpVtbl->GetViewport(p,a)
#define IDirect3DViewport2_SetViewport(p,a)             (p)->lpVtbl->SetViewport(p,a)
#define IDirect3DViewport2_TransformVertices(p,a,b,c,d) (p)->lpVtbl->TransformVertices(p,a,b,c,d)
#define IDirect3DViewport2_LightElements(p,a,b)         (p)->lpVtbl->LightElements(p,a,b)
#define IDirect3DViewport2_SetBackground(p,a)           (p)->lpVtbl->SetBackground(p,a)
#define IDirect3DViewport2_GetBackground(p,a,b)         (p)->lpVtbl->GetBackground(p,a,b)
#define IDirect3DViewport2_SetBackgroundDepth(p,a)      (p)->lpVtbl->SetBackgroundDepth(p,a)
#define IDirect3DViewport2_GetBackgroundDepth(p,a,b)    (p)->lpVtbl->GetBackgroundDepth(p,a,b)
#define IDirect3DViewport2_Clear(p,a,b,c)               (p)->lpVtbl->Clear(p,a,b,c)
#define IDirect3DViewport2_AddLight(p,a)                (p)->lpVtbl->AddLight(p,a)
#define IDirect3DViewport2_DeleteLight(p,a)             (p)->lpVtbl->DeleteLight(p,a)
#define IDirect3DViewport2_NextLight(p,a,b,c)           (p)->lpVtbl->NextLight(p,a,b,c)
761
/*** IDirect3DViewport2 methods ***/
762 763
#define IDirect3DViewport2_GetViewport2(p,a) (p)->lpVtbl->GetViewport2(p,a)
#define IDirect3DViewport2_SetViewport2(p,a) (p)->lpVtbl->SetViewport2(p,a)
764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785
#else
/*** IUnknown methods ***/
#define IDirect3DViewport2_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
#define IDirect3DViewport2_AddRef(p)             (p)->AddRef()
#define IDirect3DViewport2_Release(p)            (p)->Release()
/*** IDirect3Viewport methods ***/
#define IDirect3DViewport2_Initialize(p,a)              (p)->Initialize(a)
#define IDirect3DViewport2_GetViewport(p,a)             (p)->GetViewport(a)
#define IDirect3DViewport2_SetViewport(p,a)             (p)->SetViewport(a)
#define IDirect3DViewport2_TransformVertices(p,a,b,c,d) (p)->TransformVertices(a,b,c,d)
#define IDirect3DViewport2_LightElements(p,a,b)         (p)->LightElements(a,b)
#define IDirect3DViewport2_SetBackground(p,a)           (p)->SetBackground(a)
#define IDirect3DViewport2_GetBackground(p,a,b)         (p)->GetBackground(a,b)
#define IDirect3DViewport2_SetBackgroundDepth(p,a)      (p)->SetBackgroundDepth(a)
#define IDirect3DViewport2_GetBackgroundDepth(p,a,b)    (p)->GetBackgroundDepth(a,b)
#define IDirect3DViewport2_Clear(p,a,b,c)               (p)->Clear(a,b,c)
#define IDirect3DViewport2_AddLight(p,a)                (p)->AddLight(a)
#define IDirect3DViewport2_DeleteLight(p,a)             (p)->DeleteLight(a)
#define IDirect3DViewport2_NextLight(p,a,b,c)           (p)->NextLight(a,b,c)
/*** IDirect3DViewport2 methods ***/
#define IDirect3DViewport2_GetViewport2(p,a) (p)->GetViewport2(a)
#define IDirect3DViewport2_SetViewport2(p,a) (p)->SetViewport2(a)
786
#endif
787

788 789 790
/*****************************************************************************
 * IDirect3DViewport3 interface
 */
791
#define INTERFACE IDirect3DViewport3
792 793 794 795 796 797 798
DECLARE_INTERFACE_(IDirect3DViewport3,IDirect3DViewport2)
{
    /*** IUnknown methods ***/
    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
    STDMETHOD_(ULONG,Release)(THIS) PURE;
    /*** IDirect3DViewport methods ***/
Henri Verbeet's avatar
Henri Verbeet committed
799
    STDMETHOD(Initialize)(THIS_ IDirect3D *d3d) PURE;
800 801
    STDMETHOD(GetViewport)(THIS_ D3DVIEWPORT *data) PURE;
    STDMETHOD(SetViewport)(THIS_ D3DVIEWPORT *data) PURE;
802
    STDMETHOD(TransformVertices)(THIS_ DWORD vertex_count, D3DTRANSFORMDATA *data, DWORD flags, DWORD *offscreen) PURE;
803
    STDMETHOD(LightElements)(THIS_ DWORD element_count, D3DLIGHTDATA *data) PURE;
804
    STDMETHOD(SetBackground)(THIS_ D3DMATERIALHANDLE hMat) PURE;
805
    STDMETHOD(GetBackground)(THIS_ D3DMATERIALHANDLE *material, BOOL *valid) PURE;
806 807
    STDMETHOD(SetBackgroundDepth)(THIS_ IDirectDrawSurface *surface) PURE;
    STDMETHOD(GetBackgroundDepth)(THIS_ IDirectDrawSurface **surface, BOOL *valid) PURE;
Henri Verbeet's avatar
Henri Verbeet committed
808
    STDMETHOD(Clear)(THIS_ DWORD count, D3DRECT *rects, DWORD flags) PURE;
809 810 811
    STDMETHOD(AddLight)(THIS_ IDirect3DLight *light) PURE;
    STDMETHOD(DeleteLight)(THIS_ IDirect3DLight *light) PURE;
    STDMETHOD(NextLight)(THIS_ IDirect3DLight *ref, IDirect3DLight **light, DWORD flags) PURE;
812
    /*** IDirect3DViewport2 methods ***/
813 814
    STDMETHOD(GetViewport2)(THIS_ D3DVIEWPORT2 *data) PURE;
    STDMETHOD(SetViewport2)(THIS_ D3DVIEWPORT2 *data) PURE;
815
    /*** IDirect3DViewport3 methods ***/
816 817
    STDMETHOD(SetBackgroundDepth2)(THIS_ IDirectDrawSurface4 *surface) PURE;
    STDMETHOD(GetBackgroundDepth2)(THIS_ IDirectDrawSurface4 **surface, BOOL *valid) PURE;
Henri Verbeet's avatar
Henri Verbeet committed
818
    STDMETHOD(Clear2)(THIS_ DWORD count, D3DRECT *rects, DWORD flags, DWORD color, D3DVALUE z, DWORD stencil) PURE;
819
};
820
#undef INTERFACE
821

822 823
#if !defined(__cplusplus) || defined(CINTERFACE)
/*** IUnknown methods ***/
824 825 826
#define IDirect3DViewport3_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IDirect3DViewport3_AddRef(p)             (p)->lpVtbl->AddRef(p)
#define IDirect3DViewport3_Release(p)            (p)->lpVtbl->Release(p)
827
/*** IDirect3Viewport methods ***/
828 829 830 831 832 833 834 835 836 837 838 839 840
#define IDirect3DViewport3_Initialize(p,a)              (p)->lpVtbl->Initialize(p,a)
#define IDirect3DViewport3_GetViewport(p,a)             (p)->lpVtbl->GetViewport(p,a)
#define IDirect3DViewport3_SetViewport(p,a)             (p)->lpVtbl->SetViewport(p,a)
#define IDirect3DViewport3_TransformVertices(p,a,b,c,d) (p)->lpVtbl->TransformVertices(p,a,b,c,d)
#define IDirect3DViewport3_LightElements(p,a,b)         (p)->lpVtbl->LightElements(p,a,b)
#define IDirect3DViewport3_SetBackground(p,a)           (p)->lpVtbl->SetBackground(p,a)
#define IDirect3DViewport3_GetBackground(p,a,b)         (p)->lpVtbl->GetBackground(p,a,b)
#define IDirect3DViewport3_SetBackgroundDepth(p,a)      (p)->lpVtbl->SetBackgroundDepth(p,a)
#define IDirect3DViewport3_GetBackgroundDepth(p,a,b)    (p)->lpVtbl->GetBackgroundDepth(p,a,b)
#define IDirect3DViewport3_Clear(p,a,b,c)               (p)->lpVtbl->Clear(p,a,b,c)
#define IDirect3DViewport3_AddLight(p,a)                (p)->lpVtbl->AddLight(p,a)
#define IDirect3DViewport3_DeleteLight(p,a)             (p)->lpVtbl->DeleteLight(p,a)
#define IDirect3DViewport3_NextLight(p,a,b,c)           (p)->lpVtbl->NextLight(p,a,b,c)
841
/*** IDirect3DViewport2 methods ***/
842 843
#define IDirect3DViewport3_GetViewport2(p,a) (p)->lpVtbl->GetViewport2(p,a)
#define IDirect3DViewport3_SetViewport2(p,a) (p)->lpVtbl->SetViewport2(p,a)
844
/*** IDirect3DViewport3 methods ***/
845 846 847
#define IDirect3DViewport3_SetBackgroundDepth2(p,a)   (p)->lpVtbl->SetBackgroundDepth2(p,a)
#define IDirect3DViewport3_GetBackgroundDepth2(p,a,b) (p)->lpVtbl->GetBackgroundDepth2(p,a,b)
#define IDirect3DViewport3_Clear2(p,a,b,c,d,e,f)      (p)->lpVtbl->Clear2(p,a,b,c,d,e,f)
848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867
#else
/*** IUnknown methods ***/
#define IDirect3DViewport3_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
#define IDirect3DViewport3_AddRef(p)             (p)->AddRef()
#define IDirect3DViewport3_Release(p)            (p)->Release()
/*** IDirect3Viewport methods ***/
#define IDirect3DViewport3_Initialize(p,a)              (p)->Initialize(a)
#define IDirect3DViewport3_GetViewport(p,a)             (p)->GetViewport(a)
#define IDirect3DViewport3_SetViewport(p,a)             (p)->SetViewport(a)
#define IDirect3DViewport3_TransformVertices(p,a,b,c,d) (p)->TransformVertices(a,b,c,d)
#define IDirect3DViewport3_LightElements(p,a,b)         (p)->LightElements(a,b)
#define IDirect3DViewport3_SetBackground(p,a)           (p)->SetBackground(a)
#define IDirect3DViewport3_GetBackground(p,a,b)         (p)->GetBackground(a,b)
#define IDirect3DViewport3_SetBackgroundDepth(p,a)      (p)->SetBackgroundDepth(a)
#define IDirect3DViewport3_GetBackgroundDepth(p,a,b)    (p)->GetBackgroundDepth(a,b)
#define IDirect3DViewport3_Clear(p,a,b,c)               (p)->Clear(a,b,c)
#define IDirect3DViewport3_AddLight(p,a)                (p)->AddLight(a)
#define IDirect3DViewport3_DeleteLight(p,a)             (p)->DeleteLight(a)
#define IDirect3DViewport3_NextLight(p,a,b,c)           (p)->NextLight(a,b,c)
/*** IDirect3DViewport2 methods ***/
868 869
#define IDirect3DViewport3_GetViewport2(p,a) (p)->GetViewport2(a)
#define IDirect3DViewport3_SetViewport2(p,a) (p)->SetViewport2(a)
870 871 872 873
/*** IDirect3DViewport3 methods ***/
#define IDirect3DViewport3_SetBackgroundDepth2(p,a)   (p)->SetBackgroundDepth2(a)
#define IDirect3DViewport3_GetBackgroundDepth2(p,a,b) (p)->GetBackgroundDepth2(a,b)
#define IDirect3DViewport3_Clear2(p,a,b,c,d,e,f)      (p)->Clear2(a,b,c,d,e,f)
874
#endif
875 876


877

878 879 880
/*****************************************************************************
 * IDirect3DExecuteBuffer interface
 */
881
#define INTERFACE IDirect3DExecuteBuffer
882 883 884 885 886 887 888
DECLARE_INTERFACE_(IDirect3DExecuteBuffer,IUnknown)
{
    /*** IUnknown methods ***/
    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
    STDMETHOD_(ULONG,Release)(THIS) PURE;
    /*** IDirect3DExecuteBuffer methods ***/
889
    STDMETHOD(Initialize)(THIS_ struct IDirect3DDevice *device, D3DEXECUTEBUFFERDESC *desc) PURE;
890
    STDMETHOD(Lock)(THIS_ D3DEXECUTEBUFFERDESC *desc) PURE;
891
    STDMETHOD(Unlock)(THIS) PURE;
892 893
    STDMETHOD(SetExecuteData)(THIS_ D3DEXECUTEDATA *data) PURE;
    STDMETHOD(GetExecuteData)(THIS_ D3DEXECUTEDATA *data) PURE;
894
    STDMETHOD(Validate)(THIS_ LPDWORD lpdwOffset, LPD3DVALIDATECALLBACK lpFunc, LPVOID lpUserArg, DWORD dwReserved) PURE;
895
    STDMETHOD(Optimize)(THIS_ DWORD dwDummy) PURE;
896
};
897
#undef INTERFACE
898

899 900
#if !defined(__cplusplus) || defined(CINTERFACE)
/*** IUnknown methods ***/
901 902 903
#define IDirect3DExecuteBuffer_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IDirect3DExecuteBuffer_AddRef(p)             (p)->lpVtbl->AddRef(p)
#define IDirect3DExecuteBuffer_Release(p)            (p)->lpVtbl->Release(p)
904
/*** IDirect3DExecuteBuffer methods ***/
905 906 907 908 909 910 911
#define IDirect3DExecuteBuffer_Initialize(p,a,b)   (p)->lpVtbl->Initialize(p,a,b)
#define IDirect3DExecuteBuffer_Lock(p,a)           (p)->lpVtbl->Lock(p,a)
#define IDirect3DExecuteBuffer_Unlock(p)           (p)->lpVtbl->Unlock(p)
#define IDirect3DExecuteBuffer_SetExecuteData(p,a) (p)->lpVtbl->SetExecuteData(p,a)
#define IDirect3DExecuteBuffer_GetExecuteData(p,a) (p)->lpVtbl->GetExecuteData(p,a)
#define IDirect3DExecuteBuffer_Validate(p,a,b,c,d) (p)->lpVtbl->Validate(p,a,b,c,d)
#define IDirect3DExecuteBuffer_Optimize(p,a)       (p)->lpVtbl->Optimize(p,a)
912 913 914 915 916 917 918 919 920 921 922 923 924
#else
/*** IUnknown methods ***/
#define IDirect3DExecuteBuffer_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
#define IDirect3DExecuteBuffer_AddRef(p)             (p)->AddRef()
#define IDirect3DExecuteBuffer_Release(p)            (p)->Release()
/*** IDirect3DExecuteBuffer methods ***/
#define IDirect3DExecuteBuffer_Initialize(p,a,b)   (p)->Initialize(a,b)
#define IDirect3DExecuteBuffer_Lock(p,a)           (p)->Lock(a)
#define IDirect3DExecuteBuffer_Unlock(p)           (p)->Unlock()
#define IDirect3DExecuteBuffer_SetExecuteData(p,a) (p)->SetExecuteData(a)
#define IDirect3DExecuteBuffer_GetExecuteData(p,a) (p)->GetExecuteData(a)
#define IDirect3DExecuteBuffer_Validate(p,a,b,c,d) (p)->Validate(a,b,c,d)
#define IDirect3DExecuteBuffer_Optimize(p,a)       (p)->Optimize(a)
925
#endif
926 927


928 929 930
/*****************************************************************************
 * IDirect3DDevice interface
 */
931
#define INTERFACE IDirect3DDevice
932 933 934 935 936 937 938
DECLARE_INTERFACE_(IDirect3DDevice,IUnknown)
{
    /*** IUnknown methods ***/
    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
    STDMETHOD_(ULONG,Release)(THIS) PURE;
    /*** IDirect3DDevice methods ***/
Henri Verbeet's avatar
Henri Verbeet committed
939
    STDMETHOD(Initialize)(THIS_ IDirect3D *d3d, GUID *guid, D3DDEVICEDESC *desc) PURE;
940
    STDMETHOD(GetCaps)(THIS_ D3DDEVICEDESC *hal_desc, D3DDEVICEDESC *hel_desc) PURE;
941
    STDMETHOD(SwapTextureHandles)(THIS_ IDirect3DTexture *tex1, IDirect3DTexture *tex2) PURE;
942 943
    STDMETHOD(CreateExecuteBuffer)(THIS_ D3DEXECUTEBUFFERDESC *desc,
            IDirect3DExecuteBuffer **buffer, IUnknown *outer) PURE;
Henri Verbeet's avatar
Henri Verbeet committed
944
    STDMETHOD(GetStats)(THIS_ D3DSTATS *stats) PURE;
945 946
    STDMETHOD(Execute)(THIS_ IDirect3DExecuteBuffer *buffer, IDirect3DViewport *viewport,
            DWORD flags) PURE;
947 948 949 950
    STDMETHOD(AddViewport)(THIS_ IDirect3DViewport *viewport) PURE;
    STDMETHOD(DeleteViewport)(THIS_ IDirect3DViewport *viewport) PURE;
    STDMETHOD(NextViewport)(THIS_ IDirect3DViewport *ref,
            IDirect3DViewport **viewport, DWORD flags) PURE;
951 952
    STDMETHOD(Pick)(THIS_ IDirect3DExecuteBuffer *buffer, IDirect3DViewport *viewport,
            DWORD flags, D3DRECT *rect) PURE;
953
    STDMETHOD(GetPickRecords)(THIS_ DWORD *count, D3DPICKRECORD *records) PURE;
954
    STDMETHOD(EnumTextureFormats)(THIS_ LPD3DENUMTEXTUREFORMATSCALLBACK lpD3DEnumTextureProc, LPVOID lpArg) PURE;
955
    STDMETHOD(CreateMatrix)(THIS_ D3DMATRIXHANDLE *matrix) PURE;
956 957
    STDMETHOD(SetMatrix)(THIS_ D3DMATRIXHANDLE handle, D3DMATRIX *matrix) PURE;
    STDMETHOD(GetMatrix)(THIS_ D3DMATRIXHANDLE handle, D3DMATRIX *matrix) PURE;
958 959 960
    STDMETHOD(DeleteMatrix)(THIS_ D3DMATRIXHANDLE D3DMatHandle) PURE;
    STDMETHOD(BeginScene)(THIS) PURE;
    STDMETHOD(EndScene)(THIS) PURE;
Henri Verbeet's avatar
Henri Verbeet committed
961
    STDMETHOD(GetDirect3D)(THIS_ IDirect3D **d3d) PURE;
962
};
963
#undef INTERFACE
964

965 966
#if !defined(__cplusplus) || defined(CINTERFACE)
/*** IUnknown methods ***/
967 968 969
#define IDirect3DDevice_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IDirect3DDevice_AddRef(p)             (p)->lpVtbl->AddRef(p)
#define IDirect3DDevice_Release(p)            (p)->lpVtbl->Release(p)
970
/*** IDirect3DDevice methods ***/
971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989
#define IDirect3DDevice_Initialize(p,a,b,c)          (p)->lpVtbl->Initialize(p,a,b,c)
#define IDirect3DDevice_GetCaps(p,a,b)               (p)->lpVtbl->GetCaps(p,a,b)
#define IDirect3DDevice_SwapTextureHandles(p,a,b)    (p)->lpVtbl->SwapTextureHandles(p,a,b)
#define IDirect3DDevice_CreateExecuteBuffer(p,a,b,c) (p)->lpVtbl->CreateExecuteBuffer(p,a,b,c)
#define IDirect3DDevice_GetStats(p,a)                (p)->lpVtbl->GetStats(p,a)
#define IDirect3DDevice_Execute(p,a,b,c)             (p)->lpVtbl->Execute(p,a,b,c)
#define IDirect3DDevice_AddViewport(p,a)             (p)->lpVtbl->AddViewport(p,a)
#define IDirect3DDevice_DeleteViewport(p,a)          (p)->lpVtbl->DeleteViewport(p,a)
#define IDirect3DDevice_NextViewport(p,a,b,c)        (p)->lpVtbl->NextViewport(p,a,b,c)
#define IDirect3DDevice_Pick(p,a,b,c,d)              (p)->lpVtbl->Pick(p,a,b,c,d)
#define IDirect3DDevice_GetPickRecords(p,a,b)        (p)->lpVtbl->GetPickRecords(p,a,b)
#define IDirect3DDevice_EnumTextureFormats(p,a,b)    (p)->lpVtbl->EnumTextureFormats(p,a,b)
#define IDirect3DDevice_CreateMatrix(p,a)            (p)->lpVtbl->CreateMatrix(p,a)
#define IDirect3DDevice_SetMatrix(p,a,b)             (p)->lpVtbl->SetMatrix(p,a,b)
#define IDirect3DDevice_GetMatrix(p,a,b)             (p)->lpVtbl->GetMatrix(p,a,b)
#define IDirect3DDevice_DeleteMatrix(p,a)            (p)->lpVtbl->DeleteMatrix(p,a)
#define IDirect3DDevice_BeginScene(p)                (p)->lpVtbl->BeginScene(p)
#define IDirect3DDevice_EndScene(p)                  (p)->lpVtbl->EndScene(p)
#define IDirect3DDevice_GetDirect3D(p,a)             (p)->lpVtbl->GetDirect3D(p,a)
990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014
#else
/*** IUnknown methods ***/
#define IDirect3DDevice_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
#define IDirect3DDevice_AddRef(p)             (p)->AddRef()
#define IDirect3DDevice_Release(p)            (p)->Release()
/*** IDirect3DDevice methods ***/
#define IDirect3DDevice_Initialize(p,a,b,c)          (p)->Initialize(a,b,c)
#define IDirect3DDevice_GetCaps(p,a,b)               (p)->GetCaps(a,b)
#define IDirect3DDevice_SwapTextureHandles(p,a,b)    (p)->SwapTextureHandles(a,b)
#define IDirect3DDevice_CreateExecuteBuffer(p,a,b,c) (p)->CreateExecuteBuffer(a,b,c)
#define IDirect3DDevice_GetStats(p,a)                (p)->GetStats(a)
#define IDirect3DDevice_Execute(p,a,b,c)             (p)->Execute(a,b,c)
#define IDirect3DDevice_AddViewport(p,a)             (p)->AddViewport(a)
#define IDirect3DDevice_DeleteViewport(p,a)          (p)->DeleteViewport(a)
#define IDirect3DDevice_NextViewport(p,a,b,c)        (p)->NextViewport(a,b,c)
#define IDirect3DDevice_Pick(p,a,b,c,d)              (p)->Pick(a,b,c,d)
#define IDirect3DDevice_GetPickRecords(p,a,b)        (p)->GetPickRecords(a,b)
#define IDirect3DDevice_EnumTextureFormats(p,a,b)    (p)->EnumTextureFormats(a,b)
#define IDirect3DDevice_CreateMatrix(p,a)            (p)->CreateMatrix(a)
#define IDirect3DDevice_SetMatrix(p,a,b)             (p)->SetMatrix(a,b)
#define IDirect3DDevice_GetMatrix(p,a,b)             (p)->GetMatrix(a,b)
#define IDirect3DDevice_DeleteMatrix(p,a)            (p)->DeleteMatrix(a)
#define IDirect3DDevice_BeginScene(p)                (p)->BeginScene()
#define IDirect3DDevice_EndScene(p)                  (p)->EndScene()
#define IDirect3DDevice_GetDirect3D(p,a)             (p)->GetDirect3D(a)
1015
#endif
Alexandre Julliard's avatar
Alexandre Julliard committed
1016 1017


1018 1019 1020
/*****************************************************************************
 * IDirect3DDevice2 interface
 */
1021
#define INTERFACE IDirect3DDevice2
1022 1023 1024 1025 1026 1027 1028
DECLARE_INTERFACE_(IDirect3DDevice2,IUnknown)
{
    /*** IUnknown methods ***/
    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
    STDMETHOD_(ULONG,Release)(THIS) PURE;
    /*** IDirect3DDevice2 methods ***/
1029
    STDMETHOD(GetCaps)(THIS_ D3DDEVICEDESC *hal_desc, D3DDEVICEDESC *hel_desc) PURE;
1030
    STDMETHOD(SwapTextureHandles)(THIS_ IDirect3DTexture2 *tex1, IDirect3DTexture2 *tex2) PURE;
Henri Verbeet's avatar
Henri Verbeet committed
1031
    STDMETHOD(GetStats)(THIS_ D3DSTATS *stats) PURE;
1032 1033 1034 1035
    STDMETHOD(AddViewport)(THIS_ IDirect3DViewport2 *viewport) PURE;
    STDMETHOD(DeleteViewport)(THIS_ IDirect3DViewport2 *viewport) PURE;
    STDMETHOD(NextViewport)(THIS_ IDirect3DViewport2 *ref,
            IDirect3DViewport2 **viewport, DWORD flags) PURE;
1036 1037 1038
    STDMETHOD(EnumTextureFormats)(THIS_ LPD3DENUMTEXTUREFORMATSCALLBACK lpD3DEnumTextureProc, LPVOID lpArg) PURE;
    STDMETHOD(BeginScene)(THIS) PURE;
    STDMETHOD(EndScene)(THIS) PURE;
1039
    STDMETHOD(GetDirect3D)(THIS_ IDirect3D2 **d3d) PURE;
1040
    /*** DrawPrimitive API ***/
1041 1042
    STDMETHOD(SetCurrentViewport)(THIS_ IDirect3DViewport2 *viewport) PURE;
    STDMETHOD(GetCurrentViewport)(THIS_ IDirect3DViewport2 **viewport) PURE;
1043 1044
    STDMETHOD(SetRenderTarget)(THIS_ IDirectDrawSurface *surface, DWORD flags) PURE;
    STDMETHOD(GetRenderTarget)(THIS_ IDirectDrawSurface **surface) PURE;
1045 1046 1047 1048 1049 1050 1051 1052 1053
    STDMETHOD(Begin)(THIS_ D3DPRIMITIVETYPE d3dpt,D3DVERTEXTYPE dwVertexTypeDesc,DWORD dwFlags) PURE;
    STDMETHOD(BeginIndexed)(THIS_ D3DPRIMITIVETYPE d3dptPrimitiveType, D3DVERTEXTYPE d3dvtVertexType, LPVOID lpvVertices, DWORD dwNumVertices, DWORD dwFlags) PURE;
    STDMETHOD(Vertex)(THIS_ LPVOID lpVertexType) PURE;
    STDMETHOD(Index)(THIS_ WORD wVertexIndex) PURE;
    STDMETHOD(End)(THIS_ DWORD dwFlags) PURE;
    STDMETHOD(GetRenderState)(THIS_ D3DRENDERSTATETYPE dwRenderStateType, LPDWORD lpdwRenderState) PURE;
    STDMETHOD(SetRenderState)(THIS_ D3DRENDERSTATETYPE dwRenderStateType, DWORD dwRenderState) PURE;
    STDMETHOD(GetLightState)(THIS_ D3DLIGHTSTATETYPE dwLightStateType, LPDWORD lpdwLightState) PURE;
    STDMETHOD(SetLightState)(THIS_ D3DLIGHTSTATETYPE dwLightStateType, DWORD dwLightState) PURE;
1054 1055 1056
    STDMETHOD(SetTransform)(THIS_ D3DTRANSFORMSTATETYPE state, D3DMATRIX *matrix) PURE;
    STDMETHOD(GetTransform)(THIS_ D3DTRANSFORMSTATETYPE state, D3DMATRIX *matrix) PURE;
    STDMETHOD(MultiplyTransform)(THIS_ D3DTRANSFORMSTATETYPE state, D3DMATRIX *matrix) PURE;
1057 1058
    STDMETHOD(DrawPrimitive)(THIS_ D3DPRIMITIVETYPE d3dptPrimitiveType, D3DVERTEXTYPE d3dvtVertexType, LPVOID lpvVertices, DWORD dwVertexCount, DWORD dwFlags) PURE;
    STDMETHOD(DrawIndexedPrimitive)(THIS_ D3DPRIMITIVETYPE d3dptPrimitiveType, D3DVERTEXTYPE d3dvtVertexType, LPVOID lpvVertices, DWORD dwVertexCount, LPWORD dwIndices, DWORD dwIndexCount, DWORD dwFlags) PURE;
1059 1060
    STDMETHOD(SetClipStatus)(THIS_ D3DCLIPSTATUS *clip_status) PURE;
    STDMETHOD(GetClipStatus)(THIS_ D3DCLIPSTATUS *clip_status) PURE;
1061
};
1062
#undef INTERFACE
1063

1064 1065
#if !defined(__cplusplus) || defined(CINTERFACE)
/*** IUnknown methods ***/
1066 1067 1068
#define IDirect3DDevice2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IDirect3DDevice2_AddRef(p)             (p)->lpVtbl->AddRef(p)
#define IDirect3DDevice2_Release(p)            (p)->lpVtbl->Release(p)
1069
/*** IDirect3DDevice2 methods ***/
1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099
#define IDirect3DDevice2_GetCaps(p,a,b)                        (p)->lpVtbl->GetCaps(p,a,b)
#define IDirect3DDevice2_SwapTextureHandles(p,a,b)             (p)->lpVtbl->SwapTextureHandles(p,a,b)
#define IDirect3DDevice2_GetStats(p,a)                         (p)->lpVtbl->GetStats(p,a)
#define IDirect3DDevice2_AddViewport(p,a)                      (p)->lpVtbl->AddViewport(p,a)
#define IDirect3DDevice2_DeleteViewport(p,a)                   (p)->lpVtbl->DeleteViewport(p,a)
#define IDirect3DDevice2_NextViewport(p,a,b,c)                 (p)->lpVtbl->NextViewport(p,a,b,c)
#define IDirect3DDevice2_EnumTextureFormats(p,a,b)             (p)->lpVtbl->EnumTextureFormats(p,a,b)
#define IDirect3DDevice2_BeginScene(p)                         (p)->lpVtbl->BeginScene(p)
#define IDirect3DDevice2_EndScene(p)                           (p)->lpVtbl->EndScene(p)
#define IDirect3DDevice2_GetDirect3D(p,a)                      (p)->lpVtbl->GetDirect3D(p,a)
#define IDirect3DDevice2_SetCurrentViewport(p,a)               (p)->lpVtbl->SetCurrentViewport(p,a)
#define IDirect3DDevice2_GetCurrentViewport(p,a)               (p)->lpVtbl->GetCurrentViewport(p,a)
#define IDirect3DDevice2_SetRenderTarget(p,a,b)                (p)->lpVtbl->SetRenderTarget(p,a,b)
#define IDirect3DDevice2_GetRenderTarget(p,a)                  (p)->lpVtbl->GetRenderTarget(p,a)
#define IDirect3DDevice2_Begin(p,a,b,c)                        (p)->lpVtbl->Begin(p,a,b,c)
#define IDirect3DDevice2_BeginIndexed(p,a,b,c,d,e)             (p)->lpVtbl->BeginIndexed(p,a,b,c,d,e)
#define IDirect3DDevice2_Vertex(p,a)                           (p)->lpVtbl->Vertex(p,a)
#define IDirect3DDevice2_Index(p,a)                            (p)->lpVtbl->Index(p,a)
#define IDirect3DDevice2_End(p,a)                              (p)->lpVtbl->End(p,a)
#define IDirect3DDevice2_GetRenderState(p,a,b)                 (p)->lpVtbl->GetRenderState(p,a,b)
#define IDirect3DDevice2_SetRenderState(p,a,b)                 (p)->lpVtbl->SetRenderState(p,a,b)
#define IDirect3DDevice2_GetLightState(p,a,b)                  (p)->lpVtbl->GetLightState(p,a,b)
#define IDirect3DDevice2_SetLightState(p,a,b)                  (p)->lpVtbl->SetLightState(p,a,b)
#define IDirect3DDevice2_SetTransform(p,a,b)                   (p)->lpVtbl->SetTransform(p,a,b)
#define IDirect3DDevice2_GetTransform(p,a,b)                   (p)->lpVtbl->GetTransform(p,a,b)
#define IDirect3DDevice2_MultiplyTransform(p,a,b)              (p)->lpVtbl->MultiplyTransform(p,a,b)
#define IDirect3DDevice2_DrawPrimitive(p,a,b,c,d,e)            (p)->lpVtbl->DrawPrimitive(p,a,b,c,d,e)
#define IDirect3DDevice2_DrawIndexedPrimitive(p,a,b,c,d,e,f,g) (p)->lpVtbl->DrawIndexedPrimitive(p,a,b,c,d,e,f,g)
#define IDirect3DDevice2_SetClipStatus(p,a)                    (p)->lpVtbl->SetClipStatus(p,a)
#define IDirect3DDevice2_GetClipStatus(p,a)                    (p)->lpVtbl->GetClipStatus(p,a)
1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135
#else
/*** IUnknown methods ***/
#define IDirect3DDevice2_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
#define IDirect3DDevice2_AddRef(p)             (p)->AddRef()
#define IDirect3DDevice2_Release(p)            (p)->Release()
/*** IDirect3DDevice2 methods ***/
#define IDirect3DDevice2_GetCaps(p,a,b)                        (p)->GetCaps(a,b)
#define IDirect3DDevice2_SwapTextureHandles(p,a,b)             (p)->SwapTextureHandles(a,b)
#define IDirect3DDevice2_GetStats(p,a)                         (p)->GetStats(a)
#define IDirect3DDevice2_AddViewport(p,a)                      (p)->AddViewport(a)
#define IDirect3DDevice2_DeleteViewport(p,a)                   (p)->DeleteViewport(a)
#define IDirect3DDevice2_NextViewport(p,a,b,c)                 (p)->NextViewport(a,b,c)
#define IDirect3DDevice2_EnumTextureFormats(p,a,b)             (p)->EnumTextureFormats(a,b)
#define IDirect3DDevice2_BeginScene(p)                         (p)->BeginScene()
#define IDirect3DDevice2_EndScene(p)                           (p)->EndScene()
#define IDirect3DDevice2_GetDirect3D(p,a)                      (p)->GetDirect3D(a)
#define IDirect3DDevice2_SetCurrentViewport(p,a)               (p)->SetCurrentViewport(a)
#define IDirect3DDevice2_GetCurrentViewport(p,a)               (p)->GetCurrentViewport(a)
#define IDirect3DDevice2_SetRenderTarget(p,a,b)                (p)->SetRenderTarget(a,b)
#define IDirect3DDevice2_GetRenderTarget(p,a)                  (p)->GetRenderTarget(a)
#define IDirect3DDevice2_Begin(p,a,b,c)                        (p)->Begin(a,b,c)
#define IDirect3DDevice2_BeginIndexed(p,a,b,c,d,e)             (p)->BeginIndexed(a,b,c,d,e)
#define IDirect3DDevice2_Vertex(p,a)                           (p)->Vertex(a)
#define IDirect3DDevice2_Index(p,a)                            (p)->Index(a)
#define IDirect3DDevice2_End(p,a)                              (p)->End(a)
#define IDirect3DDevice2_GetRenderState(p,a,b)                 (p)->GetRenderState(a,b)
#define IDirect3DDevice2_SetRenderState(p,a,b)                 (p)->SetRenderState(a,b)
#define IDirect3DDevice2_GetLightState(p,a,b)                  (p)->GetLightState(a,b)
#define IDirect3DDevice2_SetLightState(p,a,b)                  (p)->SetLightState(a,b)
#define IDirect3DDevice2_SetTransform(p,a,b)                   (p)->SetTransform(a,b)
#define IDirect3DDevice2_GetTransform(p,a,b)                   (p)->GetTransform(a,b)
#define IDirect3DDevice2_MultiplyTransform(p,a,b)              (p)->MultiplyTransform(a,b)
#define IDirect3DDevice2_DrawPrimitive(p,a,b,c,d,e)            (p)->DrawPrimitive(a,b,c,d,e)
#define IDirect3DDevice2_DrawIndexedPrimitive(p,a,b,c,d,e,f,g) (p)->DrawIndexedPrimitive(a,b,c,d,e,f,g)
#define IDirect3DDevice2_SetClipStatus(p,a)                    (p)->SetClipStatus(a)
#define IDirect3DDevice2_GetClipStatus(p,a)                    (p)->GetClipStatus(a)
1136
#endif
1137

1138 1139 1140
/*****************************************************************************
 * IDirect3DDevice3 interface
 */
1141
#define INTERFACE IDirect3DDevice3
1142 1143 1144 1145 1146 1147 1148
DECLARE_INTERFACE_(IDirect3DDevice3,IUnknown)
{
    /*** IUnknown methods ***/
    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
    STDMETHOD_(ULONG,Release)(THIS) PURE;
    /*** IDirect3DDevice3 methods ***/
1149
    STDMETHOD(GetCaps)(THIS_ D3DDEVICEDESC *hal_desc, D3DDEVICEDESC *hel_desc) PURE;
Henri Verbeet's avatar
Henri Verbeet committed
1150
    STDMETHOD(GetStats)(THIS_ D3DSTATS *stats) PURE;
1151 1152 1153 1154
    STDMETHOD(AddViewport)(THIS_ IDirect3DViewport3 *viewport) PURE;
    STDMETHOD(DeleteViewport)(THIS_ IDirect3DViewport3 *viewport) PURE;
    STDMETHOD(NextViewport)(THIS_ IDirect3DViewport3 *ref,
            IDirect3DViewport3 **viewport, DWORD flags) PURE;
1155 1156 1157
    STDMETHOD(EnumTextureFormats)(THIS_ LPD3DENUMPIXELFORMATSCALLBACK lpD3DEnumPixelProc, LPVOID lpArg) PURE;
    STDMETHOD(BeginScene)(THIS) PURE;
    STDMETHOD(EndScene)(THIS) PURE;
1158
    STDMETHOD(GetDirect3D)(THIS_ IDirect3D3 **d3d) PURE;
1159
    /*** DrawPrimitive API ***/
1160 1161
    STDMETHOD(SetCurrentViewport)(THIS_ IDirect3DViewport3 *viewport) PURE;
    STDMETHOD(GetCurrentViewport)(THIS_ IDirect3DViewport3 **viewport) PURE;
1162 1163
    STDMETHOD(SetRenderTarget)(THIS_ IDirectDrawSurface4 *surface, DWORD flags) PURE;
    STDMETHOD(GetRenderTarget)(THIS_ IDirectDrawSurface4 **surface) PURE;
1164 1165 1166 1167 1168 1169 1170 1171 1172
    STDMETHOD(Begin)(THIS_ D3DPRIMITIVETYPE d3dptPrimitiveType,DWORD dwVertexTypeDesc, DWORD dwFlags) PURE;
    STDMETHOD(BeginIndexed)(THIS_ D3DPRIMITIVETYPE d3dptPrimitiveType,DWORD d3dvtVertexType, LPVOID lpvVertices, DWORD dwNumVertices, DWORD dwFlags) PURE;
    STDMETHOD(Vertex)(THIS_ LPVOID lpVertexType) PURE;
    STDMETHOD(Index)(THIS_ WORD wVertexIndex) PURE;
    STDMETHOD(End)(THIS_ DWORD dwFlags) PURE;
    STDMETHOD(GetRenderState)(THIS_ D3DRENDERSTATETYPE dwRenderStateType, LPDWORD lpdwRenderState) PURE;
    STDMETHOD(SetRenderState)(THIS_ D3DRENDERSTATETYPE dwRenderStateType, DWORD dwRenderState) PURE;
    STDMETHOD(GetLightState)(THIS_ D3DLIGHTSTATETYPE dwLightStateType, LPDWORD lpdwLightState) PURE;
    STDMETHOD(SetLightState)(THIS_ D3DLIGHTSTATETYPE dwLightStateType, DWORD dwLightState) PURE;
1173 1174 1175
    STDMETHOD(SetTransform)(THIS_ D3DTRANSFORMSTATETYPE state, D3DMATRIX *matrix) PURE;
    STDMETHOD(GetTransform)(THIS_ D3DTRANSFORMSTATETYPE state, D3DMATRIX *matrix) PURE;
    STDMETHOD(MultiplyTransform)(THIS_ D3DTRANSFORMSTATETYPE state, D3DMATRIX *matrix) PURE;
1176 1177
    STDMETHOD(DrawPrimitive)(THIS_ D3DPRIMITIVETYPE d3dptPrimitiveType, DWORD d3dvtVertexType, LPVOID lpvVertices, DWORD dwVertexCount, DWORD dwFlags) PURE;
    STDMETHOD(DrawIndexedPrimitive)(THIS_ D3DPRIMITIVETYPE d3dptPrimitiveType, DWORD d3dvtVertexType, LPVOID lpvVertices, DWORD dwVertexCount, LPWORD dwIndices, DWORD dwIndexCount, DWORD dwFlags) PURE;
1178 1179
    STDMETHOD(SetClipStatus)(THIS_ D3DCLIPSTATUS *clip_status) PURE;
    STDMETHOD(GetClipStatus)(THIS_ D3DCLIPSTATUS *clip_status) PURE;
1180 1181 1182 1183 1184
    STDMETHOD(DrawPrimitiveStrided)(THIS_ D3DPRIMITIVETYPE primitive_type, DWORD fvf,
            D3DDRAWPRIMITIVESTRIDEDDATA *strided_data, DWORD vertex_count, DWORD flags) PURE;
    STDMETHOD(DrawIndexedPrimitiveStrided)(THIS_ D3DPRIMITIVETYPE primitive_type, DWORD fvf,
            D3DDRAWPRIMITIVESTRIDEDDATA *strided_data, DWORD vertex_count, WORD *indices, DWORD index_count,
            DWORD flags) PURE;
1185 1186 1187 1188
    STDMETHOD(DrawPrimitiveVB)(THIS_ D3DPRIMITIVETYPE primitive_type, struct IDirect3DVertexBuffer *vb,
            DWORD start_vertex, DWORD vertex_count, DWORD flags) PURE;
    STDMETHOD(DrawIndexedPrimitiveVB)(THIS_ D3DPRIMITIVETYPE primitive_type, struct IDirect3DVertexBuffer *vb,
            WORD *indices, DWORD index_count, DWORD flags) PURE;
Henri Verbeet's avatar
Henri Verbeet committed
1189 1190
    STDMETHOD(ComputeSphereVisibility)(THIS_ D3DVECTOR *centers, D3DVALUE *radii, DWORD sphere_count,
            DWORD flags, DWORD *ret) PURE;
1191 1192
    STDMETHOD(GetTexture)(THIS_ DWORD stage, IDirect3DTexture2 **texture) PURE;
    STDMETHOD(SetTexture)(THIS_ DWORD stage, IDirect3DTexture2 *texture) PURE;
1193 1194
    STDMETHOD(GetTextureStageState)(THIS_ DWORD dwStage,D3DTEXTURESTAGESTATETYPE d3dTexStageStateType,LPDWORD lpdwState) PURE;
    STDMETHOD(SetTextureStageState)(THIS_ DWORD dwStage,D3DTEXTURESTAGESTATETYPE d3dTexStageStateType,DWORD dwState) PURE;
1195
    STDMETHOD(ValidateDevice)(THIS_ LPDWORD lpdwPasses) PURE;
1196
};
1197
#undef INTERFACE
1198

1199 1200
#if !defined(__cplusplus) || defined(CINTERFACE)
/*** IUnknown methods ***/
1201 1202 1203
#define IDirect3DDevice3_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IDirect3DDevice3_AddRef(p)             (p)->lpVtbl->AddRef(p)
#define IDirect3DDevice3_Release(p)            (p)->lpVtbl->Release(p)
1204
/*** IDirect3DDevice3 methods ***/
1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243
#define IDirect3DDevice3_GetCaps(p,a,b)                        (p)->lpVtbl->GetCaps(p,a,b)
#define IDirect3DDevice3_GetStats(p,a)                         (p)->lpVtbl->GetStats(p,a)
#define IDirect3DDevice3_AddViewport(p,a)                      (p)->lpVtbl->AddViewport(p,a)
#define IDirect3DDevice3_DeleteViewport(p,a)                   (p)->lpVtbl->DeleteViewport(p,a)
#define IDirect3DDevice3_NextViewport(p,a,b,c)                 (p)->lpVtbl->NextViewport(p,a,b,c)
#define IDirect3DDevice3_EnumTextureFormats(p,a,b)             (p)->lpVtbl->EnumTextureFormats(p,a,b)
#define IDirect3DDevice3_BeginScene(p)                         (p)->lpVtbl->BeginScene(p)
#define IDirect3DDevice3_EndScene(p)                           (p)->lpVtbl->EndScene(p)
#define IDirect3DDevice3_GetDirect3D(p,a)                      (p)->lpVtbl->GetDirect3D(p,a)
#define IDirect3DDevice3_SetCurrentViewport(p,a)               (p)->lpVtbl->SetCurrentViewport(p,a)
#define IDirect3DDevice3_GetCurrentViewport(p,a)               (p)->lpVtbl->GetCurrentViewport(p,a)
#define IDirect3DDevice3_SetRenderTarget(p,a,b)                (p)->lpVtbl->SetRenderTarget(p,a,b)
#define IDirect3DDevice3_GetRenderTarget(p,a)                  (p)->lpVtbl->GetRenderTarget(p,a)
#define IDirect3DDevice3_Begin(p,a,b,c)                        (p)->lpVtbl->Begin(p,a,b,c)
#define IDirect3DDevice3_BeginIndexed(p,a,b,c,d,e)             (p)->lpVtbl->BeginIndexed(p,a,b,c,d,e)
#define IDirect3DDevice3_Vertex(p,a)                           (p)->lpVtbl->Vertex(p,a)
#define IDirect3DDevice3_Index(p,a)                            (p)->lpVtbl->Index(p,a)
#define IDirect3DDevice3_End(p,a)                              (p)->lpVtbl->End(p,a)
#define IDirect3DDevice3_GetRenderState(p,a,b)                 (p)->lpVtbl->GetRenderState(p,a,b)
#define IDirect3DDevice3_SetRenderState(p,a,b)                 (p)->lpVtbl->SetRenderState(p,a,b)
#define IDirect3DDevice3_GetLightState(p,a,b)                  (p)->lpVtbl->GetLightState(p,a,b)
#define IDirect3DDevice3_SetLightState(p,a,b)                  (p)->lpVtbl->SetLightState(p,a,b)
#define IDirect3DDevice3_SetTransform(p,a,b)                   (p)->lpVtbl->SetTransform(p,a,b)
#define IDirect3DDevice3_GetTransform(p,a,b)                   (p)->lpVtbl->GetTransform(p,a,b)
#define IDirect3DDevice3_MultiplyTransform(p,a,b)              (p)->lpVtbl->MultiplyTransform(p,a,b)
#define IDirect3DDevice3_DrawPrimitive(p,a,b,c,d,e)            (p)->lpVtbl->DrawPrimitive(p,a,b,c,d,e)
#define IDirect3DDevice3_DrawIndexedPrimitive(p,a,b,c,d,e,f,g) (p)->lpVtbl->DrawIndexedPrimitive(p,a,b,c,d,e,f,g)
#define IDirect3DDevice3_SetClipStatus(p,a)                    (p)->lpVtbl->SetClipStatus(p,a)
#define IDirect3DDevice3_GetClipStatus(p,a)                    (p)->lpVtbl->GetClipStatus(p,a)
#define IDirect3DDevice3_DrawPrimitiveStrided(p,a,b,c,d,e)     (p)->lpVtbl->DrawPrimitiveStrided(p,a,b,c,d,e)
#define IDirect3DDevice3_DrawIndexedPrimitiveStrided(p,a,b,c,d,e,f,g) (p)->lpVtbl->DrawIndexedPrimitiveStrided(p,a,b,c,d,e,f,g)
#define IDirect3DDevice3_DrawPrimitiveVB(p,a,b,c,d,e)          (p)->lpVtbl->DrawPrimitiveVB(p,a,b,c,d,e)
#define IDirect3DDevice3_DrawIndexedPrimitiveVB(p,a,b,c,d,e)   (p)->lpVtbl->DrawIndexedPrimitiveVB(p,a,b,c,d,e)
#define IDirect3DDevice3_ComputeSphereVisibility(p,a,b,c,d,e)  (p)->lpVtbl->ComputeSphereVisibility(p,a,b,c,d,e)
#define IDirect3DDevice3_GetTexture(p,a,b)                     (p)->lpVtbl->GetTexture(p,a,b)
#define IDirect3DDevice3_SetTexture(p,a,b)                     (p)->lpVtbl->SetTexture(p,a,b)
#define IDirect3DDevice3_GetTextureStageState(p,a,b,c)         (p)->lpVtbl->GetTextureStageState(p,a,b,c)
#define IDirect3DDevice3_SetTextureStageState(p,a,b,c)         (p)->lpVtbl->SetTextureStageState(p,a,b,c)
#define IDirect3DDevice3_ValidateDevice(p,a)                   (p)->lpVtbl->ValidateDevice(p,a)
1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288
#else
/*** IUnknown methods ***/
#define IDirect3DDevice3_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
#define IDirect3DDevice3_AddRef(p)             (p)->AddRef()
#define IDirect3DDevice3_Release(p)            (p)->Release()
/*** IDirect3DDevice3 methods ***/
#define IDirect3DDevice3_GetCaps(p,a,b)                        (p)->GetCaps(a,b)
#define IDirect3DDevice3_GetStats(p,a)                         (p)->GetStats(a)
#define IDirect3DDevice3_AddViewport(p,a)                      (p)->AddViewport(a)
#define IDirect3DDevice3_DeleteViewport(p,a)                   (p)->DeleteViewport(a)
#define IDirect3DDevice3_NextViewport(p,a,b,c)                 (p)->NextViewport(a,b,c)
#define IDirect3DDevice3_EnumTextureFormats(p,a,b)             (p)->EnumTextureFormats(a,b)
#define IDirect3DDevice3_BeginScene(p)                         (p)->BeginScene()
#define IDirect3DDevice3_EndScene(p)                           (p)->EndScene()
#define IDirect3DDevice3_GetDirect3D(p,a)                      (p)->GetDirect3D(a)
#define IDirect3DDevice3_SetCurrentViewport(p,a)               (p)->SetCurrentViewport(a)
#define IDirect3DDevice3_GetCurrentViewport(p,a)               (p)->GetCurrentViewport(a)
#define IDirect3DDevice3_SetRenderTarget(p,a,b)                (p)->SetRenderTarget(a,b)
#define IDirect3DDevice3_GetRenderTarget(p,a)                  (p)->GetRenderTarget(a)
#define IDirect3DDevice3_Begin(p,a,b,c)                        (p)->Begin(a,b,c)
#define IDirect3DDevice3_BeginIndexed(p,a,b,c,d,e)             (p)->BeginIndexed(a,b,c,d,e)
#define IDirect3DDevice3_Vertex(p,a)                           (p)->Vertex(a)
#define IDirect3DDevice3_Index(p,a)                            (p)->Index(a)
#define IDirect3DDevice3_End(p,a)                              (p)->End(a)
#define IDirect3DDevice3_GetRenderState(p,a,b)                 (p)->GetRenderState(a,b)
#define IDirect3DDevice3_SetRenderState(p,a,b)                 (p)->SetRenderState(a,b)
#define IDirect3DDevice3_GetLightState(p,a,b)                  (p)->GetLightState(a,b)
#define IDirect3DDevice3_SetLightState(p,a,b)                  (p)->SetLightState(a,b)
#define IDirect3DDevice3_SetTransform(p,a,b)                   (p)->SetTransform(a,b)
#define IDirect3DDevice3_GetTransform(p,a,b)                   (p)->GetTransform(a,b)
#define IDirect3DDevice3_MultiplyTransform(p,a,b)              (p)->MultiplyTransform(a,b)
#define IDirect3DDevice3_DrawPrimitive(p,a,b,c,d,e)            (p)->DrawPrimitive(a,b,c,d,e)
#define IDirect3DDevice3_DrawIndexedPrimitive(p,a,b,c,d,e,f,g) (p)->DrawIndexedPrimitive(a,b,c,d,e,f,g)
#define IDirect3DDevice3_SetClipStatus(p,a)                    (p)->SetClipStatus(a)
#define IDirect3DDevice3_GetClipStatus(p,a)                    (p)->GetClipStatus(a)
#define IDirect3DDevice3_DrawPrimitiveStrided(p,a,b,c,d,e)     (p)->DrawPrimitiveStrided(a,b,c,d,e)
#define IDirect3DDevice3_DrawIndexedPrimitiveStrided(p,a,b,c,d,e,f,g) (p)->DrawIndexedPrimitiveStrided(a,b,c,d,e,f,g)
#define IDirect3DDevice3_DrawPrimitiveVB(p,a,b,c,d,e)          (p)->DrawPrimitiveVB(a,b,c,d,e)
#define IDirect3DDevice3_DrawIndexedPrimitiveVB(p,a,b,c,d,e)   (p)->DrawIndexedPrimitiveVB(a,b,c,d,e)
#define IDirect3DDevice3_ComputeSphereVisibility(p,a,b,c,d,e)  (p)->ComputeSphereVisibility(a,b,c,d,e)
#define IDirect3DDevice3_GetTexture(p,a,b)                     (p)->GetTexture(a,b)
#define IDirect3DDevice3_SetTexture(p,a,b)                     (p)->SetTexture(a,b)
#define IDirect3DDevice3_GetTextureStageState(p,a,b,c)         (p)->GetTextureStageState(a,b,c)
#define IDirect3DDevice3_SetTextureStageState(p,a,b,c)         (p)->SetTextureStageState(a,b,c)
#define IDirect3DDevice3_ValidateDevice(p,a)                   (p)->ValidateDevice(a)
1289
#endif
1290

1291 1292 1293
/*****************************************************************************
 * IDirect3DDevice7 interface
 */
1294
#define INTERFACE IDirect3DDevice7
1295 1296 1297 1298 1299 1300 1301
DECLARE_INTERFACE_(IDirect3DDevice7,IUnknown)
{
    /*** IUnknown methods ***/
    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
    STDMETHOD_(ULONG,Release)(THIS) PURE;
    /*** IDirect3DDevice7 methods ***/
1302
    STDMETHOD(GetCaps)(THIS_ D3DDEVICEDESC7 *desc) PURE;
1303 1304 1305
    STDMETHOD(EnumTextureFormats)(THIS_ LPD3DENUMPIXELFORMATSCALLBACK lpD3DEnumPixelProc, LPVOID lpArg) PURE;
    STDMETHOD(BeginScene)(THIS) PURE;
    STDMETHOD(EndScene)(THIS) PURE;
1306
    STDMETHOD(GetDirect3D)(THIS_ IDirect3D7 **d3d) PURE;
1307 1308
    STDMETHOD(SetRenderTarget)(THIS_ IDirectDrawSurface7 *surface, DWORD flags) PURE;
    STDMETHOD(GetRenderTarget)(THIS_ IDirectDrawSurface7 **surface) PURE;
Henri Verbeet's avatar
Henri Verbeet committed
1309
    STDMETHOD(Clear)(THIS_ DWORD count, D3DRECT *rects, DWORD flags, D3DCOLOR color, D3DVALUE z, DWORD stencil) PURE;
1310 1311
    STDMETHOD(SetTransform)(THIS_ D3DTRANSFORMSTATETYPE state, D3DMATRIX *matrix) PURE;
    STDMETHOD(GetTransform)(THIS_ D3DTRANSFORMSTATETYPE state, D3DMATRIX *matrix) PURE;
1312
    STDMETHOD(SetViewport)(THIS_ D3DVIEWPORT7 *data) PURE;
1313
    STDMETHOD(MultiplyTransform)(THIS_ D3DTRANSFORMSTATETYPE state, D3DMATRIX *matrix) PURE;
1314
    STDMETHOD(GetViewport)(THIS_ D3DVIEWPORT7 *data) PURE;
1315 1316
    STDMETHOD(SetMaterial)(THIS_ D3DMATERIAL7 *data) PURE;
    STDMETHOD(GetMaterial)(THIS_ D3DMATERIAL7 *data) PURE;
1317 1318
    STDMETHOD(SetLight)(THIS_ DWORD idx, D3DLIGHT7 *data) PURE;
    STDMETHOD(GetLight)(THIS_ DWORD idx, D3DLIGHT7 *data) PURE;
1319 1320 1321 1322
    STDMETHOD(SetRenderState)(THIS_ D3DRENDERSTATETYPE dwRenderStateType, DWORD dwRenderState) PURE;
    STDMETHOD(GetRenderState)(THIS_ D3DRENDERSTATETYPE dwRenderStateType, LPDWORD lpdwRenderState) PURE;
    STDMETHOD(BeginStateBlock)(THIS) PURE;
    STDMETHOD(EndStateBlock)(THIS_ LPDWORD lpdwBlockHandle) PURE;
1323
    STDMETHOD(PreLoad)(THIS_ IDirectDrawSurface7 *surface) PURE;
1324 1325
    STDMETHOD(DrawPrimitive)(THIS_ D3DPRIMITIVETYPE d3dptPrimitiveType, DWORD d3dvtVertexType, LPVOID lpvVertices, DWORD dwVertexCount, DWORD dwFlags) PURE;
    STDMETHOD(DrawIndexedPrimitive)(THIS_ D3DPRIMITIVETYPE d3dptPrimitiveType, DWORD d3dvtVertexType, LPVOID lpvVertices, DWORD dwVertexCount, LPWORD dwIndices, DWORD dwIndexCount, DWORD dwFlags) PURE;
1326 1327
    STDMETHOD(SetClipStatus)(THIS_ D3DCLIPSTATUS *clip_status) PURE;
    STDMETHOD(GetClipStatus)(THIS_ D3DCLIPSTATUS *clip_status) PURE;
1328 1329 1330 1331 1332
    STDMETHOD(DrawPrimitiveStrided)(THIS_ D3DPRIMITIVETYPE primitive_type, DWORD fvf,
            D3DDRAWPRIMITIVESTRIDEDDATA *strided_data, DWORD vertex_count, DWORD flags) PURE;
    STDMETHOD(DrawIndexedPrimitiveStrided)(THIS_ D3DPRIMITIVETYPE primitive_type, DWORD fvf,
            D3DDRAWPRIMITIVESTRIDEDDATA *strided_data, DWORD vertex_count, WORD *indices, DWORD index_count,
            DWORD flags) PURE;
1333 1334 1335 1336
    STDMETHOD(DrawPrimitiveVB)(THIS_ D3DPRIMITIVETYPE primitive_type, struct IDirect3DVertexBuffer7 *vb,
            DWORD start_vertex, DWORD vertex_count, DWORD flags) PURE;
    STDMETHOD(DrawIndexedPrimitiveVB)(THIS_ D3DPRIMITIVETYPE primitive_type, struct IDirect3DVertexBuffer7 *vb,
            DWORD start_vertex, DWORD vertex_count, WORD *indices, DWORD index_count, DWORD flags) PURE;
Henri Verbeet's avatar
Henri Verbeet committed
1337 1338
    STDMETHOD(ComputeSphereVisibility)(THIS_ D3DVECTOR *centers, D3DVALUE *radii, DWORD sphere_count,
            DWORD flags, DWORD *ret) PURE;
1339 1340
    STDMETHOD(GetTexture)(THIS_ DWORD stage, IDirectDrawSurface7 **surface) PURE;
    STDMETHOD(SetTexture)(THIS_ DWORD stage, IDirectDrawSurface7 *surface) PURE;
1341 1342 1343 1344 1345 1346 1347
    STDMETHOD(GetTextureStageState)(THIS_ DWORD dwStage,D3DTEXTURESTAGESTATETYPE d3dTexStageStateType,LPDWORD lpdwState) PURE;
    STDMETHOD(SetTextureStageState)(THIS_ DWORD dwStage,D3DTEXTURESTAGESTATETYPE d3dTexStageStateType,DWORD dwState) PURE;
    STDMETHOD(ValidateDevice)(THIS_ LPDWORD lpdwPasses) PURE;
    STDMETHOD(ApplyStateBlock)(THIS_ DWORD dwBlockHandle) PURE;
    STDMETHOD(CaptureStateBlock)(THIS_ DWORD dwBlockHandle) PURE;
    STDMETHOD(DeleteStateBlock)(THIS_ DWORD dwBlockHandle) PURE;
    STDMETHOD(CreateStateBlock)(THIS_ D3DSTATEBLOCKTYPE d3dsbType,LPDWORD lpdwBlockHandle) PURE;
1348 1349
    STDMETHOD(Load)(THIS_ IDirectDrawSurface7 *dst_surface, POINT *dst_point,
            IDirectDrawSurface7 *src_surface, RECT *src_rect, DWORD flags) PURE;
1350 1351 1352 1353
    STDMETHOD(LightEnable)(THIS_ DWORD dwLightIndex,BOOL bEnable) PURE;
    STDMETHOD(GetLightEnable)(THIS_ DWORD dwLightIndex,BOOL *pbEnable) PURE;
    STDMETHOD(SetClipPlane)(THIS_ DWORD dwIndex,D3DVALUE *pPlaneEquation) PURE;
    STDMETHOD(GetClipPlane)(THIS_ DWORD dwIndex,D3DVALUE *pPlaneEquation) PURE;
1354
    STDMETHOD(GetInfo)(THIS_ DWORD dwDevInfoID,LPVOID pDevInfoStruct,DWORD dwSize) PURE;
1355
};
1356
#undef INTERFACE
1357

1358 1359
#if !defined(__cplusplus) || defined(CINTERFACE)
/*** IUnknown methods ***/
1360 1361 1362
#define IDirect3DDevice7_QueryInterface(p,a,b)                        (p)->lpVtbl->QueryInterface(p,a,b)
#define IDirect3DDevice7_AddRef(p)                                    (p)->lpVtbl->AddRef(p)
#define IDirect3DDevice7_Release(p)                                   (p)->lpVtbl->Release(p)
1363
/*** IDirect3DDevice7 methods ***/
1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409
#define IDirect3DDevice7_GetCaps(p,a)                                 (p)->lpVtbl->GetCaps(p,a)
#define IDirect3DDevice7_EnumTextureFormats(p,a,b)                    (p)->lpVtbl->EnumTextureFormats(p,a,b)
#define IDirect3DDevice7_BeginScene(p)                                (p)->lpVtbl->BeginScene(p)
#define IDirect3DDevice7_EndScene(p)                                  (p)->lpVtbl->EndScene(p)
#define IDirect3DDevice7_GetDirect3D(p,a)                             (p)->lpVtbl->GetDirect3D(p,a)
#define IDirect3DDevice7_SetRenderTarget(p,a,b)                       (p)->lpVtbl->SetRenderTarget(p,a,b)
#define IDirect3DDevice7_GetRenderTarget(p,a)                         (p)->lpVtbl->GetRenderTarget(p,a)
#define IDirect3DDevice7_Clear(p,a,b,c,d,e,f)                         (p)->lpVtbl->Clear(p,a,b,c,d,e,f)
#define IDirect3DDevice7_SetTransform(p,a,b)                          (p)->lpVtbl->SetTransform(p,a,b)
#define IDirect3DDevice7_GetTransform(p,a,b)                          (p)->lpVtbl->GetTransform(p,a,b)
#define IDirect3DDevice7_SetViewport(p,a)                             (p)->lpVtbl->SetViewport(p,a)
#define IDirect3DDevice7_MultiplyTransform(p,a,b)                     (p)->lpVtbl->MultiplyTransform(p,a,b)
#define IDirect3DDevice7_GetViewport(p,a)                             (p)->lpVtbl->GetViewport(p,a)
#define IDirect3DDevice7_SetMaterial(p,a)                             (p)->lpVtbl->SetMaterial(p,a)
#define IDirect3DDevice7_GetMaterial(p,a)                             (p)->lpVtbl->GetMaterial(p,a)
#define IDirect3DDevice7_SetLight(p,a,b)                              (p)->lpVtbl->SetLight(p,a,b)
#define IDirect3DDevice7_GetLight(p,a,b)                              (p)->lpVtbl->GetLight(p,a,b)
#define IDirect3DDevice7_SetRenderState(p,a,b)                        (p)->lpVtbl->SetRenderState(p,a,b)
#define IDirect3DDevice7_GetRenderState(p,a,b)                        (p)->lpVtbl->GetRenderState(p,a,b)
#define IDirect3DDevice7_BeginStateBlock(p)                           (p)->lpVtbl->BeginStateBlock(p)
#define IDirect3DDevice7_EndStateBlock(p,a)                           (p)->lpVtbl->EndStateBlock(p,a)
#define IDirect3DDevice7_PreLoad(p,a)                                 (p)->lpVtbl->PreLoad(p,a)
#define IDirect3DDevice7_DrawPrimitive(p,a,b,c,d,e)                   (p)->lpVtbl->DrawPrimitive(p,a,b,c,d,e)
#define IDirect3DDevice7_DrawIndexedPrimitive(p,a,b,c,d,e,f,g)        (p)->lpVtbl->DrawIndexedPrimitive(p,a,b,c,d,e,f,g)
#define IDirect3DDevice7_SetClipStatus(p,a)                           (p)->lpVtbl->SetClipStatus(p,a)
#define IDirect3DDevice7_GetClipStatus(p,a)                           (p)->lpVtbl->GetClipStatus(p,a)
#define IDirect3DDevice7_DrawPrimitiveStrided(p,a,b,c,d,e)            (p)->lpVtbl->DrawPrimitiveStrided(p,a,b,c,d,e)
#define IDirect3DDevice7_DrawIndexedPrimitiveStrided(p,a,b,c,d,e,f,g) (p)->lpVtbl->DrawIndexedPrimitiveStrided(p,a,b,c,d,e,f,g)
#define IDirect3DDevice7_DrawPrimitiveVB(p,a,b,c,d,e)                 (p)->lpVtbl->DrawPrimitiveVB(p,a,b,c,d,e)
#define IDirect3DDevice7_DrawIndexedPrimitiveVB(p,a,b,c,d,e,f,g)      (p)->lpVtbl->DrawIndexedPrimitiveVB(p,a,b,c,d,e,f,g)
#define IDirect3DDevice7_ComputeSphereVisibility(p,a,b,c,d,e)         (p)->lpVtbl->ComputeSphereVisibility(p,a,b,c,d,e)
#define IDirect3DDevice7_GetTexture(p,a,b)                            (p)->lpVtbl->GetTexture(p,a,b)
#define IDirect3DDevice7_SetTexture(p,a,b)                            (p)->lpVtbl->SetTexture(p,a,b)
#define IDirect3DDevice7_GetTextureStageState(p,a,b,c)                (p)->lpVtbl->GetTextureStageState(p,a,b,c)
#define IDirect3DDevice7_SetTextureStageState(p,a,b,c)                (p)->lpVtbl->SetTextureStageState(p,a,b,c)
#define IDirect3DDevice7_ValidateDevice(p,a)                          (p)->lpVtbl->ValidateDevice(p,a)
#define IDirect3DDevice7_ApplyStateBlock(p,a)                         (p)->lpVtbl->ApplyStateBlock(p,a)
#define IDirect3DDevice7_CaptureStateBlock(p,a)                       (p)->lpVtbl->CaptureStateBlock(p,a)
#define IDirect3DDevice7_DeleteStateBlock(p,a)                        (p)->lpVtbl->DeleteStateBlock(p,a)
#define IDirect3DDevice7_CreateStateBlock(p,a,b)                      (p)->lpVtbl->CreateStateBlock(p,a,b)
#define IDirect3DDevice7_Load(p,a,b,c,d,e)                            (p)->lpVtbl->Load(p,a,b,c,d,e)
#define IDirect3DDevice7_LightEnable(p,a,b)                           (p)->lpVtbl->LightEnable(p,a,b)
#define IDirect3DDevice7_GetLightEnable(p,a,b)                        (p)->lpVtbl->GetLightEnable(p,a,b)
#define IDirect3DDevice7_SetClipPlane(p,a,b)                          (p)->lpVtbl->SetClipPlane(p,a,b)
#define IDirect3DDevice7_GetClipPlane(p,a,b)                          (p)->lpVtbl->GetClipPlane(p,a,b)
#define IDirect3DDevice7_GetInfo(p,a,b,c)                             (p)->lpVtbl->GetInfo(p,a,b,c)
1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461
#else
/*** IUnknown methods ***/
#define IDirect3DDevice7_QueryInterface(p,a,b)                        (p)->QueryInterface(a,b)
#define IDirect3DDevice7_AddRef(p)                                    (p)->AddRef()
#define IDirect3DDevice7_Release(p)                                   (p)->Release()
/*** IDirect3DDevice7 methods ***/
#define IDirect3DDevice7_GetCaps(p,a)                                 (p)->GetCaps(a)
#define IDirect3DDevice7_EnumTextureFormats(p,a,b)                    (p)->EnumTextureFormats(a,b)
#define IDirect3DDevice7_BeginScene(p)                                (p)->BeginScene()
#define IDirect3DDevice7_EndScene(p)                                  (p)->EndScene()
#define IDirect3DDevice7_GetDirect3D(p,a)                             (p)->GetDirect3D(a)
#define IDirect3DDevice7_SetRenderTarget(p,a,b)                       (p)->SetRenderTarget(a,b)
#define IDirect3DDevice7_GetRenderTarget(p,a)                         (p)->GetRenderTarget(a)
#define IDirect3DDevice7_Clear(p,a,b,c,d,e,f)                         (p)->Clear(a,b,c,d,e,f)
#define IDirect3DDevice7_SetTransform(p,a,b)                          (p)->SetTransform(a,b)
#define IDirect3DDevice7_GetTransform(p,a,b)                          (p)->GetTransform(a,b)
#define IDirect3DDevice7_SetViewport(p,a)                             (p)->SetViewport(a)
#define IDirect3DDevice7_MultiplyTransform(p,a,b)                     (p)->MultiplyTransform(a,b)
#define IDirect3DDevice7_GetViewport(p,a)                             (p)->GetViewport(a)
#define IDirect3DDevice7_SetMaterial(p,a)                             (p)->SetMaterial(a)
#define IDirect3DDevice7_GetMaterial(p,a)                             (p)->GetMaterial(a)
#define IDirect3DDevice7_SetLight(p,a,b)                              (p)->SetLight(a,b)
#define IDirect3DDevice7_GetLight(p,a,b)                              (p)->GetLight(a,b)
#define IDirect3DDevice7_SetRenderState(p,a,b)                        (p)->SetRenderState(a,b)
#define IDirect3DDevice7_GetRenderState(p,a,b)                        (p)->GetRenderState(a,b)
#define IDirect3DDevice7_BeginStateBlock(p)                           (p)->BeginStateBlock()
#define IDirect3DDevice7_EndStateBlock(p,a)                           (p)->EndStateBlock(a)
#define IDirect3DDevice7_PreLoad(p,a)                                 (p)->PreLoad(a)
#define IDirect3DDevice7_DrawPrimitive(p,a,b,c,d,e)                   (p)->DrawPrimitive(a,b,c,d,e)
#define IDirect3DDevice7_DrawIndexedPrimitive(p,a,b,c,d,e,f,g)        (p)->DrawIndexedPrimitive(a,b,c,d,e,f,g)
#define IDirect3DDevice7_SetClipStatus(p,a)                           (p)->SetClipStatus(a)
#define IDirect3DDevice7_GetClipStatus(p,a)                           (p)->GetClipStatus(a)
#define IDirect3DDevice7_DrawPrimitiveStrided(p,a,b,c,d,e)            (p)->DrawPrimitiveStrided(a,b,c,d,e)
#define IDirect3DDevice7_DrawIndexedPrimitiveStrided(p,a,b,c,d,e,f,g) (p)->DrawIndexedPrimitiveStrided(a,b,c,d,e,f,g)
#define IDirect3DDevice7_DrawPrimitiveVB(p,a,b,c,d,e)                 (p)->DrawPrimitiveVB(a,b,c,d,e)
#define IDirect3DDevice7_DrawIndexedPrimitiveVB(p,a,b,c,d,e,f,g)      (p)->DrawIndexedPrimitiveVB(a,b,c,d,e,f,g)
#define IDirect3DDevice7_ComputeSphereVisibility(p,a,b,c,d,e)         (p)->ComputeSphereVisibility(a,b,c,d,e)
#define IDirect3DDevice7_GetTexture(p,a,b)                            (p)->GetTexture(a,b)
#define IDirect3DDevice7_SetTexture(p,a,b)                            (p)->SetTexture(a,b)
#define IDirect3DDevice7_GetTextureStageState(p,a,b,c)                (p)->GetTextureStageState(a,b,c)
#define IDirect3DDevice7_SetTextureStageState(p,a,b,c)                (p)->SetTextureStageState(a,b,c)
#define IDirect3DDevice7_ValidateDevice(p,a)                          (p)->ValidateDevice(a)
#define IDirect3DDevice7_ApplyStateBlock(p,a)                         (p)->ApplyStateBlock(a)
#define IDirect3DDevice7_CaptureStateBlock(p,a)                       (p)->CaptureStateBlock(a)
#define IDirect3DDevice7_DeleteStateBlock(p,a)                        (p)->DeleteStateBlock(a)
#define IDirect3DDevice7_CreateStateBlock(p,a,b)                      (p)->CreateStateBlock(a,b)
#define IDirect3DDevice7_Load(p,a,b,c,d,e)                            (p)->Load(a,b,c,d,e)
#define IDirect3DDevice7_LightEnable(p,a,b)                           (p)->LightEnable(a,b)
#define IDirect3DDevice7_GetLightEnable(p,a,b)                        (p)->GetLightEnable(a,b)
#define IDirect3DDevice7_SetClipPlane(p,a,b)                          (p)->SetClipPlane(a,b)
#define IDirect3DDevice7_GetClipPlane(p,a,b)                          (p)->GetClipPlane(a,b)
#define IDirect3DDevice7_GetInfo(p,a,b,c)                             (p)->GetInfo(a,b,c)
1462
#endif
1463 1464


1465 1466 1467 1468

/*****************************************************************************
 * IDirect3DVertexBuffer interface
 */
1469
#define INTERFACE IDirect3DVertexBuffer
1470 1471 1472 1473 1474 1475 1476 1477 1478
DECLARE_INTERFACE_(IDirect3DVertexBuffer,IUnknown)
{
    /*** IUnknown methods ***/
    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
    STDMETHOD_(ULONG,Release)(THIS) PURE;
    /*** IDirect3DVertexBuffer methods ***/
    STDMETHOD(Lock)(THIS_ DWORD dwFlags,LPVOID *lplpData,LPDWORD lpdwSize) PURE;
    STDMETHOD(Unlock)(THIS) PURE;
1479 1480 1481
    STDMETHOD(ProcessVertices)(THIS_ DWORD vertex_op, DWORD dst_idx, DWORD count,
            IDirect3DVertexBuffer *src_buffer, DWORD src_idx,
            IDirect3DDevice3 *device, DWORD flags) PURE;
1482
    STDMETHOD(GetVertexBufferDesc)(THIS_ D3DVERTEXBUFFERDESC *desc) PURE;
1483
    STDMETHOD(Optimize)(THIS_ IDirect3DDevice3 *device, DWORD flags) PURE;
1484
};
1485
#undef INTERFACE
1486

1487 1488
#if !defined(__cplusplus) || defined(CINTERFACE)
/*** IUnknown methods ***/
1489 1490 1491
#define IDirect3DVertexBuffer_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IDirect3DVertexBuffer_AddRef(p)             (p)->lpVtbl->AddRef(p)
#define IDirect3DVertexBuffer_Release(p)            (p)->lpVtbl->Release(p)
1492
/*** IDirect3DVertexBuffer methods ***/
1493 1494 1495 1496 1497
#define IDirect3DVertexBuffer_Lock(p,a,b,c)                    (p)->lpVtbl->Lock(p,a,b,c)
#define IDirect3DVertexBuffer_Unlock(p)                        (p)->lpVtbl->Unlock(p)
#define IDirect3DVertexBuffer_ProcessVertices(p,a,b,c,d,e,f,g) (p)->lpVtbl->ProcessVertices(p,a,b,c,d,e,f,g)
#define IDirect3DVertexBuffer_GetVertexBufferDesc(p,a)         (p)->lpVtbl->GetVertexBufferDesc(p,a)
#define IDirect3DVertexBuffer_Optimize(p,a,b)                  (p)->lpVtbl->Optimize(p,a,b)
1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508
#else
/*** IUnknown methods ***/
#define IDirect3DVertexBuffer_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
#define IDirect3DVertexBuffer_AddRef(p)             (p)->AddRef()
#define IDirect3DVertexBuffer_Release(p)            (p)->Release()
/*** IDirect3DVertexBuffer methods ***/
#define IDirect3DVertexBuffer_Lock(p,a,b,c)                    (p)->Lock(a,b,c)
#define IDirect3DVertexBuffer_Unlock(p)                        (p)->Unlock()
#define IDirect3DVertexBuffer_ProcessVertices(p,a,b,c,d,e,f,g) (p)->ProcessVertices(a,b,c,d,e,f,g)
#define IDirect3DVertexBuffer_GetVertexBufferDesc(p,a)         (p)->GetVertexBufferDesc(a)
#define IDirect3DVertexBuffer_Optimize(p,a,b)                  (p)->Optimize(a,b)
1509
#endif
1510

1511 1512 1513
/*****************************************************************************
 * IDirect3DVertexBuffer7 interface
 */
1514
#define INTERFACE IDirect3DVertexBuffer7
1515 1516 1517 1518 1519 1520 1521 1522 1523
DECLARE_INTERFACE_(IDirect3DVertexBuffer7,IUnknown)
{
    /*** IUnknown methods ***/
    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
    STDMETHOD_(ULONG,Release)(THIS) PURE;
    /*** IDirect3DVertexBuffer7 methods ***/
    STDMETHOD(Lock)(THIS_ DWORD dwFlags,LPVOID *lplpData,LPDWORD lpdwSize) PURE;
    STDMETHOD(Unlock)(THIS) PURE;
1524 1525 1526
    STDMETHOD(ProcessVertices)(THIS_ DWORD vertex_op, DWORD dst_idx, DWORD count,
            IDirect3DVertexBuffer7 *src_buffer, DWORD src_idx,
            IDirect3DDevice7 *device, DWORD flags) PURE;
1527
    STDMETHOD(GetVertexBufferDesc)(THIS_ D3DVERTEXBUFFERDESC *desc) PURE;
1528 1529 1530
    STDMETHOD(Optimize)(THIS_ IDirect3DDevice7 *device, DWORD flags) PURE;
    STDMETHOD(ProcessVerticesStrided)(THIS_ DWORD vertex_op, DWORD dst_idx, DWORD count,
            D3DDRAWPRIMITIVESTRIDEDDATA *data, DWORD fvf, IDirect3DDevice7 *device, DWORD flags) PURE;
1531
};
1532
#undef INTERFACE
1533

1534
#if !defined(__cplusplus) || defined(CINTERFACE)
1535
/*** IUnknown methods ***/
1536 1537 1538
#define IDirect3DVertexBuffer7_QueryInterface(p,a,b)                   (p)->lpVtbl->QueryInterface(p,a,b)
#define IDirect3DVertexBuffer7_AddRef(p)                               (p)->lpVtbl->AddRef(p)
#define IDirect3DVertexBuffer7_Release(p)                              (p)->lpVtbl->Release(p)
1539
/*** IDirect3DVertexBuffer7 methods ***/
1540 1541 1542 1543 1544 1545
#define IDirect3DVertexBuffer7_Lock(p,a,b,c)                           (p)->lpVtbl->Lock(p,a,b,c)
#define IDirect3DVertexBuffer7_Unlock(p)                               (p)->lpVtbl->Unlock(p)
#define IDirect3DVertexBuffer7_ProcessVertices(p,a,b,c,d,e,f,g)        (p)->lpVtbl->ProcessVertices(p,a,b,c,d,e,f,g)
#define IDirect3DVertexBuffer7_GetVertexBufferDesc(p,a)                (p)->lpVtbl->GetVertexBufferDesc(p,a)
#define IDirect3DVertexBuffer7_Optimize(p,a,b)                         (p)->lpVtbl->Optimize(p,a,b)
#define IDirect3DVertexBuffer7_ProcessVerticesStrided(p,a,b,c,d,e,f,g) (p)->lpVtbl->ProcessVerticesStrided(p,a,b,c,d,e,f,g)
1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557
#else
/*** IUnknown methods ***/
#define IDirect3DVertexBuffer7_QueryInterface(p,a,b)                   (p)->QueryInterface(a,b)
#define IDirect3DVertexBuffer7_AddRef(p)                               (p)->AddRef()
#define IDirect3DVertexBuffer7_Release(p)                              (p)->Release()
/*** IDirect3DVertexBuffer7 methods ***/
#define IDirect3DVertexBuffer7_Lock(p,a,b,c)                           (p)->Lock(a,b,c)
#define IDirect3DVertexBuffer7_Unlock(p)                               (p)->Unlock()
#define IDirect3DVertexBuffer7_ProcessVertices(p,a,b,c,d,e,f,g)        (p)->ProcessVertices(a,b,c,d,e,f,g)
#define IDirect3DVertexBuffer7_GetVertexBufferDesc(p,a)                (p)->GetVertexBufferDesc(a)
#define IDirect3DVertexBuffer7_Optimize(p,a,b)                         (p)->Optimize(a,b)
#define IDirect3DVertexBuffer7_ProcessVerticesStrided(p,a,b,c,d,e,f,g) (p)->ProcessVerticesStrided(a,b,c,d,e,f,g)
1558
#endif
1559

1560
#endif /* __WINE_D3D_H */