qcap: Add optional dependency on libv4l.
[wine] / include / d3drmobj.h
1 /*
2  * Copyright (C) 2008 Vijay Kiran Kamuju
3  * Copyright (C) 2010 Christian Costa
4  *
5  * This library is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU Lesser General Public
7  * License as published by the Free Software Foundation; either
8  * version 2.1 of the License, or (at your option) any later version.
9  *
10  * This library is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13  * Lesser General Public License for more details.
14  *
15  * You should have received a copy of the GNU Lesser General Public
16  * License along with this library; if not, write to the Free Software
17  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
18  */
19
20 #ifndef __D3DRMOBJ_H__
21 #define __D3DRMOBJ_H__
22
23 #include <objbase.h>
24 #define VIRTUAL
25 #include <d3drmdef.h>
26 #include <d3d.h>
27
28 #ifdef __cplusplus
29 extern "C" {
30 #endif
31
32 /*****************************************************************************
33  * Predeclare the interfaces
34  */
35
36 DEFINE_GUID(IID_IDirect3DRMObject,          0xeb16cb00, 0xd271, 0x11ce, 0xac, 0x48, 0x00, 0x00, 0xc0, 0x38, 0x25, 0xa1);
37 DEFINE_GUID(IID_IDirect3DRMVisual,          0xeb16cb04, 0xd271, 0x11ce, 0xac, 0x48, 0x00, 0x00, 0xc0, 0x38, 0x25, 0xa1);
38
39 typedef struct IDirect3DRMObject          *LPDIRECT3DRMOBJECT, **LPLPDIRECT3DRMOBJECT;
40 typedef struct IDirect3DRMObject2         *LPDIRECT3DRMOBJECT2, **LPLPDIRECT3DRMOBJECT2;
41 typedef struct IDirect3DRMDevice          *LPDIRECT3DRMDEVICE, **LPLPDIRECT3DRMDEVICE;
42 typedef struct IDirect3DRMDevice2         *LPDIRECT3DRMDEVICE2, **LPLPDIRECT3DRMDEVICE2;
43 typedef struct IDirect3DRMDevice3         *LPDIRECT3DRMDEVICE3, **LPLPDIRECT3DRMDEVICE3;
44 typedef struct IDirect3DRMViewport        *LPDIRECT3DRMVIEWPORT, **LPLPDIRECT3DRMVIEWPORT;
45 typedef struct IDirect3DRMViewport2       *LPDIRECT3DRMVIEWPORT2, **LPLPDIRECT3DRMVIEWPORT2;
46 typedef struct IDirect3DRMFrame           *LPDIRECT3DRMFRAME, **LPLPDIRECT3DRMFRAME;
47 typedef struct IDirect3DRMFrame2          *LPDIRECT3DRMFRAME2, **LPLPDIRECT3DRMFRAME2;
48 typedef struct IDirect3DRMFrame3          *LPDIRECT3DRMFRAME3, **LPLPDIRECT3DRMFRAME3;
49 typedef struct IDirect3DRMVisual          *LPDIRECT3DRMVISUAL, **LPLPDIRECT3DRMVISUAL;
50 typedef struct IDirect3DRMMesh            *LPDIRECT3DRMMESH, **LPLPDIRECT3DRMMESH;
51 typedef struct IDirect3DRMMeshBuilder     *LPDIRECT3DRMMESHBUILDER, **LPLPDIRECT3DRMMESHBUILDER;
52 typedef struct IDirect3DRMMeshBuilder2    *LPDIRECT3DRMMESHBUILDER2, **LPLPDIRECT3DRMMESHBUILDER2;
53 typedef struct IDirect3DRMMeshBuilder3    *LPDIRECT3DRMMESHBUILDER3, **LPLPDIRECT3DRMMESHBUILDER3;
54 typedef struct IDirect3DRMFace            *LPDIRECT3DRMFACE, **LPLPDIRECT3DRMFACE;
55 typedef struct IDirect3DRMFace2           *LPDIRECT3DRMFACE2, **LPLPDIRECT3DRMFACE2;
56 typedef struct IDirect3DRMLight           *LPDIRECT3DRMLIGHT, **LPLPDIRECT3DRMLIGHT;
57 typedef struct IDirect3DRMTexture         *LPDIRECT3DRMTEXTURE, **LPLPDIRECT3DRMTEXTURE;
58 typedef struct IDirect3DRMTexture2        *LPDIRECT3DRMTEXTURE2, **LPLPDIRECT3DRMTEXTURE2;
59 typedef struct IDirect3DRMTexture3        *LPDIRECT3DRMTEXTURE3, **LPLPDIRECT3DRMTEXTURE3;
60 typedef struct IDirect3DRMWrap            *LPDIRECT3DRMWRAP, **LPLPDIRECT3DRMWRAP;
61 typedef struct IDirect3DRMMaterial        *LPDIRECT3DRMMATERIAL, **LPLPDIRECT3DRMMATERIAL;
62 typedef struct IDirect3DRMMaterial2       *LPDIRECT3DRMMATERIAL2, **LPLPDIRECT3DRMMATERIAL2;
63 typedef struct IDirect3DRMAnimation       *LPDIRECT3DRMANIMATION, **LPLPDIRECT3DRMANIMATION;
64 typedef struct IDirect3DRMAnimation2      *LPDIRECT3DRMANIMATION2, **LPLPDIRECT3DRMANIMATION2;
65 typedef struct IDirect3DRMAnimationSet    *LPDIRECT3DRMANIMATIONSET, **LPLPDIRECT3DRMANIMATIONSET;
66 typedef struct IDirect3DRMAnimationSet2   *LPDIRECT3DRMANIMATIONSET2, **LPLPDIRECT3DRMANIMATIONSET2;
67 typedef struct IDirect3DRMUserVisual      *LPDIRECT3DRMUSERVISUAL, **LPLPDIRECT3DRMUSERVISUAL;
68 typedef struct IDirect3DRMShadow          *LPDIRECT3DRMSHADOW, **LPLPDIRECT3DRMSHADOW;
69 typedef struct IDirect3DRMShadow2         *LPDIRECT3DRMSHADOW2, **LPLPDIRECT3DRMSHADOW2;
70 typedef struct IDirect3DRMArray           *LPDIRECT3DRMARRAY, **LPLPDIRECT3DRMARRAY;
71 typedef struct IDirect3DRMObjectArray     *LPDIRECT3DRMOBJECTARRAY, **LPLPDIRECT3DRMOBJECTARRAY;
72 typedef struct IDirect3DRMDeviceArray     *LPDIRECT3DRMDEVICEARRAY, **LPLPDIRECT3DRMDEVICEARRAY;
73 typedef struct IDirect3DRMFaceArray       *LPDIRECT3DRMFACEARRAY, **LPLPDIRECT3DRMFACEARRAY;
74 typedef struct IDirect3DRMViewportArray   *LPDIRECT3DRMVIEWPORTARRAY, **LPLPDIRECT3DRMVIEWPORTARRAY;
75 typedef struct IDirect3DRMFrameArray      *LPDIRECT3DRMFRAMEARRAY, **LPLPDIRECT3DRMFRAMEARRAY;
76 typedef struct IDirect3DRMAnimationArray  *LPDIRECT3DRMANIMATIONARRAY, **LPLPDIRECT3DRMANIMATIONARRAY;
77 typedef struct IDirect3DRMVisualArray     *LPDIRECT3DRMVISUALARRAY, **LPLPDIRECT3DRMVISUALARRAY;
78 typedef struct IDirect3DRMPickedArray     *LPDIRECT3DRMPICKEDARRAY, **LPLPDIRECT3DRMPICKEDARRAY;
79 typedef struct IDirect3DRMPicked2Array    *LPDIRECT3DRMPICKED2ARRAY, **LPLPDIRECT3DRMPICKED2ARRAY;
80 typedef struct IDirect3DRMLightArray      *LPDIRECT3DRMLIGHTARRAY, **LPLPDIRECT3DRMLIGHTARRAY;
81 typedef struct IDirect3DRMProgressiveMesh *LPDIRECT3DRMPROGRESSIVEMESH, **LPLPDIRECT3DRMPROGRESSIVEMESH;
82 typedef struct IDirect3DRMClippedVisual   *LPDIRECT3DRMCLIPPEDVISUAL, **LPLPDIRECT3DRMCLIPPEDVISUAL;
83
84 /* ********************************************************************
85    Types and structures
86    ******************************************************************** */
87
88 typedef void (__cdecl *D3DRMOBJECTCALLBACK)(LPDIRECT3DRMOBJECT obj, LPVOID arg);
89 typedef void (__cdecl *D3DRMFRAMEMOVECALLBACK)(LPDIRECT3DRMFRAME obj, LPVOID arg, D3DVALUE delta);
90 typedef void (__cdecl *D3DRMFRAME3MOVECALLBACK)(LPDIRECT3DRMFRAME3 obj, LPVOID arg, D3DVALUE delta);
91 typedef void (__cdecl *D3DRMUPDATECALLBACK)(LPDIRECT3DRMDEVICE obj, LPVOID arg, int, LPD3DRECT);
92 typedef int (__cdecl *D3DRMUSERVISUALCALLBACK)(LPDIRECT3DRMUSERVISUAL obj, LPVOID arg,
93     D3DRMUSERVISUALREASON reason, LPDIRECT3DRMDEVICE dev, LPDIRECT3DRMVIEWPORT view);
94 typedef HRESULT (__cdecl *D3DRMLOADTEXTURECALLBACK)(char *tex_name, void *arg, LPDIRECT3DRMTEXTURE *);
95 typedef HRESULT (__cdecl *D3DRMLOADTEXTURE3CALLBACK)(char *tex_name, void *arg, LPDIRECT3DRMTEXTURE3 *);
96 typedef void (__cdecl *D3DRMLOADCALLBACK)(LPDIRECT3DRMOBJECT object, REFIID objectguid, LPVOID arg);
97
98 typedef struct _D3DRMPICKDESC
99 {
100     ULONG     ulFaceIdx;
101     LONG      lGroupIdx;
102     D3DVECTOR vPosition;
103 } D3DRMPICKDESC, *LPD3DRMPICKDESC;
104
105 typedef struct _D3DRMPICKDESC2
106 {
107     ULONG     ulFaceIdx;
108     LONG      lGroupIdx;
109     D3DVECTOR vPosition;
110     D3DVALUE  tu;
111     D3DVALUE  tv;
112     D3DVECTOR dvNormal;
113     D3DCOLOR  dcColor;
114 } D3DRMPICKDESC2, *LPD3DRMPICKDESC2;
115
116 /*****************************************************************************
117  * IDirect3DRMObject interface
118  */
119 #ifdef WINE_NO_UNICODE_MACROS
120 #undef GetClassName
121 #endif
122 #define INTERFACE IDirect3DRMObject
123 DECLARE_INTERFACE_(IDirect3DRMObject,IUnknown)
124 {
125     /*** IUnknown methods ***/
126     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
127     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
128     STDMETHOD_(ULONG,Release)(THIS) PURE;
129     /*** IDirect3DRMObject methods ***/
130     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
131     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
132     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
133     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
134     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
135     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
136     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
137     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
138 };
139 #undef INTERFACE
140
141 #if !defined(__cplusplus) || defined(CINTERFACE)
142 /*** IUnknown methods ***/
143 #define IDirect3DRMObject_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
144 #define IDirect3DRMObject_AddRef(p)                    (p)->lpVtbl->AddRef(p)
145 #define IDirect3DRMObject_Release(p)                   (p)->lpVtbl->Release(p)
146 /*** IDirect3DRMObject methods ***/
147 #define IDirect3DRMObject_Clone(p,a,b,c)               (p)->lpVtbl->Clone(p,a,b,c)
148 #define IDirect3DRMObject_AddDestroyCallback(p,a,b)    (p)->lpVtbl->AddDestroyCallback(p,a,b)
149 #define IDirect3DRMObject_DeleteDestroyCallback(p,a,b) (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
150 #define IDirect3DRMObject_SetAppData(p,a)              (p)->lpVtbl->SetAppData(p,a)
151 #define IDirect3DRMObject_GetAppData(p)                (p)->lpVtbl->GetAppData(p)
152 #define IDirect3DRMObject_SetName(p,a)                 (p)->lpVtbl->SetName(p,a)
153 #define IDirect3DRMObject_GetName(p,a,b)               (p)->lpVtbl->GetName(p,a,b)
154 #define IDirect3DRMObject_GetClassName(p,a,b)          (p)->lpVtbl->GetClassName(p,a,b)
155 #else
156 /*** IUnknown methods ***/
157 #define IDirect3DRMObject_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
158 #define IDirect3DRMObject_AddRef(p)                    (p)->AddRef()
159 #define IDirect3DRMObject_Release(p)                   (p)->Release()
160 /*** IDirect3DRMObject methods ***/
161 #define IDirect3DRMObject_Clone(p,a,b,c)               (p)->Clone(a,b,c)
162 #define IDirect3DRMObject_AddDestroyCallback(p,a,b)    (p)->AddDestroyCallback(a,b)
163 #define IDirect3DRMObject_DeleteDestroyCallback(p,a,b) (p)->DeleteDestroyCallback(a,b)
164 #define IDirect3DRMObject_SetAppData(p,a)              (p)->SetAppData(a)
165 #define IDirect3DRMObject_GetAppData(p)                (p)->GetAppData()
166 #define IDirect3DRMObject_SetName(p,a)                 (p)->SetName(a)
167 #define IDirect3DRMObject_GetName(p,a,b)               (p)->GetName(a,b)
168 #define IDirect3DRMObject_GetClassName(p,a,b)          (p)->GetClassName(a,b)
169 #endif
170
171 /*****************************************************************************
172  * IDirect3DRMObject2 interface
173  */
174 #ifdef WINE_NO_UNICODE_MACROS
175 #undef GetClassName
176 #endif
177 #define INTERFACE IDirect3DRMObject2
178 DECLARE_INTERFACE_(IDirect3DRMObject2,IUnknown)
179 {
180     /*** IUnknown methods ***/
181     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
182     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
183     STDMETHOD_(ULONG,Release)(THIS) PURE;
184     /*** IDirect3DRMObject2 methods ***/
185     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK pFunc, LPVOID pArg) PURE;
186     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
187     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK pFunc, LPVOID pArg) PURE;
188     STDMETHOD(GetClientData)(THIS_ DWORD id, LPVOID* ppData) PURE;
189     STDMETHOD(GetDirect3DRM)(THIS_ LPDIRECT3DRM* ppDirect3DRM) PURE;
190     STDMETHOD(GetName)(THIS_ LPDWORD pSize, LPSTR pName) PURE;
191     STDMETHOD(SetClientData)(THIS_ DWORD id, LPVOID pData, DWORD flags) PURE;
192     STDMETHOD(SetName)(THIS_ LPCSTR pName) PURE;
193     STDMETHOD(GetAge)(THIS_ DWORD flags, LPDWORD pAge) PURE;
194 };
195 #undef INTERFACE
196
197 #if !defined(__cplusplus) || defined(CINTERFACE)
198 /*** IUnknown methods ***/
199 #define IDirect3DRMObject2_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
200 #define IDirect3DRMObject2_AddRef(p)                    (p)->lpVtbl->AddRef(p)
201 #define IDirect3DRMObject2_Release(p)                   (p)->lpVtbl->Release(p)
202 /*** IDirect3DRMObject2 methods ***/
203 #define IDirect3DRMObject2_AddDestroyCallback(p,a,b)    (p)->lpVtbl->AddDestroyCallback(p,a,b)
204 #define IDirect3DRMObject2_Clone(p,a,b,c)               (p)->lpVtbl->Clone(p,a,b,c)
205 #define IDirect3DRMObject2_DeleteDestroyCallback(p,a,b) (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
206 #define IDirect3DRMObject2_GetClientData(p,a,b)         (p)->lpVtbl->SetClientData(p,a,b)
207 #define IDirect3DRMObject2_GetDirect3DRM(p,a)           (p)->lpVtbl->GetDirect3DRM(p,a)
208 #define IDirect3DRMObject2_GetName(p,a,b)               (p)->lpVtbl->GetName(p,a,b)
209 #define IDirect3DRMObject2_SetClientData(p,a,b,c)       (p)->lpVtbl->SetClientData(p,a,b,c)
210 #define IDirect3DRMObject2_SetName(p,a)                 (p)->lpVtbl->SetName(p,a)
211 #define IDirect3DRMObject2_GetAge(p,a,b)                (p)->lpVtbl->GetAge(p,a,b)
212 #else
213 /*** IUnknown methods ***/
214 #define IDirect3DRMObject2_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
215 #define IDirect3DRMObject2_AddRef(p)                    (p)->AddRef()
216 #define IDirect3DRMObject2_Release(p)                   (p)->Release()
217 /*** IDirect3DRMObject2 methods ***/
218 #define IDirect3DRMObject2_AddDestroyCallback(p,a,b)    (p)->AddDestroyCallback(a,b)
219 #define IDirect3DRMObject2_Clone(p,a,b,c)               (p)->Clone(a,b,c)
220 #define IDirect3DRMObject2_DeleteDestroyCallback(p,a,b) (p)->DeleteDestroyCallback(a,b)
221 #define IDirect3DRMObject2_GetClientData(p,a,b)         (p)->SetClientData(a,b)
222 #define IDirect3DRMObject2_GetDirect3DRM(p,a)           (p)->GetDirect3DRM(a)
223 #define IDirect3DRMObject2_GetName(p,a,b)               (p)->GetName(a,b)
224 #define IDirect3DRMObject2_SetClientData(p,a,b,c)       (p)->SetClientData(a,b,c)
225 #define IDirect3DRMObject2_SetName(p,a)                 (p)->SetName(a)
226 #define IDirect3DRMObject2_GetAge(p,a,b)                (p)->GetAge(a,b)
227 #endif
228
229 /*****************************************************************************
230  * IDirect3DRMVisual interface
231  */
232 #define INTERFACE IDirect3DRMVisual
233 DECLARE_INTERFACE_(IDirect3DRMVisual,IDirect3DRMObject)
234 {
235     /*** IUnknown methods ***/
236     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
237     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
238     STDMETHOD_(ULONG,Release)(THIS) PURE;
239     /*** IDirect3DRMObject methods ***/
240     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
241     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
242     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
243     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
244     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
245     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
246     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
247     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
248 };
249 #undef INTERFACE
250
251 #if !defined(__cplusplus) || defined(CINTERFACE)
252 /*** IUnknown methods ***/
253 #define IDirect3DRMVisual_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
254 #define IDirect3DRMVisual_AddRef(p)                    (p)->lpVtbl->AddRef(p)
255 #define IDirect3DRMVisual_Release(p)                   (p)->lpVtbl->Release(p)
256 /*** IDirect3DRMObject methods ***/
257 #define IDirect3DRMVisual_Clone(p,a,b,c)               (p)->lpVtbl->Clone(p,a,b,c)
258 #define IDirect3DRMVisual_AddDestroyCallback(p,a,b)    (p)->lpVtbl->AddDestroyCallback(p,a,b)
259 #define IDirect3DRMVisual_DeleteDestroyCallback(p,a,b) (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
260 #define IDirect3DRMVisual_SetAppData(p,a)              (p)->lpVtbl->SetAppData(p,a)
261 #define IDirect3DRMVisual_GetAppData(p)                (p)->lpVtbl->GetAppData(p)
262 #define IDirect3DRMVisual_SetName(p,a)                 (p)->lpVtbl->SetName(p,a)
263 #define IDirect3DRMVisual_GetName(p,a,b)               (p)->lpVtbl->GetName(p,a,b)
264 #define IDirect3DRMVisual_GetClassName(p,a,b)          (p)->lpVtbl->GetClassName(p,a,b)
265 #else
266 /*** IUnknown methods ***/
267 #define IDirect3DRMVisual_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
268 #define IDirect3DRMVisual_AddRef(p)                    (p)->AddRef()
269 #define IDirect3DRMVisual_Release(p)                   (p)->Release()
270 /*** IDirect3DRMObject methods ***/
271 #define IDirect3DRMVisual_Clone(p,a,b,c)               (p)->Clone(a,b,c)
272 #define IDirect3DRMVisual_AddDestroyCallback(p,a,b)    (p)->AddDestroyCallback(a,b)
273 #define IDirect3DRMVisual_DeleteDestroyCallback(p,a,b) (p)->DeleteDestroyCallback(a,b)
274 #define IDirect3DRMVisual_SetAppData(p,a)              (p)->SetAppData(a)
275 #define IDirect3DRMVisual_GetAppData(p)                (p)->GetAppData()
276 #define IDirect3DRMVisual_SetName(p,a)                 (p)->SetName(a)
277 #define IDirect3DRMVisual_GetName(p,a,b)               (p)->GetName(a,b)
278 #define IDirect3DRMVisual_GetClassName(p,a,b)          (p)->GetClassName(a,b)
279 #endif
280
281 /*****************************************************************************
282  * IDirect3DRMDevice interface
283  */
284 #ifdef WINE_NO_UNICODE_MACROS
285 #undef GetClassName
286 #endif
287 #define INTERFACE IDirect3DRMDevice
288 DECLARE_INTERFACE_(IDirect3DRMDevice,IUnknown)
289 {
290     /*** IUnknown methods ***/
291     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
292     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
293     STDMETHOD_(ULONG,Release)(THIS) PURE;
294     /*** IDirect3DRMObject methods ***/
295     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
296     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK pFunc, LPVOID pArg) PURE;
297     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK pFunc, LPVOID pArg) PURE;
298     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
299     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
300     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
301     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
302     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
303     /*** IDirect3DRMDevice methods ***/
304     STDMETHOD(Init)(THIS_ ULONG width, ULONG height) PURE;
305     STDMETHOD(InitFromD3D)(THIS_ LPDIRECT3D pD3D, LPDIRECT3DDEVICE pD3DDev) PURE;
306     STDMETHOD(InitFromClipper)(THIS_ LPDIRECTDRAWCLIPPER pDDClipper, LPGUID pGUID, int width, int height) PURE;
307     STDMETHOD(Update)(THIS) PURE;
308     STDMETHOD(AddUpdateCallback)(THIS_ D3DRMUPDATECALLBACK, LPVOID arg) PURE;
309     STDMETHOD(DeleteUpdateCallback)(THIS_ D3DRMUPDATECALLBACK, LPVOID arg) PURE;
310     STDMETHOD(SetBufferCount)(THIS_ DWORD) PURE;
311     STDMETHOD_(DWORD, GetBufferCount)(THIS) PURE;
312     STDMETHOD(SetDither)(THIS_ BOOL) PURE;
313     STDMETHOD(SetShades)(THIS_ DWORD) PURE;
314     STDMETHOD(SetQuality)(THIS_ D3DRMRENDERQUALITY) PURE;
315     STDMETHOD(SetTextureQuality)(THIS_ D3DRMTEXTUREQUALITY) PURE;
316     STDMETHOD(GetViewports)(THIS_ LPDIRECT3DRMVIEWPORTARRAY *return_views) PURE;
317     STDMETHOD_(BOOL, GetDither)(THIS) PURE;
318     STDMETHOD_(DWORD, GetShades)(THIS) PURE;
319     STDMETHOD_(DWORD, GetHeight)(THIS) PURE;
320     STDMETHOD_(DWORD, GetWidth)(THIS) PURE;
321     STDMETHOD_(DWORD, GetTrianglesDrawn)(THIS) PURE;
322     STDMETHOD_(DWORD, GetWireframeOptions)(THIS) PURE;
323     STDMETHOD_(D3DRMRENDERQUALITY, GetQuality)(THIS) PURE;
324     STDMETHOD_(D3DCOLORMODEL, GetColorModel)(THIS) PURE;
325     STDMETHOD_(D3DRMTEXTUREQUALITY, GetTextureQuality)(THIS) PURE;
326     STDMETHOD(GetDirect3DDevice)(THIS_ LPDIRECT3DDEVICE *) PURE;
327 };
328 #undef INTERFACE
329
330 #if !defined(__cplusplus) || defined(CINTERFACE)
331 /*** IUnknown methods ***/
332 #define IDirect3DRMDevice_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
333 #define IDirect3DRMDevice_AddRef(p)                    (p)->lpVtbl->AddRef(p)
334 #define IDirect3DRMDevice_Release(p)                   (p)->lpVtbl->Release(p)
335 /*** IDirect3DRMObject methods ***/
336 #define IDirect3DRMDevice_Clone(p,a,b,c)               (p)->lpVtbl->Clone(p,a,b,c)
337 #define IDirect3DRMDevice_AddDestroyCallback(p,a,b)    (p)->lpVtbl->AddDestroyCallback(p,a,b)
338 #define IDirect3DRMDevice_DeleteDestroyCallback(p,a,b) (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
339 #define IDirect3DRMDevice_SetAppData(p,a)              (p)->lpVtbl->SetAppData(p,a)
340 #define IDirect3DRMDevice_GetAppData(p)                (p)->lpVtbl->GetAppData(p)
341 #define IDirect3DRMDevice_SetName(p,a)                 (p)->lpVtbl->SetName(p,a)
342 #define IDirect3DRMDevice_GetName(p,a,b)               (p)->lpVtbl->GetName(p,a,b)
343 #define IDirect3DRMDevice_GetClassName(p,a,b)          (p)->lpVtbl->GetClassName(p,a,b)
344 /*** IDirect3DRMDevice methods ***/
345 #define IDirect3DRMDevice_Init(p,a,b)                  (p)->lpVtbl->Init(p,a,b)
346 #define IDirect3DRMDevice_InitFromD3D(p,a,b)           (p)->lpVtbl->InitFromD3D(p,a,b)
347 #define IDirect3DRMDevice_InitFromClipper(p,a,b,c,d)   (p)->lpVtbl->InitFromClipper(p,a,b,c,d)
348 #define IDirect3DRMDevice_Update(p)                    (p)->lpVtbl->Update(p)
349 #define IDirect3DRMDevice_AddUpdateCallback(p,a,b)     (p)->lpVtbl->AddUpdateCallback(p,a,b)
350 #define IDirect3DRMDevice_DeleteUpdateCallback(p,a,b)  (p)->lpVtbl->DeleteUpdateCallback(p,a,b,c)
351 #define IDirect3DRMDevice_SetBufferCount(p,a)          (p)->lpVtbl->SetBufferCount(p,a)
352 #define IDirect3DRMDevice_GetBufferCount(p)            (p)->lpVtbl->GetBufferCount(p)
353 #define IDirect3DRMDevice_SetDither(p,a)               (p)->lpVtbl->SetDither(p,a)
354 #define IDirect3DRMDevice_SetShades(p,a)               (p)->lpVtbl->SetShades(p,a)
355 #define IDirect3DRMDevice_SetQuality(p,a)              (p)->lpVtbl->SetQuality(p,a)
356 #define IDirect3DRMDevice_SetTextureQuality(p,a)       (p)->lpVtbl->SetTextureQuality(p,a)
357 #define IDirect3DRMDevice_GetViewports(p,a)            (p)->lpVtbl->GetViewports(p,a)
358 #define IDirect3DRMDevice_GetDither(p)                 (p)->lpVtbl->GetDither(p)
359 #define IDirect3DRMDevice_GetShades(p)                 (p)->lpVtbl->GetShades(p)
360 #define IDirect3DRMDevice_GetHeight(p)                 (p)->lpVtbl->GetHeight(p)
361 #define IDirect3DRMDevice_GetWidth(p)                  (p)->lpVtbl->GetWidth(p)
362 #define IDirect3DRMDevice_GetTrianglesDrawn(p)         (p)->lpVtbl->GetTrianglesDrawn(p)
363 #define IDirect3DRMDevice_GetWireframeOptions(p)       (p)->lpVtbl->GetWireframeOptions(p)
364 #define IDirect3DRMDevice_GetQuality(p)                (p)->lpVtbl->GetQuality(p)
365 #define IDirect3DRMDevice_GetColorModel(p)             (p)->lpVtbl->GetColorModel(p)
366 #define IDirect3DRMDevice_GetTextureQuality(p)         (p)->lpVtbl->GetTextureQuality(p)
367 #define IDirect3DRMDevice_GetDirect3DDevice(p,a)       (p)->lpVtbl->GetDirect3DDevice(p,a)
368 #else
369 /*** IUnknown methods ***/
370 #define IDirect3DRMDevice_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
371 #define IDirect3DRMDevice_AddRef(p)                    (p)->AddRef()
372 #define IDirect3DRMDevice_Release(p)                   (p)->Release()
373 /*** IDirect3DRMObject methods ***/
374 #define IDirect3DRMDevice_Clone(p,a,b,c)               (p)->Clone(a,b,c)
375 #define IDirect3DRMDevice_AddDestroyCallback(p,a,b)    (p)->AddDestroyCallback(a,b)
376 #define IDirect3DRMDevice_DeleteDestroyCallback(p,a,b) (p)->DeleteDestroyCallback(a,b)
377 #define IDirect3DRMDevice_SetAppData(p,a)              (p)->SetAppData(a)
378 #define IDirect3DRMDevice_GetAppData(p)                (p)->GetAppData()
379 #define IDirect3DRMDevice_SetName(p,a)                 (p)->SetName(a)
380 #define IDirect3DRMDevice_GetName(p,a,b)               (p)->GetName(a,b)
381 #define IDirect3DRMDevice_GetClassName(p,a,b)          (p)->GetClassName(a,b)
382 /*** IDirect3DRMDevice methods ***/
383 #define IDirect3DRMDevice_Init(p,a,b)                  (p)->Init(p,a,b)
384 #define IDirect3DRMDevice_InitFromD3D(p,a,b)           (p)->InitFromD3D(p,a,b)
385 #define IDirect3DRMDevice_InitFromClipper(p,a,b,c,d)   (p)->InitFromClipper(p,a,b,c,d)
386 #define IDirect3DRMDevice_Update(p)                    (p)->Update(p)
387 #define IDirect3DRMDevice_AddUpdateCallback(p,a,b)     (p)->AddUpdateCallback(p,a,b)
388 #define IDirect3DRMDevice_DeleteUpdateCallback(p,a,b)  (p)->DeleteUpdateCallback(p,a,b,c)
389 #define IDirect3DRMDevice_SetBufferCount(p,a)          (p)->SetBufferCount(p,a)
390 #define IDirect3DRMDevice_GetBufferCount(p)            (p)->GetBufferCount(p)
391 #define IDirect3DRMDevice_SetDither(p,a)               (p)->SetDither(p,a)
392 #define IDirect3DRMDevice_SetShades(p,a)               (p)->SetShades(p,a)
393 #define IDirect3DRMDevice_SetQuality(p,a)              (p)->SetQuality(p,a)
394 #define IDirect3DRMDevice_SetTextureQuality(p,a)       (p)->SetTextureQuality(p,a)
395 #define IDirect3DRMDevice_GetViewports(p,a)            (p)->GetViewports(p,a)
396 #define IDirect3DRMDevice_GetDither(p)                 (p)->GetDither(p)
397 #define IDirect3DRMDevice_GetShades(p)                 (p)->GetShades(p)
398 #define IDirect3DRMDevice_GetHeight(p)                 (p)->GetHeight(p)
399 #define IDirect3DRMDevice_GetWidth(p)                  (p)->GetWidth(p)
400 #define IDirect3DRMDevice_GetTrianglesDrawn(p)         (p)->GetTrianglesDrawn(p)
401 #define IDirect3DRMDevice_GetWireframeOptions(p)       (p)->GetWireframeOptions(p)
402 #define IDirect3DRMDevice_GetQuality(p)                (p)->GetQuality(p)
403 #define IDirect3DRMDevice_GetColorModel(p)             (p)->GetColorModel(p)
404 #define IDirect3DRMDevice_GetTextureQuality(p)         (p)->GetTextureQuality(p)
405 #define IDirect3DRMDevice_GetDirect3DDevice(p,a)       (p)->GetDirect3DDevice(p,a)
406 #endif
407
408 /*****************************************************************************
409  * IDirect3DRMDevice2 interface
410  */
411 #ifdef WINE_NO_UNICODE_MACROS
412 #undef GetClassName
413 #endif
414 #define INTERFACE IDirect3DRMDevice2
415 DECLARE_INTERFACE_(IDirect3DRMDevice2,IDirect3DRMDevice)
416 {
417     /*** IUnknown methods ***/
418     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
419     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
420     STDMETHOD_(ULONG,Release)(THIS) PURE;
421     /*** IDirect3DRMObject methods ***/
422     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
423     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK pFunc, LPVOID pArg) PURE;
424     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK pFunc, LPVOID pArg) PURE;
425     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
426     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
427     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
428     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
429     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
430     /*** IDirect3DRMDevice methods ***/
431     STDMETHOD(Init)(THIS_ ULONG width, ULONG height) PURE;
432     STDMETHOD(InitFromD3D)(THIS_ LPDIRECT3D pD3D, LPDIRECT3DDEVICE pD3DDev) PURE;
433     STDMETHOD(InitFromClipper)(THIS_ LPDIRECTDRAWCLIPPER pDDClipper, LPGUID pGUID, int width, int height) PURE;
434     STDMETHOD(Update)(THIS) PURE;
435     STDMETHOD(AddUpdateCallback)(THIS_ D3DRMUPDATECALLBACK, LPVOID arg) PURE;
436     STDMETHOD(DeleteUpdateCallback)(THIS_ D3DRMUPDATECALLBACK, LPVOID arg) PURE;
437     STDMETHOD(SetBufferCount)(THIS_ DWORD) PURE;
438     STDMETHOD_(DWORD, GetBufferCount)(THIS) PURE;
439     STDMETHOD(SetDither)(THIS_ BOOL) PURE;
440     STDMETHOD(SetShades)(THIS_ DWORD) PURE;
441     STDMETHOD(SetQuality)(THIS_ D3DRMRENDERQUALITY) PURE;
442     STDMETHOD(SetTextureQuality)(THIS_ D3DRMTEXTUREQUALITY) PURE;
443     STDMETHOD(GetViewports)(THIS_ LPDIRECT3DRMVIEWPORTARRAY *return_views) PURE;
444     STDMETHOD_(BOOL, GetDither)(THIS) PURE;
445     STDMETHOD_(DWORD, GetShades)(THIS) PURE;
446     STDMETHOD_(DWORD, GetHeight)(THIS) PURE;
447     STDMETHOD_(DWORD, GetWidth)(THIS) PURE;
448     STDMETHOD_(DWORD, GetTrianglesDrawn)(THIS) PURE;
449     STDMETHOD_(DWORD, GetWireframeOptions)(THIS) PURE;
450     STDMETHOD_(D3DRMRENDERQUALITY, GetQuality)(THIS) PURE;
451     STDMETHOD_(D3DCOLORMODEL, GetColorModel)(THIS) PURE;
452     STDMETHOD_(D3DRMTEXTUREQUALITY, GetTextureQuality)(THIS) PURE;
453     STDMETHOD(GetDirect3DDevice)(THIS_ LPDIRECT3DDEVICE *) PURE;
454     /*** IDirect3DRMDevice2 methods ***/
455     STDMETHOD(InitFromD3D2)(THIS_ LPDIRECT3D2 pD3D, LPDIRECT3DDEVICE2 pD3DDev) PURE;
456     STDMETHOD(InitFromSurface)(THIS_ LPGUID pGUID, LPDIRECTDRAW pDD, LPDIRECTDRAWSURFACE pDDSBack) PURE;
457     STDMETHOD(SetRenderMode)(THIS_ DWORD flags) PURE;
458     STDMETHOD_(DWORD, GetRenderMode)(THIS) PURE;
459     STDMETHOD(GetDirect3DDevice2)(THIS_ LPDIRECT3DDEVICE2 *) PURE;
460 };
461 #undef INTERFACE
462
463 #if !defined(__cplusplus) || defined(CINTERFACE)
464 /*** IUnknown methods ***/
465 #define IDirect3DRMDevice2_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
466 #define IDirect3DRMDevice2_AddRef(p)                    (p)->lpVtbl->AddRef(p)
467 #define IDirect3DRMDevice2_Release(p)                   (p)->lpVtbl->Release(p)
468 /*** IDirect3DRMObject methods ***/
469 #define IDirect3DRMDevice2_Clone(p,a,b,c)               (p)->lpVtbl->Clone(p,a,b,c)
470 #define IDirect3DRMDevice2_AddDestroyCallback(p,a,b)    (p)->lpVtbl->AddDestroyCallback(p,a,b)
471 #define IDirect3DRMDevice2_DeleteDestroyCallback(p,a,b) (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
472 #define IDirect3DRMDevice2_SetAppData(p,a)              (p)->lpVtbl->SetAppData(p,a)
473 #define IDirect3DRMDevice2_GetAppData(p)                (p)->lpVtbl->GetAppData(p)
474 #define IDirect3DRMDevice2_SetName(p,a)                 (p)->lpVtbl->SetName(p,a)
475 #define IDirect3DRMDevice2_GetName(p,a,b)               (p)->lpVtbl->GetName(p,a,b)
476 #define IDirect3DRMDevice2_GetClassName(p,a,b)          (p)->lpVtbl->GetClassName(p,a,b)
477 /*** IDirect3DRMDevice methods ***/
478 #define IDirect3DRMDevice2_Init(p,a,b)                  (p)->lpVtbl->Init(p,a,b)
479 #define IDirect3DRMDevice2_InitFromD3D(p,a,b)           (p)->lpVtbl->InitFromD3D(p,a,b)
480 #define IDirect3DRMDevice2_InitFromClipper(p,a,b,c,d)   (p)->lpVtbl->InitFromClipper(p,a,b,c,d)
481 #define IDirect3DRMDevice2_Update(p)                    (p)->lpVtbl->Update(p)
482 #define IDirect3DRMDevice2_AddUpdateCallback(p,a,b)     (p)->lpVtbl->AddUpdateCallback(p,a,b)
483 #define IDirect3DRMDevice2_DeleteUpdateCallback(p,a,b)  (p)->lpVtbl->DeleteUpdateCallback(p,a,b,c)
484 #define IDirect3DRMDevice2_SetBufferCount(p,a)          (p)->lpVtbl->SetBufferCount(p,a)
485 #define IDirect3DRMDevice2_GetBufferCount(p)            (p)->lpVtbl->GetBufferCount(p)
486 #define IDirect3DRMDevice2_SetDither(p,a)               (p)->lpVtbl->SetDither(p,a)
487 #define IDirect3DRMDevice2_SetShades(p,a)               (p)->lpVtbl->SetShades(p,a)
488 #define IDirect3DRMDevice2_SetQuality(p,a)              (p)->lpVtbl->SetQuality(p,a)
489 #define IDirect3DRMDevice2_SetTextureQuality(p,a)       (p)->lpVtbl->SetTextureQuality(p,a)
490 #define IDirect3DRMDevice2_GetViewports(p,a)            (p)->lpVtbl->GetViewports(p,a)
491 #define IDirect3DRMDevice2_GetDither(p)                 (p)->lpVtbl->GetDither(p)
492 #define IDirect3DRMDevice2_GetShades(p)                 (p)->lpVtbl->GetShades(p)
493 #define IDirect3DRMDevice2_GetHeight(p)                 (p)->lpVtbl->GetHeight(p)
494 #define IDirect3DRMDevice2_GetWidth(p)                  (p)->lpVtbl->GetWidth(p)
495 #define IDirect3DRMDevice2_GetTrianglesDrawn(p)         (p)->lpVtbl->GetTrianglesDrawn(p)
496 #define IDirect3DRMDevice2_GetWireframeOptions(p)       (p)->lpVtbl->GetWireframeOptions(p)
497 #define IDirect3DRMDevice2_GetQuality(p)                (p)->lpVtbl->GetQuality(p)
498 #define IDirect3DRMDevice2_GetColorModel(p)             (p)->lpVtbl->GetColorModel(p)
499 #define IDirect3DRMDevice2_GetTextureQuality(p)         (p)->lpVtbl->GetTextureQuality(p)
500 #define IDirect3DRMDevice2_GetDirect3DDevice(p,a)       (p)->lpVtbl->GetDirect3DDevice(p,a)
501 /*** IDirect3DRMDevice2 methods ***/
502 #define IDirect3DRMDevice2_InitFromD3D2(p,a,b)          (p)->lpVtbl->InitFromD3D2(p,a,b)
503 #define IDirect3DRMDevice2_InitFromSurface(p,a,b,c)     (p)->lpVtbl->InitFromSurface(p,a,b,c)
504 #define IDirect3DRMDevice2_SetRenderMode(p,a)           (p)->lpVtbl->SetRenderMode(p,a)
505 #define IDirect3DRMDevice2_GetRenderMode(p)             (p)->lpVtbl->GetRenderMode(p)
506 #define IDirect3DRMDevice2_GetDirect3DDevice2(p,a)      (p)->lpVtbl->GetDirect3DDevice2(p,a)
507 #else
508 /*** IUnknown methods ***/
509 #define IDirect3DRMDevice2_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
510 #define IDirect3DRMDevice2_AddRef(p)                    (p)->AddRef()
511 #define IDirect3DRMDevice2_Release(p)                   (p)->Release()
512 /*** IDirect3DRMObject methods ***/
513 #define IDirect3DRMDevice2_Clone(p,a,b,c)               (p)->Clone(a,b,c)
514 #define IDirect3DRMDevice2_AddDestroyCallback(p,a,b)    (p)->AddDestroyCallback(a,b)
515 #define IDirect3DRMDevice2_DeleteDestroyCallback(p,a,b) (p)->DeleteDestroyCallback(a,b)
516 #define IDirect3DRMDevice2_SetAppData(p,a)              (p)->SetAppData(a)
517 #define IDirect3DRMDevice2_GetAppData(p)                (p)->GetAppData()
518 #define IDirect3DRMDevice2_SetName(p,a)                 (p)->SetName(a)
519 #define IDirect3DRMDevice2_GetName(p,a,b)               (p)->GetName(a,b)
520 #define IDirect3DRMDevice2_GetClassName(p,a,b)          (p)->GetClassName(a,b)
521 /*** IDirect3DRMDevice methods ***/
522 #define IDirect3DRMDevice2_Init(p,a,b)                  (p)->Init(p,a,b)
523 #define IDirect3DRMDevice2_InitFromD3D(p,a,b)           (p)->InitFromD3D(p,a,b)
524 #define IDirect3DRMDevice2_InitFromClipper(p,a,b,c,d)   (p)->InitFromClipper(p,a,b,c,d)
525 #define IDirect3DRMDevice2_Update(p)                    (p)->Update(p)
526 #define IDirect3DRMDevice2_AddUpdateCallback(p,a,b)     (p)->AddUpdateCallback(p,a,b)
527 #define IDirect3DRMDevice2_DeleteUpdateCallback(p,a,b)  (p)->DeleteUpdateCallback(p,a,b,c)
528 #define IDirect3DRMDevice2_SetBufferCount(p,a)          (p)->SetBufferCount(p,a)
529 #define IDirect3DRMDevice2_GetBufferCount(p)            (p)->GetBufferCount(p)
530 #define IDirect3DRMDevice2_SetDither(p,a)               (p)->SetDither(p,a)
531 #define IDirect3DRMDevice2_SetShades(p,a)               (p)->SetShades(p,a)
532 #define IDirect3DRMDevice2_SetQuality(p,a)              (p)->SetQuality(p,a)
533 #define IDirect3DRMDevice2_SetTextureQuality(p,a)       (p)->SetTextureQuality(p,a)
534 #define IDirect3DRMDevice2_GetViewports(p,a)            (p)->GetViewports(p,a)
535 #define IDirect3DRMDevice2_GetDither(p)                 (p)->GetDither(p)
536 #define IDirect3DRMDevice2_GetShades(p)                 (p)->GetShades(p)
537 #define IDirect3DRMDevice2_GetHeight(p)                 (p)->GetHeight(p)
538 #define IDirect3DRMDevice2_GetWidth(p)                  (p)->GetWidth(p)
539 #define IDirect3DRMDevice2_GetTrianglesDrawn(p)         (p)->GetTrianglesDrawn(p)
540 #define IDirect3DRMDevice2_GetWireframeOptions(p)       (p)->GetWireframeOptions(p)
541 #define IDirect3DRMDevice2_GetQuality(p)                (p)->GetQuality(p)
542 #define IDirect3DRMDevice2_GetColorModel(p)             (p)->GetColorModel(p)
543 #define IDirect3DRMDevice2_GetTextureQuality(p)         (p)->GetTextureQuality(p)
544 #define IDirect3DRMDevice2_GetDirect3DDevice(p,a)       (p)->GetDirect3DDevice(p,a)
545 /*** IDirect3DRMDevice2 methods ***/
546 #define IDirect3DRMDevice2_InitFromD3D2(p,a,b)          (p)->InitFromD3D2(a,b)
547 #define IDirect3DRMDevice2_InitFromSurface(p,a,b,c)     (p)->InitFromSurface(a,b,c)
548 #define IDirect3DRMDevice2_SetRenderMode(p,a)           (p)->SetRenderMode(a)
549 #define IDirect3DRMDevice2_GetRenderMode(p)             (p)->GetRenderMode()
550 #define IDirect3DRMDevice2_GetDirect3DDevice2(p,a)      (p)->GetDirect3DDevice2(a)
551 #endif
552
553 /*****************************************************************************
554  * IDirect3DRMDevice3 interface
555  */
556 #ifdef WINE_NO_UNICODE_MACROS
557 #undef GetClassName
558 #endif
559 #define INTERFACE IDirect3DRMDevice3
560 DECLARE_INTERFACE_(IDirect3DRMDevice3,IDirect3DRMObject)
561 {
562     /*** IUnknown methods ***/
563     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
564     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
565     STDMETHOD_(ULONG,Release)(THIS) PURE;
566     /*** IDirect3DRMObject methods ***/
567     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
568     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK pFunc, LPVOID pArg) PURE;
569     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK pFunc, LPVOID pArg) PURE;
570     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
571     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
572     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
573     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
574     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
575     /*** IDirect3DRMDevice methods ***/
576     STDMETHOD(Init)(THIS_ ULONG width, ULONG height) PURE;
577     STDMETHOD(InitFromD3D)(THIS_ LPDIRECT3D pD3D, LPDIRECT3DDEVICE pD3DDev) PURE;
578     STDMETHOD(InitFromClipper)(THIS_ LPDIRECTDRAWCLIPPER pDDClipper, LPGUID pGUID, int width, int height) PURE;
579     STDMETHOD(Update)(THIS) PURE;
580     STDMETHOD(AddUpdateCallback)(THIS_ D3DRMUPDATECALLBACK, LPVOID arg) PURE;
581     STDMETHOD(DeleteUpdateCallback)(THIS_ D3DRMUPDATECALLBACK, LPVOID arg) PURE;
582     STDMETHOD(SetBufferCount)(THIS_ DWORD) PURE;
583     STDMETHOD_(DWORD, GetBufferCount)(THIS) PURE;
584     STDMETHOD(SetDither)(THIS_ BOOL) PURE;
585     STDMETHOD(SetShades)(THIS_ DWORD) PURE;
586     STDMETHOD(SetQuality)(THIS_ D3DRMRENDERQUALITY) PURE;
587     STDMETHOD(SetTextureQuality)(THIS_ D3DRMTEXTUREQUALITY) PURE;
588     STDMETHOD(GetViewports)(THIS_ LPDIRECT3DRMVIEWPORTARRAY *return_views) PURE;
589     STDMETHOD_(BOOL, GetDither)(THIS) PURE;
590     STDMETHOD_(DWORD, GetShades)(THIS) PURE;
591     STDMETHOD_(DWORD, GetHeight)(THIS) PURE;
592     STDMETHOD_(DWORD, GetWidth)(THIS) PURE;
593     STDMETHOD_(DWORD, GetTrianglesDrawn)(THIS) PURE;
594     STDMETHOD_(DWORD, GetWireframeOptions)(THIS) PURE;
595     STDMETHOD_(D3DRMRENDERQUALITY, GetQuality)(THIS) PURE;
596     STDMETHOD_(D3DCOLORMODEL, GetColorModel)(THIS) PURE;
597     STDMETHOD_(D3DRMTEXTUREQUALITY, GetTextureQuality)(THIS) PURE;
598     STDMETHOD(GetDirect3DDevice)(THIS_ LPDIRECT3DDEVICE *) PURE;
599     /*** IDirect3DRMDevice2 methods ***/
600     STDMETHOD(InitFromD3D2)(THIS_ LPDIRECT3D2 pD3D, LPDIRECT3DDEVICE2 pD3DDev) PURE;
601     STDMETHOD(InitFromSurface)(THIS_ LPGUID pGUID, LPDIRECTDRAW pDD, LPDIRECTDRAWSURFACE pDDSBack) PURE;
602     STDMETHOD(SetRenderMode)(THIS_ DWORD flags) PURE;
603     STDMETHOD_(DWORD, GetRenderMode)(THIS) PURE;
604     STDMETHOD(GetDirect3DDevice2)(THIS_ LPDIRECT3DDEVICE2 *) PURE;
605     /*** IDirect3DRMDevice3 methods ***/
606     STDMETHOD(FindPreferredTextureFormat)(THIS_ DWORD BitDepths, DWORD flags, LPDDPIXELFORMAT pDDPF) PURE;
607     STDMETHOD(RenderStateChange)(THIS_ D3DRENDERSTATETYPE drsType, DWORD val, DWORD flags) PURE;
608     STDMETHOD(LightStateChange)(THIS_ D3DLIGHTSTATETYPE drsType, DWORD val, DWORD flags) PURE;
609     STDMETHOD(GetStateChangeOptions)(THIS_ DWORD StateClass, DWORD StateNum, LPDWORD pFlags) PURE;
610     STDMETHOD(SetStateChangeOptions)(THIS_ DWORD StateClass, DWORD StateNum, DWORD flags) PURE;
611 };
612 #undef INTERFACE
613
614 #if !defined(__cplusplus) || defined(CINTERFACE)
615 /*** IUnknown methods ***/
616 #define IDirect3DRMDevice3_QueryInterface(p,a,b)               (p)->lpVtbl->QueryInterface(p,a,b)
617 #define IDirect3DRMDevice3_AddRef(p)                           (p)->lpVtbl->AddRef(p)
618 #define IDirect3DRMDevice3_Release(p)                          (p)->lpVtbl->Release(p)
619 /*** IDirect3DRMObject methods ***/
620 #define IDirect3DRMDevice3_Clone(p,a,b,c)                      (p)->lpVtbl->Clone(p,a,b,c)
621 #define IDirect3DRMDevice3_AddDestroyCallback(p,a,b)           (p)->lpVtbl->AddDestroyCallback(p,a,b)
622 #define IDirect3DRMDevice3_DeleteDestroyCallback(p,a,b)        (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
623 #define IDirect3DRMDevice3_SetAppData(p,a)                     (p)->lpVtbl->SetAppData(p,a)
624 #define IDirect3DRMDevice3_GetAppData(p)                       (p)->lpVtbl->GetAppData(p)
625 #define IDirect3DRMDevice3_SetName(p,a)                        (p)->lpVtbl->SetName(p,a)
626 #define IDirect3DRMDevice3_GetName(p,a,b)                      (p)->lpVtbl->GetName(p,a,b)
627 #define IDirect3DRMDevice3_GetClassName(p,a,b)                 (p)->lpVtbl->GetClassName(p,a,b)
628 /*** IDirect3DRMDevice methods ***/
629 #define IDirect3DRMDevice3_Init(p,a,b)                         (p)->lpVtbl->Init(p,a,b)
630 #define IDirect3DRMDevice3_InitFromD3D(p,a,b)                  (p)->lpVtbl->InitFromD3D(p,a,b)
631 #define IDirect3DRMDevice3_InitFromClipper(p,a,b,c,d)          (p)->lpVtbl->InitFromClipper(p,a,b,c,d)
632 #define IDirect3DRMDevice3_Update(p)                           (p)->lpVtbl->Update(p)
633 #define IDirect3DRMDevice3_AddUpdateCallback(p,a,b)            (p)->lpVtbl->AddUpdateCallback(p,a,b)
634 #define IDirect3DRMDevice3_DeleteUpdateCallback(p,a,b)         (p)->lpVtbl->DeleteUpdateCallback(p,a,b,c)
635 #define IDirect3DRMDevice3_SetBufferCount(p,a)                 (p)->lpVtbl->SetBufferCount(p,a)
636 #define IDirect3DRMDevice3_GetBufferCount(p)                   (p)->lpVtbl->GetBufferCount(p)
637 #define IDirect3DRMDevice3_SetDither(p,a)                      (p)->lpVtbl->SetDither(p,a)
638 #define IDirect3DRMDevice3_SetShades(p,a)                      (p)->lpVtbl->SetShades(p,a)
639 #define IDirect3DRMDevice3_SetQuality(p,a)                     (p)->lpVtbl->SetQuality(p,a)
640 #define IDirect3DRMDevice3_SetTextureQuality(p,a)              (p)->lpVtbl->SetTextureQuality(p,a)
641 #define IDirect3DRMDevice3_GetViewports(p,a)                   (p)->lpVtbl->GetViewports(p,a)
642 #define IDirect3DRMDevice3_GetDither(p)                        (p)->lpVtbl->GetDither(p)
643 #define IDirect3DRMDevice3_GetShades(p)                        (p)->lpVtbl->GetShades(p)
644 #define IDirect3DRMDevice3_GetHeight(p)                        (p)->lpVtbl->GetHeight(p)
645 #define IDirect3DRMDevice3_GetWidth(p)                         (p)->lpVtbl->GetWidth(p)
646 #define IDirect3DRMDevice3_GetTrianglesDrawn(p)                (p)->lpVtbl->GetTrianglesDrawn(p)
647 #define IDirect3DRMDevice3_GetWireframeOptions(p)              (p)->lpVtbl->GetWireframeOptions(p)
648 #define IDirect3DRMDevice3_GetQuality(p)                       (p)->lpVtbl->GetQuality(p)
649 #define IDirect3DRMDevice3_GetColorModel(p)                    (p)->lpVtbl->GetColorModel(p)
650 #define IDirect3DRMDevice3_GetTextureQuality(p)                (p)->lpVtbl->GetTextureQuality(p)
651 #define IDirect3DRMDevice3_GetDirect3DDevice(p,a)              (p)->lpVtbl->GetDirect3DDevice(p,a)
652 /*** IDirect3DRMDevice2 methods ***/
653 #define IDirect3DRMDevice3_InitFromD3D2(p,a,b)                 (p)->lpVtbl->InitFromD3D2(p,a,b)
654 #define IDirect3DRMDevice3_InitFromSurface(p,a,b,c)            (p)->lpVtbl->InitFromSurface(p,a,b,c)
655 #define IDirect3DRMDevice3_SetRenderMode(p,a)                  (p)->lpVtbl->SetRenderMode(p,a)
656 #define IDirect3DRMDevice3_GetRenderMode(p)                    (p)->lpVtbl->GetRenderMode(p)
657 #define IDirect3DRMDevice3_GetDirect3DDevice2(p,a)             (p)->lpVtbl->GetDirect3DDevice2(p,a)
658 /*** IDirect3DRMDevice3 methods ***/
659 #define IDirect3DRMDevice3_FindPreferredTextureFormat(p,a,b,c) (p)->lpVtbl->FindPreferredTextureFormat(p,a,b)
660 #define IDirect3DRMDevice3_RenderStateChange(p,a,b,c)          (p)->lpVtbl->RenderStateChange(p,a,b)
661 #define IDirect3DRMDevice3_LightStateChange(p,a,b,c)           (p)->lpVtbl->LightStateChange(p,a,b)
662 #define IDirect3DRMDevice3_GetStateChangeOptions(p,a,b,c)      (p)->lpVtbl->GetStateChangeOptions(p,a,b)
663 #define IDirect3DRMDevice3_SetStateChangeOptions(p,a,b,c)      (p)->lpVtbl->SetStateChangeOptions(p,a,b)
664 #else
665 /*** IUnknown methods ***/
666 #define IDirect3DRMDevice3_QueryInterface(p,a,b)               (p)->QueryInterface(a,b)
667 #define IDirect3DRMDevice3_AddRef(p)                           (p)->AddRef()
668 #define IDirect3DRMDevice3_Release(p)                          (p)->Release()
669 /*** IDirect3DRMObject methods ***/
670 #define IDirect3DRMDevice3_Clone(p,a,b,c)                      (p)->Clone(a,b,c)
671 #define IDirect3DRMDevice3_AddDestroyCallback(p,a,b)           (p)->AddDestroyCallback(a,b)
672 #define IDirect3DRMDevice3_DeleteDestroyCallback(p,a,b)        (p)->DeleteDestroyCallback(a,b)
673 #define IDirect3DRMDevice3_SetAppData(p,a)                     (p)->SetAppData(a)
674 #define IDirect3DRMDevice3_GetAppData(p)                       (p)->GetAppData()
675 #define IDirect3DRMDevice3_SetName(p,a)                        (p)->SetName(a)
676 #define IDirect3DRMDevice3_GetName(p,a,b)                      (p)->GetName(a,b)
677 #define IDirect3DRMDevice3_GetClassName(p,a,b)                 (p)->GetClassName(a,b)
678 /*** IDirect3DRMDevice methods ***/
679 #define IDirect3DRMDevice3_Init(p,a,b)                         (p)->Init(p,a,b)
680 #define IDirect3DRMDevice3_InitFromD3D(p,a,b)                  (p)->InitFromD3D(p,a,b)
681 #define IDirect3DRMDevice3_InitFromClipper(p,a,b,c,d)          (p)->InitFromClipper(p,a,b,c,d)
682 #define IDirect3DRMDevice3_Update(p)                           (p)->Update(p)
683 #define IDirect3DRMDevice3_AddUpdateCallback(p,a,b)            (p)->AddUpdateCallback(p,a,b)
684 #define IDirect3DRMDevice3_DeleteUpdateCallback(p,a,b)         (p)->DeleteUpdateCallback(p,a,b,c)
685 #define IDirect3DRMDevice3_SetBufferCount(p,a)                 (p)->SetBufferCount(p,a)
686 #define IDirect3DRMDevice3_GetBufferCount(p)                   (p)->GetBufferCount(p)
687 #define IDirect3DRMDevice3_SetDither(p,a)                      (p)->SetDither(p,a)
688 #define IDirect3DRMDevice3_SetShades(p,a)                      (p)->SetShades(p,a)
689 #define IDirect3DRMDevice3_SetQuality(p,a)                     (p)->SetQuality(p,a)
690 #define IDirect3DRMDevice3_SetTextureQuality(p,a)              (p)->SetTextureQuality(p,a)
691 #define IDirect3DRMDevice3_GetViewports(p,a)                   (p)->GetViewports(p,a)
692 #define IDirect3DRMDevice3_GetDither(p)                        (p)->GetDither(p)
693 #define IDirect3DRMDevice3_GetShades(p)                        (p)->GetShades(p)
694 #define IDirect3DRMDevice3_GetHeight(p)                        (p)->GetHeight(p)
695 #define IDirect3DRMDevice3_GetWidth(p)                         (p)->GetWidth(p)
696 #define IDirect3DRMDevice3_GetTrianglesDrawn(p)                (p)->GetTrianglesDrawn(p)
697 #define IDirect3DRMDevice3_GetWireframeOptions(p)              (p)->GetWireframeOptions(p)
698 #define IDirect3DRMDevice3_GetQuality(p)                       (p)->GetQuality(p)
699 #define IDirect3DRMDevice3_GetColorModel(p)                    (p)->GetColorModel(p)
700 #define IDirect3DRMDevice3_GetTextureQuality(p)                (p)->GetTextureQuality(p)
701 #define IDirect3DRMDevice3_GetDirect3DDevice(p,a)              (p)->GetDirect3DDevice(p,a)
702 /*** IDirect3DRMDevice2 methods ***/
703 #define IDirect3DRMDevice3_InitFromD3D2(p,a,b)                 (p)->InitFromD3D2(a,b)
704 #define IDirect3DRMDevice3_InitFromSurface(p,a,b,c)            (p)->InitFromSurface(a,b,c)
705 #define IDirect3DRMDevice3_SetRenderMode(p,a)                  (p)->SetRenderMode(a)
706 #define IDirect3DRMDevice3_GetRenderMode(p)                    (p)->GetRenderMode()
707 #define IDirect3DRMDevice3_GetDirect3DDevice2(p,a)             (p)->GetDirect3DDevice2(a)
708 /*** IDirect3DRMDevice3 methods ***/
709 #define IDirect3DRMDevice3_FindPreferredTextureFormat(p,a,b,c) (p)->FindPreferredTextureFormat(a,b,c)
710 #define IDirect3DRMDevice3_RenderStateChange(p,a,b,c)          (p)->RenderStateChange(a,b,c)
711 #define IDirect3DRMDevice3_LightStateChange(p,a,b,c)           (p)->LightStateChange(a,b,c)
712 #define IDirect3DRMDevice3_GetStateChangeOptions(p,a,b,c)      (p)->GetStateChangeOptions(a,b,c)
713 #define IDirect3DRMDevice3_SetStateChangeOptions(p,a,b,c)      (p)->SetStateChangeOptions(a,b,c)
714 #endif
715
716 /*****************************************************************************
717  * IDirect3DRMViewport interface
718  */
719 #define INTERFACE IDirect3DRMViewport
720 DECLARE_INTERFACE_(IDirect3DRMViewport,IDirect3DRMObject)
721 {
722     /*** IUnknown methods ***/
723     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
724     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
725     STDMETHOD_(ULONG,Release)(THIS) PURE;
726     /*** IDirect3DRMObject methods ***/
727     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
728     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
729     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
730     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
731     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
732     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
733     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
734     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
735     /*** IDirect3DRMViewport methods ***/
736     STDMETHOD(Init) (THIS_ LPDIRECT3DRMDEVICE dev, LPDIRECT3DRMFRAME camera, DWORD xpos, DWORD ypos,
737         DWORD width, DWORD height) PURE;
738     STDMETHOD(Clear)(THIS) PURE;
739     STDMETHOD(Render)(THIS_ LPDIRECT3DRMFRAME) PURE;
740     STDMETHOD(SetFront)(THIS_ D3DVALUE) PURE;
741     STDMETHOD(SetBack)(THIS_ D3DVALUE) PURE;
742     STDMETHOD(SetField)(THIS_ D3DVALUE) PURE;
743     STDMETHOD(SetUniformScaling)(THIS_ BOOL) PURE;
744     STDMETHOD(SetCamera)(THIS_ LPDIRECT3DRMFRAME) PURE;
745     STDMETHOD(SetProjection)(THIS_ D3DRMPROJECTIONTYPE) PURE;
746     STDMETHOD(Transform)(THIS_ D3DRMVECTOR4D *d, D3DVECTOR *s) PURE;
747     STDMETHOD(InverseTransform)(THIS_ D3DVECTOR *d, D3DRMVECTOR4D *s) PURE;
748     STDMETHOD(Configure)(THIS_ LONG x, LONG y, DWORD width, DWORD height) PURE;
749     STDMETHOD(ForceUpdate)(THIS_ DWORD x1, DWORD y1, DWORD x2, DWORD y2) PURE;
750     STDMETHOD(SetPlane)(THIS_ D3DVALUE left, D3DVALUE right, D3DVALUE bottom, D3DVALUE top) PURE;
751     STDMETHOD(GetCamera)(THIS_ LPDIRECT3DRMFRAME *) PURE;
752     STDMETHOD(GetDevice)(THIS_ LPDIRECT3DRMDEVICE *) PURE;
753     STDMETHOD(GetPlane)(THIS_ D3DVALUE *left, D3DVALUE *right, D3DVALUE *bottom, D3DVALUE *top) PURE;
754     STDMETHOD(Pick)(THIS_ LONG x, LONG y, LPDIRECT3DRMPICKEDARRAY *return_visuals) PURE;
755     STDMETHOD_(BOOL, GetUniformScaling)(THIS) PURE;
756     STDMETHOD_(LONG, GetX)(THIS) PURE;
757     STDMETHOD_(LONG, GetY)(THIS) PURE;
758     STDMETHOD_(DWORD, GetWidth)(THIS) PURE;
759     STDMETHOD_(DWORD, GetHeight)(THIS) PURE;
760     STDMETHOD_(D3DVALUE, GetField)(THIS) PURE;
761     STDMETHOD_(D3DVALUE, GetBack)(THIS) PURE;
762     STDMETHOD_(D3DVALUE, GetFront)(THIS) PURE;
763     STDMETHOD_(D3DRMPROJECTIONTYPE, GetProjection)(THIS) PURE;
764     STDMETHOD(GetDirect3DViewport)(THIS_ LPDIRECT3DVIEWPORT *) PURE;
765 };
766 #undef INTERFACE
767
768 #if !defined(__cplusplus) || defined(CINTERFACE)
769 /*** IUnknown methods ***/
770 #define IDirect3DRMViewport_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
771 #define IDirect3DRMViewport_AddRef(p)                    (p)->lpVtbl->AddRef(p)
772 #define IDirect3DRMViewport_Release(p)                   (p)->lpVtbl->Release(p)
773 /*** IDirect3DRMObject methods ***/
774 #define IDirect3DRMViewport_Clone(p,a,b,c)               (p)->lpVtbl->Clone(p,a,b,c)
775 #define IDirect3DRMViewport_AddDestroyCallback(p,a,b)    (p)->lpVtbl->AddDestroyCallback(p,a,b)
776 #define IDirect3DRMViewport_DeleteDestroyCallback(p,a,b) (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
777 #define IDirect3DRMViewport_SetAppData(p,a)              (p)->lpVtbl->SetAppData(p,a)
778 #define IDirect3DRMViewport_GetAppData(p)                (p)->lpVtbl->GetAppData(p)
779 #define IDirect3DRMViewport_SetName(p,a)                 (p)->lpVtbl->SetName(p,a)
780 #define IDirect3DRMViewport_GetName(p,a,b)               (p)->lpVtbl->GetName(p,a,b)
781 #define IDirect3DRMViewport_GetClassName(p,a,b)          (p)->lpVtbl->GetClassName(p,a,b)
782 /*** IDirect3DRMViewport methods ***/
783 #define IDirect3DRMViewport_Init(p,a,b,c,d)              (p)->lpVtbl->Init(p,a,b,c,d)
784 #define IDirect3DRMViewport_Clear(p)                     (p)->lpVtbl->Clear(p)
785 #define IDirect3DRMViewport_Render(p,a)                  (p)->lpVtbl->Render(p,a)
786 #define IDirect3DRMViewport_SetFront(p,a)                (p)->lpVtbl->SetFront(p,a)
787 #define IDirect3DRMViewport_SetBack(p,a)                 (p)->lpVtbl->(p,a)
788 #define IDirect3DRMViewport_SetField(p,a)                (p)->lpVtbl->(p,a)
789 #define IDirect3DRMViewport_SetUniformScaling(p,a)       (p)->lpVtbl->SetUniformScaling(p,a)
790 #define IDirect3DRMViewport_SetCamera(p,a)               (p)->lpVtbl->SetCamera(p,a)
791 #define IDirect3DRMViewport_SetProjection(p,a)           (p)->lpVtbl->SetProjection(p,a)
792 #define IDirect3DRMViewport_Transform(p,a,b)             (p)->lpVtbl->Transform(p,a,b)
793 #define IDirect3DRMViewport_InverseTransform(p,a,b)      (p)->lpVtbl->(p,a,b)
794 #define IDirect3DRMViewport_Configure(p,a,b,c,d)         (p)->lpVtbl->Configure(p,a,b,c,d)
795 #define IDirect3DRMViewport_ForceUpdate(p,a,b,c,d)       (p)->lpVtbl->ForceUpdate(p,a,b,c,d)
796 #define IDirect3DRMViewport_SetPlane(p,a,b,c,d)          (p)->lpVtbl->SetPlane(p,a,b,c,d)
797 #define IDirect3DRMViewport_GetCamera(p,a)               (p)->lpVtbl->(p,a)
798 #define IDirect3DRMViewport_GetDevice(p,a)               (p)->lpVtbl->GetDevice(p,a)
799 #define IDirect3DRMViewport_GetPlane(p,a,b,c,d)          (p)->lpVtbl->GetPlane(p,a,b,c,d)
800 #define IDirect3DRMViewport_Pick(p,a,b,c)                (p)->lpVtbl->Pick(p,a,b,c)
801 #define IDirect3DRMViewport_GetUniformScaling(p)         (p)->lpVtbl->GetUniformScaling(p)
802 #define IDirect3DRMViewport_GetX(p)                      (p)->lpVtbl->GetX(p)
803 #define IDirect3DRMViewport_GetY(p)                      (p)->lpVtbl->GetY(p)
804 #define IDirect3DRMViewport_GetWidth(p)                  (p)->lpVtbl->GetWidth(p)
805 #define IDirect3DRMViewport_GetHeight(p)                 (p)->lpVtbl->GetHeight(p)
806 #define IDirect3DRMViewport_GetField(p)                  (p)->lpVtbl->GetField(p)
807 #define IDirect3DRMViewport_GetBack(p)                   (p)->lpVtbl->GetBack(p)
808 #define IDirect3DRMViewport_GetFront(p)                  (p)->lpVtbl->GetFront(p)
809 #define IDirect3DRMViewport_GetProjection(p)             (p)->lpVtbl->GetProjection(p)
810 #define IDirect3DRMViewport_GetDirect3DViewport(p,a)     (p)->lpVtbl->GetDirect3DViewport(p,a)
811 #else
812 /*** IUnknown methods ***/
813 #define IDirect3DRMViewport_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
814 #define IDirect3DRMViewport_AddRef(p)                    (p)->AddRef()
815 #define IDirect3DRMViewport_Release(p)                   (p)->Release()
816 /*** IDirect3DRMObject methods ***/
817 #define IDirect3DRMViewport_Clone(p,a,b,c)               (p)->Clone(a,b,c)
818 #define IDirect3DRMViewport_AddDestroyCallback(p,a,b)    (p)->AddDestroyCallback(a,b)
819 #define IDirect3DRMViewport_DeleteDestroyCallback(p,a,b) (p)->DeleteDestroyCallback(a,b)
820 #define IDirect3DRMViewport_SetAppData(p,a)              (p)->SetAppData(a)
821 #define IDirect3DRMViewport_GetAppData(p)                (p)->GetAppData()
822 #define IDirect3DRMViewport_SetName(p,a)                 (p)->SetName(a)
823 #define IDirect3DRMViewport_GetName(p,a,b)               (p)->GetName(a,b)
824 #define IDirect3DRMViewport_GetClassName(p,a,b)          (p)->GetClassName(a,b)
825 /*** IDirect3DRMViewport methods ***/
826 #define IDirect3DRMViewport_Init(p,a,b,c,d)              (p)->Init(p,a,b,c,d)
827 #define IDirect3DRMViewport_Clear(p)                     (p)->Clear(p)
828 #define IDirect3DRMViewport_Render(p,a)                  (p)->Render(p,a)
829 #define IDirect3DRMViewport_SetFront(p,a)                (p)->SetFront(p,a)
830 #define IDirect3DRMViewport_SetBack(p,a)                 (p)->(p,a)
831 #define IDirect3DRMViewport_SetField(p,a)                (p)->(p,a)
832 #define IDirect3DRMViewport_SetUniformScaling(p,a)       (p)->SetUniformScaling(p,a)
833 #define IDirect3DRMViewport_SetCamera(p,a)               (p)->SetCamera(p,a)
834 #define IDirect3DRMViewport_SetProjection(p,a)           (p)->SetProjection(p,a)
835 #define IDirect3DRMViewport_Transform(p,a,b)             (p)->Transform(p,a,b)
836 #define IDirect3DRMViewport_InverseTransform(p,a,b)      (p)->(p,a,b)
837 #define IDirect3DRMViewport_Configure(p,a,b,c,d)         (p)->Configure(p,a,b,c,d)
838 #define IDirect3DRMViewport_ForceUpdate(p,a,b,c,d)       (p)->ForceUpdate(p,a,b,c,d)
839 #define IDirect3DRMViewport_SetPlane(p,a,b,c,d)          (p)->SetPlane(p,a,b,c,d)
840 #define IDirect3DRMViewport_GetCamera(p,a)               (p)->GetCamera(p,a)
841 #define IDirect3DRMViewport_GetDevice(p,a)               (p)->GetDevice(p,a)
842 #define IDirect3DRMViewport_GetPlane(p,a,b,c,d)          (p)->GetPlane(p,a,b,c,d)
843 #define IDirect3DRMViewport_Pick(p,a,b,c)                (p)->Pick(p,a,b,c)
844 #define IDirect3DRMViewport_GetUniformScaling(p)         (p)->GetUniformScaling(p)
845 #define IDirect3DRMViewport_GetX(p)                      (p)->GetX(p)
846 #define IDirect3DRMViewport_GetY(p)                      (p)->GetY(p)
847 #define IDirect3DRMViewport_GetWidth(p)                  (p)->GetWidth(p)
848 #define IDirect3DRMViewport_GetHeight(p)                 (p)->GetHeight(p)
849 #define IDirect3DRMViewport_GetField(p)                  (p)->GetField(p)
850 #define IDirect3DRMViewport_GetBack(p)                   (p)->GetBack(p)
851 #define IDirect3DRMViewport_GetFront(p)                  (p)->GetFront(p)
852 #define IDirect3DRMViewport_GetProjection(p)             (p)->GetProjection(p)
853 #define IDirect3DRMViewport_GetDirect3DViewport(p,a)     (p)->GetDirect3DViewport(p,a)
854 #endif
855
856 /*****************************************************************************
857  * IDirect3DRMViewport2 interface
858  */
859 #define INTERFACE IDirect3DRMViewport2
860 DECLARE_INTERFACE_(IDirect3DRMViewport2,IDirect3DRMObject)
861 {
862     /*** IUnknown methods ***/
863     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
864     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
865     STDMETHOD_(ULONG,Release)(THIS) PURE;
866     /*** IDirect3DRMObject methods ***/
867     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
868     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
869     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
870     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
871     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
872     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
873     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
874     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
875     /*** IDirect3DRMViewport2 methods ***/
876     STDMETHOD(Init) (THIS_ LPDIRECT3DRMDEVICE3 dev, LPDIRECT3DRMFRAME3 camera, DWORD xpos, DWORD ypos,
877         DWORD width, DWORD height) PURE;
878     STDMETHOD(Clear)(THIS_ DWORD flags) PURE;
879     STDMETHOD(Render)(THIS_ LPDIRECT3DRMFRAME3) PURE;
880     STDMETHOD(SetFront)(THIS_ D3DVALUE) PURE;
881     STDMETHOD(SetBack)(THIS_ D3DVALUE) PURE;
882     STDMETHOD(SetField)(THIS_ D3DVALUE) PURE;
883     STDMETHOD(SetUniformScaling)(THIS_ BOOL) PURE;
884     STDMETHOD(SetCamera)(THIS_ LPDIRECT3DRMFRAME3) PURE;
885     STDMETHOD(SetProjection)(THIS_ D3DRMPROJECTIONTYPE) PURE;
886     STDMETHOD(Transform)(THIS_ D3DRMVECTOR4D *d, D3DVECTOR *s) PURE;
887     STDMETHOD(InverseTransform)(THIS_ D3DVECTOR *d, D3DRMVECTOR4D *s) PURE;
888     STDMETHOD(Configure)(THIS_ LONG x, LONG y, DWORD width, DWORD height) PURE;
889     STDMETHOD(ForceUpdate)(THIS_ DWORD x1, DWORD y1, DWORD x2, DWORD y2) PURE;
890     STDMETHOD(SetPlane)(THIS_ D3DVALUE left, D3DVALUE right, D3DVALUE bottom, D3DVALUE top) PURE;
891     STDMETHOD(GetCamera)(THIS_ LPDIRECT3DRMFRAME3 *) PURE;
892     STDMETHOD(GetDevice)(THIS_ LPDIRECT3DRMDEVICE3 *) PURE;
893     STDMETHOD(GetPlane)(THIS_ D3DVALUE *left, D3DVALUE *right, D3DVALUE *bottom, D3DVALUE *top) PURE;
894     STDMETHOD(Pick)(THIS_ LONG x, LONG y, LPDIRECT3DRMPICKEDARRAY *return_visuals) PURE;
895     STDMETHOD_(BOOL, GetUniformScaling)(THIS) PURE;
896     STDMETHOD_(LONG, GetX)(THIS) PURE;
897     STDMETHOD_(LONG, GetY)(THIS) PURE;
898     STDMETHOD_(DWORD, GetWidth)(THIS) PURE;
899     STDMETHOD_(DWORD, GetHeight)(THIS) PURE;
900     STDMETHOD_(D3DVALUE, GetField)(THIS) PURE;
901     STDMETHOD_(D3DVALUE, GetBack)(THIS) PURE;
902     STDMETHOD_(D3DVALUE, GetFront)(THIS) PURE;
903     STDMETHOD_(D3DRMPROJECTIONTYPE, GetProjection)(THIS) PURE;
904     STDMETHOD(GetDirect3DViewport)(THIS_ LPDIRECT3DVIEWPORT *) PURE;
905     STDMETHOD(TransformVectors)(THIS_ DWORD NumVectors, LPD3DRMVECTOR4D pDstVectors,
906         LPD3DVECTOR pSrcVectors) PURE;
907     STDMETHOD(InverseTransformVectors)(THIS_ DWORD NumVectors, LPD3DVECTOR pDstVectors,
908         LPD3DRMVECTOR4D pSrcVectors) PURE;
909 };
910 #undef INTERFACE
911
912 #if !defined(__cplusplus) || defined(CINTERFACE)
913 /*** IUnknown methods ***/
914 #define IDirect3DRMViewport2_QueryInterface(p,a,b)            (p)->lpVtbl->QueryInterface(p,a,b)
915 #define IDirect3DRMViewport2_AddRef(p)                        (p)->lpVtbl->AddRef(p)
916 #define IDirect3DRMViewport2_Release(p)                       (p)->lpVtbl->Release(p)
917 /*** IDirect3DRMObject methods ***/
918 #define IDirect3DRMViewport_2Clone(p,a,b,c)                   (p)->lpVtbl->Clone(p,a,b,c)
919 #define IDirect3DRMViewport2_AddDestroyCallback(p,a,b)        (p)->lpVtbl->AddDestroyCallback(p,a,b)
920 #define IDirect3DRMViewport2_DeleteDestroyCallback(p,a,b)     (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
921 #define IDirect3DRMViewport2_SetAppData(p,a)                  (p)->lpVtbl->SetAppData(p,a)
922 #define IDirect3DRMViewport2_GetAppData(p)                    (p)->lpVtbl->GetAppData(p)
923 #define IDirect3DRMViewport2_SetName(p,a)                     (p)->lpVtbl->SetName(p,a)
924 #define IDirect3DRMViewport2_GetName(p,a,b)                   (p)->lpVtbl->GetName(p,a,b)
925 #define IDirect3DRMViewport2_GetClassName(p,a,b)              (p)->lpVtbl->GetClassName(p,a,b)
926 /*** IDirect3DRMViewport2 methods ***/
927 #define IDirect3DRMViewport2_Init(p,a,b,c,d,e,f)              (p)->lpVtbl->Init(p,a,b,c,d,e,f)
928 #define IDirect3DRMViewport2_Clear(p,a)                       (p)->lpVtbl->Clear(p,a)
929 #define IDirect3DRMViewport2_Render(p,a)                      (p)->lpVtbl->Render(p,a)
930 #define IDirect3DRMViewport2_SetFront(p,a)                    (p)->lpVtbl->SetFront(p,a)
931 #define IDirect3DRMViewport2_SetBack(p,a)                     (p)->lpVtbl->(p,a)
932 #define IDirect3DRMViewport2_SetField(p,a)                    (p)->lpVtbl->(p,a)
933 #define IDirect3DRMViewport2_SetUniformScaling(p,a)           (p)->lpVtbl->SetUniformScaling(p,a)
934 #define IDirect3DRMViewport2_SetCamera(p,a)                   (p)->lpVtbl->SetCamera(p,a)
935 #define IDirect3DRMViewport2_SetProjection(p,a)               (p)->lpVtbl->SetProjection(p,a)
936 #define IDirect3DRMViewport2_Transform(p,a,b)                 (p)->lpVtbl->Transform(p,a,b)
937 #define IDirect3DRMViewport2_InverseTransform(p,a,b)          (p)->lpVtbl->(p,a,b)
938 #define IDirect3DRMViewport2_Configure(p,a,b,c,d)             (p)->lpVtbl->Configure(p,a,b,c,d)
939 #define IDirect3DRMViewport2_ForceUpdate(p,a,b,c,d)           (p)->lpVtbl->ForceUpdate(p,a,b,c,d)
940 #define IDirect3DRMViewport2_SetPlane(p,a,b,c,d)              (p)->lpVtbl->SetPlane(p,a,b,c,d)
941 #define IDirect3DRMViewport2_GetCamera(p,a)                   (p)->lpVtbl->(p,a)
942 #define IDirect3DRMViewport2_GetDevice(p,a)                   (p)->lpVtbl->GetDevice(p,a)
943 #define IDirect3DRMViewport2_GetPlane(p,a,b,c,d)              (p)->lpVtbl->GetPlane(p,a,b,c,d)
944 #define IDirect3DRMViewport2_Pick(p,a,b,c)                    (p)->lpVtbl->Pick(p,a,b,c)
945 #define IDirect3DRMViewport2_GetUniformScaling(p)             (p)->lpVtbl->GetUniformScaling(p)
946 #define IDirect3DRMViewport2_GetX(p)                          (p)->lpVtbl->GetX(p)
947 #define IDirect3DRMViewport2_GetY(p)                          (p)->lpVtbl->GetY(p)
948 #define IDirect3DRMViewport2_GetWidth(p)                      (p)->lpVtbl->GetWidth(p)
949 #define IDirect3DRMViewport2_GetHeight(p)                     (p)->lpVtbl->GetHeight(p)
950 #define IDirect3DRMViewport2_GetField(p)                      (p)->lpVtbl->GetField(p)
951 #define IDirect3DRMViewport2_GetBack(p)                       (p)->lpVtbl->GetBack(p)
952 #define IDirect3DRMViewport2_GetFront(p)                      (p)->lpVtbl->GetFront(p)
953 #define IDirect3DRMViewport2_GetProjection(p)                 (p)->lpVtbl->GetProjection(p)
954 #define IDirect3DRMViewport2_GetDirect3DViewport(p,a)         (p)->lpVtbl->GetDirect3DViewport(p,a)
955 #define IDirect3DRMViewport2_TransformVectors(p,a,b,c)        (p)->lpVtbl->TransformVectors(p,a,b,c)
956 #define IDirect3DRMViewport2_InverseTransformVectors(p,a,b,c) (p)->lpVtbl->InverseTransformVectors(p,ab,c)
957 #else
958 /*** IUnknown methods ***/
959 #define IDirect3DRMViewport2_QueryInterface(p,a,b)            (p)->QueryInterface(a,b)
960 #define IDirect3DRMViewport2_AddRef(p)                        (p)->AddRef()
961 #define IDirect3DRMViewport2_Release(p)                       (p)->Release()
962 /*** IDirect3DRMObject methods ***/
963 #define IDirect3DRMViewport2_Clone(p,a,b,c)                   (p)->Clone(a,b,c)
964 #define IDirect3DRMViewport2_AddDestroyCallback(p,a,b)        (p)->AddDestroyCallback(a,b)
965 #define IDirect3DRMViewport2_DeleteDestroyCallback(p,a,b)     (p)->DeleteDestroyCallback(a,b)
966 #define IDirect3DRMViewport2_SetAppData(p,a)                  (p)->SetAppData(a)
967 #define IDirect3DRMViewport2_GetAppData(p)                    (p)->GetAppData()
968 #define IDirect3DRMViewport2_SetName(p,a)                     (p)->SetName(a)
969 #define IDirect3DRMViewport2_GetName(p,a,b)                   (p)->GetName(a,b)
970 #define IDirect3DRMViewport2_GetClassName(p,a,b)              (p)->GetClassName(a,b)
971 /*** IDirect3DRMViewport2 methods ***/
972 #define IDirect3DRMViewport2_Init(p,a,b,c,d)                  (p)->Init(p,a,b,c,d)
973 #define IDirect3DRMViewport2_Clear(p)                         (p)->Clear(p)
974 #define IDirect3DRMViewport2_Render(p,a)                      (p)->Render(p,a)
975 #define IDirect3DRMViewport2_SetFront(p,a)                    (p)->SetFront(p,a)
976 #define IDirect3DRMViewport2_SetBack(p,a)                     (p)->(p,a)
977 #define IDirect3DRMViewport2_SetField(p,a)                    (p)->(p,a)
978 #define IDirect3DRMViewport2_SetUniformScaling(p,a)           (p)->SetUniformScaling(p,a)
979 #define IDirect3DRMViewport2_SetCamera(p,a)                   (p)->SetCamera(p,a)
980 #define IDirect3DRMViewport2_SetProjection(p,a)               (p)->SetProjection(p,a)
981 #define IDirect3DRMViewport2_Transform(p,a,b)                 (p)->Transform(p,a,b)
982 #define IDirect3DRMViewport2_InverseTransform(p,a,b)          (p)->(p,a,b)
983 #define IDirect3DRMViewport2_Configure(p,a,b,c,d)             (p)->Configure(p,a,b,c,d)
984 #define IDirect3DRMViewport2_ForceUpdate(p,a,b,c,d)           (p)->ForceUpdate(p,a,b,c,d)
985 #define IDirect3DRMViewport2_SetPlane(p,a,b,c,d)              (p)->SetPlane(p,a,b,c,d)
986 #define IDirect3DRMViewport2_GetCamera(p,a)                   (p)->GetCamera(p,a)
987 #define IDirect3DRMViewport2_GetDevice(p,a)                   (p)->GetDevice(p,a)
988 #define IDirect3DRMViewport2_GetPlane(p,a,b,c,d)              (p)->GetPlane(p,a,b,c,d)
989 #define IDirect3DRMViewport2_Pick(p,a,b,c)                    (p)->Pick(p,a,b,c)
990 #define IDirect3DRMViewport2_GetUniformScaling(p)             (p)->GetUniformScaling(p)
991 #define IDirect3DRMViewport2_GetX(p)                          (p)->GetX(p)
992 #define IDirect3DRMViewport2_GetY(p)                          (p)->GetY(p)
993 #define IDirect3DRMViewport2_GetWidth(p)                      (p)->GetWidth(p)
994 #define IDirect3DRMViewport2_GetHeight(p)                     (p)->GetHeight(p)
995 #define IDirect3DRMViewport2_GetField(p)                      (p)->GetField(p)
996 #define IDirect3DRMViewport2_GetBack(p)                       (p)->GetBack(p)
997 #define IDirect3DRMViewport2_GetFront(p)                      (p)->GetFront(p)
998 #define IDirect3DRMViewport2_GetProjection(p)                 (p)->GetProjection(p)
999 #define IDirect3DRMViewport2_GetDirect3DViewport(p,a)         (p)->GetDirect3DViewport(p,a)
1000 #define IDirect3DRMViewport2_TransformVectors(p,a,b,c)        (p)->TransformVectors(a,b,c)
1001 #define IDirect3DRMViewport2_InverseTransformVectors(p,a,b,c) (p)->InverseTransformVectors(ab,c)
1002 #endif
1003
1004 /*****************************************************************************
1005  * IDirect3DRMFrame interface
1006  */
1007 #define INTERFACE IDirect3DRMFrame
1008 DECLARE_INTERFACE_(IDirect3DRMFrame,IDirect3DRMVisual)
1009 {
1010     /*** IUnknown methods ***/
1011     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
1012     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
1013     STDMETHOD_(ULONG,Release)(THIS) PURE;
1014     /*** IDirect3DRMObject methods ***/
1015     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
1016     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
1017     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
1018     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
1019     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
1020     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
1021     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
1022     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
1023     /*** IDirect3DRMFrame methods ***/
1024     STDMETHOD(AddChild)(THIS_ LPDIRECT3DRMFRAME child) PURE;
1025     STDMETHOD(AddLight)(THIS_ LPDIRECT3DRMLIGHT) PURE;
1026     STDMETHOD(AddMoveCallback)(THIS_ D3DRMFRAMEMOVECALLBACK, VOID *arg) PURE;
1027     STDMETHOD(AddTransform)(THIS_ D3DRMCOMBINETYPE, D3DRMMATRIX4D) PURE;
1028     STDMETHOD(AddTranslation)(THIS_ D3DRMCOMBINETYPE, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
1029     STDMETHOD(AddScale)(THIS_ D3DRMCOMBINETYPE, D3DVALUE sx, D3DVALUE sy, D3DVALUE sz) PURE;
1030     STDMETHOD(AddRotation)(THIS_ D3DRMCOMBINETYPE, D3DVALUE x, D3DVALUE y, D3DVALUE z, D3DVALUE theta) PURE;
1031     STDMETHOD(AddVisual)(THIS_ LPDIRECT3DRMVISUAL) PURE;
1032     STDMETHOD(GetChildren)(THIS_ LPDIRECT3DRMFRAMEARRAY *children) PURE;
1033     STDMETHOD_(D3DCOLOR, GetColor)(THIS) PURE;
1034     STDMETHOD(GetLights)(THIS_ LPDIRECT3DRMLIGHTARRAY *lights) PURE;
1035     STDMETHOD_(D3DRMMATERIALMODE, GetMaterialMode)(THIS) PURE;
1036     STDMETHOD(GetParent)(THIS_ LPDIRECT3DRMFRAME *) PURE;
1037     STDMETHOD(GetPosition)(THIS_ LPDIRECT3DRMFRAME reference, LPD3DVECTOR return_position) PURE;
1038     STDMETHOD(GetRotation)(THIS_ LPDIRECT3DRMFRAME reference, LPD3DVECTOR axis, LPD3DVALUE return_theta) PURE;
1039     STDMETHOD(GetScene)(THIS_ LPDIRECT3DRMFRAME *) PURE;
1040     STDMETHOD_(D3DRMSORTMODE, GetSortMode)(THIS) PURE;
1041     STDMETHOD(GetTexture)(THIS_ LPDIRECT3DRMTEXTURE *) PURE;
1042     STDMETHOD(GetTransform)(THIS_ D3DRMMATRIX4D return_matrix) PURE;
1043     STDMETHOD(GetVelocity)(THIS_ LPDIRECT3DRMFRAME reference, LPD3DVECTOR return_velocity, BOOL with_rotation) PURE;
1044     STDMETHOD(GetOrientation)(THIS_ LPDIRECT3DRMFRAME reference, LPD3DVECTOR dir, LPD3DVECTOR up) PURE;
1045     STDMETHOD(GetVisuals)(THIS_ LPDIRECT3DRMVISUALARRAY *visuals) PURE;
1046     STDMETHOD(GetTextureTopology)(THIS_ BOOL *wrap_u, BOOL *wrap_v) PURE;
1047     STDMETHOD(InverseTransform)(THIS_ D3DVECTOR *d, D3DVECTOR *s) PURE;
1048     STDMETHOD(Load)(THIS_ LPVOID filename, LPVOID name, D3DRMLOADOPTIONS loadflags, D3DRMLOADTEXTURECALLBACK,
1049         LPVOID pArg)PURE;
1050     STDMETHOD(LookAt)(THIS_ LPDIRECT3DRMFRAME target, LPDIRECT3DRMFRAME reference, D3DRMFRAMECONSTRAINT) PURE;
1051     STDMETHOD(Move)(THIS_ D3DVALUE delta) PURE;
1052     STDMETHOD(DeleteChild)(THIS_ LPDIRECT3DRMFRAME) PURE;
1053     STDMETHOD(DeleteLight)(THIS_ LPDIRECT3DRMLIGHT) PURE;
1054     STDMETHOD(DeleteMoveCallback)(THIS_ D3DRMFRAMEMOVECALLBACK, VOID *arg) PURE;
1055     STDMETHOD(DeleteVisual)(THIS_ LPDIRECT3DRMVISUAL) PURE;
1056     STDMETHOD_(D3DCOLOR, GetSceneBackground)(THIS) PURE;
1057     STDMETHOD(GetSceneBackgroundDepth)(THIS_ LPDIRECTDRAWSURFACE *) PURE;
1058     STDMETHOD_(D3DCOLOR, GetSceneFogColor)(THIS) PURE;
1059     STDMETHOD_(BOOL, GetSceneFogEnable)(THIS) PURE;
1060     STDMETHOD_(D3DRMFOGMODE, GetSceneFogMode)(THIS) PURE;
1061     STDMETHOD(GetSceneFogParams)(THIS_ D3DVALUE *return_start, D3DVALUE *return_end, D3DVALUE *return_density) PURE;
1062     STDMETHOD(SetSceneBackground)(THIS_ D3DCOLOR) PURE;
1063     STDMETHOD(SetSceneBackgroundRGB)(THIS_ D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE;
1064     STDMETHOD(SetSceneBackgroundDepth)(THIS_ LPDIRECTDRAWSURFACE) PURE;
1065     STDMETHOD(SetSceneBackgroundImage)(THIS_ LPDIRECT3DRMTEXTURE) PURE;
1066     STDMETHOD(SetSceneFogEnable)(THIS_ BOOL) PURE;
1067     STDMETHOD(SetSceneFogColor)(THIS_ D3DCOLOR) PURE;
1068     STDMETHOD(SetSceneFogMode)(THIS_ D3DRMFOGMODE) PURE;
1069     STDMETHOD(SetSceneFogParams)(THIS_ D3DVALUE start, D3DVALUE end, D3DVALUE density) PURE;
1070     STDMETHOD(SetColor)(THIS_ D3DCOLOR) PURE;
1071     STDMETHOD(SetColorRGB)(THIS_ D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE;
1072     STDMETHOD_(D3DRMZBUFFERMODE, GetZbufferMode)(THIS) PURE;
1073     STDMETHOD(SetMaterialMode)(THIS_ D3DRMMATERIALMODE) PURE;
1074     STDMETHOD(SetOrientation)(THIS_ LPDIRECT3DRMFRAME reference, D3DVALUE dx, D3DVALUE dy, D3DVALUE dz,
1075         D3DVALUE ux, D3DVALUE uy, D3DVALUE uz) PURE;
1076     STDMETHOD(SetPosition)(THIS_ LPDIRECT3DRMFRAME reference, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
1077     STDMETHOD(SetRotation)(THIS_ LPDIRECT3DRMFRAME reference, D3DVALUE x, D3DVALUE y, D3DVALUE z, D3DVALUE theta) PURE;
1078     STDMETHOD(SetSortMode)(THIS_ D3DRMSORTMODE) PURE;
1079     STDMETHOD(SetTexture)(THIS_ LPDIRECT3DRMTEXTURE) PURE;
1080     STDMETHOD(SetTextureTopology)(THIS_ BOOL wrap_u, BOOL wrap_v) PURE;
1081     STDMETHOD(SetVelocity)(THIS_ LPDIRECT3DRMFRAME reference, D3DVALUE x, D3DVALUE y, D3DVALUE z, BOOL with_rotation) PURE;
1082     STDMETHOD(SetZbufferMode)(THIS_ D3DRMZBUFFERMODE) PURE;
1083     STDMETHOD(Transform)(THIS_ D3DVECTOR *d, D3DVECTOR *s) PURE;
1084 };
1085 #undef INTERFACE
1086
1087 #if !defined(__cplusplus) || defined(CINTERFACE)
1088 /*** IUnknown methods ***/
1089 #define IDirect3DRMFrame_QueryInterface(p,a,b)            (p)->lpVtbl->QueryInterface(p,a,b)
1090 #define IDirect3DRMFrame_AddRef(p)                        (p)->lpVtbl->AddRef(p)
1091 #define IDirect3DRMFrame_Release(p)                       (p)->lpVtbl->Release(p)
1092 /*** IDirect3DRMObject methods ***/
1093 #define IDirect3DRMFrame_Clone(p,a,b,c)                   (p)->lpVtbl->Clone(p,a,b,c)
1094 #define IDirect3DRMFrame_AddDestroyCallback(p,a,b)        (p)->lpVtbl->AddDestroyCallback(p,a,b)
1095 #define IDirect3DRMFrame_DeleteDestroyCallback(p,a,b)     (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
1096 #define IDirect3DRMFrame_SetAppData(p,a)                  (p)->lpVtbl->SetAppData(p,a)
1097 #define IDirect3DRMFrame_GetAppData(p)                    (p)->lpVtbl->GetAppData(p)
1098 #define IDirect3DRMFrame_SetName(p,a)                     (p)->lpVtbl->SetName(p,a)
1099 #define IDirect3DRMFrame_GetName(p,a,b)                   (p)->lpVtbl->GetName(p,a,b)
1100 #define IDirect3DRMFrame_GetClassName(p,a,b)              (p)->lpVtbl->GetClassName(p,a,b)
1101 /*** IDirect3DRMFrame methods ***/
1102 #define IDirect3DRMFrame_AddChild(p,a)                    (p)->lpVtbl->AddChild(p,a)
1103 #define IDirect3DRMFrame_AddLight(p,a)                    (p)->lpVtbl->AddLight(p,a)
1104 #define IDirect3DRMFrame_AddMoveCallback(p,a,b)           (p)->lpVtbl->AddMoveCallback(p,a,b)
1105 #define IDirect3DRMFrame_AddTransform(p,a,b)              (p)->lpVtbl->AddTransform(p,a,b)
1106 #define IDirect3DRMFrame_AddTranslation(p,a,b,c,d)        (p)->lpVtbl->AddTranslation(p,a,b,c,d)
1107 #define IDirect3DRMFrame_AddScale(p,a,b,c,d)              (p)->lpVtbl->AddScale(p,a,b,c,d)
1108 #define IDirect3DRMFrame_AddRotation(p,a,b,c,d,e)         (p)->lpVtbl->AddRotation(p,a,b,c,d,e)
1109 #define IDirect3DRMFrame_AddVisual(p,a)                   (p)->lpVtbl->AddVisual(p,a)
1110 #define IDirect3DRMFrame_GetChildren(p,a)                 (p)->lpVtbl->GetChildren(p,a)
1111 #define IDirect3DRMFrame_GetColor(p)                      (p)->lpVtbl->GetColor(p)
1112 #define IDirect3DRMFrame_GetLights(p,a)                   (p)->lpVtbl->GetLights(p,a)
1113 #define IDirect3DRMFrame_GetMaterialMode(p)               (p)->lpVtbl->GetMaterialMode(p)
1114 #define IDirect3DRMFrame_GetParent(p,a)                   (p)->lpVtbl->GetParent(p,a)
1115 #define IDirect3DRMFrame_GetPosition(p,a,b)               (p)->lpVtbl->GetPosition(p,a,b)
1116 #define IDirect3DRMFrame_GetRotation(p,a,b,c)             (p)->lpVtbl->GetRotation(p,a,b,c)
1117 #define IDirect3DRMFrame_GetScene(p,a)                    (p)->lpVtbl->GetScene(p,a)
1118 #define IDirect3DRMFrame_GetSortMode(p)                   (p)->lpVtbl->GetSortMode(p)
1119 #define IDirect3DRMFrame_GetTexture(p,a)                  (p)->lpVtbl->GetTexture(p,a)
1120 #define IDirect3DRMFrame_GetTransform(p,a)                (p)->lpVtbl->GetTransform(p,a)
1121 #define IDirect3DRMFrame_GetVelocity(p,a,b,c)             (p)->lpVtbl->GetVelocity(p,a,b,c)
1122 #define IDirect3DRMFrame_GetOrientation(p,a,b,c)          (p)->lpVtbl->GetOrientation(p,a,b,c)
1123 #define IDirect3DRMFrame_GetVisuals(p,a)                  (p)->lpVtbl->GetVisuals(p,a)
1124 #define IDirect3DRMFrame_GetTextureTopology(p,a,b)        (p)->lpVtbl->GetTextureTopology(p,a,b)
1125 #define IDirect3DRMFrame_InverseTransform(p,a,b)          (p)->lpVtbl->InverseTransform(p,a,b)
1126 #define IDirect3DRMFrame_Load(p,a,b,c,d,e)                (p)->lpVtbl->Load(p,a,b,c,d,e)
1127 #define IDirect3DRMFrame_LookAt(p,a,b,c)                  (p)->lpVtbl->LookAt(p,a,b,c)
1128 #define IDirect3DRMFrame_Move(p,a)                        (p)->lpVtbl->Move(p,a)
1129 #define IDirect3DRMFrame_DeleteChild(p,a)                 (p)->lpVtbl->DeleteChild(p,a)
1130 #define IDirect3DRMFrame_DeleteLight(p,a)                 (p)->lpVtbl->DeleteLight(p,a)
1131 #define IDirect3DRMFrame_DeleteMoveCallback(p,a,b)        (p)->lpVtbl->DeleteMoveCallback(p,a,b)
1132 #define IDirect3DRMFrame_DeleteVisual(p,a)                (p)->lpVtbl->DeleteVisual(p,a)
1133 #define IDirect3DRMFrame_GetSceneBackground(p)            (p)->lpVtbl->GetSceneBackground(p)
1134 #define IDirect3DRMFrame_GetSceneBackgroundDepth(p,a)     (p)->lpVtbl->GetSceneBackgroundDepth(p,a)
1135 #define IDirect3DRMFrame_GetSceneFogColor(p)              (p)->lpVtbl->GetSceneFogColor(p)
1136 #define IDirect3DRMFrame_GetSceneFogEnable(p)             (p)->lpVtbl->GetSceneFogEnable(p)
1137 #define IDirect3DRMFrame_GetSceneFogMode(p)               (p)->lpVtbl->GetSceneFogMode(p)
1138 #define IDirect3DRMFrame_GetSceneFogParams(p,a,b,c)       (p)->lpVtbl->GetSceneFogParams(p,a,b,c)
1139 #define IDirect3DRMFrame_SetSceneBackground(p,a)          (p)->lpVtbl->SetSceneBackground(p,a)
1140 #define IDirect3DRMFrame_SetSceneBackgroundRGB(p,a,b,c)   (p)->lpVtbl->SetSceneBackgroundRGB(p,a,b,c)
1141 #define IDirect3DRMFrame_SetSceneBackgroundDepth(p,a)     (p)->lpVtbl->SetSceneBackgroundDepth(p,a)
1142 #define IDirect3DRMFrame_SetSceneBackgroundImage(p,a)     (p)->lpVtbl->SetSceneBackgroundImage(p,a)
1143 #define IDirect3DRMFrame_SetSceneFogEnable(p,a)           (p)->lpVtbl->SetSceneFogEnable(p,a)
1144 #define IDirect3DRMFrame_SetSceneFogColor(p,a)            (p)->lpVtbl->SetSceneFogColor(p,a)
1145 #define IDirect3DRMFrame_SetSceneFogMode(p,a)             (p)->lpVtbl->SetSceneFogMode(p,a)
1146 #define IDirect3DRMFrame_SetSceneFogParams(p,a,b,c)       (p)->lpVtbl->SetSceneFogParams(p,a,b,c)
1147 #define IDirect3DRMFrame_SetColor(p,a)                    (p)->lpVtbl->SetColor(p,a)
1148 #define IDirect3DRMFrame_SetColorRGB(p,a,b,c)             (p)->lpVtbl->SetColorRGB(p,a,b,c)
1149 #define IDirect3DRMFrame_GetZbufferMode(p)                (p)->lpVtbl->GetZbufferMode(p)
1150 #define IDirect3DRMFrame_SetMaterialMode(p,a)             (p)->lpVtbl->SetMaterialMode(p,a)
1151 #define IDirect3DRMFrame_SetOrientation(p,a,b,c,d,e,f,g)  (p)->lpVtbl->SetOrientation(p,a,b,c,d,e,f,g)
1152 #define IDirect3DRMFrame_SetPosition(p,a,b,c,d)           (p)->lpVtbl->SetPosition(p,a,b,c,d)
1153 #define IDirect3DRMFrame_SetRotation(p,a,b,c,d,e)         (p)->lpVtbl->SetRotation(p,a,b,c,d,e)
1154 #define IDirect3DRMFrame_SetSortMode(p,a)                 (p)->lpVtbl->SetSortMode(p,a)
1155 #define IDirect3DRMFrame_SetTexture(p,a)                  (p)->lpVtbl->SetTexture(p,a)
1156 #define IDirect3DRMFrame_SetTextureTopology(p,a,b)        (p)->lpVtbl->SetTextureTopology(p,a,b)
1157 #define IDirect3DRMFrame_SetVelocity(p,a,b,c,d,e)         (p)->lpVtbl->SetVelocity(p,a,b,c,d,e)
1158 #define IDirect3DRMFrame_SetZbufferMode(p,a)              (p)->lpVtbl->SetZbufferMode(p,a)
1159 #define IDirect3DRMFrame_Transform(p,a,b)                 (p)->lpVtbl->Transform(p,a,b)
1160 #else
1161 /*** IUnknown methods ***/
1162 #define IDirect3DRMFrame_QueryInterface(p,a,b)            (p)->QueryInterface(a,b)
1163 #define IDirect3DRMFrame_AddRef(p)                        (p)->AddRef()
1164 #define IDirect3DRMFrame_Release(p)                       (p)->Release()
1165 /*** IDirect3DRMObject methods ***/
1166 #define IDirect3DRMFrame_Clone(p,a,b,c)                   (p)->Clone(a,b,c)
1167 #define IDirect3DRMFrame_AddDestroyCallback(p,a,b)        (p)->AddDestroyCallback(a,b)
1168 #define IDirect3DRMFrame_DeleteDestroyCallback(p,a,b)     (p)->DeleteDestroyCallback(a,b)
1169 #define IDirect3DRMFrame_SetAppData(p,a)                  (p)->SetAppData(a)
1170 #define IDirect3DRMFrame_GetAppData(p)                    (p)->GetAppData()
1171 #define IDirect3DRMFrame_SetName(p,a)                     (p)->SetName(a)
1172 #define IDirect3DRMFrame_GetName(p,a,b)                   (p)->GetName(a,b)
1173 #define IDirect3DRMFrame_GetClassName(p,a,b)              (p)->GetClassName(a,b)
1174 /*** IDirect3DRMFrame methods ***/
1175 #define IDirect3DRMFrame_AddChild(p,a)                    (p)->AddChild(a)
1176 #define IDirect3DRMFrame_AddLight(p,a)                    (p)->AddLight(a)
1177 #define IDirect3DRMFrame_AddMoveCallback(p,a,b)           (p)->AddMoveCallback(a,b)
1178 #define IDirect3DRMFrame_AddTransform(p,a,b)              (p)->AddTransform(a,b)
1179 #define IDirect3DRMFrame_AddTranslation(p,a,b,c,d)        (p)->AddTranslation(a,b,c,d)
1180 #define IDirect3DRMFrame_AddScale(p,a,b,c,d)              (p)->AddScale(a,b,c,d)
1181 #define IDirect3DRMFrame_AddRotation(p,a,b,c,d,e)         (p)->AddRotation(a,b,c,d,e)
1182 #define IDirect3DRMFrame_AddVisual(p,a)                   (p)->AddVisual(a)
1183 #define IDirect3DRMFrame_GetChildren(p,a)                 (p)->GetChildren(a)
1184 #define IDirect3DRMFrame_GetColor(p)                      (p)->GetColor()
1185 #define IDirect3DRMFrame_GetLights(p,a)                   (p)->GetLights(a)
1186 #define IDirect3DRMFrame_GetMaterialMode(p)               (p)->GetMaterialMode()
1187 #define IDirect3DRMFrame_GetParent(p,a)                   (p)->GetParent(a)
1188 #define IDirect3DRMFrame_GetPosition(p,a,b)               (p)->GetPosition(a,b)
1189 #define IDirect3DRMFrame_GetRotation(p,a,b,c)             (p)->GetRotation(a,b,c)
1190 #define IDirect3DRMFrame_GetScene(p,a)                    (p)->GetScene(a)
1191 #define IDirect3DRMFrame_GetSortMode(p)                   (p)->GetSortMode()
1192 #define IDirect3DRMFrame_GetTexture(p,a)                  (p)->GetTexture(a)
1193 #define IDirect3DRMFrame_GetTransform(p,a)                (p)->GetTransform(a)
1194 #define IDirect3DRMFrame_GetVelocity(p,a,b,c)             (p)->GetVelocity(a,b,c)
1195 #define IDirect3DRMFrame_GetOrientation(p,a,b,c)          (p)->GetOrientation(a,b,c)
1196 #define IDirect3DRMFrame_GetVisuals(p,a)                  (p)->GetVisuals(a)
1197 #define IDirect3DRMFrame_GetTextureTopology(p,a,b)        (p)->GetTextureTopology(a,b)
1198 #define IDirect3DRMFrame_InverseTransform(p,a,b)          (p)->InverseTransform(a,b)
1199 #define IDirect3DRMFrame_Load(p,a,b,c,d,e)                (p)->Load(a,b,c,d,e)
1200 #define IDirect3DRMFrame_LookAt(p,a,b,c)                  (p)->LookAt(a,b,c)
1201 #define IDirect3DRMFrame_Move(p,a)                        (p)->Move(a)
1202 #define IDirect3DRMFrame_DeleteChild(p,a)                 (p)->DeleteChild(a)
1203 #define IDirect3DRMFrame_DeleteLight(p,a)                 (p)->DeleteLight(a)
1204 #define IDirect3DRMFrame_DeleteMoveCallback(p,a,b)        (p)->DeleteMoveCallback(a,b)
1205 #define IDirect3DRMFrame_DeleteVisual(p,a)                (p)->DeleteVisual(a)
1206 #define IDirect3DRMFrame_GetSceneBackground(p)            (p)->GetSceneBackground()
1207 #define IDirect3DRMFrame_GetSceneBackgroundDepth(p,a)     (p)->GetSceneBackgroundDepth(a)
1208 #define IDirect3DRMFrame_GetSceneFogColor(p)              (p)->GetSceneFogColor()
1209 #define IDirect3DRMFrame_GetSceneFogEnable(p)             (p)->GetSceneFogEnable()
1210 #define IDirect3DRMFrame_GetSceneFogMode(p)               (p)->GetSceneFogMode()
1211 #define IDirect3DRMFrame_GetSceneFogParams(p,a,b,c)       (p)->GetSceneFogParams(a,b,c)
1212 #define IDirect3DRMFrame_SetSceneBackground(p,a)          (p)->SetSceneBackground(a)
1213 #define IDirect3DRMFrame_SetSceneBackgroundRGB(p,a,b,c)   (p)->SetSceneBackgroundRGB(a,b,c)
1214 #define IDirect3DRMFrame_SetSceneBackgroundDepth(p,a)     (p)->SetSceneBackgroundDepth(a)
1215 #define IDirect3DRMFrame_SetSceneBackgroundImage(p,a)     (p)->SetSceneBackgroundImage(a)
1216 #define IDirect3DRMFrame_SetSceneFogEnable(p,a)           (p)->SetSceneFogEnable(a)
1217 #define IDirect3DRMFrame_SetSceneFogColor(p,a)            (p)->SetSceneFogColor(a)
1218 #define IDirect3DRMFrame_SetSceneFogMode(p,a)             (p)->SetSceneFogMode(a)
1219 #define IDirect3DRMFrame_SetSceneFogParams(p,a,b,c)       (p)->SetSceneFogParams(a,b,c)
1220 #define IDirect3DRMFrame_SetColor(p,a)                    (p)->SetColor(a)
1221 #define IDirect3DRMFrame_SetColorRGB(p,a,b,c)             (p)->SetColorRGB(a,b,c)
1222 #define IDirect3DRMFrame_GetZbufferMode(p)                (p)->GetZbufferMode()
1223 #define IDirect3DRMFrame_SetMaterialMode(p,a)             (p)->SetMaterialMode(a)
1224 #define IDirect3DRMFrame_SetOrientation(p,a,b,c,d,e,f,g)  (p)->SetOrientation(a,b,c,d,e,f,g)
1225 #define IDirect3DRMFrame_SetPosition(p,a,b,c,d)           (p)->SetPosition(a,b,c,d)
1226 #define IDirect3DRMFrame_SetRotation(p,a,b,c,d,e)         (p)->SetRotation(a,b,c,d,e)
1227 #define IDirect3DRMFrame_SetSortMode(p,a)                 (p)->SetSortMode(a)
1228 #define IDirect3DRMFrame_SetTexture(p,a)                  (p)->SetTexture(a)
1229 #define IDirect3DRMFrame_SetTextureTopology(p,a,b)        (p)->SetTextureTopology(a,b)
1230 #define IDirect3DRMFrame_SetVelocity(p,a,b,c,d,e)         (p)->SetVelocity(a,b,c,d,e)
1231 #define IDirect3DRMFrame_SetZbufferMode(p,a)              (p)->SetZbufferMode(a)
1232 #define IDirect3DRMFrame_Transform(p,a,b)                 (p)->Transform(a,b)
1233 #endif
1234
1235 /*****************************************************************************
1236  * IDirect3DRMFrame2 interface
1237  */
1238 #define INTERFACE IDirect3DRMFrame2
1239 DECLARE_INTERFACE_(IDirect3DRMFrame2,IDirect3DRMFrame)
1240 {
1241     /*** IUnknown methods ***/
1242     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
1243     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
1244     STDMETHOD_(ULONG,Release)(THIS) PURE;
1245     /*** IDirect3DRMObject methods ***/
1246     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
1247     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
1248     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
1249     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
1250     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
1251     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
1252     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
1253     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
1254     /*** IDirect3DRMFrame methods ***/
1255     STDMETHOD(AddChild)(THIS_ LPDIRECT3DRMFRAME child) PURE;
1256     STDMETHOD(AddLight)(THIS_ LPDIRECT3DRMLIGHT) PURE;
1257     STDMETHOD(AddMoveCallback)(THIS_ D3DRMFRAMEMOVECALLBACK, VOID *arg) PURE;
1258     STDMETHOD(AddTransform)(THIS_ D3DRMCOMBINETYPE, D3DRMMATRIX4D) PURE;
1259     STDMETHOD(AddTranslation)(THIS_ D3DRMCOMBINETYPE, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
1260     STDMETHOD(AddScale)(THIS_ D3DRMCOMBINETYPE, D3DVALUE sx, D3DVALUE sy, D3DVALUE sz) PURE;
1261     STDMETHOD(AddRotation)(THIS_ D3DRMCOMBINETYPE, D3DVALUE x, D3DVALUE y, D3DVALUE z, D3DVALUE theta) PURE;
1262     STDMETHOD(AddVisual)(THIS_ LPDIRECT3DRMVISUAL) PURE;
1263     STDMETHOD(GetChildren)(THIS_ LPDIRECT3DRMFRAMEARRAY *children) PURE;
1264     STDMETHOD_(D3DCOLOR, GetColor)(THIS) PURE;
1265     STDMETHOD(GetLights)(THIS_ LPDIRECT3DRMLIGHTARRAY *lights) PURE;
1266     STDMETHOD_(D3DRMMATERIALMODE, GetMaterialMode)(THIS) PURE;
1267     STDMETHOD(GetParent)(THIS_ LPDIRECT3DRMFRAME *) PURE;
1268     STDMETHOD(GetPosition)(THIS_ LPDIRECT3DRMFRAME reference, LPD3DVECTOR return_position) PURE;
1269     STDMETHOD(GetRotation)(THIS_ LPDIRECT3DRMFRAME reference, LPD3DVECTOR axis, LPD3DVALUE return_theta) PURE;
1270     STDMETHOD(GetScene)(THIS_ LPDIRECT3DRMFRAME *) PURE;
1271     STDMETHOD_(D3DRMSORTMODE, GetSortMode)(THIS) PURE;
1272     STDMETHOD(GetTexture)(THIS_ LPDIRECT3DRMTEXTURE *) PURE;
1273     STDMETHOD(GetTransform)(THIS_ D3DRMMATRIX4D return_matrix) PURE;
1274     STDMETHOD(GetVelocity)(THIS_ LPDIRECT3DRMFRAME reference, LPD3DVECTOR return_velocity, BOOL with_rotation) PURE;
1275     STDMETHOD(GetOrientation)(THIS_ LPDIRECT3DRMFRAME reference, LPD3DVECTOR dir, LPD3DVECTOR up) PURE;
1276     STDMETHOD(GetVisuals)(THIS_ LPDIRECT3DRMVISUALARRAY *visuals) PURE;
1277     STDMETHOD(GetTextureTopology)(THIS_ BOOL *wrap_u, BOOL *wrap_v) PURE;
1278     STDMETHOD(InverseTransform)(THIS_ D3DVECTOR *d, D3DVECTOR *s) PURE;
1279     STDMETHOD(Load)(THIS_ LPVOID filename, LPVOID name, D3DRMLOADOPTIONS loadflags, D3DRMLOADTEXTURECALLBACK,
1280         LPVOID pArg)PURE;
1281     STDMETHOD(LookAt)(THIS_ LPDIRECT3DRMFRAME target, LPDIRECT3DRMFRAME reference, D3DRMFRAMECONSTRAINT) PURE;
1282     STDMETHOD(Move)(THIS_ D3DVALUE delta) PURE;
1283     STDMETHOD(DeleteChild)(THIS_ LPDIRECT3DRMFRAME) PURE;
1284     STDMETHOD(DeleteLight)(THIS_ LPDIRECT3DRMLIGHT) PURE;
1285     STDMETHOD(DeleteMoveCallback)(THIS_ D3DRMFRAMEMOVECALLBACK, VOID *arg) PURE;
1286     STDMETHOD(DeleteVisual)(THIS_ LPDIRECT3DRMVISUAL) PURE;
1287     STDMETHOD_(D3DCOLOR, GetSceneBackground)(THIS) PURE;
1288     STDMETHOD(GetSceneBackgroundDepth)(THIS_ LPDIRECTDRAWSURFACE *) PURE;
1289     STDMETHOD_(D3DCOLOR, GetSceneFogColor)(THIS) PURE;
1290     STDMETHOD_(BOOL, GetSceneFogEnable)(THIS) PURE;
1291     STDMETHOD_(D3DRMFOGMODE, GetSceneFogMode)(THIS) PURE;
1292     STDMETHOD(GetSceneFogParams)(THIS_ D3DVALUE *return_start, D3DVALUE *return_end, D3DVALUE *return_density) PURE;
1293     STDMETHOD(SetSceneBackground)(THIS_ D3DCOLOR) PURE;
1294     STDMETHOD(SetSceneBackgroundRGB)(THIS_ D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE;
1295     STDMETHOD(SetSceneBackgroundDepth)(THIS_ LPDIRECTDRAWSURFACE) PURE;
1296     STDMETHOD(SetSceneBackgroundImage)(THIS_ LPDIRECT3DRMTEXTURE) PURE;
1297     STDMETHOD(SetSceneFogEnable)(THIS_ BOOL) PURE;
1298     STDMETHOD(SetSceneFogColor)(THIS_ D3DCOLOR) PURE;
1299     STDMETHOD(SetSceneFogMode)(THIS_ D3DRMFOGMODE) PURE;
1300     STDMETHOD(SetSceneFogParams)(THIS_ D3DVALUE start, D3DVALUE end, D3DVALUE density) PURE;
1301     STDMETHOD(SetColor)(THIS_ D3DCOLOR) PURE;
1302     STDMETHOD(SetColorRGB)(THIS_ D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE;
1303     STDMETHOD_(D3DRMZBUFFERMODE, GetZbufferMode)(THIS) PURE;
1304     STDMETHOD(SetMaterialMode)(THIS_ D3DRMMATERIALMODE) PURE;
1305     STDMETHOD(SetOrientation)(THIS_ LPDIRECT3DRMFRAME reference, D3DVALUE dx, D3DVALUE dy, D3DVALUE dz,
1306         D3DVALUE ux, D3DVALUE uy, D3DVALUE uz) PURE;
1307     STDMETHOD(SetPosition)(THIS_ LPDIRECT3DRMFRAME reference, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
1308     STDMETHOD(SetRotation)(THIS_ LPDIRECT3DRMFRAME reference, D3DVALUE x, D3DVALUE y, D3DVALUE z, D3DVALUE theta) PURE;
1309     STDMETHOD(SetSortMode)(THIS_ D3DRMSORTMODE) PURE;
1310     STDMETHOD(SetTexture)(THIS_ LPDIRECT3DRMTEXTURE) PURE;
1311     STDMETHOD(SetTextureTopology)(THIS_ BOOL wrap_u, BOOL wrap_v) PURE;
1312     STDMETHOD(SetVelocity)(THIS_ LPDIRECT3DRMFRAME reference, D3DVALUE x, D3DVALUE y, D3DVALUE z, BOOL with_rotation) PURE;
1313     STDMETHOD(SetZbufferMode)(THIS_ D3DRMZBUFFERMODE) PURE;
1314     STDMETHOD(Transform)(THIS_ D3DVECTOR *d, D3DVECTOR *s) PURE;
1315     /*** IDirect3DRMFrame2 methods ***/
1316     STDMETHOD(AddMoveCallback2)(THIS_ D3DRMFRAMEMOVECALLBACK, VOID *arg, DWORD flags) PURE;
1317     STDMETHOD(GetBox)(THIS_ LPD3DRMBOX) PURE;
1318     STDMETHOD_(BOOL, GetBoxEnable)(THIS) PURE;
1319     STDMETHOD(GetAxes)(THIS_ LPD3DVECTOR dir, LPD3DVECTOR up);
1320     STDMETHOD(GetMaterial)(THIS_ LPDIRECT3DRMMATERIAL *) PURE;
1321     STDMETHOD_(BOOL, GetInheritAxes)(THIS);
1322     STDMETHOD(GetHierarchyBox)(THIS_ LPD3DRMBOX) PURE;
1323     STDMETHOD(SetBox)(THIS_ LPD3DRMBOX) PURE;
1324     STDMETHOD(SetBoxEnable)(THIS_ BOOL) PURE;
1325     STDMETHOD(SetAxes)(THIS_ D3DVALUE dx, D3DVALUE dy, D3DVALUE dz, D3DVALUE ux, D3DVALUE uy, D3DVALUE uz);
1326     STDMETHOD(SetInheritAxes)(THIS_ BOOL inherit_from_parent);
1327     STDMETHOD(SetMaterial)(THIS_ LPDIRECT3DRMMATERIAL) PURE;
1328     STDMETHOD(SetQuaternion)(THIS_ LPDIRECT3DRMFRAME reference, D3DRMQUATERNION *q) PURE;
1329     STDMETHOD(RayPick)(THIS_ LPDIRECT3DRMFRAME reference, LPD3DRMRAY ray, DWORD flags,
1330         LPDIRECT3DRMPICKED2ARRAY *return_visuals) PURE;
1331     STDMETHOD(Save)(THIS_ LPCSTR filename, D3DRMXOFFORMAT d3dFormat, D3DRMSAVEOPTIONS d3dSaveFlags);
1332 };
1333 #undef INTERFACE
1334
1335 #if !defined(__cplusplus) || defined(CINTERFACE)
1336 /*** IUnknown methods ***/
1337 #define IDirect3DRMFrame2_QueryInterface(p,a,b)            (p)->lpVtbl->QueryInterface(p,a,b)
1338 #define IDirect3DRMFrame2_AddRef(p)                        (p)->lpVtbl->AddRef(p)
1339 #define IDirect3DRMFrame2_Release(p)                       (p)->lpVtbl->Release(p)
1340 /*** IDirect3DRMObject methods ***/
1341 #define IDirect3DRMFrame2_Clone(p,a,b,c)                   (p)->lpVtbl->Clone(p,a,b,c)
1342 #define IDirect3DRMFrame2_AddDestroyCallback(p,a,b)        (p)->lpVtbl->AddDestroyCallback(p,a,b)
1343 #define IDirect3DRMFrame2_DeleteDestroyCallback(p,a,b)     (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
1344 #define IDirect3DRMFrame2_SetAppData(p,a)                  (p)->lpVtbl->SetAppData(p,a)
1345 #define IDirect3DRMFrame2_GetAppData(p)                    (p)->lpVtbl->GetAppData(p)
1346 #define IDirect3DRMFrame2_SetName(p,a)                     (p)->lpVtbl->SetName(p,a)
1347 #define IDirect3DRMFrame2_GetName(p,a,b)                   (p)->lpVtbl->GetName(p,a,b)
1348 #define IDirect3DRMFrame2_GetClassName(p,a,b)              (p)->lpVtbl->GetClassName(p,a,b)
1349 /*** IDirect3DRMFrame methods ***/
1350 #define IDirect3DRMFrame2_AddChild(p,a)                    (p)->lpVtbl->AddChild(p,a)
1351 #define IDirect3DRMFrame2_AddLight(p,a)                    (p)->lpVtbl->AddLight(p,a)
1352 #define IDirect3DRMFrame2_AddMoveCallback(p,a,b)           (p)->lpVtbl->AddMoveCallback(p,a,b)
1353 #define IDirect3DRMFrame2_AddTransform(p,a,b)              (p)->lpVtbl->AddTransform(p,a,b)
1354 #define IDirect3DRMFrame2_AddTranslation(p,a,b,c,d)        (p)->lpVtbl->AddTranslation(p,a,b,c,d)
1355 #define IDirect3DRMFrame2_AddScale(p,a,b,c,d)              (p)->lpVtbl->AddScale(p,a,b,c,d)
1356 #define IDirect3DRMFrame2_AddRotation(p,a,b,c,d,e)         (p)->lpVtbl->AddRotation(p,a,b,c,d,e)
1357 #define IDirect3DRMFrame2_AddVisual(p,a)                   (p)->lpVtbl->AddVisual(p,a)
1358 #define IDirect3DRMFrame2_GetChildren(p,a)                 (p)->lpVtbl->GetChildren(p,a)
1359 #define IDirect3DRMFrame2_GetColor(p)                      (p)->lpVtbl->GetColor(p)
1360 #define IDirect3DRMFrame2_GetLights(p,a)                   (p)->lpVtbl->GetLights(p,a)
1361 #define IDirect3DRMFrame2_GetMaterialMode(p)               (p)->lpVtbl->GetMaterialMode(p)
1362 #define IDirect3DRMFrame2_GetParent(p,a)                   (p)->lpVtbl->GetParent(p,a)
1363 #define IDirect3DRMFrame2_GetPosition(p,a,b)               (p)->lpVtbl->GetPosition(p,a,b)
1364 #define IDirect3DRMFrame2_GetRotation(p,a,b,c)             (p)->lpVtbl->GetRotation(p,a,b,c)
1365 #define IDirect3DRMFrame2_GetScene(p,a)                    (p)->lpVtbl->GetScene(p,a)
1366 #define IDirect3DRMFrame2_GetSortMode(p)                   (p)->lpVtbl->GetSortMode(p)
1367 #define IDirect3DRMFrame2_GetTexture(p,a)                  (p)->lpVtbl->GetTexture(p,a)
1368 #define IDirect3DRMFrame2_GetTransform(p,a)                (p)->lpVtbl->GetTransform(p,a)
1369 #define IDirect3DRMFrame2_GetVelocity(p,a,b,c)             (p)->lpVtbl->GetVelocity(p,a,b,c)
1370 #define IDirect3DRMFrame2_GetOrientation(p,a,b,c)          (p)->lpVtbl->GetOrientation(p,a,b,c)
1371 #define IDirect3DRMFrame2_GetVisuals(p,a)                  (p)->lpVtbl->GetVisuals(p,a)
1372 #define IDirect3DRMFrame2_GetTextureTopology(p,a,b)        (p)->lpVtbl->GetTextureTopology(p,a,b)
1373 #define IDirect3DRMFrame2_InverseTransform(p,a,b)          (p)->lpVtbl->InverseTransform(p,a,b)
1374 #define IDirect3DRMFrame2_Load(p,a,b,c,d,e)                (p)->lpVtbl->Load(p,a,b,c,d,e)
1375 #define IDirect3DRMFrame2_LookAt(p,a,b,c)                  (p)->lpVtbl->LookAt(p,a,b,c)
1376 #define IDirect3DRMFrame2_Move(p,a)                        (p)->lpVtbl->Move(p,a)
1377 #define IDirect3DRMFrame2_DeleteChild(p,a)                 (p)->lpVtbl->DeleteChild(p,a)
1378 #define IDirect3DRMFrame2_DeleteLight(p,a)                 (p)->lpVtbl->DeleteLight(p,a)
1379 #define IDirect3DRMFrame2_DeleteMoveCallback(p,a,b)        (p)->lpVtbl->DeleteMoveCallback(p,a,b)
1380 #define IDirect3DRMFrame2_DeleteVisual(p,a)                (p)->lpVtbl->DeleteVisual(p,a)
1381 #define IDirect3DRMFrame2_GetSceneBackground(p)            (p)->lpVtbl->GetSceneBackground(p)
1382 #define IDirect3DRMFrame2_GetSceneBackgroundDepth(p,a)     (p)->lpVtbl->GetSceneBackgroundDepth(p,a)
1383 #define IDirect3DRMFrame2_GetSceneFogColor(p)              (p)->lpVtbl->GetSceneFogColor(p)
1384 #define IDirect3DRMFrame2_GetSceneFogEnable(p)             (p)->lpVtbl->GetSceneFogEnable(p)
1385 #define IDirect3DRMFrame2_GetSceneFogMode(p)               (p)->lpVtbl->GetSceneFogMode(p)
1386 #define IDirect3DRMFrame2_GetSceneFogParams(p,a,b,c)       (p)->lpVtbl->GetSceneFogParams(p,a,b,c)
1387 #define IDirect3DRMFrame2_SetSceneBackground(p,a)          (p)->lpVtbl->SetSceneBackground(p,a)
1388 #define IDirect3DRMFrame2_SetSceneBackgroundRGB(p,a,b,c)   (p)->lpVtbl->SetSceneBackgroundRGB(p,a,b,c)
1389 #define IDirect3DRMFrame2_SetSceneBackgroundDepth(p,a)     (p)->lpVtbl->SetSceneBackgroundDepth(p,a)
1390 #define IDirect3DRMFrame2_SetSceneBackgroundImage(p,a)     (p)->lpVtbl->SetSceneBackgroundImage(p,a)
1391 #define IDirect3DRMFrame2_SetSceneFogEnable(p,a)           (p)->lpVtbl->SetSceneFogEnable(p,a)
1392 #define IDirect3DRMFrame2_SetSceneFogColor(p,a)            (p)->lpVtbl->SetSceneFogColor(p,a)
1393 #define IDirect3DRMFrame2_SetSceneFogMode(p,a)             (p)->lpVtbl->SetSceneFogMode(p,a)
1394 #define IDirect3DRMFrame2_SetSceneFogParams(p,a,b,c)       (p)->lpVtbl->SetSceneFogParams(p,a,b,c)
1395 #define IDirect3DRMFrame2_SetColor(p,a)                    (p)->lpVtbl->SetColor(p,a)
1396 #define IDirect3DRMFrame2_SetColorRGB(p,a,b,c)             (p)->lpVtbl->SetColorRGB(p,a,b,c)
1397 #define IDirect3DRMFrame2_GetZbufferMode(p)                (p)->lpVtbl->GetZbufferMode(p)
1398 #define IDirect3DRMFrame2_SetMaterialMode(p,a)             (p)->lpVtbl->SetMaterialMode(p,a)
1399 #define IDirect3DRMFrame2_SetOrientation(p,a,b,c,d,e,f,g)  (p)->lpVtbl->SetOrientation(p,a,b,c,d,e,f,g)
1400 #define IDirect3DRMFrame2_SetPosition(p,a,b,c,d)           (p)->lpVtbl->SetPosition(p,a,b,c,d)
1401 #define IDirect3DRMFrame2_SetRotation(p,a,b,c,d,e)         (p)->lpVtbl->SetRotation(p,a,b,c,d,e)
1402 #define IDirect3DRMFrame2_SetSortMode(p,a)                 (p)->lpVtbl->SetSortMode(p,a)
1403 #define IDirect3DRMFrame2_SetTexture(p,a)                  (p)->lpVtbl->SetTexture(p,a)
1404 #define IDirect3DRMFrame2_SetTextureTopology(p,a,b)        (p)->lpVtbl->SetTextureTopology(p,a,b)
1405 #define IDirect3DRMFrame2_SetVelocity(p,a,b,c,d,e)         (p)->lpVtbl->SetVelocity(p,a,b,c,d,e)
1406 #define IDirect3DRMFrame2_SetZbufferMode(p,a)              (p)->lpVtbl->SetZbufferMode(p,a)
1407 #define IDirect3DRMFrame2_Transform(p,a,b)                 (p)->lpVtbl->Transform(p,a,b)
1408 /*** IDirect3DRMFrame2 methods ***/
1409 #define IDirect3DRMFrame2_AddMoveCallback2(p,a,b,c)        (p)->lpVtbl->AddMoveCallback2(p,a,b,c)
1410 #define IDirect3DRMFrame2_GetBox(p,a)                      (p)->lpVtbl->GetBox(p,a)
1411 #define IDirect3DRMFrame2_GetBoxEnable(p)                  (p)->lpVtbl->GetBoxEnable(p)
1412 #define IDirect3DRMFrame2_GetAxes(p,a,b)                   (p)->lpVtbl->GetAxes(p,a,b)
1413 #define IDirect3DRMFrame2_GetMaterial(p,a)                 (p)->lpVtbl->GetMaterial(p,a)
1414 #define IDirect3DRMFrame2_GetInheritAxes(p,a,b)            (p)->lpVtbl->GetInheritAxes(p,a,b)
1415 #define IDirect3DRMFrame2_GetHierarchyBox(p,a)             (p)->lpVtbl->GetHierarchyBox(p,a)
1416 #define IDirect3DRMFrame2_SetBox(p,a)                      (p)->lpVtbl->SetBox(p,a)
1417 #define IDirect3DRMFrame2_SetBoxEnable(p,a)                (p)->lpVtbl->SetBoxEnable(p,a)
1418 #define IDirect3DRMFrame2_SetAxes(p,a,b,c,d,e,f)           (p)->lpVtbl->SetAxes(p,a,b,c,d,e,f)
1419 #define IDirect3DRMFrame2_SetInheritAxes(p,a)              (p)->lpVtbl->SetInheritAxes(p,a)
1420 #define IDirect3DRMFrame2_SetMaterial(p,a)                 (p)->lpVtbl->SetMaterial(p,a)
1421 #define IDirect3DRMFrame2_SetQuaternion(p,a,b)             (p)->lpVtbl->SetQuaternion(p,a,b)
1422 #define IDirect3DRMFrame2_RayPick(p,a,b,c,d)               (p)->lpVtbl->RayPick(p,a,b,c,d)
1423 #define IDirect3DRMFrame2_Save(p,a,b,c)                    (p)->lpVtbl->Save(p,a,b,c)
1424 #else
1425 /*** IUnknown methods ***/
1426 #define IDirect3DRMFrame2_QueryInterface(p,a,b)            (p)->QueryInterface(a,b)
1427 #define IDirect3DRMFrame2_AddRef(p)                        (p)->AddRef()
1428 #define IDirect3DRMFrame2_Release(p)                       (p)->Release()
1429 /*** IDirect3DRMObject methods ***/
1430 #define IDirect3DRMFrame2_Clone(p,a,b,c)                   (p)->Clone(a,b,c)
1431 #define IDirect3DRMFrame2_AddDestroyCallback(p,a,b)        (p)->AddDestroyCallback(a,b)
1432 #define IDirect3DRMFrame2_DeleteDestroyCallback(p,a,b)     (p)->DeleteDestroyCallback(a,b)
1433 #define IDirect3DRMFrame2_SetAppData(p,a)                  (p)->SetAppData(a)
1434 #define IDirect3DRMFrame2_GetAppData(p)                    (p)->GetAppData()
1435 #define IDirect3DRMFrame2_SetName(p,a)                     (p)->SetName(a)
1436 #define IDirect3DRMFrame2_GetName(p,a,b)                   (p)->GetName(a,b)
1437 #define IDirect3DRMFrame2_GetClassName(p,a,b)              (p)->GetClassName(a,b)
1438 /*** IDirect3DRMFrame methods ***/
1439 #define IDirect3DRMFrame2_AddChild(p,a)                    (p)->AddChild(a)
1440 #define IDirect3DRMFrame2_AddLight(p,a)                    (p)->AddLight(a)
1441 #define IDirect3DRMFrame2_AddMoveCallback(p,a,b)           (p)->AddMoveCallback(a,b)
1442 #define IDirect3DRMFrame2_AddTransform(p,a,b)              (p)->AddTransform(a,b)
1443 #define IDirect3DRMFrame2_AddTranslation(p,a,b,c,d)        (p)->AddTranslation(a,b,c,d)
1444 #define IDirect3DRMFrame2_AddScale(p,a,b,c,d)              (p)->AddScale(a,b,c,d)
1445 #define IDirect3DRMFrame2_AddRotation(p,a,b,c,d,e)         (p)->AddRotation(a,b,c,d,e)
1446 #define IDirect3DRMFrame2_AddVisual(p,a)                   (p)->AddVisual(a)
1447 #define IDirect3DRMFrame2_GetChildren(p,a)                 (p)->GetChildren(a)
1448 #define IDirect3DRMFrame2_GetColor(p)                      (p)->GetColor()
1449 #define IDirect3DRMFrame2_GetLights(p,a)                   (p)->GetLights(a)
1450 #define IDirect3DRMFrame2_GetMaterialMode(p)               (p)->GetMaterialMode()
1451 #define IDirect3DRMFrame2_GetParent(p,a)                   (p)->GetParent(a)
1452 #define IDirect3DRMFrame2_GetPosition(p,a,b)               (p)->GetPosition(a,b)
1453 #define IDirect3DRMFrame2_GetRotation(p,a,b,c)             (p)->GetRotation(a,b,c)
1454 #define IDirect3DRMFrame2_GetScene(p,a)                    (p)->GetScene(a)
1455 #define IDirect3DRMFrame2_GetSortMode(p)                   (p)->GetSortMode()
1456 #define IDirect3DRMFrame2_GetTexture(p,a)                  (p)->GetTexture(a)
1457 #define IDirect3DRMFrame2_GetTransform(p,a)                (p)->GetTransform(a)
1458 #define IDirect3DRMFrame2_GetVelocity(p,a,b,c)             (p)->GetVelocity(a,b,c)
1459 #define IDirect3DRMFrame2_GetOrientation(p,a,b,c)          (p)->GetOrientation(a,b,c)
1460 #define IDirect3DRMFrame2_GetVisuals(p,a)                  (p)->GetVisuals(a)
1461 #define IDirect3DRMFrame2_GetTextureTopology(p,a,b)        (p)->GetTextureTopology(a,b)
1462 #define IDirect3DRMFrame2_InverseTransform(p,a,b)          (p)->InverseTransform(a,b)
1463 #define IDirect3DRMFrame2_Load(p,a,b,c,d,e)                (p)->Load(a,b,c,d,e)
1464 #define IDirect3DRMFrame2_LookAt(p,a,b,c)                  (p)->LookAt(a,b,c)
1465 #define IDirect3DRMFrame2_Move(p,a)                        (p)->Move(a)
1466 #define IDirect3DRMFrame2_DeleteChild(p,a)                 (p)->DeleteChild(a)
1467 #define IDirect3DRMFrame2_DeleteLight(p,a)                 (p)->DeleteLight(a)
1468 #define IDirect3DRMFrame2_DeleteMoveCallback(p,a,b)        (p)->DeleteMoveCallback(a,b)
1469 #define IDirect3DRMFrame2_DeleteVisual(p,a)                (p)->DeleteVisual(a)
1470 #define IDirect3DRMFrame2_GetSceneBackground(p)            (p)->GetSceneBackground()
1471 #define IDirect3DRMFrame2_GetSceneBackgroundDepth(p,a)     (p)->GetSceneBackgroundDepth(a)
1472 #define IDirect3DRMFrame2_GetSceneFogColor(p)              (p)->GetSceneFogColor()
1473 #define IDirect3DRMFrame2_GetSceneFogEnable(p)             (p)->GetSceneFogEnable()
1474 #define IDirect3DRMFrame2_GetSceneFogMode(p)               (p)->GetSceneFogMode()
1475 #define IDirect3DRMFrame2_GetSceneFogParams(p,a,b,c)       (p)->GetSceneFogParams(a,b,c)
1476 #define IDirect3DRMFrame2_SetSceneBackground(p,a)          (p)->SetSceneBackground(a)
1477 #define IDirect3DRMFrame2_SetSceneBackgroundRGB(p,a,b,c)   (p)->SetSceneBackgroundRGB(a,b,c)
1478 #define IDirect3DRMFrame2_SetSceneBackgroundDepth(p,a)     (p)->SetSceneBackgroundDepth(a)
1479 #define IDirect3DRMFrame2_SetSceneBackgroundImage(p,a)     (p)->SetSceneBackgroundImage(a)
1480 #define IDirect3DRMFrame2_SetSceneFogEnable(p,a)           (p)->SetSceneFogEnable(a)
1481 #define IDirect3DRMFrame2_SetSceneFogColor(p,a)            (p)->SetSceneFogColor(a)
1482 #define IDirect3DRMFrame2_SetSceneFogMode(p,a)             (p)->SetSceneFogMode(a)
1483 #define IDirect3DRMFrame2_SetSceneFogParams(p,a,b,c)       (p)->SetSceneFogParams(a,b,c)
1484 #define IDirect3DRMFrame2_SetColor(p,a)                    (p)->SetColor(a)
1485 #define IDirect3DRMFrame2_SetColorRGB(p,a,b,c)             (p)->SetColorRGB(a,b,c)
1486 #define IDirect3DRMFrame2_GetZbufferMode(p)                (p)->GetZbufferMode()
1487 #define IDirect3DRMFrame2_SetMaterialMode(p,a)             (p)->SetMaterialMode(a)
1488 #define IDirect3DRMFrame2_SetOrientation(p,a,b,c,d,e,f,g)  (p)->SetOrientation(a,b,c,d,e,f,g)
1489 #define IDirect3DRMFrame2_SetPosition(p,a,b,c,d)           (p)->SetPosition(a,b,c,d)
1490 #define IDirect3DRMFrame2_SetRotation(p,a,b,c,d,e)         (p)->SetRotation(a,b,c,d,e)
1491 #define IDirect3DRMFrame2_SetSortMode(p,a)                 (p)->SetSortMode(a)
1492 #define IDirect3DRMFrame2_SetTexture(p,a)                  (p)->SetTexture(a)
1493 #define IDirect3DRMFrame2_SetTextureTopology(p,a,b)        (p)->SetTextureTopology(a,b)
1494 #define IDirect3DRMFrame2_SetVelocity(p,a,b,c,d,e)         (p)->SetVelocity(a,b,c,d,e)
1495 #define IDirect3DRMFrame2_SetZbufferMode(p,a)              (p)->SetZbufferMode(a)
1496 #define IDirect3DRMFrame2_Transform(p,a,b)                 (p)->Transform(a,b)
1497 /*** IDirect3DRMFrame2 methods ***/
1498 #define IDirect3DRMFrame2_AddMoveCallback2(p,a,b,c)        (p)->AddMoveCallback2(a,b,c)
1499 #define IDirect3DRMFrame2_GetBox(p,a)                      (p)->GetBox(a)
1500 #define IDirect3DRMFrame2_GetBoxEnable(p)                  (p)->GetBoxEnable()
1501 #define IDirect3DRMFrame2_GetAxes(p,a,b)                   (p)->GetAxes(a,b)
1502 #define IDirect3DRMFrame2_GetMaterial(p,a)                 (p)->GetMaterial(a)
1503 #define IDirect3DRMFrame2_GetInheritAxes(p,a,b)            (p)->GetInheritAxes(a,b)
1504 #define IDirect3DRMFrame2_GetHierarchyBox(p,a)             (p)->GetHierarchyBox(a)
1505 #define IDirect3DRMFrame2_SetBox(p,a)                      (p)->SetBox(a)
1506 #define IDirect3DRMFrame2_SetBoxEnable(p,a)                (p)->SetBoxEnable(a)
1507 #define IDirect3DRMFrame2_SetAxes(p,a,b,c,d,e,f)           (p)->SetAxes(a,b,c,d,e,f)
1508 #define IDirect3DRMFrame2_SetInheritAxes(p,a)              (p)->SetInheritAxes(a)
1509 #define IDirect3DRMFrame2_SetMaterial(p,a)                 (p)->SetMaterial(a)
1510 #define IDirect3DRMFrame2_SetQuaternion(p,a,b)             (p)->SetQuaternion(a,b)
1511 #define IDirect3DRMFrame2_RayPick(p,a,b,c,d)               (p)->RayPick(a,b,c,d)
1512 #define IDirect3DRMFrame2_Save(p,a,b,c)                    (p)->Save(a,b,c)
1513 #endif
1514
1515 /*****************************************************************************
1516  * IDirect3DRMFrame3 interface
1517  */
1518 #define INTERFACE IDirect3DRMFrame3
1519 DECLARE_INTERFACE_(IDirect3DRMFrame3,IDirect3DRMVisual)
1520 {
1521     /*** IUnknown methods ***/
1522     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
1523     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
1524     STDMETHOD_(ULONG,Release)(THIS) PURE;
1525     /*** IDirect3DRMObject methods ***/
1526     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
1527     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
1528     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
1529     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
1530     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
1531     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
1532     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
1533     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
1534     /*** IDirect3DRMFrame3 methods ***/
1535     STDMETHOD(AddChild)(THIS_ LPDIRECT3DRMFRAME3 child) PURE;
1536     STDMETHOD(AddLight)(THIS_ LPDIRECT3DRMLIGHT) PURE;
1537     STDMETHOD(AddMoveCallback)(THIS_ D3DRMFRAME3MOVECALLBACK, VOID *arg, DWORD flags) PURE;
1538     STDMETHOD(AddTranslation)(THIS_ D3DRMCOMBINETYPE, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
1539     STDMETHOD(AddScale)(THIS_ D3DRMCOMBINETYPE, D3DVALUE sx, D3DVALUE sy, D3DVALUE sz) PURE;
1540     STDMETHOD(AddRotation)(THIS_ D3DRMCOMBINETYPE, D3DVALUE x, D3DVALUE y, D3DVALUE z, D3DVALUE theta) PURE;
1541     STDMETHOD(AddVisual)(THIS_ LPUNKNOWN) PURE;
1542     STDMETHOD(GetChildren)(THIS_ LPDIRECT3DRMFRAMEARRAY *children) PURE;
1543     STDMETHOD_(D3DCOLOR, GetColor)(THIS) PURE;
1544     STDMETHOD(GetLights)(THIS_ LPDIRECT3DRMLIGHTARRAY *lights) PURE;
1545     STDMETHOD_(D3DRMMATERIALMODE, GetMaterialMode)(THIS) PURE;
1546     STDMETHOD(GetParent)(THIS_ LPDIRECT3DRMFRAME3 *) PURE;
1547     STDMETHOD(GetPosition)(THIS_ LPDIRECT3DRMFRAME3 reference, LPD3DVECTOR return_position) PURE;
1548     STDMETHOD(GetRotation)(THIS_ LPDIRECT3DRMFRAME3 reference, LPD3DVECTOR axis, LPD3DVALUE return_theta) PURE;
1549     STDMETHOD(GetScene)(THIS_ LPDIRECT3DRMFRAME3 *) PURE;
1550     STDMETHOD_(D3DRMSORTMODE, GetSortMode)(THIS) PURE;
1551     STDMETHOD(GetTexture)(THIS_ LPDIRECT3DRMTEXTURE3 *) PURE;
1552     STDMETHOD(GetTransform)(THIS_ LPDIRECT3DRMFRAME3 reference, D3DRMMATRIX4D rmMatrix) PURE;
1553     STDMETHOD(GetVelocity)(THIS_ LPDIRECT3DRMFRAME3 reference, LPD3DVECTOR return_velocity,
1554         BOOL with_rotation) PURE;
1555     STDMETHOD(GetOrientation)(THIS_ LPDIRECT3DRMFRAME3 reference, LPD3DVECTOR dir, LPD3DVECTOR up) PURE;
1556     STDMETHOD(GetVisuals)(THIS_ LPDWORD pCount, LPUNKNOWN *) PURE;
1557     STDMETHOD(InverseTransform)(THIS_ D3DVECTOR *d, D3DVECTOR *s) PURE;
1558     STDMETHOD(Load)(THIS_ LPVOID filename, LPVOID name, D3DRMLOADOPTIONS loadflags,
1559         D3DRMLOADTEXTURE3CALLBACK, LPVOID pArg) PURE;
1560     STDMETHOD(LookAt)(THIS_ LPDIRECT3DRMFRAME3 target, LPDIRECT3DRMFRAME3 reference, D3DRMFRAMECONSTRAINT) PURE;
1561     STDMETHOD(Move)(THIS_ D3DVALUE delta) PURE;
1562     STDMETHOD(DeleteChild)(THIS_ LPDIRECT3DRMFRAME3) PURE;
1563     STDMETHOD(DeleteLight)(THIS_ LPDIRECT3DRMLIGHT) PURE;
1564     STDMETHOD(DeleteMoveCallback)(THIS_ D3DRMFRAME3MOVECALLBACK, VOID *arg) PURE;
1565     STDMETHOD(DeleteVisual)(THIS_ LPUNKNOWN) PURE;
1566     STDMETHOD_(D3DCOLOR, GetSceneBackground)(THIS) PURE;
1567     STDMETHOD(GetSceneBackgroundDepth)(THIS_ LPDIRECTDRAWSURFACE *) PURE;
1568     STDMETHOD_(D3DCOLOR, GetSceneFogColor)(THIS) PURE;
1569     STDMETHOD_(BOOL, GetSceneFogEnable)(THIS) PURE;
1570     STDMETHOD_(D3DRMFOGMODE, GetSceneFogMode)(THIS) PURE;
1571     STDMETHOD(GetSceneFogParams)(THIS_ D3DVALUE *return_start, D3DVALUE *return_end,
1572         D3DVALUE *return_density) PURE;
1573     STDMETHOD(SetSceneBackground)(THIS_ D3DCOLOR) PURE;
1574     STDMETHOD(SetSceneBackgroundRGB)(THIS_ D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE;
1575     STDMETHOD(SetSceneBackgroundDepth)(THIS_ LPDIRECTDRAWSURFACE) PURE;
1576     STDMETHOD(SetSceneBackgroundImage)(THIS_ LPDIRECT3DRMTEXTURE3) PURE;
1577     STDMETHOD(SetSceneFogEnable)(THIS_ BOOL) PURE;
1578     STDMETHOD(SetSceneFogColor)(THIS_ D3DCOLOR) PURE;
1579     STDMETHOD(SetSceneFogMode)(THIS_ D3DRMFOGMODE) PURE;
1580     STDMETHOD(SetSceneFogParams)(THIS_ D3DVALUE start, D3DVALUE end, D3DVALUE density) PURE;
1581     STDMETHOD(SetColor)(THIS_ D3DCOLOR) PURE;
1582     STDMETHOD(SetColorRGB)(THIS_ D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE;
1583     STDMETHOD_(D3DRMZBUFFERMODE, GetZbufferMode)(THIS) PURE;
1584     STDMETHOD(SetMaterialMode)(THIS_ D3DRMMATERIALMODE) PURE;
1585     STDMETHOD(SetOrientation)(THIS_ LPDIRECT3DRMFRAME3 reference, D3DVALUE dx, D3DVALUE dy, D3DVALUE dz,
1586         D3DVALUE ux, D3DVALUE uy, D3DVALUE uz) PURE;
1587     STDMETHOD(SetPosition)(THIS_ LPDIRECT3DRMFRAME3 reference, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
1588     STDMETHOD(SetRotation)(THIS_ LPDIRECT3DRMFRAME3 reference, D3DVALUE x, D3DVALUE y, D3DVALUE z,
1589         D3DVALUE theta) PURE;
1590     STDMETHOD(SetSortMode)(THIS_ D3DRMSORTMODE) PURE;
1591     STDMETHOD(SetTexture)(THIS_ LPDIRECT3DRMTEXTURE3) PURE;
1592     STDMETHOD(SetVelocity)(THIS_ LPDIRECT3DRMFRAME3 reference, D3DVALUE x, D3DVALUE y, D3DVALUE z,
1593         BOOL with_rotation) PURE;
1594     STDMETHOD(SetZbufferMode)(THIS_ D3DRMZBUFFERMODE) PURE;
1595     STDMETHOD(Transform)(THIS_ D3DVECTOR *d, D3DVECTOR *s) PURE;
1596     STDMETHOD(GetBox)(THIS_ LPD3DRMBOX) PURE;
1597     STDMETHOD_(BOOL, GetBoxEnable)(THIS) PURE;
1598     STDMETHOD(GetAxes)(THIS_ LPD3DVECTOR dir, LPD3DVECTOR up);
1599     STDMETHOD(GetMaterial)(THIS_ LPDIRECT3DRMMATERIAL2 *) PURE;
1600     STDMETHOD_(BOOL, GetInheritAxes)(THIS);
1601     STDMETHOD(GetHierarchyBox)(THIS_ LPD3DRMBOX) PURE;
1602     STDMETHOD(SetBox)(THIS_ LPD3DRMBOX) PURE;
1603     STDMETHOD(SetBoxEnable)(THIS_ BOOL) PURE;
1604     STDMETHOD(SetAxes)(THIS_ D3DVALUE dx, D3DVALUE dy, D3DVALUE dz, D3DVALUE ux, D3DVALUE uy, D3DVALUE uz);
1605     STDMETHOD(SetInheritAxes)(THIS_ BOOL inherit_from_parent);
1606     STDMETHOD(SetMaterial)(THIS_ LPDIRECT3DRMMATERIAL2) PURE;
1607     STDMETHOD(SetQuaternion)(THIS_ LPDIRECT3DRMFRAME3 reference, D3DRMQUATERNION *q) PURE;
1608     STDMETHOD(RayPick)(THIS_ LPDIRECT3DRMFRAME3 reference, LPD3DRMRAY ray, DWORD flags,
1609         LPDIRECT3DRMPICKED2ARRAY *return_visuals) PURE;
1610     STDMETHOD(Save)(THIS_ LPCSTR filename, D3DRMXOFFORMAT d3dFormat, D3DRMSAVEOPTIONS d3dSaveFlags);
1611     STDMETHOD(TransformVectors)(THIS_ LPDIRECT3DRMFRAME3 reference, DWORD NumVectors,
1612         LPD3DVECTOR pDstVectors, LPD3DVECTOR pSrcVectors) PURE;
1613     STDMETHOD(InverseTransformVectors)(THIS_ LPDIRECT3DRMFRAME3 reference, DWORD NumVectors,
1614         LPD3DVECTOR pDstVectors, LPD3DVECTOR pSrcVectors) PURE;
1615     STDMETHOD(SetTraversalOptions)(THIS_ DWORD flags) PURE;
1616     STDMETHOD(GetTraversalOptions)(THIS_ LPDWORD pFlags) PURE;
1617     STDMETHOD(SetSceneFogMethod)(THIS_ DWORD flags) PURE;
1618     STDMETHOD(GetSceneFogMethod)(THIS_ LPDWORD pFlags) PURE;
1619     STDMETHOD(SetMaterialOverride)(THIS_ LPD3DRMMATERIALOVERRIDE) PURE;
1620     STDMETHOD(GetMaterialOverride)(THIS_ LPD3DRMMATERIALOVERRIDE) PURE;
1621 };
1622 #undef INTERFACE
1623
1624 #if !defined(__cplusplus) || defined(CINTERFACE)
1625 /*** IUnknown methods ***/
1626 #define IDirect3DRMFrame3_QueryInterface(p,a,b)              (p)->lpVtbl->QueryInterface(p,a,b)
1627 #define IDirect3DRMFrame3_AddRef(p)                          (p)->lpVtbl->AddRef(p)
1628 #define IDirect3DRMFrame3_Release(p)                         (p)->lpVtbl->Release(p)
1629 /*** IDirect3DRMObject methods ***/
1630 #define IDirect3DRMFrame3_Clone(p,a,b,c)                     (p)->lpVtbl->Clone(p,a,b,c)
1631 #define IDirect3DRMFrame3_AddDestroyCallback(p,a,b)          (p)->lpVtbl->AddDestroyCallback(p,a,b)
1632 #define IDirect3DRMFrame3_DeleteDestroyCallback(p,a,b)       (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
1633 #define IDirect3DRMFrame3_SetAppData(p,a)                    (p)->lpVtbl->SetAppData(p,a)
1634 #define IDirect3DRMFrame3_GetAppData(p)                      (p)->lpVtbl->GetAppData(p)
1635 #define IDirect3DRMFrame3_SetName(p,a)                       (p)->lpVtbl->SetName(p,a)
1636 #define IDirect3DRMFrame3_GetName(p,a,b)                     (p)->lpVtbl->GetName(p,a,b)
1637 #define IDirect3DRMFrame3_GetClassName(p,a,b)                (p)->lpVtbl->GetClassName(p,a,b)
1638 /*** IDirect3DRMFrame3 methods ***/
1639 #define IDirect3DRMFrame3_AddChild(p,a)                      (p)->lpVtbl->AddChild(p,a)
1640 #define IDirect3DRMFrame3_AddLight(p,a)                      (p)->lpVtbl->AddLight(p,a)
1641 #define IDirect3DRMFrame3_AddMoveCallback(p,a,b,c)           (p)->lpVtbl->AddMoveCallback(p,a,b,c)
1642 #define IDirect3DRMFrame3_AddTransform(p,a,b)                (p)->lpVtbl->AddTransform(p,a,b)
1643 #define IDirect3DRMFrame3_AddTranslation(p,a,b,c,d)          (p)->lpVtbl->AddTranslation(p,a,b,c,d)
1644 #define IDirect3DRMFrame3_AddScale(p,a,b,c,d)                (p)->lpVtbl->AddScale(p,a,b,c,d)
1645 #define IDirect3DRMFrame3_AddRotation(p,a,b,c,d,e)           (p)->lpVtbl->AddRotation(p,a,b,c,d,e)
1646 #define IDirect3DRMFrame3_AddVisual(p,a)                     (p)->lpVtbl->AddVisual(p,a)
1647 #define IDirect3DRMFrame3_GetChildren(p,a)                   (p)->lpVtbl->GetChildren(p,a)
1648 #define IDirect3DRMFrame3_GetColor(p)                        (p)->lpVtbl->GetColor(p)
1649 #define IDirect3DRMFrame3_GetLights(p,a)                     (p)->lpVtbl->GetLights(p,a)
1650 #define IDirect3DRMFrame3_GetMaterialMode(p)                 (p)->lpVtbl->GetMaterialMode(p)
1651 #define IDirect3DRMFrame3_GetParent(p,a)                     (p)->lpVtbl->GetParent(p,a)
1652 #define IDirect3DRMFrame3_GetPosition(p,a,b)                 (p)->lpVtbl->GetPosition(p,a,b)
1653 #define IDirect3DRMFrame3_GetRotation(p,a,b,c)               (p)->lpVtbl->GetRotation(p,a,b,c)
1654 #define IDirect3DRMFrame3_GetScene(p,a)                      (p)->lpVtbl->GetScene(p,a)
1655 #define IDirect3DRMFrame3_GetSortMode(p)                     (p)->lpVtbl->GetSortMode(p)
1656 #define IDirect3DRMFrame3_GetTexture(p,a)                    (p)->lpVtbl->GetTexture(p,a)
1657 #define IDirect3DRMFrame3_GetTransform(p,a,b)                (p)->lpVtbl->GetTransform(p,a,b)
1658 #define IDirect3DRMFrame3_GetVelocity(p,a,b,c)               (p)->lpVtbl->GetVelocity(p,a,b,c)
1659 #define IDirect3DRMFrame3_GetOrientation(p,a,b,c)            (p)->lpVtbl->GetOrientation(p,a,b,c)
1660 #define IDirect3DRMFrame3_GetVisuals(p,a,b)                  (p)->lpVtbl->GetVisuals(p,a,b)
1661 #define IDirect3DRMFrame3_InverseTransform(p,a,b)            (p)->lpVtbl->InverseTransform(p,a,b)
1662 #define IDirect3DRMFrame3_Load(p,a,b,c,d,e)                  (p)->lpVtbl->Load(p,a,b,c,d,e)
1663 #define IDirect3DRMFrame3_LookAt(p,a,b,c)                    (p)->lpVtbl->LookAt(p,a,b,c)
1664 #define IDirect3DRMFrame3_Move(p,a)                          (p)->lpVtbl->Move(p,a)
1665 #define IDirect3DRMFrame3_DeleteChild(p,a)                   (p)->lpVtbl->DeleteChild(p,a)
1666 #define IDirect3DRMFrame3_DeleteLight(p,a)                   (p)->lpVtbl->DeleteLight(p,a)
1667 #define IDirect3DRMFrame3_DeleteMoveCallback(p,a,b)          (p)->lpVtbl->DeleteMoveCallback(p,a,b)
1668 #define IDirect3DRMFrame3_DeleteVisual(p,a)                  (p)->lpVtbl->DeleteVisual(p,a)
1669 #define IDirect3DRMFrame3_GetSceneBackground(p)              (p)->lpVtbl->GetSceneBackground(p)
1670 #define IDirect3DRMFrame3_GetSceneBackgroundDepth(p,a)       (p)->lpVtbl->GetSceneBackgroundDepth(p,a)
1671 #define IDirect3DRMFrame3_GetSceneFogColor(p)                (p)->lpVtbl->GetSceneFogColor(p)
1672 #define IDirect3DRMFrame3_GetSceneFogEnable(p)               (p)->lpVtbl->GetSceneFogEnable(p)
1673 #define IDirect3DRMFrame3_GetSceneFogMode(p)                 (p)->lpVtbl->GetSceneFogMode(p)
1674 #define IDirect3DRMFrame3_GetSceneFogParams(p,a,b,c)         (p)->lpVtbl->GetSceneFogParams(p,a,b,c)
1675 #define IDirect3DRMFrame3_SetSceneBackground(p,a)            (p)->lpVtbl->SetSceneBackground(p,a)
1676 #define IDirect3DRMFrame3_SetSceneBackgroundRGB(p,a,b,c)     (p)->lpVtbl->SetSceneBackgroundRGB(p,a,b,c)
1677 #define IDirect3DRMFrame3_SetSceneBackgroundDepth(p,a)       (p)->lpVtbl->SetSceneBackgroundDepth(p,a)
1678 #define IDirect3DRMFrame3_SetSceneBackgroundImage(p,a)       (p)->lpVtbl->SetSceneBackgroundImage(p,a)
1679 #define IDirect3DRMFrame3_SetSceneFogEnable(p,a)             (p)->lpVtbl->SetSceneFogEnable(p,a)
1680 #define IDirect3DRMFrame3_SetSceneFogColor(p,a)              (p)->lpVtbl->SetSceneFogColor(p,a)
1681 #define IDirect3DRMFrame3_SetSceneFogMode(p,a)               (p)->lpVtbl->SetSceneFogMode(p,a)
1682 #define IDirect3DRMFrame3_SetSceneFogParams(p,a,b,c)         (p)->lpVtbl->SetSceneFogParams(p,a,b,c)
1683 #define IDirect3DRMFrame3_SetColor(p,a)                      (p)->lpVtbl->SetColor(p,a)
1684 #define IDirect3DRMFrame3_SetColorRGB(p,a,b,c)               (p)->lpVtbl->SetColorRGB(p,a,b,c)
1685 #define IDirect3DRMFrame3_GetZbufferMode(p)                  (p)->lpVtbl->GetZbufferMode(p)
1686 #define IDirect3DRMFrame3_SetMaterialMode(p,a)               (p)->lpVtbl->SetMaterialMode(p,a)
1687 #define IDirect3DRMFrame3_SetOrientation(p,a,b,c,d,e,f,g)    (p)->lpVtbl->SetOrientation(p,a,b,c,d,e,f,g)
1688 #define IDirect3DRMFrame3_SetPosition(p,a,b,c,d)             (p)->lpVtbl->SetPosition(p,a,b,c,d)
1689 #define IDirect3DRMFrame3_SetRotation(p,a,b,c,d,e)           (p)->lpVtbl->SetRotation(p,a,b,c,d,e)
1690 #define IDirect3DRMFrame3_SetSortMode(p,a)                   (p)->lpVtbl->SetSortMode(p,a)
1691 #define IDirect3DRMFrame3_SetTexture(p,a)                    (p)->lpVtbl->SetTexture(p,a)
1692 #define IDirect3DRMFrame3_SetVelocity(p,a,b,c,d,e)           (p)->lpVtbl->SetVelocity(p,a,b,c,d,e)
1693 #define IDirect3DRMFrame3_SetZbufferMode(p,a)                (p)->lpVtbl->SetZbufferMode(p,a)
1694 #define IDirect3DRMFrame3_Transform(p,a,b)                   (p)->lpVtbl->Transform(p,a,b)
1695 #define IDirect3DRMFrame3_GetBox(p,a)                        (p)->lpVtbl->GetBox(p,a)
1696 #define IDirect3DRMFrame3_GetBoxEnable(p)                    (p)->lpVtbl->GetBoxEnable(p)
1697 #define IDirect3DRMFrame3_GetAxes(p,a,b)                     (p)->lpVtbl->GetAxes(p,a,b)
1698 #define IDirect3DRMFrame3_GetMaterial(p,a)                   (p)->lpVtbl->GetMaterial(p,a)
1699 #define IDirect3DRMFrame3_GetInheritAxes(p)                  (p)->lpVtbl->GetInheritAxes(p)
1700 #define IDirect3DRMFrame3_GetHierarchyBox(p,a)               (p)->lpVtbl->GetHierarchyBox(p,a)
1701 #define IDirect3DRMFrame3_SetBox(p,a)                        (p)->lpVtbl->SetBox(p,a)
1702 #define IDirect3DRMFrame3_SetBoxEnable(p,a)                  (p)->lpVtbl->SetBoxEnable(p,a)
1703 #define IDirect3DRMFrame3_SetAxes(p,a,b,c,d,e,f)             (p)->lpVtbl->SetAxes(p,a,b,c,d,e,f)
1704 #define IDirect3DRMFrame3_SetInheritAxes(p,a)                (p)->lpVtbl->SetInheritAxes(p,a)
1705 #define IDirect3DRMFrame3_SetMaterial(p,a)                   (p)->lpVtbl->SetMaterial(p,a)
1706 #define IDirect3DRMFrame3_SetQuaternion(p,a,b)               (p)->lpVtbl->SetQuaternion(p,a,b)
1707 #define IDirect3DRMFrame3_RayPick(p,a,b,c,d)                 (p)->lpVtbl->RayPick(p,a,b,c,d)
1708 #define IDirect3DRMFrame3_Save(p,a,b,c)                      (p)->lpVtbl->Save(p,a,b,c)
1709 #define IDirect3DRMFrame3_TransformVectors(p,a,b,c,d)        (p)->lpVtbl->TransformVectors(p,a,b,c,d)
1710 #define IDirect3DRMFrame3_InverseTransformVectors(p,a,b,c,d) (p)->lpVtbl->InverseTransformVectors(p,a,b,c,d)
1711 #define IDirect3DRMFrame3_SetTraversalOptions(p,a)           (p)->lpVtbl->SetTraversalOptions(p,a)
1712 #define IDirect3DRMFrame3_GetTraversalOptions(p,a)           (p)->lpVtbl->GetTraversalOptions(p,a)
1713 #define IDirect3DRMFrame3_SetSceneFogMethod(p,a)             (p)->lpVtbl->SetSceneFogMethod(p,a)
1714 #define IDirect3DRMFrame3_GetSceneFogMethod(p,a)             (p)->lpVtbl->GetSceneFogMethod(p,a)
1715 #define IDirect3DRMFrame3_SetMaterialOverride(p,a)           (p)->lpVtbl->SetMaterialOverride(p,a)
1716 #define IDirect3DRMFrame3_GetMaterialOverride(p,a)           (p)->lpVtbl->GetMaterialOverride(p,a)
1717 #else
1718 /*** IUnknown methods ***/
1719 #define IDirect3DRMFrame3_QueryInterface(p,a,b)              (p)->QueryInterface(a,b)
1720 #define IDirect3DRMFrame3_AddRef(p)                          (p)->AddRef()
1721 #define IDirect3DRMFrame3_Release(p)                         (p)->Release()
1722 /*** IDirect3DRMObject methods ***/
1723 #define IDirect3DRMFrame3_Clone(p,a,b,c)                     (p)->Clone(a,b,c)
1724 #define IDirect3DRMFrame3_AddDestroyCallback(p,a,b)          (p)->AddDestroyCallback(a,b)
1725 #define IDirect3DRMFrame3_DeleteDestroyCallback(p,a,b)       (p)->DeleteDestroyCallback(a,b)
1726 #define IDirect3DRMFrame3_SetAppData(p,a)                    (p)->SetAppData(a)
1727 #define IDirect3DRMFrame3_GetAppData(p)                      (p)->GetAppData()
1728 #define IDirect3DRMFrame3_SetName(p,a)                       (p)->SetName(a)
1729 #define IDirect3DRMFrame3_GetName(p,a,b)                     (p)->GetName(a,b)
1730 #define IDirect3DRMFrame3_GetClassName(p,a,b)                (p)->GetClassName(a,b)
1731 /*** IDirect3DRMFrame3 methods ***/
1732 #define IDirect3DRMFrame3_AddChild(p,a)                      (p)->AddChild(a)
1733 #define IDirect3DRMFrame3_AddLight(p,a)                      (p)->AddLight(a)
1734 #define IDirect3DRMFrame3_AddMoveCallback(p,a,b,c)           (p)->AddMoveCallback(a,b,c)
1735 #define IDirect3DRMFrame3_AddTransform(p,a,b)                (p)->AddTransform(a,b)
1736 #define IDirect3DRMFrame3_AddTranslation(p,a,b,c,d)          (p)->AddTranslation(a,b,c,d)
1737 #define IDirect3DRMFrame3_AddScale(p,a,b,c,d)                (p)->AddScale(a,b,c,d)
1738 #define IDirect3DRMFrame3_AddRotation(p,a,b,c,d,e)           (p)->AddRotation(a,b,c,d,e)
1739 #define IDirect3DRMFrame3_AddVisual(p,a)                     (p)->AddVisual(a)
1740 #define IDirect3DRMFrame3_GetChildren(p,a)                   (p)->GetChildren(a)
1741 #define IDirect3DRMFrame3_GetColor(p)                        (p)->GetColor()
1742 #define IDirect3DRMFrame3_GetLights(p,a)                     (p)->GetLights(a)
1743 #define IDirect3DRMFrame3_GetMaterialMode(p)                 (p)->GetMaterialMode()
1744 #define IDirect3DRMFrame3_GetParent(p,a)                     (p)->GetParent(a)
1745 #define IDirect3DRMFrame3_GetPosition(p,a,b)                 (p)->GetPosition(a,b)
1746 #define IDirect3DRMFrame3_GetRotation(p,a,b,c)               (p)->GetRotation(a,b,c)
1747 #define IDirect3DRMFrame3_GetScene(p,a)                      (p)->GetScene(a)
1748 #define IDirect3DRMFrame3_GetSortMode(p)                     (p)->GetSortMode()
1749 #define IDirect3DRMFrame3_GetTexture(p,a)                    (p)->GetTexture(a)
1750 #define IDirect3DRMFrame3_GetTransform(p,a,b)                (p)->GetTransform(a,b)
1751 #define IDirect3DRMFrame3_GetVelocity(p,a,b,c)               (p)->GetVelocity(a,b,c)
1752 #define IDirect3DRMFrame3_GetOrientation(p,a,b,c)            (p)->GetOrientation(a,b,c)
1753 #define IDirect3DRMFrame3_GetVisuals(p,a,b)                  (p)->GetVisuals(a,b)
1754 #define IDirect3DRMFrame3_InverseTransform(p,a,b)            (p)->InverseTransform(a,b)
1755 #define IDirect3DRMFrame3_Load(p,a,b,c,d,e)                  (p)->Load(a,b,c,d,e)
1756 #define IDirect3DRMFrame3_LookAt(p,a,b,c)                    (p)->LookAt(a,b,c)
1757 #define IDirect3DRMFrame3_Move(p,a)                          (p)->Move(a)
1758 #define IDirect3DRMFrame3_DeleteChild(p,a)                   (p)->DeleteChild(a)
1759 #define IDirect3DRMFrame3_DeleteLight(p,a)                   (p)->DeleteLight(a)
1760 #define IDirect3DRMFrame3_DeleteMoveCallback(p,a,b)          (p)->DeleteMoveCallback(a,b)
1761 #define IDirect3DRMFrame3_DeleteVisual(p,a)                  (p)->DeleteVisual(a)
1762 #define IDirect3DRMFrame3_GetSceneBackground(p)              (p)->GetSceneBackground()
1763 #define IDirect3DRMFrame3_GetSceneBackgroundDepth(p,a)       (p)->GetSceneBackgroundDepth(a)
1764 #define IDirect3DRMFrame3_GetSceneFogColor(p)                (p)->GetSceneFogColor()
1765 #define IDirect3DRMFrame3_GetSceneFogEnable(p)               (p)->GetSceneFogEnable()
1766 #define IDirect3DRMFrame3_GetSceneFogMode(p)                 (p)->GetSceneFogMode()
1767 #define IDirect3DRMFrame3_GetSceneFogParams(p,a,b,c)         (p)->GetSceneFogParams(a,b,c)
1768 #define IDirect3DRMFrame3_SetSceneBackground(p,a)            (p)->SetSceneBackground(a)
1769 #define IDirect3DRMFrame3_SetSceneBackgroundRGB(p,a,b,c)     (p)->SetSceneBackgroundRGB(a,b,c)
1770 #define IDirect3DRMFrame3_SetSceneBackgroundDepth(p,a)       (p)->SetSceneBackgroundDepth(a)
1771 #define IDirect3DRMFrame3_SetSceneBackgroundImage(p,a)       (p)->SetSceneBackgroundImage(a)
1772 #define IDirect3DRMFrame3_SetSceneFogEnable(p,a)             (p)->SetSceneFogEnable(a)
1773 #define IDirect3DRMFrame3_SetSceneFogColor(p,a)              (p)->SetSceneFogColor(a)
1774 #define IDirect3DRMFrame3_SetSceneFogMode(p,a)               (p)->SetSceneFogMode(a)
1775 #define IDirect3DRMFrame3_SetSceneFogParams(p,a,b,c)         (p)->SetSceneFogParams(a,b,c)
1776 #define IDirect3DRMFrame3_SetColor(p,a)                      (p)->SetColor(a)
1777 #define IDirect3DRMFrame3_SetColorRGB(p,a,b,c)               (p)->SetColorRGB(a,b,c)
1778 #define IDirect3DRMFrame3_GetZbufferMode(p)                  (p)->GetZbufferMode()
1779 #define IDirect3DRMFrame3_SetMaterialMode(p,a)               (p)->SetMaterialMode(a)
1780 #define IDirect3DRMFrame3_SetOrientation(p,a,b,c,d,e,f,g)    (p)->SetOrientation(a,b,c,d,e,f,g)
1781 #define IDirect3DRMFrame3_SetPosition(p,a,b,c,d)             (p)->SetPosition(a,b,c,d)
1782 #define IDirect3DRMFrame3_SetRotation(p,a,b,c,d,e)           (p)->SetRotation(a,b,c,d,e)
1783 #define IDirect3DRMFrame3_SetSortMode(p,a)                   (p)->SetSortMode(a)
1784 #define IDirect3DRMFrame3_SetTexture(p,a)                    (p)->SetTexture(a)
1785 #define IDirect3DRMFrame3_SetVelocity(p,a,b,c,d,e)           (p)->SetVelocity(a,b,c,d,e)
1786 #define IDirect3DRMFrame3_SetZbufferMode(p,a)                (p)->SetZbufferMode(a)
1787 #define IDirect3DRMFrame3_Transform(p,a,b)                   (p)->Transform(a,b)
1788 #define IDirect3DRMFrame3_GetBox(p,a)                        (p)->GetBox(a)
1789 #define IDirect3DRMFrame3_GetBoxEnable(p)                    (p)->GetBoxEnable()
1790 #define IDirect3DRMFrame3_GetAxes(p,a,b)                     (p)->GetAxes(a,b)
1791 #define IDirect3DRMFrame3_GetMaterial(p,a)                   (p)->GetMaterial(a)
1792 #define IDirect3DRMFrame3_GetInheritAxes(p)                  (p)->GetInheritAxes()
1793 #define IDirect3DRMFrame3_GetHierarchyBox(p,a)               (p)->GetHierarchyBox(a)
1794 #define IDirect3DRMFrame3_SetBox(p,a)                        (p)->SetBox(a)
1795 #define IDirect3DRMFrame3_SetBoxEnable(p,a)                  (p)->SetBoxEnable(a)
1796 #define IDirect3DRMFrame3_SetAxes(p,a,b,c,d,e,f)             (p)->SetAxes(a,b,c,d,e,f)
1797 #define IDirect3DRMFrame3_SetInheritAxes(p,a)                (p)->SetInheritAxes(a)
1798 #define IDirect3DRMFrame3_SetMaterial(p,a)                   (p)->SetMaterial(a)
1799 #define IDirect3DRMFrame3_SetQuaternion(p,a,b)               (p)->SetQuaternion(a,b)
1800 #define IDirect3DRMFrame3_RayPick(p,a,b,c,d)                 (p)->RayPick(a,b,c,d)
1801 #define IDirect3DRMFrame3_Save(p,a,b,c)                      (p)->Save(a,b,c)
1802 #define IDirect3DRMFrame3_TransformVectors(p,a,b,c,d)        (p)->TransformVectors(a,b,c,d)
1803 #define IDirect3DRMFrame3_InverseTransformVectors(p,a,b,c,d) (p)->InverseTransformVectors(a,b,c,d)
1804 #define IDirect3DRMFrame3_SetTraversalOptions(p,a)           (p)->SetTraversalOptions(a)
1805 #define IDirect3DRMFrame3_GetTraversalOptions(p,a)           (p)->GetTraversalOptions(a)
1806 #define IDirect3DRMFrame3_SetSceneFogMethod(p,a)             (p)->SetSceneFogMethod(a)
1807 #define IDirect3DRMFrame3_GetSceneFogMethod(p,a)             (p)->GetSceneFogMethod(a)
1808 #define IDirect3DRMFrame3_SetMaterialOverride(p,a)           (p)->SetMaterialOverride(a)
1809 #define IDirect3DRMFrame3_GetMaterialOverride(p,a)           (p)->GetMaterialOverride(a)
1810 #endif
1811
1812 /*****************************************************************************
1813  * IDirect3DRMMesh interface
1814  */
1815 #define INTERFACE IDirect3DRMMesh
1816 DECLARE_INTERFACE_(IDirect3DRMMesh,IDirect3DRMVisual)
1817 {
1818     /*** IUnknown methods ***/
1819     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
1820     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
1821     STDMETHOD_(ULONG,Release)(THIS) PURE;
1822     /*** IDirect3DRMObject methods ***/
1823     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
1824     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
1825     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
1826     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
1827     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
1828     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
1829     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
1830     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
1831     /*** IDirect3DRMMesh methods ***/
1832     STDMETHOD(Scale)(THIS_ D3DVALUE sx, D3DVALUE sy, D3DVALUE sz) PURE;
1833     STDMETHOD(Translate)(THIS_ D3DVALUE tx, D3DVALUE ty, D3DVALUE tz) PURE;
1834     STDMETHOD(GetBox)(THIS_ D3DRMBOX *) PURE;
1835     STDMETHOD(AddGroup)(THIS_ unsigned vCount, unsigned fCount, unsigned vPerFace, unsigned *fData,
1836         D3DRMGROUPINDEX *returnId) PURE;
1837     STDMETHOD(SetVertices)(THIS_ D3DRMGROUPINDEX id, unsigned index, unsigned count,
1838         D3DRMVERTEX *values) PURE;
1839     STDMETHOD(SetGroupColor)(THIS_ D3DRMGROUPINDEX id, D3DCOLOR value) PURE;
1840     STDMETHOD(SetGroupColorRGB)(THIS_ D3DRMGROUPINDEX id, D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE;
1841     STDMETHOD(SetGroupMapping)(THIS_ D3DRMGROUPINDEX id, D3DRMMAPPING value) PURE;
1842     STDMETHOD(SetGroupQuality)(THIS_ D3DRMGROUPINDEX id, D3DRMRENDERQUALITY value) PURE;
1843     STDMETHOD(SetGroupMaterial)(THIS_ D3DRMGROUPINDEX id, LPDIRECT3DRMMATERIAL value) PURE;
1844     STDMETHOD(SetGroupTexture)(THIS_ D3DRMGROUPINDEX id, LPDIRECT3DRMTEXTURE value) PURE;
1845     STDMETHOD_(unsigned, GetGroupCount)(THIS) PURE;
1846     STDMETHOD(GetGroup)(THIS_ D3DRMGROUPINDEX id, unsigned *vCount, unsigned *fCount, unsigned *vPerFace,
1847         DWORD *fDataSize, unsigned *fData) PURE;
1848     STDMETHOD(GetVertices)(THIS_ D3DRMGROUPINDEX id, DWORD index, DWORD count, D3DRMVERTEX *returnPtr) PURE;
1849     STDMETHOD_(D3DCOLOR, GetGroupColor)(THIS_ D3DRMGROUPINDEX id) PURE;
1850     STDMETHOD_(D3DRMMAPPING, GetGroupMapping)(THIS_ D3DRMGROUPINDEX id) PURE;
1851     STDMETHOD_(D3DRMRENDERQUALITY, GetGroupQuality)(THIS_ D3DRMGROUPINDEX id) PURE;
1852     STDMETHOD(GetGroupMaterial)(THIS_ D3DRMGROUPINDEX id, LPDIRECT3DRMMATERIAL *returnPtr) PURE;
1853     STDMETHOD(GetGroupTexture)(THIS_ D3DRMGROUPINDEX id, LPDIRECT3DRMTEXTURE *returnPtr) PURE;
1854 };
1855 #undef INTERFACE
1856
1857 #if !defined(__cplusplus) || defined(CINTERFACE)
1858 /*** IUnknown methods ***/
1859 #define IDirect3DRMMesh_QueryInterface(p,a,b)              (p)->lpVtbl->QueryInterface(p,a,b)
1860 #define IDirect3DRMMesh_AddRef(p)                          (p)->lpVtbl->AddRef(p)
1861 #define IDirect3DRMMesh_Release(p)                         (p)->lpVtbl->Release(p)
1862 /*** IDirect3DRMObject methods ***/
1863 #define IDirect3DRMMesh_Clone(p,a,b,c)                     (p)->lpVtbl->Clone(p,a,b,c)
1864 #define IDirect3DRMMesh_AddDestroyCallback(p,a,b)          (p)->lpVtbl->AddDestroyCallback(p,a,b)
1865 #define IDirect3DRMMesh_DeleteDestroyCallback(p,a,b)       (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
1866 #define IDirect3DRMMesh_SetAppData(p,a)                    (p)->lpVtbl->SetAppData(p,a)
1867 #define IDirect3DRMMesh_GetAppData(p)                      (p)->lpVtbl->GetAppData(p)
1868 #define IDirect3DRMMesh_SetName(p,a)                       (p)->lpVtbl->SetName(p,a)
1869 #define IDirect3DRMMesh_GetName(p,a,b)                     (p)->lpVtbl->GetName(p,a,b)
1870 #define IDirect3DRMMesh_GetClassName(p,a,b)                (p)->lpVtbl->GetClassName(p,a,b)
1871 /*** IDirect3DRMMesh methods ***/
1872 #define IDirect3DRMMesh_Scale(p,a,b,c)                     (p)->lpVtbl->Scale(p,a,b,c)
1873 #define IDirect3DRMMesh_Translate(p,a,b,c)                 (p)->lpVtbl->Translate(p,a,b,c)
1874 #define IDirect3DRMMesh_GetBox(p,a)                        (p)->lpVtbl->GetBox(p,a)
1875 #define IDirect3DRMMesh_AddGroup(p,a,b,c,d,e)              (p)->lpVtbl->AddGroup(p,a,b,c,d,e)
1876 #define IDirect3DRMMesh_SetVertices(p,a,b,c,d)             (p)->lpVtbl->SetVertices(p,a,b,c,d)
1877 #define IDirect3DRMMesh_SetGroupColor(p,a,b)               (p)->lpVtbl->SetGroupColor(p,a,b)
1878 #define IDirect3DRMMesh_SetGroupColorRGB(p,a,b,c,d)        (p)->lpVtbl->SetGroupColorRGB(p,a,b,c,d)
1879 #define IDirect3DRMMesh_SetGroupMapping(p,a,b)             (p)->lpVtbl->SetGroupMapping(p,a,b)
1880 #define IDirect3DRMMesh_SetGroupQuality(p,a,b)             (p)->lpVtbl->SetGroupQuality(p,a,b)
1881 #define IDirect3DRMMesh_SetGroupMaterial(p,a,b)            (p)->lpVtbl->SetGroupMaterial(p,a,b)
1882 #define IDirect3DRMMesh_SetGroupTexture(p,a,b)             (p)->lpVtbl->SetGroupTexture(p,a,b)
1883 #define IDirect3DRMMesh_GetGroupCount(p)                   (p)->lpVtbl->GetGroupCount(p)
1884 #define IDirect3DRMMesh_GetGroup(p,a,b,c,d,e,f)            (p)->lpVtbl->GetGroup(p,a,b,c,d,e,f)
1885 #define IDirect3DRMMesh_GetVertices(p,a,b,c,d)             (p)->lpVtbl->GetVertices(p,a,b,c,d)
1886 #define IDirect3DRMMesh_GetGroupColor(p,a)                 (p)->lpVtbl->GetGroupColor(p,a)
1887 #define IDirect3DRMMesh_GetGroupMapping(p,a)               (p)->lpVtbl->GetGroupMapping(p,a)
1888 #define IDirect3DRMMesh_GetGroupQuality(p,a)               (p)->lpVtbl->GetGroupQuality(p,a)
1889 #define IDirect3DRMMesh_GetGroupMaterial(p,a,b)            (p)->lpVtbl->GetGroupMaterial(p,a,b)
1890 #define IDirect3DRMMesh_GetGroupTexture(p,a,b)             (p)->lpVtbl->GetGroupTexture(p,a,b)
1891 #else
1892 /*** IUnknown methods ***/
1893 #define IDirect3DRMMesh_QueryInterface(p,a,b)              (p)->QueryInterface(a,b)
1894 #define IDirect3DRMMesh_AddRef(p)                          (p)->AddRef()
1895 #define IDirect3DRMMesh_Release(p)                         (p)->Release()
1896 /*** IDirect3DRMObject methods ***/
1897 #define IDirect3DRMMesh_Clone(p,a,b,c)                     (p)->Clone(a,b,c)
1898 #define IDirect3DRMMesh_AddDestroyCallback(p,a,b)          (p)->AddDestroyCallback(a,b)
1899 #define IDirect3DRMMesh_DeleteDestroyCallback(p,a,b)       (p)->DeleteDestroyCallback(a,b)
1900 #define IDirect3DRMMesh_SetAppData(p,a)                    (p)->SetAppData(a)
1901 #define IDirect3DRMMesh_GetAppData(p)                      (p)->GetAppData()
1902 #define IDirect3DRMMesh_SetName(p,a)                       (p)->SetName(a)
1903 #define IDirect3DRMMesh_GetName(p,a,b)                     (p)->GetName(a,b)
1904 #define IDirect3DRMMesh_GetClassName(p,a,b)                (p)->GetClassName(a,b)
1905 /*** IDirect3DRMMesh methods ***/
1906 #define IDirect3DRMMesh_Scale(p,a,b,c)                     (p)->Scale(a,b,c)
1907 #define IDirect3DRMMesh_Translate(p,a,b,c)                 (p)->Translate(a,b,c)
1908 #define IDirect3DRMMesh_GetBox(p,a)                        (p)->GetBox(a)
1909 #define IDirect3DRMMesh_AddGroup(p,a,b,c,d,e)              (p)->AddGroup(a,b,c,d,e)
1910 #define IDirect3DRMMesh_SetVertices(p,a,b,c,d)             (p)->SetVertices(a,b,c,d)
1911 #define IDirect3DRMMesh_SetGroupColor(p,a,b)               (p)->SetGroupColor(a,b)
1912 #define IDirect3DRMMesh_SetGroupColorRGB(p,a,b,c,d)        (p)->SetGroupColorRGB(a,b,c,d)
1913 #define IDirect3DRMMesh_SetGroupMapping(p,a,b)             (p)->SetGroupMapping(a,b)
1914 #define IDirect3DRMMesh_SetGroupQuality(p,a,b)             (p)->SetGroupQuality(a,b)
1915 #define IDirect3DRMMesh_SetGroupMaterial(p,a,b)            (p)->SetGroupMaterial(a,b)
1916 #define IDirect3DRMMesh_SetGroupTexture(p,a,b)             (p)->SetGroupTexture(a,b)
1917 #define IDirect3DRMMesh_GetGroupCount(p)                   (p)->GetGroupCount()
1918 #define IDirect3DRMMesh_GetGroup(p,a,b,c,d,e,f)            (p)->GetGroup(a,b,c,d,e,f)
1919 #define IDirect3DRMMesh_GetVertices(p,a,b,c,d)             (p)->GetVertices(a,b,c,d)
1920 #define IDirect3DRMMesh_GetGroupColor(p,a)                 (p)->GetGroupColor(a)
1921 #define IDirect3DRMMesh_GetGroupMapping(p,a)               (p)->GetGroupMapping(a)
1922 #define IDirect3DRMMesh_GetGroupQuality(p,a)               (p)->GetGroupQuality(a)
1923 #define IDirect3DRMMesh_GetGroupMaterial(p,a,b)            (p)->lpVtbl->GetGroupMaterial(a,b)
1924 #define IDirect3DRMMesh_GetGroupTexture(p,a,b)             (p)->lpVtbl->GetGroupTexture(a,b)
1925 #endif
1926
1927 /*****************************************************************************
1928  * IDirect3DRMProgressiveMesh interface
1929  */
1930 #define INTERFACE IDirect3DRMProgressiveMesh
1931 DECLARE_INTERFACE_(IDirect3DRMProgressiveMesh,IDirect3DRMVisual)
1932 {
1933     /*** IUnknown methods ***/
1934     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
1935     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
1936     STDMETHOD_(ULONG,Release)(THIS) PURE;
1937     /*** IDirect3DRMObject methods ***/
1938     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
1939     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
1940     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
1941     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
1942     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
1943     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
1944     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
1945     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
1946     /*** IDirect3DRMProgressiveMesh methods ***/
1947     STDMETHOD(Load) (THIS_ LPVOID pObjLocation, LPVOID pObjId, D3DRMLOADOPTIONS dloLoadflags,
1948         D3DRMLOADTEXTURECALLBACK pCallback, LPVOID lpArg) PURE;
1949     STDMETHOD(GetLoadStatus) (THIS_ LPD3DRMPMESHLOADSTATUS pStatus) PURE;
1950     STDMETHOD(SetMinRenderDetail) (THIS_ D3DVALUE d3dVal) PURE;
1951     STDMETHOD(Abort) (THIS_ DWORD flags) PURE;
1952     STDMETHOD(GetFaceDetail) (THIS_ LPDWORD pCount) PURE;
1953     STDMETHOD(GetVertexDetail) (THIS_ LPDWORD pCount) PURE;
1954     STDMETHOD(SetFaceDetail) (THIS_ DWORD count) PURE;
1955     STDMETHOD(SetVertexDetail) (THIS_ DWORD count) PURE;
1956     STDMETHOD(GetFaceDetailRange) (THIS_ LPDWORD pMin, LPDWORD pMax) PURE;
1957     STDMETHOD(GetVertexDetailRange) (THIS_ LPDWORD pMin, LPDWORD pMax) PURE;
1958     STDMETHOD(GetDetail) (THIS_ D3DVALUE *pdvVal) PURE;
1959     STDMETHOD(SetDetail) (THIS_ D3DVALUE d3dVal) PURE;
1960     STDMETHOD(RegisterEvents) (THIS_ HANDLE event, DWORD flags, DWORD reserved) PURE;
1961     STDMETHOD(CreateMesh) (THIS_ LPDIRECT3DRMMESH *ppD3DRMMesh) PURE;
1962     STDMETHOD(Duplicate) (THIS_ LPDIRECT3DRMPROGRESSIVEMESH *ppD3DRMPMesh) PURE;
1963     STDMETHOD(GetBox) (THIS_ LPD3DRMBOX pBBox) PURE;
1964     STDMETHOD(SetQuality) (THIS_ D3DRMRENDERQUALITY) PURE;
1965     STDMETHOD(GetQuality) (THIS_ LPD3DRMRENDERQUALITY pQuality) PURE;
1966 };
1967 #undef INTERFACE
1968
1969 #if !defined(__cplusplus) || defined(CINTERFACE)
1970 /*** IUnknown methods ***/
1971 #define IDirect3DRMProgressiveMesh_QueryInterface(p,a,b)          (p)->lpVtbl->QueryInterface(p,a,b)
1972 #define IDirect3DRMProgressiveMesh_AddRef(p)                      (p)->lpVtbl->AddRef(p)
1973 #define IDirect3DRMProgressiveMesh_Release(p)                     (p)->lpVtbl->Release(p)
1974 /*** IDirect3DRMObject methods ***/
1975 #define IDirect3DRMProgressiveMesh_Clone(p,a,b,c)                 (p)->lpVtbl->Clone(p,a,b,c)
1976 #define IDirect3DRMProgressiveMesh_AddDestroyCallback(p,a,b)      (p)->lpVtbl->AddDestroyCallback(p,a,b)
1977 #define IDirect3DRMProgressiveMesh_DeleteDestroyCallback(p,a,b)   (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
1978 #define IDirect3DRMProgressiveMesh_SetAppData(p,a)                (p)->lpVtbl->SetAppData(p,a)
1979 #define IDirect3DRMProgressiveMesh_GetAppData(p)                  (p)->lpVtbl->GetAppData(p)
1980 #define IDirect3DRMProgressiveMesh_SetName(p,a)                   (p)->lpVtbl->SetName(p,a)
1981 #define IDirect3DRMProgressiveMesh_GetName(p,a,b)                 (p)->lpVtbl->GetName(p,a,b)
1982 #define IDirect3DRMProgressiveMesh_GetClassName(p,a,b)            (p)->lpVtbl->GetClassName(p,a,b)
1983 /*** IDirect3DRMProgressiveMesh methods ***/
1984 #define IDirect3DRMProgressiveMesh_Load(p,a,b,c,d,e)              (p)->lpVtbl->Load(p,a,b,c,d,e)
1985 #define IDirect3DRMProgressiveMesh_GetLoadStatus(p,a)             (p)->lpVtbl->GetLoadStatus(p,a)
1986 #define IDirect3DRMProgressiveMesh_SetMinRenderDetail(p,a)        (p)->lpVtbl->SetMinRenderDetail(p,a)
1987 #define IDirect3DRMProgressiveMesh_Abort(p,a)                     (p)->lpVtbl->Abort(p,a)
1988 #define IDirect3DRMProgressiveMesh_GetFaceDetail(p,a)             (p)->lpVtbl->GetFaceDetail(p,a)
1989 #define IDirect3DRMProgressiveMesh_GetVertexDetail(p,a)           (p)->lpVtbl->GetVertexDetail(p,a)
1990 #define IDirect3DRMProgressiveMesh_SetFaceDetail(p,a)             (p)->lpVtbl->SetFaceDetail(p,a)
1991 #define IDirect3DRMProgressiveMesh_SetVertexDetail(p,a)           (p)->lpVtbl->SetVertexDetail(p,a)
1992 #define IDirect3DRMProgressiveMesh_GetFaceDetailRange(p,a,b)      (p)->lpVtbl->GetFaceDetailRange(p,a,b)
1993 #define IDirect3DRMProgressiveMesh_GetVertexDetailRange(p,a,b)    (p)->lpVtbl->GetVertexDetailRange(p,a,b)
1994 #define IDirect3DRMProgressiveMesh_GetDetail(p,a)                 (p)->lpVtbl->GetDetail(p,a)
1995 #define IDirect3DRMProgressiveMesh_SetDetail(p,a)                 (p)->lpVtbl->SetDetail(p,a)
1996 #define IDirect3DRMProgressiveMesh_RegisterEvents(p,a,b,c)        (p)->lpVtbl->RegisterEvents(p,a,b,c)
1997 #define IDirect3DRMProgressiveMesh_CreateMesh(p,a)                (p)->lpVtbl->CreateMesh(p,a)
1998 #define IDirect3DRMProgressiveMesh_Duplicate(p,a)                 (p)->lpVtbl->Duplicate(p,a)
1999 #define IDirect3DRMProgressiveMesh_GetBox(p,a)                    (p)->lpVtbl->GetBox(p,a)
2000 #define IDirect3DRMProgressiveMesh_SetQuality(p,a)                (p)->lpVtbl->SetQuality(p,a)
2001 #define IDirect3DRMProgressiveMesh_GetQuality(p,a)                (p)->lpVtbl->GetQuality(p,a)
2002 #else
2003 /*** IUnknown methods ***/
2004 #define IDirect3DRMProgressiveMesh_QueryInterface(p,a,b)          (p)->QueryInterface(a,b)
2005 #define IDirect3DRMProgressiveMesh_AddRef(p)                      (p)->AddRef()
2006 #define IDirect3DRMProgressiveMesh_Release(p)                     (p)->Release()
2007 /*** IDirect3DRMObject methods ***/
2008 #define IDirect3DRMProgressiveMesh_Clone(p,a,b,c)                 (p)->Clone(a,b,c)
2009 #define IDirect3DRMProgressiveMesh_AddDestroyCallback(p,a,b)      (p)->AddDestroyCallback(a,b)
2010 #define IDirect3DRMProgressiveMesh_DeleteDestroyCallback(p,a,b)   (p)->DeleteDestroyCallback(a,b)
2011 #define IDirect3DRMProgressiveMesh_SetAppData(p,a)                (p)->SetAppData(a)
2012 #define IDirect3DRMProgressiveMesh_GetAppData(p)                  (p)->GetAppData()
2013 #define IDirect3DRMProgressiveMesh_SetName(p,a)                   (p)->SetName(a)
2014 #define IDirect3DRMProgressiveMesh_GetName(p,a,b)                 (p)->GetName(a,b)
2015 #define IDirect3DRMProgressiveMesh_GetClassName(p,a,b)            (p)->GetClassName(a,b)
2016 /*** IDirect3DRMProgressiveMesh methods ***/
2017 #define IDirect3DRMProgressiveMesh_Load(p,a,b,c,d,e)              (p)->Load(a,b,c,d,e)
2018 #define IDirect3DRMProgressiveMesh_GetLoadStatus(p,a)             (p)->GetLoadStatus(a)
2019 #define IDirect3DRMProgressiveMesh_SetMinRenderDetail(p,a)        (p)->SetMinRenderDetail(a)
2020 #define IDirect3DRMProgressiveMesh_Abort(p,a)                     (p)->Abort(a)
2021 #define IDirect3DRMProgressiveMesh_GetFaceDetail(p,a)             (p)->GetFaceDetail(a)
2022 #define IDirect3DRMProgressiveMesh_GetVertexDetail(p,a)           (p)->GetVertexDetail(a)
2023 #define IDirect3DRMProgressiveMesh_SetFaceDetail(p,a)             (p)->SetFaceDetail(a)
2024 #define IDirect3DRMProgressiveMesh_SetVertexDetail(p,a)           (p)->SetVertexDetail(a)
2025 #define IDirect3DRMProgressiveMesh_GetFaceDetailRange(p,a,b)      (p)->GetFaceDetailRange(a,b)
2026 #define IDirect3DRMProgressiveMesh_GetVertexDetailRange(p,a,b)    (p)->GetVertexDetailRange(a,b)
2027 #define IDirect3DRMProgressiveMesh_GetDetail(p,a)                 (p)->GetDetail(a)
2028 #define IDirect3DRMProgressiveMesh_SetDetail(p,a)                 (p)->SetDetail(a)
2029 #define IDirect3DRMProgressiveMesh_RegisterEvents(p,a,b,c)        (p)->RegisterEvents(a,b,c)
2030 #define IDirect3DRMProgressiveMesh_CreateMesh(p,a)                (p)->CreateMesh(a)
2031 #define IDirect3DRMProgressiveMesh_Duplicate(p,a)                 (p)->Duplicate(a)
2032 #define IDirect3DRMProgressiveMesh_GetBox(p,a)                    (p)->GetBox(a)
2033 #define IDirect3DRMProgressiveMesh_SetQuality(p,a)                (p)->SetQuality(a)
2034 #define IDirect3DRMProgressiveMesh_GetQuality(p,a)                (p)->GetQuality(a)
2035 #endif
2036
2037 /*****************************************************************************
2038  * IDirect3DRMShadow interface
2039  */
2040 #define INTERFACE IDirect3DRMShadow
2041 DECLARE_INTERFACE_(IDirect3DRMShadow,IDirect3DRMVisual)
2042 {
2043     /*** IUnknown methods ***/
2044     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
2045     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
2046     STDMETHOD_(ULONG,Release)(THIS) PURE;
2047     /*** IDirect3DRMObject methods ***/
2048     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
2049     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
2050     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
2051     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
2052     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
2053     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
2054     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
2055     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
2056     /*** IDirect3DRMShadow methods ***/
2057     STDMETHOD(Init)(THIS_ LPDIRECT3DRMVISUAL visual, LPDIRECT3DRMLIGHT light,
2058         D3DVALUE px, D3DVALUE py, D3DVALUE pz, D3DVALUE nx, D3DVALUE ny, D3DVALUE nz) PURE;
2059 };
2060 #undef INTERFACE
2061
2062 #if !defined(__cplusplus) || defined(CINTERFACE)
2063 /*** IUnknown methods ***/
2064 #define IDirect3DRMShadow_QueryInterface(p,a,b)          (p)->lpVtbl->QueryInterface(p,a,b)
2065 #define IDirect3DRMShadow_AddRef(p)                      (p)->lpVtbl->AddRef(p)
2066 #define IDirect3DRMShadow_Release(p)                     (p)->lpVtbl->Release(p)
2067 /*** IDirect3DRMObject methods ***/
2068 #define IDirect3DRMShadow_Clone(p,a,b,c)                 (p)->lpVtbl->Clone(p,a,b,c)
2069 #define IDirect3DRMShadow_AddDestroyCallback(p,a,b)      (p)->lpVtbl->AddDestroyCallback(p,a,b)
2070 #define IDirect3DRMShadow_DeleteDestroyCallback(p,a,b)   (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
2071 #define IDirect3DRMShadow_SetAppData(p,a)                (p)->lpVtbl->SetAppData(p,a)
2072 #define IDirect3DRMShadow_GetAppData(p)                  (p)->lpVtbl->GetAppData(p)
2073 #define IDirect3DRMShadow_SetName(p,a)                   (p)->lpVtbl->SetName(p,a)
2074 #define IDirect3DRMShadow_GetName(p,a,b)                 (p)->lpVtbl->GetName(p,a,b)
2075 #define IDirect3DRMShadow_GetClassName(p,a,b)            (p)->lpVtbl->GetClassName(p,a,b)
2076 /*** IDirect3DRMShadow methods ***/
2077 #define IDirect3DRMShadow_Init(p,a,b,c,d,e,f,g)          (p)->lpVtbl->Load(p,a,b,c,d,e,f,g)
2078 #else
2079 /*** IUnknown methods ***/
2080 #define IDirect3DRMShadow_QueryInterface(p,a,b)          (p)->QueryInterface(a,b)
2081 #define IDirect3DRMShadow_AddRef(p)                      (p)->AddRef()
2082 #define IDirect3DRMShadow_Release(p)                     (p)->Release()
2083 /*** IDirect3DRMObject methods ***/
2084 #define IDirect3DRMShadow_Clone(p,a,b,c)                 (p)->Clone(a,b,c)
2085 #define IDirect3DRMShadow_AddDestroyCallback(p,a,b)      (p)->AddDestroyCallback(a,b)
2086 #define IDirect3DRMShadow_DeleteDestroyCallback(p,a,b)   (p)->DeleteDestroyCallback(a,b)
2087 #define IDirect3DRMShadow_SetAppData(p,a)                (p)->SetAppData(a)
2088 #define IDirect3DRMShadow_GetAppData(p)                  (p)->GetAppData()
2089 #define IDirect3DRMShadow_SetName(p,a)                   (p)->SetName(a)
2090 #define IDirect3DRMShadow_GetName(p,a,b)                 (p)->GetName(a,b)
2091 #define IDirect3DRMShadow_GetClassName(p,a,b)            (p)->GetClassName(a,b)
2092 /*** IDirect3DRMShadow methods ***/
2093 #define IDirect3DRMShadow_Init(p,a,b,c,d,e,f,g)          (p)->Load(a,b,c,d,e,f,g)
2094 #endif
2095
2096 /*****************************************************************************
2097  * IDirect3DRMShadow2 interface
2098  */
2099 #define INTERFACE IDirect3DRMShadow2
2100 DECLARE_INTERFACE_(IDirect3DRMShadow2,IDirect3DRMVisual)
2101 {
2102     /*** IUnknown methods ***/
2103     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
2104     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
2105     STDMETHOD_(ULONG,Release)(THIS) PURE;
2106     /*** IDirect3DRMObject methods ***/
2107     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
2108     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
2109     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
2110     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
2111     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
2112     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
2113     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
2114     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
2115     /*** IDirect3DRMShadow methods ***/
2116     STDMETHOD(Init)(THIS_ LPUNKNOWN pUNK, LPDIRECT3DRMLIGHT light,
2117         D3DVALUE px, D3DVALUE py, D3DVALUE pz, D3DVALUE nx, D3DVALUE ny, D3DVALUE nz) PURE;
2118     /*** IDirect3DRMShadow2 methods ***/
2119     STDMETHOD(GetVisual)(THIS_ LPDIRECT3DRMVISUAL *) PURE;
2120     STDMETHOD(SetVisual)(THIS_ LPUNKNOWN pUNK, DWORD) PURE;
2121     STDMETHOD(GetLight)(THIS_ LPDIRECT3DRMLIGHT *) PURE;
2122     STDMETHOD(SetLight)(THIS_ LPDIRECT3DRMLIGHT, DWORD) PURE;
2123     STDMETHOD(GetPlane)(THIS_ LPD3DVALUE px, LPD3DVALUE py, LPD3DVALUE pz,
2124         LPD3DVALUE nx, LPD3DVALUE ny, LPD3DVALUE nz) PURE;
2125     STDMETHOD(SetPlane)(THIS_ D3DVALUE px, D3DVALUE py, D3DVALUE pz,
2126         D3DVALUE nx, D3DVALUE ny, D3DVALUE nz, DWORD) PURE;
2127     STDMETHOD(GetOptions)(THIS_ LPDWORD) PURE;
2128     STDMETHOD(SetOptions)(THIS_ DWORD) PURE;
2129 };
2130 #undef INTERFACE
2131
2132 #if !defined(__cplusplus) || defined(CINTERFACE)
2133 /*** IUnknown methods ***/
2134 #define IDirect3DRMShadow2_QueryInterface(p,a,b)          (p)->lpVtbl->QueryInterface(p,a,b)
2135 #define IDirect3DRMShadow2_AddRef(p)                      (p)->lpVtbl->AddRef(p)
2136 #define IDirect3DRMShadow2_Release(p)                     (p)->lpVtbl->Release(p)
2137 /*** IDirect3DRMObject methods ***/
2138 #define IDirect3DRMShadow2_Clone(p,a,b,c)                 (p)->lpVtbl->Clone(p,a,b,c)
2139 #define IDirect3DRMShadow2_AddDestroyCallback(p,a,b)      (p)->lpVtbl->AddDestroyCallback(p,a,b)
2140 #define IDirect3DRMShadow2_DeleteDestroyCallback(p,a,b)   (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
2141 #define IDirect3DRMShadow2_SetAppData(p,a)                (p)->lpVtbl->SetAppData(p,a)
2142 #define IDirect3DRMShadow2_GetAppData(p)                  (p)->lpVtbl->GetAppData(p)
2143 #define IDirect3DRMShadow2_SetName(p,a)                   (p)->lpVtbl->SetName(p,a)
2144 #define IDirect3DRMShadow2_GetName(p,a,b)                 (p)->lpVtbl->GetName(p,a,b)
2145 #define IDirect3DRMShadow2_GetClassName(p,a,b)            (p)->lpVtbl->GetClassName(p,a,b)
2146 /*** IDirect3DRMShadow methods ***/
2147 #define IDirect3DRMShadow2_Init(p,a,b,c,d,e,f,g)          (p)->lpVtbl->Init(p,a,b,c,d,e,f,g)
2148 /*** IDirect3DRMShadow2 methods ***/
2149 #define IDirect3DRMShadow2_GetVisual(p,a)                 (p)->lpVtbl->GetVisual(p,a)
2150 #define IDirect3DRMShadow2_SetVisual(p,a,b)               (p)->lpVtbl->SetVisual(p,a,b)
2151 #define IDirect3DRMShadow2_GetLight(p,a)                  (p)->lpVtbl->GetLight(p,a)
2152 #define IDirect3DRMShadow2_SetLight(p,a,b)                (p)->lpVtbl->SetLight(p,a,b)
2153 #define IDirect3DRMShadow2_GetPlane(p,a,b,c,d,e,f)        (p)->lpVtbl->GetPlane(p,a,b,c,d,e,f)
2154 #define IDirect3DRMShadow2_SetPlane(p,a,b,c,d,e,f)        (p)->lpVtbl->SetPlane(p,a,b,c,d,e,f)
2155 #define IDirect3DRMShadow2_GetOptions(p,a)                (p)->lpVtbl->GetOptions(p,a)
2156 #define IDirect3DRMShadow2_SetOptions(p,a)                (p)->lpVtbl->SetOptions(p,a)
2157 #else
2158 /*** IUnknown methods ***/
2159 #define IDirect3DRMShadow2_QueryInterface(p,a,b)          (p)->QueryInterface(a,b)
2160 #define IDirect3DRMShadow2_AddRef(p)                      (p)->AddRef()
2161 #define IDirect3DRMShadow2_Release(p)                     (p)->Release()
2162 /*** IDirect3DRMObject methods ***/
2163 #define IDirect3DRMShadow2_Clone(p,a,b,c)                 (p)->Clone(a,b,c)
2164 #define IDirect3DRMShadow2_AddDestroyCallback(p,a,b)      (p)->AddDestroyCallback(a,b)
2165 #define IDirect3DRMShadow2_DeleteDestroyCallback(p,a,b)   (p)->DeleteDestroyCallback(a,b)
2166 #define IDirect3DRMShadow2_SetAppData(p,a)                (p)->SetAppData(a)
2167 #define IDirect3DRMShadow2_GetAppData(p)                  (p)->GetAppData()
2168 #define IDirect3DRMShadow2_SetName(p,a)                   (p)->SetName(a)
2169 #define IDirect3DRMShadow2_GetName(p,a,b)                 (p)->GetName(a,b)
2170 #define IDirect3DRMShadow2_GetClassName(p,a,b)            (p)->GetClassName(a,b)
2171 /*** IDirect3DRMShadow methods ***/
2172 #define IDirect3DRMShadow2_Init(p,a,b,c,d,e,f,g)          (p)->Init(a,b,c,d,e,f,g)
2173 /*** IDirect3DRMShadow2 methods ***/
2174 #define IDirect3DRMShadow2_GetVisual(p,a)                 (p)->GetVisual(a)
2175 #define IDirect3DRMShadow2_SetVisual(p,a,b)               (p)->SetVisual(a,b)
2176 #define IDirect3DRMShadow2_GetLight(p,a)                  (p)->GetLight(a)
2177 #define IDirect3DRMShadow2_SetLight(p,a,b)                (p)->SetLight(a,b)
2178 #define IDirect3DRMShadow2_GetPlane(p,a,b,c,d,e,f)        (p)->GetPlane(a,b,c,d,e,f)
2179 #define IDirect3DRMShadow2_SetPlane(p,a,b,c,d,e,f)        (p)->SetPlane(a,b,c,d,e,f)
2180 #define IDirect3DRMShadow2_GetOptions(p,a)                (p)->GetOptions(a)
2181 #define IDirect3DRMShadow2_SetOptions(p,a)                (p)->lpVtbl->SetOptions(p,a)
2182 #endif
2183
2184 /*****************************************************************************
2185  * IDirect3DRMFace interface
2186  */
2187 #define INTERFACE IDirect3DRMFace
2188 DECLARE_INTERFACE_(IDirect3DRMFace,IDirect3DRMObject)
2189 {
2190     /*** IUnknown methods ***/
2191     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
2192     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
2193     STDMETHOD_(ULONG,Release)(THIS) PURE;
2194     /*** IDirect3DRMObject methods ***/
2195     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
2196     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
2197     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
2198     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
2199     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
2200     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
2201     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
2202     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
2203     /*** IDirect3DRMFace methods ***/
2204     STDMETHOD(AddVertex)(THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
2205     STDMETHOD(AddVertexAndNormalIndexed)(THIS_ DWORD vertex, DWORD normal) PURE;
2206     STDMETHOD(SetColorRGB)(THIS_ D3DVALUE, D3DVALUE, D3DVALUE) PURE;
2207     STDMETHOD(SetColor)(THIS_ D3DCOLOR) PURE;
2208     STDMETHOD(SetTexture)(THIS_ LPDIRECT3DRMTEXTURE) PURE;
2209     STDMETHOD(SetTextureCoordinates)(THIS_ DWORD vertex, D3DVALUE u, D3DVALUE v) PURE;
2210     STDMETHOD(SetMaterial)(THIS_ LPDIRECT3DRMMATERIAL) PURE;
2211     STDMETHOD(SetTextureTopology)(THIS_ BOOL wrap_u, BOOL wrap_v) PURE;
2212     STDMETHOD(GetVertex)(THIS_ DWORD index, D3DVECTOR *vertex, D3DVECTOR *normal) PURE;
2213     STDMETHOD(GetVertices)(THIS_ DWORD *vertex_count, D3DVECTOR *coords, D3DVECTOR *normals);
2214     STDMETHOD(GetTextureCoordinates)(THIS_ DWORD vertex, D3DVALUE *u, D3DVALUE *v) PURE;
2215     STDMETHOD(GetTextureTopology)(THIS_ BOOL *wrap_u, BOOL *wrap_v) PURE;
2216     STDMETHOD(GetNormal)(THIS_ D3DVECTOR *) PURE;
2217     STDMETHOD(GetTexture)(THIS_ LPDIRECT3DRMTEXTURE *) PURE;
2218     STDMETHOD(GetMaterial)(THIS_ LPDIRECT3DRMMATERIAL *) PURE;
2219     STDMETHOD_(int, GetVertexCount)(THIS) PURE;
2220     STDMETHOD_(int, GetVertexIndex)(THIS_ DWORD which) PURE;
2221     STDMETHOD_(int, GetTextureCoordinateIndex)(THIS_ DWORD which) PURE;
2222     STDMETHOD_(D3DCOLOR, GetColor)(THIS) PURE;
2223 };
2224 #undef INTERFACE
2225
2226 #if !defined(__cplusplus) || defined(CINTERFACE)
2227 /*** IUnknown methods ***/
2228 #define IDirect3DRMFace_QueryInterface(p,a,b)             (p)->lpVtbl->QueryInterface(p,a,b)
2229 #define IDirect3DRMFace_AddRef(p)                         (p)->lpVtbl->AddRef(p)
2230 #define IDirect3DRMFace_Release(p)                        (p)->lpVtbl->Release(p)
2231 /*** IDirect3DRMObject methods ***/
2232 #define IDirect3DRMFace_Clone(p,a,b,c)                    (p)->lpVtbl->Clone(p,a,b,c)
2233 #define IDirect3DRMFace_AddDestroyCallback(p,a,b)         (p)->lpVtbl->AddDestroyCallback(p,a,b)
2234 #define IDirect3DRMFace_DeleteDestroyCallback(p,a,b)      (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
2235 #define IDirect3DRMFace_SetAppData(p,a)                   (p)->lpVtbl->SetAppData(p,a)
2236 #define IDirect3DRMFace_GetAppData(p)                     (p)->lpVtbl->GetAppData(p)
2237 #define IDirect3DRMFace_SetName(p,a)                      (p)->lpVtbl->SetName(p,a)
2238 #define IDirect3DRMFace_GetName(p,a,b)                    (p)->lpVtbl->GetName(p,a,b)
2239 #define IDirect3DRMFace_GetClassName(p,a,b)               (p)->lpVtbl->GetClassName(p,a,b)
2240 /*** IDirect3DRMFace methods ***/
2241 #define IDirect3DRMFace_AddVertex(p,a,b,c)                (p)->lpVtbl->AddVertex(p,a,b,c)
2242 #define IDirect3DRMFace_AddVertexAndNormalIndexed(p,a,b)  (p)->lpVtbl->AddVertexAndNormalIndexed(p,a,b)
2243 #define IDirect3DRMFace_SetColorRGB(p,a,b,c)              (p)->lpVtbl->SetColorRGB(p,a,b,c)
2244 #define IDirect3DRMFace_SetColor(p,a)                     (p)->lpVtbl->SetColor(p,a)
2245 #define IDirect3DRMFace_SetTexture(p,a)                   (p)->lpVtbl->SetTexture(p,a)
2246 #define IDirect3DRMFace_SetTextureCoordinates(p,a,b,c)    (p)->lpVtbl->SetTextureCoordinates(p,a,b,c)
2247 #define IDirect3DRMFace_SetMaterial(p,a)                  (p)->lpVtbl->SetMaterial(p,a)
2248 #define IDirect3DRMFace_SetTextureTopology(p,a,b)         (p)->lpVtbl->SetTextureTopology(p,a,b)
2249 #define IDirect3DRMFace_GetVertex(p,a,b,c)                (p)->lpVtbl->GetVertex(p,a,b,c)
2250 #define IDirect3DRMFace_GetVertices(p,a,b,c)              (p)->lpVtbl->GetVertices(p,a,b,c)
2251 #define IDirect3DRMFace_GetTextureCoordinates(p,a,b,c)    (p)->lpVtbl->GetTextureCoordinates(p,a,b,c)
2252 #define IDirect3DRMFace_GetTextureTopology(p,a,b)         (p)->lpVtbl->GetTextureTopology(p,a,b)
2253 #define IDirect3DRMFace_GetNormal(p,a)                    (p)->lpVtbl->GetNormal(p,a)
2254 #define IDirect3DRMFace_GetTexture(p,a)                   (p)->lpVtbl->GetTexture(p,a)
2255 #define IDirect3DRMFace_GetVertexCount(p)                 (p)->lpVtbl->GetVertexCount(p)
2256 #define IDirect3DRMFace_GetVertexIndex(p,a)               (p)->lpVtbl->GetVertexIndex(p,a)
2257 #define IDirect3DRMFace_GetTextureCoordinateIndex(p,a)    (p)->lpVtbl->GetTextureCoordinateIndex(p,a)
2258 #define IDirect3DRMFace_GetColor(p,a)                     (p)->lpVtbl->GetColor(p,a)
2259 #else
2260 /*** IUnknown methods ***/
2261 #define IDirect3DRMFace_QueryInterface(p,a,b)             (p)->QueryInterface(a,b)
2262 #define IDirect3DRMFace_AddRef(p)                         (p)->AddRef()
2263 #define IDirect3DRMFace_Release(p)                        (p)->Release()
2264 /*** IDirect3DRMObject methods ***/
2265 #define IDirect3DRMFace_Clone(p,a,b,c)                    (p)->Clone(a,b,c)
2266 #define IDirect3DRMFace_AddDestroyCallback(p,a,b)         (p)->AddDestroyCallback(a,b)
2267 #define IDirect3DRMFace_DeleteDestroyCallback(p,a,b)      (p)->DeleteDestroyCallback(a,b)
2268 #define IDirect3DRMFace_SetAppData(p,a)                   (p)->SetAppData(a)
2269 #define IDirect3DRMFace_GetAppData(p)                     (p)->GetAppData()
2270 #define IDirect3DRMFace_SetName(p,a)                      (p)->SetName(a)
2271 #define IDirect3DRMFace_GetName(p,a,b)                    (p)->GetName(a,b)
2272 #define IDirect3DRMFace_GetClassName(p,a,b)               (p)->GetClassName(a,b)
2273 /*** IDirect3DRMFace methods ***/
2274 #define IDirect3DRMFace_AddVertex(p,a,b,c)                (p)->AddVertex(a,b,c)
2275 #define IDirect3DRMFace_AddVertexAndNormalIndexed(p,a,b)  (p)->AddVertexAndNormalIndexed(a,b)
2276 #define IDirect3DRMFace_SetColorRGB(p,a,b,c)              (p)->SetColorRGB(a,b,c)
2277 #define IDirect3DRMFace_SetColor(p,a)                     (p)->SetColor(a)
2278 #define IDirect3DRMFace_SetTexture(p,a)                   (p)->SetTexture(a)
2279 #define IDirect3DRMFace_SetTextureCoordinates(p,a,b,c)    (p)->SetTextureCoordinates(a,b,c)
2280 #define IDirect3DRMFace_SetMaterial(p,a)                  (p)->SetMaterial(a)
2281 #define IDirect3DRMFace_SetTextureTopology(p,a,b)         (p)->SetTextureTopology(a,b)
2282 #define IDirect3DRMFace_GetVertex(p,a,b,c)                (p)->GetVertex(a,b,c)
2283 #define IDirect3DRMFace_GetVertices(p,a,b,c)              (p)->GetVertices(a,b,c)
2284 #define IDirect3DRMFace_GetTextureCoordinates(p,a,b,c)    (p)->GetTextureCoordinates(a,b,c)
2285 #define IDirect3DRMFace_GetTextureTopology(p,a,b)         (p)->GetTextureTopology(a,b)
2286 #define IDirect3DRMFace_GetNormal(p,a)                    (p)->GetNormal(a)
2287 #define IDirect3DRMFace_GetTexture(p,a)                   (p)->GetTexture(a)
2288 #define IDirect3DRMFace_GetVertexCount(p)                 (p)->GetVertexCount()
2289 #define IDirect3DRMFace_GetVertexIndex(p,a)               (p)->GetVertexIndex(a)
2290 #define IDirect3DRMFace_GetTextureCoordinateIndex(p,a)    (p)->GetTextureCoordinateIndex(a)
2291 #define IDirect3DRMFace_GetColor(p,a)                     (p)->GetColor(a)
2292 #endif
2293
2294 /*****************************************************************************
2295  * IDirect3DRMFace2 interface
2296  */
2297 #define INTERFACE IDirect3DRMFace2
2298 DECLARE_INTERFACE_(IDirect3DRMFace2,IDirect3DRMObject)
2299 {
2300     /*** IUnknown methods ***/
2301     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
2302     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
2303     STDMETHOD_(ULONG,Release)(THIS) PURE;
2304     /*** IDirect3DRMObject methods ***/
2305     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
2306     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
2307     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
2308     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
2309     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
2310     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
2311     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
2312     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
2313     /*** IDirect3DRMFace methods ***/
2314     STDMETHOD(AddVertex)(THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
2315     STDMETHOD(AddVertexAndNormalIndexed)(THIS_ DWORD vertex, DWORD normal) PURE;
2316     STDMETHOD(SetColorRGB)(THIS_ D3DVALUE, D3DVALUE, D3DVALUE) PURE;
2317     STDMETHOD(SetColor)(THIS_ D3DCOLOR) PURE;
2318     STDMETHOD(SetTexture)(THIS_ LPDIRECT3DRMTEXTURE3) PURE;
2319     STDMETHOD(SetTextureCoordinates)(THIS_ DWORD vertex, D3DVALUE u, D3DVALUE v) PURE;
2320     STDMETHOD(SetMaterial)(THIS_ LPDIRECT3DRMMATERIAL2) PURE;
2321     STDMETHOD(SetTextureTopology)(THIS_ BOOL wrap_u, BOOL wrap_v) PURE;
2322     STDMETHOD(GetVertex)(THIS_ DWORD index, D3DVECTOR *vertex, D3DVECTOR *normal) PURE;
2323     STDMETHOD(GetVertices)(THIS_ DWORD *vertex_count, D3DVECTOR *coords, D3DVECTOR *normals);
2324     STDMETHOD(GetTextureCoordinates)(THIS_ DWORD vertex, D3DVALUE *u, D3DVALUE *v) PURE;
2325     STDMETHOD(GetTextureTopology)(THIS_ BOOL *wrap_u, BOOL *wrap_v) PURE;
2326     STDMETHOD(GetNormal)(THIS_ D3DVECTOR *) PURE;
2327     STDMETHOD(GetTexture)(THIS_ LPDIRECT3DRMTEXTURE3 *) PURE;
2328     STDMETHOD(GetMaterial)(THIS_ LPDIRECT3DRMMATERIAL2 *) PURE;
2329     STDMETHOD_(int, GetVertexCount)(THIS) PURE;
2330     STDMETHOD_(int, GetVertexIndex)(THIS_ DWORD which) PURE;
2331     STDMETHOD_(int, GetTextureCoordinateIndex)(THIS_ DWORD which) PURE;
2332     STDMETHOD_(D3DCOLOR, GetColor)(THIS) PURE;
2333 };
2334 #undef INTERFACE
2335
2336 #if !defined(__cplusplus) || defined(CINTERFACE)
2337 /*** IUnknown methods ***/
2338 #define IDirect3DRMFace2_QueryInterface(p,a,b)             (p)->lpVtbl->QueryInterface(p,a,b)
2339 #define IDirect3DRMFace2_AddRef(p)                         (p)->lpVtbl->AddRef(p)
2340 #define IDirect3DRMFace2_Release(p)                        (p)->lpVtbl->Release(p)
2341 /*** IDirect3DRMObject methods ***/
2342 #define IDirect3DRMFace2_Clone(p,a,b,c)                    (p)->lpVtbl->Clone(p,a,b,c)
2343 #define IDirect3DRMFace2_AddDestroyCallback(p,a,b)         (p)->lpVtbl->AddDestroyCallback(p,a,b)
2344 #define IDirect3DRMFace2_DeleteDestroyCallback(p,a,b)      (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
2345 #define IDirect3DRMFace2_SetAppData(p,a)                   (p)->lpVtbl->SetAppData(p,a)
2346 #define IDirect3DRMFace2_GetAppData(p)                     (p)->lpVtbl->GetAppData(p)
2347 #define IDirect3DRMFace2_SetName(p,a)                      (p)->lpVtbl->SetName(p,a)
2348 #define IDirect3DRMFace2_GetName(p,a,b)                    (p)->lpVtbl->GetName(p,a,b)
2349 #define IDirect3DRMFace2_GetClassName(p,a,b)               (p)->lpVtbl->GetClassName(p,a,b)
2350 /*** IDirect3DRMFace methods ***/
2351 #define IDirect3DRMFace2_AddVertex(p,a,b,c)                (p)->lpVtbl->AddVertex(p,a,b,c)
2352 #define IDirect3DRMFace2_AddVertexAndNormalIndexed(p,a,b)  (p)->lpVtbl->AddVertexAndNormalIndexed(p,a,b)
2353 #define IDirect3DRMFace2_SetColorRGB(p,a,b,c)              (p)->lpVtbl->SetColorRGB(p,a,b,c)
2354 #define IDirect3DRMFace2_SetColor(p,a)                     (p)->lpVtbl->SetColor(p,a)
2355 #define IDirect3DRMFace2_SetTexture(p,a)                   (p)->lpVtbl->SetTexture(p,a)
2356 #define IDirect3DRMFace2_SetTextureCoordinates(p,a,b,c)    (p)->lpVtbl->SetTextureCoordinates(p,a,b,c)
2357 #define IDirect3DRMFace2_SetMaterial(p,a)                  (p)->lpVtbl->SetMaterial(p,a)
2358 #define IDirect3DRMFace2_SetTextureTopology(p,a,b)         (p)->lpVtbl->SetTextureTopology(p,a,b)
2359 #define IDirect3DRMFace2_GetVertex(p,a,b,c)                (p)->lpVtbl->GetVertex(p,a,b,c)
2360 #define IDirect3DRMFace2_GetVertices(p,a,b,c)              (p)->lpVtbl->GetVertices(p,a,b,c)
2361 #define IDirect3DRMFace2_GetTextureCoordinates(p,a,b,c)    (p)->lpVtbl->GetTextureCoordinates(p,a,b,c)
2362 #define IDirect3DRMFace2_GetTextureTopology(p,a,b)         (p)->lpVtbl->GetTextureTopology(p,a,b)
2363 #define IDirect3DRMFace2_GetNormal(p,a)                    (p)->lpVtbl->GetNormal(p,a)
2364 #define IDirect3DRMFace2_GetTexture(p,a)                   (p)->lpVtbl->GetTexture(p,a)
2365 #define IDirect3DRMFace2_GetVertexCount(p)                 (p)->lpVtbl->GetVertexCount(p)
2366 #define IDirect3DRMFace2_GetVertexIndex(p,a)               (p)->lpVtbl->GetVertexIndex(p,a)
2367 #define IDirect3DRMFace2_GetTextureCoordinateIndex(p,a)    (p)->lpVtbl->GetTextureCoordinateIndex(p,a)
2368 #define IDirect3DRMFace2_GetColor(p,a)                     (p)->lpVtbl->GetColor(p,a)
2369 #else
2370 /*** IUnknown methods ***/
2371 #define IDirect3DRMFace2_QueryInterface(p,a,b)             (p)->QueryInterface(a,b)
2372 #define IDirect3DRMFace2_AddRef(p)                         (p)->AddRef()
2373 #define IDirect3DRMFace2_Release(p)                        (p)->Release()
2374 /*** IDirect3DRMObject methods ***/
2375 #define IDirect3DRMFace2_Clone(p,a,b,c)                    (p)->Clone(a,b,c)
2376 #define IDirect3DRMFace2_AddDestroyCallback(p,a,b)         (p)->AddDestroyCallback(a,b)
2377 #define IDirect3DRMFace2_DeleteDestroyCallback(p,a,b)      (p)->DeleteDestroyCallback(a,b)
2378 #define IDirect3DRMFace2_SetAppData(p,a)                   (p)->SetAppData(a)
2379 #define IDirect3DRMFace2_GetAppData(p)                     (p)->GetAppData()
2380 #define IDirect3DRMFace2_SetName(p,a)                      (p)->SetName(a)
2381 #define IDirect3DRMFace2_GetName(p,a,b)                    (p)->GetName(a,b)
2382 #define IDirect3DRMFace2_GetClassName(p,a,b)               (p)->GetClassName(a,b)
2383 /*** IDirect3DRMFace methods ***/
2384 #define IDirect3DRMFace2_AddVertex(p,a,b,c)                (p)->AddVertex(a,b,c)
2385 #define IDirect3DRMFace2_AddVertexAndNormalIndexed(p,a,b)  (p)->AddVertexAndNormalIndexed(a,b)
2386 #define IDirect3DRMFace2_SetColorRGB(p,a,b,c)              (p)->SetColorRGB(a,b,c)
2387 #define IDirect3DRMFace2_SetColor(p,a)                     (p)->SetColor(a)
2388 #define IDirect3DRMFace2_SetTexture(p,a)                   (p)->SetTexture(a)
2389 #define IDirect3DRMFace2_SetTextureCoordinates(p,a,b,c)    (p)->SetTextureCoordinates(a,b,c)
2390 #define IDirect3DRMFace2_SetMaterial(p,a)                  (p)->SetMaterial(a)
2391 #define IDirect3DRMFace2_SetTextureTopology(p,a,b)         (p)->SetTextureTopology(a,b)
2392 #define IDirect3DRMFace2_GetVertex(p,a,b,c)                (p)->GetVertex(a,b,c)
2393 #define IDirect3DRMFace2_GetVertices(p,a,b,c)              (p)->GetVertices(a,b,c)
2394 #define IDirect3DRMFace2_GetTextureCoordinates(p,a,b,c)    (p)->GetTextureCoordinates(a,b,c)
2395 #define IDirect3DRMFace2_GetTextureTopology(p,a,b)         (p)->GetTextureTopology(a,b)
2396 #define IDirect3DRMFace2_GetNormal(p,a)                    (p)->GetNormal(a)
2397 #define IDirect3DRMFace2_GetTexture(p,a)                   (p)->GetTexture(a)
2398 #define IDirect3DRMFace2_GetVertexCount(p)                 (p)->GetVertexCount()
2399 #define IDirect3DRMFace2_GetVertexIndex(p,a)               (p)->GetVertexIndex(a)
2400 #define IDirect3DRMFace2_GetTextureCoordinateIndex(p,a)    (p)->GetTextureCoordinateIndex(a)
2401 #define IDirect3DRMFace2_GetColor(p,a)                     (p)->GetColor(a)
2402 #endif
2403
2404 /*****************************************************************************
2405  * IDirect3DRMMeshBuilder interface
2406  */
2407 #define INTERFACE IDirect3DRMMeshBuilder
2408 DECLARE_INTERFACE_(IDirect3DRMMeshBuilder,IDirect3DRMVisual)
2409 {
2410     /*** IUnknown methods ***/
2411     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
2412     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
2413     STDMETHOD_(ULONG,Release)(THIS) PURE;
2414     /*** IDirect3DRMObject methods ***/
2415     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
2416     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
2417     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
2418     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
2419     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
2420     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
2421     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
2422     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
2423     /*** IDirect3DRMMeshBuilder methods ***/
2424     STDMETHOD(Load)(THIS_ LPVOID filename, LPVOID name, D3DRMLOADOPTIONS loadflags, D3DRMLOADTEXTURECALLBACK, LPVOID pArg) PURE;
2425     STDMETHOD(Save)(THIS_ const char *filename, D3DRMXOFFORMAT, D3DRMSAVEOPTIONS save) PURE;
2426     STDMETHOD(Scale)(THIS_ D3DVALUE sx, D3DVALUE sy, D3DVALUE sz) PURE;
2427     STDMETHOD(Translate)(THIS_ D3DVALUE tx, D3DVALUE ty, D3DVALUE tz) PURE;
2428     STDMETHOD(SetColorSource)(THIS_ D3DRMCOLORSOURCE) PURE;
2429     STDMETHOD(GetBox)(THIS_ D3DRMBOX *) PURE;
2430     STDMETHOD(GenerateNormals)(THIS) PURE;
2431     STDMETHOD_(D3DRMCOLORSOURCE, GetColorSource)(THIS) PURE;
2432     STDMETHOD(AddMesh)(THIS_ LPDIRECT3DRMMESH) PURE;
2433     STDMETHOD(AddMeshBuilder)(THIS_ LPDIRECT3DRMMESHBUILDER) PURE;
2434     STDMETHOD(AddFrame)(THIS_ LPDIRECT3DRMFRAME) PURE;
2435     STDMETHOD(AddFace)(THIS_ LPDIRECT3DRMFACE) PURE;
2436     STDMETHOD(AddFaces)(THIS_ DWORD vcount, D3DVECTOR *vertices, DWORD ncount, D3DVECTOR *normals, DWORD *data,
2437         LPDIRECT3DRMFACEARRAY*) PURE;
2438     STDMETHOD(ReserveSpace)(THIS_ DWORD vertex_Count, DWORD normal_count, DWORD face_count) PURE;
2439     STDMETHOD(SetColorRGB)(THIS_ D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE;
2440     STDMETHOD(SetColor)(THIS_ D3DCOLOR) PURE;
2441     STDMETHOD(SetTexture)(THIS_ LPDIRECT3DRMTEXTURE) PURE;
2442     STDMETHOD(SetMaterial)(THIS_ LPDIRECT3DRMMATERIAL) PURE;
2443     STDMETHOD(SetTextureTopology)(THIS_ BOOL wrap_u, BOOL wrap_v) PURE;
2444     STDMETHOD(SetQuality)(THIS_ D3DRMRENDERQUALITY) PURE;
2445     STDMETHOD(SetPerspective)(THIS_ BOOL) PURE;
2446     STDMETHOD(SetVertex)(THIS_ DWORD index, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
2447     STDMETHOD(SetNormal)(THIS_ DWORD index, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
2448     STDMETHOD(SetTextureCoordinates)(THIS_ DWORD index, D3DVALUE u, D3DVALUE v) PURE;
2449     STDMETHOD(SetVertexColor)(THIS_ DWORD index, D3DCOLOR) PURE;
2450     STDMETHOD(SetVertexColorRGB)(THIS_ DWORD index, D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE;
2451     STDMETHOD(GetFaces)(THIS_ LPDIRECT3DRMFACEARRAY*) PURE;
2452     STDMETHOD(GetVertices)(THIS_ DWORD *vcount, D3DVECTOR *vertices, DWORD *ncount, D3DVECTOR *normals,
2453         DWORD *face_data_size, DWORD *face_data) PURE;
2454     STDMETHOD(GetTextureCoordinates)(THIS_ DWORD index, D3DVALUE *u, D3DVALUE *v) PURE;
2455     STDMETHOD_(int, AddVertex)(THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
2456     STDMETHOD_(int, AddNormal)(THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
2457     STDMETHOD(CreateFace)(THIS_ LPDIRECT3DRMFACE*) PURE;
2458     STDMETHOD_(D3DRMRENDERQUALITY, GetQuality)(THIS) PURE;
2459     STDMETHOD_(BOOL, GetPerspective)(THIS) PURE;
2460     STDMETHOD_(int, GetFaceCount)(THIS) PURE;
2461     STDMETHOD_(int, GetVertexCount)(THIS) PURE;
2462     STDMETHOD_(D3DCOLOR, GetVertexColor)(THIS_ DWORD index) PURE;
2463     STDMETHOD(CreateMesh)(THIS_ LPDIRECT3DRMMESH*) PURE;
2464 };
2465 #undef INTERFACE
2466
2467 #if !defined(__cplusplus) || defined(CINTERFACE)
2468 /*** IUnknown methods ***/
2469 #define IDirect3DRMMeshBuilder_QueryInterface(p,a,b)             (p)->lpVtbl->QueryInterface(p,a,b)
2470 #define IDirect3DRMMeshBuilder_AddRef(p)                         (p)->lpVtbl->AddRef(p)
2471 #define IDirect3DRMMeshBuilder_Release(p)                        (p)->lpVtbl->Release(p)
2472 /*** IDirect3DRMObject methods ***/
2473 #define IDirect3DRMMeshBuilder_Clone(p,a,b,c)                    (p)->lpVtbl->Clone(p,a,b,c)
2474 #define IDirect3DRMMeshBuilder_AddDestroyCallback(p,a,b)         (p)->lpVtbl->AddDestroyCallback(p,a,b)
2475 #define IDirect3DRMMeshBuilder_DeleteDestroyCallback(p,a,b)      (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
2476 #define IDirect3DRMMeshBuilder_SetAppData(p,a)                   (p)->lpVtbl->SetAppData(p,a)
2477 #define IDirect3DRMMeshBuilder_GetAppData(p)                     (p)->lpVtbl->GetAppData(p)
2478 #define IDirect3DRMMeshBuilder_SetName(p,a)                      (p)->lpVtbl->SetName(p,a)
2479 #define IDirect3DRMMeshBuilder_GetName(p,a,b)                    (p)->lpVtbl->GetName(p,a,b)
2480 #define IDirect3DRMMeshBuilder_GetClassName(p,a,b)               (p)->lpVtbl->GetClassName(p,a,b)
2481 /*** IDirect3DRMMeshBuilder methods ***/
2482 #define IDirect3DRMMeshBuilder_Load(p,a,b,c,d,e)                 (p)->lpVtbl->Load(p,a,b,c,d,e)
2483 #define IDirect3DRMMeshBuilder_Save(p,a,b,c)                     (p)->lpVtbl->Save(p,a,b,c)
2484 #define IDirect3DRMMeshBuilder_Scale(p,a,b,c)                    (p)->lpVtbl->Scale(p,a,b,c)
2485 #define IDirect3DRMMeshBuilder_Translate(p,a,b,c)                (p)->lpVtbl->Translate(p,a)
2486 #define IDirect3DRMMeshBuilder_SetColorSource(p,a)               (p)->lpVtbl->SetColorSource(p,a,b,c)
2487 #define IDirect3DRMMeshBuilder_GetBox(p,a)                       (p)->lpVtbl->GetBox(p,a)
2488 #define IDirect3DRMMeshBuilder_GenerateNormals(p)                (p)->lpVtbl->GenerateNormals(p)
2489 #define IDirect3DRMMeshBuilder_GetColorSource(p)                 (p)->lpVtbl->GetColorSource(p)
2490 #define IDirect3DRMMeshBuilder_AddMesh(p,a)                      (p)->lpVtbl->AddMesh(p,a)
2491 #define IDirect3DRMMeshBuilder_AddMeshBuilder(p,a)               (p)->lpVtbl->AddMeshBuilder(p,a)
2492 #define IDirect3DRMMeshBuilder_AddFrame(p,a)                     (p)->lpVtbl->AddFrame(p,a)
2493 #define IDirect3DRMMeshBuilder_AddFace(p,a)                      (p)->lpVtbl->AddFace(p,a)
2494 #define IDirect3DRMMeshBuilder_AddFaces(p,a,b,c,d,e,f)           (p)->lpVtbl->AddFaces(p,a,b,c,d,e,f)
2495 #define IDirect3DRMMeshBuilder_ReserveSpace(p,a,b,c)             (p)->lpVtbl->ReserveSpace(p,a,b,c)
2496 #define IDirect3DRMMeshBuilder_SetColorRGB(p,a,b,c)              (p)->lpVtbl->SetColorRGB(p,a,b,c)
2497 #define IDirect3DRMMeshBuilder_SetColor(p,a)                     (p)->lpVtbl->SetColor(p,a)
2498 #define IDirect3DRMMeshBuilder_SetTexture(p,a)                   (p)->lpVtbl->SetTexture(p,a)
2499 #define IDirect3DRMMeshBuilder_SetMateria(p,a)                   (p)->lpVtbl->SetMateria(p,a)
2500 #define IDirect3DRMMeshBuilder_SetTextureTopology(p,a,b)         (p)->lpVtbl->SetTextureTopology(p,a,b)
2501 #define IDirect3DRMMeshBuilder_SetQuality(p,a)                   (p)->lpVtbl->SetQuality(p,a)
2502 #define IDirect3DRMMeshBuilder_SetPerspective(p,a)               (p)->lpVtbl->SetPerspective(p,a)
2503 #define IDirect3DRMMeshBuilder_SetVertex(p,a,b,c,d)              (p)->lpVtbl->SetVertex(p,a,b,c,d)
2504 #define IDirect3DRMMeshBuilder_SetNormal(p,a,b,c,d)              (p)->lpVtbl->SetNormal(p,a,b,c,d)
2505 #define IDirect3DRMMeshBuilder_SetTextureCoordinates(p,a,b,c)    (p)->lpVtbl->SetTextureCoordinates(p,a,b,c)
2506 #define IDirect3DRMMeshBuilder_SetVertexColor(p,a,b)             (p)->lpVtbl->SetVertexColor(p,a,b)
2507 #define IDirect3DRMMeshBuilder_SetVertexColorRGB(p,a,b,c,d)      (p)->lpVtbl->SetVertexColorRGB(p,a,b,c,d)
2508 #define IDirect3DRMMeshBuilder_GetFaces(p,a)                     (p)->lpVtbl->GetFaces(p,a)
2509 #define IDirect3DRMMeshBuilder_GetVertices(p,a,b,c,d,e,f)        (p)->lpVtbl->GetVertices(p,a,b,c,d,e,f)
2510 #define IDirect3DRMMeshBuilder_GetTextureCoordinates(p,a,b,c)    (p)->lpVtbl->GetTextureCoordinates(p,a,b,c)
2511 #define IDirect3DRMMeshBuilder_AddVertex(p,a,b,c)                (p)->lpVtbl->AddVertex(p,a,b,c)
2512 #define IDirect3DRMMeshBuilder_AddNormal(p,a,b,c)                (p)->lpVtbl->AddNormal(p,a,b,c)
2513 #define IDirect3DRMMeshBuilder_CreateFace(p,a)                   (p)->lpVtbl->CreateFace(p,a)
2514 #define IDirect3DRMMeshBuilder_GetQuality(p)                     (p)->lpVtbl->GetQuality(p)
2515 #define IDirect3DRMMeshBuilder_GetPerspective(p)                 (p)->lpVtbl->GetPerspective(p)
2516 #define IDirect3DRMMeshBuilder_GetFaceCount(p)                   (p)->lpVtbl->GetFaceCount(p)
2517 #define IDirect3DRMMeshBuilder_GetVertexCount(p)                 (p)->lpVtbl->GetVertexCount(p)
2518 #define IDirect3DRMMeshBuilder_GetVertexColor(p,a)               (p)->lpVtbl->GetVertexColor(p,a)
2519 #define IDirect3DRMMeshBuilder_CreateMesh(p,a)                   (p)->lpVtbl->CreateMesh(p,a)
2520 #else
2521 /*** IUnknown methods ***/
2522 #define IDirect3DRMMeshBuilder_QueryInterface(p,a,b)             (p)->QueryInterface(a,b)
2523 #define IDirect3DRMMeshBuilder_AddRef(p)                         (p)->AddRef()
2524 #define IDirect3DRMMeshBuilder_Release(p)                        (p)->Release()
2525 /*** IDirect3DRMObject methods ***/
2526 #define IDirect3DRMMeshBuilder_Clone(p,a,b,c)                    (p)->Clone(a,b,c)
2527 #define IDirect3DRMMeshBuilder_AddDestroyCallback(p,a,b)         (p)->AddDestroyCallback(a,b)
2528 #define IDirect3DRMMeshBuilder_DeleteDestroyCallback(p,a,b)      (p)->DeleteDestroyCallback(a,b)
2529 #define IDirect3DRMMeshBuilder_SetAppData(p,a)                   (p)->SetAppData(a)
2530 #define IDirect3DRMMeshBuilder_GetAppData(p)                     (p)->GetAppData()
2531 #define IDirect3DRMMeshBuilder_SetName(p,a)                      (p)->SetName(a)
2532 #define IDirect3DRMMeshBuilder_GetName(p,a,b)                    (p)->GetName(a,b)
2533 #define IDirect3DRMMeshBuilder_GetClassName(p,a,b)               (p)->GetClassName(a,b)
2534 /*** IDirect3DRMMeshBuilder methods ***/
2535 #define IDirect3DRMMeshBuilder_Load(p,a,b,c,d,e)                 (p)->Load(a,b,c,d,e)
2536 #define IDirect3DRMMeshBuilder_Save(p,a,b,c)                     (p)->Save(a,b,c)
2537 #define IDirect3DRMMeshBuilder_Scale(p,a,b,c)                    (p)->Scale(a,b,c)
2538 #define IDirect3DRMMeshBuilder_Translate(p,a,b,c)                (p)->Translate(a)
2539 #define IDirect3DRMMeshBuilder_SetColorSource(p,a)               (p)->SetColorSource(a,b,c)
2540 #define IDirect3DRMMeshBuilder_GetBox(p,a)                       (p)->GetBox(a)
2541 #define IDirect3DRMMeshBuilder_GenerateNormals(p)                (p)->GenerateNormals()
2542 #define IDirect3DRMMeshBuilder_GetColorSource(p)                 (p)->GetColorSource()
2543 #define IDirect3DRMMeshBuilder_AddMesh(p,a)                      (p)-->AddMesh(a)
2544 #define IDirect3DRMMeshBuilder_AddMeshBuilder(p,a)               (p)->AddMeshBuilder(a)
2545 #define IDirect3DRMMeshBuilder_AddFrame(p,a)                     (p)->AddFrame(a)
2546 #define IDirect3DRMMeshBuilder_AddFace(p,a)                      (p)->AddFace(a)
2547 #define IDirect3DRMMeshBuilder_AddFaces(p,a,b,c,d,e,f)           (p)->AddFaces(a,b,c,d,e,f)
2548 #define IDirect3DRMMeshBuilder_ReserveSpace(p,a,b,c)             (p)->ReserveSpace(a,b,c)
2549 #define IDirect3DRMMeshBuilder_SetColorRGB(p,a,b,c)              (p)->SetColorRGB(a,b,c)
2550 #define IDirect3DRMMeshBuilder_SetColor(p,a)                     (p)->SetColor(a)
2551 #define IDirect3DRMMeshBuilder_SetTexture(p,a)                   (p)->SetTexture(a)
2552 #define IDirect3DRMMeshBuilder_SetMateria(p,a)                   (p)->SetMateria(a)
2553 #define IDirect3DRMMeshBuilder_SetTextureTopology(p,a,b)         (p)->SetTextureTopology(a,b)
2554 #define IDirect3DRMMeshBuilder_SetQuality(p,a)                   (p)->SetQuality(a)
2555 #define IDirect3DRMMeshBuilder_SetPerspective(p,a)               (p)->SetPerspective(a)
2556 #define IDirect3DRMMeshBuilder_SetVertex(p,a,b,c,d)              (p)->SetVertex(a,b,c,d)
2557 #define IDirect3DRMMeshBuilder_SetNormal(p,a,b,c,d)              (p)->SetNormal(a,b,c,d)
2558 #define IDirect3DRMMeshBuilder_SetTextureCoordinates(p,a,b,c)    (p)->SetTextureCoordinates(a,b,c)
2559 #define IDirect3DRMMeshBuilder_SetVertexColor(p,a,b)             (p)->SetVertexColor(a,b)
2560 #define IDirect3DRMMeshBuilder_SetVertexColorRGB(p,a,b,c,d)      (p)->SetVertexColorRGB(a,b,c,d)
2561 #define IDirect3DRMMeshBuilder_GetFaces(p,a)                     (p)->GetFaces(a)
2562 #define IDirect3DRMMeshBuilder_GetVertices(p,a,b,c,d,e,f)        (p)->GetVertices(a,b,c,d,e,f)
2563 #define IDirect3DRMMeshBuilder_GetTextureCoordinates(p,a,b,c)    (p)->GetTextureCoordinates(a,b,c)
2564 #define IDirect3DRMMeshBuilder_AddVertex(p,a,b,c)                (p)->AddVertex(a,b,c)
2565 #define IDirect3DRMMeshBuilder_AddNormal(p,a,b,c)                (p)->AddNormal(a,b,c)
2566 #define IDirect3DRMMeshBuilder_CreateFace(p,a)                   (p)->CreateFace(a)
2567 #define IDirect3DRMMeshBuilder_GetQuality(p)                     (p)->GetQuality()
2568 #define IDirect3DRMMeshBuilder_GetPerspective(p)                 (p)->GetPerspective()
2569 #define IDirect3DRMMeshBuilder_GetFaceCount(p)                   (p)->GetFaceCount()
2570 #define IDirect3DRMMeshBuilder_GetVertexCount(p)                 (p)->GetVertexCount()
2571 #define IDirect3DRMMeshBuilder_GetVertexColor(p,a)               (p)->GetVertexColor(a)
2572 #define IDirect3DRMMeshBuilder_CreateMesh(p,a)                   (p)->CreateMesh(a)
2573 #endif
2574
2575 /*****************************************************************************
2576  * IDirect3DRMMeshBuilder2 interface
2577  */
2578 #define INTERFACE IDirect3DRMMeshBuilder2
2579 DECLARE_INTERFACE_(IDirect3DRMMeshBuilder2,IDirect3DRMMeshBuilder)
2580 {
2581     /*** IUnknown methods ***/
2582     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
2583     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
2584     STDMETHOD_(ULONG,Release)(THIS) PURE;
2585     /*** IDirect3DRMObject methods ***/
2586     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
2587     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
2588     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
2589     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
2590     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
2591     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
2592     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
2593     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
2594     /*** IDirect3DRMMeshBuilder methods ***/
2595     STDMETHOD(Load)(THIS_ LPVOID filename, LPVOID name, D3DRMLOADOPTIONS loadflags, D3DRMLOADTEXTURECALLBACK, LPVOID pArg) PURE;
2596     STDMETHOD(Save)(THIS_ const char *filename, D3DRMXOFFORMAT, D3DRMSAVEOPTIONS save) PURE;
2597     STDMETHOD(Scale)(THIS_ D3DVALUE sx, D3DVALUE sy, D3DVALUE sz) PURE;
2598     STDMETHOD(Translate)(THIS_ D3DVALUE tx, D3DVALUE ty, D3DVALUE tz) PURE;
2599     STDMETHOD(SetColorSource)(THIS_ D3DRMCOLORSOURCE) PURE;
2600     STDMETHOD(GetBox)(THIS_ D3DRMBOX *) PURE;
2601     STDMETHOD(GenerateNormals)(THIS) PURE;
2602     STDMETHOD_(D3DRMCOLORSOURCE, GetColorSource)(THIS) PURE;
2603     STDMETHOD(AddMesh)(THIS_ LPDIRECT3DRMMESH) PURE;
2604     STDMETHOD(AddMeshBuilder)(THIS_ LPDIRECT3DRMMESHBUILDER) PURE;
2605     STDMETHOD(AddFrame)(THIS_ LPDIRECT3DRMFRAME) PURE;
2606     STDMETHOD(AddFace)(THIS_ LPDIRECT3DRMFACE) PURE;
2607     STDMETHOD(AddFaces)(THIS_ DWORD vcount, D3DVECTOR *vertices, DWORD ncount, D3DVECTOR *normals, DWORD *data,
2608         LPDIRECT3DRMFACEARRAY*) PURE;
2609     STDMETHOD(ReserveSpace)(THIS_ DWORD vertex_Count, DWORD normal_count, DWORD face_count) PURE;
2610     STDMETHOD(SetColorRGB)(THIS_ D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE;
2611     STDMETHOD(SetColor)(THIS_ D3DCOLOR) PURE;
2612     STDMETHOD(SetTexture)(THIS_ LPDIRECT3DRMTEXTURE) PURE;
2613     STDMETHOD(SetMaterial)(THIS_ LPDIRECT3DRMMATERIAL) PURE;
2614     STDMETHOD(SetTextureTopology)(THIS_ BOOL wrap_u, BOOL wrap_v) PURE;
2615     STDMETHOD(SetQuality)(THIS_ D3DRMRENDERQUALITY) PURE;
2616     STDMETHOD(SetPerspective)(THIS_ BOOL) PURE;
2617     STDMETHOD(SetVertex)(THIS_ DWORD index, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
2618     STDMETHOD(SetNormal)(THIS_ DWORD index, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
2619     STDMETHOD(SetTextureCoordinates)(THIS_ DWORD index, D3DVALUE u, D3DVALUE v) PURE;
2620     STDMETHOD(SetVertexColor)(THIS_ DWORD index, D3DCOLOR) PURE;
2621     STDMETHOD(SetVertexColorRGB)(THIS_ DWORD index, D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE;
2622     STDMETHOD(GetFaces)(THIS_ LPDIRECT3DRMFACEARRAY*) PURE;
2623     STDMETHOD(GetVertices)(THIS_ DWORD *vcount, D3DVECTOR *vertices, DWORD *ncount, D3DVECTOR *normals,
2624         DWORD *face_data_size, DWORD *face_data) PURE;
2625     STDMETHOD(GetTextureCoordinates)(THIS_ DWORD index, D3DVALUE *u, D3DVALUE *v) PURE;
2626     STDMETHOD_(int, AddVertex)(THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
2627     STDMETHOD_(int, AddNormal)(THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
2628     STDMETHOD(CreateFace)(THIS_ LPDIRECT3DRMFACE*) PURE;
2629     STDMETHOD_(D3DRMRENDERQUALITY, GetQuality)(THIS) PURE;
2630     STDMETHOD_(BOOL, GetPerspective)(THIS) PURE;
2631     STDMETHOD_(int, GetFaceCount)(THIS) PURE;
2632     STDMETHOD_(int, GetVertexCount)(THIS) PURE;
2633     STDMETHOD_(D3DCOLOR, GetVertexColor)(THIS_ DWORD index) PURE;
2634     STDMETHOD(CreateMesh)(THIS_ LPDIRECT3DRMMESH*) PURE;
2635     /*** IDirect3DRMMeshBuilder2 methods ***/
2636     STDMETHOD(GenerateNormals2)(THIS_ D3DVALUE crease, DWORD flags) PURE;
2637     STDMETHOD(GetFace)(THIS_ DWORD index, LPDIRECT3DRMFACE*) PURE;
2638 };
2639 #undef INTERFACE
2640
2641 #if !defined(__cplusplus) || defined(CINTERFACE)
2642 /*** IUnknown methods ***/
2643 #define IDirect3DRMMeshBuilder2_QueryInterface(p,a,b)            (p)->lpVtbl->QueryInterface(p,a,b)
2644 #define IDirect3DRMMeshBuilder2_AddRef(p)                        (p)->lpVtbl->AddRef(p)
2645 #define IDirect3DRMMeshBuilder2_Release(p)                       (p)->lpVtbl->Release(p)
2646 /*** IDirect3DRMObject methods ***/
2647 #define IDirect3DRMMeshBuilder2_Clone(p,a,b,c)                   (p)->lpVtbl->Clone(p,a,b,c)
2648 #define IDirect3DRMMeshBuilder2_AddDestroyCallback(p,a,b)        (p)->lpVtbl->AddDestroyCallback(p,a,b)
2649 #define IDirect3DRMMeshBuilder2_DeleteDestroyCallback(p,a,b)     (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
2650 #define IDirect3DRMMeshBuilder2_SetAppData(p,a)                  (p)->lpVtbl->SetAppData(p,a)
2651 #define IDirect3DRMMeshBuilder2_GetAppData(p)                    (p)->lpVtbl->GetAppData(p)
2652 #define IDirect3DRMMeshBuilder2_SetName(p,a)                     (p)->lpVtbl->SetName(p,a)
2653 #define IDirect3DRMMeshBuilder2_GetName(p,a,b)                   (p)->lpVtbl->GetName(p,a,b)
2654 #define IDirect3DRMMeshBuilder2_GetClassName(p,a,b)              (p)->lpVtbl->GetClassName(p,a,b)
2655 /*** IDirect3DRMMeshBuilder methods ***/
2656 #define IDirect3DRMMeshBuilder2_Load(p,a,b,c,d,e)                (p)->lpVtbl->Load(p,a,b,c,d,e)
2657 #define IDirect3DRMMeshBuilder2_Save(p,a,b,c)                    (p)->lpVtbl->Save(p,a,b,c)
2658 #define IDirect3DRMMeshBuilder2_Scale(p,a,b,c)                   (p)->lpVtbl->Scale(p,a,b,c)
2659 #define IDirect3DRMMeshBuilder2_Translate(p,a,b,c)               (p)->lpVtbl->Translate(p,a)
2660 #define IDirect3DRMMeshBuilder2_SetColorSource(p,a)              (p)->lpVtbl->SetColorSource(p,a,b,c)
2661 #define IDirect3DRMMeshBuilder2_GetBox(p,a)                      (p)->lpVtbl->GetBox(p,a)
2662 #define IDirect3DRMMeshBuilder2_GenerateNormals(p)               (p)->lpVtbl->GenerateNormals(p)
2663 #define IDirect3DRMMeshBuilder2_GetColorSource(p)                (p)->lpVtbl->GetColorSource(p)
2664 #define IDirect3DRMMeshBuilder2_AddMesh(p,a)                     (p)->lpVtbl->AddMesh(p,a)
2665 #define IDirect3DRMMeshBuilder2_AddMeshBuilder(p,a)              (p)->lpVtbl->AddMeshBuilder(p,a)
2666 #define IDirect3DRMMeshBuilder2_AddFrame(p,a)                    (p)->lpVtbl->AddFrame(p,a)
2667 #define IDirect3DRMMeshBuilder2_AddFace(p,a)                     (p)->lpVtbl->AddFace(p,a)
2668 #define IDirect3DRMMeshBuilder2_AddFaces(p,a,b,c,d,e,f)          (p)->lpVtbl->AddFaces(p,a,b,c,d,e,f)
2669 #define IDirect3DRMMeshBuilder2_ReserveSpace(p,a,b,c)            (p)->lpVtbl->ReserveSpace(p,a,b,c)
2670 #define IDirect3DRMMeshBuilder2_SetColorRGB(p,a,b,c)             (p)->lpVtbl->SetColorRGB(p,a,b,c)
2671 #define IDirect3DRMMeshBuilder2_SetColor(p,a)                    (p)->lpVtbl->SetColor(p,a)
2672 #define IDirect3DRMMeshBuilder2_SetTexture(p,a)                  (p)->lpVtbl->SetTexture(p,a)
2673 #define IDirect3DRMMeshBuilder2_SetMateria(p,a)                  (p)->lpVtbl->SetMateria(p,a)
2674 #define IDirect3DRMMeshBuilder2_SetTextureTopology(p,a,b)        (p)->lpVtbl->SetTextureTopology(p,a,b)
2675 #define IDirect3DRMMeshBuilder2_SetQuality(p,a)                  (p)->lpVtbl->SetQuality(p,a)
2676 #define IDirect3DRMMeshBuilder2_SetPerspective(p,a)              (p)->lpVtbl->SetPerspective(p,a)
2677 #define IDirect3DRMMeshBuilder2_SetVertex(p,a,b,c,d)             (p)->lpVtbl->SetVertex(p,a,b,c,d)
2678 #define IDirect3DRMMeshBuilder2_SetNormal(p,a,b,c,d)             (p)->lpVtbl->SetNormal(p,a,b,c,d)
2679 #define IDirect3DRMMeshBuilder2_SetTextureCoordinates(p,a,b,c)   (p)->lpVtbl->SetTextureCoordinates(p,a,b,c)
2680 #define IDirect3DRMMeshBuilder2_SetVertexColor(p,a,b)            (p)->lpVtbl->SetVertexColor(p,a,b)
2681 #define IDirect3DRMMeshBuilder2_SetVertexColorRGB(p,a,b,c,d)     (p)->lpVtbl->SetVertexColorRGB(p,a,b,c,d)
2682 #define IDirect3DRMMeshBuilder2_GetFaces(p,a)                    (p)->lpVtbl->GetFaces(p,a)
2683 #define IDirect3DRMMeshBuilder2_GetVertices(p,a,b,c,d,e,f)       (p)->lpVtbl->GetVertices(p,a,b,c,d,e,f)
2684 #define IDirect3DRMMeshBuilder2_GetTextureCoordinates(p,a,b,c)   (p)->lpVtbl->GetTextureCoordinates(p,a,b,c)
2685 #define IDirect3DRMMeshBuilder2_AddVertex(p,a,b,c)               (p)->lpVtbl->AddVertex(p,a,b,c)
2686 #define IDirect3DRMMeshBuilder2_AddNormal(p,a,b,c)               (p)->lpVtbl->AddNormal(p,a,b,c)
2687 #define IDirect3DRMMeshBuilder2_CreateFace(p,a)                  (p)->lpVtbl->CreateFace(p,a)
2688 #define IDirect3DRMMeshBuilder2_GetQuality(p)                    (p)->lpVtbl->GetQuality(p)
2689 #define IDirect3DRMMeshBuilder2_GetPerspective(p)                (p)->lpVtbl->GetPerspective(p)
2690 #define IDirect3DRMMeshBuilder2_GetFaceCount(p)                  (p)->lpVtbl->GetFaceCount(p)
2691 #define IDirect3DRMMeshBuilder2_GetVertexCount(p)                (p)->lpVtbl->GetVertexCount(p)
2692 #define IDirect3DRMMeshBuilder2_GetVertexColor(p,a)              (p)->lpVtbl->GetVertexColor(p,a)
2693 #define IDirect3DRMMeshBuilder2_CreateMesh(p,a)                  (p)->lpVtbl->CreateMesh(p,a)
2694 /*** IDirect3DRMMeshBuilder2 methods ***/
2695 #define IDirect3DRMMeshBuilder2_GenerateNormals2(p,a,b)          (p)->lpVtbl->GenerateNormals2(p,a,b)
2696 #define IDirect3DRMMeshBuilder2_GetFace(p,a,b)                   (p)->lpVtbl->GetFace(p,a,b)
2697 #else
2698 /*** IUnknown methods ***/
2699 #define IDirect3DRMMeshBuilder2_QueryInterface(p,a,b)            (p)->QueryInterface(a,b)
2700 #define IDirect3DRMMeshBuilder2_AddRef(p)                        (p)->AddRef()
2701 #define IDirect3DRMMeshBuilder2_Release(p)                       (p)->Release()
2702 /*** IDirect3DRMObject methods ***/
2703 #define IDirect3DRMMeshBuilder2_Clone(p,a,b,c)                   (p)->Clone(a,b,c)
2704 #define IDirect3DRMMeshBuilder2_AddDestroyCallback(p,a,b)        (p)->AddDestroyCallback(a,b)
2705 #define IDirect3DRMMeshBuilder2_DeleteDestroyCallback(p,a,b)     (p)->DeleteDestroyCallback(a,b)
2706 #define IDirect3DRMMeshBuilder2_SetAppData(p,a)                  (p)->SetAppData(a)
2707 #define IDirect3DRMMeshBuilder2_GetAppData(p)                    (p)->GetAppData()
2708 #define IDirect3DRMMeshBuilder2_SetName(p,a)                     (p)->SetName(a)
2709 #define IDirect3DRMMeshBuilder2_GetName(p,a,b)                   (p)->GetName(a,b)
2710 #define IDirect3DRMMeshBuilder2_GetClassName(p,a,b)              (p)->GetClassName(a,b)
2711 /*** IDirect3DRMMeshBuilder methods ***/
2712 #define IDirect3DRMMeshBuilder2_Load(p,a,b,c,d,e)                (p)->Load(a,b,c,d,e)
2713 #define IDirect3DRMMeshBuilder2_Save(p,a,b,c)                    (p)->Save(a,b,c)
2714 #define IDirect3DRMMeshBuilder2_Scale(p,a,b,c)                   (p)->Scale(a,b,c)
2715 #define IDirect3DRMMeshBuilder2_Translate(p,a,b,c)               (p)->Translate(a)
2716 #define IDirect3DRMMeshBuilder2_SetColorSource(p,a)              (p)->SetColorSource(a,b,c)
2717 #define IDirect3DRMMeshBuilder2_GetBox(p,a)                      (p)->GetBox(a)
2718 #define IDirect3DRMMeshBuilder2_GenerateNormals(p)               (p)->GenerateNormals()
2719 #define IDirect3DRMMeshBuilder2_GetColorSource(p)                (p)->GetColorSource()
2720 #define IDirect3DRMMeshBuilder2_AddMesh(p,a)                     (p)-->AddMesh(a)
2721 #define IDirect3DRMMeshBuilder2_AddMeshBuilder(p,a)              (p)->AddMeshBuilder(a)
2722 #define IDirect3DRMMeshBuilder2_AddFrame(p,a)                    (p)->AddFrame(a)
2723 #define IDirect3DRMMeshBuilder2_AddFace(p,a)                     (p)->AddFace(a)
2724 #define IDirect3DRMMeshBuilder2_AddFaces(p,a,b,c,d,e,f)          (p)->AddFaces(a,b,c,d,e,f)
2725 #define IDirect3DRMMeshBuilder2_ReserveSpace(p,a,b,c)            (p)->ReserveSpace(a,b,c)
2726 #define IDirect3DRMMeshBuilder2_SetColorRGB(p,a,b,c)             (p)->SetColorRGB(a,b,c)
2727 #define IDirect3DRMMeshBuilder2_SetColor(p,a)                    (p)->SetColor(a)
2728 #define IDirect3DRMMeshBuilder2_SetTexture(p,a)                  (p)->SetTexture(a)
2729 #define IDirect3DRMMeshBuilder2_SetMateria(p,a)                  (p)->SetMateria(a)
2730 #define IDirect3DRMMeshBuilder2_SetTextureTopology(p,a,b)        (p)->SetTextureTopology(a,b)
2731 #define IDirect3DRMMeshBuilder2_SetQuality(p,a)                  (p)->SetQuality(a)
2732 #define IDirect3DRMMeshBuilder2_SetPerspective(p,a)              (p)->SetPerspective(a)
2733 #define IDirect3DRMMeshBuilder2_SetVertex(p,a,b,c,d)             (p)->SetVertex(a,b,c,d)
2734 #define IDirect3DRMMeshBuilder2_SetNormal(p,a,b,c,d)             (p)->SetNormal(a,b,c,d)
2735 #define IDirect3DRMMeshBuilder2_SetTextureCoordinates(p,a,b,c)   (p)->SetTextureCoordinates(a,b,c)
2736 #define IDirect3DRMMeshBuilder2_SetVertexColor(p,a,b)            (p)->SetVertexColor(a,b)
2737 #define IDirect3DRMMeshBuilder2_SetVertexColorRGB(p,a,b,c,d)     (p)->SetVertexColorRGB(a,b,c,d)
2738 #define IDirect3DRMMeshBuilder2_GetFaces(p,a)                    (p)->GetFaces(a)
2739 #define IDirect3DRMMeshBuilder2_GetVertices(p,a,b,c,d,e,f)       (p)->GetVertices(a,b,c,d,e,f)
2740 #define IDirect3DRMMeshBuilder2_GetTextureCoordinates(p,a,b,c)   (p)->GetTextureCoordinates(a,b,c)
2741 #define IDirect3DRMMeshBuilder2_AddVertex(p,a,b,c)               (p)->AddVertex(a,b,c)
2742 #define IDirect3DRMMeshBuilder2_AddNormal(p,a,b,c)               (p)->AddNormal(a,b,c)
2743 #define IDirect3DRMMeshBuilder2_CreateFace(p,a)                  (p)->CreateFace(a)
2744 #define IDirect3DRMMeshBuilder2_GetQuality(p)                    (p)->GetQuality()
2745 #define IDirect3DRMMeshBuilder2_GetPerspective(p)                (p)->GetPerspective()
2746 #define IDirect3DRMMeshBuilder2_GetFaceCount(p)                  (p)->GetFaceCount()
2747 #define IDirect3DRMMeshBuilder2_GetVertexCount(p)                (p)->GetVertexCount()
2748 #define IDirect3DRMMeshBuilder2_GetVertexColor(p,a)              (p)->GetVertexColor(a)
2749 #define IDirect3DRMMeshBuilder2_CreateMesh(p,a)                  (p)->CreateMesh(a)
2750 /*** IDirect3DRMMeshBuilder2 methods ***/
2751 #define IDirect3DRMMeshBuilder2_GenerateNormals2(p,a,b)          (p)->GenerateNormals2(a,b)
2752 #define IDirect3DRMMeshBuilder2_GetFace(p,a,b)                   (p)->GetFace(a,b)
2753 #endif
2754
2755 /*****************************************************************************
2756  * IDirect3DRMMeshBuilder3 interface
2757  */
2758 #define INTERFACE IDirect3DRMMeshBuilder3
2759 DECLARE_INTERFACE_(IDirect3DRMMeshBuilder3,IDirect3DRMVisual)
2760 {
2761     /*** IUnknown methods ***/
2762     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
2763     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
2764     STDMETHOD_(ULONG,Release)(THIS) PURE;
2765     /*** IDirect3DRMObject methods ***/
2766     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
2767     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
2768     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
2769     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
2770     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
2771     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
2772     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
2773     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
2774     /*** IDirect3DRMMeshBuilder3 methods ***/
2775     STDMETHOD(Load)(THIS_ LPVOID filename, LPVOID name, D3DRMLOADOPTIONS loadflags, D3DRMLOADTEXTURE3CALLBACK, LPVOID pArg) PURE;
2776     STDMETHOD(Save)(THIS_ const char *filename, D3DRMXOFFORMAT, D3DRMSAVEOPTIONS save) PURE;
2777     STDMETHOD(Scale)(THIS_ D3DVALUE sx, D3DVALUE sy, D3DVALUE sz) PURE;
2778     STDMETHOD(Translate)(THIS_ D3DVALUE tx, D3DVALUE ty, D3DVALUE tz) PURE;
2779     STDMETHOD(SetColorSource)(THIS_ D3DRMCOLORSOURCE) PURE;
2780     STDMETHOD(GetBox)(THIS_ D3DRMBOX *) PURE;
2781     STDMETHOD(GenerateNormals)(THIS_ D3DVALUE crease, DWORD flags) PURE;
2782     STDMETHOD_(D3DRMCOLORSOURCE, GetColorSource)(THIS) PURE;
2783     STDMETHOD(AddMesh)(THIS_ LPDIRECT3DRMMESH) PURE;
2784     STDMETHOD(AddMeshBuilder)(THIS_ LPDIRECT3DRMMESHBUILDER3) PURE;
2785     STDMETHOD(AddFrame)(THIS_ LPDIRECT3DRMFRAME3) PURE;
2786     STDMETHOD(AddFace)(THIS_ LPDIRECT3DRMFACE2) PURE;
2787     STDMETHOD(AddFaces)(THIS_ DWORD vcount, D3DVECTOR *vertices, DWORD ncount, D3DVECTOR *normals, DWORD *data,
2788         LPDIRECT3DRMFACEARRAY*) PURE;
2789     STDMETHOD(ReserveSpace)(THIS_ DWORD vertex_Count, DWORD normal_count, DWORD face_count) PURE;
2790     STDMETHOD(SetColorRGB)(THIS_ D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE;
2791     STDMETHOD(SetColor)(THIS_ D3DCOLOR) PURE;
2792     STDMETHOD(SetTexture)(THIS_ LPDIRECT3DRMTEXTURE3) PURE;
2793     STDMETHOD(SetMaterial)(THIS_ LPDIRECT3DRMMATERIAL2) PURE;
2794     STDMETHOD(SetTextureTopology)(THIS_ BOOL wrap_u, BOOL wrap_v) PURE;
2795     STDMETHOD(SetQuality)(THIS_ D3DRMRENDERQUALITY) PURE;
2796     STDMETHOD(SetPerspective)(THIS_ BOOL) PURE;
2797     STDMETHOD(SetVertex)(THIS_ DWORD index, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
2798     STDMETHOD(SetNormal)(THIS_ DWORD index, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
2799     STDMETHOD(SetTextureCoordinates)(THIS_ DWORD index, D3DVALUE u, D3DVALUE v) PURE;
2800     STDMETHOD(SetVertexColor)(THIS_ DWORD index, D3DCOLOR) PURE;
2801     STDMETHOD(SetVertexColorRGB)(THIS_ DWORD index, D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE;
2802     STDMETHOD(GetFaces)(THIS_ LPDIRECT3DRMFACEARRAY*) PURE;
2803     STDMETHOD(GetGeometry)(THIS_ DWORD *vcount, D3DVECTOR *vertices, DWORD *ncount, D3DVECTOR *normals,
2804         DWORD *face_data_size, DWORD *face_data) PURE;
2805     STDMETHOD(GetTextureCoordinates)(THIS_ DWORD index, D3DVALUE *u, D3DVALUE *v) PURE;
2806     STDMETHOD_(int, AddVertex)(THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
2807     STDMETHOD_(int, AddNormal)(THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
2808     STDMETHOD(CreateFace)(THIS_ LPDIRECT3DRMFACE2*) PURE;
2809     STDMETHOD_(D3DRMRENDERQUALITY, GetQuality)(THIS) PURE;
2810     STDMETHOD_(BOOL, GetPerspective)(THIS) PURE;
2811     STDMETHOD_(int, GetFaceCount)(THIS) PURE;
2812     STDMETHOD_(int, GetVertexCount)(THIS) PURE;
2813     STDMETHOD_(D3DCOLOR, GetVertexColor)(THIS_ DWORD index) PURE;
2814     STDMETHOD(CreateMesh)(THIS_ LPDIRECT3DRMMESH*) PURE;
2815     STDMETHOD(GetFace)(THIS_ DWORD index, LPDIRECT3DRMFACE2 *) PURE;
2816     STDMETHOD(GetVertex)(THIS_ DWORD index, LPD3DVECTOR pVector) PURE;
2817     STDMETHOD(GetNormal)(THIS_ DWORD index, LPD3DVECTOR pVector) PURE;
2818     STDMETHOD(DeleteVertices)(THIS_ DWORD IndexFirst, DWORD count) PURE;
2819     STDMETHOD(DeleteNormals)(THIS_ DWORD IndexFirst, DWORD count) PURE;
2820     STDMETHOD(DeleteFace)(THIS_ LPDIRECT3DRMFACE2) PURE;
2821     STDMETHOD(Empty)(THIS_ DWORD flags) PURE;
2822     STDMETHOD(Optimize)(THIS_ DWORD flags) PURE;
2823     STDMETHOD(AddFacesIndexed)(THIS_ DWORD flags, DWORD *pvIndices, DWORD *pIndexFirst, DWORD *pCount) PURE;
2824     STDMETHOD(CreateSubMesh)(THIS_ LPUNKNOWN *) PURE;
2825     STDMETHOD(GetParentMesh)(THIS_ DWORD, LPUNKNOWN *) PURE;
2826     STDMETHOD(GetSubMeshes)(THIS_ LPDWORD pCount, LPUNKNOWN *) PURE;
2827     STDMETHOD(DeleteSubMesh)(THIS_ LPUNKNOWN) PURE;
2828     STDMETHOD(Enable)(THIS_ DWORD) PURE;
2829     STDMETHOD(GetEnable)(THIS_ DWORD *) PURE;
2830     STDMETHOD(AddTriangles)(THIS_ DWORD flags, DWORD format, DWORD VertexCount, LPVOID pvData) PURE;
2831     STDMETHOD(SetVertices)(THIS_ DWORD IndexFirst, DWORD count, LPD3DVECTOR) PURE;
2832     STDMETHOD(GetVertices)(THIS_ DWORD IndexFirst, LPDWORD pCount, LPD3DVECTOR) PURE;
2833     STDMETHOD(SetNormals)(THIS_ DWORD IndexFirst, DWORD count, LPD3DVECTOR) PURE;
2834     STDMETHOD(GetNormals)(THIS_ DWORD IndexFirst, LPDWORD pCount, LPD3DVECTOR) PURE;
2835     STDMETHOD_(int, GetNormalCount)(THIS) PURE;
2836 };
2837 #undef INTERFACE
2838
2839 #if !defined(__cplusplus) || defined(CINTERFACE)
2840 /*** IUnknown methods ***/
2841 #define IDirect3DRMMeshBuilder3_QueryInterface(p,a,b)            (p)->lpVtbl->QueryInterface(p,a,b)
2842 #define IDirect3DRMMeshBuilder3_AddRef(p)                        (p)->lpVtbl->AddRef(p)
2843 #define IDirect3DRMMeshBuilder3_Release(p)                       (p)->lpVtbl->Release(p)
2844 /*** IDirect3DRMObject methods ***/
2845 #define IDirect3DRMMeshBuilder3_Clone(p,a,b,c)                   (p)->lpVtbl->Clone(p,a,b,c)
2846 #define IDirect3DRMMeshBuilder3_AddDestroyCallback(p,a,b)        (p)->lpVtbl->AddDestroyCallback(p,a,b)
2847 #define IDirect3DRMMeshBuilder3_DeleteDestroyCallback(p,a,b)     (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
2848 #define IDirect3DRMMeshBuilder3_SetAppData(p,a)                  (p)->lpVtbl->SetAppData(p,a)
2849 #define IDirect3DRMMeshBuilder3_GetAppData(p)                    (p)->lpVtbl->GetAppData(p)
2850 #define IDirect3DRMMeshBuilder3_SetName(p,a)                     (p)->lpVtbl->SetName(p,a)
2851 #define IDirect3DRMMeshBuilder3_GetName(p,a,b)                   (p)->lpVtbl->GetName(p,a,b)
2852 #define IDirect3DRMMeshBuilder3_GetClassName(p,a,b)              (p)->lpVtbl->GetClassName(p,a,b)
2853 /*** IDirect3DRMMeshBuilder3 methods ***/
2854 #define IDirect3DRMMeshBuilder3_Load(p,a,b,c,d,e)                (p)->lpVtbl->Load(p,a,b,c,d,e)
2855 #define IDirect3DRMMeshBuilder3_Save(p,a,b,c)                    (p)->lpVtbl->Save(p,a,b,c)
2856 #define IDirect3DRMMeshBuilder3_Scale(p,a,b,c)                   (p)->lpVtbl->Scale(p,a,b,c)
2857 #define IDirect3DRMMeshBuilder3_Translate(p,a,b,c)               (p)->lpVtbl->Translate(p,a)
2858 #define IDirect3DRMMeshBuilder3_SetColorSource(p,a)              (p)->lpVtbl->SetColorSource(p,a,b,c)
2859 #define IDirect3DRMMeshBuilder3_GetBox(p,a)                      (p)->lpVtbl->GetBox(p,a)
2860 #define IDirect3DRMMeshBuilder3_GenerateNormals(p,a,b)           (p)->lpVtbl->GenerateNormals(p,a,b)
2861 #define IDirect3DRMMeshBuilder3_GetColorSource(p)                (p)->lpVtbl->GetColorSource(p)
2862 #define IDirect3DRMMeshBuilder3_AddMesh(p,a)                     (p)->lpVtbl->AddMesh(p,a)
2863 #define IDirect3DRMMeshBuilder3_AddMeshBuilder(p,a)              (p)->lpVtbl->AddMeshBuilder(p,a)
2864 #define IDirect3DRMMeshBuilder3_AddFrame(p,a)                    (p)->lpVtbl->AddFrame(p,a)
2865 #define IDirect3DRMMeshBuilder3_AddFace(p,a)                     (p)->lpVtbl->AddFace(p,a)
2866 #define IDirect3DRMMeshBuilder3_AddFaces(p,a,b,c,d,e,f)          (p)->lpVtbl->AddFaces(p,a,b,c,d,e,f)
2867 #define IDirect3DRMMeshBuilder3_ReserveSpace(p,a,b,c)            (p)->lpVtbl->ReserveSpace(p,a,b,c)
2868 #define IDirect3DRMMeshBuilder3_SetColorRGB(p,a,b,c)             (p)->lpVtbl->SetColorRGB(p,a,b,c)
2869 #define IDirect3DRMMeshBuilder3_SetColor(p,a)                    (p)->lpVtbl->SetColor(p,a)
2870 #define IDirect3DRMMeshBuilder3_SetTexture(p,a)                  (p)->lpVtbl->SetTexture(p,a)
2871 #define IDirect3DRMMeshBuilder3_SetMateria(p,a)                  (p)->lpVtbl->SetMateria(p,a)
2872 #define IDirect3DRMMeshBuilder3_SetTextureTopology(p,a,b)        (p)->lpVtbl->SetTextureTopology(p,a,b)
2873 #define IDirect3DRMMeshBuilder3_SetQuality(p,a)                  (p)->lpVtbl->SetQuality(p,a)
2874 #define IDirect3DRMMeshBuilder3_SetPerspective(p,a)              (p)->lpVtbl->SetPerspective(p,a)
2875 #define IDirect3DRMMeshBuilder3_SetVertex(p,a,b,c,d)             (p)->lpVtbl->SetVertex(p,a,b,c,d)
2876 #define IDirect3DRMMeshBuilder3_SetNormal(p,a,b,c,d)             (p)->lpVtbl->SetNormal(p,a,b,c,d)
2877 #define IDirect3DRMMeshBuilder3_SetTextureCoordinates(p,a,b,c)   (p)->lpVtbl->SetTextureCoordinates(p,a,b,c)
2878 #define IDirect3DRMMeshBuilder3_SetVertexColor(p,a,b)            (p)->lpVtbl->SetVertexColor(p,a,b)
2879 #define IDirect3DRMMeshBuilder3_SetVertexColorRGB(p,a,b,c,d)     (p)->lpVtbl->SetVertexColorRGB(p,a,b,c,d)
2880 #define IDirect3DRMMeshBuilder3_GetFaces(p,a)                    (p)->lpVtbl->GetFaces(p,a)
2881 #define IDirect3DRMMeshBuilder3_GetGeometry(p,a,b,c,d,e,f)       (p)->lpVtbl->GetGeometry(p,a,b,c,d,e,f)
2882 #define IDirect3DRMMeshBuilder3_GetTextureCoordinates(p,a,b,c)   (p)->lpVtbl->GetTextureCoordinates(p,a,b,c)
2883 #define IDirect3DRMMeshBuilder3_AddVertex(p,a,b,c)               (p)->lpVtbl->AddVertex(p,a,b,c)
2884 #define IDirect3DRMMeshBuilder3_AddNormal(p,a,b,c)               (p)->lpVtbl->AddNormal(p,a,b,c)
2885 #define IDirect3DRMMeshBuilder3_CreateFace(p,a)                  (p)->lpVtbl->CreateFace(p,a)
2886 #define IDirect3DRMMeshBuilder3_GetQuality(p)                    (p)->lpVtbl->GetQuality(p)
2887 #define IDirect3DRMMeshBuilder3_GetPerspective(p)                (p)->lpVtbl->GetPerspective(p)
2888 #define IDirect3DRMMeshBuilder3_GetFaceCount(p)                  (p)->lpVtbl->GetFaceCount(p)
2889 #define IDirect3DRMMeshBuilder3_GetVertexCount(p)                (p)->lpVtbl->GetVertexCount(p)
2890 #define IDirect3DRMMeshBuilder3_GetVertexColor(p,a)              (p)->lpVtbl->GetVertexColor(p,a)
2891 #define IDirect3DRMMeshBuilder3_CreateMesh(p,a)                  (p)->lpVtbl->CreateMesh(p,a)
2892 #define IDirect3DRMMeshBuilder3_GetFace(p,a,b)                   (p)->lpVtbl->GetFace(p,a,b)
2893 #define IDirect3DRMMeshBuilder3_GetVertex(p,a,b)                 (p)->lpVtbl->GetVertex(p,a,b)
2894 #define IDirect3DRMMeshBuilder3_GetNormal(p,a,b)                 (p)->lpVtbl->GetNormal(p,a,b)
2895 #define IDirect3DRMMeshBuilder3_DeleteVertices(p,a,b)            (p)->lpVtbl->DeleteVertices(p,a,b)
2896 #define IDirect3DRMMeshBuilder3_DeleteNormals(p,a,b)             (p)->lpVtbl->DeleteNormals(p,a,b)
2897 #define IDirect3DRMMeshBuilder3_DeleteFace(p,a)                  (p)->lpVtbl->DeleteFace(p,a)
2898 #define IDirect3DRMMeshBuilder3_Empty(p,a)                       (p)->lpVtbl->Empty(p,a)
2899 #define IDirect3DRMMeshBuilder3_Optimize(p,a)                    (p)->lpVtbl->Optimize(p,a)
2900 #define IDirect3DRMMeshBuilder3_AddFacesIndexed(p,a,b,c,d)       (p)->lpVtbl->AddFacesIndexed(p,a,b,c,d)
2901 #define IDirect3DRMMeshBuilder3_CreateSubMesh(p,a)               (p)->lpVtbl->CreateSubMesh(p,a)
2902 #define IDirect3DRMMeshBuilder3_GetParentMesh(p,a,b)             (p)->lpVtbl->GetParentMesh(p,a,b)
2903 #define IDirect3DRMMeshBuilder3_GetSubMeshes(p,a,b)              (p)->lpVtbl->GetSubMeshes(p,a,b)
2904 #define IDirect3DRMMeshBuilder3_DeleteSubMesh(p,a)               (p)->lpVtbl->DeleteSubMesh(p,a)
2905 #define IDirect3DRMMeshBuilder3_Enable(p,a)                      (p)->lpVtbl->Enable(p,a)
2906 #define IDirect3DRMMeshBuilder3_AddTriangles(p,a,b,c,d)          (p)->lpVtbl->AddTriangles(p,a,b,c,d)
2907 #define IDirect3DRMMeshBuilder3_SetVertices(p,a,b,c)             (p)->lpVtbl->SetVertices(p,a,b,c)
2908 #define IDirect3DRMMeshBuilder3_GetVertices(p,a,b,c)             (p)->lpVtbl->GetVertices(p,a,b,c)
2909 #define IDirect3DRMMeshBuilder3_SetNormals(p,a,b,c)              (p)->lpVtbl->SetNormals(p,a,b,c)
2910 #define IDirect3DRMMeshBuilder3_GetNormals(p,a,b,c)              (p)->lpVtbl->GetNormals(p,a,b,c)
2911 #define IDirect3DRMMeshBuilder3_GetNormalCount(p)                (p)->lpVtbl->GetNormalCount(p,a)
2912 #else
2913 /*** IUnknown methods ***/
2914 #define IDirect3DRMMeshBuilder3_QueryInterface(p,a,b)            (p)->QueryInterface(a,b)
2915 #define IDirect3DRMMeshBuilder3_AddRef(p)                        (p)->AddRef()
2916 #define IDirect3DRMMeshBuilder3_Release(p)                       (p)->Release()
2917 /*** IDirect3DRMObject methods ***/
2918 #define IDirect3DRMMeshBuilder3_Clone(p,a,b,c)                   (p)->Clone(a,b,c)
2919 #define IDirect3DRMMeshBuilder3_AddDestroyCallback(p,a,b)        (p)->AddDestroyCallback(a,b)
2920 #define IDirect3DRMMeshBuilder3_DeleteDestroyCallback(p,a,b)     (p)->DeleteDestroyCallback(a,b)
2921 #define IDirect3DRMMeshBuilder3_SetAppData(p,a)                  (p)->SetAppData(a)
2922 #define IDirect3DRMMeshBuilder3_GetAppData(p)                    (p)->GetAppData()
2923 #define IDirect3DRMMeshBuilder3_SetName(p,a)                     (p)->SetName(a)
2924 #define IDirect3DRMMeshBuilder3_GetName(p,a,b)                   (p)->GetName(a,b)
2925 #define IDirect3DRMMeshBuilder3_GetClassName(p,a,b)              (p)->GetClassName(a,b)
2926 /*** IDirect3DRMMeshBuilder3 methods ***/
2927 #define IDirect3DRMMeshBuilder3_Load(p,a,b,c,d,e)                (p)->Load(a,b,c,d,e)
2928 #define IDirect3DRMMeshBuilder3_Save(p,a,b,c)                    (p)->Save(a,b,c)
2929 #define IDirect3DRMMeshBuilder3_Scale(p,a,b,c)                   (p)->Scale(a,b,c)
2930 #define IDirect3DRMMeshBuilder3_Translate(p,a,b,c)               (p)->Translate(a)
2931 #define IDirect3DRMMeshBuilder3_SetColorSource(p,a)              (p)->SetColorSource(a,b,c)
2932 #define IDirect3DRMMeshBuilder3_GetBox(p,a)                      (p)->GetBox(a)
2933 #define IDirect3DRMMeshBuilder3_GenerateNormals(p,a,b)           (p)->GenerateNormals(a,b)
2934 #define IDirect3DRMMeshBuilder3_GetColorSource(p)                (p)->GetColorSource()
2935 #define IDirect3DRMMeshBuilder3_AddMesh(p,a)                     (p)-->AddMesh(a)
2936 #define IDirect3DRMMeshBuilder3_AddMeshBuilder(p,a)              (p)->AddMeshBuilder(a)
2937 #define IDirect3DRMMeshBuilder3_AddFrame(p,a)                    (p)->AddFrame(a)
2938 #define IDirect3DRMMeshBuilder3_AddFace(p,a)                     (p)->AddFace(a)
2939 #define IDirect3DRMMeshBuilder3_AddFaces(p,a,b,c,d,e,f)          (p)->AddFaces(a,b,c,d,e,f)
2940 #define IDirect3DRMMeshBuilder3_ReserveSpace(p,a,b,c)            (p)->ReserveSpace(a,b,c)
2941 #define IDirect3DRMMeshBuilder3_SetColorRGB(p,a,b,c)             (p)->SetColorRGB(a,b,c)
2942 #define IDirect3DRMMeshBuilder3_SetColor(p,a)                    (p)->SetColor(a)
2943 #define IDirect3DRMMeshBuilder3_SetTexture(p,a)                  (p)->SetTexture(a)
2944 #define IDirect3DRMMeshBuilder3_SetMateria(p,a)                  (p)->SetMateria(a)
2945 #define IDirect3DRMMeshBuilder3_SetTextureTopology(p,a,b)        (p)->SetTextureTopology(a,b)
2946 #define IDirect3DRMMeshBuilder3_SetQuality(p,a)                  (p)->SetQuality(a)
2947 #define IDirect3DRMMeshBuilder3_SetPerspective(p,a)              (p)->SetPerspective(a)
2948 #define IDirect3DRMMeshBuilder3_SetVertex(p,a,b,c,d)             (p)->SetVertex(a,b,c,d)
2949 #define IDirect3DRMMeshBuilder3_SetNormal(p,a,b,c,d)             (p)->SetNormal(a,b,c,d)
2950 #define IDirect3DRMMeshBuilder3_SetTextureCoordinates(p,a,b,c)   (p)->SetTextureCoordinates(a,b,c)
2951 #define IDirect3DRMMeshBuilder3_SetVertexColor(p,a,b)            (p)->SetVertexColor(a,b)
2952 #define IDirect3DRMMeshBuilder3_SetVertexColorRGB(p,a,b,c,d)     (p)->SetVertexColorRGB(a,b,c,d)
2953 #define IDirect3DRMMeshBuilder3_GetFaces(p,a)                    (p)->GetFaces(a)
2954 #define IDirect3DRMMeshBuilder3_GetGeometry(p,a,b,c,d,e,f)       (p)->GetGeometry(a,b,c,d,e,f)
2955 #define IDirect3DRMMeshBuilder3_GetTextureCoordinates(p,a,b,c)   (p)->GetTextureCoordinates(a,b,c)
2956 #define IDirect3DRMMeshBuilder3_AddVertex(p,a,b,c)               (p)->AddVertex(a,b,c)
2957 #define IDirect3DRMMeshBuilder3_AddNormal(p,a,b,c)               (p)->AddNormal(a,b,c)
2958 #define IDirect3DRMMeshBuilder3_CreateFace(p,a)                  (p)->CreateFace(a)
2959 #define IDirect3DRMMeshBuilder3_GetQuality(p)                    (p)->GetQuality()
2960 #define IDirect3DRMMeshBuilder3_GetPerspective(p)                (p)->GetPerspective()
2961 #define IDirect3DRMMeshBuilder3_GetFaceCount(p)                  (p)->GetFaceCount()
2962 #define IDirect3DRMMeshBuilder3_GetVertexCount(p)                (p)->GetVertexCount()
2963 #define IDirect3DRMMeshBuilder3_GetVertexColor(p,a)              (p)->GetVertexColor(a)
2964 #define IDirect3DRMMeshBuilder3_CreateMesh(p,a)                  (p)->CreateMesh(a)
2965 #define IDirect3DRMMeshBuilder3_GetFace(p,a,b)                   (p)->GetFace(p,a,b)
2966 #define IDirect3DRMMeshBuilder3_GetVertex(p,a,b)                 (p)->GetVertex(p,a,b)
2967 #define IDirect3DRMMeshBuilder3_GetNormal(p,a,b)                 (p)->GetNormal(p,a,b)
2968 #define IDirect3DRMMeshBuilder3_DeleteVertices(p,a,b)            (p)->DeleteVertices(p,a,b)
2969 #define IDirect3DRMMeshBuilder3_DeleteNormals(p,a,b)             (p)->DeleteNormals(p,a,b)
2970 #define IDirect3DRMMeshBuilder3_DeleteFace(p,a)                  (p)->DeleteFace(p,a)
2971 #define IDirect3DRMMeshBuilder3_Empty(p,a)                       (p)->Empty(p,a)
2972 #define IDirect3DRMMeshBuilder3_Optimize(p,a)                    (p)->Optimize(p,a)
2973 #define IDirect3DRMMeshBuilder3_AddFacesIndexed(p,a,b,c,d)       (p)->AddFacesIndexed(p,a,b,c,d)
2974 #define IDirect3DRMMeshBuilder3_CreateSubMesh(p,a)               (p)->CreateSubMesh(p,a)
2975 #define IDirect3DRMMeshBuilder3_GetParentMesh(p,a,b)             (p)->GetParentMesh(p,a,b)
2976 #define IDirect3DRMMeshBuilder3_GetSubMeshes(p,a,b)              (p)->GetSubMeshes(p,a,b)
2977 #define IDirect3DRMMeshBuilder3_DeleteSubMesh(p,a)               (p)->DeleteSubMesh(p,a)
2978 #define IDirect3DRMMeshBuilder3_Enable(p,a)                      (p)->Enable(p,a)
2979 #define IDirect3DRMMeshBuilder3_AddTriangles(p,a,b,c,d)          (p)->AddTriangles(p,a,b,c,d)
2980 #define IDirect3DRMMeshBuilder3_SetVertices(p,a,b,c)             (p)->SetVertices(p,a,b,c)
2981 #define IDirect3DRMMeshBuilder3_GetVertices(p,a,b,c)             (p)->GetVertices(p,a,b,c)
2982 #define IDirect3DRMMeshBuilder3_SetNormals(p,a,b,c)              (p)->SetNormals(p,a,b,c)
2983 #define IDirect3DRMMeshBuilder3_GetNormals(p,a,b,c)              (p)->GetNormals(p,a,b,c)
2984 #define IDirect3DRMMeshBuilder3_GetNormalCount(p)                (p)->GetNormalCount(p,a)
2985 #endif
2986
2987 #ifdef __cplusplus
2988 };
2989 #endif
2990
2991 #endif /* __D3DRMOBJ_H__ */