wined3d: Rename the IWineD3DSurfaceImpl "Flags" field to "flags".
[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_IDirect3DRMObject2,         0x4516ec7c, 0x8f20, 0x11d0, 0x9b, 0x6d, 0x00, 0x00, 0xc0, 0x78, 0x1b, 0xc3);
38 DEFINE_GUID(IID_IDirect3DRMDevice,          0xe9e19280, 0x6e05, 0x11cf, 0xac, 0x4a, 0x00, 0x00, 0xc0, 0x38, 0x25, 0xa1);
39 DEFINE_GUID(IID_IDirect3DRMDevice2,         0x4516ec78, 0x8f20, 0x11d0, 0x9b, 0x6d, 0x00, 0x00, 0xc0, 0x78, 0x1b, 0xc3);
40 DEFINE_GUID(IID_IDirect3DRMDevice3,         0x549f498b, 0xbfeb, 0x11d1, 0x8e, 0xd8, 0x00, 0xa0, 0xc9, 0x67, 0xa4, 0x82);
41 DEFINE_GUID(IID_IDirect3DRMViewport,        0xeb16cb02, 0xd271, 0x11ce, 0xac, 0x48, 0x00, 0x00, 0xc0, 0x38, 0x25, 0xa1);
42 DEFINE_GUID(IID_IDirect3DRMViewport2,       0x4a1b1be6, 0xbfed, 0x11d1, 0x8e, 0xd8, 0x00, 0xa0, 0xc9, 0x67, 0xa4, 0x82);
43 DEFINE_GUID(IID_IDirect3DRMFrame,           0xeb16cb03, 0xd271, 0x11ce, 0xac, 0x48, 0x00, 0x00, 0xc0, 0x38, 0x25, 0xa1);
44 DEFINE_GUID(IID_IDirect3DRMFrame2,          0xc3dfbd60, 0x3988, 0x11d0, 0x9e, 0xc2, 0x00, 0x00, 0xc0, 0x29, 0x1a, 0xc3);
45 DEFINE_GUID(IID_IDirect3DRMFrame3,          0xff6b7f70, 0xa40e, 0x11d1, 0x91, 0xf9, 0x00, 0x00, 0xf8, 0x75, 0x8e, 0x66);
46 DEFINE_GUID(IID_IDirect3DRMVisual,          0xeb16cb04, 0xd271, 0x11ce, 0xac, 0x48, 0x00, 0x00, 0xc0, 0x38, 0x25, 0xa1);
47 DEFINE_GUID(IID_IDirect3DRMMesh,            0xa3a80d01, 0x6e12, 0x11cf, 0xac, 0x4a, 0x00, 0x00, 0xc0, 0x38, 0x25, 0xa1);
48 DEFINE_GUID(IID_IDirect3DRMMeshBuilder,     0xa3a80d02, 0x6e12, 0x11cf, 0xac, 0x4a, 0x00, 0x00, 0xc0, 0x38, 0x25, 0xa1);
49 DEFINE_GUID(IID_IDirect3DRMMeshBuilder2,    0x4516ec77, 0x8f20, 0x11d0, 0x9b, 0x6d, 0x00, 0x00, 0xc0, 0x78, 0x1b, 0xc3);
50 DEFINE_GUID(IID_IDirect3DRMMeshBuilder3,    0x4516ec82, 0x8f20, 0x11d0, 0x9b, 0x6d, 0x00, 0x00, 0xc0, 0x78, 0x1b, 0xc3);
51 DEFINE_GUID(IID_IDirect3DRMFace,            0xeb16cb07, 0xd271, 0x11ce, 0xac, 0x48, 0x00, 0x00, 0xc0, 0x38, 0x25, 0xa1);
52 DEFINE_GUID(IID_IDirect3DRMFace2,           0x4516ec81, 0x8f20, 0x11d0, 0x9b, 0x6d, 0x00, 0x00, 0xc0, 0x78, 0x1b, 0xc3);
53 DEFINE_GUID(IID_IDirect3DRMLight,           0xeb16cb08, 0xd271, 0x11ce, 0xac, 0x48, 0x00, 0x00, 0xc0, 0x38, 0x25, 0xa1);
54 DEFINE_GUID(IID_IDirect3DRMTexture,         0xeb16cb09, 0xd271, 0x11ce, 0xac, 0x48, 0x00, 0x00, 0xc0, 0x38, 0x25, 0xa1);
55 DEFINE_GUID(IID_IDirect3DRMTexture2,        0x120f30c0, 0x1629, 0x11d0, 0x94, 0x1c, 0x00, 0x80, 0xc8, 0x0c, 0xfa, 0x7b);
56 DEFINE_GUID(IID_IDirect3DRMTexture3,        0xff6b7f73, 0xa40e, 0x11d1, 0x91, 0xf9, 0x00, 0x00, 0xf8, 0x75, 0x8e, 0x66);
57 DEFINE_GUID(IID_IDirect3DRMWrap,            0xeb16cb0a, 0xd271, 0x11ce, 0xac, 0x48, 0x00, 0x00, 0xc0, 0x38, 0x25, 0xa1);
58 DEFINE_GUID(IID_IDirect3DRMMaterial,        0xeb16cb0b, 0xd271, 0x11ce, 0xac, 0x48, 0x00, 0x00, 0xc0, 0x38, 0x25, 0xa1);
59 DEFINE_GUID(IID_IDirect3DRMMaterial2,       0xff6b7f75, 0xa40e, 0x11d1, 0x91, 0xf9, 0x00, 0x00, 0xf8, 0x75, 0x8e, 0x66);
60 DEFINE_GUID(IID_IDirect3DRMAnimation,       0xeb16cb0d, 0xd271, 0x11ce, 0xac, 0x48, 0x00, 0x00, 0xc0, 0x38, 0x25, 0xa1);
61 DEFINE_GUID(IID_IDirect3DRMAnimation2,      0xff6b7f77, 0xa40e, 0x11d1, 0x91, 0xf9, 0x00, 0x00, 0xf8, 0x75, 0x8e, 0x66);
62 DEFINE_GUID(IID_IDirect3DRMAnimationSet,    0xeb16cb0e, 0xd271, 0x11ce, 0xac, 0x48, 0x00, 0x00, 0xc0, 0x38, 0x25, 0xa1);
63 DEFINE_GUID(IID_IDirect3DRMAnimationSet2,   0xff6b7f79, 0xa40e, 0x11d1, 0x91, 0xf9, 0x00, 0x00, 0xf8, 0x75, 0x8e, 0x66);
64 DEFINE_GUID(IID_IDirect3DRMObjectArray,     0x242f6bc2, 0x3849, 0x11d0, 0x9b, 0x6d, 0x00, 0x00, 0xc0, 0x78, 0x1b, 0xc3);
65 DEFINE_GUID(IID_IDirect3DRMDeviceArray,     0xeb16cb10, 0xd271, 0x11ce, 0xac, 0x48, 0x00, 0x00, 0xc0, 0x38, 0x25, 0xa1);
66 DEFINE_GUID(IID_IDirect3DRMViewportArray,   0xeb16cb11, 0xd271, 0x11ce, 0xac, 0x48, 0x00, 0x00, 0xc0, 0x38, 0x25, 0xa1);
67 DEFINE_GUID(IID_IDirect3DRMFrameArray,      0xeb16cb12, 0xd271, 0x11ce, 0xac, 0x48, 0x00, 0x00, 0xc0, 0x38, 0x25, 0xa1);
68 DEFINE_GUID(IID_IDirect3DRMVisualArray,     0xeb16cb13, 0xd271, 0x11ce, 0xac, 0x48, 0x00, 0x00, 0xc0, 0x38, 0x25, 0xa1);
69 DEFINE_GUID(IID_IDirect3DRMLightArray,      0xeb16cb14, 0xd271, 0x11ce, 0xac, 0x48, 0x00, 0x00, 0xc0, 0x38, 0x25, 0xa1);
70 DEFINE_GUID(IID_IDirect3DRMPickedArray,     0xeb16cb16, 0xd271, 0x11ce, 0xac, 0x48, 0x00, 0x00, 0xc0, 0x38, 0x25, 0xa1);
71 DEFINE_GUID(IID_IDirect3DRMFaceArray,       0xeb16cb17, 0xd271, 0x11ce, 0xac, 0x48, 0x00, 0x00, 0xc0, 0x38, 0x25, 0xa1);
72 DEFINE_GUID(IID_IDirect3DRMAnimationArray,  0xd5f1cae0, 0x4bd7, 0x11d1, 0xb9, 0x74, 0x00, 0x60, 0x08, 0x3e, 0x45, 0xf3);
73 DEFINE_GUID(IID_IDirect3DRMUserVisual,      0x59163de0, 0x6d43, 0x11cf, 0xac, 0x4a, 0x00, 0x00, 0xc0, 0x38, 0x25, 0xa1);
74 DEFINE_GUID(IID_IDirect3DRMShadow,          0xaf359780, 0x6ba3, 0x11cf, 0xac, 0x4a, 0x00, 0x00, 0xc0, 0x38, 0x25, 0xa1);
75 DEFINE_GUID(IID_IDirect3DRMShadow2,         0x86b44e25, 0x9c82, 0x11d1, 0xbb, 0x0b, 0x00, 0xa0, 0xc9, 0x81, 0xa0, 0xa6);
76 DEFINE_GUID(IID_IDirect3DRMInterpolator,    0x242f6bc1, 0x3849, 0x11d0, 0x9b, 0x6d, 0x00, 0x00, 0xc0, 0x78, 0x1b, 0xc3);
77 DEFINE_GUID(IID_IDirect3DRMProgressiveMesh, 0x4516ec79, 0x8f20, 0x11d0, 0x9b, 0x6d, 0x00, 0x00, 0xc0, 0x78, 0x1b, 0xc3);
78 DEFINE_GUID(IID_IDirect3DRMPicked2Array,    0x4516ec7b, 0x8f20, 0x11d0, 0x9b, 0x6d, 0x00, 0x00, 0xc0, 0x78, 0x1b, 0xc3);
79 DEFINE_GUID(IID_IDirect3DRMClippedVisual,   0x5434e733, 0x6d66, 0x11d1, 0xbb, 0x0b, 0x00, 0x00, 0xf8, 0x75, 0x86, 0x5a);
80
81 typedef struct IDirect3DRMObject          *LPDIRECT3DRMOBJECT, **LPLPDIRECT3DRMOBJECT;
82 typedef struct IDirect3DRMObject2         *LPDIRECT3DRMOBJECT2, **LPLPDIRECT3DRMOBJECT2;
83 typedef struct IDirect3DRMDevice          *LPDIRECT3DRMDEVICE, **LPLPDIRECT3DRMDEVICE;
84 typedef struct IDirect3DRMDevice2         *LPDIRECT3DRMDEVICE2, **LPLPDIRECT3DRMDEVICE2;
85 typedef struct IDirect3DRMDevice3         *LPDIRECT3DRMDEVICE3, **LPLPDIRECT3DRMDEVICE3;
86 typedef struct IDirect3DRMViewport        *LPDIRECT3DRMVIEWPORT, **LPLPDIRECT3DRMVIEWPORT;
87 typedef struct IDirect3DRMViewport2       *LPDIRECT3DRMVIEWPORT2, **LPLPDIRECT3DRMVIEWPORT2;
88 typedef struct IDirect3DRMFrame           *LPDIRECT3DRMFRAME, **LPLPDIRECT3DRMFRAME;
89 typedef struct IDirect3DRMFrame2          *LPDIRECT3DRMFRAME2, **LPLPDIRECT3DRMFRAME2;
90 typedef struct IDirect3DRMFrame3          *LPDIRECT3DRMFRAME3, **LPLPDIRECT3DRMFRAME3;
91 typedef struct IDirect3DRMVisual          *LPDIRECT3DRMVISUAL, **LPLPDIRECT3DRMVISUAL;
92 typedef struct IDirect3DRMMesh            *LPDIRECT3DRMMESH, **LPLPDIRECT3DRMMESH;
93 typedef struct IDirect3DRMMeshBuilder     *LPDIRECT3DRMMESHBUILDER, **LPLPDIRECT3DRMMESHBUILDER;
94 typedef struct IDirect3DRMMeshBuilder2    *LPDIRECT3DRMMESHBUILDER2, **LPLPDIRECT3DRMMESHBUILDER2;
95 typedef struct IDirect3DRMMeshBuilder3    *LPDIRECT3DRMMESHBUILDER3, **LPLPDIRECT3DRMMESHBUILDER3;
96 typedef struct IDirect3DRMFace            *LPDIRECT3DRMFACE, **LPLPDIRECT3DRMFACE;
97 typedef struct IDirect3DRMFace2           *LPDIRECT3DRMFACE2, **LPLPDIRECT3DRMFACE2;
98 typedef struct IDirect3DRMLight           *LPDIRECT3DRMLIGHT, **LPLPDIRECT3DRMLIGHT;
99 typedef struct IDirect3DRMTexture         *LPDIRECT3DRMTEXTURE, **LPLPDIRECT3DRMTEXTURE;
100 typedef struct IDirect3DRMTexture2        *LPDIRECT3DRMTEXTURE2, **LPLPDIRECT3DRMTEXTURE2;
101 typedef struct IDirect3DRMTexture3        *LPDIRECT3DRMTEXTURE3, **LPLPDIRECT3DRMTEXTURE3;
102 typedef struct IDirect3DRMWrap            *LPDIRECT3DRMWRAP, **LPLPDIRECT3DRMWRAP;
103 typedef struct IDirect3DRMMaterial        *LPDIRECT3DRMMATERIAL, **LPLPDIRECT3DRMMATERIAL;
104 typedef struct IDirect3DRMMaterial2       *LPDIRECT3DRMMATERIAL2, **LPLPDIRECT3DRMMATERIAL2;
105 typedef struct IDirect3DRMAnimation       *LPDIRECT3DRMANIMATION, **LPLPDIRECT3DRMANIMATION;
106 typedef struct IDirect3DRMAnimation2      *LPDIRECT3DRMANIMATION2, **LPLPDIRECT3DRMANIMATION2;
107 typedef struct IDirect3DRMAnimationSet    *LPDIRECT3DRMANIMATIONSET, **LPLPDIRECT3DRMANIMATIONSET;
108 typedef struct IDirect3DRMAnimationSet2   *LPDIRECT3DRMANIMATIONSET2, **LPLPDIRECT3DRMANIMATIONSET2;
109 typedef struct IDirect3DRMUserVisual      *LPDIRECT3DRMUSERVISUAL, **LPLPDIRECT3DRMUSERVISUAL;
110 typedef struct IDirect3DRMShadow          *LPDIRECT3DRMSHADOW, **LPLPDIRECT3DRMSHADOW;
111 typedef struct IDirect3DRMShadow2         *LPDIRECT3DRMSHADOW2, **LPLPDIRECT3DRMSHADOW2;
112 typedef struct IDirect3DRMArray           *LPDIRECT3DRMARRAY, **LPLPDIRECT3DRMARRAY;
113 typedef struct IDirect3DRMObjectArray     *LPDIRECT3DRMOBJECTARRAY, **LPLPDIRECT3DRMOBJECTARRAY;
114 typedef struct IDirect3DRMDeviceArray     *LPDIRECT3DRMDEVICEARRAY, **LPLPDIRECT3DRMDEVICEARRAY;
115 typedef struct IDirect3DRMFaceArray       *LPDIRECT3DRMFACEARRAY, **LPLPDIRECT3DRMFACEARRAY;
116 typedef struct IDirect3DRMViewportArray   *LPDIRECT3DRMVIEWPORTARRAY, **LPLPDIRECT3DRMVIEWPORTARRAY;
117 typedef struct IDirect3DRMFrameArray      *LPDIRECT3DRMFRAMEARRAY, **LPLPDIRECT3DRMFRAMEARRAY;
118 typedef struct IDirect3DRMAnimationArray  *LPDIRECT3DRMANIMATIONARRAY, **LPLPDIRECT3DRMANIMATIONARRAY;
119 typedef struct IDirect3DRMVisualArray     *LPDIRECT3DRMVISUALARRAY, **LPLPDIRECT3DRMVISUALARRAY;
120 typedef struct IDirect3DRMPickedArray     *LPDIRECT3DRMPICKEDARRAY, **LPLPDIRECT3DRMPICKEDARRAY;
121 typedef struct IDirect3DRMPicked2Array    *LPDIRECT3DRMPICKED2ARRAY, **LPLPDIRECT3DRMPICKED2ARRAY;
122 typedef struct IDirect3DRMLightArray      *LPDIRECT3DRMLIGHTARRAY, **LPLPDIRECT3DRMLIGHTARRAY;
123 typedef struct IDirect3DRMProgressiveMesh *LPDIRECT3DRMPROGRESSIVEMESH, **LPLPDIRECT3DRMPROGRESSIVEMESH;
124 typedef struct IDirect3DRMClippedVisual   *LPDIRECT3DRMCLIPPEDVISUAL, **LPLPDIRECT3DRMCLIPPEDVISUAL;
125
126 /* ********************************************************************
127    Types and structures
128    ******************************************************************** */
129
130 typedef void (__cdecl *D3DRMOBJECTCALLBACK)(LPDIRECT3DRMOBJECT obj, LPVOID arg);
131 typedef void (__cdecl *D3DRMFRAMEMOVECALLBACK)(LPDIRECT3DRMFRAME obj, LPVOID arg, D3DVALUE delta);
132 typedef void (__cdecl *D3DRMFRAME3MOVECALLBACK)(LPDIRECT3DRMFRAME3 obj, LPVOID arg, D3DVALUE delta);
133 typedef void (__cdecl *D3DRMUPDATECALLBACK)(LPDIRECT3DRMDEVICE obj, LPVOID arg, int, LPD3DRECT);
134 typedef void (__cdecl *D3DRMDEVICE3UPDATECALLBACK)(LPDIRECT3DRMDEVICE3 obj, LPVOID arg, int, LPD3DRECT);
135 typedef int (__cdecl *D3DRMUSERVISUALCALLBACK)(LPDIRECT3DRMUSERVISUAL obj, LPVOID arg,
136     D3DRMUSERVISUALREASON reason, LPDIRECT3DRMDEVICE dev, LPDIRECT3DRMVIEWPORT view);
137 typedef HRESULT (__cdecl *D3DRMLOADTEXTURECALLBACK)(char *tex_name, void *arg, LPDIRECT3DRMTEXTURE *);
138 typedef HRESULT (__cdecl *D3DRMLOADTEXTURE3CALLBACK)(char *tex_name, void *arg, LPDIRECT3DRMTEXTURE3 *);
139 typedef void (__cdecl *D3DRMLOADCALLBACK)(LPDIRECT3DRMOBJECT object, REFIID objectguid, LPVOID arg);
140 typedef HRESULT (__cdecl *D3DRMDOWNSAMPLECALLBACK)(LPDIRECT3DRMTEXTURE3 lpDirect3DRMTexture, LPVOID pArg,
141     LPDIRECTDRAWSURFACE pDDSSrc, LPDIRECTDRAWSURFACE pDDSDst);
142 typedef HRESULT (__cdecl *D3DRMVALIDATIONCALLBACK)(LPDIRECT3DRMTEXTURE3 lpDirect3DRMTexture, LPVOID pArg,
143     DWORD dwFlags, DWORD dwcRects, LPRECT pRects);
144
145 typedef struct _D3DRMPICKDESC
146 {
147     ULONG     ulFaceIdx;
148     LONG      lGroupIdx;
149     D3DVECTOR vPosition;
150 } D3DRMPICKDESC, *LPD3DRMPICKDESC;
151
152 typedef struct _D3DRMPICKDESC2
153 {
154     ULONG     ulFaceIdx;
155     LONG      lGroupIdx;
156     D3DVECTOR vPosition;
157     D3DVALUE  tu;
158     D3DVALUE  tv;
159     D3DVECTOR dvNormal;
160     D3DCOLOR  dcColor;
161 } D3DRMPICKDESC2, *LPD3DRMPICKDESC2;
162
163 /*****************************************************************************
164  * IDirect3DRMObject interface
165  */
166 #ifdef WINE_NO_UNICODE_MACROS
167 #undef GetClassName
168 #endif
169 #define INTERFACE IDirect3DRMObject
170 DECLARE_INTERFACE_(IDirect3DRMObject,IUnknown)
171 {
172     /*** IUnknown methods ***/
173     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
174     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
175     STDMETHOD_(ULONG,Release)(THIS) PURE;
176     /*** IDirect3DRMObject methods ***/
177     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
178     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
179     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
180     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
181     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
182     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
183     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
184     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
185 };
186 #undef INTERFACE
187
188 #if !defined(__cplusplus) || defined(CINTERFACE)
189 /*** IUnknown methods ***/
190 #define IDirect3DRMObject_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
191 #define IDirect3DRMObject_AddRef(p)                    (p)->lpVtbl->AddRef(p)
192 #define IDirect3DRMObject_Release(p)                   (p)->lpVtbl->Release(p)
193 /*** IDirect3DRMObject methods ***/
194 #define IDirect3DRMObject_Clone(p,a,b,c)               (p)->lpVtbl->Clone(p,a,b,c)
195 #define IDirect3DRMObject_AddDestroyCallback(p,a,b)    (p)->lpVtbl->AddDestroyCallback(p,a,b)
196 #define IDirect3DRMObject_DeleteDestroyCallback(p,a,b) (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
197 #define IDirect3DRMObject_SetAppData(p,a)              (p)->lpVtbl->SetAppData(p,a)
198 #define IDirect3DRMObject_GetAppData(p)                (p)->lpVtbl->GetAppData(p)
199 #define IDirect3DRMObject_SetName(p,a)                 (p)->lpVtbl->SetName(p,a)
200 #define IDirect3DRMObject_GetName(p,a,b)               (p)->lpVtbl->GetName(p,a,b)
201 #define IDirect3DRMObject_GetClassName(p,a,b)          (p)->lpVtbl->GetClassName(p,a,b)
202 #else
203 /*** IUnknown methods ***/
204 #define IDirect3DRMObject_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
205 #define IDirect3DRMObject_AddRef(p)                    (p)->AddRef()
206 #define IDirect3DRMObject_Release(p)                   (p)->Release()
207 /*** IDirect3DRMObject methods ***/
208 #define IDirect3DRMObject_Clone(p,a,b,c)               (p)->Clone(a,b,c)
209 #define IDirect3DRMObject_AddDestroyCallback(p,a,b)    (p)->AddDestroyCallback(a,b)
210 #define IDirect3DRMObject_DeleteDestroyCallback(p,a,b) (p)->DeleteDestroyCallback(a,b)
211 #define IDirect3DRMObject_SetAppData(p,a)              (p)->SetAppData(a)
212 #define IDirect3DRMObject_GetAppData(p)                (p)->GetAppData()
213 #define IDirect3DRMObject_SetName(p,a)                 (p)->SetName(a)
214 #define IDirect3DRMObject_GetName(p,a,b)               (p)->GetName(a,b)
215 #define IDirect3DRMObject_GetClassName(p,a,b)          (p)->GetClassName(a,b)
216 #endif
217
218 /*****************************************************************************
219  * IDirect3DRMObject2 interface
220  */
221 #ifdef WINE_NO_UNICODE_MACROS
222 #undef GetClassName
223 #endif
224 #define INTERFACE IDirect3DRMObject2
225 DECLARE_INTERFACE_(IDirect3DRMObject2,IUnknown)
226 {
227     /*** IUnknown methods ***/
228     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
229     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
230     STDMETHOD_(ULONG,Release)(THIS) PURE;
231     /*** IDirect3DRMObject2 methods ***/
232     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK pFunc, LPVOID pArg) PURE;
233     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
234     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK pFunc, LPVOID pArg) PURE;
235     STDMETHOD(GetClientData)(THIS_ DWORD id, LPVOID* ppData) PURE;
236     STDMETHOD(GetDirect3DRM)(THIS_ LPDIRECT3DRM* ppDirect3DRM) PURE;
237     STDMETHOD(GetName)(THIS_ LPDWORD pSize, LPSTR pName) PURE;
238     STDMETHOD(SetClientData)(THIS_ DWORD id, LPVOID pData, DWORD flags) PURE;
239     STDMETHOD(SetName)(THIS_ LPCSTR pName) PURE;
240     STDMETHOD(GetAge)(THIS_ DWORD flags, LPDWORD pAge) PURE;
241 };
242 #undef INTERFACE
243
244 #if !defined(__cplusplus) || defined(CINTERFACE)
245 /*** IUnknown methods ***/
246 #define IDirect3DRMObject2_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
247 #define IDirect3DRMObject2_AddRef(p)                    (p)->lpVtbl->AddRef(p)
248 #define IDirect3DRMObject2_Release(p)                   (p)->lpVtbl->Release(p)
249 /*** IDirect3DRMObject2 methods ***/
250 #define IDirect3DRMObject2_AddDestroyCallback(p,a,b)    (p)->lpVtbl->AddDestroyCallback(p,a,b)
251 #define IDirect3DRMObject2_Clone(p,a,b,c)               (p)->lpVtbl->Clone(p,a,b,c)
252 #define IDirect3DRMObject2_DeleteDestroyCallback(p,a,b) (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
253 #define IDirect3DRMObject2_GetClientData(p,a,b)         (p)->lpVtbl->SetClientData(p,a,b)
254 #define IDirect3DRMObject2_GetDirect3DRM(p,a)           (p)->lpVtbl->GetDirect3DRM(p,a)
255 #define IDirect3DRMObject2_GetName(p,a,b)               (p)->lpVtbl->GetName(p,a,b)
256 #define IDirect3DRMObject2_SetClientData(p,a,b,c)       (p)->lpVtbl->SetClientData(p,a,b,c)
257 #define IDirect3DRMObject2_SetName(p,a)                 (p)->lpVtbl->SetName(p,a)
258 #define IDirect3DRMObject2_GetAge(p,a,b)                (p)->lpVtbl->GetAge(p,a,b)
259 #else
260 /*** IUnknown methods ***/
261 #define IDirect3DRMObject2_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
262 #define IDirect3DRMObject2_AddRef(p)                    (p)->AddRef()
263 #define IDirect3DRMObject2_Release(p)                   (p)->Release()
264 /*** IDirect3DRMObject2 methods ***/
265 #define IDirect3DRMObject2_AddDestroyCallback(p,a,b)    (p)->AddDestroyCallback(a,b)
266 #define IDirect3DRMObject2_Clone(p,a,b,c)               (p)->Clone(a,b,c)
267 #define IDirect3DRMObject2_DeleteDestroyCallback(p,a,b) (p)->DeleteDestroyCallback(a,b)
268 #define IDirect3DRMObject2_GetClientData(p,a,b)         (p)->SetClientData(a,b)
269 #define IDirect3DRMObject2_GetDirect3DRM(p,a)           (p)->GetDirect3DRM(a)
270 #define IDirect3DRMObject2_GetName(p,a,b)               (p)->GetName(a,b)
271 #define IDirect3DRMObject2_SetClientData(p,a,b,c)       (p)->SetClientData(a,b,c)
272 #define IDirect3DRMObject2_SetName(p,a)                 (p)->SetName(a)
273 #define IDirect3DRMObject2_GetAge(p,a,b)                (p)->GetAge(a,b)
274 #endif
275
276 /*****************************************************************************
277  * IDirect3DRMVisual interface
278  */
279 #define INTERFACE IDirect3DRMVisual
280 DECLARE_INTERFACE_(IDirect3DRMVisual,IDirect3DRMObject)
281 {
282     /*** IUnknown methods ***/
283     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
284     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
285     STDMETHOD_(ULONG,Release)(THIS) PURE;
286     /*** IDirect3DRMObject methods ***/
287     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
288     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
289     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
290     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
291     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
292     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
293     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
294     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
295 };
296 #undef INTERFACE
297
298 #if !defined(__cplusplus) || defined(CINTERFACE)
299 /*** IUnknown methods ***/
300 #define IDirect3DRMVisual_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
301 #define IDirect3DRMVisual_AddRef(p)                    (p)->lpVtbl->AddRef(p)
302 #define IDirect3DRMVisual_Release(p)                   (p)->lpVtbl->Release(p)
303 /*** IDirect3DRMObject methods ***/
304 #define IDirect3DRMVisual_Clone(p,a,b,c)               (p)->lpVtbl->Clone(p,a,b,c)
305 #define IDirect3DRMVisual_AddDestroyCallback(p,a,b)    (p)->lpVtbl->AddDestroyCallback(p,a,b)
306 #define IDirect3DRMVisual_DeleteDestroyCallback(p,a,b) (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
307 #define IDirect3DRMVisual_SetAppData(p,a)              (p)->lpVtbl->SetAppData(p,a)
308 #define IDirect3DRMVisual_GetAppData(p)                (p)->lpVtbl->GetAppData(p)
309 #define IDirect3DRMVisual_SetName(p,a)                 (p)->lpVtbl->SetName(p,a)
310 #define IDirect3DRMVisual_GetName(p,a,b)               (p)->lpVtbl->GetName(p,a,b)
311 #define IDirect3DRMVisual_GetClassName(p,a,b)          (p)->lpVtbl->GetClassName(p,a,b)
312 #else
313 /*** IUnknown methods ***/
314 #define IDirect3DRMVisual_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
315 #define IDirect3DRMVisual_AddRef(p)                    (p)->AddRef()
316 #define IDirect3DRMVisual_Release(p)                   (p)->Release()
317 /*** IDirect3DRMObject methods ***/
318 #define IDirect3DRMVisual_Clone(p,a,b,c)               (p)->Clone(a,b,c)
319 #define IDirect3DRMVisual_AddDestroyCallback(p,a,b)    (p)->AddDestroyCallback(a,b)
320 #define IDirect3DRMVisual_DeleteDestroyCallback(p,a,b) (p)->DeleteDestroyCallback(a,b)
321 #define IDirect3DRMVisual_SetAppData(p,a)              (p)->SetAppData(a)
322 #define IDirect3DRMVisual_GetAppData(p)                (p)->GetAppData()
323 #define IDirect3DRMVisual_SetName(p,a)                 (p)->SetName(a)
324 #define IDirect3DRMVisual_GetName(p,a,b)               (p)->GetName(a,b)
325 #define IDirect3DRMVisual_GetClassName(p,a,b)          (p)->GetClassName(a,b)
326 #endif
327
328 /*****************************************************************************
329  * IDirect3DRMDevice interface
330  */
331 #ifdef WINE_NO_UNICODE_MACROS
332 #undef GetClassName
333 #endif
334 #define INTERFACE IDirect3DRMDevice
335 DECLARE_INTERFACE_(IDirect3DRMDevice,IUnknown)
336 {
337     /*** IUnknown methods ***/
338     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
339     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
340     STDMETHOD_(ULONG,Release)(THIS) PURE;
341     /*** IDirect3DRMObject methods ***/
342     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
343     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK pFunc, LPVOID pArg) PURE;
344     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK pFunc, LPVOID pArg) PURE;
345     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
346     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
347     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
348     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
349     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
350     /*** IDirect3DRMDevice methods ***/
351     STDMETHOD(Init)(THIS_ ULONG width, ULONG height) PURE;
352     STDMETHOD(InitFromD3D)(THIS_ LPDIRECT3D pD3D, LPDIRECT3DDEVICE pD3DDev) PURE;
353     STDMETHOD(InitFromClipper)(THIS_ LPDIRECTDRAWCLIPPER pDDClipper, LPGUID pGUID, int width, int height) PURE;
354     STDMETHOD(Update)(THIS) PURE;
355     STDMETHOD(AddUpdateCallback)(THIS_ D3DRMUPDATECALLBACK, LPVOID arg) PURE;
356     STDMETHOD(DeleteUpdateCallback)(THIS_ D3DRMUPDATECALLBACK, LPVOID arg) PURE;
357     STDMETHOD(SetBufferCount)(THIS_ DWORD) PURE;
358     STDMETHOD_(DWORD, GetBufferCount)(THIS) PURE;
359     STDMETHOD(SetDither)(THIS_ BOOL) PURE;
360     STDMETHOD(SetShades)(THIS_ DWORD) PURE;
361     STDMETHOD(SetQuality)(THIS_ D3DRMRENDERQUALITY) PURE;
362     STDMETHOD(SetTextureQuality)(THIS_ D3DRMTEXTUREQUALITY) PURE;
363     STDMETHOD(GetViewports)(THIS_ LPDIRECT3DRMVIEWPORTARRAY *return_views) PURE;
364     STDMETHOD_(BOOL, GetDither)(THIS) PURE;
365     STDMETHOD_(DWORD, GetShades)(THIS) PURE;
366     STDMETHOD_(DWORD, GetHeight)(THIS) PURE;
367     STDMETHOD_(DWORD, GetWidth)(THIS) PURE;
368     STDMETHOD_(DWORD, GetTrianglesDrawn)(THIS) PURE;
369     STDMETHOD_(DWORD, GetWireframeOptions)(THIS) PURE;
370     STDMETHOD_(D3DRMRENDERQUALITY, GetQuality)(THIS) PURE;
371     STDMETHOD_(D3DCOLORMODEL, GetColorModel)(THIS) PURE;
372     STDMETHOD_(D3DRMTEXTUREQUALITY, GetTextureQuality)(THIS) PURE;
373     STDMETHOD(GetDirect3DDevice)(THIS_ LPDIRECT3DDEVICE *) PURE;
374 };
375 #undef INTERFACE
376
377 #if !defined(__cplusplus) || defined(CINTERFACE)
378 /*** IUnknown methods ***/
379 #define IDirect3DRMDevice_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
380 #define IDirect3DRMDevice_AddRef(p)                    (p)->lpVtbl->AddRef(p)
381 #define IDirect3DRMDevice_Release(p)                   (p)->lpVtbl->Release(p)
382 /*** IDirect3DRMObject methods ***/
383 #define IDirect3DRMDevice_Clone(p,a,b,c)               (p)->lpVtbl->Clone(p,a,b,c)
384 #define IDirect3DRMDevice_AddDestroyCallback(p,a,b)    (p)->lpVtbl->AddDestroyCallback(p,a,b)
385 #define IDirect3DRMDevice_DeleteDestroyCallback(p,a,b) (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
386 #define IDirect3DRMDevice_SetAppData(p,a)              (p)->lpVtbl->SetAppData(p,a)
387 #define IDirect3DRMDevice_GetAppData(p)                (p)->lpVtbl->GetAppData(p)
388 #define IDirect3DRMDevice_SetName(p,a)                 (p)->lpVtbl->SetName(p,a)
389 #define IDirect3DRMDevice_GetName(p,a,b)               (p)->lpVtbl->GetName(p,a,b)
390 #define IDirect3DRMDevice_GetClassName(p,a,b)          (p)->lpVtbl->GetClassName(p,a,b)
391 /*** IDirect3DRMDevice methods ***/
392 #define IDirect3DRMDevice_Init(p,a,b)                  (p)->lpVtbl->Init(p,a,b)
393 #define IDirect3DRMDevice_InitFromD3D(p,a,b)           (p)->lpVtbl->InitFromD3D(p,a,b)
394 #define IDirect3DRMDevice_InitFromClipper(p,a,b,c,d)   (p)->lpVtbl->InitFromClipper(p,a,b,c,d)
395 #define IDirect3DRMDevice_Update(p)                    (p)->lpVtbl->Update(p)
396 #define IDirect3DRMDevice_AddUpdateCallback(p,a,b)     (p)->lpVtbl->AddUpdateCallback(p,a,b)
397 #define IDirect3DRMDevice_DeleteUpdateCallback(p,a,b)  (p)->lpVtbl->DeleteUpdateCallback(p,a,b)
398 #define IDirect3DRMDevice_SetBufferCount(p,a)          (p)->lpVtbl->SetBufferCount(p,a)
399 #define IDirect3DRMDevice_GetBufferCount(p)            (p)->lpVtbl->GetBufferCount(p)
400 #define IDirect3DRMDevice_SetDither(p,a)               (p)->lpVtbl->SetDither(p,a)
401 #define IDirect3DRMDevice_SetShades(p,a)               (p)->lpVtbl->SetShades(p,a)
402 #define IDirect3DRMDevice_SetQuality(p,a)              (p)->lpVtbl->SetQuality(p,a)
403 #define IDirect3DRMDevice_SetTextureQuality(p,a)       (p)->lpVtbl->SetTextureQuality(p,a)
404 #define IDirect3DRMDevice_GetViewports(p,a)            (p)->lpVtbl->GetViewports(p,a)
405 #define IDirect3DRMDevice_GetDither(p)                 (p)->lpVtbl->GetDither(p)
406 #define IDirect3DRMDevice_GetShades(p)                 (p)->lpVtbl->GetShades(p)
407 #define IDirect3DRMDevice_GetHeight(p)                 (p)->lpVtbl->GetHeight(p)
408 #define IDirect3DRMDevice_GetWidth(p)                  (p)->lpVtbl->GetWidth(p)
409 #define IDirect3DRMDevice_GetTrianglesDrawn(p)         (p)->lpVtbl->GetTrianglesDrawn(p)
410 #define IDirect3DRMDevice_GetWireframeOptions(p)       (p)->lpVtbl->GetWireframeOptions(p)
411 #define IDirect3DRMDevice_GetQuality(p)                (p)->lpVtbl->GetQuality(p)
412 #define IDirect3DRMDevice_GetColorModel(p)             (p)->lpVtbl->GetColorModel(p)
413 #define IDirect3DRMDevice_GetTextureQuality(p)         (p)->lpVtbl->GetTextureQuality(p)
414 #define IDirect3DRMDevice_GetDirect3DDevice(p,a)       (p)->lpVtbl->GetDirect3DDevice(p,a)
415 #else
416 /*** IUnknown methods ***/
417 #define IDirect3DRMDevice_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
418 #define IDirect3DRMDevice_AddRef(p)                    (p)->AddRef()
419 #define IDirect3DRMDevice_Release(p)                   (p)->Release()
420 /*** IDirect3DRMObject methods ***/
421 #define IDirect3DRMDevice_Clone(p,a,b,c)               (p)->Clone(a,b,c)
422 #define IDirect3DRMDevice_AddDestroyCallback(p,a,b)    (p)->AddDestroyCallback(a,b)
423 #define IDirect3DRMDevice_DeleteDestroyCallback(p,a,b) (p)->DeleteDestroyCallback(a,b)
424 #define IDirect3DRMDevice_SetAppData(p,a)              (p)->SetAppData(a)
425 #define IDirect3DRMDevice_GetAppData(p)                (p)->GetAppData()
426 #define IDirect3DRMDevice_SetName(p,a)                 (p)->SetName(a)
427 #define IDirect3DRMDevice_GetName(p,a,b)               (p)->GetName(a,b)
428 #define IDirect3DRMDevice_GetClassName(p,a,b)          (p)->GetClassName(a,b)
429 /*** IDirect3DRMDevice methods ***/
430 #define IDirect3DRMDevice_Init(p,a,b)                  (p)->Init(a,b)
431 #define IDirect3DRMDevice_InitFromD3D(p,a,b)           (p)->InitFromD3D(a,b)
432 #define IDirect3DRMDevice_InitFromClipper(p,a,b,c,d)   (p)->InitFromClipper(a,b,c,d)
433 #define IDirect3DRMDevice_Update(p)                    (p)->Update()
434 #define IDirect3DRMDevice_AddUpdateCallback(p,a,b)     (p)->AddUpdateCallback(a,b)
435 #define IDirect3DRMDevice_DeleteUpdateCallback(p,a,b)  (p)->DeleteUpdateCallback(a,b)
436 #define IDirect3DRMDevice_SetBufferCount(p,a)          (p)->SetBufferCount(a)
437 #define IDirect3DRMDevice_GetBufferCount(p)            (p)->GetBufferCount()
438 #define IDirect3DRMDevice_SetDither(p,a)               (p)->SetDither(a)
439 #define IDirect3DRMDevice_SetShades(p,a)               (p)->SetShades(a)
440 #define IDirect3DRMDevice_SetQuality(p,a)              (p)->SetQuality(a)
441 #define IDirect3DRMDevice_SetTextureQuality(p,a)       (p)->SetTextureQuality(a)
442 #define IDirect3DRMDevice_GetViewports(p,a)            (p)->GetViewports(a)
443 #define IDirect3DRMDevice_GetDither(p)                 (p)->GetDither()
444 #define IDirect3DRMDevice_GetShades(p)                 (p)->GetShades()
445 #define IDirect3DRMDevice_GetHeight(p)                 (p)->GetHeight()
446 #define IDirect3DRMDevice_GetWidth(p)                  (p)->GetWidth()
447 #define IDirect3DRMDevice_GetTrianglesDrawn(p)         (p)->GetTrianglesDrawn()
448 #define IDirect3DRMDevice_GetWireframeOptions(p)       (p)->GetWireframeOptions()
449 #define IDirect3DRMDevice_GetQuality(p)                (p)->GetQuality()
450 #define IDirect3DRMDevice_GetColorModel(p)             (p)->GetColorModel()
451 #define IDirect3DRMDevice_GetTextureQuality(p)         (p)->GetTextureQuality()
452 #define IDirect3DRMDevice_GetDirect3DDevice(p,a)       (p)->GetDirect3DDevice(a)
453 #endif
454
455 /*****************************************************************************
456  * IDirect3DRMDevice2 interface
457  */
458 #ifdef WINE_NO_UNICODE_MACROS
459 #undef GetClassName
460 #endif
461 #define INTERFACE IDirect3DRMDevice2
462 DECLARE_INTERFACE_(IDirect3DRMDevice2,IDirect3DRMDevice)
463 {
464     /*** IUnknown methods ***/
465     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
466     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
467     STDMETHOD_(ULONG,Release)(THIS) PURE;
468     /*** IDirect3DRMObject methods ***/
469     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
470     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK pFunc, LPVOID pArg) PURE;
471     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK pFunc, LPVOID pArg) PURE;
472     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
473     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
474     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
475     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
476     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
477     /*** IDirect3DRMDevice methods ***/
478     STDMETHOD(Init)(THIS_ ULONG width, ULONG height) PURE;
479     STDMETHOD(InitFromD3D)(THIS_ LPDIRECT3D pD3D, LPDIRECT3DDEVICE pD3DDev) PURE;
480     STDMETHOD(InitFromClipper)(THIS_ LPDIRECTDRAWCLIPPER pDDClipper, LPGUID pGUID, int width, int height) PURE;
481     STDMETHOD(Update)(THIS) PURE;
482     STDMETHOD(AddUpdateCallback)(THIS_ D3DRMUPDATECALLBACK, LPVOID arg) PURE;
483     STDMETHOD(DeleteUpdateCallback)(THIS_ D3DRMUPDATECALLBACK, LPVOID arg) PURE;
484     STDMETHOD(SetBufferCount)(THIS_ DWORD) PURE;
485     STDMETHOD_(DWORD, GetBufferCount)(THIS) PURE;
486     STDMETHOD(SetDither)(THIS_ BOOL) PURE;
487     STDMETHOD(SetShades)(THIS_ DWORD) PURE;
488     STDMETHOD(SetQuality)(THIS_ D3DRMRENDERQUALITY) PURE;
489     STDMETHOD(SetTextureQuality)(THIS_ D3DRMTEXTUREQUALITY) PURE;
490     STDMETHOD(GetViewports)(THIS_ LPDIRECT3DRMVIEWPORTARRAY *return_views) PURE;
491     STDMETHOD_(BOOL, GetDither)(THIS) PURE;
492     STDMETHOD_(DWORD, GetShades)(THIS) PURE;
493     STDMETHOD_(DWORD, GetHeight)(THIS) PURE;
494     STDMETHOD_(DWORD, GetWidth)(THIS) PURE;
495     STDMETHOD_(DWORD, GetTrianglesDrawn)(THIS) PURE;
496     STDMETHOD_(DWORD, GetWireframeOptions)(THIS) PURE;
497     STDMETHOD_(D3DRMRENDERQUALITY, GetQuality)(THIS) PURE;
498     STDMETHOD_(D3DCOLORMODEL, GetColorModel)(THIS) PURE;
499     STDMETHOD_(D3DRMTEXTUREQUALITY, GetTextureQuality)(THIS) PURE;
500     STDMETHOD(GetDirect3DDevice)(THIS_ LPDIRECT3DDEVICE *) PURE;
501     /*** IDirect3DRMDevice2 methods ***/
502     STDMETHOD(InitFromD3D2)(THIS_ LPDIRECT3D2 pD3D, LPDIRECT3DDEVICE2 pD3DDev) PURE;
503     STDMETHOD(InitFromSurface)(THIS_ LPGUID pGUID, LPDIRECTDRAW pDD, LPDIRECTDRAWSURFACE pDDSBack) PURE;
504     STDMETHOD(SetRenderMode)(THIS_ DWORD flags) PURE;
505     STDMETHOD_(DWORD, GetRenderMode)(THIS) PURE;
506     STDMETHOD(GetDirect3DDevice2)(THIS_ LPDIRECT3DDEVICE2 *) PURE;
507 };
508 #undef INTERFACE
509
510 #if !defined(__cplusplus) || defined(CINTERFACE)
511 /*** IUnknown methods ***/
512 #define IDirect3DRMDevice2_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
513 #define IDirect3DRMDevice2_AddRef(p)                    (p)->lpVtbl->AddRef(p)
514 #define IDirect3DRMDevice2_Release(p)                   (p)->lpVtbl->Release(p)
515 /*** IDirect3DRMObject methods ***/
516 #define IDirect3DRMDevice2_Clone(p,a,b,c)               (p)->lpVtbl->Clone(p,a,b,c)
517 #define IDirect3DRMDevice2_AddDestroyCallback(p,a,b)    (p)->lpVtbl->AddDestroyCallback(p,a,b)
518 #define IDirect3DRMDevice2_DeleteDestroyCallback(p,a,b) (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
519 #define IDirect3DRMDevice2_SetAppData(p,a)              (p)->lpVtbl->SetAppData(p,a)
520 #define IDirect3DRMDevice2_GetAppData(p)                (p)->lpVtbl->GetAppData(p)
521 #define IDirect3DRMDevice2_SetName(p,a)                 (p)->lpVtbl->SetName(p,a)
522 #define IDirect3DRMDevice2_GetName(p,a,b)               (p)->lpVtbl->GetName(p,a,b)
523 #define IDirect3DRMDevice2_GetClassName(p,a,b)          (p)->lpVtbl->GetClassName(p,a,b)
524 /*** IDirect3DRMDevice methods ***/
525 #define IDirect3DRMDevice2_Init(p,a,b)                  (p)->lpVtbl->Init(p,a,b)
526 #define IDirect3DRMDevice2_InitFromD3D(p,a,b)           (p)->lpVtbl->InitFromD3D(p,a,b)
527 #define IDirect3DRMDevice2_InitFromClipper(p,a,b,c,d)   (p)->lpVtbl->InitFromClipper(p,a,b,c,d)
528 #define IDirect3DRMDevice2_Update(p)                    (p)->lpVtbl->Update(p)
529 #define IDirect3DRMDevice2_AddUpdateCallback(p,a,b)     (p)->lpVtbl->AddUpdateCallback(p,a,b)
530 #define IDirect3DRMDevice2_DeleteUpdateCallback(p,a,b)  (p)->lpVtbl->DeleteUpdateCallback(p,a,b)
531 #define IDirect3DRMDevice2_SetBufferCount(p,a)          (p)->lpVtbl->SetBufferCount(p,a)
532 #define IDirect3DRMDevice2_GetBufferCount(p)            (p)->lpVtbl->GetBufferCount(p)
533 #define IDirect3DRMDevice2_SetDither(p,a)               (p)->lpVtbl->SetDither(p,a)
534 #define IDirect3DRMDevice2_SetShades(p,a)               (p)->lpVtbl->SetShades(p,a)
535 #define IDirect3DRMDevice2_SetQuality(p,a)              (p)->lpVtbl->SetQuality(p,a)
536 #define IDirect3DRMDevice2_SetTextureQuality(p,a)       (p)->lpVtbl->SetTextureQuality(p,a)
537 #define IDirect3DRMDevice2_GetViewports(p,a)            (p)->lpVtbl->GetViewports(p,a)
538 #define IDirect3DRMDevice2_GetDither(p)                 (p)->lpVtbl->GetDither(p)
539 #define IDirect3DRMDevice2_GetShades(p)                 (p)->lpVtbl->GetShades(p)
540 #define IDirect3DRMDevice2_GetHeight(p)                 (p)->lpVtbl->GetHeight(p)
541 #define IDirect3DRMDevice2_GetWidth(p)                  (p)->lpVtbl->GetWidth(p)
542 #define IDirect3DRMDevice2_GetTrianglesDrawn(p)         (p)->lpVtbl->GetTrianglesDrawn(p)
543 #define IDirect3DRMDevice2_GetWireframeOptions(p)       (p)->lpVtbl->GetWireframeOptions(p)
544 #define IDirect3DRMDevice2_GetQuality(p)                (p)->lpVtbl->GetQuality(p)
545 #define IDirect3DRMDevice2_GetColorModel(p)             (p)->lpVtbl->GetColorModel(p)
546 #define IDirect3DRMDevice2_GetTextureQuality(p)         (p)->lpVtbl->GetTextureQuality(p)
547 #define IDirect3DRMDevice2_GetDirect3DDevice(p,a)       (p)->lpVtbl->GetDirect3DDevice(p,a)
548 /*** IDirect3DRMDevice2 methods ***/
549 #define IDirect3DRMDevice2_InitFromD3D2(p,a,b)          (p)->lpVtbl->InitFromD3D2(p,a,b)
550 #define IDirect3DRMDevice2_InitFromSurface(p,a,b,c)     (p)->lpVtbl->InitFromSurface(p,a,b,c)
551 #define IDirect3DRMDevice2_SetRenderMode(p,a)           (p)->lpVtbl->SetRenderMode(p,a)
552 #define IDirect3DRMDevice2_GetRenderMode(p)             (p)->lpVtbl->GetRenderMode(p)
553 #define IDirect3DRMDevice2_GetDirect3DDevice2(p,a)      (p)->lpVtbl->GetDirect3DDevice2(p,a)
554 #else
555 /*** IUnknown methods ***/
556 #define IDirect3DRMDevice2_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
557 #define IDirect3DRMDevice2_AddRef(p)                    (p)->AddRef()
558 #define IDirect3DRMDevice2_Release(p)                   (p)->Release()
559 /*** IDirect3DRMObject methods ***/
560 #define IDirect3DRMDevice2_Clone(p,a,b,c)               (p)->Clone(a,b,c)
561 #define IDirect3DRMDevice2_AddDestroyCallback(p,a,b)    (p)->AddDestroyCallback(a,b)
562 #define IDirect3DRMDevice2_DeleteDestroyCallback(p,a,b) (p)->DeleteDestroyCallback(a,b)
563 #define IDirect3DRMDevice2_SetAppData(p,a)              (p)->SetAppData(a)
564 #define IDirect3DRMDevice2_GetAppData(p)                (p)->GetAppData()
565 #define IDirect3DRMDevice2_SetName(p,a)                 (p)->SetName(a)
566 #define IDirect3DRMDevice2_GetName(p,a,b)               (p)->GetName(a,b)
567 #define IDirect3DRMDevice2_GetClassName(p,a,b)          (p)->GetClassName(a,b)
568 /*** IDirect3DRMDevice methods ***/
569 #define IDirect3DRMDevice2_Init(p,a,b)                  (p)->Init(a,b)
570 #define IDirect3DRMDevice2_InitFromD3D(p,a,b)           (p)->InitFromD3D(a,b)
571 #define IDirect3DRMDevice2_InitFromClipper(p,a,b,c,d)   (p)->InitFromClipper(a,b,c,d)
572 #define IDirect3DRMDevice2_Update(p)                    (p)->Update()
573 #define IDirect3DRMDevice2_AddUpdateCallback(p,a,b)     (p)->AddUpdateCallback(a,b)
574 #define IDirect3DRMDevice2_DeleteUpdateCallback(p,a,b)  (p)->DeleteUpdateCallback(a,b)
575 #define IDirect3DRMDevice2_SetBufferCount(p,a)          (p)->SetBufferCount(a)
576 #define IDirect3DRMDevice2_GetBufferCount(p)            (p)->GetBufferCount()
577 #define IDirect3DRMDevice2_SetDither(p,a)               (p)->SetDither(a)
578 #define IDirect3DRMDevice2_SetShades(p,a)               (p)->SetShades(a)
579 #define IDirect3DRMDevice2_SetQuality(p,a)              (p)->SetQuality(a)
580 #define IDirect3DRMDevice2_SetTextureQuality(p,a)       (p)->SetTextureQuality(a)
581 #define IDirect3DRMDevice2_GetViewports(p,a)            (p)->GetViewports(a)
582 #define IDirect3DRMDevice2_GetDither(p)                 (p)->GetDither()
583 #define IDirect3DRMDevice2_GetShades(p)                 (p)->GetShades()
584 #define IDirect3DRMDevice2_GetHeight(p)                 (p)->GetHeight()
585 #define IDirect3DRMDevice2_GetWidth(p)                  (p)->GetWidth()
586 #define IDirect3DRMDevice2_GetTrianglesDrawn(p)         (p)->GetTrianglesDrawn()
587 #define IDirect3DRMDevice2_GetWireframeOptions(p)       (p)->GetWireframeOptions()
588 #define IDirect3DRMDevice2_GetQuality(p)                (p)->GetQuality()
589 #define IDirect3DRMDevice2_GetColorModel(p)             (p)->GetColorModel()
590 #define IDirect3DRMDevice2_GetTextureQuality(p)         (p)->GetTextureQuality()
591 #define IDirect3DRMDevice2_GetDirect3DDevice(p,a)       (p)->GetDirect3DDevice(a)
592 /*** IDirect3DRMDevice2 methods ***/
593 #define IDirect3DRMDevice2_InitFromD3D2(p,a,b)          (p)->InitFromD3D2(a,b)
594 #define IDirect3DRMDevice2_InitFromSurface(p,a,b,c)     (p)->InitFromSurface(a,b,c)
595 #define IDirect3DRMDevice2_SetRenderMode(p,a)           (p)->SetRenderMode(a)
596 #define IDirect3DRMDevice2_GetRenderMode(p)             (p)->GetRenderMode()
597 #define IDirect3DRMDevice2_GetDirect3DDevice2(p,a)      (p)->GetDirect3DDevice2(a)
598 #endif
599
600 /*****************************************************************************
601  * IDirect3DRMDevice3 interface
602  */
603 #ifdef WINE_NO_UNICODE_MACROS
604 #undef GetClassName
605 #endif
606 #define INTERFACE IDirect3DRMDevice3
607 DECLARE_INTERFACE_(IDirect3DRMDevice3,IDirect3DRMObject)
608 {
609     /*** IUnknown methods ***/
610     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
611     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
612     STDMETHOD_(ULONG,Release)(THIS) PURE;
613     /*** IDirect3DRMObject methods ***/
614     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
615     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK pFunc, LPVOID pArg) PURE;
616     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK pFunc, LPVOID pArg) PURE;
617     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
618     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
619     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
620     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
621     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
622     /*** IDirect3DRMDevice methods ***/
623     STDMETHOD(Init)(THIS_ ULONG width, ULONG height) PURE;
624     STDMETHOD(InitFromD3D)(THIS_ LPDIRECT3D pD3D, LPDIRECT3DDEVICE pD3DDev) PURE;
625     STDMETHOD(InitFromClipper)(THIS_ LPDIRECTDRAWCLIPPER pDDClipper, LPGUID pGUID, int width, int height) PURE;
626     STDMETHOD(Update)(THIS) PURE;
627     STDMETHOD(AddUpdateCallback)(THIS_ D3DRMUPDATECALLBACK, LPVOID arg) PURE;
628     STDMETHOD(DeleteUpdateCallback)(THIS_ D3DRMUPDATECALLBACK, LPVOID arg) PURE;
629     STDMETHOD(SetBufferCount)(THIS_ DWORD) PURE;
630     STDMETHOD_(DWORD, GetBufferCount)(THIS) PURE;
631     STDMETHOD(SetDither)(THIS_ BOOL) PURE;
632     STDMETHOD(SetShades)(THIS_ DWORD) PURE;
633     STDMETHOD(SetQuality)(THIS_ D3DRMRENDERQUALITY) PURE;
634     STDMETHOD(SetTextureQuality)(THIS_ D3DRMTEXTUREQUALITY) PURE;
635     STDMETHOD(GetViewports)(THIS_ LPDIRECT3DRMVIEWPORTARRAY *return_views) PURE;
636     STDMETHOD_(BOOL, GetDither)(THIS) PURE;
637     STDMETHOD_(DWORD, GetShades)(THIS) PURE;
638     STDMETHOD_(DWORD, GetHeight)(THIS) PURE;
639     STDMETHOD_(DWORD, GetWidth)(THIS) PURE;
640     STDMETHOD_(DWORD, GetTrianglesDrawn)(THIS) PURE;
641     STDMETHOD_(DWORD, GetWireframeOptions)(THIS) PURE;
642     STDMETHOD_(D3DRMRENDERQUALITY, GetQuality)(THIS) PURE;
643     STDMETHOD_(D3DCOLORMODEL, GetColorModel)(THIS) PURE;
644     STDMETHOD_(D3DRMTEXTUREQUALITY, GetTextureQuality)(THIS) PURE;
645     STDMETHOD(GetDirect3DDevice)(THIS_ LPDIRECT3DDEVICE *) PURE;
646     /*** IDirect3DRMDevice2 methods ***/
647     STDMETHOD(InitFromD3D2)(THIS_ LPDIRECT3D2 pD3D, LPDIRECT3DDEVICE2 pD3DDev) PURE;
648     STDMETHOD(InitFromSurface)(THIS_ LPGUID pGUID, LPDIRECTDRAW pDD, LPDIRECTDRAWSURFACE pDDSBack) PURE;
649     STDMETHOD(SetRenderMode)(THIS_ DWORD flags) PURE;
650     STDMETHOD_(DWORD, GetRenderMode)(THIS) PURE;
651     STDMETHOD(GetDirect3DDevice2)(THIS_ LPDIRECT3DDEVICE2 *) PURE;
652     /*** IDirect3DRMDevice3 methods ***/
653     STDMETHOD(FindPreferredTextureFormat)(THIS_ DWORD BitDepths, DWORD flags, LPDDPIXELFORMAT pDDPF) PURE;
654     STDMETHOD(RenderStateChange)(THIS_ D3DRENDERSTATETYPE drsType, DWORD val, DWORD flags) PURE;
655     STDMETHOD(LightStateChange)(THIS_ D3DLIGHTSTATETYPE drsType, DWORD val, DWORD flags) PURE;
656     STDMETHOD(GetStateChangeOptions)(THIS_ DWORD StateClass, DWORD StateNum, LPDWORD pFlags) PURE;
657     STDMETHOD(SetStateChangeOptions)(THIS_ DWORD StateClass, DWORD StateNum, DWORD flags) PURE;
658 };
659 #undef INTERFACE
660
661 #if !defined(__cplusplus) || defined(CINTERFACE)
662 /*** IUnknown methods ***/
663 #define IDirect3DRMDevice3_QueryInterface(p,a,b)               (p)->lpVtbl->QueryInterface(p,a,b)
664 #define IDirect3DRMDevice3_AddRef(p)                           (p)->lpVtbl->AddRef(p)
665 #define IDirect3DRMDevice3_Release(p)                          (p)->lpVtbl->Release(p)
666 /*** IDirect3DRMObject methods ***/
667 #define IDirect3DRMDevice3_Clone(p,a,b,c)                      (p)->lpVtbl->Clone(p,a,b,c)
668 #define IDirect3DRMDevice3_AddDestroyCallback(p,a,b)           (p)->lpVtbl->AddDestroyCallback(p,a,b)
669 #define IDirect3DRMDevice3_DeleteDestroyCallback(p,a,b)        (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
670 #define IDirect3DRMDevice3_SetAppData(p,a)                     (p)->lpVtbl->SetAppData(p,a)
671 #define IDirect3DRMDevice3_GetAppData(p)                       (p)->lpVtbl->GetAppData(p)
672 #define IDirect3DRMDevice3_SetName(p,a)                        (p)->lpVtbl->SetName(p,a)
673 #define IDirect3DRMDevice3_GetName(p,a,b)                      (p)->lpVtbl->GetName(p,a,b)
674 #define IDirect3DRMDevice3_GetClassName(p,a,b)                 (p)->lpVtbl->GetClassName(p,a,b)
675 /*** IDirect3DRMDevice methods ***/
676 #define IDirect3DRMDevice3_Init(p,a,b)                         (p)->lpVtbl->Init(p,a,b)
677 #define IDirect3DRMDevice3_InitFromD3D(p,a,b)                  (p)->lpVtbl->InitFromD3D(p,a,b)
678 #define IDirect3DRMDevice3_InitFromClipper(p,a,b,c,d)          (p)->lpVtbl->InitFromClipper(p,a,b,c,d)
679 #define IDirect3DRMDevice3_Update(p)                           (p)->lpVtbl->Update(p)
680 #define IDirect3DRMDevice3_AddUpdateCallback(p,a,b)            (p)->lpVtbl->AddUpdateCallback(p,a,b)
681 #define IDirect3DRMDevice3_DeleteUpdateCallback(p,a,b)         (p)->lpVtbl->DeleteUpdateCallback(p,a,b)
682 #define IDirect3DRMDevice3_SetBufferCount(p,a)                 (p)->lpVtbl->SetBufferCount(p,a)
683 #define IDirect3DRMDevice3_GetBufferCount(p)                   (p)->lpVtbl->GetBufferCount(p)
684 #define IDirect3DRMDevice3_SetDither(p,a)                      (p)->lpVtbl->SetDither(p,a)
685 #define IDirect3DRMDevice3_SetShades(p,a)                      (p)->lpVtbl->SetShades(p,a)
686 #define IDirect3DRMDevice3_SetQuality(p,a)                     (p)->lpVtbl->SetQuality(p,a)
687 #define IDirect3DRMDevice3_SetTextureQuality(p,a)              (p)->lpVtbl->SetTextureQuality(p,a)
688 #define IDirect3DRMDevice3_GetViewports(p,a)                   (p)->lpVtbl->GetViewports(p,a)
689 #define IDirect3DRMDevice3_GetDither(p)                        (p)->lpVtbl->GetDither(p)
690 #define IDirect3DRMDevice3_GetShades(p)                        (p)->lpVtbl->GetShades(p)
691 #define IDirect3DRMDevice3_GetHeight(p)                        (p)->lpVtbl->GetHeight(p)
692 #define IDirect3DRMDevice3_GetWidth(p)                         (p)->lpVtbl->GetWidth(p)
693 #define IDirect3DRMDevice3_GetTrianglesDrawn(p)                (p)->lpVtbl->GetTrianglesDrawn(p)
694 #define IDirect3DRMDevice3_GetWireframeOptions(p)              (p)->lpVtbl->GetWireframeOptions(p)
695 #define IDirect3DRMDevice3_GetQuality(p)                       (p)->lpVtbl->GetQuality(p)
696 #define IDirect3DRMDevice3_GetColorModel(p)                    (p)->lpVtbl->GetColorModel(p)
697 #define IDirect3DRMDevice3_GetTextureQuality(p)                (p)->lpVtbl->GetTextureQuality(p)
698 #define IDirect3DRMDevice3_GetDirect3DDevice(p,a)              (p)->lpVtbl->GetDirect3DDevice(p,a)
699 /*** IDirect3DRMDevice2 methods ***/
700 #define IDirect3DRMDevice3_InitFromD3D2(p,a,b)                 (p)->lpVtbl->InitFromD3D2(p,a,b)
701 #define IDirect3DRMDevice3_InitFromSurface(p,a,b,c)            (p)->lpVtbl->InitFromSurface(p,a,b,c)
702 #define IDirect3DRMDevice3_SetRenderMode(p,a)                  (p)->lpVtbl->SetRenderMode(p,a)
703 #define IDirect3DRMDevice3_GetRenderMode(p)                    (p)->lpVtbl->GetRenderMode(p)
704 #define IDirect3DRMDevice3_GetDirect3DDevice2(p,a)             (p)->lpVtbl->GetDirect3DDevice2(p,a)
705 /*** IDirect3DRMDevice3 methods ***/
706 #define IDirect3DRMDevice3_FindPreferredTextureFormat(p,a,b,c) (p)->lpVtbl->FindPreferredTextureFormat(p,a,b,c)
707 #define IDirect3DRMDevice3_RenderStateChange(p,a,b,c)          (p)->lpVtbl->RenderStateChange(p,a,b,c)
708 #define IDirect3DRMDevice3_LightStateChange(p,a,b,c)           (p)->lpVtbl->LightStateChange(p,a,b,c)
709 #define IDirect3DRMDevice3_GetStateChangeOptions(p,a,b,c)      (p)->lpVtbl->GetStateChangeOptions(p,a,b,c)
710 #define IDirect3DRMDevice3_SetStateChangeOptions(p,a,b,c)      (p)->lpVtbl->SetStateChangeOptions(p,a,b,c)
711 #else
712 /*** IUnknown methods ***/
713 #define IDirect3DRMDevice3_QueryInterface(p,a,b)               (p)->QueryInterface(a,b)
714 #define IDirect3DRMDevice3_AddRef(p)                           (p)->AddRef()
715 #define IDirect3DRMDevice3_Release(p)                          (p)->Release()
716 /*** IDirect3DRMObject methods ***/
717 #define IDirect3DRMDevice3_Clone(p,a,b,c)                      (p)->Clone(a,b,c)
718 #define IDirect3DRMDevice3_AddDestroyCallback(p,a,b)           (p)->AddDestroyCallback(a,b)
719 #define IDirect3DRMDevice3_DeleteDestroyCallback(p,a,b)        (p)->DeleteDestroyCallback(a,b)
720 #define IDirect3DRMDevice3_SetAppData(p,a)                     (p)->SetAppData(a)
721 #define IDirect3DRMDevice3_GetAppData(p)                       (p)->GetAppData()
722 #define IDirect3DRMDevice3_SetName(p,a)                        (p)->SetName(a)
723 #define IDirect3DRMDevice3_GetName(p,a,b)                      (p)->GetName(a,b)
724 #define IDirect3DRMDevice3_GetClassName(p,a,b)                 (p)->GetClassName(a,b)
725 /*** IDirect3DRMDevice methods ***/
726 #define IDirect3DRMDevice3_Init(p,a,b)                         (p)->Init(a,b)
727 #define IDirect3DRMDevice3_InitFromD3D(p,a,b)                  (p)->InitFromD3D(a,b)
728 #define IDirect3DRMDevice3_InitFromClipper(p,a,b,c,d)          (p)->InitFromClipper(a,b,c,d)
729 #define IDirect3DRMDevice3_Update(p)                           (p)->Update()
730 #define IDirect3DRMDevice3_AddUpdateCallback(p,a,b)            (p)->AddUpdateCallback(a,b)
731 #define IDirect3DRMDevice3_DeleteUpdateCallback(p,a,b)         (p)->DeleteUpdateCallback(a,b)
732 #define IDirect3DRMDevice3_SetBufferCount(p,a)                 (p)->SetBufferCount(a)
733 #define IDirect3DRMDevice3_GetBufferCount(p)                   (p)->GetBufferCount()
734 #define IDirect3DRMDevice3_SetDither(p,a)                      (p)->SetDither(a)
735 #define IDirect3DRMDevice3_SetShades(p,a)                      (p)->SetShades(a)
736 #define IDirect3DRMDevice3_SetQuality(p,a)                     (p)->SetQuality(a)
737 #define IDirect3DRMDevice3_SetTextureQuality(p,a)              (p)->SetTextureQuality(a)
738 #define IDirect3DRMDevice3_GetViewports(p,a)                   (p)->GetViewports(a)
739 #define IDirect3DRMDevice3_GetDither(p)                        (p)->GetDither()
740 #define IDirect3DRMDevice3_GetShades(p)                        (p)->GetShades()
741 #define IDirect3DRMDevice3_GetHeight(p)                        (p)->GetHeight()
742 #define IDirect3DRMDevice3_GetWidth(p)                         (p)->GetWidth()
743 #define IDirect3DRMDevice3_GetTrianglesDrawn(p)                (p)->GetTrianglesDrawn()
744 #define IDirect3DRMDevice3_GetWireframeOptions(p)              (p)->GetWireframeOptions()
745 #define IDirect3DRMDevice3_GetQuality(p)                       (p)->GetQuality()
746 #define IDirect3DRMDevice3_GetColorModel(p)                    (p)->GetColorModel()
747 #define IDirect3DRMDevice3_GetTextureQuality(p)                (p)->GetTextureQuality()
748 #define IDirect3DRMDevice3_GetDirect3DDevice(p,a)              (p)->GetDirect3DDevice(a)
749 /*** IDirect3DRMDevice2 methods ***/
750 #define IDirect3DRMDevice3_InitFromD3D2(p,a,b)                 (p)->InitFromD3D2(a,b)
751 #define IDirect3DRMDevice3_InitFromSurface(p,a,b,c)            (p)->InitFromSurface(a,b,c)
752 #define IDirect3DRMDevice3_SetRenderMode(p,a)                  (p)->SetRenderMode(a)
753 #define IDirect3DRMDevice3_GetRenderMode(p)                    (p)->GetRenderMode()
754 #define IDirect3DRMDevice3_GetDirect3DDevice2(p,a)             (p)->GetDirect3DDevice2(a)
755 /*** IDirect3DRMDevice3 methods ***/
756 #define IDirect3DRMDevice3_FindPreferredTextureFormat(p,a,b,c) (p)->FindPreferredTextureFormat(a,b,c)
757 #define IDirect3DRMDevice3_RenderStateChange(p,a,b,c)          (p)->RenderStateChange(a,b,c)
758 #define IDirect3DRMDevice3_LightStateChange(p,a,b,c)           (p)->LightStateChange(a,b,c)
759 #define IDirect3DRMDevice3_GetStateChangeOptions(p,a,b,c)      (p)->GetStateChangeOptions(a,b,c)
760 #define IDirect3DRMDevice3_SetStateChangeOptions(p,a,b,c)      (p)->SetStateChangeOptions(a,b,c)
761 #endif
762
763 /*****************************************************************************
764  * IDirect3DRMViewport interface
765  */
766 #define INTERFACE IDirect3DRMViewport
767 DECLARE_INTERFACE_(IDirect3DRMViewport,IDirect3DRMObject)
768 {
769     /*** IUnknown methods ***/
770     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
771     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
772     STDMETHOD_(ULONG,Release)(THIS) PURE;
773     /*** IDirect3DRMObject methods ***/
774     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
775     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
776     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
777     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
778     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
779     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
780     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
781     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
782     /*** IDirect3DRMViewport methods ***/
783     STDMETHOD(Init) (THIS_ LPDIRECT3DRMDEVICE dev, LPDIRECT3DRMFRAME camera, DWORD xpos, DWORD ypos,
784         DWORD width, DWORD height) PURE;
785     STDMETHOD(Clear)(THIS) PURE;
786     STDMETHOD(Render)(THIS_ LPDIRECT3DRMFRAME) PURE;
787     STDMETHOD(SetFront)(THIS_ D3DVALUE) PURE;
788     STDMETHOD(SetBack)(THIS_ D3DVALUE) PURE;
789     STDMETHOD(SetField)(THIS_ D3DVALUE) PURE;
790     STDMETHOD(SetUniformScaling)(THIS_ BOOL) PURE;
791     STDMETHOD(SetCamera)(THIS_ LPDIRECT3DRMFRAME) PURE;
792     STDMETHOD(SetProjection)(THIS_ D3DRMPROJECTIONTYPE) PURE;
793     STDMETHOD(Transform)(THIS_ D3DRMVECTOR4D *d, D3DVECTOR *s) PURE;
794     STDMETHOD(InverseTransform)(THIS_ D3DVECTOR *d, D3DRMVECTOR4D *s) PURE;
795     STDMETHOD(Configure)(THIS_ LONG x, LONG y, DWORD width, DWORD height) PURE;
796     STDMETHOD(ForceUpdate)(THIS_ DWORD x1, DWORD y1, DWORD x2, DWORD y2) PURE;
797     STDMETHOD(SetPlane)(THIS_ D3DVALUE left, D3DVALUE right, D3DVALUE bottom, D3DVALUE top) PURE;
798     STDMETHOD(GetCamera)(THIS_ LPDIRECT3DRMFRAME *) PURE;
799     STDMETHOD(GetDevice)(THIS_ LPDIRECT3DRMDEVICE *) PURE;
800     STDMETHOD(GetPlane)(THIS_ D3DVALUE *left, D3DVALUE *right, D3DVALUE *bottom, D3DVALUE *top) PURE;
801     STDMETHOD(Pick)(THIS_ LONG x, LONG y, LPDIRECT3DRMPICKEDARRAY *return_visuals) PURE;
802     STDMETHOD_(BOOL, GetUniformScaling)(THIS) PURE;
803     STDMETHOD_(LONG, GetX)(THIS) PURE;
804     STDMETHOD_(LONG, GetY)(THIS) PURE;
805     STDMETHOD_(DWORD, GetWidth)(THIS) PURE;
806     STDMETHOD_(DWORD, GetHeight)(THIS) PURE;
807     STDMETHOD_(D3DVALUE, GetField)(THIS) PURE;
808     STDMETHOD_(D3DVALUE, GetBack)(THIS) PURE;
809     STDMETHOD_(D3DVALUE, GetFront)(THIS) PURE;
810     STDMETHOD_(D3DRMPROJECTIONTYPE, GetProjection)(THIS) PURE;
811     STDMETHOD(GetDirect3DViewport)(THIS_ LPDIRECT3DVIEWPORT *) PURE;
812 };
813 #undef INTERFACE
814
815 #if !defined(__cplusplus) || defined(CINTERFACE)
816 /*** IUnknown methods ***/
817 #define IDirect3DRMViewport_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
818 #define IDirect3DRMViewport_AddRef(p)                    (p)->lpVtbl->AddRef(p)
819 #define IDirect3DRMViewport_Release(p)                   (p)->lpVtbl->Release(p)
820 /*** IDirect3DRMObject methods ***/
821 #define IDirect3DRMViewport_Clone(p,a,b,c)               (p)->lpVtbl->Clone(p,a,b,c)
822 #define IDirect3DRMViewport_AddDestroyCallback(p,a,b)    (p)->lpVtbl->AddDestroyCallback(p,a,b)
823 #define IDirect3DRMViewport_DeleteDestroyCallback(p,a,b) (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
824 #define IDirect3DRMViewport_SetAppData(p,a)              (p)->lpVtbl->SetAppData(p,a)
825 #define IDirect3DRMViewport_GetAppData(p)                (p)->lpVtbl->GetAppData(p)
826 #define IDirect3DRMViewport_SetName(p,a)                 (p)->lpVtbl->SetName(p,a)
827 #define IDirect3DRMViewport_GetName(p,a,b)               (p)->lpVtbl->GetName(p,a,b)
828 #define IDirect3DRMViewport_GetClassName(p,a,b)          (p)->lpVtbl->GetClassName(p,a,b)
829 /*** IDirect3DRMViewport methods ***/
830 #define IDirect3DRMViewport_Init(p,a,b,c,d)              (p)->lpVtbl->Init(p,a,b,c,d)
831 #define IDirect3DRMViewport_Clear(p)                     (p)->lpVtbl->Clear(p)
832 #define IDirect3DRMViewport_Render(p,a)                  (p)->lpVtbl->Render(p,a)
833 #define IDirect3DRMViewport_SetFront(p,a)                (p)->lpVtbl->SetFront(p,a)
834 #define IDirect3DRMViewport_SetBack(p,a)                 (p)->lpVtbl->SetBack(p,a)
835 #define IDirect3DRMViewport_SetField(p,a)                (p)->lpVtbl->SetField(p,a)
836 #define IDirect3DRMViewport_SetUniformScaling(p,a)       (p)->lpVtbl->SetUniformScaling(p,a)
837 #define IDirect3DRMViewport_SetCamera(p,a)               (p)->lpVtbl->SetCamera(p,a)
838 #define IDirect3DRMViewport_SetProjection(p,a)           (p)->lpVtbl->SetProjection(p,a)
839 #define IDirect3DRMViewport_Transform(p,a,b)             (p)->lpVtbl->Transform(p,a,b)
840 #define IDirect3DRMViewport_InverseTransform(p,a,b)      (p)->lpVtbl->InverseTransform(p,a,b)
841 #define IDirect3DRMViewport_Configure(p,a,b,c,d)         (p)->lpVtbl->Configure(p,a,b,c,d)
842 #define IDirect3DRMViewport_ForceUpdate(p,a,b,c,d)       (p)->lpVtbl->ForceUpdate(p,a,b,c,d)
843 #define IDirect3DRMViewport_SetPlane(p,a,b,c,d)          (p)->lpVtbl->SetPlane(p,a,b,c,d)
844 #define IDirect3DRMViewport_GetCamera(p,a)               (p)->lpVtbl->GetCamera(p,a)
845 #define IDirect3DRMViewport_GetDevice(p,a)               (p)->lpVtbl->GetDevice(p,a)
846 #define IDirect3DRMViewport_GetPlane(p,a,b,c,d)          (p)->lpVtbl->GetPlane(p,a,b,c,d)
847 #define IDirect3DRMViewport_Pick(p,a,b,c)                (p)->lpVtbl->Pick(p,a,b,c)
848 #define IDirect3DRMViewport_GetUniformScaling(p)         (p)->lpVtbl->GetUniformScaling(p)
849 #define IDirect3DRMViewport_GetX(p)                      (p)->lpVtbl->GetX(p)
850 #define IDirect3DRMViewport_GetY(p)                      (p)->lpVtbl->GetY(p)
851 #define IDirect3DRMViewport_GetWidth(p)                  (p)->lpVtbl->GetWidth(p)
852 #define IDirect3DRMViewport_GetHeight(p)                 (p)->lpVtbl->GetHeight(p)
853 #define IDirect3DRMViewport_GetField(p)                  (p)->lpVtbl->GetField(p)
854 #define IDirect3DRMViewport_GetBack(p)                   (p)->lpVtbl->GetBack(p)
855 #define IDirect3DRMViewport_GetFront(p)                  (p)->lpVtbl->GetFront(p)
856 #define IDirect3DRMViewport_GetProjection(p)             (p)->lpVtbl->GetProjection(p)
857 #define IDirect3DRMViewport_GetDirect3DViewport(p,a)     (p)->lpVtbl->GetDirect3DViewport(p,a)
858 #else
859 /*** IUnknown methods ***/
860 #define IDirect3DRMViewport_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
861 #define IDirect3DRMViewport_AddRef(p)                    (p)->AddRef()
862 #define IDirect3DRMViewport_Release(p)                   (p)->Release()
863 /*** IDirect3DRMObject methods ***/
864 #define IDirect3DRMViewport_Clone(p,a,b,c)               (p)->Clone(a,b,c)
865 #define IDirect3DRMViewport_AddDestroyCallback(p,a,b)    (p)->AddDestroyCallback(a,b)
866 #define IDirect3DRMViewport_DeleteDestroyCallback(p,a,b) (p)->DeleteDestroyCallback(a,b)
867 #define IDirect3DRMViewport_SetAppData(p,a)              (p)->SetAppData(a)
868 #define IDirect3DRMViewport_GetAppData(p)                (p)->GetAppData()
869 #define IDirect3DRMViewport_SetName(p,a)                 (p)->SetName(a)
870 #define IDirect3DRMViewport_GetName(p,a,b)               (p)->GetName(a,b)
871 #define IDirect3DRMViewport_GetClassName(p,a,b)          (p)->GetClassName(a,b)
872 /*** IDirect3DRMViewport methods ***/
873 #define IDirect3DRMViewport_Init(p,a,b,c,d)              (p)->Init(a,b,c,d)
874 #define IDirect3DRMViewport_Clear(p)                     (p)->Clear()
875 #define IDirect3DRMViewport_Render(p,a)                  (p)->Render(a)
876 #define IDirect3DRMViewport_SetFront(p,a)                (p)->SetFront(a)
877 #define IDirect3DRMViewport_SetBack(p,a)                 (p)->SetBack(a)
878 #define IDirect3DRMViewport_SetField(p,a)                (p)->SetField(a)
879 #define IDirect3DRMViewport_SetUniformScaling(p,a)       (p)->SetUniformScaling(a)
880 #define IDirect3DRMViewport_SetCamera(p,a)               (p)->SetCamera(a)
881 #define IDirect3DRMViewport_SetProjection(p,a)           (p)->SetProjection(a)
882 #define IDirect3DRMViewport_Transform(p,a,b)             (p)->Transform(a,b)
883 #define IDirect3DRMViewport_InverseTransform(p,a,b)      (p)->InverseTransform(a,b)
884 #define IDirect3DRMViewport_Configure(p,a,b,c,d)         (p)->Configure(a,b,c,d)
885 #define IDirect3DRMViewport_ForceUpdate(p,a,b,c,d)       (p)->ForceUpdate(a,b,c,d)
886 #define IDirect3DRMViewport_SetPlane(p,a,b,c,d)          (p)->SetPlane(a,b,c,d)
887 #define IDirect3DRMViewport_GetCamera(p,a)               (p)->GetCamera(a)
888 #define IDirect3DRMViewport_GetDevice(p,a)               (p)->GetDevice(a)
889 #define IDirect3DRMViewport_GetPlane(p,a,b,c,d)          (p)->GetPlane(a,b,c,d)
890 #define IDirect3DRMViewport_Pick(p,a,b,c)                (p)->Pick(a,b,c)
891 #define IDirect3DRMViewport_GetUniformScaling(p)         (p)->GetUniformScaling()
892 #define IDirect3DRMViewport_GetX(p)                      (p)->GetX()
893 #define IDirect3DRMViewport_GetY(p)                      (p)->GetY()
894 #define IDirect3DRMViewport_GetWidth(p)                  (p)->GetWidth()
895 #define IDirect3DRMViewport_GetHeight(p)                 (p)->GetHeight()
896 #define IDirect3DRMViewport_GetField(p)                  (p)->GetField()
897 #define IDirect3DRMViewport_GetBack(p)                   (p)->GetBack()
898 #define IDirect3DRMViewport_GetFront(p)                  (p)->GetFront()
899 #define IDirect3DRMViewport_GetProjection(p)             (p)->GetProjection()
900 #define IDirect3DRMViewport_GetDirect3DViewport(p,a)     (p)->GetDirect3DViewport(a)
901 #endif
902
903 /*****************************************************************************
904  * IDirect3DRMViewport2 interface
905  */
906 #define INTERFACE IDirect3DRMViewport2
907 DECLARE_INTERFACE_(IDirect3DRMViewport2,IDirect3DRMObject)
908 {
909     /*** IUnknown methods ***/
910     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
911     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
912     STDMETHOD_(ULONG,Release)(THIS) PURE;
913     /*** IDirect3DRMObject methods ***/
914     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
915     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
916     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
917     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
918     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
919     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
920     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
921     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
922     /*** IDirect3DRMViewport2 methods ***/
923     STDMETHOD(Init) (THIS_ LPDIRECT3DRMDEVICE3 dev, LPDIRECT3DRMFRAME3 camera, DWORD xpos, DWORD ypos,
924         DWORD width, DWORD height) PURE;
925     STDMETHOD(Clear)(THIS_ DWORD flags) PURE;
926     STDMETHOD(Render)(THIS_ LPDIRECT3DRMFRAME3) PURE;
927     STDMETHOD(SetFront)(THIS_ D3DVALUE) PURE;
928     STDMETHOD(SetBack)(THIS_ D3DVALUE) PURE;
929     STDMETHOD(SetField)(THIS_ D3DVALUE) PURE;
930     STDMETHOD(SetUniformScaling)(THIS_ BOOL) PURE;
931     STDMETHOD(SetCamera)(THIS_ LPDIRECT3DRMFRAME3) PURE;
932     STDMETHOD(SetProjection)(THIS_ D3DRMPROJECTIONTYPE) PURE;
933     STDMETHOD(Transform)(THIS_ D3DRMVECTOR4D *d, D3DVECTOR *s) PURE;
934     STDMETHOD(InverseTransform)(THIS_ D3DVECTOR *d, D3DRMVECTOR4D *s) PURE;
935     STDMETHOD(Configure)(THIS_ LONG x, LONG y, DWORD width, DWORD height) PURE;
936     STDMETHOD(ForceUpdate)(THIS_ DWORD x1, DWORD y1, DWORD x2, DWORD y2) PURE;
937     STDMETHOD(SetPlane)(THIS_ D3DVALUE left, D3DVALUE right, D3DVALUE bottom, D3DVALUE top) PURE;
938     STDMETHOD(GetCamera)(THIS_ LPDIRECT3DRMFRAME3 *) PURE;
939     STDMETHOD(GetDevice)(THIS_ LPDIRECT3DRMDEVICE3 *) PURE;
940     STDMETHOD(GetPlane)(THIS_ D3DVALUE *left, D3DVALUE *right, D3DVALUE *bottom, D3DVALUE *top) PURE;
941     STDMETHOD(Pick)(THIS_ LONG x, LONG y, LPDIRECT3DRMPICKEDARRAY *return_visuals) PURE;
942     STDMETHOD_(BOOL, GetUniformScaling)(THIS) PURE;
943     STDMETHOD_(LONG, GetX)(THIS) PURE;
944     STDMETHOD_(LONG, GetY)(THIS) PURE;
945     STDMETHOD_(DWORD, GetWidth)(THIS) PURE;
946     STDMETHOD_(DWORD, GetHeight)(THIS) PURE;
947     STDMETHOD_(D3DVALUE, GetField)(THIS) PURE;
948     STDMETHOD_(D3DVALUE, GetBack)(THIS) PURE;
949     STDMETHOD_(D3DVALUE, GetFront)(THIS) PURE;
950     STDMETHOD_(D3DRMPROJECTIONTYPE, GetProjection)(THIS) PURE;
951     STDMETHOD(GetDirect3DViewport)(THIS_ LPDIRECT3DVIEWPORT *) PURE;
952     STDMETHOD(TransformVectors)(THIS_ DWORD NumVectors, LPD3DRMVECTOR4D pDstVectors,
953         LPD3DVECTOR pSrcVectors) PURE;
954     STDMETHOD(InverseTransformVectors)(THIS_ DWORD NumVectors, LPD3DVECTOR pDstVectors,
955         LPD3DRMVECTOR4D pSrcVectors) PURE;
956 };
957 #undef INTERFACE
958
959 #if !defined(__cplusplus) || defined(CINTERFACE)
960 /*** IUnknown methods ***/
961 #define IDirect3DRMViewport2_QueryInterface(p,a,b)            (p)->lpVtbl->QueryInterface(p,a,b)
962 #define IDirect3DRMViewport2_AddRef(p)                        (p)->lpVtbl->AddRef(p)
963 #define IDirect3DRMViewport2_Release(p)                       (p)->lpVtbl->Release(p)
964 /*** IDirect3DRMObject methods ***/
965 #define IDirect3DRMViewport_2Clone(p,a,b,c)                   (p)->lpVtbl->Clone(p,a,b,c)
966 #define IDirect3DRMViewport2_AddDestroyCallback(p,a,b)        (p)->lpVtbl->AddDestroyCallback(p,a,b)
967 #define IDirect3DRMViewport2_DeleteDestroyCallback(p,a,b)     (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
968 #define IDirect3DRMViewport2_SetAppData(p,a)                  (p)->lpVtbl->SetAppData(p,a)
969 #define IDirect3DRMViewport2_GetAppData(p)                    (p)->lpVtbl->GetAppData(p)
970 #define IDirect3DRMViewport2_SetName(p,a)                     (p)->lpVtbl->SetName(p,a)
971 #define IDirect3DRMViewport2_GetName(p,a,b)                   (p)->lpVtbl->GetName(p,a,b)
972 #define IDirect3DRMViewport2_GetClassName(p,a,b)              (p)->lpVtbl->GetClassName(p,a,b)
973 /*** IDirect3DRMViewport2 methods ***/
974 #define IDirect3DRMViewport2_Init(p,a,b,c,d,e,f)              (p)->lpVtbl->Init(p,a,b,c,d,e,f)
975 #define IDirect3DRMViewport2_Clear(p,a)                       (p)->lpVtbl->Clear(p,a)
976 #define IDirect3DRMViewport2_Render(p,a)                      (p)->lpVtbl->Render(p,a)
977 #define IDirect3DRMViewport2_SetFront(p,a)                    (p)->lpVtbl->SetFront(p,a)
978 #define IDirect3DRMViewport2_SetBack(p,a)                     (p)->lpVtbl->SetBack(p,a)
979 #define IDirect3DRMViewport2_SetField(p,a)                    (p)->lpVtbl->SetField(p,a)
980 #define IDirect3DRMViewport2_SetUniformScaling(p,a)           (p)->lpVtbl->SetUniformScaling(p,a)
981 #define IDirect3DRMViewport2_SetCamera(p,a)                   (p)->lpVtbl->SetCamera(p,a)
982 #define IDirect3DRMViewport2_SetProjection(p,a)               (p)->lpVtbl->SetProjection(p,a)
983 #define IDirect3DRMViewport2_Transform(p,a,b)                 (p)->lpVtbl->Transform(p,a,b)
984 #define IDirect3DRMViewport2_InverseTransform(p,a,b)          (p)->lpVtbl->InverseTransform(p,a,b)
985 #define IDirect3DRMViewport2_Configure(p,a,b,c,d)             (p)->lpVtbl->Configure(p,a,b,c,d)
986 #define IDirect3DRMViewport2_ForceUpdate(p,a,b,c,d)           (p)->lpVtbl->ForceUpdate(p,a,b,c,d)
987 #define IDirect3DRMViewport2_SetPlane(p,a,b,c,d)              (p)->lpVtbl->SetPlane(p,a,b,c,d)
988 #define IDirect3DRMViewport2_GetCamera(p,a)                   (p)->lpVtbl->GetCamera(p,a)
989 #define IDirect3DRMViewport2_GetDevice(p,a)                   (p)->lpVtbl->GetDevice(p,a)
990 #define IDirect3DRMViewport2_GetPlane(p,a,b,c,d)              (p)->lpVtbl->GetPlane(p,a,b,c,d)
991 #define IDirect3DRMViewport2_Pick(p,a,b,c)                    (p)->lpVtbl->Pick(p,a,b,c)
992 #define IDirect3DRMViewport2_GetUniformScaling(p)             (p)->lpVtbl->GetUniformScaling(p)
993 #define IDirect3DRMViewport2_GetX(p)                          (p)->lpVtbl->GetX(p)
994 #define IDirect3DRMViewport2_GetY(p)                          (p)->lpVtbl->GetY(p)
995 #define IDirect3DRMViewport2_GetWidth(p)                      (p)->lpVtbl->GetWidth(p)
996 #define IDirect3DRMViewport2_GetHeight(p)                     (p)->lpVtbl->GetHeight(p)
997 #define IDirect3DRMViewport2_GetField(p)                      (p)->lpVtbl->GetField(p)
998 #define IDirect3DRMViewport2_GetBack(p)                       (p)->lpVtbl->GetBack(p)
999 #define IDirect3DRMViewport2_GetFront(p)                      (p)->lpVtbl->GetFront(p)
1000 #define IDirect3DRMViewport2_GetProjection(p)                 (p)->lpVtbl->GetProjection(p)
1001 #define IDirect3DRMViewport2_GetDirect3DViewport(p,a)         (p)->lpVtbl->GetDirect3DViewport(p,a)
1002 #define IDirect3DRMViewport2_TransformVectors(p,a,b,c)        (p)->lpVtbl->TransformVectors(p,a,b,c)
1003 #define IDirect3DRMViewport2_InverseTransformVectors(p,a,b,c) (p)->lpVtbl->InverseTransformVectors(p,a,b,c)
1004 #else
1005 /*** IUnknown methods ***/
1006 #define IDirect3DRMViewport2_QueryInterface(p,a,b)            (p)->QueryInterface(a,b)
1007 #define IDirect3DRMViewport2_AddRef(p)                        (p)->AddRef()
1008 #define IDirect3DRMViewport2_Release(p)                       (p)->Release()
1009 /*** IDirect3DRMObject methods ***/
1010 #define IDirect3DRMViewport2_Clone(p,a,b,c)                   (p)->Clone(a,b,c)
1011 #define IDirect3DRMViewport2_AddDestroyCallback(p,a,b)        (p)->AddDestroyCallback(a,b)
1012 #define IDirect3DRMViewport2_DeleteDestroyCallback(p,a,b)     (p)->DeleteDestroyCallback(a,b)
1013 #define IDirect3DRMViewport2_SetAppData(p,a)                  (p)->SetAppData(a)
1014 #define IDirect3DRMViewport2_GetAppData(p)                    (p)->GetAppData()
1015 #define IDirect3DRMViewport2_SetName(p,a)                     (p)->SetName(a)
1016 #define IDirect3DRMViewport2_GetName(p,a,b)                   (p)->GetName(a,b)
1017 #define IDirect3DRMViewport2_GetClassName(p,a,b)              (p)->GetClassName(a,b)
1018 /*** IDirect3DRMViewport2 methods ***/
1019 #define IDirect3DRMViewport2_Init(p,a,b,c,d)                  (p)->Init(a,b,c,d)
1020 #define IDirect3DRMViewport2_Clear(p)                         (p)->Clear()
1021 #define IDirect3DRMViewport2_Render(p,a)                      (p)->Render(a)
1022 #define IDirect3DRMViewport2_SetFront(p,a)                    (p)->SetFront(a)
1023 #define IDirect3DRMViewport2_SetBack(p,a)                     (p)->SetBack(a)
1024 #define IDirect3DRMViewport2_SetField(p,a)                    (p)->SetField(a)
1025 #define IDirect3DRMViewport2_SetUniformScaling(p,a)           (p)->SetUniformScaling(a)
1026 #define IDirect3DRMViewport2_SetCamera(p,a)                   (p)->SetCamera(a)
1027 #define IDirect3DRMViewport2_SetProjection(p,a)               (p)->SetProjection(a)
1028 #define IDirect3DRMViewport2_Transform(p,a,b)                 (p)->Transform(a,b)
1029 #define IDirect3DRMViewport2_InverseTransform(p,a,b)          (p)->InverseTransform(a,b)
1030 #define IDirect3DRMViewport2_Configure(p,a,b,c,d)             (p)->Configure(a,b,c,d)
1031 #define IDirect3DRMViewport2_ForceUpdate(p,a,b,c,d)           (p)->ForceUpdate(a,b,c,d)
1032 #define IDirect3DRMViewport2_SetPlane(p,a,b,c,d)              (p)->SetPlane(a,b,c,d)
1033 #define IDirect3DRMViewport2_GetCamera(p,a)                   (p)->GetCamera(a)
1034 #define IDirect3DRMViewport2_GetDevice(p,a)                   (p)->GetDevice(a)
1035 #define IDirect3DRMViewport2_GetPlane(p,a,b,c,d)              (p)->GetPlane(a,b,c,d)
1036 #define IDirect3DRMViewport2_Pick(p,a,b,c)                    (p)->Pick(a,b,c)
1037 #define IDirect3DRMViewport2_GetUniformScaling(p)             (p)->GetUniformScaling()
1038 #define IDirect3DRMViewport2_GetX(p)                          (p)->GetX()
1039 #define IDirect3DRMViewport2_GetY(p)                          (p)->GetY()
1040 #define IDirect3DRMViewport2_GetWidth(p)                      (p)->GetWidth()
1041 #define IDirect3DRMViewport2_GetHeight(p)                     (p)->GetHeight()
1042 #define IDirect3DRMViewport2_GetField(p)                      (p)->GetField()
1043 #define IDirect3DRMViewport2_GetBack(p)                       (p)->GetBack()
1044 #define IDirect3DRMViewport2_GetFront(p)                      (p)->GetFront()
1045 #define IDirect3DRMViewport2_GetProjection(p)                 (p)->GetProjection()
1046 #define IDirect3DRMViewport2_GetDirect3DViewport(p,a)         (p)->GetDirect3DViewport(a)
1047 #define IDirect3DRMViewport2_TransformVectors(p,a,b,c)        (p)->TransformVectors(a,b,c)
1048 #define IDirect3DRMViewport2_InverseTransformVectors(p,a,b,c) (p)->InverseTransformVectors(a,b,c)
1049 #endif
1050
1051 /*****************************************************************************
1052  * IDirect3DRMFrame interface
1053  */
1054 #define INTERFACE IDirect3DRMFrame
1055 DECLARE_INTERFACE_(IDirect3DRMFrame,IDirect3DRMVisual)
1056 {
1057     /*** IUnknown methods ***/
1058     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
1059     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
1060     STDMETHOD_(ULONG,Release)(THIS) PURE;
1061     /*** IDirect3DRMObject methods ***/
1062     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
1063     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
1064     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
1065     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
1066     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
1067     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
1068     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
1069     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
1070     /*** IDirect3DRMFrame methods ***/
1071     STDMETHOD(AddChild)(THIS_ LPDIRECT3DRMFRAME child) PURE;
1072     STDMETHOD(AddLight)(THIS_ LPDIRECT3DRMLIGHT) PURE;
1073     STDMETHOD(AddMoveCallback)(THIS_ D3DRMFRAMEMOVECALLBACK, VOID *arg) PURE;
1074     STDMETHOD(AddTransform)(THIS_ D3DRMCOMBINETYPE, D3DRMMATRIX4D) PURE;
1075     STDMETHOD(AddTranslation)(THIS_ D3DRMCOMBINETYPE, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
1076     STDMETHOD(AddScale)(THIS_ D3DRMCOMBINETYPE, D3DVALUE sx, D3DVALUE sy, D3DVALUE sz) PURE;
1077     STDMETHOD(AddRotation)(THIS_ D3DRMCOMBINETYPE, D3DVALUE x, D3DVALUE y, D3DVALUE z, D3DVALUE theta) PURE;
1078     STDMETHOD(AddVisual)(THIS_ LPDIRECT3DRMVISUAL) PURE;
1079     STDMETHOD(GetChildren)(THIS_ LPDIRECT3DRMFRAMEARRAY *children) PURE;
1080     STDMETHOD_(D3DCOLOR, GetColor)(THIS) PURE;
1081     STDMETHOD(GetLights)(THIS_ LPDIRECT3DRMLIGHTARRAY *lights) PURE;
1082     STDMETHOD_(D3DRMMATERIALMODE, GetMaterialMode)(THIS) PURE;
1083     STDMETHOD(GetParent)(THIS_ LPDIRECT3DRMFRAME *) PURE;
1084     STDMETHOD(GetPosition)(THIS_ LPDIRECT3DRMFRAME reference, LPD3DVECTOR return_position) PURE;
1085     STDMETHOD(GetRotation)(THIS_ LPDIRECT3DRMFRAME reference, LPD3DVECTOR axis, LPD3DVALUE return_theta) PURE;
1086     STDMETHOD(GetScene)(THIS_ LPDIRECT3DRMFRAME *) PURE;
1087     STDMETHOD_(D3DRMSORTMODE, GetSortMode)(THIS) PURE;
1088     STDMETHOD(GetTexture)(THIS_ LPDIRECT3DRMTEXTURE *) PURE;
1089     STDMETHOD(GetTransform)(THIS_ D3DRMMATRIX4D return_matrix) PURE;
1090     STDMETHOD(GetVelocity)(THIS_ LPDIRECT3DRMFRAME reference, LPD3DVECTOR return_velocity, BOOL with_rotation) PURE;
1091     STDMETHOD(GetOrientation)(THIS_ LPDIRECT3DRMFRAME reference, LPD3DVECTOR dir, LPD3DVECTOR up) PURE;
1092     STDMETHOD(GetVisuals)(THIS_ LPDIRECT3DRMVISUALARRAY *visuals) PURE;
1093     STDMETHOD(GetTextureTopology)(THIS_ BOOL *wrap_u, BOOL *wrap_v) PURE;
1094     STDMETHOD(InverseTransform)(THIS_ D3DVECTOR *d, D3DVECTOR *s) PURE;
1095     STDMETHOD(Load)(THIS_ LPVOID filename, LPVOID name, D3DRMLOADOPTIONS loadflags, D3DRMLOADTEXTURECALLBACK,
1096         LPVOID pArg)PURE;
1097     STDMETHOD(LookAt)(THIS_ LPDIRECT3DRMFRAME target, LPDIRECT3DRMFRAME reference, D3DRMFRAMECONSTRAINT) PURE;
1098     STDMETHOD(Move)(THIS_ D3DVALUE delta) PURE;
1099     STDMETHOD(DeleteChild)(THIS_ LPDIRECT3DRMFRAME) PURE;
1100     STDMETHOD(DeleteLight)(THIS_ LPDIRECT3DRMLIGHT) PURE;
1101     STDMETHOD(DeleteMoveCallback)(THIS_ D3DRMFRAMEMOVECALLBACK, VOID *arg) PURE;
1102     STDMETHOD(DeleteVisual)(THIS_ LPDIRECT3DRMVISUAL) PURE;
1103     STDMETHOD_(D3DCOLOR, GetSceneBackground)(THIS) PURE;
1104     STDMETHOD(GetSceneBackgroundDepth)(THIS_ LPDIRECTDRAWSURFACE *) PURE;
1105     STDMETHOD_(D3DCOLOR, GetSceneFogColor)(THIS) PURE;
1106     STDMETHOD_(BOOL, GetSceneFogEnable)(THIS) PURE;
1107     STDMETHOD_(D3DRMFOGMODE, GetSceneFogMode)(THIS) PURE;
1108     STDMETHOD(GetSceneFogParams)(THIS_ D3DVALUE *return_start, D3DVALUE *return_end, D3DVALUE *return_density) PURE;
1109     STDMETHOD(SetSceneBackground)(THIS_ D3DCOLOR) PURE;
1110     STDMETHOD(SetSceneBackgroundRGB)(THIS_ D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE;
1111     STDMETHOD(SetSceneBackgroundDepth)(THIS_ LPDIRECTDRAWSURFACE) PURE;
1112     STDMETHOD(SetSceneBackgroundImage)(THIS_ LPDIRECT3DRMTEXTURE) PURE;
1113     STDMETHOD(SetSceneFogEnable)(THIS_ BOOL) PURE;
1114     STDMETHOD(SetSceneFogColor)(THIS_ D3DCOLOR) PURE;
1115     STDMETHOD(SetSceneFogMode)(THIS_ D3DRMFOGMODE) PURE;
1116     STDMETHOD(SetSceneFogParams)(THIS_ D3DVALUE start, D3DVALUE end, D3DVALUE density) PURE;
1117     STDMETHOD(SetColor)(THIS_ D3DCOLOR) PURE;
1118     STDMETHOD(SetColorRGB)(THIS_ D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE;
1119     STDMETHOD_(D3DRMZBUFFERMODE, GetZbufferMode)(THIS) PURE;
1120     STDMETHOD(SetMaterialMode)(THIS_ D3DRMMATERIALMODE) PURE;
1121     STDMETHOD(SetOrientation)(THIS_ LPDIRECT3DRMFRAME reference, D3DVALUE dx, D3DVALUE dy, D3DVALUE dz,
1122         D3DVALUE ux, D3DVALUE uy, D3DVALUE uz) PURE;
1123     STDMETHOD(SetPosition)(THIS_ LPDIRECT3DRMFRAME reference, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
1124     STDMETHOD(SetRotation)(THIS_ LPDIRECT3DRMFRAME reference, D3DVALUE x, D3DVALUE y, D3DVALUE z, D3DVALUE theta) PURE;
1125     STDMETHOD(SetSortMode)(THIS_ D3DRMSORTMODE) PURE;
1126     STDMETHOD(SetTexture)(THIS_ LPDIRECT3DRMTEXTURE) PURE;
1127     STDMETHOD(SetTextureTopology)(THIS_ BOOL wrap_u, BOOL wrap_v) PURE;
1128     STDMETHOD(SetVelocity)(THIS_ LPDIRECT3DRMFRAME reference, D3DVALUE x, D3DVALUE y, D3DVALUE z, BOOL with_rotation) PURE;
1129     STDMETHOD(SetZbufferMode)(THIS_ D3DRMZBUFFERMODE) PURE;
1130     STDMETHOD(Transform)(THIS_ D3DVECTOR *d, D3DVECTOR *s) PURE;
1131 };
1132 #undef INTERFACE
1133
1134 #if !defined(__cplusplus) || defined(CINTERFACE)
1135 /*** IUnknown methods ***/
1136 #define IDirect3DRMFrame_QueryInterface(p,a,b)            (p)->lpVtbl->QueryInterface(p,a,b)
1137 #define IDirect3DRMFrame_AddRef(p)                        (p)->lpVtbl->AddRef(p)
1138 #define IDirect3DRMFrame_Release(p)                       (p)->lpVtbl->Release(p)
1139 /*** IDirect3DRMObject methods ***/
1140 #define IDirect3DRMFrame_Clone(p,a,b,c)                   (p)->lpVtbl->Clone(p,a,b,c)
1141 #define IDirect3DRMFrame_AddDestroyCallback(p,a,b)        (p)->lpVtbl->AddDestroyCallback(p,a,b)
1142 #define IDirect3DRMFrame_DeleteDestroyCallback(p,a,b)     (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
1143 #define IDirect3DRMFrame_SetAppData(p,a)                  (p)->lpVtbl->SetAppData(p,a)
1144 #define IDirect3DRMFrame_GetAppData(p)                    (p)->lpVtbl->GetAppData(p)
1145 #define IDirect3DRMFrame_SetName(p,a)                     (p)->lpVtbl->SetName(p,a)
1146 #define IDirect3DRMFrame_GetName(p,a,b)                   (p)->lpVtbl->GetName(p,a,b)
1147 #define IDirect3DRMFrame_GetClassName(p,a,b)              (p)->lpVtbl->GetClassName(p,a,b)
1148 /*** IDirect3DRMFrame methods ***/
1149 #define IDirect3DRMFrame_AddChild(p,a)                    (p)->lpVtbl->AddChild(p,a)
1150 #define IDirect3DRMFrame_AddLight(p,a)                    (p)->lpVtbl->AddLight(p,a)
1151 #define IDirect3DRMFrame_AddMoveCallback(p,a,b)           (p)->lpVtbl->AddMoveCallback(p,a,b)
1152 #define IDirect3DRMFrame_AddTransform(p,a,b)              (p)->lpVtbl->AddTransform(p,a,b)
1153 #define IDirect3DRMFrame_AddTranslation(p,a,b,c,d)        (p)->lpVtbl->AddTranslation(p,a,b,c,d)
1154 #define IDirect3DRMFrame_AddScale(p,a,b,c,d)              (p)->lpVtbl->AddScale(p,a,b,c,d)
1155 #define IDirect3DRMFrame_AddRotation(p,a,b,c,d,e)         (p)->lpVtbl->AddRotation(p,a,b,c,d,e)
1156 #define IDirect3DRMFrame_AddVisual(p,a)                   (p)->lpVtbl->AddVisual(p,a)
1157 #define IDirect3DRMFrame_GetChildren(p,a)                 (p)->lpVtbl->GetChildren(p,a)
1158 #define IDirect3DRMFrame_GetColor(p)                      (p)->lpVtbl->GetColor(p)
1159 #define IDirect3DRMFrame_GetLights(p,a)                   (p)->lpVtbl->GetLights(p,a)
1160 #define IDirect3DRMFrame_GetMaterialMode(p)               (p)->lpVtbl->GetMaterialMode(p)
1161 #define IDirect3DRMFrame_GetParent(p,a)                   (p)->lpVtbl->GetParent(p,a)
1162 #define IDirect3DRMFrame_GetPosition(p,a,b)               (p)->lpVtbl->GetPosition(p,a,b)
1163 #define IDirect3DRMFrame_GetRotation(p,a,b,c)             (p)->lpVtbl->GetRotation(p,a,b,c)
1164 #define IDirect3DRMFrame_GetScene(p,a)                    (p)->lpVtbl->GetScene(p,a)
1165 #define IDirect3DRMFrame_GetSortMode(p)                   (p)->lpVtbl->GetSortMode(p)
1166 #define IDirect3DRMFrame_GetTexture(p,a)                  (p)->lpVtbl->GetTexture(p,a)
1167 #define IDirect3DRMFrame_GetTransform(p,a)                (p)->lpVtbl->GetTransform(p,a)
1168 #define IDirect3DRMFrame_GetVelocity(p,a,b,c)             (p)->lpVtbl->GetVelocity(p,a,b,c)
1169 #define IDirect3DRMFrame_GetOrientation(p,a,b,c)          (p)->lpVtbl->GetOrientation(p,a,b,c)
1170 #define IDirect3DRMFrame_GetVisuals(p,a)                  (p)->lpVtbl->GetVisuals(p,a)
1171 #define IDirect3DRMFrame_GetTextureTopology(p,a,b)        (p)->lpVtbl->GetTextureTopology(p,a,b)
1172 #define IDirect3DRMFrame_InverseTransform(p,a,b)          (p)->lpVtbl->InverseTransform(p,a,b)
1173 #define IDirect3DRMFrame_Load(p,a,b,c,d,e)                (p)->lpVtbl->Load(p,a,b,c,d,e)
1174 #define IDirect3DRMFrame_LookAt(p,a,b,c)                  (p)->lpVtbl->LookAt(p,a,b,c)
1175 #define IDirect3DRMFrame_Move(p,a)                        (p)->lpVtbl->Move(p,a)
1176 #define IDirect3DRMFrame_DeleteChild(p,a)                 (p)->lpVtbl->DeleteChild(p,a)
1177 #define IDirect3DRMFrame_DeleteLight(p,a)                 (p)->lpVtbl->DeleteLight(p,a)
1178 #define IDirect3DRMFrame_DeleteMoveCallback(p,a,b)        (p)->lpVtbl->DeleteMoveCallback(p,a,b)
1179 #define IDirect3DRMFrame_DeleteVisual(p,a)                (p)->lpVtbl->DeleteVisual(p,a)
1180 #define IDirect3DRMFrame_GetSceneBackground(p)            (p)->lpVtbl->GetSceneBackground(p)
1181 #define IDirect3DRMFrame_GetSceneBackgroundDepth(p,a)     (p)->lpVtbl->GetSceneBackgroundDepth(p,a)
1182 #define IDirect3DRMFrame_GetSceneFogColor(p)              (p)->lpVtbl->GetSceneFogColor(p)
1183 #define IDirect3DRMFrame_GetSceneFogEnable(p)             (p)->lpVtbl->GetSceneFogEnable(p)
1184 #define IDirect3DRMFrame_GetSceneFogMode(p)               (p)->lpVtbl->GetSceneFogMode(p)
1185 #define IDirect3DRMFrame_GetSceneFogParams(p,a,b,c)       (p)->lpVtbl->GetSceneFogParams(p,a,b,c)
1186 #define IDirect3DRMFrame_SetSceneBackground(p,a)          (p)->lpVtbl->SetSceneBackground(p,a)
1187 #define IDirect3DRMFrame_SetSceneBackgroundRGB(p,a,b,c)   (p)->lpVtbl->SetSceneBackgroundRGB(p,a,b,c)
1188 #define IDirect3DRMFrame_SetSceneBackgroundDepth(p,a)     (p)->lpVtbl->SetSceneBackgroundDepth(p,a)
1189 #define IDirect3DRMFrame_SetSceneBackgroundImage(p,a)     (p)->lpVtbl->SetSceneBackgroundImage(p,a)
1190 #define IDirect3DRMFrame_SetSceneFogEnable(p,a)           (p)->lpVtbl->SetSceneFogEnable(p,a)
1191 #define IDirect3DRMFrame_SetSceneFogColor(p,a)            (p)->lpVtbl->SetSceneFogColor(p,a)
1192 #define IDirect3DRMFrame_SetSceneFogMode(p,a)             (p)->lpVtbl->SetSceneFogMode(p,a)
1193 #define IDirect3DRMFrame_SetSceneFogParams(p,a,b,c)       (p)->lpVtbl->SetSceneFogParams(p,a,b,c)
1194 #define IDirect3DRMFrame_SetColor(p,a)                    (p)->lpVtbl->SetColor(p,a)
1195 #define IDirect3DRMFrame_SetColorRGB(p,a,b,c)             (p)->lpVtbl->SetColorRGB(p,a,b,c)
1196 #define IDirect3DRMFrame_GetZbufferMode(p)                (p)->lpVtbl->GetZbufferMode(p)
1197 #define IDirect3DRMFrame_SetMaterialMode(p,a)             (p)->lpVtbl->SetMaterialMode(p,a)
1198 #define IDirect3DRMFrame_SetOrientation(p,a,b,c,d,e,f,g)  (p)->lpVtbl->SetOrientation(p,a,b,c,d,e,f,g)
1199 #define IDirect3DRMFrame_SetPosition(p,a,b,c,d)           (p)->lpVtbl->SetPosition(p,a,b,c,d)
1200 #define IDirect3DRMFrame_SetRotation(p,a,b,c,d,e)         (p)->lpVtbl->SetRotation(p,a,b,c,d,e)
1201 #define IDirect3DRMFrame_SetSortMode(p,a)                 (p)->lpVtbl->SetSortMode(p,a)
1202 #define IDirect3DRMFrame_SetTexture(p,a)                  (p)->lpVtbl->SetTexture(p,a)
1203 #define IDirect3DRMFrame_SetTextureTopology(p,a,b)        (p)->lpVtbl->SetTextureTopology(p,a,b)
1204 #define IDirect3DRMFrame_SetVelocity(p,a,b,c,d,e)         (p)->lpVtbl->SetVelocity(p,a,b,c,d,e)
1205 #define IDirect3DRMFrame_SetZbufferMode(p,a)              (p)->lpVtbl->SetZbufferMode(p,a)
1206 #define IDirect3DRMFrame_Transform(p,a,b)                 (p)->lpVtbl->Transform(p,a,b)
1207 #else
1208 /*** IUnknown methods ***/
1209 #define IDirect3DRMFrame_QueryInterface(p,a,b)            (p)->QueryInterface(a,b)
1210 #define IDirect3DRMFrame_AddRef(p)                        (p)->AddRef()
1211 #define IDirect3DRMFrame_Release(p)                       (p)->Release()
1212 /*** IDirect3DRMObject methods ***/
1213 #define IDirect3DRMFrame_Clone(p,a,b,c)                   (p)->Clone(a,b,c)
1214 #define IDirect3DRMFrame_AddDestroyCallback(p,a,b)        (p)->AddDestroyCallback(a,b)
1215 #define IDirect3DRMFrame_DeleteDestroyCallback(p,a,b)     (p)->DeleteDestroyCallback(a,b)
1216 #define IDirect3DRMFrame_SetAppData(p,a)                  (p)->SetAppData(a)
1217 #define IDirect3DRMFrame_GetAppData(p)                    (p)->GetAppData()
1218 #define IDirect3DRMFrame_SetName(p,a)                     (p)->SetName(a)
1219 #define IDirect3DRMFrame_GetName(p,a,b)                   (p)->GetName(a,b)
1220 #define IDirect3DRMFrame_GetClassName(p,a,b)              (p)->GetClassName(a,b)
1221 /*** IDirect3DRMFrame methods ***/
1222 #define IDirect3DRMFrame_AddChild(p,a)                    (p)->AddChild(a)
1223 #define IDirect3DRMFrame_AddLight(p,a)                    (p)->AddLight(a)
1224 #define IDirect3DRMFrame_AddMoveCallback(p,a,b)           (p)->AddMoveCallback(a,b)
1225 #define IDirect3DRMFrame_AddTransform(p,a,b)              (p)->AddTransform(a,b)
1226 #define IDirect3DRMFrame_AddTranslation(p,a,b,c,d)        (p)->AddTranslation(a,b,c,d)
1227 #define IDirect3DRMFrame_AddScale(p,a,b,c,d)              (p)->AddScale(a,b,c,d)
1228 #define IDirect3DRMFrame_AddRotation(p,a,b,c,d,e)         (p)->AddRotation(a,b,c,d,e)
1229 #define IDirect3DRMFrame_AddVisual(p,a)                   (p)->AddVisual(a)
1230 #define IDirect3DRMFrame_GetChildren(p,a)                 (p)->GetChildren(a)
1231 #define IDirect3DRMFrame_GetColor(p)                      (p)->GetColor()
1232 #define IDirect3DRMFrame_GetLights(p,a)                   (p)->GetLights(a)
1233 #define IDirect3DRMFrame_GetMaterialMode(p)               (p)->GetMaterialMode()
1234 #define IDirect3DRMFrame_GetParent(p,a)                   (p)->GetParent(a)
1235 #define IDirect3DRMFrame_GetPosition(p,a,b)               (p)->GetPosition(a,b)
1236 #define IDirect3DRMFrame_GetRotation(p,a,b,c)             (p)->GetRotation(a,b,c)
1237 #define IDirect3DRMFrame_GetScene(p,a)                    (p)->GetScene(a)
1238 #define IDirect3DRMFrame_GetSortMode(p)                   (p)->GetSortMode()
1239 #define IDirect3DRMFrame_GetTexture(p,a)                  (p)->GetTexture(a)
1240 #define IDirect3DRMFrame_GetTransform(p,a)                (p)->GetTransform(a)
1241 #define IDirect3DRMFrame_GetVelocity(p,a,b,c)             (p)->GetVelocity(a,b,c)
1242 #define IDirect3DRMFrame_GetOrientation(p,a,b,c)          (p)->GetOrientation(a,b,c)
1243 #define IDirect3DRMFrame_GetVisuals(p,a)                  (p)->GetVisuals(a)
1244 #define IDirect3DRMFrame_GetTextureTopology(p,a,b)        (p)->GetTextureTopology(a,b)
1245 #define IDirect3DRMFrame_InverseTransform(p,a,b)          (p)->InverseTransform(a,b)
1246 #define IDirect3DRMFrame_Load(p,a,b,c,d,e)                (p)->Load(a,b,c,d,e)
1247 #define IDirect3DRMFrame_LookAt(p,a,b,c)                  (p)->LookAt(a,b,c)
1248 #define IDirect3DRMFrame_Move(p,a)                        (p)->Move(a)
1249 #define IDirect3DRMFrame_DeleteChild(p,a)                 (p)->DeleteChild(a)
1250 #define IDirect3DRMFrame_DeleteLight(p,a)                 (p)->DeleteLight(a)
1251 #define IDirect3DRMFrame_DeleteMoveCallback(p,a,b)        (p)->DeleteMoveCallback(a,b)
1252 #define IDirect3DRMFrame_DeleteVisual(p,a)                (p)->DeleteVisual(a)
1253 #define IDirect3DRMFrame_GetSceneBackground(p)            (p)->GetSceneBackground()
1254 #define IDirect3DRMFrame_GetSceneBackgroundDepth(p,a)     (p)->GetSceneBackgroundDepth(a)
1255 #define IDirect3DRMFrame_GetSceneFogColor(p)              (p)->GetSceneFogColor()
1256 #define IDirect3DRMFrame_GetSceneFogEnable(p)             (p)->GetSceneFogEnable()
1257 #define IDirect3DRMFrame_GetSceneFogMode(p)               (p)->GetSceneFogMode()
1258 #define IDirect3DRMFrame_GetSceneFogParams(p,a,b,c)       (p)->GetSceneFogParams(a,b,c)
1259 #define IDirect3DRMFrame_SetSceneBackground(p,a)          (p)->SetSceneBackground(a)
1260 #define IDirect3DRMFrame_SetSceneBackgroundRGB(p,a,b,c)   (p)->SetSceneBackgroundRGB(a,b,c)
1261 #define IDirect3DRMFrame_SetSceneBackgroundDepth(p,a)     (p)->SetSceneBackgroundDepth(a)
1262 #define IDirect3DRMFrame_SetSceneBackgroundImage(p,a)     (p)->SetSceneBackgroundImage(a)
1263 #define IDirect3DRMFrame_SetSceneFogEnable(p,a)           (p)->SetSceneFogEnable(a)
1264 #define IDirect3DRMFrame_SetSceneFogColor(p,a)            (p)->SetSceneFogColor(a)
1265 #define IDirect3DRMFrame_SetSceneFogMode(p,a)             (p)->SetSceneFogMode(a)
1266 #define IDirect3DRMFrame_SetSceneFogParams(p,a,b,c)       (p)->SetSceneFogParams(a,b,c)
1267 #define IDirect3DRMFrame_SetColor(p,a)                    (p)->SetColor(a)
1268 #define IDirect3DRMFrame_SetColorRGB(p,a,b,c)             (p)->SetColorRGB(a,b,c)
1269 #define IDirect3DRMFrame_GetZbufferMode(p)                (p)->GetZbufferMode()
1270 #define IDirect3DRMFrame_SetMaterialMode(p,a)             (p)->SetMaterialMode(a)
1271 #define IDirect3DRMFrame_SetOrientation(p,a,b,c,d,e,f,g)  (p)->SetOrientation(a,b,c,d,e,f,g)
1272 #define IDirect3DRMFrame_SetPosition(p,a,b,c,d)           (p)->SetPosition(a,b,c,d)
1273 #define IDirect3DRMFrame_SetRotation(p,a,b,c,d,e)         (p)->SetRotation(a,b,c,d,e)
1274 #define IDirect3DRMFrame_SetSortMode(p,a)                 (p)->SetSortMode(a)
1275 #define IDirect3DRMFrame_SetTexture(p,a)                  (p)->SetTexture(a)
1276 #define IDirect3DRMFrame_SetTextureTopology(p,a,b)        (p)->SetTextureTopology(a,b)
1277 #define IDirect3DRMFrame_SetVelocity(p,a,b,c,d,e)         (p)->SetVelocity(a,b,c,d,e)
1278 #define IDirect3DRMFrame_SetZbufferMode(p,a)              (p)->SetZbufferMode(a)
1279 #define IDirect3DRMFrame_Transform(p,a,b)                 (p)->Transform(a,b)
1280 #endif
1281
1282 /*****************************************************************************
1283  * IDirect3DRMFrame2 interface
1284  */
1285 #define INTERFACE IDirect3DRMFrame2
1286 DECLARE_INTERFACE_(IDirect3DRMFrame2,IDirect3DRMFrame)
1287 {
1288     /*** IUnknown methods ***/
1289     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
1290     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
1291     STDMETHOD_(ULONG,Release)(THIS) PURE;
1292     /*** IDirect3DRMObject methods ***/
1293     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
1294     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
1295     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
1296     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
1297     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
1298     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
1299     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
1300     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
1301     /*** IDirect3DRMFrame methods ***/
1302     STDMETHOD(AddChild)(THIS_ LPDIRECT3DRMFRAME child) PURE;
1303     STDMETHOD(AddLight)(THIS_ LPDIRECT3DRMLIGHT) PURE;
1304     STDMETHOD(AddMoveCallback)(THIS_ D3DRMFRAMEMOVECALLBACK, VOID *arg) PURE;
1305     STDMETHOD(AddTransform)(THIS_ D3DRMCOMBINETYPE, D3DRMMATRIX4D) PURE;
1306     STDMETHOD(AddTranslation)(THIS_ D3DRMCOMBINETYPE, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
1307     STDMETHOD(AddScale)(THIS_ D3DRMCOMBINETYPE, D3DVALUE sx, D3DVALUE sy, D3DVALUE sz) PURE;
1308     STDMETHOD(AddRotation)(THIS_ D3DRMCOMBINETYPE, D3DVALUE x, D3DVALUE y, D3DVALUE z, D3DVALUE theta) PURE;
1309     STDMETHOD(AddVisual)(THIS_ LPDIRECT3DRMVISUAL) PURE;
1310     STDMETHOD(GetChildren)(THIS_ LPDIRECT3DRMFRAMEARRAY *children) PURE;
1311     STDMETHOD_(D3DCOLOR, GetColor)(THIS) PURE;
1312     STDMETHOD(GetLights)(THIS_ LPDIRECT3DRMLIGHTARRAY *lights) PURE;
1313     STDMETHOD_(D3DRMMATERIALMODE, GetMaterialMode)(THIS) PURE;
1314     STDMETHOD(GetParent)(THIS_ LPDIRECT3DRMFRAME *) PURE;
1315     STDMETHOD(GetPosition)(THIS_ LPDIRECT3DRMFRAME reference, LPD3DVECTOR return_position) PURE;
1316     STDMETHOD(GetRotation)(THIS_ LPDIRECT3DRMFRAME reference, LPD3DVECTOR axis, LPD3DVALUE return_theta) PURE;
1317     STDMETHOD(GetScene)(THIS_ LPDIRECT3DRMFRAME *) PURE;
1318     STDMETHOD_(D3DRMSORTMODE, GetSortMode)(THIS) PURE;
1319     STDMETHOD(GetTexture)(THIS_ LPDIRECT3DRMTEXTURE *) PURE;
1320     STDMETHOD(GetTransform)(THIS_ D3DRMMATRIX4D return_matrix) PURE;
1321     STDMETHOD(GetVelocity)(THIS_ LPDIRECT3DRMFRAME reference, LPD3DVECTOR return_velocity, BOOL with_rotation) PURE;
1322     STDMETHOD(GetOrientation)(THIS_ LPDIRECT3DRMFRAME reference, LPD3DVECTOR dir, LPD3DVECTOR up) PURE;
1323     STDMETHOD(GetVisuals)(THIS_ LPDIRECT3DRMVISUALARRAY *visuals) PURE;
1324     STDMETHOD(GetTextureTopology)(THIS_ BOOL *wrap_u, BOOL *wrap_v) PURE;
1325     STDMETHOD(InverseTransform)(THIS_ D3DVECTOR *d, D3DVECTOR *s) PURE;
1326     STDMETHOD(Load)(THIS_ LPVOID filename, LPVOID name, D3DRMLOADOPTIONS loadflags, D3DRMLOADTEXTURECALLBACK,
1327         LPVOID pArg)PURE;
1328     STDMETHOD(LookAt)(THIS_ LPDIRECT3DRMFRAME target, LPDIRECT3DRMFRAME reference, D3DRMFRAMECONSTRAINT) PURE;
1329     STDMETHOD(Move)(THIS_ D3DVALUE delta) PURE;
1330     STDMETHOD(DeleteChild)(THIS_ LPDIRECT3DRMFRAME) PURE;
1331     STDMETHOD(DeleteLight)(THIS_ LPDIRECT3DRMLIGHT) PURE;
1332     STDMETHOD(DeleteMoveCallback)(THIS_ D3DRMFRAMEMOVECALLBACK, VOID *arg) PURE;
1333     STDMETHOD(DeleteVisual)(THIS_ LPDIRECT3DRMVISUAL) PURE;
1334     STDMETHOD_(D3DCOLOR, GetSceneBackground)(THIS) PURE;
1335     STDMETHOD(GetSceneBackgroundDepth)(THIS_ LPDIRECTDRAWSURFACE *) PURE;
1336     STDMETHOD_(D3DCOLOR, GetSceneFogColor)(THIS) PURE;
1337     STDMETHOD_(BOOL, GetSceneFogEnable)(THIS) PURE;
1338     STDMETHOD_(D3DRMFOGMODE, GetSceneFogMode)(THIS) PURE;
1339     STDMETHOD(GetSceneFogParams)(THIS_ D3DVALUE *return_start, D3DVALUE *return_end, D3DVALUE *return_density) PURE;
1340     STDMETHOD(SetSceneBackground)(THIS_ D3DCOLOR) PURE;
1341     STDMETHOD(SetSceneBackgroundRGB)(THIS_ D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE;
1342     STDMETHOD(SetSceneBackgroundDepth)(THIS_ LPDIRECTDRAWSURFACE) PURE;
1343     STDMETHOD(SetSceneBackgroundImage)(THIS_ LPDIRECT3DRMTEXTURE) PURE;
1344     STDMETHOD(SetSceneFogEnable)(THIS_ BOOL) PURE;
1345     STDMETHOD(SetSceneFogColor)(THIS_ D3DCOLOR) PURE;
1346     STDMETHOD(SetSceneFogMode)(THIS_ D3DRMFOGMODE) PURE;
1347     STDMETHOD(SetSceneFogParams)(THIS_ D3DVALUE start, D3DVALUE end, D3DVALUE density) PURE;
1348     STDMETHOD(SetColor)(THIS_ D3DCOLOR) PURE;
1349     STDMETHOD(SetColorRGB)(THIS_ D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE;
1350     STDMETHOD_(D3DRMZBUFFERMODE, GetZbufferMode)(THIS) PURE;
1351     STDMETHOD(SetMaterialMode)(THIS_ D3DRMMATERIALMODE) PURE;
1352     STDMETHOD(SetOrientation)(THIS_ LPDIRECT3DRMFRAME reference, D3DVALUE dx, D3DVALUE dy, D3DVALUE dz,
1353         D3DVALUE ux, D3DVALUE uy, D3DVALUE uz) PURE;
1354     STDMETHOD(SetPosition)(THIS_ LPDIRECT3DRMFRAME reference, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
1355     STDMETHOD(SetRotation)(THIS_ LPDIRECT3DRMFRAME reference, D3DVALUE x, D3DVALUE y, D3DVALUE z, D3DVALUE theta) PURE;
1356     STDMETHOD(SetSortMode)(THIS_ D3DRMSORTMODE) PURE;
1357     STDMETHOD(SetTexture)(THIS_ LPDIRECT3DRMTEXTURE) PURE;
1358     STDMETHOD(SetTextureTopology)(THIS_ BOOL wrap_u, BOOL wrap_v) PURE;
1359     STDMETHOD(SetVelocity)(THIS_ LPDIRECT3DRMFRAME reference, D3DVALUE x, D3DVALUE y, D3DVALUE z, BOOL with_rotation) PURE;
1360     STDMETHOD(SetZbufferMode)(THIS_ D3DRMZBUFFERMODE) PURE;
1361     STDMETHOD(Transform)(THIS_ D3DVECTOR *d, D3DVECTOR *s) PURE;
1362     /*** IDirect3DRMFrame2 methods ***/
1363     STDMETHOD(AddMoveCallback2)(THIS_ D3DRMFRAMEMOVECALLBACK, VOID *arg, DWORD flags) PURE;
1364     STDMETHOD(GetBox)(THIS_ LPD3DRMBOX) PURE;
1365     STDMETHOD_(BOOL, GetBoxEnable)(THIS) PURE;
1366     STDMETHOD(GetAxes)(THIS_ LPD3DVECTOR dir, LPD3DVECTOR up);
1367     STDMETHOD(GetMaterial)(THIS_ LPDIRECT3DRMMATERIAL *) PURE;
1368     STDMETHOD_(BOOL, GetInheritAxes)(THIS);
1369     STDMETHOD(GetHierarchyBox)(THIS_ LPD3DRMBOX) PURE;
1370     STDMETHOD(SetBox)(THIS_ LPD3DRMBOX) PURE;
1371     STDMETHOD(SetBoxEnable)(THIS_ BOOL) PURE;
1372     STDMETHOD(SetAxes)(THIS_ D3DVALUE dx, D3DVALUE dy, D3DVALUE dz, D3DVALUE ux, D3DVALUE uy, D3DVALUE uz);
1373     STDMETHOD(SetInheritAxes)(THIS_ BOOL inherit_from_parent);
1374     STDMETHOD(SetMaterial)(THIS_ LPDIRECT3DRMMATERIAL) PURE;
1375     STDMETHOD(SetQuaternion)(THIS_ LPDIRECT3DRMFRAME reference, D3DRMQUATERNION *q) PURE;
1376     STDMETHOD(RayPick)(THIS_ LPDIRECT3DRMFRAME reference, LPD3DRMRAY ray, DWORD flags,
1377         LPDIRECT3DRMPICKED2ARRAY *return_visuals) PURE;
1378     STDMETHOD(Save)(THIS_ LPCSTR filename, D3DRMXOFFORMAT d3dFormat, D3DRMSAVEOPTIONS d3dSaveFlags);
1379 };
1380 #undef INTERFACE
1381
1382 #if !defined(__cplusplus) || defined(CINTERFACE)
1383 /*** IUnknown methods ***/
1384 #define IDirect3DRMFrame2_QueryInterface(p,a,b)            (p)->lpVtbl->QueryInterface(p,a,b)
1385 #define IDirect3DRMFrame2_AddRef(p)                        (p)->lpVtbl->AddRef(p)
1386 #define IDirect3DRMFrame2_Release(p)                       (p)->lpVtbl->Release(p)
1387 /*** IDirect3DRMObject methods ***/
1388 #define IDirect3DRMFrame2_Clone(p,a,b,c)                   (p)->lpVtbl->Clone(p,a,b,c)
1389 #define IDirect3DRMFrame2_AddDestroyCallback(p,a,b)        (p)->lpVtbl->AddDestroyCallback(p,a,b)
1390 #define IDirect3DRMFrame2_DeleteDestroyCallback(p,a,b)     (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
1391 #define IDirect3DRMFrame2_SetAppData(p,a)                  (p)->lpVtbl->SetAppData(p,a)
1392 #define IDirect3DRMFrame2_GetAppData(p)                    (p)->lpVtbl->GetAppData(p)
1393 #define IDirect3DRMFrame2_SetName(p,a)                     (p)->lpVtbl->SetName(p,a)
1394 #define IDirect3DRMFrame2_GetName(p,a,b)                   (p)->lpVtbl->GetName(p,a,b)
1395 #define IDirect3DRMFrame2_GetClassName(p,a,b)              (p)->lpVtbl->GetClassName(p,a,b)
1396 /*** IDirect3DRMFrame methods ***/
1397 #define IDirect3DRMFrame2_AddChild(p,a)                    (p)->lpVtbl->AddChild(p,a)
1398 #define IDirect3DRMFrame2_AddLight(p,a)                    (p)->lpVtbl->AddLight(p,a)
1399 #define IDirect3DRMFrame2_AddMoveCallback(p,a,b)           (p)->lpVtbl->AddMoveCallback(p,a,b)
1400 #define IDirect3DRMFrame2_AddTransform(p,a,b)              (p)->lpVtbl->AddTransform(p,a,b)
1401 #define IDirect3DRMFrame2_AddTranslation(p,a,b,c,d)        (p)->lpVtbl->AddTranslation(p,a,b,c,d)
1402 #define IDirect3DRMFrame2_AddScale(p,a,b,c,d)              (p)->lpVtbl->AddScale(p,a,b,c,d)
1403 #define IDirect3DRMFrame2_AddRotation(p,a,b,c,d,e)         (p)->lpVtbl->AddRotation(p,a,b,c,d,e)
1404 #define IDirect3DRMFrame2_AddVisual(p,a)                   (p)->lpVtbl->AddVisual(p,a)
1405 #define IDirect3DRMFrame2_GetChildren(p,a)                 (p)->lpVtbl->GetChildren(p,a)
1406 #define IDirect3DRMFrame2_GetColor(p)                      (p)->lpVtbl->GetColor(p)
1407 #define IDirect3DRMFrame2_GetLights(p,a)                   (p)->lpVtbl->GetLights(p,a)
1408 #define IDirect3DRMFrame2_GetMaterialMode(p)               (p)->lpVtbl->GetMaterialMode(p)
1409 #define IDirect3DRMFrame2_GetParent(p,a)                   (p)->lpVtbl->GetParent(p,a)
1410 #define IDirect3DRMFrame2_GetPosition(p,a,b)               (p)->lpVtbl->GetPosition(p,a,b)
1411 #define IDirect3DRMFrame2_GetRotation(p,a,b,c)             (p)->lpVtbl->GetRotation(p,a,b,c)
1412 #define IDirect3DRMFrame2_GetScene(p,a)                    (p)->lpVtbl->GetScene(p,a)
1413 #define IDirect3DRMFrame2_GetSortMode(p)                   (p)->lpVtbl->GetSortMode(p)
1414 #define IDirect3DRMFrame2_GetTexture(p,a)                  (p)->lpVtbl->GetTexture(p,a)
1415 #define IDirect3DRMFrame2_GetTransform(p,a)                (p)->lpVtbl->GetTransform(p,a)
1416 #define IDirect3DRMFrame2_GetVelocity(p,a,b,c)             (p)->lpVtbl->GetVelocity(p,a,b,c)
1417 #define IDirect3DRMFrame2_GetOrientation(p,a,b,c)          (p)->lpVtbl->GetOrientation(p,a,b,c)
1418 #define IDirect3DRMFrame2_GetVisuals(p,a)                  (p)->lpVtbl->GetVisuals(p,a)
1419 #define IDirect3DRMFrame2_GetTextureTopology(p,a,b)        (p)->lpVtbl->GetTextureTopology(p,a,b)
1420 #define IDirect3DRMFrame2_InverseTransform(p,a,b)          (p)->lpVtbl->InverseTransform(p,a,b)
1421 #define IDirect3DRMFrame2_Load(p,a,b,c,d,e)                (p)->lpVtbl->Load(p,a,b,c,d,e)
1422 #define IDirect3DRMFrame2_LookAt(p,a,b,c)                  (p)->lpVtbl->LookAt(p,a,b,c)
1423 #define IDirect3DRMFrame2_Move(p,a)                        (p)->lpVtbl->Move(p,a)
1424 #define IDirect3DRMFrame2_DeleteChild(p,a)                 (p)->lpVtbl->DeleteChild(p,a)
1425 #define IDirect3DRMFrame2_DeleteLight(p,a)                 (p)->lpVtbl->DeleteLight(p,a)
1426 #define IDirect3DRMFrame2_DeleteMoveCallback(p,a,b)        (p)->lpVtbl->DeleteMoveCallback(p,a,b)
1427 #define IDirect3DRMFrame2_DeleteVisual(p,a)                (p)->lpVtbl->DeleteVisual(p,a)
1428 #define IDirect3DRMFrame2_GetSceneBackground(p)            (p)->lpVtbl->GetSceneBackground(p)
1429 #define IDirect3DRMFrame2_GetSceneBackgroundDepth(p,a)     (p)->lpVtbl->GetSceneBackgroundDepth(p,a)
1430 #define IDirect3DRMFrame2_GetSceneFogColor(p)              (p)->lpVtbl->GetSceneFogColor(p)
1431 #define IDirect3DRMFrame2_GetSceneFogEnable(p)             (p)->lpVtbl->GetSceneFogEnable(p)
1432 #define IDirect3DRMFrame2_GetSceneFogMode(p)               (p)->lpVtbl->GetSceneFogMode(p)
1433 #define IDirect3DRMFrame2_GetSceneFogParams(p,a,b,c)       (p)->lpVtbl->GetSceneFogParams(p,a,b,c)
1434 #define IDirect3DRMFrame2_SetSceneBackground(p,a)          (p)->lpVtbl->SetSceneBackground(p,a)
1435 #define IDirect3DRMFrame2_SetSceneBackgroundRGB(p,a,b,c)   (p)->lpVtbl->SetSceneBackgroundRGB(p,a,b,c)
1436 #define IDirect3DRMFrame2_SetSceneBackgroundDepth(p,a)     (p)->lpVtbl->SetSceneBackgroundDepth(p,a)
1437 #define IDirect3DRMFrame2_SetSceneBackgroundImage(p,a)     (p)->lpVtbl->SetSceneBackgroundImage(p,a)
1438 #define IDirect3DRMFrame2_SetSceneFogEnable(p,a)           (p)->lpVtbl->SetSceneFogEnable(p,a)
1439 #define IDirect3DRMFrame2_SetSceneFogColor(p,a)            (p)->lpVtbl->SetSceneFogColor(p,a)
1440 #define IDirect3DRMFrame2_SetSceneFogMode(p,a)             (p)->lpVtbl->SetSceneFogMode(p,a)
1441 #define IDirect3DRMFrame2_SetSceneFogParams(p,a,b,c)       (p)->lpVtbl->SetSceneFogParams(p,a,b,c)
1442 #define IDirect3DRMFrame2_SetColor(p,a)                    (p)->lpVtbl->SetColor(p,a)
1443 #define IDirect3DRMFrame2_SetColorRGB(p,a,b,c)             (p)->lpVtbl->SetColorRGB(p,a,b,c)
1444 #define IDirect3DRMFrame2_GetZbufferMode(p)                (p)->lpVtbl->GetZbufferMode(p)
1445 #define IDirect3DRMFrame2_SetMaterialMode(p,a)             (p)->lpVtbl->SetMaterialMode(p,a)
1446 #define IDirect3DRMFrame2_SetOrientation(p,a,b,c,d,e,f,g)  (p)->lpVtbl->SetOrientation(p,a,b,c,d,e,f,g)
1447 #define IDirect3DRMFrame2_SetPosition(p,a,b,c,d)           (p)->lpVtbl->SetPosition(p,a,b,c,d)
1448 #define IDirect3DRMFrame2_SetRotation(p,a,b,c,d,e)         (p)->lpVtbl->SetRotation(p,a,b,c,d,e)
1449 #define IDirect3DRMFrame2_SetSortMode(p,a)                 (p)->lpVtbl->SetSortMode(p,a)
1450 #define IDirect3DRMFrame2_SetTexture(p,a)                  (p)->lpVtbl->SetTexture(p,a)
1451 #define IDirect3DRMFrame2_SetTextureTopology(p,a,b)        (p)->lpVtbl->SetTextureTopology(p,a,b)
1452 #define IDirect3DRMFrame2_SetVelocity(p,a,b,c,d,e)         (p)->lpVtbl->SetVelocity(p,a,b,c,d,e)
1453 #define IDirect3DRMFrame2_SetZbufferMode(p,a)              (p)->lpVtbl->SetZbufferMode(p,a)
1454 #define IDirect3DRMFrame2_Transform(p,a,b)                 (p)->lpVtbl->Transform(p,a,b)
1455 /*** IDirect3DRMFrame2 methods ***/
1456 #define IDirect3DRMFrame2_AddMoveCallback2(p,a,b,c)        (p)->lpVtbl->AddMoveCallback2(p,a,b,c)
1457 #define IDirect3DRMFrame2_GetBox(p,a)                      (p)->lpVtbl->GetBox(p,a)
1458 #define IDirect3DRMFrame2_GetBoxEnable(p)                  (p)->lpVtbl->GetBoxEnable(p)
1459 #define IDirect3DRMFrame2_GetAxes(p,a,b)                   (p)->lpVtbl->GetAxes(p,a,b)
1460 #define IDirect3DRMFrame2_GetMaterial(p,a)                 (p)->lpVtbl->GetMaterial(p,a)
1461 #define IDirect3DRMFrame2_GetInheritAxes(p,a,b)            (p)->lpVtbl->GetInheritAxes(p,a,b)
1462 #define IDirect3DRMFrame2_GetHierarchyBox(p,a)             (p)->lpVtbl->GetHierarchyBox(p,a)
1463 #define IDirect3DRMFrame2_SetBox(p,a)                      (p)->lpVtbl->SetBox(p,a)
1464 #define IDirect3DRMFrame2_SetBoxEnable(p,a)                (p)->lpVtbl->SetBoxEnable(p,a)
1465 #define IDirect3DRMFrame2_SetAxes(p,a,b,c,d,e,f)           (p)->lpVtbl->SetAxes(p,a,b,c,d,e,f)
1466 #define IDirect3DRMFrame2_SetInheritAxes(p,a)              (p)->lpVtbl->SetInheritAxes(p,a)
1467 #define IDirect3DRMFrame2_SetMaterial(p,a)                 (p)->lpVtbl->SetMaterial(p,a)
1468 #define IDirect3DRMFrame2_SetQuaternion(p,a,b)             (p)->lpVtbl->SetQuaternion(p,a,b)
1469 #define IDirect3DRMFrame2_RayPick(p,a,b,c,d)               (p)->lpVtbl->RayPick(p,a,b,c,d)
1470 #define IDirect3DRMFrame2_Save(p,a,b,c)                    (p)->lpVtbl->Save(p,a,b,c)
1471 #else
1472 /*** IUnknown methods ***/
1473 #define IDirect3DRMFrame2_QueryInterface(p,a,b)            (p)->QueryInterface(a,b)
1474 #define IDirect3DRMFrame2_AddRef(p)                        (p)->AddRef()
1475 #define IDirect3DRMFrame2_Release(p)                       (p)->Release()
1476 /*** IDirect3DRMObject methods ***/
1477 #define IDirect3DRMFrame2_Clone(p,a,b,c)                   (p)->Clone(a,b,c)
1478 #define IDirect3DRMFrame2_AddDestroyCallback(p,a,b)        (p)->AddDestroyCallback(a,b)
1479 #define IDirect3DRMFrame2_DeleteDestroyCallback(p,a,b)     (p)->DeleteDestroyCallback(a,b)
1480 #define IDirect3DRMFrame2_SetAppData(p,a)                  (p)->SetAppData(a)
1481 #define IDirect3DRMFrame2_GetAppData(p)                    (p)->GetAppData()
1482 #define IDirect3DRMFrame2_SetName(p,a)                     (p)->SetName(a)
1483 #define IDirect3DRMFrame2_GetName(p,a,b)                   (p)->GetName(a,b)
1484 #define IDirect3DRMFrame2_GetClassName(p,a,b)              (p)->GetClassName(a,b)
1485 /*** IDirect3DRMFrame methods ***/
1486 #define IDirect3DRMFrame2_AddChild(p,a)                    (p)->AddChild(a)
1487 #define IDirect3DRMFrame2_AddLight(p,a)                    (p)->AddLight(a)
1488 #define IDirect3DRMFrame2_AddMoveCallback(p,a,b)           (p)->AddMoveCallback(a,b)
1489 #define IDirect3DRMFrame2_AddTransform(p,a,b)              (p)->AddTransform(a,b)
1490 #define IDirect3DRMFrame2_AddTranslation(p,a,b,c,d)        (p)->AddTranslation(a,b,c,d)
1491 #define IDirect3DRMFrame2_AddScale(p,a,b,c,d)              (p)->AddScale(a,b,c,d)
1492 #define IDirect3DRMFrame2_AddRotation(p,a,b,c,d,e)         (p)->AddRotation(a,b,c,d,e)
1493 #define IDirect3DRMFrame2_AddVisual(p,a)                   (p)->AddVisual(a)
1494 #define IDirect3DRMFrame2_GetChildren(p,a)                 (p)->GetChildren(a)
1495 #define IDirect3DRMFrame2_GetColor(p)                      (p)->GetColor()
1496 #define IDirect3DRMFrame2_GetLights(p,a)                   (p)->GetLights(a)
1497 #define IDirect3DRMFrame2_GetMaterialMode(p)               (p)->GetMaterialMode()
1498 #define IDirect3DRMFrame2_GetParent(p,a)                   (p)->GetParent(a)
1499 #define IDirect3DRMFrame2_GetPosition(p,a,b)               (p)->GetPosition(a,b)
1500 #define IDirect3DRMFrame2_GetRotation(p,a,b,c)             (p)->GetRotation(a,b,c)
1501 #define IDirect3DRMFrame2_GetScene(p,a)                    (p)->GetScene(a)
1502 #define IDirect3DRMFrame2_GetSortMode(p)                   (p)->GetSortMode()
1503 #define IDirect3DRMFrame2_GetTexture(p,a)                  (p)->GetTexture(a)
1504 #define IDirect3DRMFrame2_GetTransform(p,a)                (p)->GetTransform(a)
1505 #define IDirect3DRMFrame2_GetVelocity(p,a,b,c)             (p)->GetVelocity(a,b,c)
1506 #define IDirect3DRMFrame2_GetOrientation(p,a,b,c)          (p)->GetOrientation(a,b,c)
1507 #define IDirect3DRMFrame2_GetVisuals(p,a)                  (p)->GetVisuals(a)
1508 #define IDirect3DRMFrame2_GetTextureTopology(p,a,b)        (p)->GetTextureTopology(a,b)
1509 #define IDirect3DRMFrame2_InverseTransform(p,a,b)          (p)->InverseTransform(a,b)
1510 #define IDirect3DRMFrame2_Load(p,a,b,c,d,e)                (p)->Load(a,b,c,d,e)
1511 #define IDirect3DRMFrame2_LookAt(p,a,b,c)                  (p)->LookAt(a,b,c)
1512 #define IDirect3DRMFrame2_Move(p,a)                        (p)->Move(a)
1513 #define IDirect3DRMFrame2_DeleteChild(p,a)                 (p)->DeleteChild(a)
1514 #define IDirect3DRMFrame2_DeleteLight(p,a)                 (p)->DeleteLight(a)
1515 #define IDirect3DRMFrame2_DeleteMoveCallback(p,a,b)        (p)->DeleteMoveCallback(a,b)
1516 #define IDirect3DRMFrame2_DeleteVisual(p,a)                (p)->DeleteVisual(a)
1517 #define IDirect3DRMFrame2_GetSceneBackground(p)            (p)->GetSceneBackground()
1518 #define IDirect3DRMFrame2_GetSceneBackgroundDepth(p,a)     (p)->GetSceneBackgroundDepth(a)
1519 #define IDirect3DRMFrame2_GetSceneFogColor(p)              (p)->GetSceneFogColor()
1520 #define IDirect3DRMFrame2_GetSceneFogEnable(p)             (p)->GetSceneFogEnable()
1521 #define IDirect3DRMFrame2_GetSceneFogMode(p)               (p)->GetSceneFogMode()
1522 #define IDirect3DRMFrame2_GetSceneFogParams(p,a,b,c)       (p)->GetSceneFogParams(a,b,c)
1523 #define IDirect3DRMFrame2_SetSceneBackground(p,a)          (p)->SetSceneBackground(a)
1524 #define IDirect3DRMFrame2_SetSceneBackgroundRGB(p,a,b,c)   (p)->SetSceneBackgroundRGB(a,b,c)
1525 #define IDirect3DRMFrame2_SetSceneBackgroundDepth(p,a)     (p)->SetSceneBackgroundDepth(a)
1526 #define IDirect3DRMFrame2_SetSceneBackgroundImage(p,a)     (p)->SetSceneBackgroundImage(a)
1527 #define IDirect3DRMFrame2_SetSceneFogEnable(p,a)           (p)->SetSceneFogEnable(a)
1528 #define IDirect3DRMFrame2_SetSceneFogColor(p,a)            (p)->SetSceneFogColor(a)
1529 #define IDirect3DRMFrame2_SetSceneFogMode(p,a)             (p)->SetSceneFogMode(a)
1530 #define IDirect3DRMFrame2_SetSceneFogParams(p,a,b,c)       (p)->SetSceneFogParams(a,b,c)
1531 #define IDirect3DRMFrame2_SetColor(p,a)                    (p)->SetColor(a)
1532 #define IDirect3DRMFrame2_SetColorRGB(p,a,b,c)             (p)->SetColorRGB(a,b,c)
1533 #define IDirect3DRMFrame2_GetZbufferMode(p)                (p)->GetZbufferMode()
1534 #define IDirect3DRMFrame2_SetMaterialMode(p,a)             (p)->SetMaterialMode(a)
1535 #define IDirect3DRMFrame2_SetOrientation(p,a,b,c,d,e,f,g)  (p)->SetOrientation(a,b,c,d,e,f,g)
1536 #define IDirect3DRMFrame2_SetPosition(p,a,b,c,d)           (p)->SetPosition(a,b,c,d)
1537 #define IDirect3DRMFrame2_SetRotation(p,a,b,c,d,e)         (p)->SetRotation(a,b,c,d,e)
1538 #define IDirect3DRMFrame2_SetSortMode(p,a)                 (p)->SetSortMode(a)
1539 #define IDirect3DRMFrame2_SetTexture(p,a)                  (p)->SetTexture(a)
1540 #define IDirect3DRMFrame2_SetTextureTopology(p,a,b)        (p)->SetTextureTopology(a,b)
1541 #define IDirect3DRMFrame2_SetVelocity(p,a,b,c,d,e)         (p)->SetVelocity(a,b,c,d,e)
1542 #define IDirect3DRMFrame2_SetZbufferMode(p,a)              (p)->SetZbufferMode(a)
1543 #define IDirect3DRMFrame2_Transform(p,a,b)                 (p)->Transform(a,b)
1544 /*** IDirect3DRMFrame2 methods ***/
1545 #define IDirect3DRMFrame2_AddMoveCallback2(p,a,b,c)        (p)->AddMoveCallback2(a,b,c)
1546 #define IDirect3DRMFrame2_GetBox(p,a)                      (p)->GetBox(a)
1547 #define IDirect3DRMFrame2_GetBoxEnable(p)                  (p)->GetBoxEnable()
1548 #define IDirect3DRMFrame2_GetAxes(p,a,b)                   (p)->GetAxes(a,b)
1549 #define IDirect3DRMFrame2_GetMaterial(p,a)                 (p)->GetMaterial(a)
1550 #define IDirect3DRMFrame2_GetInheritAxes(p,a,b)            (p)->GetInheritAxes(a,b)
1551 #define IDirect3DRMFrame2_GetHierarchyBox(p,a)             (p)->GetHierarchyBox(a)
1552 #define IDirect3DRMFrame2_SetBox(p,a)                      (p)->SetBox(a)
1553 #define IDirect3DRMFrame2_SetBoxEnable(p,a)                (p)->SetBoxEnable(a)
1554 #define IDirect3DRMFrame2_SetAxes(p,a,b,c,d,e,f)           (p)->SetAxes(a,b,c,d,e,f)
1555 #define IDirect3DRMFrame2_SetInheritAxes(p,a)              (p)->SetInheritAxes(a)
1556 #define IDirect3DRMFrame2_SetMaterial(p,a)                 (p)->SetMaterial(a)
1557 #define IDirect3DRMFrame2_SetQuaternion(p,a,b)             (p)->SetQuaternion(a,b)
1558 #define IDirect3DRMFrame2_RayPick(p,a,b,c,d)               (p)->RayPick(a,b,c,d)
1559 #define IDirect3DRMFrame2_Save(p,a,b,c)                    (p)->Save(a,b,c)
1560 #endif
1561
1562 /*****************************************************************************
1563  * IDirect3DRMFrame3 interface
1564  */
1565 #define INTERFACE IDirect3DRMFrame3
1566 DECLARE_INTERFACE_(IDirect3DRMFrame3,IDirect3DRMVisual)
1567 {
1568     /*** IUnknown methods ***/
1569     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
1570     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
1571     STDMETHOD_(ULONG,Release)(THIS) PURE;
1572     /*** IDirect3DRMObject methods ***/
1573     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
1574     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
1575     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
1576     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
1577     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
1578     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
1579     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
1580     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
1581     /*** IDirect3DRMFrame3 methods ***/
1582     STDMETHOD(AddChild)(THIS_ LPDIRECT3DRMFRAME3 child) PURE;
1583     STDMETHOD(AddLight)(THIS_ LPDIRECT3DRMLIGHT) PURE;
1584     STDMETHOD(AddMoveCallback)(THIS_ D3DRMFRAME3MOVECALLBACK, VOID *arg, DWORD flags) PURE;
1585     STDMETHOD(AddTranslation)(THIS_ D3DRMCOMBINETYPE, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
1586     STDMETHOD(AddScale)(THIS_ D3DRMCOMBINETYPE, D3DVALUE sx, D3DVALUE sy, D3DVALUE sz) PURE;
1587     STDMETHOD(AddRotation)(THIS_ D3DRMCOMBINETYPE, D3DVALUE x, D3DVALUE y, D3DVALUE z, D3DVALUE theta) PURE;
1588     STDMETHOD(AddVisual)(THIS_ LPUNKNOWN) PURE;
1589     STDMETHOD(GetChildren)(THIS_ LPDIRECT3DRMFRAMEARRAY *children) PURE;
1590     STDMETHOD_(D3DCOLOR, GetColor)(THIS) PURE;
1591     STDMETHOD(GetLights)(THIS_ LPDIRECT3DRMLIGHTARRAY *lights) PURE;
1592     STDMETHOD_(D3DRMMATERIALMODE, GetMaterialMode)(THIS) PURE;
1593     STDMETHOD(GetParent)(THIS_ LPDIRECT3DRMFRAME3 *) PURE;
1594     STDMETHOD(GetPosition)(THIS_ LPDIRECT3DRMFRAME3 reference, LPD3DVECTOR return_position) PURE;
1595     STDMETHOD(GetRotation)(THIS_ LPDIRECT3DRMFRAME3 reference, LPD3DVECTOR axis, LPD3DVALUE return_theta) PURE;
1596     STDMETHOD(GetScene)(THIS_ LPDIRECT3DRMFRAME3 *) PURE;
1597     STDMETHOD_(D3DRMSORTMODE, GetSortMode)(THIS) PURE;
1598     STDMETHOD(GetTexture)(THIS_ LPDIRECT3DRMTEXTURE3 *) PURE;
1599     STDMETHOD(GetTransform)(THIS_ LPDIRECT3DRMFRAME3 reference, D3DRMMATRIX4D rmMatrix) PURE;
1600     STDMETHOD(GetVelocity)(THIS_ LPDIRECT3DRMFRAME3 reference, LPD3DVECTOR return_velocity,
1601         BOOL with_rotation) PURE;
1602     STDMETHOD(GetOrientation)(THIS_ LPDIRECT3DRMFRAME3 reference, LPD3DVECTOR dir, LPD3DVECTOR up) PURE;
1603     STDMETHOD(GetVisuals)(THIS_ LPDWORD pCount, LPUNKNOWN *) PURE;
1604     STDMETHOD(InverseTransform)(THIS_ D3DVECTOR *d, D3DVECTOR *s) PURE;
1605     STDMETHOD(Load)(THIS_ LPVOID filename, LPVOID name, D3DRMLOADOPTIONS loadflags,
1606         D3DRMLOADTEXTURE3CALLBACK, LPVOID pArg) PURE;
1607     STDMETHOD(LookAt)(THIS_ LPDIRECT3DRMFRAME3 target, LPDIRECT3DRMFRAME3 reference, D3DRMFRAMECONSTRAINT) PURE;
1608     STDMETHOD(Move)(THIS_ D3DVALUE delta) PURE;
1609     STDMETHOD(DeleteChild)(THIS_ LPDIRECT3DRMFRAME3) PURE;
1610     STDMETHOD(DeleteLight)(THIS_ LPDIRECT3DRMLIGHT) PURE;
1611     STDMETHOD(DeleteMoveCallback)(THIS_ D3DRMFRAME3MOVECALLBACK, VOID *arg) PURE;
1612     STDMETHOD(DeleteVisual)(THIS_ LPUNKNOWN) PURE;
1613     STDMETHOD_(D3DCOLOR, GetSceneBackground)(THIS) PURE;
1614     STDMETHOD(GetSceneBackgroundDepth)(THIS_ LPDIRECTDRAWSURFACE *) PURE;
1615     STDMETHOD_(D3DCOLOR, GetSceneFogColor)(THIS) PURE;
1616     STDMETHOD_(BOOL, GetSceneFogEnable)(THIS) PURE;
1617     STDMETHOD_(D3DRMFOGMODE, GetSceneFogMode)(THIS) PURE;
1618     STDMETHOD(GetSceneFogParams)(THIS_ D3DVALUE *return_start, D3DVALUE *return_end,
1619         D3DVALUE *return_density) PURE;
1620     STDMETHOD(SetSceneBackground)(THIS_ D3DCOLOR) PURE;
1621     STDMETHOD(SetSceneBackgroundRGB)(THIS_ D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE;
1622     STDMETHOD(SetSceneBackgroundDepth)(THIS_ LPDIRECTDRAWSURFACE) PURE;
1623     STDMETHOD(SetSceneBackgroundImage)(THIS_ LPDIRECT3DRMTEXTURE3) PURE;
1624     STDMETHOD(SetSceneFogEnable)(THIS_ BOOL) PURE;
1625     STDMETHOD(SetSceneFogColor)(THIS_ D3DCOLOR) PURE;
1626     STDMETHOD(SetSceneFogMode)(THIS_ D3DRMFOGMODE) PURE;
1627     STDMETHOD(SetSceneFogParams)(THIS_ D3DVALUE start, D3DVALUE end, D3DVALUE density) PURE;
1628     STDMETHOD(SetColor)(THIS_ D3DCOLOR) PURE;
1629     STDMETHOD(SetColorRGB)(THIS_ D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE;
1630     STDMETHOD_(D3DRMZBUFFERMODE, GetZbufferMode)(THIS) PURE;
1631     STDMETHOD(SetMaterialMode)(THIS_ D3DRMMATERIALMODE) PURE;
1632     STDMETHOD(SetOrientation)(THIS_ LPDIRECT3DRMFRAME3 reference, D3DVALUE dx, D3DVALUE dy, D3DVALUE dz,
1633         D3DVALUE ux, D3DVALUE uy, D3DVALUE uz) PURE;
1634     STDMETHOD(SetPosition)(THIS_ LPDIRECT3DRMFRAME3 reference, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
1635     STDMETHOD(SetRotation)(THIS_ LPDIRECT3DRMFRAME3 reference, D3DVALUE x, D3DVALUE y, D3DVALUE z,
1636         D3DVALUE theta) PURE;
1637     STDMETHOD(SetSortMode)(THIS_ D3DRMSORTMODE) PURE;
1638     STDMETHOD(SetTexture)(THIS_ LPDIRECT3DRMTEXTURE3) PURE;
1639     STDMETHOD(SetVelocity)(THIS_ LPDIRECT3DRMFRAME3 reference, D3DVALUE x, D3DVALUE y, D3DVALUE z,
1640         BOOL with_rotation) PURE;
1641     STDMETHOD(SetZbufferMode)(THIS_ D3DRMZBUFFERMODE) PURE;
1642     STDMETHOD(Transform)(THIS_ D3DVECTOR *d, D3DVECTOR *s) PURE;
1643     STDMETHOD(GetBox)(THIS_ LPD3DRMBOX) PURE;
1644     STDMETHOD_(BOOL, GetBoxEnable)(THIS) PURE;
1645     STDMETHOD(GetAxes)(THIS_ LPD3DVECTOR dir, LPD3DVECTOR up);
1646     STDMETHOD(GetMaterial)(THIS_ LPDIRECT3DRMMATERIAL2 *) PURE;
1647     STDMETHOD_(BOOL, GetInheritAxes)(THIS);
1648     STDMETHOD(GetHierarchyBox)(THIS_ LPD3DRMBOX) PURE;
1649     STDMETHOD(SetBox)(THIS_ LPD3DRMBOX) PURE;
1650     STDMETHOD(SetBoxEnable)(THIS_ BOOL) PURE;
1651     STDMETHOD(SetAxes)(THIS_ D3DVALUE dx, D3DVALUE dy, D3DVALUE dz, D3DVALUE ux, D3DVALUE uy, D3DVALUE uz);
1652     STDMETHOD(SetInheritAxes)(THIS_ BOOL inherit_from_parent);
1653     STDMETHOD(SetMaterial)(THIS_ LPDIRECT3DRMMATERIAL2) PURE;
1654     STDMETHOD(SetQuaternion)(THIS_ LPDIRECT3DRMFRAME3 reference, D3DRMQUATERNION *q) PURE;
1655     STDMETHOD(RayPick)(THIS_ LPDIRECT3DRMFRAME3 reference, LPD3DRMRAY ray, DWORD flags,
1656         LPDIRECT3DRMPICKED2ARRAY *return_visuals) PURE;
1657     STDMETHOD(Save)(THIS_ LPCSTR filename, D3DRMXOFFORMAT d3dFormat, D3DRMSAVEOPTIONS d3dSaveFlags);
1658     STDMETHOD(TransformVectors)(THIS_ LPDIRECT3DRMFRAME3 reference, DWORD NumVectors,
1659         LPD3DVECTOR pDstVectors, LPD3DVECTOR pSrcVectors) PURE;
1660     STDMETHOD(InverseTransformVectors)(THIS_ LPDIRECT3DRMFRAME3 reference, DWORD NumVectors,
1661         LPD3DVECTOR pDstVectors, LPD3DVECTOR pSrcVectors) PURE;
1662     STDMETHOD(SetTraversalOptions)(THIS_ DWORD flags) PURE;
1663     STDMETHOD(GetTraversalOptions)(THIS_ LPDWORD pFlags) PURE;
1664     STDMETHOD(SetSceneFogMethod)(THIS_ DWORD flags) PURE;
1665     STDMETHOD(GetSceneFogMethod)(THIS_ LPDWORD pFlags) PURE;
1666     STDMETHOD(SetMaterialOverride)(THIS_ LPD3DRMMATERIALOVERRIDE) PURE;
1667     STDMETHOD(GetMaterialOverride)(THIS_ LPD3DRMMATERIALOVERRIDE) PURE;
1668 };
1669 #undef INTERFACE
1670
1671 #if !defined(__cplusplus) || defined(CINTERFACE)
1672 /*** IUnknown methods ***/
1673 #define IDirect3DRMFrame3_QueryInterface(p,a,b)              (p)->lpVtbl->QueryInterface(p,a,b)
1674 #define IDirect3DRMFrame3_AddRef(p)                          (p)->lpVtbl->AddRef(p)
1675 #define IDirect3DRMFrame3_Release(p)                         (p)->lpVtbl->Release(p)
1676 /*** IDirect3DRMObject methods ***/
1677 #define IDirect3DRMFrame3_Clone(p,a,b,c)                     (p)->lpVtbl->Clone(p,a,b,c)
1678 #define IDirect3DRMFrame3_AddDestroyCallback(p,a,b)          (p)->lpVtbl->AddDestroyCallback(p,a,b)
1679 #define IDirect3DRMFrame3_DeleteDestroyCallback(p,a,b)       (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
1680 #define IDirect3DRMFrame3_SetAppData(p,a)                    (p)->lpVtbl->SetAppData(p,a)
1681 #define IDirect3DRMFrame3_GetAppData(p)                      (p)->lpVtbl->GetAppData(p)
1682 #define IDirect3DRMFrame3_SetName(p,a)                       (p)->lpVtbl->SetName(p,a)
1683 #define IDirect3DRMFrame3_GetName(p,a,b)                     (p)->lpVtbl->GetName(p,a,b)
1684 #define IDirect3DRMFrame3_GetClassName(p,a,b)                (p)->lpVtbl->GetClassName(p,a,b)
1685 /*** IDirect3DRMFrame3 methods ***/
1686 #define IDirect3DRMFrame3_AddChild(p,a)                      (p)->lpVtbl->AddChild(p,a)
1687 #define IDirect3DRMFrame3_AddLight(p,a)                      (p)->lpVtbl->AddLight(p,a)
1688 #define IDirect3DRMFrame3_AddMoveCallback(p,a,b,c)           (p)->lpVtbl->AddMoveCallback(p,a,b,c)
1689 #define IDirect3DRMFrame3_AddTransform(p,a,b)                (p)->lpVtbl->AddTransform(p,a,b)
1690 #define IDirect3DRMFrame3_AddTranslation(p,a,b,c,d)          (p)->lpVtbl->AddTranslation(p,a,b,c,d)
1691 #define IDirect3DRMFrame3_AddScale(p,a,b,c,d)                (p)->lpVtbl->AddScale(p,a,b,c,d)
1692 #define IDirect3DRMFrame3_AddRotation(p,a,b,c,d,e)           (p)->lpVtbl->AddRotation(p,a,b,c,d,e)
1693 #define IDirect3DRMFrame3_AddVisual(p,a)                     (p)->lpVtbl->AddVisual(p,a)
1694 #define IDirect3DRMFrame3_GetChildren(p,a)                   (p)->lpVtbl->GetChildren(p,a)
1695 #define IDirect3DRMFrame3_GetColor(p)                        (p)->lpVtbl->GetColor(p)
1696 #define IDirect3DRMFrame3_GetLights(p,a)                     (p)->lpVtbl->GetLights(p,a)
1697 #define IDirect3DRMFrame3_GetMaterialMode(p)                 (p)->lpVtbl->GetMaterialMode(p)
1698 #define IDirect3DRMFrame3_GetParent(p,a)                     (p)->lpVtbl->GetParent(p,a)
1699 #define IDirect3DRMFrame3_GetPosition(p,a,b)                 (p)->lpVtbl->GetPosition(p,a,b)
1700 #define IDirect3DRMFrame3_GetRotation(p,a,b,c)               (p)->lpVtbl->GetRotation(p,a,b,c)
1701 #define IDirect3DRMFrame3_GetScene(p,a)                      (p)->lpVtbl->GetScene(p,a)
1702 #define IDirect3DRMFrame3_GetSortMode(p)                     (p)->lpVtbl->GetSortMode(p)
1703 #define IDirect3DRMFrame3_GetTexture(p,a)                    (p)->lpVtbl->GetTexture(p,a)
1704 #define IDirect3DRMFrame3_GetTransform(p,a,b)                (p)->lpVtbl->GetTransform(p,a,b)
1705 #define IDirect3DRMFrame3_GetVelocity(p,a,b,c)               (p)->lpVtbl->GetVelocity(p,a,b,c)
1706 #define IDirect3DRMFrame3_GetOrientation(p,a,b,c)            (p)->lpVtbl->GetOrientation(p,a,b,c)
1707 #define IDirect3DRMFrame3_GetVisuals(p,a,b)                  (p)->lpVtbl->GetVisuals(p,a,b)
1708 #define IDirect3DRMFrame3_InverseTransform(p,a,b)            (p)->lpVtbl->InverseTransform(p,a,b)
1709 #define IDirect3DRMFrame3_Load(p,a,b,c,d,e)                  (p)->lpVtbl->Load(p,a,b,c,d,e)
1710 #define IDirect3DRMFrame3_LookAt(p,a,b,c)                    (p)->lpVtbl->LookAt(p,a,b,c)
1711 #define IDirect3DRMFrame3_Move(p,a)                          (p)->lpVtbl->Move(p,a)
1712 #define IDirect3DRMFrame3_DeleteChild(p,a)                   (p)->lpVtbl->DeleteChild(p,a)
1713 #define IDirect3DRMFrame3_DeleteLight(p,a)                   (p)->lpVtbl->DeleteLight(p,a)
1714 #define IDirect3DRMFrame3_DeleteMoveCallback(p,a,b)          (p)->lpVtbl->DeleteMoveCallback(p,a,b)
1715 #define IDirect3DRMFrame3_DeleteVisual(p,a)                  (p)->lpVtbl->DeleteVisual(p,a)
1716 #define IDirect3DRMFrame3_GetSceneBackground(p)              (p)->lpVtbl->GetSceneBackground(p)
1717 #define IDirect3DRMFrame3_GetSceneBackgroundDepth(p,a)       (p)->lpVtbl->GetSceneBackgroundDepth(p,a)
1718 #define IDirect3DRMFrame3_GetSceneFogColor(p)                (p)->lpVtbl->GetSceneFogColor(p)
1719 #define IDirect3DRMFrame3_GetSceneFogEnable(p)               (p)->lpVtbl->GetSceneFogEnable(p)
1720 #define IDirect3DRMFrame3_GetSceneFogMode(p)                 (p)->lpVtbl->GetSceneFogMode(p)
1721 #define IDirect3DRMFrame3_GetSceneFogParams(p,a,b,c)         (p)->lpVtbl->GetSceneFogParams(p,a,b,c)
1722 #define IDirect3DRMFrame3_SetSceneBackground(p,a)            (p)->lpVtbl->SetSceneBackground(p,a)
1723 #define IDirect3DRMFrame3_SetSceneBackgroundRGB(p,a,b,c)     (p)->lpVtbl->SetSceneBackgroundRGB(p,a,b,c)
1724 #define IDirect3DRMFrame3_SetSceneBackgroundDepth(p,a)       (p)->lpVtbl->SetSceneBackgroundDepth(p,a)
1725 #define IDirect3DRMFrame3_SetSceneBackgroundImage(p,a)       (p)->lpVtbl->SetSceneBackgroundImage(p,a)
1726 #define IDirect3DRMFrame3_SetSceneFogEnable(p,a)             (p)->lpVtbl->SetSceneFogEnable(p,a)
1727 #define IDirect3DRMFrame3_SetSceneFogColor(p,a)              (p)->lpVtbl->SetSceneFogColor(p,a)
1728 #define IDirect3DRMFrame3_SetSceneFogMode(p,a)               (p)->lpVtbl->SetSceneFogMode(p,a)
1729 #define IDirect3DRMFrame3_SetSceneFogParams(p,a,b,c)         (p)->lpVtbl->SetSceneFogParams(p,a,b,c)
1730 #define IDirect3DRMFrame3_SetColor(p,a)                      (p)->lpVtbl->SetColor(p,a)
1731 #define IDirect3DRMFrame3_SetColorRGB(p,a,b,c)               (p)->lpVtbl->SetColorRGB(p,a,b,c)
1732 #define IDirect3DRMFrame3_GetZbufferMode(p)                  (p)->lpVtbl->GetZbufferMode(p)
1733 #define IDirect3DRMFrame3_SetMaterialMode(p,a)               (p)->lpVtbl->SetMaterialMode(p,a)
1734 #define IDirect3DRMFrame3_SetOrientation(p,a,b,c,d,e,f,g)    (p)->lpVtbl->SetOrientation(p,a,b,c,d,e,f,g)
1735 #define IDirect3DRMFrame3_SetPosition(p,a,b,c,d)             (p)->lpVtbl->SetPosition(p,a,b,c,d)
1736 #define IDirect3DRMFrame3_SetRotation(p,a,b,c,d,e)           (p)->lpVtbl->SetRotation(p,a,b,c,d,e)
1737 #define IDirect3DRMFrame3_SetSortMode(p,a)                   (p)->lpVtbl->SetSortMode(p,a)
1738 #define IDirect3DRMFrame3_SetTexture(p,a)                    (p)->lpVtbl->SetTexture(p,a)
1739 #define IDirect3DRMFrame3_SetVelocity(p,a,b,c,d,e)           (p)->lpVtbl->SetVelocity(p,a,b,c,d,e)
1740 #define IDirect3DRMFrame3_SetZbufferMode(p,a)                (p)->lpVtbl->SetZbufferMode(p,a)
1741 #define IDirect3DRMFrame3_Transform(p,a,b)                   (p)->lpVtbl->Transform(p,a,b)
1742 #define IDirect3DRMFrame3_GetBox(p,a)                        (p)->lpVtbl->GetBox(p,a)
1743 #define IDirect3DRMFrame3_GetBoxEnable(p)                    (p)->lpVtbl->GetBoxEnable(p)
1744 #define IDirect3DRMFrame3_GetAxes(p,a,b)                     (p)->lpVtbl->GetAxes(p,a,b)
1745 #define IDirect3DRMFrame3_GetMaterial(p,a)                   (p)->lpVtbl->GetMaterial(p,a)
1746 #define IDirect3DRMFrame3_GetInheritAxes(p)                  (p)->lpVtbl->GetInheritAxes(p)
1747 #define IDirect3DRMFrame3_GetHierarchyBox(p,a)               (p)->lpVtbl->GetHierarchyBox(p,a)
1748 #define IDirect3DRMFrame3_SetBox(p,a)                        (p)->lpVtbl->SetBox(p,a)
1749 #define IDirect3DRMFrame3_SetBoxEnable(p,a)                  (p)->lpVtbl->SetBoxEnable(p,a)
1750 #define IDirect3DRMFrame3_SetAxes(p,a,b,c,d,e,f)             (p)->lpVtbl->SetAxes(p,a,b,c,d,e,f)
1751 #define IDirect3DRMFrame3_SetInheritAxes(p,a)                (p)->lpVtbl->SetInheritAxes(p,a)
1752 #define IDirect3DRMFrame3_SetMaterial(p,a)                   (p)->lpVtbl->SetMaterial(p,a)
1753 #define IDirect3DRMFrame3_SetQuaternion(p,a,b)               (p)->lpVtbl->SetQuaternion(p,a,b)
1754 #define IDirect3DRMFrame3_RayPick(p,a,b,c,d)                 (p)->lpVtbl->RayPick(p,a,b,c,d)
1755 #define IDirect3DRMFrame3_Save(p,a,b,c)                      (p)->lpVtbl->Save(p,a,b,c)
1756 #define IDirect3DRMFrame3_TransformVectors(p,a,b,c,d)        (p)->lpVtbl->TransformVectors(p,a,b,c,d)
1757 #define IDirect3DRMFrame3_InverseTransformVectors(p,a,b,c,d) (p)->lpVtbl->InverseTransformVectors(p,a,b,c,d)
1758 #define IDirect3DRMFrame3_SetTraversalOptions(p,a)           (p)->lpVtbl->SetTraversalOptions(p,a)
1759 #define IDirect3DRMFrame3_GetTraversalOptions(p,a)           (p)->lpVtbl->GetTraversalOptions(p,a)
1760 #define IDirect3DRMFrame3_SetSceneFogMethod(p,a)             (p)->lpVtbl->SetSceneFogMethod(p,a)
1761 #define IDirect3DRMFrame3_GetSceneFogMethod(p,a)             (p)->lpVtbl->GetSceneFogMethod(p,a)
1762 #define IDirect3DRMFrame3_SetMaterialOverride(p,a)           (p)->lpVtbl->SetMaterialOverride(p,a)
1763 #define IDirect3DRMFrame3_GetMaterialOverride(p,a)           (p)->lpVtbl->GetMaterialOverride(p,a)
1764 #else
1765 /*** IUnknown methods ***/
1766 #define IDirect3DRMFrame3_QueryInterface(p,a,b)              (p)->QueryInterface(a,b)
1767 #define IDirect3DRMFrame3_AddRef(p)                          (p)->AddRef()
1768 #define IDirect3DRMFrame3_Release(p)                         (p)->Release()
1769 /*** IDirect3DRMObject methods ***/
1770 #define IDirect3DRMFrame3_Clone(p,a,b,c)                     (p)->Clone(a,b,c)
1771 #define IDirect3DRMFrame3_AddDestroyCallback(p,a,b)          (p)->AddDestroyCallback(a,b)
1772 #define IDirect3DRMFrame3_DeleteDestroyCallback(p,a,b)       (p)->DeleteDestroyCallback(a,b)
1773 #define IDirect3DRMFrame3_SetAppData(p,a)                    (p)->SetAppData(a)
1774 #define IDirect3DRMFrame3_GetAppData(p)                      (p)->GetAppData()
1775 #define IDirect3DRMFrame3_SetName(p,a)                       (p)->SetName(a)
1776 #define IDirect3DRMFrame3_GetName(p,a,b)                     (p)->GetName(a,b)
1777 #define IDirect3DRMFrame3_GetClassName(p,a,b)                (p)->GetClassName(a,b)
1778 /*** IDirect3DRMFrame3 methods ***/
1779 #define IDirect3DRMFrame3_AddChild(p,a)                      (p)->AddChild(a)
1780 #define IDirect3DRMFrame3_AddLight(p,a)                      (p)->AddLight(a)
1781 #define IDirect3DRMFrame3_AddMoveCallback(p,a,b,c)           (p)->AddMoveCallback(a,b,c)
1782 #define IDirect3DRMFrame3_AddTransform(p,a,b)                (p)->AddTransform(a,b)
1783 #define IDirect3DRMFrame3_AddTranslation(p,a,b,c,d)          (p)->AddTranslation(a,b,c,d)
1784 #define IDirect3DRMFrame3_AddScale(p,a,b,c,d)                (p)->AddScale(a,b,c,d)
1785 #define IDirect3DRMFrame3_AddRotation(p,a,b,c,d,e)           (p)->AddRotation(a,b,c,d,e)
1786 #define IDirect3DRMFrame3_AddVisual(p,a)                     (p)->AddVisual(a)
1787 #define IDirect3DRMFrame3_GetChildren(p,a)                   (p)->GetChildren(a)
1788 #define IDirect3DRMFrame3_GetColor(p)                        (p)->GetColor()
1789 #define IDirect3DRMFrame3_GetLights(p,a)                     (p)->GetLights(a)
1790 #define IDirect3DRMFrame3_GetMaterialMode(p)                 (p)->GetMaterialMode()
1791 #define IDirect3DRMFrame3_GetParent(p,a)                     (p)->GetParent(a)
1792 #define IDirect3DRMFrame3_GetPosition(p,a,b)                 (p)->GetPosition(a,b)
1793 #define IDirect3DRMFrame3_GetRotation(p,a,b,c)               (p)->GetRotation(a,b,c)
1794 #define IDirect3DRMFrame3_GetScene(p,a)                      (p)->GetScene(a)
1795 #define IDirect3DRMFrame3_GetSortMode(p)                     (p)->GetSortMode()
1796 #define IDirect3DRMFrame3_GetTexture(p,a)                    (p)->GetTexture(a)
1797 #define IDirect3DRMFrame3_GetTransform(p,a,b)                (p)->GetTransform(a,b)
1798 #define IDirect3DRMFrame3_GetVelocity(p,a,b,c)               (p)->GetVelocity(a,b,c)
1799 #define IDirect3DRMFrame3_GetOrientation(p,a,b,c)            (p)->GetOrientation(a,b,c)
1800 #define IDirect3DRMFrame3_GetVisuals(p,a,b)                  (p)->GetVisuals(a,b)
1801 #define IDirect3DRMFrame3_InverseTransform(p,a,b)            (p)->InverseTransform(a,b)
1802 #define IDirect3DRMFrame3_Load(p,a,b,c,d,e)                  (p)->Load(a,b,c,d,e)
1803 #define IDirect3DRMFrame3_LookAt(p,a,b,c)                    (p)->LookAt(a,b,c)
1804 #define IDirect3DRMFrame3_Move(p,a)                          (p)->Move(a)
1805 #define IDirect3DRMFrame3_DeleteChild(p,a)                   (p)->DeleteChild(a)
1806 #define IDirect3DRMFrame3_DeleteLight(p,a)                   (p)->DeleteLight(a)
1807 #define IDirect3DRMFrame3_DeleteMoveCallback(p,a,b)          (p)->DeleteMoveCallback(a,b)
1808 #define IDirect3DRMFrame3_DeleteVisual(p,a)                  (p)->DeleteVisual(a)
1809 #define IDirect3DRMFrame3_GetSceneBackground(p)              (p)->GetSceneBackground()
1810 #define IDirect3DRMFrame3_GetSceneBackgroundDepth(p,a)       (p)->GetSceneBackgroundDepth(a)
1811 #define IDirect3DRMFrame3_GetSceneFogColor(p)                (p)->GetSceneFogColor()
1812 #define IDirect3DRMFrame3_GetSceneFogEnable(p)               (p)->GetSceneFogEnable()
1813 #define IDirect3DRMFrame3_GetSceneFogMode(p)                 (p)->GetSceneFogMode()
1814 #define IDirect3DRMFrame3_GetSceneFogParams(p,a,b,c)         (p)->GetSceneFogParams(a,b,c)
1815 #define IDirect3DRMFrame3_SetSceneBackground(p,a)            (p)->SetSceneBackground(a)
1816 #define IDirect3DRMFrame3_SetSceneBackgroundRGB(p,a,b,c)     (p)->SetSceneBackgroundRGB(a,b,c)
1817 #define IDirect3DRMFrame3_SetSceneBackgroundDepth(p,a)       (p)->SetSceneBackgroundDepth(a)
1818 #define IDirect3DRMFrame3_SetSceneBackgroundImage(p,a)       (p)->SetSceneBackgroundImage(a)
1819 #define IDirect3DRMFrame3_SetSceneFogEnable(p,a)             (p)->SetSceneFogEnable(a)
1820 #define IDirect3DRMFrame3_SetSceneFogColor(p,a)              (p)->SetSceneFogColor(a)
1821 #define IDirect3DRMFrame3_SetSceneFogMode(p,a)               (p)->SetSceneFogMode(a)
1822 #define IDirect3DRMFrame3_SetSceneFogParams(p,a,b,c)         (p)->SetSceneFogParams(a,b,c)
1823 #define IDirect3DRMFrame3_SetColor(p,a)                      (p)->SetColor(a)
1824 #define IDirect3DRMFrame3_SetColorRGB(p,a,b,c)               (p)->SetColorRGB(a,b,c)
1825 #define IDirect3DRMFrame3_GetZbufferMode(p)                  (p)->GetZbufferMode()
1826 #define IDirect3DRMFrame3_SetMaterialMode(p,a)               (p)->SetMaterialMode(a)
1827 #define IDirect3DRMFrame3_SetOrientation(p,a,b,c,d,e,f,g)    (p)->SetOrientation(a,b,c,d,e,f,g)
1828 #define IDirect3DRMFrame3_SetPosition(p,a,b,c,d)             (p)->SetPosition(a,b,c,d)
1829 #define IDirect3DRMFrame3_SetRotation(p,a,b,c,d,e)           (p)->SetRotation(a,b,c,d,e)
1830 #define IDirect3DRMFrame3_SetSortMode(p,a)                   (p)->SetSortMode(a)
1831 #define IDirect3DRMFrame3_SetTexture(p,a)                    (p)->SetTexture(a)
1832 #define IDirect3DRMFrame3_SetVelocity(p,a,b,c,d,e)           (p)->SetVelocity(a,b,c,d,e)
1833 #define IDirect3DRMFrame3_SetZbufferMode(p,a)                (p)->SetZbufferMode(a)
1834 #define IDirect3DRMFrame3_Transform(p,a,b)                   (p)->Transform(a,b)
1835 #define IDirect3DRMFrame3_GetBox(p,a)                        (p)->GetBox(a)
1836 #define IDirect3DRMFrame3_GetBoxEnable(p)                    (p)->GetBoxEnable()
1837 #define IDirect3DRMFrame3_GetAxes(p,a,b)                     (p)->GetAxes(a,b)
1838 #define IDirect3DRMFrame3_GetMaterial(p,a)                   (p)->GetMaterial(a)
1839 #define IDirect3DRMFrame3_GetInheritAxes(p)                  (p)->GetInheritAxes()
1840 #define IDirect3DRMFrame3_GetHierarchyBox(p,a)               (p)->GetHierarchyBox(a)
1841 #define IDirect3DRMFrame3_SetBox(p,a)                        (p)->SetBox(a)
1842 #define IDirect3DRMFrame3_SetBoxEnable(p,a)                  (p)->SetBoxEnable(a)
1843 #define IDirect3DRMFrame3_SetAxes(p,a,b,c,d,e,f)             (p)->SetAxes(a,b,c,d,e,f)
1844 #define IDirect3DRMFrame3_SetInheritAxes(p,a)                (p)->SetInheritAxes(a)
1845 #define IDirect3DRMFrame3_SetMaterial(p,a)                   (p)->SetMaterial(a)
1846 #define IDirect3DRMFrame3_SetQuaternion(p,a,b)               (p)->SetQuaternion(a,b)
1847 #define IDirect3DRMFrame3_RayPick(p,a,b,c,d)                 (p)->RayPick(a,b,c,d)
1848 #define IDirect3DRMFrame3_Save(p,a,b,c)                      (p)->Save(a,b,c)
1849 #define IDirect3DRMFrame3_TransformVectors(p,a,b,c,d)        (p)->TransformVectors(a,b,c,d)
1850 #define IDirect3DRMFrame3_InverseTransformVectors(p,a,b,c,d) (p)->InverseTransformVectors(a,b,c,d)
1851 #define IDirect3DRMFrame3_SetTraversalOptions(p,a)           (p)->SetTraversalOptions(a)
1852 #define IDirect3DRMFrame3_GetTraversalOptions(p,a)           (p)->GetTraversalOptions(a)
1853 #define IDirect3DRMFrame3_SetSceneFogMethod(p,a)             (p)->SetSceneFogMethod(a)
1854 #define IDirect3DRMFrame3_GetSceneFogMethod(p,a)             (p)->GetSceneFogMethod(a)
1855 #define IDirect3DRMFrame3_SetMaterialOverride(p,a)           (p)->SetMaterialOverride(a)
1856 #define IDirect3DRMFrame3_GetMaterialOverride(p,a)           (p)->GetMaterialOverride(a)
1857 #endif
1858
1859 /*****************************************************************************
1860  * IDirect3DRMMesh interface
1861  */
1862 #define INTERFACE IDirect3DRMMesh
1863 DECLARE_INTERFACE_(IDirect3DRMMesh,IDirect3DRMVisual)
1864 {
1865     /*** IUnknown methods ***/
1866     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
1867     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
1868     STDMETHOD_(ULONG,Release)(THIS) PURE;
1869     /*** IDirect3DRMObject methods ***/
1870     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
1871     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
1872     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
1873     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
1874     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
1875     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
1876     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
1877     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
1878     /*** IDirect3DRMMesh methods ***/
1879     STDMETHOD(Scale)(THIS_ D3DVALUE sx, D3DVALUE sy, D3DVALUE sz) PURE;
1880     STDMETHOD(Translate)(THIS_ D3DVALUE tx, D3DVALUE ty, D3DVALUE tz) PURE;
1881     STDMETHOD(GetBox)(THIS_ D3DRMBOX *) PURE;
1882     STDMETHOD(AddGroup)(THIS_ unsigned vCount, unsigned fCount, unsigned vPerFace, unsigned *fData,
1883         D3DRMGROUPINDEX *returnId) PURE;
1884     STDMETHOD(SetVertices)(THIS_ D3DRMGROUPINDEX id, unsigned index, unsigned count,
1885         D3DRMVERTEX *values) PURE;
1886     STDMETHOD(SetGroupColor)(THIS_ D3DRMGROUPINDEX id, D3DCOLOR value) PURE;
1887     STDMETHOD(SetGroupColorRGB)(THIS_ D3DRMGROUPINDEX id, D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE;
1888     STDMETHOD(SetGroupMapping)(THIS_ D3DRMGROUPINDEX id, D3DRMMAPPING value) PURE;
1889     STDMETHOD(SetGroupQuality)(THIS_ D3DRMGROUPINDEX id, D3DRMRENDERQUALITY value) PURE;
1890     STDMETHOD(SetGroupMaterial)(THIS_ D3DRMGROUPINDEX id, LPDIRECT3DRMMATERIAL value) PURE;
1891     STDMETHOD(SetGroupTexture)(THIS_ D3DRMGROUPINDEX id, LPDIRECT3DRMTEXTURE value) PURE;
1892     STDMETHOD_(unsigned, GetGroupCount)(THIS) PURE;
1893     STDMETHOD(GetGroup)(THIS_ D3DRMGROUPINDEX id, unsigned *vCount, unsigned *fCount, unsigned *vPerFace,
1894         DWORD *fDataSize, unsigned *fData) PURE;
1895     STDMETHOD(GetVertices)(THIS_ D3DRMGROUPINDEX id, DWORD index, DWORD count, D3DRMVERTEX *returnPtr) PURE;
1896     STDMETHOD_(D3DCOLOR, GetGroupColor)(THIS_ D3DRMGROUPINDEX id) PURE;
1897     STDMETHOD_(D3DRMMAPPING, GetGroupMapping)(THIS_ D3DRMGROUPINDEX id) PURE;
1898     STDMETHOD_(D3DRMRENDERQUALITY, GetGroupQuality)(THIS_ D3DRMGROUPINDEX id) PURE;
1899     STDMETHOD(GetGroupMaterial)(THIS_ D3DRMGROUPINDEX id, LPDIRECT3DRMMATERIAL *returnPtr) PURE;
1900     STDMETHOD(GetGroupTexture)(THIS_ D3DRMGROUPINDEX id, LPDIRECT3DRMTEXTURE *returnPtr) PURE;
1901 };
1902 #undef INTERFACE
1903
1904 #if !defined(__cplusplus) || defined(CINTERFACE)
1905 /*** IUnknown methods ***/
1906 #define IDirect3DRMMesh_QueryInterface(p,a,b)              (p)->lpVtbl->QueryInterface(p,a,b)
1907 #define IDirect3DRMMesh_AddRef(p)                          (p)->lpVtbl->AddRef(p)
1908 #define IDirect3DRMMesh_Release(p)                         (p)->lpVtbl->Release(p)
1909 /*** IDirect3DRMObject methods ***/
1910 #define IDirect3DRMMesh_Clone(p,a,b,c)                     (p)->lpVtbl->Clone(p,a,b,c)
1911 #define IDirect3DRMMesh_AddDestroyCallback(p,a,b)          (p)->lpVtbl->AddDestroyCallback(p,a,b)
1912 #define IDirect3DRMMesh_DeleteDestroyCallback(p,a,b)       (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
1913 #define IDirect3DRMMesh_SetAppData(p,a)                    (p)->lpVtbl->SetAppData(p,a)
1914 #define IDirect3DRMMesh_GetAppData(p)                      (p)->lpVtbl->GetAppData(p)
1915 #define IDirect3DRMMesh_SetName(p,a)                       (p)->lpVtbl->SetName(p,a)
1916 #define IDirect3DRMMesh_GetName(p,a,b)                     (p)->lpVtbl->GetName(p,a,b)
1917 #define IDirect3DRMMesh_GetClassName(p,a,b)                (p)->lpVtbl->GetClassName(p,a,b)
1918 /*** IDirect3DRMMesh methods ***/
1919 #define IDirect3DRMMesh_Scale(p,a,b,c)                     (p)->lpVtbl->Scale(p,a,b,c)
1920 #define IDirect3DRMMesh_Translate(p,a,b,c)                 (p)->lpVtbl->Translate(p,a,b,c)
1921 #define IDirect3DRMMesh_GetBox(p,a)                        (p)->lpVtbl->GetBox(p,a)
1922 #define IDirect3DRMMesh_AddGroup(p,a,b,c,d,e)              (p)->lpVtbl->AddGroup(p,a,b,c,d,e)
1923 #define IDirect3DRMMesh_SetVertices(p,a,b,c,d)             (p)->lpVtbl->SetVertices(p,a,b,c,d)
1924 #define IDirect3DRMMesh_SetGroupColor(p,a,b)               (p)->lpVtbl->SetGroupColor(p,a,b)
1925 #define IDirect3DRMMesh_SetGroupColorRGB(p,a,b,c,d)        (p)->lpVtbl->SetGroupColorRGB(p,a,b,c,d)
1926 #define IDirect3DRMMesh_SetGroupMapping(p,a,b)             (p)->lpVtbl->SetGroupMapping(p,a,b)
1927 #define IDirect3DRMMesh_SetGroupQuality(p,a,b)             (p)->lpVtbl->SetGroupQuality(p,a,b)
1928 #define IDirect3DRMMesh_SetGroupMaterial(p,a,b)            (p)->lpVtbl->SetGroupMaterial(p,a,b)
1929 #define IDirect3DRMMesh_SetGroupTexture(p,a,b)             (p)->lpVtbl->SetGroupTexture(p,a,b)
1930 #define IDirect3DRMMesh_GetGroupCount(p)                   (p)->lpVtbl->GetGroupCount(p)
1931 #define IDirect3DRMMesh_GetGroup(p,a,b,c,d,e,f)            (p)->lpVtbl->GetGroup(p,a,b,c,d,e,f)
1932 #define IDirect3DRMMesh_GetVertices(p,a,b,c,d)             (p)->lpVtbl->GetVertices(p,a,b,c,d)
1933 #define IDirect3DRMMesh_GetGroupColor(p,a)                 (p)->lpVtbl->GetGroupColor(p,a)
1934 #define IDirect3DRMMesh_GetGroupMapping(p,a)               (p)->lpVtbl->GetGroupMapping(p,a)
1935 #define IDirect3DRMMesh_GetGroupQuality(p,a)               (p)->lpVtbl->GetGroupQuality(p,a)
1936 #define IDirect3DRMMesh_GetGroupMaterial(p,a,b)            (p)->lpVtbl->GetGroupMaterial(p,a,b)
1937 #define IDirect3DRMMesh_GetGroupTexture(p,a,b)             (p)->lpVtbl->GetGroupTexture(p,a,b)
1938 #else
1939 /*** IUnknown methods ***/
1940 #define IDirect3DRMMesh_QueryInterface(p,a,b)              (p)->QueryInterface(a,b)
1941 #define IDirect3DRMMesh_AddRef(p)                          (p)->AddRef()
1942 #define IDirect3DRMMesh_Release(p)                         (p)->Release()
1943 /*** IDirect3DRMObject methods ***/
1944 #define IDirect3DRMMesh_Clone(p,a,b,c)                     (p)->Clone(a,b,c)
1945 #define IDirect3DRMMesh_AddDestroyCallback(p,a,b)          (p)->AddDestroyCallback(a,b)
1946 #define IDirect3DRMMesh_DeleteDestroyCallback(p,a,b)       (p)->DeleteDestroyCallback(a,b)
1947 #define IDirect3DRMMesh_SetAppData(p,a)                    (p)->SetAppData(a)
1948 #define IDirect3DRMMesh_GetAppData(p)                      (p)->GetAppData()
1949 #define IDirect3DRMMesh_SetName(p,a)                       (p)->SetName(a)
1950 #define IDirect3DRMMesh_GetName(p,a,b)                     (p)->GetName(a,b)
1951 #define IDirect3DRMMesh_GetClassName(p,a,b)                (p)->GetClassName(a,b)
1952 /*** IDirect3DRMMesh methods ***/
1953 #define IDirect3DRMMesh_Scale(p,a,b,c)                     (p)->Scale(a,b,c)
1954 #define IDirect3DRMMesh_Translate(p,a,b,c)                 (p)->Translate(a,b,c)
1955 #define IDirect3DRMMesh_GetBox(p,a)                        (p)->GetBox(a)
1956 #define IDirect3DRMMesh_AddGroup(p,a,b,c,d,e)              (p)->AddGroup(a,b,c,d,e)
1957 #define IDirect3DRMMesh_SetVertices(p,a,b,c,d)             (p)->SetVertices(a,b,c,d)
1958 #define IDirect3DRMMesh_SetGroupColor(p,a,b)               (p)->SetGroupColor(a,b)
1959 #define IDirect3DRMMesh_SetGroupColorRGB(p,a,b,c,d)        (p)->SetGroupColorRGB(a,b,c,d)
1960 #define IDirect3DRMMesh_SetGroupMapping(p,a,b)             (p)->SetGroupMapping(a,b)
1961 #define IDirect3DRMMesh_SetGroupQuality(p,a,b)             (p)->SetGroupQuality(a,b)
1962 #define IDirect3DRMMesh_SetGroupMaterial(p,a,b)            (p)->SetGroupMaterial(a,b)
1963 #define IDirect3DRMMesh_SetGroupTexture(p,a,b)             (p)->SetGroupTexture(a,b)
1964 #define IDirect3DRMMesh_GetGroupCount(p)                   (p)->GetGroupCount()
1965 #define IDirect3DRMMesh_GetGroup(p,a,b,c,d,e,f)            (p)->GetGroup(a,b,c,d,e,f)
1966 #define IDirect3DRMMesh_GetVertices(p,a,b,c,d)             (p)->GetVertices(a,b,c,d)
1967 #define IDirect3DRMMesh_GetGroupColor(p,a)                 (p)->GetGroupColor(a)
1968 #define IDirect3DRMMesh_GetGroupMapping(p,a)               (p)->GetGroupMapping(a)
1969 #define IDirect3DRMMesh_GetGroupQuality(p,a)               (p)->GetGroupQuality(a)
1970 #define IDirect3DRMMesh_GetGroupMaterial(p,a,b)            (p)->GetGroupMaterial(a,b)
1971 #define IDirect3DRMMesh_GetGroupTexture(p,a,b)             (p)->GetGroupTexture(a,b)
1972 #endif
1973
1974 /*****************************************************************************
1975  * IDirect3DRMProgressiveMesh interface
1976  */
1977 #define INTERFACE IDirect3DRMProgressiveMesh
1978 DECLARE_INTERFACE_(IDirect3DRMProgressiveMesh,IDirect3DRMVisual)
1979 {
1980     /*** IUnknown methods ***/
1981     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
1982     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
1983     STDMETHOD_(ULONG,Release)(THIS) PURE;
1984     /*** IDirect3DRMObject methods ***/
1985     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
1986     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
1987     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
1988     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
1989     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
1990     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
1991     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
1992     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
1993     /*** IDirect3DRMProgressiveMesh methods ***/
1994     STDMETHOD(Load) (THIS_ LPVOID pObjLocation, LPVOID pObjId, D3DRMLOADOPTIONS dloLoadflags,
1995         D3DRMLOADTEXTURECALLBACK pCallback, LPVOID lpArg) PURE;
1996     STDMETHOD(GetLoadStatus) (THIS_ LPD3DRMPMESHLOADSTATUS pStatus) PURE;
1997     STDMETHOD(SetMinRenderDetail) (THIS_ D3DVALUE d3dVal) PURE;
1998     STDMETHOD(Abort) (THIS_ DWORD flags) PURE;
1999     STDMETHOD(GetFaceDetail) (THIS_ LPDWORD pCount) PURE;
2000     STDMETHOD(GetVertexDetail) (THIS_ LPDWORD pCount) PURE;
2001     STDMETHOD(SetFaceDetail) (THIS_ DWORD count) PURE;
2002     STDMETHOD(SetVertexDetail) (THIS_ DWORD count) PURE;
2003     STDMETHOD(GetFaceDetailRange) (THIS_ LPDWORD pMin, LPDWORD pMax) PURE;
2004     STDMETHOD(GetVertexDetailRange) (THIS_ LPDWORD pMin, LPDWORD pMax) PURE;
2005     STDMETHOD(GetDetail) (THIS_ D3DVALUE *pdvVal) PURE;
2006     STDMETHOD(SetDetail) (THIS_ D3DVALUE d3dVal) PURE;
2007     STDMETHOD(RegisterEvents) (THIS_ HANDLE event, DWORD flags, DWORD reserved) PURE;
2008     STDMETHOD(CreateMesh) (THIS_ LPDIRECT3DRMMESH *ppD3DRMMesh) PURE;
2009     STDMETHOD(Duplicate) (THIS_ LPDIRECT3DRMPROGRESSIVEMESH *ppD3DRMPMesh) PURE;
2010     STDMETHOD(GetBox) (THIS_ LPD3DRMBOX pBBox) PURE;
2011     STDMETHOD(SetQuality) (THIS_ D3DRMRENDERQUALITY) PURE;
2012     STDMETHOD(GetQuality) (THIS_ LPD3DRMRENDERQUALITY pQuality) PURE;
2013 };
2014 #undef INTERFACE
2015
2016 #if !defined(__cplusplus) || defined(CINTERFACE)
2017 /*** IUnknown methods ***/
2018 #define IDirect3DRMProgressiveMesh_QueryInterface(p,a,b)          (p)->lpVtbl->QueryInterface(p,a,b)
2019 #define IDirect3DRMProgressiveMesh_AddRef(p)                      (p)->lpVtbl->AddRef(p)
2020 #define IDirect3DRMProgressiveMesh_Release(p)                     (p)->lpVtbl->Release(p)
2021 /*** IDirect3DRMObject methods ***/
2022 #define IDirect3DRMProgressiveMesh_Clone(p,a,b,c)                 (p)->lpVtbl->Clone(p,a,b,c)
2023 #define IDirect3DRMProgressiveMesh_AddDestroyCallback(p,a,b)      (p)->lpVtbl->AddDestroyCallback(p,a,b)
2024 #define IDirect3DRMProgressiveMesh_DeleteDestroyCallback(p,a,b)   (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
2025 #define IDirect3DRMProgressiveMesh_SetAppData(p,a)                (p)->lpVtbl->SetAppData(p,a)
2026 #define IDirect3DRMProgressiveMesh_GetAppData(p)                  (p)->lpVtbl->GetAppData(p)
2027 #define IDirect3DRMProgressiveMesh_SetName(p,a)                   (p)->lpVtbl->SetName(p,a)
2028 #define IDirect3DRMProgressiveMesh_GetName(p,a,b)                 (p)->lpVtbl->GetName(p,a,b)
2029 #define IDirect3DRMProgressiveMesh_GetClassName(p,a,b)            (p)->lpVtbl->GetClassName(p,a,b)
2030 /*** IDirect3DRMProgressiveMesh methods ***/
2031 #define IDirect3DRMProgressiveMesh_Load(p,a,b,c,d,e)              (p)->lpVtbl->Load(p,a,b,c,d,e)
2032 #define IDirect3DRMProgressiveMesh_GetLoadStatus(p,a)             (p)->lpVtbl->GetLoadStatus(p,a)
2033 #define IDirect3DRMProgressiveMesh_SetMinRenderDetail(p,a)        (p)->lpVtbl->SetMinRenderDetail(p,a)
2034 #define IDirect3DRMProgressiveMesh_Abort(p,a)                     (p)->lpVtbl->Abort(p,a)
2035 #define IDirect3DRMProgressiveMesh_GetFaceDetail(p,a)             (p)->lpVtbl->GetFaceDetail(p,a)
2036 #define IDirect3DRMProgressiveMesh_GetVertexDetail(p,a)           (p)->lpVtbl->GetVertexDetail(p,a)
2037 #define IDirect3DRMProgressiveMesh_SetFaceDetail(p,a)             (p)->lpVtbl->SetFaceDetail(p,a)
2038 #define IDirect3DRMProgressiveMesh_SetVertexDetail(p,a)           (p)->lpVtbl->SetVertexDetail(p,a)
2039 #define IDirect3DRMProgressiveMesh_GetFaceDetailRange(p,a,b)      (p)->lpVtbl->GetFaceDetailRange(p,a,b)
2040 #define IDirect3DRMProgressiveMesh_GetVertexDetailRange(p,a,b)    (p)->lpVtbl->GetVertexDetailRange(p,a,b)
2041 #define IDirect3DRMProgressiveMesh_GetDetail(p,a)                 (p)->lpVtbl->GetDetail(p,a)
2042 #define IDirect3DRMProgressiveMesh_SetDetail(p,a)                 (p)->lpVtbl->SetDetail(p,a)
2043 #define IDirect3DRMProgressiveMesh_RegisterEvents(p,a,b,c)        (p)->lpVtbl->RegisterEvents(p,a,b,c)
2044 #define IDirect3DRMProgressiveMesh_CreateMesh(p,a)                (p)->lpVtbl->CreateMesh(p,a)
2045 #define IDirect3DRMProgressiveMesh_Duplicate(p,a)                 (p)->lpVtbl->Duplicate(p,a)
2046 #define IDirect3DRMProgressiveMesh_GetBox(p,a)                    (p)->lpVtbl->GetBox(p,a)
2047 #define IDirect3DRMProgressiveMesh_SetQuality(p,a)                (p)->lpVtbl->SetQuality(p,a)
2048 #define IDirect3DRMProgressiveMesh_GetQuality(p,a)                (p)->lpVtbl->GetQuality(p,a)
2049 #else
2050 /*** IUnknown methods ***/
2051 #define IDirect3DRMProgressiveMesh_QueryInterface(p,a,b)          (p)->QueryInterface(a,b)
2052 #define IDirect3DRMProgressiveMesh_AddRef(p)                      (p)->AddRef()
2053 #define IDirect3DRMProgressiveMesh_Release(p)                     (p)->Release()
2054 /*** IDirect3DRMObject methods ***/
2055 #define IDirect3DRMProgressiveMesh_Clone(p,a,b,c)                 (p)->Clone(a,b,c)
2056 #define IDirect3DRMProgressiveMesh_AddDestroyCallback(p,a,b)      (p)->AddDestroyCallback(a,b)
2057 #define IDirect3DRMProgressiveMesh_DeleteDestroyCallback(p,a,b)   (p)->DeleteDestroyCallback(a,b)
2058 #define IDirect3DRMProgressiveMesh_SetAppData(p,a)                (p)->SetAppData(a)
2059 #define IDirect3DRMProgressiveMesh_GetAppData(p)                  (p)->GetAppData()
2060 #define IDirect3DRMProgressiveMesh_SetName(p,a)                   (p)->SetName(a)
2061 #define IDirect3DRMProgressiveMesh_GetName(p,a,b)                 (p)->GetName(a,b)
2062 #define IDirect3DRMProgressiveMesh_GetClassName(p,a,b)            (p)->GetClassName(a,b)
2063 /*** IDirect3DRMProgressiveMesh methods ***/
2064 #define IDirect3DRMProgressiveMesh_Load(p,a,b,c,d,e)              (p)->Load(a,b,c,d,e)
2065 #define IDirect3DRMProgressiveMesh_GetLoadStatus(p,a)             (p)->GetLoadStatus(a)
2066 #define IDirect3DRMProgressiveMesh_SetMinRenderDetail(p,a)        (p)->SetMinRenderDetail(a)
2067 #define IDirect3DRMProgressiveMesh_Abort(p,a)                     (p)->Abort(a)
2068 #define IDirect3DRMProgressiveMesh_GetFaceDetail(p,a)             (p)->GetFaceDetail(a)
2069 #define IDirect3DRMProgressiveMesh_GetVertexDetail(p,a)           (p)->GetVertexDetail(a)
2070 #define IDirect3DRMProgressiveMesh_SetFaceDetail(p,a)             (p)->SetFaceDetail(a)
2071 #define IDirect3DRMProgressiveMesh_SetVertexDetail(p,a)           (p)->SetVertexDetail(a)
2072 #define IDirect3DRMProgressiveMesh_GetFaceDetailRange(p,a,b)      (p)->GetFaceDetailRange(a,b)
2073 #define IDirect3DRMProgressiveMesh_GetVertexDetailRange(p,a,b)    (p)->GetVertexDetailRange(a,b)
2074 #define IDirect3DRMProgressiveMesh_GetDetail(p,a)                 (p)->GetDetail(a)
2075 #define IDirect3DRMProgressiveMesh_SetDetail(p,a)                 (p)->SetDetail(a)
2076 #define IDirect3DRMProgressiveMesh_RegisterEvents(p,a,b,c)        (p)->RegisterEvents(a,b,c)
2077 #define IDirect3DRMProgressiveMesh_CreateMesh(p,a)                (p)->CreateMesh(a)
2078 #define IDirect3DRMProgressiveMesh_Duplicate(p,a)                 (p)->Duplicate(a)
2079 #define IDirect3DRMProgressiveMesh_GetBox(p,a)                    (p)->GetBox(a)
2080 #define IDirect3DRMProgressiveMesh_SetQuality(p,a)                (p)->SetQuality(a)
2081 #define IDirect3DRMProgressiveMesh_GetQuality(p,a)                (p)->GetQuality(a)
2082 #endif
2083
2084 /*****************************************************************************
2085  * IDirect3DRMShadow interface
2086  */
2087 #define INTERFACE IDirect3DRMShadow
2088 DECLARE_INTERFACE_(IDirect3DRMShadow,IDirect3DRMVisual)
2089 {
2090     /*** IUnknown methods ***/
2091     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
2092     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
2093     STDMETHOD_(ULONG,Release)(THIS) PURE;
2094     /*** IDirect3DRMObject methods ***/
2095     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
2096     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
2097     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
2098     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
2099     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
2100     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
2101     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
2102     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
2103     /*** IDirect3DRMShadow methods ***/
2104     STDMETHOD(Init)(THIS_ LPDIRECT3DRMVISUAL visual, LPDIRECT3DRMLIGHT light,
2105         D3DVALUE px, D3DVALUE py, D3DVALUE pz, D3DVALUE nx, D3DVALUE ny, D3DVALUE nz) PURE;
2106 };
2107 #undef INTERFACE
2108
2109 #if !defined(__cplusplus) || defined(CINTERFACE)
2110 /*** IUnknown methods ***/
2111 #define IDirect3DRMShadow_QueryInterface(p,a,b)          (p)->lpVtbl->QueryInterface(p,a,b)
2112 #define IDirect3DRMShadow_AddRef(p)                      (p)->lpVtbl->AddRef(p)
2113 #define IDirect3DRMShadow_Release(p)                     (p)->lpVtbl->Release(p)
2114 /*** IDirect3DRMObject methods ***/
2115 #define IDirect3DRMShadow_Clone(p,a,b,c)                 (p)->lpVtbl->Clone(p,a,b,c)
2116 #define IDirect3DRMShadow_AddDestroyCallback(p,a,b)      (p)->lpVtbl->AddDestroyCallback(p,a,b)
2117 #define IDirect3DRMShadow_DeleteDestroyCallback(p,a,b)   (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
2118 #define IDirect3DRMShadow_SetAppData(p,a)                (p)->lpVtbl->SetAppData(p,a)
2119 #define IDirect3DRMShadow_GetAppData(p)                  (p)->lpVtbl->GetAppData(p)
2120 #define IDirect3DRMShadow_SetName(p,a)                   (p)->lpVtbl->SetName(p,a)
2121 #define IDirect3DRMShadow_GetName(p,a,b)                 (p)->lpVtbl->GetName(p,a,b)
2122 #define IDirect3DRMShadow_GetClassName(p,a,b)            (p)->lpVtbl->GetClassName(p,a,b)
2123 /*** IDirect3DRMShadow methods ***/
2124 #define IDirect3DRMShadow_Init(p,a,b,c,d,e,f,g)          (p)->lpVtbl->Load(p,a,b,c,d,e,f,g)
2125 #else
2126 /*** IUnknown methods ***/
2127 #define IDirect3DRMShadow_QueryInterface(p,a,b)          (p)->QueryInterface(a,b)
2128 #define IDirect3DRMShadow_AddRef(p)                      (p)->AddRef()
2129 #define IDirect3DRMShadow_Release(p)                     (p)->Release()
2130 /*** IDirect3DRMObject methods ***/
2131 #define IDirect3DRMShadow_Clone(p,a,b,c)                 (p)->Clone(a,b,c)
2132 #define IDirect3DRMShadow_AddDestroyCallback(p,a,b)      (p)->AddDestroyCallback(a,b)
2133 #define IDirect3DRMShadow_DeleteDestroyCallback(p,a,b)   (p)->DeleteDestroyCallback(a,b)
2134 #define IDirect3DRMShadow_SetAppData(p,a)                (p)->SetAppData(a)
2135 #define IDirect3DRMShadow_GetAppData(p)                  (p)->GetAppData()
2136 #define IDirect3DRMShadow_SetName(p,a)                   (p)->SetName(a)
2137 #define IDirect3DRMShadow_GetName(p,a,b)                 (p)->GetName(a,b)
2138 #define IDirect3DRMShadow_GetClassName(p,a,b)            (p)->GetClassName(a,b)
2139 /*** IDirect3DRMShadow methods ***/
2140 #define IDirect3DRMShadow_Init(p,a,b,c,d,e,f,g)          (p)->Load(a,b,c,d,e,f,g)
2141 #endif
2142
2143 /*****************************************************************************
2144  * IDirect3DRMShadow2 interface
2145  */
2146 #define INTERFACE IDirect3DRMShadow2
2147 DECLARE_INTERFACE_(IDirect3DRMShadow2,IDirect3DRMVisual)
2148 {
2149     /*** IUnknown methods ***/
2150     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
2151     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
2152     STDMETHOD_(ULONG,Release)(THIS) PURE;
2153     /*** IDirect3DRMObject methods ***/
2154     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
2155     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
2156     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
2157     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
2158     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
2159     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
2160     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
2161     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
2162     /*** IDirect3DRMShadow methods ***/
2163     STDMETHOD(Init)(THIS_ LPUNKNOWN pUNK, LPDIRECT3DRMLIGHT light,
2164         D3DVALUE px, D3DVALUE py, D3DVALUE pz, D3DVALUE nx, D3DVALUE ny, D3DVALUE nz) PURE;
2165     /*** IDirect3DRMShadow2 methods ***/
2166     STDMETHOD(GetVisual)(THIS_ LPDIRECT3DRMVISUAL *) PURE;
2167     STDMETHOD(SetVisual)(THIS_ LPUNKNOWN pUNK, DWORD) PURE;
2168     STDMETHOD(GetLight)(THIS_ LPDIRECT3DRMLIGHT *) PURE;
2169     STDMETHOD(SetLight)(THIS_ LPDIRECT3DRMLIGHT, DWORD) PURE;
2170     STDMETHOD(GetPlane)(THIS_ LPD3DVALUE px, LPD3DVALUE py, LPD3DVALUE pz,
2171         LPD3DVALUE nx, LPD3DVALUE ny, LPD3DVALUE nz) PURE;
2172     STDMETHOD(SetPlane)(THIS_ D3DVALUE px, D3DVALUE py, D3DVALUE pz,
2173         D3DVALUE nx, D3DVALUE ny, D3DVALUE nz, DWORD) PURE;
2174     STDMETHOD(GetOptions)(THIS_ LPDWORD) PURE;
2175     STDMETHOD(SetOptions)(THIS_ DWORD) PURE;
2176 };
2177 #undef INTERFACE
2178
2179 #if !defined(__cplusplus) || defined(CINTERFACE)
2180 /*** IUnknown methods ***/
2181 #define IDirect3DRMShadow2_QueryInterface(p,a,b)          (p)->lpVtbl->QueryInterface(p,a,b)
2182 #define IDirect3DRMShadow2_AddRef(p)                      (p)->lpVtbl->AddRef(p)
2183 #define IDirect3DRMShadow2_Release(p)                     (p)->lpVtbl->Release(p)
2184 /*** IDirect3DRMObject methods ***/
2185 #define IDirect3DRMShadow2_Clone(p,a,b,c)                 (p)->lpVtbl->Clone(p,a,b,c)
2186 #define IDirect3DRMShadow2_AddDestroyCallback(p,a,b)      (p)->lpVtbl->AddDestroyCallback(p,a,b)
2187 #define IDirect3DRMShadow2_DeleteDestroyCallback(p,a,b)   (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
2188 #define IDirect3DRMShadow2_SetAppData(p,a)                (p)->lpVtbl->SetAppData(p,a)
2189 #define IDirect3DRMShadow2_GetAppData(p)                  (p)->lpVtbl->GetAppData(p)
2190 #define IDirect3DRMShadow2_SetName(p,a)                   (p)->lpVtbl->SetName(p,a)
2191 #define IDirect3DRMShadow2_GetName(p,a,b)                 (p)->lpVtbl->GetName(p,a,b)
2192 #define IDirect3DRMShadow2_GetClassName(p,a,b)            (p)->lpVtbl->GetClassName(p,a,b)
2193 /*** IDirect3DRMShadow methods ***/
2194 #define IDirect3DRMShadow2_Init(p,a,b,c,d,e,f,g)          (p)->lpVtbl->Init(p,a,b,c,d,e,f,g)
2195 /*** IDirect3DRMShadow2 methods ***/
2196 #define IDirect3DRMShadow2_GetVisual(p,a)                 (p)->lpVtbl->GetVisual(p,a)
2197 #define IDirect3DRMShadow2_SetVisual(p,a,b)               (p)->lpVtbl->SetVisual(p,a,b)
2198 #define IDirect3DRMShadow2_GetLight(p,a)                  (p)->lpVtbl->GetLight(p,a)
2199 #define IDirect3DRMShadow2_SetLight(p,a,b)                (p)->lpVtbl->SetLight(p,a,b)
2200 #define IDirect3DRMShadow2_GetPlane(p,a,b,c,d,e,f)        (p)->lpVtbl->GetPlane(p,a,b,c,d,e,f)
2201 #define IDirect3DRMShadow2_SetPlane(p,a,b,c,d,e,f)        (p)->lpVtbl->SetPlane(p,a,b,c,d,e,f)
2202 #define IDirect3DRMShadow2_GetOptions(p,a)                (p)->lpVtbl->GetOptions(p,a)
2203 #define IDirect3DRMShadow2_SetOptions(p,a)                (p)->lpVtbl->SetOptions(p,a)
2204 #else
2205 /*** IUnknown methods ***/
2206 #define IDirect3DRMShadow2_QueryInterface(p,a,b)          (p)->QueryInterface(a,b)
2207 #define IDirect3DRMShadow2_AddRef(p)                      (p)->AddRef()
2208 #define IDirect3DRMShadow2_Release(p)                     (p)->Release()
2209 /*** IDirect3DRMObject methods ***/
2210 #define IDirect3DRMShadow2_Clone(p,a,b,c)                 (p)->Clone(a,b,c)
2211 #define IDirect3DRMShadow2_AddDestroyCallback(p,a,b)      (p)->AddDestroyCallback(a,b)
2212 #define IDirect3DRMShadow2_DeleteDestroyCallback(p,a,b)   (p)->DeleteDestroyCallback(a,b)
2213 #define IDirect3DRMShadow2_SetAppData(p,a)                (p)->SetAppData(a)
2214 #define IDirect3DRMShadow2_GetAppData(p)                  (p)->GetAppData()
2215 #define IDirect3DRMShadow2_SetName(p,a)                   (p)->SetName(a)
2216 #define IDirect3DRMShadow2_GetName(p,a,b)                 (p)->GetName(a,b)
2217 #define IDirect3DRMShadow2_GetClassName(p,a,b)            (p)->GetClassName(a,b)
2218 /*** IDirect3DRMShadow methods ***/
2219 #define IDirect3DRMShadow2_Init(p,a,b,c,d,e,f,g)          (p)->Init(a,b,c,d,e,f,g)
2220 /*** IDirect3DRMShadow2 methods ***/
2221 #define IDirect3DRMShadow2_GetVisual(p,a)                 (p)->GetVisual(a)
2222 #define IDirect3DRMShadow2_SetVisual(p,a,b)               (p)->SetVisual(a,b)
2223 #define IDirect3DRMShadow2_GetLight(p,a)                  (p)->GetLight(a)
2224 #define IDirect3DRMShadow2_SetLight(p,a,b)                (p)->SetLight(a,b)
2225 #define IDirect3DRMShadow2_GetPlane(p,a,b,c,d,e,f)        (p)->GetPlane(a,b,c,d,e,f)
2226 #define IDirect3DRMShadow2_SetPlane(p,a,b,c,d,e,f)        (p)->SetPlane(a,b,c,d,e,f)
2227 #define IDirect3DRMShadow2_GetOptions(p,a)                (p)->GetOptions(a)
2228 #define IDirect3DRMShadow2_SetOptions(p,a)                (p)->SetOptions(a)
2229 #endif
2230
2231 /*****************************************************************************
2232  * IDirect3DRMFace interface
2233  */
2234 #define INTERFACE IDirect3DRMFace
2235 DECLARE_INTERFACE_(IDirect3DRMFace,IDirect3DRMObject)
2236 {
2237     /*** IUnknown methods ***/
2238     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
2239     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
2240     STDMETHOD_(ULONG,Release)(THIS) PURE;
2241     /*** IDirect3DRMObject methods ***/
2242     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
2243     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
2244     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
2245     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
2246     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
2247     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
2248     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
2249     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
2250     /*** IDirect3DRMFace methods ***/
2251     STDMETHOD(AddVertex)(THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
2252     STDMETHOD(AddVertexAndNormalIndexed)(THIS_ DWORD vertex, DWORD normal) PURE;
2253     STDMETHOD(SetColorRGB)(THIS_ D3DVALUE, D3DVALUE, D3DVALUE) PURE;
2254     STDMETHOD(SetColor)(THIS_ D3DCOLOR) PURE;
2255     STDMETHOD(SetTexture)(THIS_ LPDIRECT3DRMTEXTURE) PURE;
2256     STDMETHOD(SetTextureCoordinates)(THIS_ DWORD vertex, D3DVALUE u, D3DVALUE v) PURE;
2257     STDMETHOD(SetMaterial)(THIS_ LPDIRECT3DRMMATERIAL) PURE;
2258     STDMETHOD(SetTextureTopology)(THIS_ BOOL wrap_u, BOOL wrap_v) PURE;
2259     STDMETHOD(GetVertex)(THIS_ DWORD index, D3DVECTOR *vertex, D3DVECTOR *normal) PURE;
2260     STDMETHOD(GetVertices)(THIS_ DWORD *vertex_count, D3DVECTOR *coords, D3DVECTOR *normals);
2261     STDMETHOD(GetTextureCoordinates)(THIS_ DWORD vertex, D3DVALUE *u, D3DVALUE *v) PURE;
2262     STDMETHOD(GetTextureTopology)(THIS_ BOOL *wrap_u, BOOL *wrap_v) PURE;
2263     STDMETHOD(GetNormal)(THIS_ D3DVECTOR *) PURE;
2264     STDMETHOD(GetTexture)(THIS_ LPDIRECT3DRMTEXTURE *) PURE;
2265     STDMETHOD(GetMaterial)(THIS_ LPDIRECT3DRMMATERIAL *) PURE;
2266     STDMETHOD_(int, GetVertexCount)(THIS) PURE;
2267     STDMETHOD_(int, GetVertexIndex)(THIS_ DWORD which) PURE;
2268     STDMETHOD_(int, GetTextureCoordinateIndex)(THIS_ DWORD which) PURE;
2269     STDMETHOD_(D3DCOLOR, GetColor)(THIS) PURE;
2270 };
2271 #undef INTERFACE
2272
2273 #if !defined(__cplusplus) || defined(CINTERFACE)
2274 /*** IUnknown methods ***/
2275 #define IDirect3DRMFace_QueryInterface(p,a,b)             (p)->lpVtbl->QueryInterface(p,a,b)
2276 #define IDirect3DRMFace_AddRef(p)                         (p)->lpVtbl->AddRef(p)
2277 #define IDirect3DRMFace_Release(p)                        (p)->lpVtbl->Release(p)
2278 /*** IDirect3DRMObject methods ***/
2279 #define IDirect3DRMFace_Clone(p,a,b,c)                    (p)->lpVtbl->Clone(p,a,b,c)
2280 #define IDirect3DRMFace_AddDestroyCallback(p,a,b)         (p)->lpVtbl->AddDestroyCallback(p,a,b)
2281 #define IDirect3DRMFace_DeleteDestroyCallback(p,a,b)      (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
2282 #define IDirect3DRMFace_SetAppData(p,a)                   (p)->lpVtbl->SetAppData(p,a)
2283 #define IDirect3DRMFace_GetAppData(p)                     (p)->lpVtbl->GetAppData(p)
2284 #define IDirect3DRMFace_SetName(p,a)                      (p)->lpVtbl->SetName(p,a)
2285 #define IDirect3DRMFace_GetName(p,a,b)                    (p)->lpVtbl->GetName(p,a,b)
2286 #define IDirect3DRMFace_GetClassName(p,a,b)               (p)->lpVtbl->GetClassName(p,a,b)
2287 /*** IDirect3DRMFace methods ***/
2288 #define IDirect3DRMFace_AddVertex(p,a,b,c)                (p)->lpVtbl->AddVertex(p,a,b,c)
2289 #define IDirect3DRMFace_AddVertexAndNormalIndexed(p,a,b)  (p)->lpVtbl->AddVertexAndNormalIndexed(p,a,b)
2290 #define IDirect3DRMFace_SetColorRGB(p,a,b,c)              (p)->lpVtbl->SetColorRGB(p,a,b,c)
2291 #define IDirect3DRMFace_SetColor(p,a)                     (p)->lpVtbl->SetColor(p,a)
2292 #define IDirect3DRMFace_SetTexture(p,a)                   (p)->lpVtbl->SetTexture(p,a)
2293 #define IDirect3DRMFace_SetTextureCoordinates(p,a,b,c)    (p)->lpVtbl->SetTextureCoordinates(p,a,b,c)
2294 #define IDirect3DRMFace_SetMaterial(p,a)                  (p)->lpVtbl->SetMaterial(p,a)
2295 #define IDirect3DRMFace_SetTextureTopology(p,a,b)         (p)->lpVtbl->SetTextureTopology(p,a,b)
2296 #define IDirect3DRMFace_GetVertex(p,a,b,c)                (p)->lpVtbl->GetVertex(p,a,b,c)
2297 #define IDirect3DRMFace_GetVertices(p,a,b,c)              (p)->lpVtbl->GetVertices(p,a,b,c)
2298 #define IDirect3DRMFace_GetTextureCoordinates(p,a,b,c)    (p)->lpVtbl->GetTextureCoordinates(p,a,b,c)
2299 #define IDirect3DRMFace_GetTextureTopology(p,a,b)         (p)->lpVtbl->GetTextureTopology(p,a,b)
2300 #define IDirect3DRMFace_GetNormal(p,a)                    (p)->lpVtbl->GetNormal(p,a)
2301 #define IDirect3DRMFace_GetTexture(p,a)                   (p)->lpVtbl->GetTexture(p,a)
2302 #define IDirect3DRMFace_GetVertexCount(p)                 (p)->lpVtbl->GetVertexCount(p)
2303 #define IDirect3DRMFace_GetVertexIndex(p,a)               (p)->lpVtbl->GetVertexIndex(p,a)
2304 #define IDirect3DRMFace_GetTextureCoordinateIndex(p,a)    (p)->lpVtbl->GetTextureCoordinateIndex(p,a)
2305 #define IDirect3DRMFace_GetColor(p,a)                     (p)->lpVtbl->GetColor(p,a)
2306 #else
2307 /*** IUnknown methods ***/
2308 #define IDirect3DRMFace_QueryInterface(p,a,b)             (p)->QueryInterface(a,b)
2309 #define IDirect3DRMFace_AddRef(p)                         (p)->AddRef()
2310 #define IDirect3DRMFace_Release(p)                        (p)->Release()
2311 /*** IDirect3DRMObject methods ***/
2312 #define IDirect3DRMFace_Clone(p,a,b,c)                    (p)->Clone(a,b,c)
2313 #define IDirect3DRMFace_AddDestroyCallback(p,a,b)         (p)->AddDestroyCallback(a,b)
2314 #define IDirect3DRMFace_DeleteDestroyCallback(p,a,b)      (p)->DeleteDestroyCallback(a,b)
2315 #define IDirect3DRMFace_SetAppData(p,a)                   (p)->SetAppData(a)
2316 #define IDirect3DRMFace_GetAppData(p)                     (p)->GetAppData()
2317 #define IDirect3DRMFace_SetName(p,a)                      (p)->SetName(a)
2318 #define IDirect3DRMFace_GetName(p,a,b)                    (p)->GetName(a,b)
2319 #define IDirect3DRMFace_GetClassName(p,a,b)               (p)->GetClassName(a,b)
2320 /*** IDirect3DRMFace methods ***/
2321 #define IDirect3DRMFace_AddVertex(p,a,b,c)                (p)->AddVertex(a,b,c)
2322 #define IDirect3DRMFace_AddVertexAndNormalIndexed(p,a,b)  (p)->AddVertexAndNormalIndexed(a,b)
2323 #define IDirect3DRMFace_SetColorRGB(p,a,b,c)              (p)->SetColorRGB(a,b,c)
2324 #define IDirect3DRMFace_SetColor(p,a)                     (p)->SetColor(a)
2325 #define IDirect3DRMFace_SetTexture(p,a)                   (p)->SetTexture(a)
2326 #define IDirect3DRMFace_SetTextureCoordinates(p,a,b,c)    (p)->SetTextureCoordinates(a,b,c)
2327 #define IDirect3DRMFace_SetMaterial(p,a)                  (p)->SetMaterial(a)
2328 #define IDirect3DRMFace_SetTextureTopology(p,a,b)         (p)->SetTextureTopology(a,b)
2329 #define IDirect3DRMFace_GetVertex(p,a,b,c)                (p)->GetVertex(a,b,c)
2330 #define IDirect3DRMFace_GetVertices(p,a,b,c)              (p)->GetVertices(a,b,c)
2331 #define IDirect3DRMFace_GetTextureCoordinates(p,a,b,c)    (p)->GetTextureCoordinates(a,b,c)
2332 #define IDirect3DRMFace_GetTextureTopology(p,a,b)         (p)->GetTextureTopology(a,b)
2333 #define IDirect3DRMFace_GetNormal(p,a)                    (p)->GetNormal(a)
2334 #define IDirect3DRMFace_GetTexture(p,a)                   (p)->GetTexture(a)
2335 #define IDirect3DRMFace_GetVertexCount(p)                 (p)->GetVertexCount()
2336 #define IDirect3DRMFace_GetVertexIndex(p,a)               (p)->GetVertexIndex(a)
2337 #define IDirect3DRMFace_GetTextureCoordinateIndex(p,a)    (p)->GetTextureCoordinateIndex(a)
2338 #define IDirect3DRMFace_GetColor(p,a)                     (p)->GetColor(a)
2339 #endif
2340
2341 /*****************************************************************************
2342  * IDirect3DRMFace2 interface
2343  */
2344 #define INTERFACE IDirect3DRMFace2
2345 DECLARE_INTERFACE_(IDirect3DRMFace2,IDirect3DRMObject)
2346 {
2347     /*** IUnknown methods ***/
2348     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
2349     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
2350     STDMETHOD_(ULONG,Release)(THIS) PURE;
2351     /*** IDirect3DRMObject methods ***/
2352     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
2353     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
2354     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
2355     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
2356     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
2357     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
2358     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
2359     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
2360     /*** IDirect3DRMFace methods ***/
2361     STDMETHOD(AddVertex)(THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
2362     STDMETHOD(AddVertexAndNormalIndexed)(THIS_ DWORD vertex, DWORD normal) PURE;
2363     STDMETHOD(SetColorRGB)(THIS_ D3DVALUE, D3DVALUE, D3DVALUE) PURE;
2364     STDMETHOD(SetColor)(THIS_ D3DCOLOR) PURE;
2365     STDMETHOD(SetTexture)(THIS_ LPDIRECT3DRMTEXTURE3) PURE;
2366     STDMETHOD(SetTextureCoordinates)(THIS_ DWORD vertex, D3DVALUE u, D3DVALUE v) PURE;
2367     STDMETHOD(SetMaterial)(THIS_ LPDIRECT3DRMMATERIAL2) PURE;
2368     STDMETHOD(SetTextureTopology)(THIS_ BOOL wrap_u, BOOL wrap_v) PURE;
2369     STDMETHOD(GetVertex)(THIS_ DWORD index, D3DVECTOR *vertex, D3DVECTOR *normal) PURE;
2370     STDMETHOD(GetVertices)(THIS_ DWORD *vertex_count, D3DVECTOR *coords, D3DVECTOR *normals);
2371     STDMETHOD(GetTextureCoordinates)(THIS_ DWORD vertex, D3DVALUE *u, D3DVALUE *v) PURE;
2372     STDMETHOD(GetTextureTopology)(THIS_ BOOL *wrap_u, BOOL *wrap_v) PURE;
2373     STDMETHOD(GetNormal)(THIS_ D3DVECTOR *) PURE;
2374     STDMETHOD(GetTexture)(THIS_ LPDIRECT3DRMTEXTURE3 *) PURE;
2375     STDMETHOD(GetMaterial)(THIS_ LPDIRECT3DRMMATERIAL2 *) PURE;
2376     STDMETHOD_(int, GetVertexCount)(THIS) PURE;
2377     STDMETHOD_(int, GetVertexIndex)(THIS_ DWORD which) PURE;
2378     STDMETHOD_(int, GetTextureCoordinateIndex)(THIS_ DWORD which) PURE;
2379     STDMETHOD_(D3DCOLOR, GetColor)(THIS) PURE;
2380 };
2381 #undef INTERFACE
2382
2383 #if !defined(__cplusplus) || defined(CINTERFACE)
2384 /*** IUnknown methods ***/
2385 #define IDirect3DRMFace2_QueryInterface(p,a,b)             (p)->lpVtbl->QueryInterface(p,a,b)
2386 #define IDirect3DRMFace2_AddRef(p)                         (p)->lpVtbl->AddRef(p)
2387 #define IDirect3DRMFace2_Release(p)                        (p)->lpVtbl->Release(p)
2388 /*** IDirect3DRMObject methods ***/
2389 #define IDirect3DRMFace2_Clone(p,a,b,c)                    (p)->lpVtbl->Clone(p,a,b,c)
2390 #define IDirect3DRMFace2_AddDestroyCallback(p,a,b)         (p)->lpVtbl->AddDestroyCallback(p,a,b)
2391 #define IDirect3DRMFace2_DeleteDestroyCallback(p,a,b)      (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
2392 #define IDirect3DRMFace2_SetAppData(p,a)                   (p)->lpVtbl->SetAppData(p,a)
2393 #define IDirect3DRMFace2_GetAppData(p)                     (p)->lpVtbl->GetAppData(p)
2394 #define IDirect3DRMFace2_SetName(p,a)                      (p)->lpVtbl->SetName(p,a)
2395 #define IDirect3DRMFace2_GetName(p,a,b)                    (p)->lpVtbl->GetName(p,a,b)
2396 #define IDirect3DRMFace2_GetClassName(p,a,b)               (p)->lpVtbl->GetClassName(p,a,b)
2397 /*** IDirect3DRMFace methods ***/
2398 #define IDirect3DRMFace2_AddVertex(p,a,b,c)                (p)->lpVtbl->AddVertex(p,a,b,c)
2399 #define IDirect3DRMFace2_AddVertexAndNormalIndexed(p,a,b)  (p)->lpVtbl->AddVertexAndNormalIndexed(p,a,b)
2400 #define IDirect3DRMFace2_SetColorRGB(p,a,b,c)              (p)->lpVtbl->SetColorRGB(p,a,b,c)
2401 #define IDirect3DRMFace2_SetColor(p,a)                     (p)->lpVtbl->SetColor(p,a)
2402 #define IDirect3DRMFace2_SetTexture(p,a)                   (p)->lpVtbl->SetTexture(p,a)
2403 #define IDirect3DRMFace2_SetTextureCoordinates(p,a,b,c)    (p)->lpVtbl->SetTextureCoordinates(p,a,b,c)
2404 #define IDirect3DRMFace2_SetMaterial(p,a)                  (p)->lpVtbl->SetMaterial(p,a)
2405 #define IDirect3DRMFace2_SetTextureTopology(p,a,b)         (p)->lpVtbl->SetTextureTopology(p,a,b)
2406 #define IDirect3DRMFace2_GetVertex(p,a,b,c)                (p)->lpVtbl->GetVertex(p,a,b,c)
2407 #define IDirect3DRMFace2_GetVertices(p,a,b,c)              (p)->lpVtbl->GetVertices(p,a,b,c)
2408 #define IDirect3DRMFace2_GetTextureCoordinates(p,a,b,c)    (p)->lpVtbl->GetTextureCoordinates(p,a,b,c)
2409 #define IDirect3DRMFace2_GetTextureTopology(p,a,b)         (p)->lpVtbl->GetTextureTopology(p,a,b)
2410 #define IDirect3DRMFace2_GetNormal(p,a)                    (p)->lpVtbl->GetNormal(p,a)
2411 #define IDirect3DRMFace2_GetTexture(p,a)                   (p)->lpVtbl->GetTexture(p,a)
2412 #define IDirect3DRMFace2_GetVertexCount(p)                 (p)->lpVtbl->GetVertexCount(p)
2413 #define IDirect3DRMFace2_GetVertexIndex(p,a)               (p)->lpVtbl->GetVertexIndex(p,a)
2414 #define IDirect3DRMFace2_GetTextureCoordinateIndex(p,a)    (p)->lpVtbl->GetTextureCoordinateIndex(p,a)
2415 #define IDirect3DRMFace2_GetColor(p,a)                     (p)->lpVtbl->GetColor(p,a)
2416 #else
2417 /*** IUnknown methods ***/
2418 #define IDirect3DRMFace2_QueryInterface(p,a,b)             (p)->QueryInterface(a,b)
2419 #define IDirect3DRMFace2_AddRef(p)                         (p)->AddRef()
2420 #define IDirect3DRMFace2_Release(p)                        (p)->Release()
2421 /*** IDirect3DRMObject methods ***/
2422 #define IDirect3DRMFace2_Clone(p,a,b,c)                    (p)->Clone(a,b,c)
2423 #define IDirect3DRMFace2_AddDestroyCallback(p,a,b)         (p)->AddDestroyCallback(a,b)
2424 #define IDirect3DRMFace2_DeleteDestroyCallback(p,a,b)      (p)->DeleteDestroyCallback(a,b)
2425 #define IDirect3DRMFace2_SetAppData(p,a)                   (p)->SetAppData(a)
2426 #define IDirect3DRMFace2_GetAppData(p)                     (p)->GetAppData()
2427 #define IDirect3DRMFace2_SetName(p,a)                      (p)->SetName(a)
2428 #define IDirect3DRMFace2_GetName(p,a,b)                    (p)->GetName(a,b)
2429 #define IDirect3DRMFace2_GetClassName(p,a,b)               (p)->GetClassName(a,b)
2430 /*** IDirect3DRMFace methods ***/
2431 #define IDirect3DRMFace2_AddVertex(p,a,b,c)                (p)->AddVertex(a,b,c)
2432 #define IDirect3DRMFace2_AddVertexAndNormalIndexed(p,a,b)  (p)->AddVertexAndNormalIndexed(a,b)
2433 #define IDirect3DRMFace2_SetColorRGB(p,a,b,c)              (p)->SetColorRGB(a,b,c)
2434 #define IDirect3DRMFace2_SetColor(p,a)                     (p)->SetColor(a)
2435 #define IDirect3DRMFace2_SetTexture(p,a)                   (p)->SetTexture(a)
2436 #define IDirect3DRMFace2_SetTextureCoordinates(p,a,b,c)    (p)->SetTextureCoordinates(a,b,c)
2437 #define IDirect3DRMFace2_SetMaterial(p,a)                  (p)->SetMaterial(a)
2438 #define IDirect3DRMFace2_SetTextureTopology(p,a,b)         (p)->SetTextureTopology(a,b)
2439 #define IDirect3DRMFace2_GetVertex(p,a,b,c)                (p)->GetVertex(a,b,c)
2440 #define IDirect3DRMFace2_GetVertices(p,a,b,c)              (p)->GetVertices(a,b,c)
2441 #define IDirect3DRMFace2_GetTextureCoordinates(p,a,b,c)    (p)->GetTextureCoordinates(a,b,c)
2442 #define IDirect3DRMFace2_GetTextureTopology(p,a,b)         (p)->GetTextureTopology(a,b)
2443 #define IDirect3DRMFace2_GetNormal(p,a)                    (p)->GetNormal(a)
2444 #define IDirect3DRMFace2_GetTexture(p,a)                   (p)->GetTexture(a)
2445 #define IDirect3DRMFace2_GetVertexCount(p)                 (p)->GetVertexCount()
2446 #define IDirect3DRMFace2_GetVertexIndex(p,a)               (p)->GetVertexIndex(a)
2447 #define IDirect3DRMFace2_GetTextureCoordinateIndex(p,a)    (p)->GetTextureCoordinateIndex(a)
2448 #define IDirect3DRMFace2_GetColor(p,a)                     (p)->GetColor(a)
2449 #endif
2450
2451 /*****************************************************************************
2452  * IDirect3DRMMeshBuilder interface
2453  */
2454 #define INTERFACE IDirect3DRMMeshBuilder
2455 DECLARE_INTERFACE_(IDirect3DRMMeshBuilder,IDirect3DRMVisual)
2456 {
2457     /*** IUnknown methods ***/
2458     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
2459     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
2460     STDMETHOD_(ULONG,Release)(THIS) PURE;
2461     /*** IDirect3DRMObject methods ***/
2462     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
2463     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
2464     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
2465     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
2466     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
2467     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
2468     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
2469     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
2470     /*** IDirect3DRMMeshBuilder methods ***/
2471     STDMETHOD(Load)(THIS_ LPVOID filename, LPVOID name, D3DRMLOADOPTIONS loadflags, D3DRMLOADTEXTURECALLBACK, LPVOID pArg) PURE;
2472     STDMETHOD(Save)(THIS_ const char *filename, D3DRMXOFFORMAT, D3DRMSAVEOPTIONS save) PURE;
2473     STDMETHOD(Scale)(THIS_ D3DVALUE sx, D3DVALUE sy, D3DVALUE sz) PURE;
2474     STDMETHOD(Translate)(THIS_ D3DVALUE tx, D3DVALUE ty, D3DVALUE tz) PURE;
2475     STDMETHOD(SetColorSource)(THIS_ D3DRMCOLORSOURCE) PURE;
2476     STDMETHOD(GetBox)(THIS_ D3DRMBOX *) PURE;
2477     STDMETHOD(GenerateNormals)(THIS) PURE;
2478     STDMETHOD_(D3DRMCOLORSOURCE, GetColorSource)(THIS) PURE;
2479     STDMETHOD(AddMesh)(THIS_ LPDIRECT3DRMMESH) PURE;
2480     STDMETHOD(AddMeshBuilder)(THIS_ LPDIRECT3DRMMESHBUILDER) PURE;
2481     STDMETHOD(AddFrame)(THIS_ LPDIRECT3DRMFRAME) PURE;
2482     STDMETHOD(AddFace)(THIS_ LPDIRECT3DRMFACE) PURE;
2483     STDMETHOD(AddFaces)(THIS_ DWORD vcount, D3DVECTOR *vertices, DWORD ncount, D3DVECTOR *normals, DWORD *data,
2484         LPDIRECT3DRMFACEARRAY*) PURE;
2485     STDMETHOD(ReserveSpace)(THIS_ DWORD vertex_Count, DWORD normal_count, DWORD face_count) PURE;
2486     STDMETHOD(SetColorRGB)(THIS_ D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE;
2487     STDMETHOD(SetColor)(THIS_ D3DCOLOR) PURE;
2488     STDMETHOD(SetTexture)(THIS_ LPDIRECT3DRMTEXTURE) PURE;
2489     STDMETHOD(SetMaterial)(THIS_ LPDIRECT3DRMMATERIAL) PURE;
2490     STDMETHOD(SetTextureTopology)(THIS_ BOOL wrap_u, BOOL wrap_v) PURE;
2491     STDMETHOD(SetQuality)(THIS_ D3DRMRENDERQUALITY) PURE;
2492     STDMETHOD(SetPerspective)(THIS_ BOOL) PURE;
2493     STDMETHOD(SetVertex)(THIS_ DWORD index, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
2494     STDMETHOD(SetNormal)(THIS_ DWORD index, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
2495     STDMETHOD(SetTextureCoordinates)(THIS_ DWORD index, D3DVALUE u, D3DVALUE v) PURE;
2496     STDMETHOD(SetVertexColor)(THIS_ DWORD index, D3DCOLOR) PURE;
2497     STDMETHOD(SetVertexColorRGB)(THIS_ DWORD index, D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE;
2498     STDMETHOD(GetFaces)(THIS_ LPDIRECT3DRMFACEARRAY*) PURE;
2499     STDMETHOD(GetVertices)(THIS_ DWORD *vcount, D3DVECTOR *vertices, DWORD *ncount, D3DVECTOR *normals,
2500         DWORD *face_data_size, DWORD *face_data) PURE;
2501     STDMETHOD(GetTextureCoordinates)(THIS_ DWORD index, D3DVALUE *u, D3DVALUE *v) PURE;
2502     STDMETHOD_(int, AddVertex)(THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
2503     STDMETHOD_(int, AddNormal)(THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
2504     STDMETHOD(CreateFace)(THIS_ LPDIRECT3DRMFACE*) PURE;
2505     STDMETHOD_(D3DRMRENDERQUALITY, GetQuality)(THIS) PURE;
2506     STDMETHOD_(BOOL, GetPerspective)(THIS) PURE;
2507     STDMETHOD_(int, GetFaceCount)(THIS) PURE;
2508     STDMETHOD_(int, GetVertexCount)(THIS) PURE;
2509     STDMETHOD_(D3DCOLOR, GetVertexColor)(THIS_ DWORD index) PURE;
2510     STDMETHOD(CreateMesh)(THIS_ LPDIRECT3DRMMESH*) PURE;
2511 };
2512 #undef INTERFACE
2513
2514 #if !defined(__cplusplus) || defined(CINTERFACE)
2515 /*** IUnknown methods ***/
2516 #define IDirect3DRMMeshBuilder_QueryInterface(p,a,b)             (p)->lpVtbl->QueryInterface(p,a,b)
2517 #define IDirect3DRMMeshBuilder_AddRef(p)                         (p)->lpVtbl->AddRef(p)
2518 #define IDirect3DRMMeshBuilder_Release(p)                        (p)->lpVtbl->Release(p)
2519 /*** IDirect3DRMObject methods ***/
2520 #define IDirect3DRMMeshBuilder_Clone(p,a,b,c)                    (p)->lpVtbl->Clone(p,a,b,c)
2521 #define IDirect3DRMMeshBuilder_AddDestroyCallback(p,a,b)         (p)->lpVtbl->AddDestroyCallback(p,a,b)
2522 #define IDirect3DRMMeshBuilder_DeleteDestroyCallback(p,a,b)      (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
2523 #define IDirect3DRMMeshBuilder_SetAppData(p,a)                   (p)->lpVtbl->SetAppData(p,a)
2524 #define IDirect3DRMMeshBuilder_GetAppData(p)                     (p)->lpVtbl->GetAppData(p)
2525 #define IDirect3DRMMeshBuilder_SetName(p,a)                      (p)->lpVtbl->SetName(p,a)
2526 #define IDirect3DRMMeshBuilder_GetName(p,a,b)                    (p)->lpVtbl->GetName(p,a,b)
2527 #define IDirect3DRMMeshBuilder_GetClassName(p,a,b)               (p)->lpVtbl->GetClassName(p,a,b)
2528 /*** IDirect3DRMMeshBuilder methods ***/
2529 #define IDirect3DRMMeshBuilder_Load(p,a,b,c,d,e)                 (p)->lpVtbl->Load(p,a,b,c,d,e)
2530 #define IDirect3DRMMeshBuilder_Save(p,a,b,c)                     (p)->lpVtbl->Save(p,a,b,c)
2531 #define IDirect3DRMMeshBuilder_Scale(p,a,b,c)                    (p)->lpVtbl->Scale(p,a,b,c)
2532 #define IDirect3DRMMeshBuilder_Translate(p,a,b,c)                (p)->lpVtbl->Translate(p,a)
2533 #define IDirect3DRMMeshBuilder_SetColorSource(p,a)               (p)->lpVtbl->SetColorSource(p,a,b,c)
2534 #define IDirect3DRMMeshBuilder_GetBox(p,a)                       (p)->lpVtbl->GetBox(p,a)
2535 #define IDirect3DRMMeshBuilder_GenerateNormals(p)                (p)->lpVtbl->GenerateNormals(p)
2536 #define IDirect3DRMMeshBuilder_GetColorSource(p)                 (p)->lpVtbl->GetColorSource(p)
2537 #define IDirect3DRMMeshBuilder_AddMesh(p,a)                      (p)->lpVtbl->AddMesh(p,a)
2538 #define IDirect3DRMMeshBuilder_AddMeshBuilder(p,a)               (p)->lpVtbl->AddMeshBuilder(p,a)
2539 #define IDirect3DRMMeshBuilder_AddFrame(p,a)                     (p)->lpVtbl->AddFrame(p,a)
2540 #define IDirect3DRMMeshBuilder_AddFace(p,a)                      (p)->lpVtbl->AddFace(p,a)
2541 #define IDirect3DRMMeshBuilder_AddFaces(p,a,b,c,d,e,f)           (p)->lpVtbl->AddFaces(p,a,b,c,d,e,f)
2542 #define IDirect3DRMMeshBuilder_ReserveSpace(p,a,b,c)             (p)->lpVtbl->ReserveSpace(p,a,b,c)
2543 #define IDirect3DRMMeshBuilder_SetColorRGB(p,a,b,c)              (p)->lpVtbl->SetColorRGB(p,a,b,c)
2544 #define IDirect3DRMMeshBuilder_SetColor(p,a)                     (p)->lpVtbl->SetColor(p,a)
2545 #define IDirect3DRMMeshBuilder_SetTexture(p,a)                   (p)->lpVtbl->SetTexture(p,a)
2546 #define IDirect3DRMMeshBuilder_SetMateria(p,a)                   (p)->lpVtbl->SetMateria(p,a)
2547 #define IDirect3DRMMeshBuilder_SetTextureTopology(p,a,b)         (p)->lpVtbl->SetTextureTopology(p,a,b)
2548 #define IDirect3DRMMeshBuilder_SetQuality(p,a)                   (p)->lpVtbl->SetQuality(p,a)
2549 #define IDirect3DRMMeshBuilder_SetPerspective(p,a)               (p)->lpVtbl->SetPerspective(p,a)
2550 #define IDirect3DRMMeshBuilder_SetVertex(p,a,b,c,d)              (p)->lpVtbl->SetVertex(p,a,b,c,d)
2551 #define IDirect3DRMMeshBuilder_SetNormal(p,a,b,c,d)              (p)->lpVtbl->SetNormal(p,a,b,c,d)
2552 #define IDirect3DRMMeshBuilder_SetTextureCoordinates(p,a,b,c)    (p)->lpVtbl->SetTextureCoordinates(p,a,b,c)
2553 #define IDirect3DRMMeshBuilder_SetVertexColor(p,a,b)             (p)->lpVtbl->SetVertexColor(p,a,b)
2554 #define IDirect3DRMMeshBuilder_SetVertexColorRGB(p,a,b,c,d)      (p)->lpVtbl->SetVertexColorRGB(p,a,b,c,d)
2555 #define IDirect3DRMMeshBuilder_GetFaces(p,a)                     (p)->lpVtbl->GetFaces(p,a)
2556 #define IDirect3DRMMeshBuilder_GetVertices(p,a,b,c,d,e,f)        (p)->lpVtbl->GetVertices(p,a,b,c,d,e,f)
2557 #define IDirect3DRMMeshBuilder_GetTextureCoordinates(p,a,b,c)    (p)->lpVtbl->GetTextureCoordinates(p,a,b,c)
2558 #define IDirect3DRMMeshBuilder_AddVertex(p,a,b,c)                (p)->lpVtbl->AddVertex(p,a,b,c)
2559 #define IDirect3DRMMeshBuilder_AddNormal(p,a,b,c)                (p)->lpVtbl->AddNormal(p,a,b,c)
2560 #define IDirect3DRMMeshBuilder_CreateFace(p,a)                   (p)->lpVtbl->CreateFace(p,a)
2561 #define IDirect3DRMMeshBuilder_GetQuality(p)                     (p)->lpVtbl->GetQuality(p)
2562 #define IDirect3DRMMeshBuilder_GetPerspective(p)                 (p)->lpVtbl->GetPerspective(p)
2563 #define IDirect3DRMMeshBuilder_GetFaceCount(p)                   (p)->lpVtbl->GetFaceCount(p)
2564 #define IDirect3DRMMeshBuilder_GetVertexCount(p)                 (p)->lpVtbl->GetVertexCount(p)
2565 #define IDirect3DRMMeshBuilder_GetVertexColor(p,a)               (p)->lpVtbl->GetVertexColor(p,a)
2566 #define IDirect3DRMMeshBuilder_CreateMesh(p,a)                   (p)->lpVtbl->CreateMesh(p,a)
2567 #else
2568 /*** IUnknown methods ***/
2569 #define IDirect3DRMMeshBuilder_QueryInterface(p,a,b)             (p)->QueryInterface(a,b)
2570 #define IDirect3DRMMeshBuilder_AddRef(p)                         (p)->AddRef()
2571 #define IDirect3DRMMeshBuilder_Release(p)                        (p)->Release()
2572 /*** IDirect3DRMObject methods ***/
2573 #define IDirect3DRMMeshBuilder_Clone(p,a,b,c)                    (p)->Clone(a,b,c)
2574 #define IDirect3DRMMeshBuilder_AddDestroyCallback(p,a,b)         (p)->AddDestroyCallback(a,b)
2575 #define IDirect3DRMMeshBuilder_DeleteDestroyCallback(p,a,b)      (p)->DeleteDestroyCallback(a,b)
2576 #define IDirect3DRMMeshBuilder_SetAppData(p,a)                   (p)->SetAppData(a)
2577 #define IDirect3DRMMeshBuilder_GetAppData(p)                     (p)->GetAppData()
2578 #define IDirect3DRMMeshBuilder_SetName(p,a)                      (p)->SetName(a)
2579 #define IDirect3DRMMeshBuilder_GetName(p,a,b)                    (p)->GetName(a,b)
2580 #define IDirect3DRMMeshBuilder_GetClassName(p,a,b)               (p)->GetClassName(a,b)
2581 /*** IDirect3DRMMeshBuilder methods ***/
2582 #define IDirect3DRMMeshBuilder_Load(p,a,b,c,d,e)                 (p)->Load(a,b,c,d,e)
2583 #define IDirect3DRMMeshBuilder_Save(p,a,b,c)                     (p)->Save(a,b,c)
2584 #define IDirect3DRMMeshBuilder_Scale(p,a,b,c)                    (p)->Scale(a,b,c)
2585 #define IDirect3DRMMeshBuilder_Translate(p,a,b,c)                (p)->Translate(a)
2586 #define IDirect3DRMMeshBuilder_SetColorSource(p,a)               (p)->SetColorSource(a,b,c)
2587 #define IDirect3DRMMeshBuilder_GetBox(p,a)                       (p)->GetBox(a)
2588 #define IDirect3DRMMeshBuilder_GenerateNormals(p)                (p)->GenerateNormals()
2589 #define IDirect3DRMMeshBuilder_GetColorSource(p)                 (p)->GetColorSource()
2590 #define IDirect3DRMMeshBuilder_AddMesh(p,a)                      (p)-->AddMesh(a)
2591 #define IDirect3DRMMeshBuilder_AddMeshBuilder(p,a)               (p)->AddMeshBuilder(a)
2592 #define IDirect3DRMMeshBuilder_AddFrame(p,a)                     (p)->AddFrame(a)
2593 #define IDirect3DRMMeshBuilder_AddFace(p,a)                      (p)->AddFace(a)
2594 #define IDirect3DRMMeshBuilder_AddFaces(p,a,b,c,d,e,f)           (p)->AddFaces(a,b,c,d,e,f)
2595 #define IDirect3DRMMeshBuilder_ReserveSpace(p,a,b,c)             (p)->ReserveSpace(a,b,c)
2596 #define IDirect3DRMMeshBuilder_SetColorRGB(p,a,b,c)              (p)->SetColorRGB(a,b,c)
2597 #define IDirect3DRMMeshBuilder_SetColor(p,a)                     (p)->SetColor(a)
2598 #define IDirect3DRMMeshBuilder_SetTexture(p,a)                   (p)->SetTexture(a)
2599 #define IDirect3DRMMeshBuilder_SetMateria(p,a)                   (p)->SetMateria(a)
2600 #define IDirect3DRMMeshBuilder_SetTextureTopology(p,a,b)         (p)->SetTextureTopology(a,b)
2601 #define IDirect3DRMMeshBuilder_SetQuality(p,a)                   (p)->SetQuality(a)
2602 #define IDirect3DRMMeshBuilder_SetPerspective(p,a)               (p)->SetPerspective(a)
2603 #define IDirect3DRMMeshBuilder_SetVertex(p,a,b,c,d)              (p)->SetVertex(a,b,c,d)
2604 #define IDirect3DRMMeshBuilder_SetNormal(p,a,b,c,d)              (p)->SetNormal(a,b,c,d)
2605 #define IDirect3DRMMeshBuilder_SetTextureCoordinates(p,a,b,c)    (p)->SetTextureCoordinates(a,b,c)
2606 #define IDirect3DRMMeshBuilder_SetVertexColor(p,a,b)             (p)->SetVertexColor(a,b)
2607 #define IDirect3DRMMeshBuilder_SetVertexColorRGB(p,a,b,c,d)      (p)->SetVertexColorRGB(a,b,c,d)
2608 #define IDirect3DRMMeshBuilder_GetFaces(p,a)                     (p)->GetFaces(a)
2609 #define IDirect3DRMMeshBuilder_GetVertices(p,a,b,c,d,e,f)        (p)->GetVertices(a,b,c,d,e,f)
2610 #define IDirect3DRMMeshBuilder_GetTextureCoordinates(p,a,b,c)    (p)->GetTextureCoordinates(a,b,c)
2611 #define IDirect3DRMMeshBuilder_AddVertex(p,a,b,c)                (p)->AddVertex(a,b,c)
2612 #define IDirect3DRMMeshBuilder_AddNormal(p,a,b,c)                (p)->AddNormal(a,b,c)
2613 #define IDirect3DRMMeshBuilder_CreateFace(p,a)                   (p)->CreateFace(a)
2614 #define IDirect3DRMMeshBuilder_GetQuality(p)                     (p)->GetQuality()
2615 #define IDirect3DRMMeshBuilder_GetPerspective(p)                 (p)->GetPerspective()
2616 #define IDirect3DRMMeshBuilder_GetFaceCount(p)                   (p)->GetFaceCount()
2617 #define IDirect3DRMMeshBuilder_GetVertexCount(p)                 (p)->GetVertexCount()
2618 #define IDirect3DRMMeshBuilder_GetVertexColor(p,a)               (p)->GetVertexColor(a)
2619 #define IDirect3DRMMeshBuilder_CreateMesh(p,a)                   (p)->CreateMesh(a)
2620 #endif
2621
2622 /*****************************************************************************
2623  * IDirect3DRMMeshBuilder2 interface
2624  */
2625 #define INTERFACE IDirect3DRMMeshBuilder2
2626 DECLARE_INTERFACE_(IDirect3DRMMeshBuilder2,IDirect3DRMMeshBuilder)
2627 {
2628     /*** IUnknown methods ***/
2629     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
2630     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
2631     STDMETHOD_(ULONG,Release)(THIS) PURE;
2632     /*** IDirect3DRMObject methods ***/
2633     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
2634     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
2635     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
2636     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
2637     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
2638     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
2639     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
2640     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
2641     /*** IDirect3DRMMeshBuilder methods ***/
2642     STDMETHOD(Load)(THIS_ LPVOID filename, LPVOID name, D3DRMLOADOPTIONS loadflags, D3DRMLOADTEXTURECALLBACK, LPVOID pArg) PURE;
2643     STDMETHOD(Save)(THIS_ const char *filename, D3DRMXOFFORMAT, D3DRMSAVEOPTIONS save) PURE;
2644     STDMETHOD(Scale)(THIS_ D3DVALUE sx, D3DVALUE sy, D3DVALUE sz) PURE;
2645     STDMETHOD(Translate)(THIS_ D3DVALUE tx, D3DVALUE ty, D3DVALUE tz) PURE;
2646     STDMETHOD(SetColorSource)(THIS_ D3DRMCOLORSOURCE) PURE;
2647     STDMETHOD(GetBox)(THIS_ D3DRMBOX *) PURE;
2648     STDMETHOD(GenerateNormals)(THIS) PURE;
2649     STDMETHOD_(D3DRMCOLORSOURCE, GetColorSource)(THIS) PURE;
2650     STDMETHOD(AddMesh)(THIS_ LPDIRECT3DRMMESH) PURE;
2651     STDMETHOD(AddMeshBuilder)(THIS_ LPDIRECT3DRMMESHBUILDER) PURE;
2652     STDMETHOD(AddFrame)(THIS_ LPDIRECT3DRMFRAME) PURE;
2653     STDMETHOD(AddFace)(THIS_ LPDIRECT3DRMFACE) PURE;
2654     STDMETHOD(AddFaces)(THIS_ DWORD vcount, D3DVECTOR *vertices, DWORD ncount, D3DVECTOR *normals, DWORD *data,
2655         LPDIRECT3DRMFACEARRAY*) PURE;
2656     STDMETHOD(ReserveSpace)(THIS_ DWORD vertex_Count, DWORD normal_count, DWORD face_count) PURE;
2657     STDMETHOD(SetColorRGB)(THIS_ D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE;
2658     STDMETHOD(SetColor)(THIS_ D3DCOLOR) PURE;
2659     STDMETHOD(SetTexture)(THIS_ LPDIRECT3DRMTEXTURE) PURE;
2660     STDMETHOD(SetMaterial)(THIS_ LPDIRECT3DRMMATERIAL) PURE;
2661     STDMETHOD(SetTextureTopology)(THIS_ BOOL wrap_u, BOOL wrap_v) PURE;
2662     STDMETHOD(SetQuality)(THIS_ D3DRMRENDERQUALITY) PURE;
2663     STDMETHOD(SetPerspective)(THIS_ BOOL) PURE;
2664     STDMETHOD(SetVertex)(THIS_ DWORD index, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
2665     STDMETHOD(SetNormal)(THIS_ DWORD index, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
2666     STDMETHOD(SetTextureCoordinates)(THIS_ DWORD index, D3DVALUE u, D3DVALUE v) PURE;
2667     STDMETHOD(SetVertexColor)(THIS_ DWORD index, D3DCOLOR) PURE;
2668     STDMETHOD(SetVertexColorRGB)(THIS_ DWORD index, D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE;
2669     STDMETHOD(GetFaces)(THIS_ LPDIRECT3DRMFACEARRAY*) PURE;
2670     STDMETHOD(GetVertices)(THIS_ DWORD *vcount, D3DVECTOR *vertices, DWORD *ncount, D3DVECTOR *normals,
2671         DWORD *face_data_size, DWORD *face_data) PURE;
2672     STDMETHOD(GetTextureCoordinates)(THIS_ DWORD index, D3DVALUE *u, D3DVALUE *v) PURE;
2673     STDMETHOD_(int, AddVertex)(THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
2674     STDMETHOD_(int, AddNormal)(THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
2675     STDMETHOD(CreateFace)(THIS_ LPDIRECT3DRMFACE*) PURE;
2676     STDMETHOD_(D3DRMRENDERQUALITY, GetQuality)(THIS) PURE;
2677     STDMETHOD_(BOOL, GetPerspective)(THIS) PURE;
2678     STDMETHOD_(int, GetFaceCount)(THIS) PURE;
2679     STDMETHOD_(int, GetVertexCount)(THIS) PURE;
2680     STDMETHOD_(D3DCOLOR, GetVertexColor)(THIS_ DWORD index) PURE;
2681     STDMETHOD(CreateMesh)(THIS_ LPDIRECT3DRMMESH*) PURE;
2682     /*** IDirect3DRMMeshBuilder2 methods ***/
2683     STDMETHOD(GenerateNormals2)(THIS_ D3DVALUE crease, DWORD flags) PURE;
2684     STDMETHOD(GetFace)(THIS_ DWORD index, LPDIRECT3DRMFACE*) PURE;
2685 };
2686 #undef INTERFACE
2687
2688 #if !defined(__cplusplus) || defined(CINTERFACE)
2689 /*** IUnknown methods ***/
2690 #define IDirect3DRMMeshBuilder2_QueryInterface(p,a,b)            (p)->lpVtbl->QueryInterface(p,a,b)
2691 #define IDirect3DRMMeshBuilder2_AddRef(p)                        (p)->lpVtbl->AddRef(p)
2692 #define IDirect3DRMMeshBuilder2_Release(p)                       (p)->lpVtbl->Release(p)
2693 /*** IDirect3DRMObject methods ***/
2694 #define IDirect3DRMMeshBuilder2_Clone(p,a,b,c)                   (p)->lpVtbl->Clone(p,a,b,c)
2695 #define IDirect3DRMMeshBuilder2_AddDestroyCallback(p,a,b)        (p)->lpVtbl->AddDestroyCallback(p,a,b)
2696 #define IDirect3DRMMeshBuilder2_DeleteDestroyCallback(p,a,b)     (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
2697 #define IDirect3DRMMeshBuilder2_SetAppData(p,a)                  (p)->lpVtbl->SetAppData(p,a)
2698 #define IDirect3DRMMeshBuilder2_GetAppData(p)                    (p)->lpVtbl->GetAppData(p)
2699 #define IDirect3DRMMeshBuilder2_SetName(p,a)                     (p)->lpVtbl->SetName(p,a)
2700 #define IDirect3DRMMeshBuilder2_GetName(p,a,b)                   (p)->lpVtbl->GetName(p,a,b)
2701 #define IDirect3DRMMeshBuilder2_GetClassName(p,a,b)              (p)->lpVtbl->GetClassName(p,a,b)
2702 /*** IDirect3DRMMeshBuilder methods ***/
2703 #define IDirect3DRMMeshBuilder2_Load(p,a,b,c,d,e)                (p)->lpVtbl->Load(p,a,b,c,d,e)
2704 #define IDirect3DRMMeshBuilder2_Save(p,a,b,c)                    (p)->lpVtbl->Save(p,a,b,c)
2705 #define IDirect3DRMMeshBuilder2_Scale(p,a,b,c)                   (p)->lpVtbl->Scale(p,a,b,c)
2706 #define IDirect3DRMMeshBuilder2_Translate(p,a,b,c)               (p)->lpVtbl->Translate(p,a)
2707 #define IDirect3DRMMeshBuilder2_SetColorSource(p,a)              (p)->lpVtbl->SetColorSource(p,a,b,c)
2708 #define IDirect3DRMMeshBuilder2_GetBox(p,a)                      (p)->lpVtbl->GetBox(p,a)
2709 #define IDirect3DRMMeshBuilder2_GenerateNormals(p)               (p)->lpVtbl->GenerateNormals(p)
2710 #define IDirect3DRMMeshBuilder2_GetColorSource(p)                (p)->lpVtbl->GetColorSource(p)
2711 #define IDirect3DRMMeshBuilder2_AddMesh(p,a)                     (p)->lpVtbl->AddMesh(p,a)
2712 #define IDirect3DRMMeshBuilder2_AddMeshBuilder(p,a)              (p)->lpVtbl->AddMeshBuilder(p,a)
2713 #define IDirect3DRMMeshBuilder2_AddFrame(p,a)                    (p)->lpVtbl->AddFrame(p,a)
2714 #define IDirect3DRMMeshBuilder2_AddFace(p,a)                     (p)->lpVtbl->AddFace(p,a)
2715 #define IDirect3DRMMeshBuilder2_AddFaces(p,a,b,c,d,e,f)          (p)->lpVtbl->AddFaces(p,a,b,c,d,e,f)
2716 #define IDirect3DRMMeshBuilder2_ReserveSpace(p,a,b,c)            (p)->lpVtbl->ReserveSpace(p,a,b,c)
2717 #define IDirect3DRMMeshBuilder2_SetColorRGB(p,a,b,c)             (p)->lpVtbl->SetColorRGB(p,a,b,c)
2718 #define IDirect3DRMMeshBuilder2_SetColor(p,a)                    (p)->lpVtbl->SetColor(p,a)
2719 #define IDirect3DRMMeshBuilder2_SetTexture(p,a)                  (p)->lpVtbl->SetTexture(p,a)
2720 #define IDirect3DRMMeshBuilder2_SetMateria(p,a)                  (p)->lpVtbl->SetMateria(p,a)
2721 #define IDirect3DRMMeshBuilder2_SetTextureTopology(p,a,b)        (p)->lpVtbl->SetTextureTopology(p,a,b)
2722 #define IDirect3DRMMeshBuilder2_SetQuality(p,a)                  (p)->lpVtbl->SetQuality(p,a)
2723 #define IDirect3DRMMeshBuilder2_SetPerspective(p,a)              (p)->lpVtbl->SetPerspective(p,a)
2724 #define IDirect3DRMMeshBuilder2_SetVertex(p,a,b,c,d)             (p)->lpVtbl->SetVertex(p,a,b,c,d)
2725 #define IDirect3DRMMeshBuilder2_SetNormal(p,a,b,c,d)             (p)->lpVtbl->SetNormal(p,a,b,c,d)
2726 #define IDirect3DRMMeshBuilder2_SetTextureCoordinates(p,a,b,c)   (p)->lpVtbl->SetTextureCoordinates(p,a,b,c)
2727 #define IDirect3DRMMeshBuilder2_SetVertexColor(p,a,b)            (p)->lpVtbl->SetVertexColor(p,a,b)
2728 #define IDirect3DRMMeshBuilder2_SetVertexColorRGB(p,a,b,c,d)     (p)->lpVtbl->SetVertexColorRGB(p,a,b,c,d)
2729 #define IDirect3DRMMeshBuilder2_GetFaces(p,a)                    (p)->lpVtbl->GetFaces(p,a)
2730 #define IDirect3DRMMeshBuilder2_GetVertices(p,a,b,c,d,e,f)       (p)->lpVtbl->GetVertices(p,a,b,c,d,e,f)
2731 #define IDirect3DRMMeshBuilder2_GetTextureCoordinates(p,a,b,c)   (p)->lpVtbl->GetTextureCoordinates(p,a,b,c)
2732 #define IDirect3DRMMeshBuilder2_AddVertex(p,a,b,c)               (p)->lpVtbl->AddVertex(p,a,b,c)
2733 #define IDirect3DRMMeshBuilder2_AddNormal(p,a,b,c)               (p)->lpVtbl->AddNormal(p,a,b,c)
2734 #define IDirect3DRMMeshBuilder2_CreateFace(p,a)                  (p)->lpVtbl->CreateFace(p,a)
2735 #define IDirect3DRMMeshBuilder2_GetQuality(p)                    (p)->lpVtbl->GetQuality(p)
2736 #define IDirect3DRMMeshBuilder2_GetPerspective(p)                (p)->lpVtbl->GetPerspective(p)
2737 #define IDirect3DRMMeshBuilder2_GetFaceCount(p)                  (p)->lpVtbl->GetFaceCount(p)
2738 #define IDirect3DRMMeshBuilder2_GetVertexCount(p)                (p)->lpVtbl->GetVertexCount(p)
2739 #define IDirect3DRMMeshBuilder2_GetVertexColor(p,a)              (p)->lpVtbl->GetVertexColor(p,a)
2740 #define IDirect3DRMMeshBuilder2_CreateMesh(p,a)                  (p)->lpVtbl->CreateMesh(p,a)
2741 /*** IDirect3DRMMeshBuilder2 methods ***/
2742 #define IDirect3DRMMeshBuilder2_GenerateNormals2(p,a,b)          (p)->lpVtbl->GenerateNormals2(p,a,b)
2743 #define IDirect3DRMMeshBuilder2_GetFace(p,a,b)                   (p)->lpVtbl->GetFace(p,a,b)
2744 #else
2745 /*** IUnknown methods ***/
2746 #define IDirect3DRMMeshBuilder2_QueryInterface(p,a,b)            (p)->QueryInterface(a,b)
2747 #define IDirect3DRMMeshBuilder2_AddRef(p)                        (p)->AddRef()
2748 #define IDirect3DRMMeshBuilder2_Release(p)                       (p)->Release()
2749 /*** IDirect3DRMObject methods ***/
2750 #define IDirect3DRMMeshBuilder2_Clone(p,a,b,c)                   (p)->Clone(a,b,c)
2751 #define IDirect3DRMMeshBuilder2_AddDestroyCallback(p,a,b)        (p)->AddDestroyCallback(a,b)
2752 #define IDirect3DRMMeshBuilder2_DeleteDestroyCallback(p,a,b)     (p)->DeleteDestroyCallback(a,b)
2753 #define IDirect3DRMMeshBuilder2_SetAppData(p,a)                  (p)->SetAppData(a)
2754 #define IDirect3DRMMeshBuilder2_GetAppData(p)                    (p)->GetAppData()
2755 #define IDirect3DRMMeshBuilder2_SetName(p,a)                     (p)->SetName(a)
2756 #define IDirect3DRMMeshBuilder2_GetName(p,a,b)                   (p)->GetName(a,b)
2757 #define IDirect3DRMMeshBuilder2_GetClassName(p,a,b)              (p)->GetClassName(a,b)
2758 /*** IDirect3DRMMeshBuilder methods ***/
2759 #define IDirect3DRMMeshBuilder2_Load(p,a,b,c,d,e)                (p)->Load(a,b,c,d,e)
2760 #define IDirect3DRMMeshBuilder2_Save(p,a,b,c)                    (p)->Save(a,b,c)
2761 #define IDirect3DRMMeshBuilder2_Scale(p,a,b,c)                   (p)->Scale(a,b,c)
2762 #define IDirect3DRMMeshBuilder2_Translate(p,a,b,c)               (p)->Translate(a)
2763 #define IDirect3DRMMeshBuilder2_SetColorSource(p,a)              (p)->SetColorSource(a,b,c)
2764 #define IDirect3DRMMeshBuilder2_GetBox(p,a)                      (p)->GetBox(a)
2765 #define IDirect3DRMMeshBuilder2_GenerateNormals(p)               (p)->GenerateNormals()
2766 #define IDirect3DRMMeshBuilder2_GetColorSource(p)                (p)->GetColorSource()
2767 #define IDirect3DRMMeshBuilder2_AddMesh(p,a)                     (p)-->AddMesh(a)
2768 #define IDirect3DRMMeshBuilder2_AddMeshBuilder(p,a)              (p)->AddMeshBuilder(a)
2769 #define IDirect3DRMMeshBuilder2_AddFrame(p,a)                    (p)->AddFrame(a)
2770 #define IDirect3DRMMeshBuilder2_AddFace(p,a)                     (p)->AddFace(a)
2771 #define IDirect3DRMMeshBuilder2_AddFaces(p,a,b,c,d,e,f)          (p)->AddFaces(a,b,c,d,e,f)
2772 #define IDirect3DRMMeshBuilder2_ReserveSpace(p,a,b,c)            (p)->ReserveSpace(a,b,c)
2773 #define IDirect3DRMMeshBuilder2_SetColorRGB(p,a,b,c)             (p)->SetColorRGB(a,b,c)
2774 #define IDirect3DRMMeshBuilder2_SetColor(p,a)                    (p)->SetColor(a)
2775 #define IDirect3DRMMeshBuilder2_SetTexture(p,a)                  (p)->SetTexture(a)
2776 #define IDirect3DRMMeshBuilder2_SetMateria(p,a)                  (p)->SetMateria(a)
2777 #define IDirect3DRMMeshBuilder2_SetTextureTopology(p,a,b)        (p)->SetTextureTopology(a,b)
2778 #define IDirect3DRMMeshBuilder2_SetQuality(p,a)                  (p)->SetQuality(a)
2779 #define IDirect3DRMMeshBuilder2_SetPerspective(p,a)              (p)->SetPerspective(a)
2780 #define IDirect3DRMMeshBuilder2_SetVertex(p,a,b,c,d)             (p)->SetVertex(a,b,c,d)
2781 #define IDirect3DRMMeshBuilder2_SetNormal(p,a,b,c,d)             (p)->SetNormal(a,b,c,d)
2782 #define IDirect3DRMMeshBuilder2_SetTextureCoordinates(p,a,b,c)   (p)->SetTextureCoordinates(a,b,c)
2783 #define IDirect3DRMMeshBuilder2_SetVertexColor(p,a,b)            (p)->SetVertexColor(a,b)
2784 #define IDirect3DRMMeshBuilder2_SetVertexColorRGB(p,a,b,c,d)     (p)->SetVertexColorRGB(a,b,c,d)
2785 #define IDirect3DRMMeshBuilder2_GetFaces(p,a)                    (p)->GetFaces(a)
2786 #define IDirect3DRMMeshBuilder2_GetVertices(p,a,b,c,d,e,f)       (p)->GetVertices(a,b,c,d,e,f)
2787 #define IDirect3DRMMeshBuilder2_GetTextureCoordinates(p,a,b,c)   (p)->GetTextureCoordinates(a,b,c)
2788 #define IDirect3DRMMeshBuilder2_AddVertex(p,a,b,c)               (p)->AddVertex(a,b,c)
2789 #define IDirect3DRMMeshBuilder2_AddNormal(p,a,b,c)               (p)->AddNormal(a,b,c)
2790 #define IDirect3DRMMeshBuilder2_CreateFace(p,a)                  (p)->CreateFace(a)
2791 #define IDirect3DRMMeshBuilder2_GetQuality(p)                    (p)->GetQuality()
2792 #define IDirect3DRMMeshBuilder2_GetPerspective(p)                (p)->GetPerspective()
2793 #define IDirect3DRMMeshBuilder2_GetFaceCount(p)                  (p)->GetFaceCount()
2794 #define IDirect3DRMMeshBuilder2_GetVertexCount(p)                (p)->GetVertexCount()
2795 #define IDirect3DRMMeshBuilder2_GetVertexColor(p,a)              (p)->GetVertexColor(a)
2796 #define IDirect3DRMMeshBuilder2_CreateMesh(p,a)                  (p)->CreateMesh(a)
2797 /*** IDirect3DRMMeshBuilder2 methods ***/
2798 #define IDirect3DRMMeshBuilder2_GenerateNormals2(p,a,b)          (p)->GenerateNormals2(a,b)
2799 #define IDirect3DRMMeshBuilder2_GetFace(p,a,b)                   (p)->GetFace(a,b)
2800 #endif
2801
2802 /*****************************************************************************
2803  * IDirect3DRMMeshBuilder3 interface
2804  */
2805 #define INTERFACE IDirect3DRMMeshBuilder3
2806 DECLARE_INTERFACE_(IDirect3DRMMeshBuilder3,IDirect3DRMVisual)
2807 {
2808     /*** IUnknown methods ***/
2809     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
2810     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
2811     STDMETHOD_(ULONG,Release)(THIS) PURE;
2812     /*** IDirect3DRMObject methods ***/
2813     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
2814     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
2815     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
2816     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
2817     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
2818     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
2819     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
2820     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
2821     /*** IDirect3DRMMeshBuilder3 methods ***/
2822     STDMETHOD(Load)(THIS_ LPVOID filename, LPVOID name, D3DRMLOADOPTIONS loadflags, D3DRMLOADTEXTURE3CALLBACK, LPVOID pArg) PURE;
2823     STDMETHOD(Save)(THIS_ const char *filename, D3DRMXOFFORMAT, D3DRMSAVEOPTIONS save) PURE;
2824     STDMETHOD(Scale)(THIS_ D3DVALUE sx, D3DVALUE sy, D3DVALUE sz) PURE;
2825     STDMETHOD(Translate)(THIS_ D3DVALUE tx, D3DVALUE ty, D3DVALUE tz) PURE;
2826     STDMETHOD(SetColorSource)(THIS_ D3DRMCOLORSOURCE) PURE;
2827     STDMETHOD(GetBox)(THIS_ D3DRMBOX *) PURE;
2828     STDMETHOD(GenerateNormals)(THIS_ D3DVALUE crease, DWORD flags) PURE;
2829     STDMETHOD_(D3DRMCOLORSOURCE, GetColorSource)(THIS) PURE;
2830     STDMETHOD(AddMesh)(THIS_ LPDIRECT3DRMMESH) PURE;
2831     STDMETHOD(AddMeshBuilder)(THIS_ LPDIRECT3DRMMESHBUILDER3) PURE;
2832     STDMETHOD(AddFrame)(THIS_ LPDIRECT3DRMFRAME3) PURE;
2833     STDMETHOD(AddFace)(THIS_ LPDIRECT3DRMFACE2) PURE;
2834     STDMETHOD(AddFaces)(THIS_ DWORD vcount, D3DVECTOR *vertices, DWORD ncount, D3DVECTOR *normals, DWORD *data,
2835         LPDIRECT3DRMFACEARRAY*) PURE;
2836     STDMETHOD(ReserveSpace)(THIS_ DWORD vertex_Count, DWORD normal_count, DWORD face_count) PURE;
2837     STDMETHOD(SetColorRGB)(THIS_ D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE;
2838     STDMETHOD(SetColor)(THIS_ D3DCOLOR) PURE;
2839     STDMETHOD(SetTexture)(THIS_ LPDIRECT3DRMTEXTURE3) PURE;
2840     STDMETHOD(SetMaterial)(THIS_ LPDIRECT3DRMMATERIAL2) PURE;
2841     STDMETHOD(SetTextureTopology)(THIS_ BOOL wrap_u, BOOL wrap_v) PURE;
2842     STDMETHOD(SetQuality)(THIS_ D3DRMRENDERQUALITY) PURE;
2843     STDMETHOD(SetPerspective)(THIS_ BOOL) PURE;
2844     STDMETHOD(SetVertex)(THIS_ DWORD index, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
2845     STDMETHOD(SetNormal)(THIS_ DWORD index, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
2846     STDMETHOD(SetTextureCoordinates)(THIS_ DWORD index, D3DVALUE u, D3DVALUE v) PURE;
2847     STDMETHOD(SetVertexColor)(THIS_ DWORD index, D3DCOLOR) PURE;
2848     STDMETHOD(SetVertexColorRGB)(THIS_ DWORD index, D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE;
2849     STDMETHOD(GetFaces)(THIS_ LPDIRECT3DRMFACEARRAY*) PURE;
2850     STDMETHOD(GetGeometry)(THIS_ DWORD *vcount, D3DVECTOR *vertices, DWORD *ncount, D3DVECTOR *normals,
2851         DWORD *face_data_size, DWORD *face_data) PURE;
2852     STDMETHOD(GetTextureCoordinates)(THIS_ DWORD index, D3DVALUE *u, D3DVALUE *v) PURE;
2853     STDMETHOD_(int, AddVertex)(THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
2854     STDMETHOD_(int, AddNormal)(THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
2855     STDMETHOD(CreateFace)(THIS_ LPDIRECT3DRMFACE2*) PURE;
2856     STDMETHOD_(D3DRMRENDERQUALITY, GetQuality)(THIS) PURE;
2857     STDMETHOD_(BOOL, GetPerspective)(THIS) PURE;
2858     STDMETHOD_(int, GetFaceCount)(THIS) PURE;
2859     STDMETHOD_(int, GetVertexCount)(THIS) PURE;
2860     STDMETHOD_(D3DCOLOR, GetVertexColor)(THIS_ DWORD index) PURE;
2861     STDMETHOD(CreateMesh)(THIS_ LPDIRECT3DRMMESH*) PURE;
2862     STDMETHOD(GetFace)(THIS_ DWORD index, LPDIRECT3DRMFACE2 *) PURE;
2863     STDMETHOD(GetVertex)(THIS_ DWORD index, LPD3DVECTOR pVector) PURE;
2864     STDMETHOD(GetNormal)(THIS_ DWORD index, LPD3DVECTOR pVector) PURE;
2865     STDMETHOD(DeleteVertices)(THIS_ DWORD IndexFirst, DWORD count) PURE;
2866     STDMETHOD(DeleteNormals)(THIS_ DWORD IndexFirst, DWORD count) PURE;
2867     STDMETHOD(DeleteFace)(THIS_ LPDIRECT3DRMFACE2) PURE;
2868     STDMETHOD(Empty)(THIS_ DWORD flags) PURE;
2869     STDMETHOD(Optimize)(THIS_ DWORD flags) PURE;
2870     STDMETHOD(AddFacesIndexed)(THIS_ DWORD flags, DWORD *pvIndices, DWORD *pIndexFirst, DWORD *pCount) PURE;
2871     STDMETHOD(CreateSubMesh)(THIS_ LPUNKNOWN *) PURE;
2872     STDMETHOD(GetParentMesh)(THIS_ DWORD, LPUNKNOWN *) PURE;
2873     STDMETHOD(GetSubMeshes)(THIS_ LPDWORD pCount, LPUNKNOWN *) PURE;
2874     STDMETHOD(DeleteSubMesh)(THIS_ LPUNKNOWN) PURE;
2875     STDMETHOD(Enable)(THIS_ DWORD) PURE;
2876     STDMETHOD(GetEnable)(THIS_ DWORD *) PURE;
2877     STDMETHOD(AddTriangles)(THIS_ DWORD flags, DWORD format, DWORD VertexCount, LPVOID pvData) PURE;
2878     STDMETHOD(SetVertices)(THIS_ DWORD IndexFirst, DWORD count, LPD3DVECTOR) PURE;
2879     STDMETHOD(GetVertices)(THIS_ DWORD IndexFirst, LPDWORD pCount, LPD3DVECTOR) PURE;
2880     STDMETHOD(SetNormals)(THIS_ DWORD IndexFirst, DWORD count, LPD3DVECTOR) PURE;
2881     STDMETHOD(GetNormals)(THIS_ DWORD IndexFirst, LPDWORD pCount, LPD3DVECTOR) PURE;
2882     STDMETHOD_(int, GetNormalCount)(THIS) PURE;
2883 };
2884 #undef INTERFACE
2885
2886 #if !defined(__cplusplus) || defined(CINTERFACE)
2887 /*** IUnknown methods ***/
2888 #define IDirect3DRMMeshBuilder3_QueryInterface(p,a,b)            (p)->lpVtbl->QueryInterface(p,a,b)
2889 #define IDirect3DRMMeshBuilder3_AddRef(p)                        (p)->lpVtbl->AddRef(p)
2890 #define IDirect3DRMMeshBuilder3_Release(p)                       (p)->lpVtbl->Release(p)
2891 /*** IDirect3DRMObject methods ***/
2892 #define IDirect3DRMMeshBuilder3_Clone(p,a,b,c)                   (p)->lpVtbl->Clone(p,a,b,c)
2893 #define IDirect3DRMMeshBuilder3_AddDestroyCallback(p,a,b)        (p)->lpVtbl->AddDestroyCallback(p,a,b)
2894 #define IDirect3DRMMeshBuilder3_DeleteDestroyCallback(p,a,b)     (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
2895 #define IDirect3DRMMeshBuilder3_SetAppData(p,a)                  (p)->lpVtbl->SetAppData(p,a)
2896 #define IDirect3DRMMeshBuilder3_GetAppData(p)                    (p)->lpVtbl->GetAppData(p)
2897 #define IDirect3DRMMeshBuilder3_SetName(p,a)                     (p)->lpVtbl->SetName(p,a)
2898 #define IDirect3DRMMeshBuilder3_GetName(p,a,b)                   (p)->lpVtbl->GetName(p,a,b)
2899 #define IDirect3DRMMeshBuilder3_GetClassName(p,a,b)              (p)->lpVtbl->GetClassName(p,a,b)
2900 /*** IDirect3DRMMeshBuilder3 methods ***/
2901 #define IDirect3DRMMeshBuilder3_Load(p,a,b,c,d,e)                (p)->lpVtbl->Load(p,a,b,c,d,e)
2902 #define IDirect3DRMMeshBuilder3_Save(p,a,b,c)                    (p)->lpVtbl->Save(p,a,b,c)
2903 #define IDirect3DRMMeshBuilder3_Scale(p,a,b,c)                   (p)->lpVtbl->Scale(p,a,b,c)
2904 #define IDirect3DRMMeshBuilder3_Translate(p,a,b,c)               (p)->lpVtbl->Translate(p,a)
2905 #define IDirect3DRMMeshBuilder3_SetColorSource(p,a)              (p)->lpVtbl->SetColorSource(p,a,b,c)
2906 #define IDirect3DRMMeshBuilder3_GetBox(p,a)                      (p)->lpVtbl->GetBox(p,a)
2907 #define IDirect3DRMMeshBuilder3_GenerateNormals(p,a,b)           (p)->lpVtbl->GenerateNormals(p,a,b)
2908 #define IDirect3DRMMeshBuilder3_GetColorSource(p)                (p)->lpVtbl->GetColorSource(p)
2909 #define IDirect3DRMMeshBuilder3_AddMesh(p,a)                     (p)->lpVtbl->AddMesh(p,a)
2910 #define IDirect3DRMMeshBuilder3_AddMeshBuilder(p,a)              (p)->lpVtbl->AddMeshBuilder(p,a)
2911 #define IDirect3DRMMeshBuilder3_AddFrame(p,a)                    (p)->lpVtbl->AddFrame(p,a)
2912 #define IDirect3DRMMeshBuilder3_AddFace(p,a)                     (p)->lpVtbl->AddFace(p,a)
2913 #define IDirect3DRMMeshBuilder3_AddFaces(p,a,b,c,d,e,f)          (p)->lpVtbl->AddFaces(p,a,b,c,d,e,f)
2914 #define IDirect3DRMMeshBuilder3_ReserveSpace(p,a,b,c)            (p)->lpVtbl->ReserveSpace(p,a,b,c)
2915 #define IDirect3DRMMeshBuilder3_SetColorRGB(p,a,b,c)             (p)->lpVtbl->SetColorRGB(p,a,b,c)
2916 #define IDirect3DRMMeshBuilder3_SetColor(p,a)                    (p)->lpVtbl->SetColor(p,a)
2917 #define IDirect3DRMMeshBuilder3_SetTexture(p,a)                  (p)->lpVtbl->SetTexture(p,a)
2918 #define IDirect3DRMMeshBuilder3_SetMateria(p,a)                  (p)->lpVtbl->SetMateria(p,a)
2919 #define IDirect3DRMMeshBuilder3_SetTextureTopology(p,a,b)        (p)->lpVtbl->SetTextureTopology(p,a,b)
2920 #define IDirect3DRMMeshBuilder3_SetQuality(p,a)                  (p)->lpVtbl->SetQuality(p,a)
2921 #define IDirect3DRMMeshBuilder3_SetPerspective(p,a)              (p)->lpVtbl->SetPerspective(p,a)
2922 #define IDirect3DRMMeshBuilder3_SetVertex(p,a,b,c,d)             (p)->lpVtbl->SetVertex(p,a,b,c,d)
2923 #define IDirect3DRMMeshBuilder3_SetNormal(p,a,b,c,d)             (p)->lpVtbl->SetNormal(p,a,b,c,d)
2924 #define IDirect3DRMMeshBuilder3_SetTextureCoordinates(p,a,b,c)   (p)->lpVtbl->SetTextureCoordinates(p,a,b,c)
2925 #define IDirect3DRMMeshBuilder3_SetVertexColor(p,a,b)            (p)->lpVtbl->SetVertexColor(p,a,b)
2926 #define IDirect3DRMMeshBuilder3_SetVertexColorRGB(p,a,b,c,d)     (p)->lpVtbl->SetVertexColorRGB(p,a,b,c,d)
2927 #define IDirect3DRMMeshBuilder3_GetFaces(p,a)                    (p)->lpVtbl->GetFaces(p,a)
2928 #define IDirect3DRMMeshBuilder3_GetGeometry(p,a,b,c,d,e,f)       (p)->lpVtbl->GetGeometry(p,a,b,c,d,e,f)
2929 #define IDirect3DRMMeshBuilder3_GetTextureCoordinates(p,a,b,c)   (p)->lpVtbl->GetTextureCoordinates(p,a,b,c)
2930 #define IDirect3DRMMeshBuilder3_AddVertex(p,a,b,c)               (p)->lpVtbl->AddVertex(p,a,b,c)
2931 #define IDirect3DRMMeshBuilder3_AddNormal(p,a,b,c)               (p)->lpVtbl->AddNormal(p,a,b,c)
2932 #define IDirect3DRMMeshBuilder3_CreateFace(p,a)                  (p)->lpVtbl->CreateFace(p,a)
2933 #define IDirect3DRMMeshBuilder3_GetQuality(p)                    (p)->lpVtbl->GetQuality(p)
2934 #define IDirect3DRMMeshBuilder3_GetPerspective(p)                (p)->lpVtbl->GetPerspective(p)
2935 #define IDirect3DRMMeshBuilder3_GetFaceCount(p)                  (p)->lpVtbl->GetFaceCount(p)
2936 #define IDirect3DRMMeshBuilder3_GetVertexCount(p)                (p)->lpVtbl->GetVertexCount(p)
2937 #define IDirect3DRMMeshBuilder3_GetVertexColor(p,a)              (p)->lpVtbl->GetVertexColor(p,a)
2938 #define IDirect3DRMMeshBuilder3_CreateMesh(p,a)                  (p)->lpVtbl->CreateMesh(p,a)
2939 #define IDirect3DRMMeshBuilder3_GetFace(p,a,b)                   (p)->lpVtbl->GetFace(p,a,b)
2940 #define IDirect3DRMMeshBuilder3_GetVertex(p,a,b)                 (p)->lpVtbl->GetVertex(p,a,b)
2941 #define IDirect3DRMMeshBuilder3_GetNormal(p,a,b)                 (p)->lpVtbl->GetNormal(p,a,b)
2942 #define IDirect3DRMMeshBuilder3_DeleteVertices(p,a,b)            (p)->lpVtbl->DeleteVertices(p,a,b)
2943 #define IDirect3DRMMeshBuilder3_DeleteNormals(p,a,b)             (p)->lpVtbl->DeleteNormals(p,a,b)
2944 #define IDirect3DRMMeshBuilder3_DeleteFace(p,a)                  (p)->lpVtbl->DeleteFace(p,a)
2945 #define IDirect3DRMMeshBuilder3_Empty(p,a)                       (p)->lpVtbl->Empty(p,a)
2946 #define IDirect3DRMMeshBuilder3_Optimize(p,a)                    (p)->lpVtbl->Optimize(p,a)
2947 #define IDirect3DRMMeshBuilder3_AddFacesIndexed(p,a,b,c,d)       (p)->lpVtbl->AddFacesIndexed(p,a,b,c,d)
2948 #define IDirect3DRMMeshBuilder3_CreateSubMesh(p,a)               (p)->lpVtbl->CreateSubMesh(p,a)
2949 #define IDirect3DRMMeshBuilder3_GetParentMesh(p,a,b)             (p)->lpVtbl->GetParentMesh(p,a,b)
2950 #define IDirect3DRMMeshBuilder3_GetSubMeshes(p,a,b)              (p)->lpVtbl->GetSubMeshes(p,a,b)
2951 #define IDirect3DRMMeshBuilder3_DeleteSubMesh(p,a)               (p)->lpVtbl->DeleteSubMesh(p,a)
2952 #define IDirect3DRMMeshBuilder3_Enable(p,a)                      (p)->lpVtbl->Enable(p,a)
2953 #define IDirect3DRMMeshBuilder3_AddTriangles(p,a,b,c,d)          (p)->lpVtbl->AddTriangles(p,a,b,c,d)
2954 #define IDirect3DRMMeshBuilder3_SetVertices(p,a,b,c)             (p)->lpVtbl->SetVertices(p,a,b,c)
2955 #define IDirect3DRMMeshBuilder3_GetVertices(p,a,b,c)             (p)->lpVtbl->GetVertices(p,a,b,c)
2956 #define IDirect3DRMMeshBuilder3_SetNormals(p,a,b,c)              (p)->lpVtbl->SetNormals(p,a,b,c)
2957 #define IDirect3DRMMeshBuilder3_GetNormals(p,a,b,c)              (p)->lpVtbl->GetNormals(p,a,b,c)
2958 #define IDirect3DRMMeshBuilder3_GetNormalCount(p)                (p)->lpVtbl->GetNormalCount(p)
2959 #else
2960 /*** IUnknown methods ***/
2961 #define IDirect3DRMMeshBuilder3_QueryInterface(p,a,b)            (p)->QueryInterface(a,b)
2962 #define IDirect3DRMMeshBuilder3_AddRef(p)                        (p)->AddRef()
2963 #define IDirect3DRMMeshBuilder3_Release(p)                       (p)->Release()
2964 /*** IDirect3DRMObject methods ***/
2965 #define IDirect3DRMMeshBuilder3_Clone(p,a,b,c)                   (p)->Clone(a,b,c)
2966 #define IDirect3DRMMeshBuilder3_AddDestroyCallback(p,a,b)        (p)->AddDestroyCallback(a,b)
2967 #define IDirect3DRMMeshBuilder3_DeleteDestroyCallback(p,a,b)     (p)->DeleteDestroyCallback(a,b)
2968 #define IDirect3DRMMeshBuilder3_SetAppData(p,a)                  (p)->SetAppData(a)
2969 #define IDirect3DRMMeshBuilder3_GetAppData(p)                    (p)->GetAppData()
2970 #define IDirect3DRMMeshBuilder3_SetName(p,a)                     (p)->SetName(a)
2971 #define IDirect3DRMMeshBuilder3_GetName(p,a,b)                   (p)->GetName(a,b)
2972 #define IDirect3DRMMeshBuilder3_GetClassName(p,a,b)              (p)->GetClassName(a,b)
2973 /*** IDirect3DRMMeshBuilder3 methods ***/
2974 #define IDirect3DRMMeshBuilder3_Load(p,a,b,c,d,e)                (p)->Load(a,b,c,d,e)
2975 #define IDirect3DRMMeshBuilder3_Save(p,a,b,c)                    (p)->Save(a,b,c)
2976 #define IDirect3DRMMeshBuilder3_Scale(p,a,b,c)                   (p)->Scale(a,b,c)
2977 #define IDirect3DRMMeshBuilder3_Translate(p,a,b,c)               (p)->Translate(a)
2978 #define IDirect3DRMMeshBuilder3_SetColorSource(p,a)              (p)->SetColorSource(a,b,c)
2979 #define IDirect3DRMMeshBuilder3_GetBox(p,a)                      (p)->GetBox(a)
2980 #define IDirect3DRMMeshBuilder3_GenerateNormals(p,a,b)           (p)->GenerateNormals(a,b)
2981 #define IDirect3DRMMeshBuilder3_GetColorSource(p)                (p)->GetColorSource()
2982 #define IDirect3DRMMeshBuilder3_AddMesh(p,a)                     (p)-->AddMesh(a)
2983 #define IDirect3DRMMeshBuilder3_AddMeshBuilder(p,a)              (p)->AddMeshBuilder(a)
2984 #define IDirect3DRMMeshBuilder3_AddFrame(p,a)                    (p)->AddFrame(a)
2985 #define IDirect3DRMMeshBuilder3_AddFace(p,a)                     (p)->AddFace(a)
2986 #define IDirect3DRMMeshBuilder3_AddFaces(p,a,b,c,d,e,f)          (p)->AddFaces(a,b,c,d,e,f)
2987 #define IDirect3DRMMeshBuilder3_ReserveSpace(p,a,b,c)            (p)->ReserveSpace(a,b,c)
2988 #define IDirect3DRMMeshBuilder3_SetColorRGB(p,a,b,c)             (p)->SetColorRGB(a,b,c)
2989 #define IDirect3DRMMeshBuilder3_SetColor(p,a)                    (p)->SetColor(a)
2990 #define IDirect3DRMMeshBuilder3_SetTexture(p,a)                  (p)->SetTexture(a)
2991 #define IDirect3DRMMeshBuilder3_SetMateria(p,a)                  (p)->SetMateria(a)
2992 #define IDirect3DRMMeshBuilder3_SetTextureTopology(p,a,b)        (p)->SetTextureTopology(a,b)
2993 #define IDirect3DRMMeshBuilder3_SetQuality(p,a)                  (p)->SetQuality(a)
2994 #define IDirect3DRMMeshBuilder3_SetPerspective(p,a)              (p)->SetPerspective(a)
2995 #define IDirect3DRMMeshBuilder3_SetVertex(p,a,b,c,d)             (p)->SetVertex(a,b,c,d)
2996 #define IDirect3DRMMeshBuilder3_SetNormal(p,a,b,c,d)             (p)->SetNormal(a,b,c,d)
2997 #define IDirect3DRMMeshBuilder3_SetTextureCoordinates(p,a,b,c)   (p)->SetTextureCoordinates(a,b,c)
2998 #define IDirect3DRMMeshBuilder3_SetVertexColor(p,a,b)            (p)->SetVertexColor(a,b)
2999 #define IDirect3DRMMeshBuilder3_SetVertexColorRGB(p,a,b,c,d)     (p)->SetVertexColorRGB(a,b,c,d)
3000 #define IDirect3DRMMeshBuilder3_GetFaces(p,a)                    (p)->GetFaces(a)
3001 #define IDirect3DRMMeshBuilder3_GetGeometry(p,a,b,c,d,e,f)       (p)->GetGeometry(a,b,c,d,e,f)
3002 #define IDirect3DRMMeshBuilder3_GetTextureCoordinates(p,a,b,c)   (p)->GetTextureCoordinates(a,b,c)
3003 #define IDirect3DRMMeshBuilder3_AddVertex(p,a,b,c)               (p)->AddVertex(a,b,c)
3004 #define IDirect3DRMMeshBuilder3_AddNormal(p,a,b,c)               (p)->AddNormal(a,b,c)
3005 #define IDirect3DRMMeshBuilder3_CreateFace(p,a)                  (p)->CreateFace(a)
3006 #define IDirect3DRMMeshBuilder3_GetQuality(p)                    (p)->GetQuality()
3007 #define IDirect3DRMMeshBuilder3_GetPerspective(p)                (p)->GetPerspective()
3008 #define IDirect3DRMMeshBuilder3_GetFaceCount(p)                  (p)->GetFaceCount()
3009 #define IDirect3DRMMeshBuilder3_GetVertexCount(p)                (p)->GetVertexCount()
3010 #define IDirect3DRMMeshBuilder3_GetVertexColor(p,a)              (p)->GetVertexColor(a)
3011 #define IDirect3DRMMeshBuilder3_CreateMesh(p,a)                  (p)->CreateMesh(a)
3012 #define IDirect3DRMMeshBuilder3_GetFace(p,a,b)                   (p)->GetFace(a,b)
3013 #define IDirect3DRMMeshBuilder3_GetVertex(p,a,b)                 (p)->GetVertex(a,b)
3014 #define IDirect3DRMMeshBuilder3_GetNormal(p,a,b)                 (p)->GetNormal(a,b)
3015 #define IDirect3DRMMeshBuilder3_DeleteVertices(p,a,b)            (p)->DeleteVertices(a,b)
3016 #define IDirect3DRMMeshBuilder3_DeleteNormals(p,a,b)             (p)->DeleteNormals(a,b)
3017 #define IDirect3DRMMeshBuilder3_DeleteFace(p,a)                  (p)->DeleteFace(a)
3018 #define IDirect3DRMMeshBuilder3_Empty(p,a)                       (p)->Empty(a)
3019 #define IDirect3DRMMeshBuilder3_Optimize(p,a)                    (p)->Optimize(a)
3020 #define IDirect3DRMMeshBuilder3_AddFacesIndexed(p,a,b,c,d)       (p)->AddFacesIndexed(a,b,c,d)
3021 #define IDirect3DRMMeshBuilder3_CreateSubMesh(p,a)               (p)->CreateSubMesh(a)
3022 #define IDirect3DRMMeshBuilder3_GetParentMesh(p,a,b)             (p)->GetParentMesh(a,b)
3023 #define IDirect3DRMMeshBuilder3_GetSubMeshes(p,a,b)              (p)->GetSubMeshes(a,b)
3024 #define IDirect3DRMMeshBuilder3_DeleteSubMesh(p,a)               (p)->DeleteSubMesh(a)
3025 #define IDirect3DRMMeshBuilder3_Enable(p,a)                      (p)->Enable(a)
3026 #define IDirect3DRMMeshBuilder3_AddTriangles(p,a,b,c,d)          (p)->AddTriangles(a,b,c,d)
3027 #define IDirect3DRMMeshBuilder3_SetVertices(p,a,b,c)             (p)->SetVertices(a,b,c)
3028 #define IDirect3DRMMeshBuilder3_GetVertices(p,a,b,c)             (p)->GetVertices(a,b,c)
3029 #define IDirect3DRMMeshBuilder3_SetNormals(p,a,b,c)              (p)->SetNormals(a,b,c)
3030 #define IDirect3DRMMeshBuilder3_GetNormals(p,a,b,c)              (p)->GetNormals(a,b,c)
3031 #define IDirect3DRMMeshBuilder3_GetNormalCount(p)                (p)->GetNormalCount()
3032 #endif
3033
3034 /*****************************************************************************
3035  * IDirect3DRMLight interface
3036  */
3037 #define INTERFACE IDirect3DRMLight
3038 DECLARE_INTERFACE_(IDirect3DRMLight,IDirect3DRMObject)
3039 {
3040     /*** IUnknown methods ***/
3041     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
3042     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
3043     STDMETHOD_(ULONG,Release)(THIS) PURE;
3044     /*** IDirect3DRMObject methods ***/
3045     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
3046     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
3047     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
3048     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
3049     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
3050     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
3051     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
3052     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
3053     /*** IDirect3DRMLight methods ***/
3054     STDMETHOD(SetType)(THIS_ D3DRMLIGHTTYPE) PURE;
3055     STDMETHOD(SetColor)(THIS_ D3DCOLOR) PURE;
3056     STDMETHOD(SetColorRGB)(THIS_ D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE;
3057     STDMETHOD(SetRange)(THIS_ D3DVALUE) PURE;
3058     STDMETHOD(SetUmbra)(THIS_ D3DVALUE) PURE;
3059     STDMETHOD(SetPenumbra)(THIS_ D3DVALUE) PURE;
3060     STDMETHOD(SetConstantAttenuation)(THIS_ D3DVALUE) PURE;
3061     STDMETHOD(SetLinearAttenuation)(THIS_ D3DVALUE) PURE;
3062     STDMETHOD(SetQuadraticAttenuation)(THIS_ D3DVALUE) PURE;
3063     STDMETHOD_(D3DVALUE, GetRange)(THIS) PURE;
3064     STDMETHOD_(D3DVALUE, GetUmbra)(THIS) PURE;
3065     STDMETHOD_(D3DVALUE, GetPenumbra)(THIS) PURE;
3066     STDMETHOD_(D3DVALUE, GetConstantAttenuation)(THIS) PURE;
3067     STDMETHOD_(D3DVALUE, GetLinearAttenuation)(THIS) PURE;
3068     STDMETHOD_(D3DVALUE, GetQuadraticAttenuation)(THIS) PURE;
3069     STDMETHOD_(D3DCOLOR, GetColor)(THIS) PURE;
3070     STDMETHOD_(D3DRMLIGHTTYPE, GetType)(THIS) PURE;
3071     STDMETHOD(SetEnableFrame)(THIS_ LPDIRECT3DRMFRAME) PURE;
3072     STDMETHOD(GetEnableFrame)(THIS_ LPDIRECT3DRMFRAME*) PURE;
3073 };
3074 #undef INTERFACE
3075
3076 #if !defined(__cplusplus) || defined(CINTERFACE)
3077 /*** IUnknown methods ***/
3078 #define IDirect3DRMLight_QueryInterface(p,a,b)            (p)->lpVtbl->QueryInterface(p,a,b)
3079 #define IDirect3DRMLight_AddRef(p)                        (p)->lpVtbl->AddRef(p)
3080 #define IDirect3DRMLight_Release(p)                       (p)->lpVtbl->Release(p)
3081 /*** IDirect3DRMObject methods ***/
3082 #define IDirect3DRMLight_Clone(p,a,b,c)                   (p)->lpVtbl->Clone(p,a,b,c)
3083 #define IDirect3DRMLight_AddDestroyCallback(p,a,b)        (p)->lpVtbl->AddDestroyCallback(p,a,b)
3084 #define IDirect3DRMLight_DeleteDestroyCallback(p,a,b)     (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
3085 #define IDirect3DRMLight_SetAppData(p,a)                  (p)->lpVtbl->SetAppData(p,a)
3086 #define IDirect3DRMLight_GetAppData(p)                    (p)->lpVtbl->GetAppData(p)
3087 #define IDirect3DRMLight_SetName(p,a)                     (p)->lpVtbl->SetName(p,a)
3088 #define IDirect3DRMLight_GetName(p,a,b)                   (p)->lpVtbl->GetName(p,a,b)
3089 #define IDirect3DRMLight_GetClassName(p,a,b)              (p)->lpVtbl->GetClassName(p,a,b)
3090 /*** IDirect3DRMLight methods ***/
3091 #define IDirect3DRMLight_SetType(p,a)                     (p)->lpVtbl->SetType(p,a)
3092 #define IDirect3DRMLight_SetColor(p,a)                    (p)->lpVtbl->SetColor(p,a)
3093 #define IDirect3DRMLight_SetColorRGB(p,a,b,c)             (p)->lpVtbl->SetColorRGB(p,a,b,c)
3094 #define IDirect3DRMLight_SetRange(p,a)                    (p)->lpVtbl->SetRange(p,a)
3095 #define IDirect3DRMLight_SetUmbra(p,a)                    (p)->lpVtbl->SetUmbra(p,a)
3096 #define IDirect3DRMLight_SetPenumbra(p,a)                 (p)->lpVtbl->SetPenumbra(p,a)
3097 #define IDirect3DRMLight_SetConstantAttenuation(p,a)      (p)->lpVtbl->SetConstantAttenuation(p,a)
3098 #define IDirect3DRMLight_SetLinearAttenuation(p,a)        (p)->lpVtbl->SetLinearAttenuation(p,a)
3099 #define IDirect3DRMLight_SetQuadraticAttenuation(p,a)     (p)->lpVtbl->SetQuadraticAttenuation(p,a)
3100 #define IDirect3DRMLight_GetRange(p)                      (p)->lpVtbl->GetRange(p)
3101 #define IDirect3DRMLight_GetUmbra(p)                      (p)->lpVtbl->GetUmbra(p)
3102 #define IDirect3DRMLight_GetPenumbra(p)                   (p)->lpVtbl->GetPenumbra(p)
3103 #define IDirect3DRMLight_GetConstantAttenuation(p)        (p)->lpVtbl->GetConstantAttenuation(p)
3104 #define IDirect3DRMLight_GetLinearAttenuation(p)          (p)->lpVtbl->GetLinearAttenuation(p)
3105 #define IDirect3DRMLight_GetQuadraticAttenuation(p)       (p)->lpVtbl->GetQuadraticAttenuation(p)
3106 #define IDirect3DRMLight_GetColor(p)                      (p)->lpVtbl->GetColor(p)
3107 #define IDirect3DRMLight_GetType(p)                       (p)->lpVtbl->GetType(p)
3108 #define IDirect3DRMLight_SetEnableFrame(p,a)              (p)->lpVtbl->SetEnableFrame(p,a)
3109 #define IDirect3DRMLight_GetEnableFrame(p,a)              (p)->lpVtbl->GetEnableFrame(p,a)
3110 #else
3111 /*** IUnknown methods ***/
3112 #define IDirect3DRMLight_QueryInterface(p,a,b)            (p)->QueryInterface(a,b)
3113 #define IDirect3DRMLight_AddRef(p)                        (p)->AddRef()
3114 #define IDirect3DRMLight_Release(p)                       (p)->Release()
3115 /*** IDirect3DRMObject methods ***/
3116 #define IDirect3DRMLight_Clone(p,a,b,c)                   (p)->Clone(a,b,c)
3117 #define IDirect3DRMLight_AddDestroyCallback(p,a,b)        (p)->AddDestroyCallback(a,b)
3118 #define IDirect3DRMLight_DeleteDestroyCallback(p,a,b)     (p)->DeleteDestroyCallback(a,b)
3119 #define IDirect3DRMLight_SetAppData(p,a)                  (p)->SetAppData(a)
3120 #define IDirect3DRMLight_GetAppData(p)                    (p)->GetAppData()
3121 #define IDirect3DRMLight_SetName(p,a)                     (p)->SetName(a)
3122 #define IDirect3DRMLight_GetName(p,a,b)                   (p)->GetName(a,b)
3123 #define IDirect3DRMLight_GetClassName(p,a,b)              (p)->GetClassName(a,b)
3124 /*** IDirect3DRMLight methods ***/
3125 #define IDirect3DRMLight_SetType(p,a)                     (p)->SetType(a)
3126 #define IDirect3DRMLight_SetColor(p,a)                    (p)->SetColor(a)
3127 #define IDirect3DRMLight_SetColorRGB(p,a,b,c)             (p)->SetColorRGB(a,b,c)
3128 #define IDirect3DRMLight_SetRange(p,a)                    (p)->SetRange(a)
3129 #define IDirect3DRMLight_SetUmbra(p,a)                    (p)->SetUmbra(a)
3130 #define IDirect3DRMLight_SetPenumbra(p,a)                 (p)->SetPenumbra(a)
3131 #define IDirect3DRMLight_SetConstantAttenuation(p,a)      (p)->SetConstantAttenuation(a)
3132 #define IDirect3DRMLight_SetLinearAttenuation(p,a)        (p)->SetLinearAttenuation(a)
3133 #define IDirect3DRMLight_SetQuadraticAttenuation(p,a)     (p)->SetQuadraticAttenuation(a)
3134 #define IDirect3DRMLight_GetRange(p)                      (p)->GetRange()
3135 #define IDirect3DRMLight_GetUmbra(p)                      (p)->GetUmbra()
3136 #define IDirect3DRMLight_GetPenumbra(p)                   (p)->GetPenumbra()
3137 #define IDirect3DRMLight_GetConstantAttenuation(p)        (p)->GetConstantAttenuation()
3138 #define IDirect3DRMLight_GetLinearAttenuation(p)          (p)->GetLinearAttenuation()
3139 #define IDirect3DRMLight_GetQuadraticAttenuation(p)       (p)->GetQuadraticAttenuation()
3140 #define IDirect3DRMLight_GetColor(p)                      (p)->GetColor()
3141 #define IDirect3DRMLight_GetType(p)                       (p)->GetType()
3142 #define IDirect3DRMLight_SetEnableFrame(p,a)              (p)->SetEnableFrame(a)
3143 #define IDirect3DRMLight_GetEnableFrame(p,a)              (p)->GetEnableFrame(a)
3144 #endif
3145
3146 /*****************************************************************************
3147  * IDirect3DRMTexture interface
3148  */
3149 #define INTERFACE IDirect3DRMTexture
3150 DECLARE_INTERFACE_(IDirect3DRMTexture, IDirect3DRMVisual)
3151 {
3152     /*** IUnknown methods ***/
3153     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
3154     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
3155     STDMETHOD_(ULONG,Release)(THIS) PURE;
3156     /*** IDirect3DRMObject methods ***/
3157     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
3158     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
3159     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
3160     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
3161     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
3162     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
3163     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
3164     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
3165     /*** IDirect3DRMTexture methods ***/
3166     STDMETHOD(InitFromFile)(THIS_ const char *filename) PURE;
3167     STDMETHOD(InitFromSurface)(THIS_ LPDIRECTDRAWSURFACE lpDDS) PURE;
3168     STDMETHOD(InitFromResource)(THIS_ HRSRC) PURE;
3169     STDMETHOD(Changed)(THIS_ BOOL pixels, BOOL palette) PURE;
3170     STDMETHOD(SetColors)(THIS_ DWORD) PURE;
3171     STDMETHOD(SetShades)(THIS_ DWORD) PURE;
3172     STDMETHOD(SetDecalSize)(THIS_ D3DVALUE width, D3DVALUE height) PURE;
3173     STDMETHOD(SetDecalOrigin)(THIS_ LONG x, LONG y) PURE;
3174     STDMETHOD(SetDecalScale)(THIS_ DWORD) PURE;
3175     STDMETHOD(SetDecalTransparency)(THIS_ BOOL) PURE;
3176     STDMETHOD(SetDecalTransparentColor)(THIS_ D3DCOLOR) PURE;
3177     STDMETHOD(GetDecalSize)(THIS_ D3DVALUE *width_return, D3DVALUE *height_return) PURE;
3178     STDMETHOD(GetDecalOrigin)(THIS_ LONG *x_return, LONG *y_return) PURE;
3179     STDMETHOD_(D3DRMIMAGE *, GetImage)(THIS) PURE;
3180     STDMETHOD_(DWORD, GetShades)(THIS) PURE;
3181     STDMETHOD_(DWORD, GetColors)(THIS) PURE;
3182     STDMETHOD_(DWORD, GetDecalScale)(THIS) PURE;
3183     STDMETHOD_(BOOL, GetDecalTransparency)(THIS) PURE;
3184     STDMETHOD_(D3DCOLOR, GetDecalTransparentColor)(THIS) PURE;
3185 };
3186 #undef INTERFACE
3187
3188 #if !defined(__cplusplus) || defined(CINTERFACE)
3189 /*** IUnknown methods ***/
3190 #define IDirect3DRMTexture_QueryInterface(p,a,b)            (p)->lpVtbl->QueryInterface(p,a,b)
3191 #define IDirect3DRMTexture_AddRef(p)                        (p)->lpVtbl->AddRef(p)
3192 #define IDirect3DRMTexture_Release(p)                       (p)->lpVtbl->Release(p)
3193 /*** IDirect3DRMObject methods ***/
3194 #define IDirect3DRMTexture_Clone(p,a,b,c)                   (p)->lpVtbl->Clone(p,a,b,c)
3195 #define IDirect3DRMTexture_AddDestroyCallback(p,a,b)        (p)->lpVtbl->AddDestroyCallback(p,a,b)
3196 #define IDirect3DRMTexture_DeleteDestroyCallback(p,a,b)     (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
3197 #define IDirect3DRMTexture_SetAppData(p,a)                  (p)->lpVtbl->SetAppData(p,a)
3198 #define IDirect3DRMTexture_GetAppData(p)                    (p)->lpVtbl->GetAppData(p)
3199 #define IDirect3DRMTexture_SetName(p,a)                     (p)->lpVtbl->SetName(p,a)
3200 #define IDirect3DRMTexture_GetName(p,a,b)                   (p)->lpVtbl->GetName(p,a,b)
3201 #define IDirect3DRMTexture_GetClassName(p,a,b)              (p)->lpVtbl->GetClassName(p,a,b)
3202 /*** IDirect3DRMTexture methods ***/
3203 #define IDirect3DRMTexture_InitFromFile(p,a)                (p)->lpVtbl->InitFromFile(p,a)
3204 #define IDirect3DRMTexture_InitFromSurface(p,a)             (p)->lpVtbl->InitFromSurface(p,a)
3205 #define IDirect3DRMTexture_InitFromResource(p,a)            (p)->lpVtbl->InitFromResource(p,a)
3206 #define IDirect3DRMTexture_Changed(p,a,b)                   (p)->lpVtbl->Changed(p,a,b)
3207 #define IDirect3DRMTexture_SetColors(p,a)                   (p)->lpVtbl->SetColors(p,a)
3208 #define IDirect3DRMTexture_SetShades(p,a)                   (p)->lpVtbl->SetShades(p,a)
3209 #define IDirect3DRMTexture_SetDecalSize(p,a,b)              (p)->lpVtbl->SetDecalSize(p,a,b)
3210 #define IDirect3DRMTexture_SetDecalOrigin(p,a,b)            (p)->lpVtbl->SetDecalOrigin(p,a,b)
3211 #define IDirect3DRMTexture_SetDecalScale(p,a)               (p)->lpVtbl->SetDecalScale(p,a)
3212 #define IDirect3DRMTexture_SetDecalTransparency(p,a)        (p)->lpVtbl->SetDecalTransparency(p,a)
3213 #define IDirect3DRMTexture_SetDecalTransparencyColor(p,a)   (p)->lpVtbl->SetDecalTransparentColor(p,a)
3214 #define IDirect3DRMTexture_GetDecalSize(p,a,b)              (p)->lpVtbl->GetDecalSize(p,a,b)
3215 #define IDirect3DRMTexture_GetDecalOrigin(p,a,b)            (p)->lpVtbl->GetDecalOrigin(p,a,b)
3216 #define IDirect3DRMTexture_GetImage(p)                      (p)->lpVtbl->GetImage(p)
3217 #define IDirect3DRMTexture_GetShades(p)                     (p)->lpVtbl->GetShades(p)
3218 #define IDirect3DRMTexture_GetColors(p)                     (p)->lpVtbl->GetColors(p)
3219 #define IDirect3DRMTexture_GetDecalScale(p)                 (p)->lpVtbl->GetDecalScale(p)
3220 #define IDirect3DRMTexture_GetDecalTransparency(p)          (p)->lpVtbl->GetDecalTransparency(p)
3221 #define IDirect3DRMTexture_GetDecalTransparencyColor(p)     (p)->lpVtbl->GetDecalTransparencyColor(p)
3222 #else
3223 /*** IUnknown methods ***/
3224 #define IDirect3DRMTexture_QueryInterface(p,a,b)            (p)->QueryInterface(a,b)
3225 #define IDirect3DRMTexture_AddRef(p)                        (p)->AddRef()
3226 #define IDirect3DRMTexture_Release(p)                       (p)->Release()
3227 /*** IDirect3DRMObject methods ***/
3228 #define IDirect3DRMTexture_Clone(p,a,b,c)                   (p)->Clone(a,b,c)
3229 #define IDirect3DRMTexture_AddDestroyCallback(p,a,b)        (p)->AddDestroyCallback(a,b)
3230 #define IDirect3DRMTexture_DeleteDestroyCallback(p,a,b)     (p)->DeleteDestroyCallback(a,b)
3231 #define IDirect3DRMTexture_SetAppData(p,a)                  (p)->SetAppData(a)
3232 #define IDirect3DRMTexture_GetAppData(p)                    (p)->GetAppData()
3233 #define IDirect3DRMTexture_SetName(p,a)                     (p)->SetName(a)
3234 #define IDirect3DRMTexture_GetName(p,a,b)                   (p)->GetName(a,b)
3235 #define IDirect3DRMTexture_GetClassName(p,a,b)              (p)->GetClassName(a,b)
3236 /*** IDirect3DRMTexture methods ***/
3237 #define IDirect3DRMTexture_InitFromFile(p,a)                (p)->InitFromFile(a)
3238 #define IDirect3DRMTexture_InitFromSurface(p,a)             (p)->InitFromSurface(a)
3239 #define IDirect3DRMTexture_InitFromResource(p,a)            (p)->InitFromResource(a)
3240 #define IDirect3DRMTexture_Changed(p,a,b)                   (p)->Changed(a,b)
3241 #define IDirect3DRMTexture_SetColors(p,a)                   (p)->SetColors(a)
3242 #define IDirect3DRMTexture_SetShades(p,a)                   (p)->SetShades(a)
3243 #define IDirect3DRMTexture_SetDecalSize(p,a,b)              (p)->SetDecalSize(a,b)
3244 #define IDirect3DRMTexture_SetDecalOrigin(p,a,b)            (p)->SetDecalOrigin(a,b)
3245 #define IDirect3DRMTexture_SetDecalScale(p,a)               (p)->SetDecalScale(a)
3246 #define IDirect3DRMTexture_SetDecalTransparency(p,a)        (p)->SetDecalTransparency(a)
3247 #define IDirect3DRMTexture_SetDecalTransparencyColor(p,a)   (p)->SetDecalTransparentColor(a)
3248 #define IDirect3DRMTexture_GetDecalSize(p,a,b)              (p)->GetDecalSize(a,b)
3249 #define IDirect3DRMTexture_GetDecalOrigin(p,a,b)            (p)->GetDecalOrigin(a,b)
3250 #define IDirect3DRMTexture_GetImage(p)                      (p)->GetImage()
3251 #define IDirect3DRMTexture_GetShades(p)                     (p)->GetShades()
3252 #define IDirect3DRMTexture_GetColors(p)                     (p)->GetColors()
3253 #define IDirect3DRMTexture_GetDecalScale(p)                 (p)->GetDecalScale()
3254 #define IDirect3DRMTexture_GetDecalTransparency(p)          (p)->GetDecalTransparency()
3255 #define IDirect3DRMTexture_GetDecalTransparencyColor(p)     (p)->GetDecalTransparencyColor()
3256 #endif
3257
3258 /*****************************************************************************
3259  * IDirect3DRMTexture2 interface
3260  */
3261 #define INTERFACE IDirect3DRMTexture2
3262 DECLARE_INTERFACE_(IDirect3DRMTexture2, IDirect3DRMTexture)
3263 {
3264     /*** IUnknown methods ***/
3265     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
3266     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
3267     STDMETHOD_(ULONG,Release)(THIS) PURE;
3268     /*** IDirect3DRMObject methods ***/
3269     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
3270     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
3271     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
3272     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
3273     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
3274     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
3275     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
3276     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
3277     /*** IDirect3DRMTexture methods ***/
3278     STDMETHOD(InitFromFile)(THIS_ const char *filename) PURE;
3279     STDMETHOD(InitFromSurface)(THIS_ LPDIRECTDRAWSURFACE lpDDS) PURE;
3280     STDMETHOD(InitFromResource)(THIS_ HRSRC) PURE;
3281     STDMETHOD(Changed)(THIS_ BOOL pixels, BOOL palette) PURE;
3282     STDMETHOD(SetColors)(THIS_ DWORD) PURE;
3283     STDMETHOD(SetShades)(THIS_ DWORD) PURE;
3284     STDMETHOD(SetDecalSize)(THIS_ D3DVALUE width, D3DVALUE height) PURE;
3285     STDMETHOD(SetDecalOrigin)(THIS_ LONG x, LONG y) PURE;
3286     STDMETHOD(SetDecalScale)(THIS_ DWORD) PURE;
3287     STDMETHOD(SetDecalTransparency)(THIS_ BOOL) PURE;
3288     STDMETHOD(SetDecalTransparentColor)(THIS_ D3DCOLOR) PURE;
3289     STDMETHOD(GetDecalSize)(THIS_ D3DVALUE *width_return, D3DVALUE *height_return) PURE;
3290     STDMETHOD(GetDecalOrigin)(THIS_ LONG *x_return, LONG *y_return) PURE;
3291     STDMETHOD_(D3DRMIMAGE *, GetImage)(THIS) PURE;
3292     STDMETHOD_(DWORD, GetShades)(THIS) PURE;
3293     STDMETHOD_(DWORD, GetColors)(THIS) PURE;
3294     STDMETHOD_(DWORD, GetDecalScale)(THIS) PURE;
3295     STDMETHOD_(BOOL, GetDecalTransparency)(THIS) PURE;
3296     STDMETHOD_(D3DCOLOR, GetDecalTransparentColor)(THIS) PURE;
3297     /*** IDirect3DRMTexture2 methods ***/
3298     STDMETHOD(InitFromImage)(THIS_ LPD3DRMIMAGE) PURE;
3299     STDMETHOD(InitFromResource2)(THIS_ HMODULE hModule, LPCSTR /* LPCTSTR */ strName, LPCSTR /* LPCTSTR */ strType) PURE;
3300     STDMETHOD(GenerateMIPMap)(THIS_ DWORD) PURE;
3301 };
3302 #undef INTERFACE
3303
3304 #if !defined(__cplusplus) || defined(CINTERFACE)
3305 /*** IUnknown methods ***/
3306 #define IDirect3DRMTexture2_QueryInterface(p,a,b)            (p)->lpVtbl->QueryInterface(p,a,b)
3307 #define IDirect3DRMTexture2_AddRef(p)                        (p)->lpVtbl->AddRef(p)
3308 #define IDirect3DRMTexture2_Release(p)                       (p)->lpVtbl->Release(p)
3309 /*** IDirect3DRMObject methods ***/
3310 #define IDirect3DRMTexture2_Clone(p,a,b,c)                   (p)->lpVtbl->Clone(p,a,b,c)
3311 #define IDirect3DRMTexture2_AddDestroyCallback(p,a,b)        (p)->lpVtbl->AddDestroyCallback(p,a,b)
3312 #define IDirect3DRMTexture2_DeleteDestroyCallback(p,a,b)     (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
3313 #define IDirect3DRMTexture2_SetAppData(p,a)                  (p)->lpVtbl->SetAppData(p,a)
3314 #define IDirect3DRMTexture2_GetAppData(p)                    (p)->lpVtbl->GetAppData(p)
3315 #define IDirect3DRMTexture2_SetName(p,a)                     (p)->lpVtbl->SetName(p,a)
3316 #define IDirect3DRMTexture2_GetName(p,a,b)                   (p)->lpVtbl->GetName(p,a,b)
3317 #define IDirect3DRMTexture2_GetClassName(p,a,b)              (p)->lpVtbl->GetClassName(p,a,b)
3318 /*** IDirect3DRMTexture methods ***/
3319 #define IDirect3DRMTexture2_InitFromFile(p,a)                (p)->lpVtbl->InitFromFile(p,a)
3320 #define IDirect3DRMTexture2_InitFromSurface(p,a)             (p)->lpVtbl->InitFromSurface(p,a)
3321 #define IDirect3DRMTexture2_InitFromResource(p,a)            (p)->lpVtbl->InitFromResource(p,a)
3322 #define IDirect3DRMTexture2_Changed(p,a,b)                   (p)->lpVtbl->Changed(p,a,b)
3323 #define IDirect3DRMTexture2_SetColors(p,a)                   (p)->lpVtbl->SetColors(p,a)
3324 #define IDirect3DRMTexture2_SetShades(p,a)                   (p)->lpVtbl->SetShades(p,a)
3325 #define IDirect3DRMTexture2_SetDecalSize(p,a,b)              (p)->lpVtbl->SetDecalSize(p,a,b)
3326 #define IDirect3DRMTexture2_SetDecalOrigin(p,a,b)            (p)->lpVtbl->SetDecalOrigin(p,a,b)
3327 #define IDirect3DRMTexture2_SetDecalScale(p,a)               (p)->lpVtbl->SetDecalScale(p,a)
3328 #define IDirect3DRMTexture2_SetDecalTransparency(p,a)        (p)->lpVtbl->SetDecalTransparency(p,a)
3329 #define IDirect3DRMTexture2_SetDecalTransparencyColor(p,a)   (p)->lpVtbl->SetDecalTransparentColor(p,a)
3330 #define IDirect3DRMTexture2_GetDecalSize(p,a,b)              (p)->lpVtbl->GetDecalSize(p,a,b)
3331 #define IDirect3DRMTexture2_GetDecalOrigin(p,a,b)            (p)->lpVtbl->GetDecalOrigin(p,a,b)
3332 #define IDirect3DRMTexture2_GetImage(p)                      (p)->lpVtbl->GetImage(p)
3333 #define IDirect3DRMTexture2_GetShades(p)                     (p)->lpVtbl->GetShades(p)
3334 #define IDirect3DRMTexture2_GetColors(p)                     (p)->lpVtbl->GetColors(p)
3335 #define IDirect3DRMTexture2_GetDecalScale(p)                 (p)->lpVtbl->GetDecalScale(p)
3336 #define IDirect3DRMTexture2_GetDecalTransparency(p)          (p)->lpVtbl->GetDecalTransparency(p)
3337 #define IDirect3DRMTexture2_GetDecalTransparencyColor(p)     (p)->lpVtbl->GetDecalTransparencyColor(p)
3338 /*** IDirect3DRMTexture2 methods ***/
3339 #define IDirect3DRMTexture2_InitFromImage(p,a)               (p)->lpVtbl->InitFromImage(p,a)
3340 #define IDirect3DRMTexture2_InitFromResource2(p,a,b,c)       (p)->lpVtbl->InitFromResource2(p,a,b,c)
3341 #define IDirect3DRMTexture2_GenerateMIPMap(p,a)              (p)->lpVtbl->GenerateMIPMap(p,a)
3342 #else
3343 /*** IUnknown methods ***/
3344 #define IDirect3DRMTexture2_QueryInterface(p,a,b)            (p)->QueryInterface(a,b)
3345 #define IDirect3DRMTexture2_AddRef(p)                        (p)->AddRef()
3346 #define IDirect3DRMTexture2_Release(p)                       (p)->Release()
3347 /*** IDirect3DRMObject methods ***/
3348 #define IDirect3DRMTexture2_Clone(p,a,b,c)                   (p)->Clone(a,b,c)
3349 #define IDirect3DRMTexture2_AddDestroyCallback(p,a,b)        (p)->AddDestroyCallback(a,b)
3350 #define IDirect3DRMTexture2_DeleteDestroyCallback(p,a,b)     (p)->DeleteDestroyCallback(a,b)
3351 #define IDirect3DRMTexture2_SetAppData(p,a)                  (p)->SetAppData(a)
3352 #define IDirect3DRMTexture2_GetAppData(p)                    (p)->GetAppData()
3353 #define IDirect3DRMTexture2_SetName(p,a)                     (p)->SetName(a)
3354 #define IDirect3DRMTexture2_GetName(p,a,b)                   (p)->GetName(a,b)
3355 #define IDirect3DRMTexture2_GetClassName(p,a,b)              (p)->GetClassName(a,b)
3356 /*** IDirect3DRMTexture methods ***/
3357 #define IDirect3DRMTexture2_InitFromFile(p,a)                (p)->InitFromFile(a)
3358 #define IDirect3DRMTexture2_InitFromSurface(p,a)             (p)->InitFromSurface(a)
3359 #define IDirect3DRMTexture2_InitFromResource(p,a)            (p)->InitFromResource(a)
3360 #define IDirect3DRMTexture2_Changed(p,a,b)                   (p)->Changed(a,b)
3361 #define IDirect3DRMTexture2_SetColors(p,a)                   (p)->SetColors(a)
3362 #define IDirect3DRMTexture2_SetShades(p,a)                   (p)->SetShades(a)
3363 #define IDirect3DRMTexture2_SetDecalSize(p,a,b)              (p)->SetDecalSize(a,b)
3364 #define IDirect3DRMTexture2_SetDecalOrigin(p,a,b)            (p)->SetDecalOrigin(a,b)
3365 #define IDirect3DRMTexture2_SetDecalScale(p,a)               (p)->SetDecalScale(a)
3366 #define IDirect3DRMTexture2_SetDecalTransparency(p,a)        (p)->SetDecalTransparency(a)
3367 #define IDirect3DRMTexture2_SetDecalTransparencyColor(p,a)   (p)->SetDecalTransparentColor(a)
3368 #define IDirect3DRMTexture2_GetDecalSize(p,a,b)              (p)->GetDecalSize(a,b)
3369 #define IDirect3DRMTexture2_GetDecalOrigin(p,a,b)            (p)->GetDecalOrigin(a,b)
3370 #define IDirect3DRMTexture2_GetImage(p)                      (p)->GetImage()
3371 #define IDirect3DRMTexture2_GetShades(p)                     (p)->GetShades()
3372 #define IDirect3DRMTexture2_GetColors(p)                     (p)->GetColors()
3373 #define IDirect3DRMTexture2_GetDecalScale(p)                 (p)->GetDecalScale()
3374 #define IDirect3DRMTexture2_GetDecalTransparency(p)          (p)->GetDecalTransparency()
3375 #define IDirect3DRMTexture2_GetDecalTransparencyColor(p)     (p)->GetDecalTransparencyColor()
3376 /*** IDirect3DRMTexture2 methods ***/
3377 #define IDirect3DRMTexture2_InitFromImage(p,a)               (p)->InitFromImage(a)
3378 #define IDirect3DRMTexture2_InitFromResource2(p,a,b,c)       (p)->InitFromResource2(a,b,c)
3379 #define IDirect3DRMTexture2_GenerateMIPMap(p,a)              (p)->GenerateMIPMap(a)
3380 #endif
3381
3382 /*****************************************************************************
3383  * IDirect3DRMTexture3 interface
3384  */
3385 #define INTERFACE IDirect3DRMTexture3
3386 DECLARE_INTERFACE_(IDirect3DRMTexture3, IDirect3DRMVisual)
3387 {
3388     /*** IUnknown methods ***/
3389     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
3390     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
3391     STDMETHOD_(ULONG,Release)(THIS) PURE;
3392     /*** IDirect3DRMObject methods ***/
3393     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
3394     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
3395     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
3396     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
3397     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
3398     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
3399     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
3400     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
3401     /*** IDirect3DRMTexture3 methods ***/
3402     STDMETHOD(InitFromFile)(THIS_ const char *filename) PURE;
3403     STDMETHOD(InitFromSurface)(THIS_ LPDIRECTDRAWSURFACE lpDDS) PURE;
3404     STDMETHOD(InitFromResource)(THIS_ HRSRC) PURE;
3405     STDMETHOD(Changed)(THIS_ DWORD dwFlags, DWORD dwcRects, LPRECT pRects) PURE;
3406     STDMETHOD(SetColors)(THIS_ DWORD) PURE;
3407     STDMETHOD(SetShades)(THIS_ DWORD) PURE;
3408     STDMETHOD(SetDecalSize)(THIS_ D3DVALUE width, D3DVALUE height) PURE;
3409     STDMETHOD(SetDecalOrigin)(THIS_ LONG x, LONG y) PURE;
3410     STDMETHOD(SetDecalScale)(THIS_ DWORD) PURE;
3411     STDMETHOD(SetDecalTransparency)(THIS_ BOOL) PURE;
3412     STDMETHOD(SetDecalTransparentColor)(THIS_ D3DCOLOR) PURE;
3413     STDMETHOD(GetDecalSize)(THIS_ D3DVALUE *width_return, D3DVALUE *height_return) PURE;
3414     STDMETHOD(GetDecalOrigin)(THIS_ LONG *x_return, LONG *y_return) PURE;
3415     STDMETHOD_(D3DRMIMAGE *, GetImage)(THIS) PURE;
3416     STDMETHOD_(DWORD, GetShades)(THIS) PURE;
3417     STDMETHOD_(DWORD, GetColors)(THIS) PURE;
3418     STDMETHOD_(DWORD, GetDecalScale)(THIS) PURE;
3419     STDMETHOD_(BOOL, GetDecalTransparency)(THIS) PURE;
3420     STDMETHOD_(D3DCOLOR, GetDecalTransparentColor)(THIS) PURE;
3421     STDMETHOD(InitFromImage)(THIS_ LPD3DRMIMAGE) PURE;
3422     STDMETHOD(InitFromResource2)(THIS_ HMODULE hModule, LPCSTR /* LPCTSTR */ strName, LPCSTR /* LPCTSTR */ strType) PURE;
3423     STDMETHOD(GenerateMIPMap)(THIS_ DWORD) PURE;
3424     STDMETHOD(GetSurface)(THIS_ DWORD dwFlags, LPDIRECTDRAWSURFACE* lplpDDS) PURE;
3425     STDMETHOD(SetCacheOptions)(THIS_ LONG lImportance, DWORD dwFlags) PURE;
3426     STDMETHOD(GetCacheOptions)(THIS_ LPLONG lplImportance, LPDWORD lpdwFlags) PURE;
3427     STDMETHOD(SetDownsampleCallback)(THIS_ D3DRMDOWNSAMPLECALLBACK pCallback, LPVOID pArg) PURE;
3428     STDMETHOD(SetValidationCallback)(THIS_ D3DRMVALIDATIONCALLBACK pCallback, LPVOID pArg) PURE;
3429 };
3430 #undef INTERFACE
3431
3432 #if !defined(__cplusplus) || defined(CINTERFACE)
3433 /*** IUnknown methods ***/
3434 #define IDirect3DRMTexture3_QueryInterface(p,a,b)            (p)->lpVtbl->QueryInterface(p,a,b)
3435 #define IDirect3DRMTexture3_AddRef(p)                        (p)->lpVtbl->AddRef(p)
3436 #define IDirect3DRMTexture3_Release(p)                       (p)->lpVtbl->Release(p)
3437 /*** IDirect3DRMObject methods ***/
3438 #define IDirect3DRMTexture3_Clone(p,a,b,c)                   (p)->lpVtbl->Clone(p,a,b,c)
3439 #define IDirect3DRMTexture3_AddDestroyCallback(p,a,b)        (p)->lpVtbl->AddDestroyCallback(p,a,b)
3440 #define IDirect3DRMTexture3_DeleteDestroyCallback(p,a,b)     (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
3441 #define IDirect3DRMTexture3_SetAppData(p,a)                  (p)->lpVtbl->SetAppData(p,a)
3442 #define IDirect3DRMTexture3_GetAppData(p)                    (p)->lpVtbl->GetAppData(p)
3443 #define IDirect3DRMTexture3_SetName(p,a)                     (p)->lpVtbl->SetName(p,a)
3444 #define IDirect3DRMTexture3_GetName(p,a,b)                   (p)->lpVtbl->GetName(p,a,b)
3445 #define IDirect3DRMTexture3_GetClassName(p,a,b)              (p)->lpVtbl->GetClassName(p,a,b)
3446 /*** IDirect3DRMTexture3 methods ***/
3447 #define IDirect3DRMTexture3_InitFromFile(p,a)                (p)->lpVtbl->InitFromFile(p,a)
3448 #define IDirect3DRMTexture3_InitFromSurface(p,a)             (p)->lpVtbl->InitFromSurface(p,a)
3449 #define IDirect3DRMTexture3_InitFromResource(p,a)            (p)->lpVtbl->InitFromResource(p,a)
3450 #define IDirect3DRMTexture3_Changed(p,a,b,c)                 (p)->lpVtbl->Changed(p,a,b,c)
3451 #define IDirect3DRMTexture3_SetColors(p,a)                   (p)->lpVtbl->SetColors(p,a)
3452 #define IDirect3DRMTexture3_SetShades(p,a)                   (p)->lpVtbl->SetShades(p,a)
3453 #define IDirect3DRMTexture3_SetDecalSize(p,a,b)              (p)->lpVtbl->SetDecalSize(p,a,b)
3454 #define IDirect3DRMTexture3_SetDecalOrigin(p,a,b)            (p)->lpVtbl->SetDecalOrigin(p,a,b)
3455 #define IDirect3DRMTexture3_SetDecalScale(p,a)               (p)->lpVtbl->SetDecalScale(p,a)
3456 #define IDirect3DRMTexture3_SetDecalTransparency(p,a)        (p)->lpVtbl->SetDecalTransparency(p,a)
3457 #define IDirect3DRMTexture3_SetDecalTransparencyColor(p,a)   (p)->lpVtbl->SetDecalTransparentColor(p,a)
3458 #define IDirect3DRMTexture3_GetDecalSize(p,a,b)              (p)->lpVtbl->GetDecalSize(p,a,b)
3459 #define IDirect3DRMTexture3_GetDecalOrigin(p,a,b)            (p)->lpVtbl->GetDecalOrigin(p,a,b)
3460 #define IDirect3DRMTexture3_GetImage(p)                      (p)->lpVtbl->GetImage(p)
3461 #define IDirect3DRMTexture3_GetShades(p)                     (p)->lpVtbl->GetShades(p)
3462 #define IDirect3DRMTexture3_GetColors(p)                     (p)->lpVtbl->GetColors(p)
3463 #define IDirect3DRMTexture3_GetDecalScale(p)                 (p)->lpVtbl->GetDecalScale(p)
3464 #define IDirect3DRMTexture3_GetDecalTransparency(p)          (p)->lpVtbl->GetDecalTransparency(p)
3465 #define IDirect3DRMTexture3_GetDecalTransparencyColor(p)     (p)->lpVtbl->GetDecalTransparencyColor(p)
3466 #define IDirect3DRMTexture3_InitFromImage(p,a)               (p)->lpVtbl->InitFromImage(p,a)
3467 #define IDirect3DRMTexture3_InitFromResource2(p,a,b,c)       (p)->lpVtbl->InitFromResource2(p,a,b,c)
3468 #define IDirect3DRMTexture3_GenerateMIPMap(p,a)              (p)->lpVtbl->GenerateMIPMap(p,a)
3469 #define IDirect3DRMTexture3_GetSurface(p,a,b)                (p)->lpVtbl->GetSurface(p,a,b)
3470 #define IDirect3DRMTexture3_SetCacheOptions(p,a,b)           (p)->lpVtbl->SetCacheOptions(p,a,b)
3471 #define IDirect3DRMTexture3_GetCacheOptions(p,a,b)           (p)->lpVtbl->GetCacheOptions(p,a,b)
3472 #define IDirect3DRMTexture3_SetDownsampleCallback(p,a,b)     (p)->lpVtbl->SetDownsampleCallback(p,a,b)
3473 #define IDirect3DRMTexture3_SetValidationCallback(p,a,b)     (p)->lpVtbl->SetValidationCallback(p,a,b)
3474 #else
3475 /*** IUnknown methods ***/
3476 #define IDirect3DRMTexture3_QueryInterface(p,a,b)            (p)->QueryInterface(a,b)
3477 #define IDirect3DRMTexture3_AddRef(p)                        (p)->AddRef()
3478 #define IDirect3DRMTexture3_Release(p)                       (p)->Release()
3479 /*** IDirect3DRMObject methods ***/
3480 #define IDirect3DRMTexture3_Clone(p,a,b,c)                   (p)->Clone(a,b,c)
3481 #define IDirect3DRMTexture3_AddDestroyCallback(p,a,b)        (p)->AddDestroyCallback(a,b)
3482 #define IDirect3DRMTexture3_DeleteDestroyCallback(p,a,b)     (p)->DeleteDestroyCallback(a,b)
3483 #define IDirect3DRMTexture3_SetAppData(p,a)                  (p)->SetAppData(a)
3484 #define IDirect3DRMTexture3_GetAppData(p)                    (p)->GetAppData()
3485 #define IDirect3DRMTexture3_SetName(p,a)                     (p)->SetName(a)
3486 #define IDirect3DRMTexture3_GetName(p,a,b)                   (p)->GetName(a,b)
3487 #define IDirect3DRMTexture3_GetClassName(p,a,b)              (p)->GetClassName(a,b)
3488 /*** IDirect3DRMTexture3 methods ***/
3489 #define IDirect3DRMTexture3_InitFromFile(p,a)                (p)->InitFromFile(a)
3490 #define IDirect3DRMTexture3_InitFromSurface(p,a)             (p)->InitFromSurface(a)
3491 #define IDirect3DRMTexture3_InitFromResource(p,a)            (p)->InitFromResource(a)
3492 #define IDirect3DRMTexture3_Changed(p,a,b,c)                 (p)->Changed(a,b,c)
3493 #define IDirect3DRMTexture3_SetColors(p,a)                   (p)->SetColors(a)
3494 #define IDirect3DRMTexture3_SetShades(p,a)                   (p)->SetShades(a)
3495 #define IDirect3DRMTexture3_SetDecalSize(p,a,b)              (p)->SetDecalSize(a,b)
3496 #define IDirect3DRMTexture3_SetDecalOrigin(p,a,b)            (p)->SetDecalOrigin(a,b)
3497 #define IDirect3DRMTexture3_SetDecalScale(p,a)               (p)->SetDecalScale(a)
3498 #define IDirect3DRMTexture3_SetDecalTransparency(p,a)        (p)->SetDecalTransparency(a)
3499 #define IDirect3DRMTexture3_SetDecalTransparencyColor(p,a)   (p)->SetDecalTransparentColor(a)
3500 #define IDirect3DRMTexture3_GetDecalSize(p,a,b)              (p)->GetDecalSize(a,b)
3501 #define IDirect3DRMTexture3_GetDecalOrigin(p,a,b)            (p)->GetDecalOrigin(a,b)
3502 #define IDirect3DRMTexture3_GetImage(p)                      (p)->GetImage()
3503 #define IDirect3DRMTexture3_GetShades(p)                     (p)->GetShades()
3504 #define IDirect3DRMTexture3_GetColors(p)                     (p)->GetColors()
3505 #define IDirect3DRMTexture3_GetDecalScale(p)                 (p)->GetDecalScale()
3506 #define IDirect3DRMTexture3_GetDecalTransparency(p)          (p)->GetDecalTransparency()
3507 #define IDirect3DRMTexture3_GetDecalTransparencyColor(p)     (p)->GetDecalTransparencyColor()
3508 #define IDirect3DRMTexture3_InitFromImage(p,a)               (p)->InitFromImage(a)
3509 #define IDirect3DRMTexture3_InitFromResource2(p,a,b,c)       (p)->InitFromResource2(a,b,c)
3510 #define IDirect3DRMTexture3_GenerateMIPMap(p,a)              (p)->GenerateMIPMap(a)
3511 #define IDirect3DRMTexture3_GetSurface(p,a,b)                (p)->GetSurface(a,b)
3512 #define IDirect3DRMTexture3_SetCacheOptions(p,a,b)           (p)->SetCacheOptions(a,b)
3513 #define IDirect3DRMTexture3_GetCacheOptions(p,a,b)           (p)->GetCacheOptions(a,b)
3514 #define IDirect3DRMTexture3_SetDownsampleCallback(p,a,b)     (p)->SetDownsampleCallback(a,b)
3515 #define IDirect3DRMTexture3_SetValidationCallback(p,a,b)     (p)->SetValidationCallback(a,b)
3516 #endif
3517
3518 /*****************************************************************************
3519  * IDirect3DRMWrap interface
3520  */
3521 #define INTERFACE IDirect3DRMWrap
3522 DECLARE_INTERFACE_(IDirect3DRMWrap, IDirect3DRMObject)
3523 {
3524     /*** IUnknown methods ***/
3525     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
3526     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
3527     STDMETHOD_(ULONG,Release)(THIS) PURE;
3528     /*** IDirect3DRMObject methods ***/
3529     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
3530     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
3531     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
3532     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
3533     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
3534     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
3535     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
3536     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
3537     /*** IDirect3DRMWrap methods ***/
3538     STDMETHOD(Init)
3539     (   THIS_ D3DRMWRAPTYPE, LPDIRECT3DRMFRAME ref,
3540         D3DVALUE ox, D3DVALUE oy, D3DVALUE oz,
3541         D3DVALUE dx, D3DVALUE dy, D3DVALUE dz,
3542         D3DVALUE ux, D3DVALUE uy, D3DVALUE uz,
3543         D3DVALUE ou, D3DVALUE ov,
3544         D3DVALUE su, D3DVALUE sv
3545     ) PURE;
3546     STDMETHOD(Apply)(THIS_ LPDIRECT3DRMOBJECT) PURE;
3547     STDMETHOD(ApplyRelative)(THIS_ LPDIRECT3DRMFRAME frame, LPDIRECT3DRMOBJECT) PURE;
3548 };
3549 #undef INTERFACE
3550
3551 #if !defined(__cplusplus) || defined(CINTERFACE)
3552 /*** IUnknown methods ***/
3553 #define IDirect3DRMWrap_QueryInterface(p,a,b)                   (p)->lpVtbl->QueryInterface(p,a,b)
3554 #define IDirect3DRMWrap_AddRef(p)                               (p)->lpVtbl->AddRef(p)
3555 #define IDirect3DRMWrap_Release(p)                              (p)->lpVtbl->Release(p)
3556 /*** IDirect3DRMObject methods ***/
3557 #define IDirect3DRMWrap_Clone(p,a,b,c)                          (p)->lpVtbl->Clone(p,a,b,c)
3558 #define IDirect3DRMWrap_AddDestroyCallback(p,a,b)               (p)->lpVtbl->AddDestroyCallback(p,a,b)
3559 #define IDirect3DRMWrap_DeleteDestroyCallback(p,a,b)            (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
3560 #define IDirect3DRMWrap_SetAppData(p,a)                         (p)->lpVtbl->SetAppData(p,a)
3561 #define IDirect3DRMWrap_GetAppData(p)                           (p)->lpVtbl->GetAppData(p)
3562 #define IDirect3DRMWrap_SetName(p,a)                            (p)->lpVtbl->SetName(p,a)
3563 #define IDirect3DRMWrap_GetName(p,a,b)                          (p)->lpVtbl->GetName(p,a,b)
3564 #define IDirect3DRMWrap_GetClassName(p,a,b)                     (p)->lpVtbl->GetClassName(p,a,b)
3565 /*** IDirect3DRMWrap methods ***/
3566 #define IDirect3DRMWrap_Init(p,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o)   (p)->lpVtbl->Init(p,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o)
3567 #define IDirect3DRMWrap_Apply(p,a)                              (p)->lpVtbl->Apply(p,a)
3568 #define IDirect3DRMWrap_ApplyRelative(p,a,b)                    (p)->lpVtbl->ApplyRelative(p,a,b)
3569 #else
3570 /*** IUnknown methods ***/
3571 #define IDirect3DRMWrap_QueryInterface(p,a,b)                   (p)->QueryInterface(a,b)
3572 #define IDirect3DRMWrap_AddRef(p)                               (p)->AddRef()
3573 #define IDirect3DRMWrap_Release(p)                              (p)->Release()
3574 /*** IDirect3DRMObject methods ***/
3575 #define IDirect3DRMWrap_Clone(p,a,b,c)                          (p)->Clone(a,b,c)
3576 #define IDirect3DRMWrap_AddDestroyCallback(p,a,b)               (p)->AddDestroyCallback(a,b)
3577 #define IDirect3DRMWrap_DeleteDestroyCallback(p,a,b)            (p)->DeleteDestroyCallback(a,b)
3578 #define IDirect3DRMWrap_SetAppData(p,a)                         (p)->SetAppData(a)
3579 #define IDirect3DRMWrap_GetAppData(p)                           (p)->GetAppData()
3580 #define IDirect3DRMWrap_SetName(p,a)                            (p)->SetName(a)
3581 #define IDirect3DRMWrap_GetName(p,a,b)                          (p)->GetName(a,b)
3582 #define IDirect3DRMWrap_GetClassName(p,a,b)                     (p)->GetClassName(a,b)
3583 /*** IDirect3DRMWrap methods ***/
3584 #define IDirect3DRMWrap_Init(p,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o)   (p)->Init(p,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o)
3585 #define IDirect3DRMWrap_Apply(p,a)                              (p)->Apply(p,a)
3586 #define IDirect3DRMWrap_ApplyRelative(p,a,b)                    (p)->ApplyRelative(p,a,b)
3587 #endif
3588
3589 /*****************************************************************************
3590  * IDirect3DRMMaterial interface
3591  */
3592 #define INTERFACE IDirect3DRMMaterial
3593 DECLARE_INTERFACE_(IDirect3DRMMaterial, IDirect3DRMObject)
3594 {
3595     /*** IUnknown methods ***/
3596     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
3597     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
3598     STDMETHOD_(ULONG,Release)(THIS) PURE;
3599     /*** IDirect3DRMObject methods ***/
3600     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
3601     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
3602     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
3603     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
3604     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
3605     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
3606     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
3607     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
3608     /*** IDirect3DRMMaterial methods ***/
3609     STDMETHOD(SetPower)(THIS_ D3DVALUE power) PURE;
3610     STDMETHOD(SetSpecular)(THIS_ D3DVALUE r, D3DVALUE g, D3DVALUE b) PURE;
3611     STDMETHOD(SetEmissive)(THIS_ D3DVALUE r, D3DVALUE g, D3DVALUE b) PURE;
3612     STDMETHOD_(D3DVALUE, GetPower)(THIS) PURE;
3613     STDMETHOD(GetSpecular)(THIS_ D3DVALUE* r, D3DVALUE* g, D3DVALUE* b) PURE;
3614     STDMETHOD(GetEmissive)(THIS_ D3DVALUE* r, D3DVALUE* g, D3DVALUE* b) PURE;
3615 };
3616 #undef INTERFACE
3617
3618 #if !defined(__cplusplus) || defined(CINTERFACE)
3619 /*** IUnknown methods ***/
3620 #define IDirect3DRMMaterial_QueryInterface(p,a,b)                   (p)->lpVtbl->QueryInterface(p,a,b)
3621 #define IDirect3DRMMaterial_AddRef(p)                               (p)->lpVtbl->AddRef(p)
3622 #define IDirect3DRMMaterial_Release(p)                              (p)->lpVtbl->Release(p)
3623 /*** IDirect3DRMObject methods ***/
3624 #define IDirect3DRMMaterial_Clone(p,a,b,c)                          (p)->lpVtbl->Clone(p,a,b,c)
3625 #define IDirect3DRMMaterial_AddDestroyCallback(p,a,b)               (p)->lpVtbl->AddDestroyCallback(p,a,b)
3626 #define IDirect3DRMMaterial_DeleteDestroyCallback(p,a,b)            (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
3627 #define IDirect3DRMMaterial_SetAppData(p,a)                         (p)->lpVtbl->SetAppData(p,a)
3628 #define IDirect3DRMMaterial_GetAppData(p)                           (p)->lpVtbl->GetAppData(p)
3629 #define IDirect3DRMMaterial_SetName(p,a)                            (p)->lpVtbl->SetName(p,a)
3630 #define IDirect3DRMMaterial_GetName(p,a,b)                          (p)->lpVtbl->GetName(p,a,b)
3631 #define IDirect3DRMMaterial_GetClassName(p,a,b)                     (p)->lpVtbl->GetClassName(p,a,b)
3632 /*** IDirect3DRMMaterial methods ***/
3633 #define IDirect3DRMMaterial_SetPower(p,a)                           (p)->lpVtbl->SetPower(p,a)
3634 #define IDirect3DRMMaterial_SetSpecular(p,a,b,c)                    (p)->lpVtbl->SetSpecular(p,a,b,c)
3635 #define IDirect3DRMMaterial_SetEmissive(p,a,b,c)                    (p)->lpVtbl->SetEmissive(p,a,b,c)
3636 #define IDirect3DRMMaterial_GetPower(p)                             (p)->lpVtbl->GetPower(p)
3637 #define IDirect3DRMMaterial_GetSpecular(p,a,b,c)                    (p)->lpVtbl->GetSpecular(p,a,b,c)
3638 #define IDirect3DRMMaterial_GetEmissive(p,a,b,c)                    (p)->lpVtbl->GetEmissive(p,a,b,c)
3639 #else
3640 /*** IUnknown methods ***/
3641 #define IDirect3DRMMaterial_QueryInterface(p,a,b)                   (p)->QueryInterface(a,b)
3642 #define IDirect3DRMMaterial_AddRef(p)                               (p)->AddRef()
3643 #define IDirect3DRMMaterial_Release(p)                              (p)->Release()
3644 /*** IDirect3DRMObject methods ***/
3645 #define IDirect3DRMMaterial_Clone(p,a,b,c)                          (p)->Clone(a,b,c)
3646 #define IDirect3DRMMaterial_AddDestroyCallback(p,a,b)               (p)->AddDestroyCallback(a,b)
3647 #define IDirect3DRMMaterial_DeleteDestroyCallback(p,a,b)            (p)->DeleteDestroyCallback(a,b)
3648 #define IDirect3DRMMaterial_SetAppData(p,a)                         (p)->SetAppData(a)
3649 #define IDirect3DRMMaterial_GetAppData(p)                           (p)->GetAppData()
3650 #define IDirect3DRMMaterial_SetName(p,a)                            (p)->SetName(a)
3651 #define IDirect3DRMMaterial_GetName(p,a,b)                          (p)->GetName(a,b)
3652 #define IDirect3DRMMaterial_GetClassName(p,a,b)                     (p)->GetClassName(a,b)
3653 /*** IDirect3DRMMaterial methods ***/
3654 #define IDirect3DRMMaterial_SetPower(p,a)                           (p)->SetPower(a)
3655 #define IDirect3DRMMaterial_SetSpecular(p,a,b,c)                    (p)->SetSpecular(a,b,c)
3656 #define IDirect3DRMMaterial_SetEmissive(p,a,b,c)                    (p)->SetEmissive(a,b,c)
3657 #define IDirect3DRMMaterial_GetPower(p)                             (p)->GetPower()
3658 #define IDirect3DRMMaterial_GetSpecular(p,a,b,c)                    (p)->GetSpecular(a,b,c)
3659 #define IDirect3DRMMaterial_GetEmissive(p,a,b,c)                    (p)->GetEmissive(a,b,c)
3660 #endif
3661
3662 /*****************************************************************************
3663  * IDirect3DRMMaterial2 interface
3664  */
3665 #define INTERFACE IDirect3DRMMaterial2
3666 DECLARE_INTERFACE_(IDirect3DRMMaterial2, IDirect3DRMObject)
3667 {
3668     /*** IUnknown methods ***/
3669     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
3670     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
3671     STDMETHOD_(ULONG,Release)(THIS) PURE;
3672     /*** IDirect3DRMObject methods ***/
3673     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
3674     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
3675     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
3676     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
3677     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
3678     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
3679     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
3680     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
3681     /*** IDirect3DRMMaterial2 methods ***/
3682     STDMETHOD(SetPower)(THIS_ D3DVALUE power) PURE;
3683     STDMETHOD(SetSpecular)(THIS_ D3DVALUE r, D3DVALUE g, D3DVALUE b) PURE;
3684     STDMETHOD(SetEmissive)(THIS_ D3DVALUE r, D3DVALUE g, D3DVALUE b) PURE;
3685     STDMETHOD_(D3DVALUE, GetPower)(THIS) PURE;
3686     STDMETHOD(GetSpecular)(THIS_ D3DVALUE* r, D3DVALUE* g, D3DVALUE* b) PURE;
3687     STDMETHOD(GetEmissive)(THIS_ D3DVALUE* r, D3DVALUE* g, D3DVALUE* b) PURE;
3688     STDMETHOD(GetAmbient)(THIS_ D3DVALUE* r, D3DVALUE* g, D3DVALUE* b) PURE;
3689     STDMETHOD(SetAmbient)(THIS_ D3DVALUE r, D3DVALUE g, D3DVALUE b) PURE;
3690 };
3691 #undef INTERFACE
3692
3693 #if !defined(__cplusplus) || defined(CINTERFACE)
3694 /*** IUnknown methods ***/
3695 #define IDirect3DRMMaterial2_QueryInterface(p,a,b)                   (p)->lpVtbl->QueryInterface(p,a,b)
3696 #define IDirect3DRMMaterial2_AddRef(p)                               (p)->lpVtbl->AddRef(p)
3697 #define IDirect3DRMMaterial2_Release(p)                              (p)->lpVtbl->Release(p)
3698 /*** IDirect3DRMObject methods ***/
3699 #define IDirect3DRMMaterial2_Clone(p,a,b,c)                          (p)->lpVtbl->Clone(p,a,b,c)
3700 #define IDirect3DRMMaterial2_AddDestroyCallback(p,a,b)               (p)->lpVtbl->AddDestroyCallback(p,a,b)
3701 #define IDirect3DRMMaterial2_DeleteDestroyCallback(p,a,b)            (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
3702 #define IDirect3DRMMaterial2_SetAppData(p,a)                         (p)->lpVtbl->SetAppData(p,a)
3703 #define IDirect3DRMMaterial2_GetAppData(p)                           (p)->lpVtbl->GetAppData(p)
3704 #define IDirect3DRMMaterial2_SetName(p,a)                            (p)->lpVtbl->SetName(p,a)
3705 #define IDirect3DRMMaterial2_GetName(p,a,b)                          (p)->lpVtbl->GetName(p,a,b)
3706 #define IDirect3DRMMaterial2_GetClassName(p,a,b)                     (p)->lpVtbl->GetClassName(p,a,b)
3707 /*** IDirect3DRMMaterial2 methods ***/
3708 #define IDirect3DRMMaterial2_SetPower(p,a)                           (p)->lpVtbl->SetPower(p,a)
3709 #define IDirect3DRMMaterial2_SetSpecular(p,a,b,c)                    (p)->lpVtbl->SetSpecular(p,a,b,c)
3710 #define IDirect3DRMMaterial2_SetEmissive(p,a,b,c)                    (p)->lpVtbl->SetEmissive(p,a,b,c)
3711 #define IDirect3DRMMaterial2_GetPower(p)                             (p)->lpVtbl->GetPower(p)
3712 #define IDirect3DRMMaterial2_GetSpecular(p,a,b,c)                    (p)->lpVtbl->GetSpecular(p,a,b,c)
3713 #define IDirect3DRMMaterial2_GetEmissive(p,a,b,c)                    (p)->lpVtbl->GetEmissive(p,a,b,c)
3714 #define IDirect3DRMMaterial2_SetAmbient(p,a,b,c)                     (p)->lpVtbl->SetAmbient(p,a,b,c)
3715 #define IDirect3DRMMaterial2_GetAmbient(p,a,b,c)                     (p)->lpVtbl->GetAmbient(p,a,b,c)
3716 #else
3717 /*** IUnknown methods ***/
3718 #define IDirect3DRMMaterial2_QueryInterface(p,a,b)                   (p)->QueryInterface(a,b)
3719 #define IDirect3DRMMaterial2_AddRef(p)                               (p)->AddRef()
3720 #define IDirect3DRMMaterial2_Release(p)                              (p)->Release()
3721 /*** IDirect3DRMObject methods ***/
3722 #define IDirect3DRMMaterial2_Clone(p,a,b,c)                          (p)->Clone(a,b,c)
3723 #define IDirect3DRMMaterial2_AddDestroyCallback(p,a,b)               (p)->AddDestroyCallback(a,b)
3724 #define IDirect3DRMMaterial2_DeleteDestroyCallback(p,a,b)            (p)->DeleteDestroyCallback(a,b)
3725 #define IDirect3DRMMaterial2_SetAppData(p,a)                         (p)->SetAppData(a)
3726 #define IDirect3DRMMaterial2_GetAppData(p)                           (p)->GetAppData()
3727 #define IDirect3DRMMaterial2_SetName(p,a)                            (p)->SetName(a)
3728 #define IDirect3DRMMaterial2_GetName(p,a,b)                          (p)->GetName(a,b)
3729 #define IDirect3DRMMaterial2_GetClassName(p,a,b)                     (p)->GetClassName(a,b)
3730 /*** IDirect3DRMMaterial2 methods ***/
3731 #define IDirect3DRMMaterial2_SetPower(p,a)                           (p)->SetPower(a)
3732 #define IDirect3DRMMaterial2_SetSpecular(p,a,b,c)                    (p)->SetSpecular(a,b,c)
3733 #define IDirect3DRMMaterial2_SetEmissive(p,a,b,c)                    (p)->SetEmissive(a,b,c)
3734 #define IDirect3DRMMaterial2_GetPower(p)                             (p)->GetPower()
3735 #define IDirect3DRMMaterial2_GetSpecular(p,a,b,c)                    (p)->GetSpecular(a,b,c)
3736 #define IDirect3DRMMaterial2_GetEmissive(p,a,b,c)                    (p)->GetEmissive(a,b,c)
3737 #define IDirect3DRMMaterial2_SetAmbient(p,a,b,c)                     (p)->SetAmbient(a,b,c)
3738 #define IDirect3DRMMaterial2_GetAmbient(p,a,b,c)                     (p)->GetAmbient(a,b,c)
3739 #endif
3740
3741 /*****************************************************************************
3742  * IDirect3DRMAnimation interface
3743  */
3744 #define INTERFACE IDirect3DRMAnimation
3745 DECLARE_INTERFACE_(IDirect3DRMAnimation, IDirect3DRMObject)
3746 {
3747     /*** IUnknown methods ***/
3748     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
3749     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
3750     STDMETHOD_(ULONG,Release)(THIS) PURE;
3751     /*** IDirect3DRMObject methods ***/
3752     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
3753     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
3754     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
3755     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
3756     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
3757     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
3758     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
3759     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
3760     /*** IDirect3DRMAnimation methods ***/
3761     STDMETHOD(SetOptions)(THIS_ D3DRMANIMATIONOPTIONS flags) PURE;
3762     STDMETHOD(AddRotateKey)(THIS_ D3DVALUE time, D3DRMQUATERNION *q) PURE;
3763     STDMETHOD(AddPositionKey)(THIS_ D3DVALUE time, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
3764     STDMETHOD(AddScaleKey)(THIS_ D3DVALUE time, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
3765     STDMETHOD(DeleteKey)(THIS_ D3DVALUE time) PURE;
3766     STDMETHOD(SetFrame)(THIS_ LPDIRECT3DRMFRAME frame) PURE;
3767     STDMETHOD(SetTime)(THIS_ D3DVALUE time) PURE;
3768     STDMETHOD_(D3DRMANIMATIONOPTIONS, GetOptions)(THIS) PURE;
3769 };
3770 #undef INTERFACE
3771
3772 #if !defined(__cplusplus) || defined(CINTERFACE)
3773 /*** IUnknown methods ***/
3774 #define IDirect3DRMAnimation_QueryInterface(p,a,b)                   (p)->lpVtbl->QueryInterface(p,a,b)
3775 #define IDirect3DRMAnimation_AddRef(p)                               (p)->lpVtbl->AddRef(p)
3776 #define IDirect3DRMAnimation_Release(p)                              (p)->lpVtbl->Release(p)
3777 /*** IDirect3DRMObject methods ***/
3778 #define IDirect3DRMAnimation_Clone(p,a,b,c)                          (p)->lpVtbl->Clone(p,a,b,c)
3779 #define IDirect3DRMAnimation_AddDestroyCallback(p,a,b)               (p)->lpVtbl->AddDestroyCallback(p,a,b)
3780 #define IDirect3DRMAnimation_DeleteDestroyCallback(p,a,b)            (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
3781 #define IDirect3DRMAnimation_SetAppData(p,a)                         (p)->lpVtbl->SetAppData(p,a)
3782 #define IDirect3DRMAnimation_GetAppData(p)                           (p)->lpVtbl->GetAppData(p)
3783 #define IDirect3DRMAnimation_SetName(p,a)                            (p)->lpVtbl->SetName(p,a)
3784 #define IDirect3DRMAnimation_GetName(p,a,b)                          (p)->lpVtbl->GetName(p,a,b)
3785 #define IDirect3DRMAnimation_GetClassName(p,a,b)                     (p)->lpVtbl->GetClassName(p,a,b)
3786 /*** IDirect3DRMAnimation methods ***/
3787 #define IDirect3DRMAnimation_SetOptions(p,a)                         (p)->lpVtbl->SetOptions(p,a)
3788 #define IDirect3DRMAnimation_AddRotateKey(p,a,b)                     (p)->lpVtbl->AddRotateKey(p,a,b)
3789 #define IDirect3DRMAnimation_AddPositionKey(p,a,b,c,d)               (p)->lpVtbl->AddPositionKey(p,a,b,c,d)
3790 #define IDirect3DRMAnimation_AddScaleKey(p,a,b,c,d)                  (p)->lpVtbl->AddScaleKey(p,a,b,c,d)
3791 #define IDirect3DRMAnimation_DeleteKey(p,a)                          (p)->lpVtbl->DeleteKey(p,a)
3792 #define IDirect3DRMAnimation_SetFrame(p,a)                           (p)->lpVtbl->SetFrame(p,a)
3793 #define IDirect3DRMAnimation_SetTime(p,a)                            (p)->lpVtbl->SetTime(p,a)
3794 #define IDirect3DRMAnimation_GetOptions(p)                           (p)->lpVtbl->GetOptions(p)
3795 #else
3796 /*** IUnknown methods ***/
3797 #define IDirect3DRMAnimation_QueryInterface(p,a,b)                   (p)->QueryInterface(a,b)
3798 #define IDirect3DRMAnimation_AddRef(p)                               (p)->AddRef()
3799 #define IDirect3DRMAnimation_Release(p)                              (p)->Release()
3800 /*** IDirect3DRMObject methods ***/
3801 #define IDirect3DRMAnimation_Clone(p,a,b,c)                          (p)->Clone(a,b,c)
3802 #define IDirect3DRMAnimation_AddDestroyCallback(p,a,b)               (p)->AddDestroyCallback(a,b)
3803 #define IDirect3DRMAnimation_DeleteDestroyCallback(p,a,b)            (p)->DeleteDestroyCallback(a,b)
3804 #define IDirect3DRMAnimation_SetAppData(p,a)                         (p)->SetAppData(a)
3805 #define IDirect3DRMAnimation_GetAppData(p)                           (p)->GetAppData()
3806 #define IDirect3DRMAnimation_SetName(p,a)                            (p)->SetName(a)
3807 #define IDirect3DRMAnimation_GetName(p,a,b)                          (p)->GetName(a,b)
3808 #define IDirect3DRMAnimation_GetClassName(p,a,b)                     (p)->GetClassName(a,b)
3809 /*** IDirect3DRMAnimation methods ***/
3810 #define IDirect3DRMAnimation_SetOptions(p,a)                         (p)->SetOptions(a)
3811 #define IDirect3DRMAnimation_AddRotateKey(p,a,b)                     (p)->AddRotateKey(a,b)
3812 #define IDirect3DRMAnimation_AddPositionKey(p,a,b,c,d)               (p)->AddPositionKey(a,b,c,d)
3813 #define IDirect3DRMAnimation_AddScaleKey(p,a,b,c,d)                  (p)->AddScaleKey(a,b,c,d)
3814 #define IDirect3DRMAnimation_DeleteKey(p,a)                          (p)->DeleteKey(a)
3815 #define IDirect3DRMAnimation_SetFrame(p,a)                           (p)->SetFrame(a)
3816 #define IDirect3DRMAnimation_SetTime(p,a)                            (p)->SetTime(a)
3817 #define IDirect3DRMAnimation_GetOptions(p)                           (p)->GetOptions()
3818 #endif
3819
3820 /*****************************************************************************
3821  * IDirect3DRMAnimation2 interface
3822  */
3823 #define INTERFACE IDirect3DRMAnimation2
3824 DECLARE_INTERFACE_(IDirect3DRMAnimation2, IDirect3DRMObject)
3825 {
3826     /*** IUnknown methods ***/
3827     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
3828     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
3829     STDMETHOD_(ULONG,Release)(THIS) PURE;
3830     /*** IDirect3DRMObject methods ***/
3831     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
3832     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
3833     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
3834     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
3835     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
3836     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
3837     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
3838     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
3839     /*** IDirect3DRMAnimation2 methods ***/
3840     STDMETHOD(SetOptions)(THIS_ D3DRMANIMATIONOPTIONS flags) PURE;
3841     STDMETHOD(AddRotateKey)(THIS_ D3DVALUE time, D3DRMQUATERNION *q) PURE;
3842     STDMETHOD(AddPositionKey)(THIS_ D3DVALUE time, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
3843     STDMETHOD(AddScaleKey)(THIS_ D3DVALUE time, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
3844     STDMETHOD(DeleteKey)(THIS_ D3DVALUE time) PURE;
3845     STDMETHOD(SetFrame)(THIS_ LPDIRECT3DRMFRAME3 frame) PURE;
3846     STDMETHOD(SetTime)(THIS_ D3DVALUE time) PURE;
3847     STDMETHOD_(D3DRMANIMATIONOPTIONS, GetOptions)(THIS) PURE;
3848     STDMETHOD(GetFrame)(THIS_ LPDIRECT3DRMFRAME3 *lpD3DFrame) PURE;
3849     STDMETHOD(DeleteKeyByID)(THIS_ DWORD dwID) PURE;
3850     STDMETHOD(AddKey)(THIS_ LPD3DRMANIMATIONKEY lpKey) PURE;
3851     STDMETHOD(ModifyKey)(THIS_ LPD3DRMANIMATIONKEY lpKey) PURE;
3852     STDMETHOD(GetKeys)(THIS_ D3DVALUE dvTimeMin,
3853                        D3DVALUE dvTimeMax, LPDWORD lpdwNumKeys,
3854                        LPD3DRMANIMATIONKEY lpKey);
3855 };
3856 #undef INTERFACE
3857
3858 #if !defined(__cplusplus) || defined(CINTERFACE)
3859 /*** IUnknown methods ***/
3860 #define IDirect3DRMAnimation2_QueryInterface(p,a,b)                   (p)->lpVtbl->QueryInterface(p,a,b)
3861 #define IDirect3DRMAnimation2_AddRef(p)                               (p)->lpVtbl->AddRef(p)
3862 #define IDirect3DRMAnimation2_Release(p)                              (p)->lpVtbl->Release(p)
3863 /*** IDirect3DRMObject methods ***/
3864 #define IDirect3DRMAnimation2_Clone(p,a,b,c)                          (p)->lpVtbl->Clone(p,a,b,c)
3865 #define IDirect3DRMAnimation2_AddDestroyCallback(p,a,b)               (p)->lpVtbl->AddDestroyCallback(p,a,b)
3866 #define IDirect3DRMAnimation2_DeleteDestroyCallback(p,a,b)            (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
3867 #define IDirect3DRMAnimation2_SetAppData(p,a)                         (p)->lpVtbl->SetAppData(p,a)
3868 #define IDirect3DRMAnimation2_GetAppData(p)                           (p)->lpVtbl->GetAppData(p)
3869 #define IDirect3DRMAnimation2_SetName(p,a)                            (p)->lpVtbl->SetName(p,a)
3870 #define IDirect3DRMAnimation2_GetName(p,a,b)                          (p)->lpVtbl->GetName(p,a,b)
3871 #define IDirect3DRMAnimation2_GetClassName(p,a,b)                     (p)->lpVtbl->GetClassName(p,a,b)
3872 /*** IDirect3DRMAnimation2 methods ***/
3873 #define IDirect3DRMAnimation2_SetOptions(p,a)                         (p)->lpVtbl->SetOptions(p,a)
3874 #define IDirect3DRMAnimation2_AddRotateKey(p,a,b)                     (p)->lpVtbl->AddRotateKey(p,a,b)
3875 #define IDirect3DRMAnimation2_AddPositionKey(p,a,b,c,d)               (p)->lpVtbl->AddPositionKey(p,a,b,c,d)
3876 #define IDirect3DRMAnimation2_AddScaleKey(p,a,b,c,d)                  (p)->lpVtbl->AddScaleKey(p,a,b,c,d)
3877 #define IDirect3DRMAnimation2_DeleteKey(p,a)                          (p)->lpVtbl->DeleteKey(p,a)
3878 #define IDirect3DRMAnimation2_SetFrame(p,a)                           (p)->lpVtbl->SetFrame(p,a)
3879 #define IDirect3DRMAnimation2_SetTime(p,a)                            (p)->lpVtbl->SetTime(p,a)
3880 #define IDirect3DRMAnimation2_GetOptions(p)                           (p)->lpVtbl->GetOptions(p)
3881 #define IDirect3DRMAnimation2_GetFrame(p,a)                           (p)->lpVtbl->GetFrame(p,a)
3882 #define IDirect3DRMAnimation2_DeleteKeyByID(p,a)                      (p)->lpVtbl->DeleteKeyByID(p,a)
3883 #define IDirect3DRMAnimation2_AddKey(p,a)                             (p)->lpVtbl->AddKey(p,a)
3884 #define IDirect3DRMAnimation2_ModifyKey(p,a)                          (p)->lpVtbl->ModifyKey(p,a)
3885 #define IDirect3DRMAnimation2_GetKeys(p,a,b,c,d)                      (p)->lpVtbl->GetKeys(p,a,b,c,d)
3886 #else
3887 /*** IUnknown methods ***/
3888 #define IDirect3DRMAnimation2_QueryInterface(p,a,b)                   (p)->QueryInterface(a,b)
3889 #define IDirect3DRMAnimation2_AddRef(p)                               (p)->AddRef()
3890 #define IDirect3DRMAnimation2_Release(p)                              (p)->Release()
3891 /*** IDirect3DRMObject methods ***/
3892 #define IDirect3DRMAnimation2_Clone(p,a,b,c)                          (p)->Clone(a,b,c)
3893 #define IDirect3DRMAnimation2_AddDestroyCallback(p,a,b)               (p)->AddDestroyCallback(a,b)
3894 #define IDirect3DRMAnimation2_DeleteDestroyCallback(p,a,b)            (p)->DeleteDestroyCallback(a,b)
3895 #define IDirect3DRMAnimation2_SetAppData(p,a)                         (p)->SetAppData(a)
3896 #define IDirect3DRMAnimation2_GetAppData(p)                           (p)->GetAppData()
3897 #define IDirect3DRMAnimation2_SetName(p,a)                            (p)->SetName(a)
3898 #define IDirect3DRMAnimation2_GetName(p,a,b)                          (p)->GetName(a,b)
3899 #define IDirect3DRMAnimation2_GetClassName(p,a,b)                     (p)->GetClassName(a,b)
3900 /*** IDirect3DRMAnimation2 methods ***/
3901 #define IDirect3DRMAnimation2_SetOptions(p,a)                         (p)->SetOptions(a)
3902 #define IDirect3DRMAnimation2_AddRotateKey(p,a,b)                     (p)->AddRotateKey(a,b)
3903 #define IDirect3DRMAnimation2_AddPositionKey(p,a,b,c,d)               (p)->AddPositionKey(a,b,c,d)
3904 #define IDirect3DRMAnimation2_AddScaleKey(p,a,b,c,d)                  (p)->AddScaleKey(a,b,c,d)
3905 #define IDirect3DRMAnimation2_DeleteKey(p,a)                          (p)->DeleteKey(a)
3906 #define IDirect3DRMAnimation2_SetFrame(p,a)                           (p)->SetFrame(a)
3907 #define IDirect3DRMAnimation2_SetTime(p,a)                            (p)->SetTime(a)
3908 #define IDirect3DRMAnimation2_GetOptions(p)                           (p)->GetOptions()
3909 #define IDirect3DRMAnimation2_GetFrame(p,a)                           (p)->GetFrame(a)
3910 #define IDirect3DRMAnimation2_DeleteKeyByID(p,a)                      (p)->DeleteKeyByID(a)
3911 #define IDirect3DRMAnimation2_AddKey(p,a)                             (p)->AddKey(a)
3912 #define IDirect3DRMAnimation2_ModifyKey(p,a)                          (p)->ModifyKey(a)
3913 #define IDirect3DRMAnimation2_GetKeys(p,a,b,c,d)                      (p)->GetKeys(a,b,c,d)
3914 #endif
3915
3916 /*****************************************************************************
3917  * IDirect3DRMAnimationSet interface
3918  */
3919 #define INTERFACE IDirect3DRMAnimationSet
3920 DECLARE_INTERFACE_(IDirect3DRMAnimationSet, IDirect3DRMObject)
3921 {
3922     /*** IUnknown methods ***/
3923     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
3924     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
3925     STDMETHOD_(ULONG,Release)(THIS) PURE;
3926     /*** IDirect3DRMObject methods ***/
3927     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
3928     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
3929     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
3930     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
3931     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
3932     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
3933     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
3934     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
3935     /*** IDirect3DRMAnimationSet methods ***/
3936     STDMETHOD(AddAnimation)(THIS_ LPDIRECT3DRMANIMATION aid) PURE;
3937     STDMETHOD(Load)(THIS_ LPVOID filename, LPVOID name, D3DRMLOADOPTIONS loadflags, D3DRMLOADTEXTURECALLBACK, LPVOID lpArg, LPDIRECT3DRMFRAME parent)PURE;
3938     STDMETHOD(DeleteAnimation)(THIS_ LPDIRECT3DRMANIMATION aid) PURE;
3939     STDMETHOD(SetTime)(THIS_ D3DVALUE time) PURE;
3940 };
3941 #undef INTERFACE
3942
3943 #if !defined(__cplusplus) || defined(CINTERFACE)
3944 /*** IUnknown methods ***/
3945 #define IDirect3DRMAnimationSet_QueryInterface(p,a,b)                   (p)->lpVtbl->QueryInterface(p,a,b)
3946 #define IDirect3DRMAnimationSet_AddRef(p)                               (p)->lpVtbl->AddRef(p)
3947 #define IDirect3DRMAnimationSet_Release(p)                              (p)->lpVtbl->Release(p)
3948 /*** IDirect3DRMObject methods ***/
3949 #define IDirect3DRMAnimationSet_Clone(p,a,b,c)                          (p)->lpVtbl->Clone(p,a,b,c)
3950 #define IDirect3DRMAnimationSet_AddDestroyCallback(p,a,b)               (p)->lpVtbl->AddDestroyCallback(p,a,b)
3951 #define IDirect3DRMAnimationSet_DeleteDestroyCallback(p,a,b)            (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
3952 #define IDirect3DRMAnimationSet_SetAppData(p,a)                         (p)->lpVtbl->SetAppData(p,a)
3953 #define IDirect3DRMAnimationSet_GetAppData(p)                           (p)->lpVtbl->GetAppData(p)
3954 #define IDirect3DRMAnimationSet_SetName(p,a)                            (p)->lpVtbl->SetName(p,a)
3955 #define IDirect3DRMAnimationSet_GetName(p,a,b)                          (p)->lpVtbl->GetName(p,a,b)
3956 #define IDirect3DRMAnimationSet_GetClassName(p,a,b)                     (p)->lpVtbl->GetClassName(p,a,b)
3957 /*** IDirect3DRMAnimationSet methods ***/
3958 #define IDirect3DRMAnimationSet_AddAnimation(p,a)                       (p)->lpVtbl->AddAnimation(p,a)
3959 #define IDirect3DRMAnimationSet_Load(p,a,b,c,d,e,f)                     (p)->lpVtbl->Load(p,a,b,c,d,e,f)
3960 #define IDirect3DRMAnimationSet_DeleteAnimation(p,a)                    (p)->lpVtbl->DeleteAnimation(p,a)
3961 #define IDirect3DRMAnimationSet_SetTime(p,a)                            (p)->lpVtbl->SetTime(p,a)
3962 #else
3963 /*** IUnknown methods ***/
3964 #define IDirect3DRMAnimationSet_QueryInterface(p,a,b)                   (p)->QueryInterface(a,b)
3965 #define IDirect3DRMAnimationSet_AddRef(p)                               (p)->AddRef()
3966 #define IDirect3DRMAnimationSet_Release(p)                              (p)->Release()
3967 /*** IDirect3DRMObject methods ***/
3968 #define IDirect3DRMAnimationSet_Clone(p,a,b,c)                          (p)->Clone(a,b,c)
3969 #define IDirect3DRMAnimationSet_AddDestroyCallback(p,a,b)               (p)->AddDestroyCallback(a,b)
3970 #define IDirect3DRMAnimationSet_DeleteDestroyCallback(p,a,b)            (p)->DeleteDestroyCallback(a,b)
3971 #define IDirect3DRMAnimationSet_SetAppData(p,a)                         (p)->SetAppData(a)
3972 #define IDirect3DRMAnimationSet_GetAppData(p)                           (p)->GetAppData()
3973 #define IDirect3DRMAnimationSet_SetName(p,a)                            (p)->SetName(a)
3974 #define IDirect3DRMAnimationSet_GetName(p,a,b)                          (p)->GetName(a,b)
3975 #define IDirect3DRMAnimationSet_GetClassName(p,a,b)                     (p)->GetClassName(a,b)
3976 /*** IDirect3DRMAnimationSet methods ***/
3977 #define IDirect3DRMAnimationSet_AddAnimation(p,a)                       (p)->AddAnimation(a)
3978 #define IDirect3DRMAnimationSet_Load(p,a,b,c,d,e,f)                     (p)->Load(a,b,c,d,e,f)
3979 #define IDirect3DRMAnimationSet_DeleteAnimation(p,a)                    (p)->DeleteAnimation(a)
3980 #define IDirect3DRMAnimationSet_SetTime(p,a)                            (p)->SetTime(a)
3981 #endif
3982
3983 /*****************************************************************************
3984  * IDirect3DRMAnimationSet2 interface
3985  */
3986 #define INTERFACE IDirect3DRMAnimationSet2
3987 DECLARE_INTERFACE_(IDirect3DRMAnimationSet2, IDirect3DRMObject)
3988 {
3989     /*** IUnknown methods ***/
3990     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
3991     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
3992     STDMETHOD_(ULONG,Release)(THIS) PURE;
3993     /*** IDirect3DRMObject methods ***/
3994     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
3995     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
3996     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
3997     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
3998     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
3999     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
4000     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
4001     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
4002     /*** IDirect3DRMAnimationSet2 methods ***/
4003     STDMETHOD(AddAnimation)(THIS_ LPDIRECT3DRMANIMATION2 aid) PURE;
4004     STDMETHOD(Load)(THIS_ LPVOID filename, LPVOID name, D3DRMLOADOPTIONS loadflags, D3DRMLOADTEXTURE3CALLBACK, LPVOID lpArg, LPDIRECT3DRMFRAME3 parent)PURE;
4005     STDMETHOD(DeleteAnimation)(THIS_ LPDIRECT3DRMANIMATION2 aid) PURE;
4006     STDMETHOD(SetTime)(THIS_ D3DVALUE time) PURE;
4007     STDMETHOD(GetAnimations)(THIS_ LPDIRECT3DRMANIMATIONARRAY *) PURE;
4008 };
4009 #undef INTERFACE
4010
4011 #if !defined(__cplusplus) || defined(CINTERFACE)
4012 /*** IUnknown methods ***/
4013 #define IDirect3DRMAnimationSet2_QueryInterface(p,a,b)                   (p)->lpVtbl->QueryInterface(p,a,b)
4014 #define IDirect3DRMAnimationSet2_AddRef(p)                               (p)->lpVtbl->AddRef(p)
4015 #define IDirect3DRMAnimationSet2_Release(p)                              (p)->lpVtbl->Release(p)
4016 /*** IDirect3DRMObject methods ***/
4017 #define IDirect3DRMAnimationSet2_Clone(p,a,b,c)                          (p)->lpVtbl->Clone(p,a,b,c)
4018 #define IDirect3DRMAnimationSet2_AddDestroyCallback(p,a,b)               (p)->lpVtbl->AddDestroyCallback(p,a,b)
4019 #define IDirect3DRMAnimationSet2_DeleteDestroyCallback(p,a,b)            (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
4020 #define IDirect3DRMAnimationSet2_SetAppData(p,a)                         (p)->lpVtbl->SetAppData(p,a)
4021 #define IDirect3DRMAnimationSet2_GetAppData(p)                           (p)->lpVtbl->GetAppData(p)
4022 #define IDirect3DRMAnimationSet2_SetName(p,a)                            (p)->lpVtbl->SetName(p,a)
4023 #define IDirect3DRMAnimationSet2_GetName(p,a,b)                          (p)->lpVtbl->GetName(p,a,b)
4024 #define IDirect3DRMAnimationSet2_GetClassName(p,a,b)                     (p)->lpVtbl->GetClassName(p,a,b)
4025 /*** IDirect3DRMAnimationSet2 methods ***/
4026 #define IDirect3DRMAnimationSet2_AddAnimation(p,a)                       (p)->lpVtbl->AddAnimation(p,a)
4027 #define IDirect3DRMAnimationSet2_Load(p,a,b,c,d,e,f)                     (p)->lpVtbl->Load(p,a,b,c,d,e,f)
4028 #define IDirect3DRMAnimationSet2_DeleteAnimation(p,a)                    (p)->lpVtbl->DeleteAnimation(p,a)
4029 #define IDirect3DRMAnimationSet2_SetTime(p,a)                            (p)->lpVtbl->SetTime(p,a)
4030 #define IDirect3DRMAnimationSet2_GetAnimations(p,a)                      (p)->lpVtbl->GetAnimations(p,a)
4031 #else
4032 /*** IUnknown methods ***/
4033 #define IDirect3DRMAnimationSet2_QueryInterface(p,a,b)                   (p)->QueryInterface(a,b)
4034 #define IDirect3DRMAnimationSet2_AddRef(p)                               (p)->AddRef()
4035 #define IDirect3DRMAnimationSet2_Release(p)                              (p)->Release()
4036 /*** IDirect3DRMObject methods ***/
4037 #define IDirect3DRMAnimationSet2_Clone(p,a,b,c)                          (p)->Clone(a,b,c)
4038 #define IDirect3DRMAnimationSet2_AddDestroyCallback(p,a,b)               (p)->AddDestroyCallback(a,b)
4039 #define IDirect3DRMAnimationSet2_DeleteDestroyCallback(p,a,b)            (p)->DeleteDestroyCallback(a,b)
4040 #define IDirect3DRMAnimationSet2_SetAppData(p,a)                         (p)->SetAppData(a)
4041 #define IDirect3DRMAnimationSet2_GetAppData(p)                           (p)->GetAppData()
4042 #define IDirect3DRMAnimationSet2_SetName(p,a)                            (p)->SetName(a)
4043 #define IDirect3DRMAnimationSet2_GetName(p,a,b)                          (p)->GetName(a,b)
4044 #define IDirect3DRMAnimationSet2_GetClassName(p,a,b)                     (p)->GetClassName(a,b)
4045 /*** IDirect3DRMAnimationSet2 methods ***/
4046 #define IDirect3DRMAnimationSet2_AddAnimation(p,a)                       (p)->AddAnimation(a)
4047 #define IDirect3DRMAnimationSet2_Load(p,a,b,c,d,e,f)                     (p)->Load(a,b,c,d,e,f)
4048 #define IDirect3DRMAnimationSet2_DeleteAnimation(p,a)                    (p)->DeleteAnimation(a)
4049 #define IDirect3DRMAnimationSet2_SetTime(p,a)                            (p)->SetTime(a)
4050 #define IDirect3DRMAnimationSet2_GetAnimations(p,a)                      (p)->GetAnimations(a)
4051 #endif
4052
4053 /*****************************************************************************
4054  * IDirect3DRMUserVisual interface
4055  */
4056 #define INTERFACE IDirect3DRMUserVisual
4057 DECLARE_INTERFACE_(IDirect3DRMUserVisual, IDirect3DRMVisual)
4058 {
4059     /*** IUnknown methods ***/
4060     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
4061     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
4062     STDMETHOD_(ULONG,Release)(THIS) PURE;
4063     /*** IDirect3DRMObject methods ***/
4064     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
4065     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
4066     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
4067     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
4068     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
4069     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
4070     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
4071     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
4072     /*** IDirect3DRMUserVisual methods ***/
4073     STDMETHOD(Init)(THIS_ D3DRMUSERVISUALCALLBACK fn, void *arg) PURE;
4074 };
4075 #undef INTERFACE
4076
4077 #if !defined(__cplusplus) || defined(CINTERFACE)
4078 /*** IUnknown methods ***/
4079 #define IDirect3DRMUserVisual_QueryInterface(p,a,b)                   (p)->lpVtbl->QueryInterface(p,a,b)
4080 #define IDirect3DRMUserVisual_AddRef(p)                               (p)->lpVtbl->AddRef(p)
4081 #define IDirect3DRMUserVisual_Release(p)                              (p)->lpVtbl->Release(p)
4082 /*** IDirect3DRMObject methods ***/
4083 #define IDirect3DRMUserVisual_Clone(p,a,b,c)                          (p)->lpVtbl->Clone(p,a,b,c)
4084 #define IDirect3DRMUserVisual_AddDestroyCallback(p,a,b)               (p)->lpVtbl->AddDestroyCallback(p,a,b)
4085 #define IDirect3DRMUserVisual_DeleteDestroyCallback(p,a,b)            (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
4086 #define IDirect3DRMUserVisual_SetAppData(p,a)                         (p)->lpVtbl->SetAppData(p,a)
4087 #define IDirect3DRMUserVisual_GetAppData(p)                           (p)->lpVtbl->GetAppData(p)
4088 #define IDirect3DRMUserVisual_SetName(p,a)                            (p)->lpVtbl->SetName(p,a)
4089 #define IDirect3DRMUserVisual_GetName(p,a,b)                          (p)->lpVtbl->GetName(p,a,b)
4090 #define IDirect3DRMUserVisual_GetClassName(p,a,b)                     (p)->lpVtbl->GetClassName(p,a,b)
4091 /*** IDirect3DRMUserVisual methods ***/
4092 #define IDirect3DRMUserVisual_Init(p,a,b)                             (p)->lpVtbl->Init(p,a,b)
4093 #else
4094 /*** IUnknown methods ***/
4095 #define IDirect3DRMUserVisual_QueryInterface(p,a,b)                   (p)->QueryInterface(a,b)
4096 #define IDirect3DRMUserVisual_AddRef(p)                               (p)->AddRef()
4097 #define IDirect3DRMUserVisual_Release(p)                              (p)->Release()
4098 /*** IDirect3DRMObject methods ***/
4099 #define IDirect3DRMUserVisual_Clone(p,a,b,c)                          (p)->Clone(a,b,c)
4100 #define IDirect3DRMUserVisual_AddDestroyCallback(p,a,b)               (p)->AddDestroyCallback(a,b)
4101 #define IDirect3DRMUserVisual_DeleteDestroyCallback(p,a,b)            (p)->DeleteDestroyCallback(a,b)
4102 #define IDirect3DRMUserVisual_SetAppData(p,a)                         (p)->SetAppData(a)
4103 #define IDirect3DRMUserVisual_GetAppData(p)                           (p)->GetAppData()
4104 #define IDirect3DRMUserVisual_SetName(p,a)                            (p)->SetName(a)
4105 #define IDirect3DRMUserVisual_GetName(p,a,b)                          (p)->GetName(a,b)
4106 #define IDirect3DRMUserVisual_GetClassName(p,a,b)                     (p)->GetClassName(a,b)
4107 /*** IDirect3DRMUserVisual methods ***/
4108 #define IDirect3DRMUserVisual_Init(p,a,b)                             (p)->Init(a,b)
4109 #endif
4110
4111 /*****************************************************************************
4112  * IDirect3DRMArray interface
4113  */
4114 #define INTERFACE IDirect3DRMArray
4115 DECLARE_INTERFACE_(IDirect3DRMArray, IUnknown)
4116 {
4117     /*** IUnknown methods ***/
4118     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
4119     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
4120     STDMETHOD_(ULONG,Release)(THIS) PURE;
4121     /*** IDirect3DRMArray methods ***/
4122     STDMETHOD_(DWORD, GetSize)(THIS) PURE;
4123 };
4124 #undef INTERFACE
4125
4126 #if !defined(__cplusplus) || defined(CINTERFACE)
4127 /*** IUnknown methods ***/
4128 #define IDirect3DRMArray_QueryInterface(p,a,b)                   (p)->lpVtbl->QueryInterface(p,a,b)
4129 #define IDirect3DRMArray_AddRef(p)                               (p)->lpVtbl->AddRef(p)
4130 #define IDirect3DRMArray_Release(p)                              (p)->lpVtbl->Release(p)
4131 /*** IDirect3DRMArray methods ***/
4132 #define IDirect3DRMArray_GetSize(p)                              (p)->lpVtbl->GetSize(p)
4133 #else
4134 /*** IUnknown methods ***/
4135 #define IDirect3DRMArray_QueryInterface(p,a,b)                   (p)->QueryInterface(a,b)
4136 #define IDirect3DRMArray_AddRef(p)                               (p)->AddRef()
4137 #define IDirect3DRMArray_Release(p)                              (p)->Release()
4138 /*** IDirect3DRMArray methods ***/
4139 #define IDirect3DRMArray_GetSize(p)                              (p)->GetSize()
4140 #endif
4141
4142 /*****************************************************************************
4143  * IDirect3DRMObjectArray interface
4144  */
4145 #define INTERFACE IDirect3DRMObjectArray
4146 DECLARE_INTERFACE_(IDirect3DRMObjectArray, IDirect3DRMArray)
4147 {
4148     /*** IUnknown methods ***/
4149     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
4150     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
4151     STDMETHOD_(ULONG,Release)(THIS) PURE;
4152     /*** IDirect3DRMArray methods ***/
4153     STDMETHOD_(DWORD, GetSize)(THIS) PURE;
4154     /*** IDirect3DRMObjectArray methods ***/
4155     STDMETHOD(GetElement)(THIS_ DWORD index, LPDIRECT3DRMOBJECT *) PURE;
4156 };
4157 #undef INTERFACE
4158
4159 #if !defined(__cplusplus) || defined(CINTERFACE)
4160 /*** IUnknown methods ***/
4161 #define IDirect3DRMObjectArray_QueryInterface(p,a,b)                   (p)->lpVtbl->QueryInterface(p,a,b)
4162 #define IDirect3DRMObjectArray_AddRef(p)                               (p)->lpVtbl->AddRef(p)
4163 #define IDirect3DRMObjectArray_Release(p)                              (p)->lpVtbl->Release(p)
4164 /*** IDirect3DRMArray methods ***/
4165 #define IDirect3DRMObjectArray_GetSize(p)                              (p)->lpVtbl->GetSize(p)
4166 /*** IDirect3DRMObjectArray methods ***/
4167 #define IDirect3DRMObjectArray_GetElement(p,a,b)                       (p)->lpVtbl->GetElement(p,a,b)
4168 #else
4169 /*** IUnknown methods ***/
4170 #define IDirect3DRMObjectArray_QueryInterface(p,a,b)                   (p)->QueryInterface(a,b)
4171 #define IDirect3DRMObjectArray_AddRef(p)                               (p)->AddRef()
4172 #define IDirect3DRMObjectArray_Release(p)                              (p)->Release()
4173 /*** IDirect3DRMArray methods ***/
4174 #define IDirect3DRMObjectArray_GetSize(p)                              (p)->GetSize()
4175 /*** IDirect3DRMObjectArray methods ***/
4176 #define IDirect3DRMObjectArray_GetElement(p,a,b)                       (p)->GetElement(a,b)
4177 #endif
4178
4179 /*****************************************************************************
4180  * IDirect3DRMDeviceArray interface
4181  */
4182 #define INTERFACE IDirect3DRMDeviceArray
4183 DECLARE_INTERFACE_(IDirect3DRMDeviceArray, IDirect3DRMArray)
4184 {
4185     /*** IUnknown methods ***/
4186     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
4187     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
4188     STDMETHOD_(ULONG,Release)(THIS) PURE;
4189     /*** IDirect3DRMArray methods ***/
4190     STDMETHOD_(DWORD, GetSize)(THIS) PURE;
4191     /*** IDirect3DRMDeviceArray methods ***/
4192     STDMETHOD(GetElement)(THIS_ DWORD index, LPDIRECT3DRMDEVICE *) PURE;
4193 };
4194 #undef INTERFACE
4195
4196 #if !defined(__cplusplus) || defined(CINTERFACE)
4197 /*** IUnknown methods ***/
4198 #define IDirect3DRMDeviceArray_QueryInterface(p,a,b)                   (p)->lpVtbl->QueryInterface(p,a,b)
4199 #define IDirect3DRMDeviceArray_AddRef(p)                               (p)->lpVtbl->AddRef(p)
4200 #define IDirect3DRMDeviceArray_Release(p)                              (p)->lpVtbl->Release(p)
4201 /*** IDirect3DRMArray methods ***/
4202 #define IDirect3DRMDeviceArray_GetSize(p)                              (p)->lpVtbl->GetSize(p)
4203 /*** IDirect3DRMDeviceArray methods ***/
4204 #define IDirect3DRMDeviceArray_GetElement(p,a,b)                       (p)->lpVtbl->GetElement(p,a,b)
4205 #else
4206 /*** IUnknown methods ***/
4207 #define IDirect3DRMDeviceArray_QueryInterface(p,a,b)                   (p)->QueryInterface(a,b)
4208 #define IDirect3DRMDeviceArray_AddRef(p)                               (p)->AddRef()
4209 #define IDirect3DRMDeviceArray_Release(p)                              (p)->Release()
4210 /*** IDirect3DRMArray methods ***/
4211 #define IDirect3DRMDeviceArray_GetSize(p)                              (p)->GetSize()
4212 /*** IDirect3DRMDeviceArray methods ***/
4213 #define IDirect3DRMDeviceArray_GetElement(p,a,b)                       (p)->GetElement(a,b)
4214 #endif
4215
4216 /*****************************************************************************
4217  * IDirect3DRMFrameArray interface
4218  */
4219 #define INTERFACE IDirect3DRMFrameArray
4220 DECLARE_INTERFACE_(IDirect3DRMFrameArray, IDirect3DRMArray)
4221 {
4222     /*** IUnknown methods ***/
4223     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
4224     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
4225     STDMETHOD_(ULONG,Release)(THIS) PURE;
4226     /*** IDirect3DRMArray methods ***/
4227     STDMETHOD_(DWORD, GetSize)(THIS) PURE;
4228     /*** IDirect3DRMFrameArray methods ***/
4229     STDMETHOD(GetElement)(THIS_ DWORD index, LPDIRECT3DRMFRAME *) PURE;
4230 };
4231 #undef INTERFACE
4232
4233 #if !defined(__cplusplus) || defined(CINTERFACE)
4234 /*** IUnknown methods ***/
4235 #define IDirect3DRMFrameArray_QueryInterface(p,a,b)                   (p)->lpVtbl->QueryInterface(p,a,b)
4236 #define IDirect3DRMFrameArray_AddRef(p)                               (p)->lpVtbl->AddRef(p)
4237 #define IDirect3DRMFrameArray_Release(p)                              (p)->lpVtbl->Release(p)
4238 /*** IDirect3DRMArray methods ***/
4239 #define IDirect3DRMFrameArray_GetSize(p)                              (p)->lpVtbl->GetSize(p)
4240 /*** IDirect3DRMFrameArray methods ***/
4241 #define IDirect3DRMFrameArray_GetElement(p,a,b)                       (p)->lpVtbl->GetElement(p,a,b)
4242 #else
4243 /*** IUnknown methods ***/
4244 #define IDirect3DRMFrameArray_QueryInterface(p,a,b)                   (p)->QueryInterface(a,b)
4245 #define IDirect3DRMFrameArray_AddRef(p)                               (p)->AddRef()
4246 #define IDirect3DRMFrameArray_Release(p)                              (p)->Release()
4247 /*** IDirect3DRMArray methods ***/
4248 #define IDirect3DRMFrameArray_GetSize(p)                              (p)->GetSize()
4249 /*** IDirect3DRMFrameArray methods ***/
4250 #define IDirect3DRMFrameArray_GetElement(p,a,b)                       (p)->GetElement(a,b)
4251 #endif
4252
4253 /*****************************************************************************
4254  * IDirect3DRMViewportArray interface
4255  */
4256 #define INTERFACE IDirect3DRMViewportArray
4257 DECLARE_INTERFACE_(IDirect3DRMViewportArray, IDirect3DRMArray)
4258 {
4259     /*** IUnknown methods ***/
4260     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
4261     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
4262     STDMETHOD_(ULONG,Release)(THIS) PURE;
4263     /*** IDirect3DRMArray methods ***/
4264     STDMETHOD_(DWORD, GetSize)(THIS) PURE;
4265     /*** IDirect3DRMViewportArray methods ***/
4266     STDMETHOD(GetElement)(THIS_ DWORD index, LPDIRECT3DRMVIEWPORT *) PURE;
4267 };
4268 #undef INTERFACE
4269
4270 #if !defined(__cplusplus) || defined(CINTERFACE)
4271 /*** IUnknown methods ***/
4272 #define IDirect3DRMViewportArray_QueryInterface(p,a,b)                   (p)->lpVtbl->QueryInterface(p,a,b)
4273 #define IDirect3DRMViewportArray_AddRef(p)                               (p)->lpVtbl->AddRef(p)
4274 #define IDirect3DRMViewportArray_Release(p)                              (p)->lpVtbl->Release(p)
4275 /*** IDirect3DRMArray methods ***/
4276 #define IDirect3DRMViewportArray_GetSize(p)                              (p)->lpVtbl->GetSize(p)
4277 /*** IDirect3DRMViewportArray methods ***/
4278 #define IDirect3DRMViewportArray_GetElement(p,a,b)                       (p)->lpVtbl->GetElement(p,a,b)
4279 #else
4280 /*** IUnknown methods ***/
4281 #define IDirect3DRMViewportArray_QueryInterface(p,a,b)                   (p)->QueryInterface(a,b)
4282 #define IDirect3DRMViewportArray_AddRef(p)                               (p)->AddRef()
4283 #define IDirect3DRMViewportArray_Release(p)                              (p)->Release()
4284 /*** IDirect3DRMArray methods ***/
4285 #define IDirect3DRMViewportArray_GetSize(p)                              (p)->GetSize()
4286 /*** IDirect3DRMViewportArray methods ***/
4287 #define IDirect3DRMviewportArray_GetElement(p,a,b)                       (p)->GetElement(a,b)
4288 #endif
4289
4290 /*****************************************************************************
4291  * IDirect3DRMVisualArray interface
4292  */
4293 #define INTERFACE IDirect3DRMVisualArray
4294 DECLARE_INTERFACE_(IDirect3DRMVisualArray, IDirect3DRMArray)
4295 {
4296     /*** IUnknown methods ***/
4297     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
4298     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
4299     STDMETHOD_(ULONG,Release)(THIS) PURE;
4300     /*** IDirect3DRMArray methods ***/
4301     STDMETHOD_(DWORD, GetSize)(THIS) PURE;
4302     /*** IDirect3DRMVisualArray methods ***/
4303     STDMETHOD(GetElement)(THIS_ DWORD index, LPDIRECT3DRMVISUAL *) PURE;
4304 };
4305 #undef INTERFACE
4306
4307 #if !defined(__cplusplus) || defined(CINTERFACE)
4308 /*** IUnknown methods ***/
4309 #define IDirect3DRMVisualArray_QueryInterface(p,a,b)                   (p)->lpVtbl->QueryInterface(p,a,b)
4310 #define IDirect3DRMVisualArray_AddRef(p)                               (p)->lpVtbl->AddRef(p)
4311 #define IDirect3DRMVisualArray_Release(p)                              (p)->lpVtbl->Release(p)
4312 /*** IDirect3DRMArray methods ***/
4313 #define IDirect3DRMVisualArray_GetSize(p)                              (p)->lpVtbl->GetSize(p)
4314 /*** IDirect3DRMVisualArray methods ***/
4315 #define IDirect3DRMVisualArray_GetElement(p,a,b)                       (p)->lpVtbl->GetElement(p,a,b)
4316 #else
4317 /*** IUnknown methods ***/
4318 #define IDirect3DRMVisualArray_QueryInterface(p,a,b)                   (p)->QueryInterface(a,b)
4319 #define IDirect3DRMVisualArray_AddRef(p)                               (p)->AddRef()
4320 #define IDirect3DRMVisualArray_Release(p)                              (p)->Release()
4321 /*** IDirect3DRMArray methods ***/
4322 #define IDirect3DRMVisualArray_GetSize(p)                              (p)->GetSize()
4323 /*** IDirect3DRMVisualArray methods ***/
4324 #define IDirect3DRMVisualArray_GetElement(p,a,b)                       (p)->GetElement(a,b)
4325 #endif
4326
4327 /*****************************************************************************
4328  * IDirect3DRMAnimationArray interface
4329  */
4330 #define INTERFACE IDirect3DRMAnimationArray
4331 DECLARE_INTERFACE_(IDirect3DRMAnimationArray, IDirect3DRMArray)
4332 {
4333     /*** IUnknown methods ***/
4334     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
4335     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
4336     STDMETHOD_(ULONG,Release)(THIS) PURE;
4337     /*** IDirect3DRMArray methods ***/
4338     STDMETHOD_(DWORD, GetSize)(THIS) PURE;
4339     /*** IDirect3DRMAnimationArray methods ***/
4340     STDMETHOD(GetElement)(THIS_ DWORD index, LPDIRECT3DRMANIMATION2 *) PURE;
4341 };
4342 #undef INTERFACE
4343
4344 #if !defined(__cplusplus) || defined(CINTERFACE)
4345 /*** IUnknown methods ***/
4346 #define IDirect3DRMAnimationArray_QueryInterface(p,a,b)                   (p)->lpVtbl->QueryInterface(p,a,b)
4347 #define IDirect3DRMAnimationArray_AddRef(p)                               (p)->lpVtbl->AddRef(p)
4348 #define IDirect3DRMAnimationArray_Release(p)                              (p)->lpVtbl->Release(p)
4349 /*** IDirect3DRMArray methods ***/
4350 #define IDirect3DRMAnimationArray_GetSize(p)                              (p)->lpVtbl->GetSize(p)
4351 /*** IDirect3DRMAnimationArray methods ***/
4352 #define IDirect3DRMAnimationArray_GetElement(p,a,b)                       (p)->lpVtbl->GetElement(p,a,b)
4353 #else
4354 /*** IUnknown methods ***/
4355 #define IDirect3DRMAnimationArray_QueryInterface(p,a,b)                   (p)->QueryInterface(a,b)
4356 #define IDirect3DRMAnimationArray_AddRef(p)                               (p)->AddRef()
4357 #define IDirect3DRMAnimationArray_Release(p)                              (p)->Release()
4358 /*** IDirect3DRMArray methods ***/
4359 #define IDirect3DRMAnimationArray_GetSize(p)                              (p)->GetSize()
4360 /*** IDirect3DRMAnimationArray methods ***/
4361 #define IDirect3DRMAnimationArray_GetElement(p,a,b)                       (p)->GetElement(a,b)
4362 #endif
4363
4364 /*****************************************************************************
4365  * IDirect3DRMPickedArray interface
4366  */
4367 #define INTERFACE IDirect3DRMPickedArray
4368 DECLARE_INTERFACE_(IDirect3DRMPickedArray, IDirect3DRMArray)
4369 {
4370     /*** IUnknown methods ***/
4371     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
4372     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
4373     STDMETHOD_(ULONG,Release)(THIS) PURE;
4374     /*** IDirect3DRMArray methods ***/
4375     STDMETHOD_(DWORD, GetSize)(THIS) PURE;
4376     /*** IDirect3DRMPickedArray methods ***/
4377     STDMETHOD(GetPick)(THIS_ DWORD index, LPDIRECT3DRMVISUAL *, LPDIRECT3DRMFRAMEARRAY *, LPD3DRMPICKDESC) PURE;
4378 };
4379 #undef INTERFACE
4380
4381 #if !defined(__cplusplus) || defined(CINTERFACE)
4382 /*** IUnknown methods ***/
4383 #define IDirect3DRMPickedArray_QueryInterface(p,a,b)                   (p)->lpVtbl->QueryInterface(p,a,b)
4384 #define IDirect3DRMPickedArray_AddRef(p)                               (p)->lpVtbl->AddRef(p)
4385 #define IDirect3DRMPickedArray_Release(p)                              (p)->lpVtbl->Release(p)
4386 /*** IDirect3DRMArray methods ***/
4387 #define IDirect3DRMPickedArray_GetSize(p)                              (p)->lpVtbl->GetSize(p)
4388 /*** IDirect3DRMPickedArray methods ***/
4389 #define IDirect3DRMPickedArray_GetPick(p,a,b,c,d)                      (p)->lpVtbl->GetPick(p,a,b,c,d)
4390 #else
4391 /*** IUnknown methods ***/
4392 #define IDirect3DRMPickedArray_QueryInterface(p,a,b)                   (p)->QueryInterface(a,b)
4393 #define IDirect3DRMPickedArray_AddRef(p)                               (p)->AddRef()
4394 #define IDirect3DRMPickedArray_Release(p)                              (p)->Release()
4395 /*** IDirect3DRMArray methods ***/
4396 #define IDirect3DRMPickedArray_GetSize(p)                              (p)->GetSize()
4397 /*** IDirect3DRMPickedArray methods ***/
4398 #define IDirect3DRMPickedArray_GetPick(p,a,b,c,d)                      (p)->GetPick(a,b,c,d)
4399 #endif
4400
4401 /*****************************************************************************
4402  * IDirect3DRMLightArray interface
4403  */
4404 #define INTERFACE IDirect3DRMLightArray
4405 DECLARE_INTERFACE_(IDirect3DRMLightArray, IDirect3DRMArray)
4406 {
4407     /*** IUnknown methods ***/
4408     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
4409     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
4410     STDMETHOD_(ULONG,Release)(THIS) PURE;
4411     /*** IDirect3DRMArray methods ***/
4412     STDMETHOD_(DWORD, GetSize)(THIS) PURE;
4413     /*** IDirect3DRMLightArray methods ***/
4414     STDMETHOD(GetElement)(THIS_ DWORD index, LPDIRECT3DRMLIGHT *) PURE;
4415 };
4416 #undef INTERFACE
4417
4418 #if !defined(__cplusplus) || defined(CINTERFACE)
4419 /*** IUnknown methods ***/
4420 #define IDirect3DRMLightArray_QueryInterface(p,a,b)                   (p)->lpVtbl->QueryInterface(p,a,b)
4421 #define IDirect3DRMLightArray_AddRef(p)                               (p)->lpVtbl->AddRef(p)
4422 #define IDirect3DRMLightArray_Release(p)                              (p)->lpVtbl->Release(p)
4423 /*** IDirect3DRMArray methods ***/
4424 #define IDirect3DRMLightArray_GetSize(p)                              (p)->lpVtbl->GetSize(p)
4425 /*** IDirect3DRMLightArray methods ***/
4426 #define IDirect3DRMLightArray_GetElement(p,a,b)                       (p)->lpVtbl->GetElement(p,a,b)
4427 #else
4428 /*** IUnknown methods ***/
4429 #define IDirect3DRMLightArray_QueryInterface(p,a,b)                   (p)->QueryInterface(a,b)
4430 #define IDirect3DRMLightArray_AddRef(p)                               (p)->AddRef()
4431 #define IDirect3DRMLightArray_Release(p)                              (p)->Release()
4432 /*** IDirect3DRMArray methods ***/
4433 #define IDirect3DRMLightArray_GetSize(p)                              (p)->GetSize()
4434 /*** IDirect3DRMLightArray methods ***/
4435 #define IDirect3DRMLightArray_GetElement(p,a,b)                       (p)->GetElement(a,b)
4436 #endif
4437
4438 /*****************************************************************************
4439  * IDirect3DRMFaceArray interface
4440  */
4441 #define INTERFACE IDirect3DRMFaceArray
4442 DECLARE_INTERFACE_(IDirect3DRMFaceArray, IDirect3DRMArray)
4443 {
4444     /*** IUnknown methods ***/
4445     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
4446     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
4447     STDMETHOD_(ULONG,Release)(THIS) PURE;
4448     /*** IDirect3DRMArray methods ***/
4449     STDMETHOD_(DWORD, GetSize)(THIS) PURE;
4450     /*** IDirect3DRMFaceArray methods ***/
4451     STDMETHOD(GetElement)(THIS_ DWORD index, LPDIRECT3DRMFACE *) PURE;
4452 };
4453 #undef INTERFACE
4454
4455 #if !defined(__cplusplus) || defined(CINTERFACE)
4456 /*** IUnknown methods ***/
4457 #define IDirect3DRMFaceArray_QueryInterface(p,a,b)                   (p)->lpVtbl->QueryInterface(p,a,b)
4458 #define IDirect3DRMFaceArray_AddRef(p)                               (p)->lpVtbl->AddRef(p)
4459 #define IDirect3DRMFaceArray_Release(p)                              (p)->lpVtbl->Release(p)
4460 /*** IDirect3DRMArray methods ***/
4461 #define IDirect3DRMFaceArray_GetSize(p)                              (p)->lpVtbl->GetSize(p)
4462 /*** IDirect3DRMFaceArray methods ***/
4463 #define IDirect3DRMFaceArray_GetElement(p,a,b)                       (p)->lpVtbl->GetElement(p,a,b)
4464 #else
4465 /*** IUnknown methods ***/
4466 #define IDirect3DRMFaceArray_QueryInterface(p,a,b)                   (p)->QueryInterface(a,b)
4467 #define IDirect3DRMFaceArray_AddRef(p)                               (p)->AddRef()
4468 #define IDirect3DRMFaceArray_Release(p)                              (p)->Release()
4469 /*** IDirect3DRMArray methods ***/
4470 #define IDirect3DRMFaceArray_GetSize(p)                              (p)->GetSize()
4471 /*** IDirect3DRMFaceArray methods ***/
4472 #define IDirect3DRMFaceArray_GetElement(p,a,b)                       (p)->GetElement(a,b)
4473 #endif
4474
4475 /*****************************************************************************
4476  * IDirect3DRMPicked2Array interface
4477  */
4478 #define INTERFACE IDirect3DRMPicked2Array
4479 DECLARE_INTERFACE_(IDirect3DRMPicked2Array, IDirect3DRMArray)
4480 {
4481     /*** IUnknown methods ***/
4482     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
4483     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
4484     STDMETHOD_(ULONG,Release)(THIS) PURE;
4485     /*** IDirect3DRMArray methods ***/
4486     STDMETHOD_(DWORD, GetSize)(THIS) PURE;
4487     /*** IDirect3DRMPicked2Array methods ***/
4488     STDMETHOD(GetPick)(THIS_ DWORD index, LPDIRECT3DRMVISUAL *, LPDIRECT3DRMFRAMEARRAY *, LPD3DRMPICKDESC2) PURE;
4489 };
4490 #undef INTERFACE
4491
4492 #if !defined(__cplusplus) || defined(CINTERFACE)
4493 /*** IUnknown methods ***/
4494 #define IDirect3DRMPicked2Array_QueryInterface(p,a,b)                   (p)->lpVtbl->QueryInterface(p,a,b)
4495 #define IDirect3DRMPicked2Array_AddRef(p)                               (p)->lpVtbl->AddRef(p)
4496 #define IDirect3DRMPicked2Array_Release(p)                              (p)->lpVtbl->Release(p)
4497 /*** IDirect3DRMArray methods ***/
4498 #define IDirect3DRMPicked2Array_GetSize(p)                              (p)->lpVtbl->GetSize(p)
4499 /*** IDirect3DRMPicked2Array methods ***/
4500 #define IDirect3DRMPicked2Array_GetPick(p,a,b,c,d)                      (p)->lpVtbl->GetPick(p,a,b,c,d)
4501 #else
4502 /*** IUnknown methods ***/
4503 #define IDirect3DRMPicked2Array_QueryInterface(p,a,b)                   (p)->QueryInterface(a,b)
4504 #define IDirect3DRMPicked2Array_AddRef(p)                               (p)->AddRef()
4505 #define IDirect3DRMPicked2Array_Release(p)                              (p)->Release()
4506 /*** IDirect3DRMArray methods ***/
4507 #define IDirect3DRMPicked2Array_GetSize(p)                              (p)->GetSize()
4508 /*** IDirect3DRMPicked2Array methods ***/
4509 #define IDirect3DRMPicked2Array_GetPick(p,a,b,c,d)                      (p)->GetPick(a,b,c,d)
4510 #endif
4511
4512 /*****************************************************************************
4513  * IDirect3DRMInterpolator interface
4514  */
4515 #define INTERFACE IDirect3DRMInterpolator
4516 DECLARE_INTERFACE_(IDirect3DRMInterpolator, IDirect3DRMObject)
4517 {
4518     /*** IUnknown methods ***/
4519     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
4520     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
4521     STDMETHOD_(ULONG,Release)(THIS) PURE;
4522     /*** IDirect3DRMObject methods ***/
4523     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
4524     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
4525     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
4526     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
4527     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
4528     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
4529     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
4530     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
4531     /*** IDirect3DRMInterpolator methods ***/
4532     STDMETHOD(AttachObject)(THIS_ LPDIRECT3DRMOBJECT) PURE;
4533     STDMETHOD(GetAttachedObjects)(THIS_ LPDIRECT3DRMOBJECTARRAY *) PURE;
4534     STDMETHOD(DetachObject)(THIS_ LPDIRECT3DRMOBJECT) PURE;
4535     STDMETHOD(SetIndex)(THIS_ D3DVALUE) PURE;
4536     STDMETHOD_(D3DVALUE, GetIndex)(THIS) PURE;
4537     STDMETHOD(Interpolate)(THIS_ D3DVALUE, LPDIRECT3DRMOBJECT, D3DRMINTERPOLATIONOPTIONS) PURE;
4538 };
4539 #undef INTERFACE
4540
4541 #if !defined(__cplusplus) || defined(CINTERFACE)
4542 /*** IUnknown methods ***/
4543 #define IDirect3DRMInterpolator_QueryInterface(p,a,b)                   (p)->lpVtbl->QueryInterface(p,a,b)
4544 #define IDirect3DRMInterpolator_AddRef(p)                               (p)->lpVtbl->AddRef(p)
4545 #define IDirect3DRMInterpolator_Release(p)                              (p)->lpVtbl->Release(p)
4546 /*** IDirect3DRMObject methods ***/
4547 #define IDirect3DRMInterpolator_Clone(p,a,b,c)                          (p)->lpVtbl->Clone(p,a,b,c)
4548 #define IDirect3DRMInterpolator_AddDestroyCallback(p,a,b)               (p)->lpVtbl->AddDestroyCallback(p,a,b)
4549 #define IDirect3DRMInterpolator_DeleteDestroyCallback(p,a,b)            (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
4550 #define IDirect3DRMInterpolator_SetAppData(p,a)                         (p)->lpVtbl->SetAppData(p,a)
4551 #define IDirect3DRMInterpolator_GetAppData(p)                           (p)->lpVtbl->GetAppData(p)
4552 #define IDirect3DRMInterpolator_SetName(p,a)                            (p)->lpVtbl->SetName(p,a)
4553 #define IDirect3DRMInterpolator_GetName(p,a,b)                          (p)->lpVtbl->GetName(p,a,b)
4554 #define IDirect3DRMInterpolator_GetClassName(p,a,b)                     (p)->lpVtbl->GetClassName(p,a,b)
4555 /*** IDirect3DRMInterpolator methods ***/
4556 #define IDirect3DRMInterpolator_AttachObject(p,a)                       (p)->lpVtbl->AttachObject(p,a)
4557 #define IDirect3DRMInterpolator_GetAttachedObjects(p,a)                 (p)->lpVtbl->GetAttachedObjects(p,a)
4558 #define IDirect3DRMInterpolator_DetachObject(p,a)                       (p)->lpVtbl->DetachObject(p,a)
4559 #define IDirect3DRMInterpolator_SetIndex(p,a)                           (p)->lpVtbl->SetIndex(p,a)
4560 #define IDirect3DRMInterpolator_GetIndex(p)                             (p)->lpVtbl->GetIndex(p)
4561 #define IDirect3DRMInterpolator_Interpolate(p,a,b,c)                    (p)->lpVtbl->Interpolate(p,a,b,c)
4562 #else
4563 /*** IUnknown methods ***/
4564 #define IDirect3DRMInterpolator_QueryInterface(p,a,b)                   (p)->QueryInterface(a,b)
4565 #define IDirect3DRMInterpolator_AddRef(p)                               (p)->AddRef()
4566 #define IDirect3DRMInterpolator_Release(p)                              (p)->Release()
4567 /*** IDirect3DRMObject methods ***/
4568 #define IDirect3DRMInterpolator_Clone(p,a,b,c)                          (p)->Clone(a,b,c)
4569 #define IDirect3DRMInterpolator_AddDestroyCallback(p,a,b)               (p)->AddDestroyCallback(a,b)
4570 #define IDirect3DRMInterpolator_DeleteDestroyCallback(p,a,b)            (p)->DeleteDestroyCallback(a,b)
4571 #define IDirect3DRMInterpolator_SetAppData(p,a)                         (p)->SetAppData(a)
4572 #define IDirect3DRMInterpolator_GetAppData(p)                           (p)->GetAppData()
4573 #define IDirect3DRMInterpolator_SetName(p,a)                            (p)->SetName(a)
4574 #define IDirect3DRMInterpolator_GetName(p,a,b)                          (p)->GetName(a,b)
4575 #define IDirect3DRMInterpolator_GetClassName(p,a,b)                     (p)->GetClassName(a,b)
4576 /*** IDirect3DRMInterpolator methods ***/
4577 #define IDirect3DRMInterpolator_AttachObject(p,a)                       (p)->AttachObject(a)
4578 #define IDirect3DRMInterpolator_GetAttachedObjects(p,a)                 (p)->GetAttachedObjects(a)
4579 #define IDirect3DRMInterpolator_DetachObject(p,a)                       (p)->DetachObject(a)
4580 #define IDirect3DRMInterpolator_SetIndex(p,a)                           (p)->SetIndex(a)
4581 #define IDirect3DRMInterpolator_GetIndex(p)                             (p)->GetIndex()
4582 #define IDirect3DRMInterpolator_Interpolate(p,a,b,c)                    (p)->Interpolate(a,b,c)
4583 #endif
4584
4585 /*****************************************************************************
4586  * IDirect3DRMClippedVisual interface
4587  */
4588 #define INTERFACE IDirect3DRMClippedVisual
4589 DECLARE_INTERFACE_(IDirect3DRMClippedVisual, IDirect3DRMVisual)
4590 {
4591     /*** IUnknown methods ***/
4592     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
4593     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
4594     STDMETHOD_(ULONG,Release)(THIS) PURE;
4595     /*** IDirect3DRMObject methods ***/
4596     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
4597     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
4598     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
4599     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
4600     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
4601     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
4602     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
4603     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
4604     /*** IDirect3DRMClippedVisual methods ***/
4605     STDMETHOD(Init) (THIS_ LPDIRECT3DRMVISUAL) PURE;
4606     STDMETHOD(AddPlane) (THIS_ LPDIRECT3DRMFRAME3, LPD3DVECTOR, LPD3DVECTOR, DWORD, LPDWORD) PURE;
4607     STDMETHOD(DeletePlane)(THIS_ DWORD, DWORD) PURE;
4608     STDMETHOD(GetPlaneIDs)(THIS_ LPDWORD, LPDWORD, DWORD) PURE;
4609     STDMETHOD(GetPlane) (THIS_ DWORD, LPDIRECT3DRMFRAME3, LPD3DVECTOR, LPD3DVECTOR, DWORD) PURE;
4610     STDMETHOD(SetPlane) (THIS_ DWORD, LPDIRECT3DRMFRAME3, LPD3DVECTOR, LPD3DVECTOR, DWORD) PURE;
4611 };
4612 #undef INTERFACE
4613
4614 #if !defined(__cplusplus) || defined(CINTERFACE)
4615 /*** IUnknown methods ***/
4616 #define IDirect3DRMClippedVisual_QueryInterface(p,a,b)                   (p)->lpVtbl->QueryInterface(p,a,b)
4617 #define IDirect3DRMClippedVisual_AddRef(p)                               (p)->lpVtbl->AddRef(p)
4618 #define IDirect3DRMClippedVisual_Release(p)                              (p)->lpVtbl->Release(p)
4619 /*** IDirect3DRMObject methods ***/
4620 #define IDirect3DRMClippedVisual_Clone(p,a,b,c)                          (p)->lpVtbl->Clone(p,a,b,c)
4621 #define IDirect3DRMClippedVisual_AddDestroyCallback(p,a,b)               (p)->lpVtbl->AddDestroyCallback(p,a,b)
4622 #define IDirect3DRMClippedVisual_DeleteDestroyCallback(p,a,b)            (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
4623 #define IDirect3DRMClippedVisual_SetAppData(p,a)                         (p)->lpVtbl->SetAppData(p,a)
4624 #define IDirect3DRMClippedVisual_GetAppData(p)                           (p)->lpVtbl->GetAppData(p)
4625 #define IDirect3DRMClippedVisual_SetName(p,a)                            (p)->lpVtbl->SetName(p,a)
4626 #define IDirect3DRMClippedVisual_GetName(p,a,b)                          (p)->lpVtbl->GetName(p,a,b)
4627 #define IDirect3DRMClippedVisual_GetClassName(p,a,b)                     (p)->lpVtbl->GetClassName(p,a,b)
4628 /*** IDirect3DRMClippedVisual methods ***/
4629 #define IDirect3DRMClippedVisual_Init(p,a)                               (p)->lpVtbl->Init(p,a)
4630 #define IDirect3DRMClippedVisual_AddPlane(p,a,b,c,d,e)                   (p)->lpVtbl->AddPlane(p,a,b,c,d,e)
4631 #define IDirect3DRMClippedVisual_DeletePlane(p,a,b)                      (p)->lpVtbl->DeletePlane(p,a,b)
4632 #define IDirect3DRMClippedVisual_GetPlaneIDs(p,a,b,c)                    (p)->lpVtbl->GetPlaneIDs(p,a,b,c)
4633 #define IDirect3DRMClippedVisual_GetPlane(p,a,b,c,d,e)                   (p)->lpVtbl->GetPlane(p,a,b,c,d,e)
4634 #define IDirect3DRMClippedVisual_SetPlane(p,a,b,c,d,e)                   (p)->lpVtbl->SetPlane(p,a,b,c,d,e)
4635 #else
4636 /*** IUnknown methods ***/
4637 #define IDirect3DRMClippedVisual_QueryInterface(p,a,b)                   (p)->QueryInterface(a,b)
4638 #define IDirect3DRMClippedVisual_AddRef(p)                               (p)->AddRef()
4639 #define IDirect3DRMClippedVisual_Release(p)                              (p)->Release()
4640 /*** IDirect3DRMObject methods ***/
4641 #define IDirect3DRMClippedVisual_Clone(p,a,b,c)                          (p)->Clone(a,b,c)
4642 #define IDirect3DRMClippedVisual_AddDestroyCallback(p,a,b)               (p)->AddDestroyCallback(a,b)
4643 #define IDirect3DRMClippedVisual_DeleteDestroyCallback(p,a,b)            (p)->DeleteDestroyCallback(a,b)
4644 #define IDirect3DRMClippedVisual_SetAppData(p,a)                         (p)->SetAppData(a)
4645 #define IDirect3DRMClippedVisual_GetAppData(p)                           (p)->GetAppData()
4646 #define IDirect3DRMClippedVisual_SetName(p,a)                            (p)->SetName(a)
4647 #define IDirect3DRMClippedVisual_GetName(p,a,b)                          (p)->GetName(a,b)
4648 #define IDirect3DRMClippedVisual_GetClassName(p,a,b)                     (p)->GetClassName(a,b)
4649 /*** IDirect3DRMClippedVisual methods ***/
4650 #define IDirect3DRMClippedVisual_Init(p,a)                               (p)->Init(a)
4651 #define IDirect3DRMClippedVisual_AddPlane(p,a,b,c,d,e)                   (p)->AddPlane(a,b,c,d,e)
4652 #define IDirect3DRMClippedVisual_DeletePlane(p,a,b)                      (p)->DeletePlane(a,b)
4653 #define IDirect3DRMClippedVisual_GetPlaneIDs(p,a,b,c)                    (p)->GetPlaneIDs(a,b,c)
4654 #define IDirect3DRMClippedVisual_GetPlane(p,a,b,c,d,e)                   (p)->GetPlane(a,b,c,d,e)
4655 #define IDirect3DRMClippedVisual_SetPlane(p,a,b,c,d,e)                   (p)->SetPlane(a,b,c,d,e)
4656 #endif
4657
4658 #ifdef __cplusplus
4659 };
4660 #endif
4661
4662 #endif /* __D3DRMOBJ_H__ */