1 /*==========================================================================;
2 *
3 * Copyright (C) 1995-1996 Microsoft Corporation. All Rights Reserved.
4 *
5 * File: d3drm.h
6 * Content: Direct3DRM include file
7 *
8 ***************************************************************************/
9
10 #ifndef _D3DRMOBJ_H_
11 #define _D3DRMOBJ_H_
12
13 #include <objbase.h> /* Use Windows header files */
14 #define VIRTUAL
15
16 #include "d3drmdef.h"
17 #include "d3d.h"
18
19 #ifdef __cplusplus
20 extern "C" {
21 #endif
22
23 /*
24 * The methods for IUnknown
25 */
26 #define IUNKNOWN_METHODS(kind) \
27 STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID *ppvObj) kind; \
28 STDMETHOD_(ULONG, AddRef) (THIS) kind; \
29 STDMETHOD_(ULONG, Release) (THIS) kind
30
31 /*
32 * The methods for IDirect3DRMObject
33 */
34 #define IDIRECT3DRMOBJECT_METHODS(kind) \
35 STDMETHOD(Clone) (THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) kind; \
36 STDMETHOD(AddDestroyCallback) (THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) kind; \
37 STDMETHOD(DeleteDestroyCallback) (THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) kind; \
38 STDMETHOD(SetAppData) (THIS_ DWORD data) kind; \
39 STDMETHOD_(DWORD, GetAppData) (THIS) kind; \
40 STDMETHOD(SetName) (THIS_ LPCSTR) kind; \
41 STDMETHOD(GetName) (THIS_ LPDWORD lpdwSize, LPSTR lpName) kind; \
42 STDMETHOD(GetClassName) (THIS_ LPDWORD lpdwSize, LPSTR lpName) kind
43
44
45 #define WIN_TYPES(itype, ptype) \
46 typedef interface itype FAR *LP##ptype, FAR **LPLP##ptype
47
48 WIN_TYPES(IDirect3DRMObject, DIRECT3DRMOBJECT);
49 WIN_TYPES(IDirect3DRMDevice, DIRECT3DRMDEVICE);
50 WIN_TYPES(IDirect3DRMViewport, DIRECT3DRMVIEWPORT);
51 WIN_TYPES(IDirect3DRMFrame, DIRECT3DRMFRAME);
52 WIN_TYPES(IDirect3DRMVisual, DIRECT3DRMVISUAL);
53 WIN_TYPES(IDirect3DRMMesh, DIRECT3DRMMESH);
54 WIN_TYPES(IDirect3DRMMeshBuilder, DIRECT3DRMMESHBUILDER);
55 WIN_TYPES(IDirect3DRMFace, DIRECT3DRMFACE);
56 WIN_TYPES(IDirect3DRMLight, DIRECT3DRMLIGHT);
57 WIN_TYPES(IDirect3DRMTexture, DIRECT3DRMTEXTURE);
58 WIN_TYPES(IDirect3DRMWrap, DIRECT3DRMWRAP);
59 WIN_TYPES(IDirect3DRMMaterial, DIRECT3DRMMATERIAL);
60 WIN_TYPES(IDirect3DRMAnimation, DIRECT3DRMANIMATION);
61 WIN_TYPES(IDirect3DRMAnimationSet, DIRECT3DRMANIMATIONSET);
62 WIN_TYPES(IDirect3DRMUserVisual, DIRECT3DRMUSERVISUAL);
63 WIN_TYPES(IDirect3DRMShadow, DIRECT3DRMSHADOW);
64 WIN_TYPES(IDirect3DRMArray, DIRECT3DRMOBJECTARRAY);
65 WIN_TYPES(IDirect3DRMDeviceArray, DIRECT3DRMDEVICEARRAY);
66 WIN_TYPES(IDirect3DRMFaceArray, DIRECT3DRMFACEARRAY);
67 WIN_TYPES(IDirect3DRMViewportArray, DIRECT3DRMVIEWPORTARRAY);
68 WIN_TYPES(IDirect3DRMFrameArray, DIRECT3DRMFRAMEARRAY);
69 WIN_TYPES(IDirect3DRMVisualArray, DIRECT3DRMVISUALARRAY);
70 WIN_TYPES(IDirect3DRMPickedArray, DIRECT3DRMPICKEDARRAY);
71 WIN_TYPES(IDirect3DRMLightArray, DIRECT3DRMLIGHTARRAY);
72
73 /*
74 * Direct3DRM Object classes
75 */
76 DEFINE_GUID(CLSID_CDirect3DRMDevice, 0x4fa3568e, 0x623f, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1);
77 DEFINE_GUID(CLSID_CDirect3DRMViewport, 0x4fa3568f, 0x623f, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1);
78 DEFINE_GUID(CLSID_CDirect3DRMFrame, 0x4fa35690, 0x623f, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1);
79 DEFINE_GUID(CLSID_CDirect3DRMMesh, 0x4fa35691, 0x623f, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1);
80 DEFINE_GUID(CLSID_CDirect3DRMMeshBuilder, 0x4fa35692, 0x623f, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1);
81 DEFINE_GUID(CLSID_CDirect3DRMFace, 0x4fa35693, 0x623f, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1);
82 DEFINE_GUID(CLSID_CDirect3DRMLight, 0x4fa35694, 0x623f, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1);
83 DEFINE_GUID(CLSID_CDirect3DRMTexture, 0x4fa35695, 0x623f, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1);
84 DEFINE_GUID(CLSID_CDirect3DRMWrap, 0x4fa35696, 0x623f, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1);
85 DEFINE_GUID(CLSID_CDirect3DRMMaterial, 0x4fa35697, 0x623f, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1);
86 DEFINE_GUID(CLSID_CDirect3DRMAnimation, 0x4fa35698, 0x623f, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1);
87 DEFINE_GUID(CLSID_CDirect3DRMAnimationSet, 0x4fa35699, 0x623f, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1);
88 DEFINE_GUID(CLSID_CDirect3DRMUserVisual, 0x4fa3569a, 0x623f, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1);
89 DEFINE_GUID(CLSID_CDirect3DRMShadow, 0x4fa3569b, 0x623f, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1);
90
91 /*
92 * Direct3DRM Object interfaces
93 */
94 DEFINE_GUID(IID_IDirect3DRMObject, 0xeb16cb00, 0xd271, 0x11ce, 0xac, 0x48, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1);
95 DEFINE_GUID(IID_IDirect3DRMDevice, 0xe9e19280, 0x6e05, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1);
96 DEFINE_GUID(IID_IDirect3DRMViewport, 0xeb16cb02, 0xd271, 0x11ce, 0xac, 0x48, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1);
97 DEFINE_GUID(IID_IDirect3DRMFrame, 0xeb16cb03, 0xd271, 0x11ce, 0xac, 0x48, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1);
98 DEFINE_GUID(IID_IDirect3DRMVisual, 0xeb16cb04, 0xd271, 0x11ce, 0xac, 0x48, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1);
99 DEFINE_GUID(IID_IDirect3DRMMesh, 0xa3a80d01, 0x6e12, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1);
100 DEFINE_GUID(IID_IDirect3DRMMeshBuilder, 0xa3a80d02, 0x6e12, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1);
101 DEFINE_GUID(IID_IDirect3DRMFace, 0xeb16cb07, 0xd271, 0x11ce, 0xac, 0x48, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1);
102 DEFINE_GUID(IID_IDirect3DRMLight, 0xeb16cb08, 0xd271, 0x11ce, 0xac, 0x48, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1);
103 DEFINE_GUID(IID_IDirect3DRMTexture, 0xeb16cb09, 0xd271, 0x11ce, 0xac, 0x48, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1);
104 DEFINE_GUID(IID_IDirect3DRMWrap, 0xeb16cb0a, 0xd271, 0x11ce, 0xac, 0x48, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1);
105 DEFINE_GUID(IID_IDirect3DRMMaterial, 0xeb16cb0b, 0xd271, 0x11ce, 0xac, 0x48, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1);
106 DEFINE_GUID(IID_IDirect3DRMAnimation, 0xeb16cb0d, 0xd271, 0x11ce, 0xac, 0x48, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1);
107 DEFINE_GUID(IID_IDirect3DRMAnimationSet, 0xeb16cb0e, 0xd271, 0x11ce, 0xac, 0x48, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1);
108 DEFINE_GUID(IID_IDirect3DRMDeviceArray, 0xeb16cb10, 0xd271, 0x11ce, 0xac, 0x48, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1);
109 DEFINE_GUID(IID_IDirect3DRMViewportArray, 0xeb16cb11, 0xd271, 0x11ce, 0xac, 0x48, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1);
110 DEFINE_GUID(IID_IDirect3DRMFrameArray, 0xeb16cb12, 0xd271, 0x11ce, 0xac, 0x48, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1);
111 DEFINE_GUID(IID_IDirect3DRMVisualArray, 0xeb16cb13, 0xd271, 0x11ce, 0xac, 0x48, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1);
112 DEFINE_GUID(IID_IDirect3DRMLightArray, 0xeb16cb14, 0xd271, 0x11ce, 0xac, 0x48, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1);
113 DEFINE_GUID(IID_IDirect3DRMPickedArray, 0xeb16cb16, 0xd271, 0x11ce, 0xac, 0x48, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1);
114 DEFINE_GUID(IID_IDirect3DRMFaceArray, 0xeb16cb17, 0xd271, 0x11ce, 0xac, 0x48, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1);
115 DEFINE_GUID(IID_IDirect3DRMUserVisual, 0x59163de0, 0x6d43, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1);
116 DEFINE_GUID(IID_IDirect3DRMShadow, 0xaf359780, 0x6ba3, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1);
117
118 typedef void (*D3DRMOBJECTCALLBACK)(LPDIRECT3DRMOBJECT obj, LPVOID arg);
119 typedef void (*D3DRMFRAMEMOVECALLBACK)(LPDIRECT3DRMFRAME obj, LPVOID arg, D3DVALUE delta);
120 typedef void (*D3DRMUPDATECALLBACK)(LPDIRECT3DRMDEVICE obj, LPVOID arg, int, LPD3DRECT);
121 typedef int (*D3DRMUSERVISUALCALLBACK)(LPDIRECT3DRMUSERVISUAL obj, LPVOID arg,
122 D3DRMUSERVISUALREASON reason,
123 LPDIRECT3DRMDEVICE dev,
124 LPDIRECT3DRMVIEWPORT view);
125 typedef HRESULT (*D3DRMLOADTEXTURECALLBACK)
126 (char *tex_name, void *arg, LPDIRECT3DRMTEXTURE *);
127 typedef void (*D3DRMLOADCALLBACK)
128 (LPDIRECT3DRMOBJECT object, REFIID objectguid, LPVOID arg);
129
130
131
132 typedef struct _D3DRMPICKDESC
133 {
134 ULONG ulFaceIdx;
135 LONG lGroupIdx;
136 D3DVECTOR vPosition;
137
138 } D3DRMPICKDESC, *LPD3DRMPICKDESC;
139
140 #undef INTERFACE
141 #define INTERFACE IDirect3DRMObject
142
143 /*
144 * Base class
145 */
DECLARE_INTERFACE_(IDirect3DRMObject,IUnknown)146 DECLARE_INTERFACE_(IDirect3DRMObject, IUnknown)
147 {
148 IUNKNOWN_METHODS(PURE);
149 IDIRECT3DRMOBJECT_METHODS(PURE);
150 };
151
152 #undef INTERFACE
153 #define INTERFACE IDirect3DRMVisual
154
DECLARE_INTERFACE_(IDirect3DRMVisual,IDirect3DRMObject)155 DECLARE_INTERFACE_(IDirect3DRMVisual, IDirect3DRMObject)
156 {
157 IUNKNOWN_METHODS(PURE);
158 IDIRECT3DRMOBJECT_METHODS(PURE);
159 };
160
161 #undef INTERFACE
162 #define INTERFACE IDirect3DRMDevice
163
DECLARE_INTERFACE_(IDirect3DRMDevice,IDirect3DRMObject)164 DECLARE_INTERFACE_(IDirect3DRMDevice, IDirect3DRMObject)
165 {
166 IUNKNOWN_METHODS(PURE);
167 IDIRECT3DRMOBJECT_METHODS(PURE);
168
169 /*
170 * IDirect3DRMDevice methods
171 */
172 STDMETHOD(Init)(THIS_ ULONG width, ULONG height) PURE;
173 STDMETHOD(InitFromD3D)(THIS_ LPDIRECT3D lpD3D, LPDIRECT3DDEVICE lpD3DDev) PURE;
174 STDMETHOD(InitFromClipper)(THIS_ LPDIRECTDRAWCLIPPER lpDDClipper, LPGUID lpGUID, int width, int height) PURE;
175
176 STDMETHOD(Update)(THIS) PURE;
177 STDMETHOD(AddUpdateCallback)(THIS_ D3DRMUPDATECALLBACK, LPVOID arg) PURE;
178 STDMETHOD(DeleteUpdateCallback)(THIS_ D3DRMUPDATECALLBACK, LPVOID arg) PURE;
179 STDMETHOD(SetBufferCount)(THIS_ DWORD) PURE;
180 STDMETHOD_(DWORD, GetBufferCount)(THIS) PURE;
181
182 STDMETHOD(SetDither)(THIS_ BOOL) PURE;
183 STDMETHOD(SetShades)(THIS_ DWORD) PURE;
184 STDMETHOD(SetQuality)(THIS_ D3DRMRENDERQUALITY) PURE;
185 STDMETHOD(SetTextureQuality)(THIS_ D3DRMTEXTUREQUALITY) PURE;
186
187 STDMETHOD(GetViewports)(THIS_ LPDIRECT3DRMVIEWPORTARRAY *return_views) PURE;
188
189 STDMETHOD_(BOOL, GetDither)(THIS) PURE;
190 STDMETHOD_(DWORD, GetShades)(THIS) PURE;
191 STDMETHOD_(DWORD, GetHeight)(THIS) PURE;
192 STDMETHOD_(DWORD, GetWidth)(THIS) PURE;
193 STDMETHOD_(DWORD, GetTrianglesDrawn)(THIS) PURE;
194 STDMETHOD_(DWORD, GetWireframeOptions)(THIS) PURE;
195 STDMETHOD_(D3DRMRENDERQUALITY, GetQuality)(THIS) PURE;
196 STDMETHOD_(D3DCOLORMODEL, GetColorModel)(THIS) PURE;
197 STDMETHOD_(D3DRMTEXTUREQUALITY, GetTextureQuality)(THIS) PURE;
198 STDMETHOD(GetDirect3DDevice)(THIS_ LPDIRECT3DDEVICE *) PURE;
199 };
200
201 #undef INTERFACE
202 #define INTERFACE IDirect3DRMViewport
203
DECLARE_INTERFACE_(IDirect3DRMViewport,IDirect3DRMObject)204 DECLARE_INTERFACE_(IDirect3DRMViewport, IDirect3DRMObject)
205 {
206 IUNKNOWN_METHODS(PURE);
207 IDIRECT3DRMOBJECT_METHODS(PURE);
208
209 /*
210 * IDirect3DRMViewport methods
211 */
212 STDMETHOD(Init)
213 ( THIS_ LPDIRECT3DRMDEVICE dev, LPDIRECT3DRMFRAME camera,
214 DWORD xpos, DWORD ypos, DWORD width, DWORD height
215 ) PURE;
216 STDMETHOD(Clear)(THIS) PURE;
217 STDMETHOD(Render)(THIS_ LPDIRECT3DRMFRAME) PURE;
218
219 STDMETHOD(SetFront)(THIS_ D3DVALUE) PURE;
220 STDMETHOD(SetBack)(THIS_ D3DVALUE) PURE;
221 STDMETHOD(SetField)(THIS_ D3DVALUE) PURE;
222 STDMETHOD(SetUniformScaling)(THIS_ BOOL) PURE;
223 STDMETHOD(SetCamera)(THIS_ LPDIRECT3DRMFRAME) PURE;
224 STDMETHOD(SetProjection)(THIS_ D3DRMPROJECTIONTYPE) PURE;
225 STDMETHOD(Transform)(THIS_ D3DRMVECTOR4D *d, D3DVECTOR *s) PURE;
226 STDMETHOD(InverseTransform)(THIS_ D3DVECTOR *d, D3DRMVECTOR4D *s) PURE;
227 STDMETHOD(Configure)(THIS_ LONG x, LONG y, DWORD width, DWORD height) PURE;
228 STDMETHOD(ForceUpdate)(THIS_ DWORD x1, DWORD y1, DWORD x2, DWORD y2) PURE;
229 STDMETHOD(SetPlane)(THIS_ D3DVALUE left, D3DVALUE right, D3DVALUE bottom, D3DVALUE top) PURE;
230
231 STDMETHOD(GetCamera)(THIS_ LPDIRECT3DRMFRAME *) PURE;
232 STDMETHOD(GetDevice)(THIS_ LPDIRECT3DRMDEVICE *) PURE;
233 STDMETHOD(GetPlane)(THIS_ D3DVALUE *left, D3DVALUE *right, D3DVALUE *bottom, D3DVALUE *top) PURE;
234 STDMETHOD(Pick)(THIS_ LONG x, LONG y, LPDIRECT3DRMPICKEDARRAY *return_visuals) PURE;
235
236 STDMETHOD_(BOOL, GetUniformScaling)(THIS) PURE;
237 STDMETHOD_(LONG, GetX)(THIS) PURE;
238 STDMETHOD_(LONG, GetY)(THIS) PURE;
239 STDMETHOD_(DWORD, GetWidth)(THIS) PURE;
240 STDMETHOD_(DWORD, GetHeight)(THIS) PURE;
241 STDMETHOD_(D3DVALUE, GetField)(THIS) PURE;
242 STDMETHOD_(D3DVALUE, GetBack)(THIS) PURE;
243 STDMETHOD_(D3DVALUE, GetFront)(THIS) PURE;
244 STDMETHOD_(D3DRMPROJECTIONTYPE, GetProjection)(THIS) PURE;
245 STDMETHOD(GetDirect3DViewport)(THIS_ LPDIRECT3DVIEWPORT *) PURE;
246 };
247
248 #undef INTERFACE
249 #define INTERFACE IDirect3DRMFrame
250
DECLARE_INTERFACE_(IDirect3DRMFrame,IDirect3DRMVisual)251 DECLARE_INTERFACE_(IDirect3DRMFrame, IDirect3DRMVisual)
252 {
253 IUNKNOWN_METHODS(PURE);
254 IDIRECT3DRMOBJECT_METHODS(PURE);
255
256 /*
257 * IDirect3DRMFrame methods
258 */
259 STDMETHOD(AddChild)(THIS_ LPDIRECT3DRMFRAME child) PURE;
260 STDMETHOD(AddLight)(THIS_ LPDIRECT3DRMLIGHT) PURE;
261 STDMETHOD(AddMoveCallback)(THIS_ D3DRMFRAMEMOVECALLBACK, VOID *arg) PURE;
262 STDMETHOD(AddTransform)(THIS_ D3DRMCOMBINETYPE, D3DRMMATRIX4D) PURE;
263 STDMETHOD(AddTranslation)(THIS_ D3DRMCOMBINETYPE, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
264 STDMETHOD(AddScale)(THIS_ D3DRMCOMBINETYPE, D3DVALUE sx, D3DVALUE sy, D3DVALUE sz) PURE;
265 STDMETHOD(AddRotation)(THIS_ D3DRMCOMBINETYPE, D3DVALUE x, D3DVALUE y, D3DVALUE z, D3DVALUE theta) PURE;
266 STDMETHOD(AddVisual)(THIS_ LPDIRECT3DRMVISUAL) PURE;
267 STDMETHOD(GetChildren)(THIS_ LPDIRECT3DRMFRAMEARRAY *children) PURE;
268 STDMETHOD_(D3DCOLOR, GetColor)(THIS) PURE;
269 STDMETHOD(GetLights)(THIS_ LPDIRECT3DRMLIGHTARRAY *lights) PURE;
270 STDMETHOD_(D3DRMMATERIALMODE, GetMaterialMode)(THIS) PURE;
271 STDMETHOD(GetParent)(THIS_ LPDIRECT3DRMFRAME *) PURE;
272 STDMETHOD(GetPosition)(THIS_ LPDIRECT3DRMFRAME reference, LPD3DVECTOR return_position) PURE;
273 STDMETHOD(GetRotation)(THIS_ LPDIRECT3DRMFRAME reference, LPD3DVECTOR axis, LPD3DVALUE return_theta) PURE;
274 STDMETHOD(GetScene)(THIS_ LPDIRECT3DRMFRAME *) PURE;
275 STDMETHOD_(D3DRMSORTMODE, GetSortMode)(THIS) PURE;
276 STDMETHOD(GetTexture)(THIS_ LPDIRECT3DRMTEXTURE *) PURE;
277 STDMETHOD(GetTransform)(THIS_ D3DRMMATRIX4D return_matrix) PURE;
278 STDMETHOD(GetVelocity)(THIS_ LPDIRECT3DRMFRAME reference, LPD3DVECTOR return_velocity, BOOL with_rotation) PURE;
279 STDMETHOD(GetOrientation)(THIS_ LPDIRECT3DRMFRAME reference, LPD3DVECTOR dir, LPD3DVECTOR up) PURE;
280 STDMETHOD(GetVisuals)(THIS_ LPDIRECT3DRMVISUALARRAY *visuals) PURE;
281 STDMETHOD(GetTextureTopology)(THIS_ BOOL *wrap_u, BOOL *wrap_v) PURE;
282 STDMETHOD(InverseTransform)(THIS_ D3DVECTOR *d, D3DVECTOR *s) PURE;
283 STDMETHOD(Load)(THIS_ LPVOID filename, LPVOID name, D3DRMLOADOPTIONS loadflags, D3DRMLOADTEXTURECALLBACK, LPVOID lpArg)PURE;
284 STDMETHOD(LookAt)(THIS_ LPDIRECT3DRMFRAME target, LPDIRECT3DRMFRAME reference, D3DRMFRAMECONSTRAINT) PURE;
285 STDMETHOD(Move)(THIS_ D3DVALUE delta) PURE;
286 STDMETHOD(DeleteChild)(THIS_ LPDIRECT3DRMFRAME) PURE;
287 STDMETHOD(DeleteLight)(THIS_ LPDIRECT3DRMLIGHT) PURE;
288 STDMETHOD(DeleteMoveCallback)(THIS_ D3DRMFRAMEMOVECALLBACK, VOID *arg) PURE;
289 STDMETHOD(DeleteVisual)(THIS_ LPDIRECT3DRMVISUAL) PURE;
290 STDMETHOD_(D3DCOLOR, GetSceneBackground)(THIS) PURE;
291 STDMETHOD(GetSceneBackgroundDepth)(THIS_ LPDIRECTDRAWSURFACE *) PURE;
292 STDMETHOD_(D3DCOLOR, GetSceneFogColor)(THIS) PURE;
293 STDMETHOD_(BOOL, GetSceneFogEnable)(THIS) PURE;
294 STDMETHOD_(D3DRMFOGMODE, GetSceneFogMode)(THIS) PURE;
295 STDMETHOD(GetSceneFogParams)(THIS_ D3DVALUE *return_start, D3DVALUE *return_end, D3DVALUE *return_density) PURE;
296 STDMETHOD(SetSceneBackground)(THIS_ D3DCOLOR) PURE;
297 STDMETHOD(SetSceneBackgroundRGB)(THIS_ D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE;
298 STDMETHOD(SetSceneBackgroundDepth)(THIS_ LPDIRECTDRAWSURFACE) PURE;
299 STDMETHOD(SetSceneBackgroundImage)(THIS_ LPDIRECT3DRMTEXTURE) PURE;
300 STDMETHOD(SetSceneFogEnable)(THIS_ BOOL) PURE;
301 STDMETHOD(SetSceneFogColor)(THIS_ D3DCOLOR) PURE;
302 STDMETHOD(SetSceneFogMode)(THIS_ D3DRMFOGMODE) PURE;
303 STDMETHOD(SetSceneFogParams)(THIS_ D3DVALUE start, D3DVALUE end, D3DVALUE density) PURE;
304 STDMETHOD(SetColor)(THIS_ D3DCOLOR) PURE;
305 STDMETHOD(SetColorRGB)(THIS_ D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE;
306 STDMETHOD_(D3DRMZBUFFERMODE, GetZbufferMode)(THIS) PURE;
307 STDMETHOD(SetMaterialMode)(THIS_ D3DRMMATERIALMODE) PURE;
308 STDMETHOD(SetOrientation)
309 ( THIS_ LPDIRECT3DRMFRAME reference,
310 D3DVALUE dx, D3DVALUE dy, D3DVALUE dz,
311 D3DVALUE ux, D3DVALUE uy, D3DVALUE uz
312 ) PURE;
313 STDMETHOD(SetPosition)(THIS_ LPDIRECT3DRMFRAME reference, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
314 STDMETHOD(SetRotation)(THIS_ LPDIRECT3DRMFRAME reference, D3DVALUE x, D3DVALUE y, D3DVALUE z, D3DVALUE theta) PURE;
315 STDMETHOD(SetSortMode)(THIS_ D3DRMSORTMODE) PURE;
316 STDMETHOD(SetTexture)(THIS_ LPDIRECT3DRMTEXTURE) PURE;
317 STDMETHOD(SetTextureTopology)(THIS_ BOOL wrap_u, BOOL wrap_v) PURE;
318 STDMETHOD(SetVelocity)(THIS_ LPDIRECT3DRMFRAME reference, D3DVALUE x, D3DVALUE y, D3DVALUE z, BOOL with_rotation) PURE;
319 STDMETHOD(SetZbufferMode)(THIS_ D3DRMZBUFFERMODE) PURE;
320 STDMETHOD(Transform)(THIS_ D3DVECTOR *d, D3DVECTOR *s) PURE;
321 };
322
323 #undef INTERFACE
324 #define INTERFACE IDirect3DRMMesh
325
DECLARE_INTERFACE_(IDirect3DRMMesh,IDirect3DRMVisual)326 DECLARE_INTERFACE_(IDirect3DRMMesh, IDirect3DRMVisual)
327 {
328 IUNKNOWN_METHODS(PURE);
329 IDIRECT3DRMOBJECT_METHODS(PURE);
330
331 /*
332 * IDirect3DRMMesh methods
333 */
334 STDMETHOD(Scale)(THIS_ D3DVALUE sx, D3DVALUE sy, D3DVALUE sz) PURE;
335 STDMETHOD(Translate)(THIS_ D3DVALUE tx, D3DVALUE ty, D3DVALUE tz) PURE;
336 STDMETHOD(GetBox)(THIS_ D3DRMBOX *) PURE;
337 STDMETHOD(AddGroup)(THIS_ unsigned vCount, unsigned fCount, unsigned vPerFace, unsigned *fData, D3DRMGROUPINDEX *returnId) PURE;
338 STDMETHOD(SetVertices)(THIS_ D3DRMGROUPINDEX id, unsigned index, unsigned count, D3DRMVERTEX *values) PURE;
339 STDMETHOD(SetGroupColor)(THIS_ D3DRMGROUPINDEX id, D3DCOLOR value) PURE;
340 STDMETHOD(SetGroupColorRGB)(THIS_ D3DRMGROUPINDEX id, D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE;
341 STDMETHOD(SetGroupMapping)(THIS_ D3DRMGROUPINDEX id, D3DRMMAPPING value) PURE;
342 STDMETHOD(SetGroupQuality)(THIS_ D3DRMGROUPINDEX id, D3DRMRENDERQUALITY value) PURE;
343 STDMETHOD(SetGroupMaterial)(THIS_ D3DRMGROUPINDEX id, LPDIRECT3DRMMATERIAL value) PURE;
344 STDMETHOD(SetGroupTexture)(THIS_ D3DRMGROUPINDEX id, LPDIRECT3DRMTEXTURE value) PURE;
345
346 STDMETHOD_(unsigned, GetGroupCount)(THIS) PURE;
347 STDMETHOD(GetGroup)(THIS_ D3DRMGROUPINDEX id, unsigned *vCount, unsigned *fCount, unsigned *vPerFace, DWORD *fDataSize, unsigned *fData) PURE;
348 STDMETHOD(GetVertices)(THIS_ D3DRMGROUPINDEX id, DWORD index, DWORD count, D3DRMVERTEX *returnPtr) PURE;
349 STDMETHOD_(D3DCOLOR, GetGroupColor)(THIS_ D3DRMGROUPINDEX id) PURE;
350 STDMETHOD_(D3DRMMAPPING, GetGroupMapping)(THIS_ D3DRMGROUPINDEX id) PURE;
351 STDMETHOD_(D3DRMRENDERQUALITY, GetGroupQuality)(THIS_ D3DRMGROUPINDEX id) PURE;
352 STDMETHOD(GetGroupMaterial)(THIS_ D3DRMGROUPINDEX id, LPDIRECT3DRMMATERIAL *returnPtr) PURE;
353 STDMETHOD(GetGroupTexture)(THIS_ D3DRMGROUPINDEX id, LPDIRECT3DRMTEXTURE *returnPtr) PURE;
354 };
355
356 #undef INTERFACE
357 #define INTERFACE IDirect3DRMShadow
358
DECLARE_INTERFACE_(IDirect3DRMShadow,IDirect3DRMVisual)359 DECLARE_INTERFACE_(IDirect3DRMShadow, IDirect3DRMVisual)
360 {
361 IUNKNOWN_METHODS(PURE);
362 IDIRECT3DRMOBJECT_METHODS(PURE);
363
364 /*
365 * IDirect3DRMShadow methods
366 */
367 STDMETHOD(Init)
368 ( THIS_ LPDIRECT3DRMVISUAL visual, LPDIRECT3DRMLIGHT light,
369 D3DVALUE px, D3DVALUE py, D3DVALUE pz,
370 D3DVALUE nx, D3DVALUE ny, D3DVALUE nz
371 ) PURE;
372 };
373
374 #undef INTERFACE
375 #define INTERFACE IDirect3DRMFace
376
DECLARE_INTERFACE_(IDirect3DRMFace,IDirect3DRMObject)377 DECLARE_INTERFACE_(IDirect3DRMFace, IDirect3DRMObject)
378 {
379 IUNKNOWN_METHODS(PURE);
380 IDIRECT3DRMOBJECT_METHODS(PURE);
381
382 /*
383 * IDirect3DRMFace methods
384 */
385 STDMETHOD(AddVertex)(THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
386 STDMETHOD(AddVertexAndNormalIndexed)(THIS_ DWORD vertex, DWORD normal) PURE;
387 STDMETHOD(SetColorRGB)(THIS_ D3DVALUE, D3DVALUE, D3DVALUE) PURE;
388 STDMETHOD(SetColor)(THIS_ D3DCOLOR) PURE;
389 STDMETHOD(SetTexture)(THIS_ LPDIRECT3DRMTEXTURE) PURE;
390 STDMETHOD(SetTextureCoordinates)(THIS_ DWORD vertex, D3DVALUE u, D3DVALUE v) PURE;
391 STDMETHOD(SetMaterial)(THIS_ LPDIRECT3DRMMATERIAL) PURE;
392 STDMETHOD(SetTextureTopology)(THIS_ BOOL wrap_u, BOOL wrap_v) PURE;
393
394 STDMETHOD(GetVertex)(THIS_ DWORD index, D3DVECTOR *vertex, D3DVECTOR *normal) PURE;
395 STDMETHOD(GetVertices)(THIS_ DWORD *vertex_count, D3DVECTOR *coords, D3DVECTOR *normals);
396 STDMETHOD(GetTextureCoordinates)(THIS_ DWORD vertex, D3DVALUE *u, D3DVALUE *v) PURE;
397 STDMETHOD(GetTextureTopology)(THIS_ BOOL *wrap_u, BOOL *wrap_v) PURE;
398 STDMETHOD(GetNormal)(THIS_ D3DVECTOR *) PURE;
399 STDMETHOD(GetTexture)(THIS_ LPDIRECT3DRMTEXTURE *) PURE;
400 STDMETHOD(GetMaterial)(THIS_ LPDIRECT3DRMMATERIAL *) PURE;
401
402 STDMETHOD_(int, GetVertexCount)(THIS) PURE;
403 STDMETHOD_(int, GetVertexIndex)(THIS_ DWORD which) PURE;
404 STDMETHOD_(int, GetTextureCoordinateIndex)(THIS_ DWORD which) PURE;
405 STDMETHOD_(D3DCOLOR, GetColor)(THIS) PURE;
406 };
407
408 #undef INTERFACE
409 #define INTERFACE IDirect3DRMMeshBuilder
410
DECLARE_INTERFACE_(IDirect3DRMMeshBuilder,IDirect3DRMVisual)411 DECLARE_INTERFACE_(IDirect3DRMMeshBuilder, IDirect3DRMVisual)
412 {
413 IUNKNOWN_METHODS(PURE);
414 IDIRECT3DRMOBJECT_METHODS(PURE);
415
416 /*
417 * IDirect3DRMMeshBuilder methods
418 */
419 STDMETHOD(Load)(THIS_ LPVOID filename, LPVOID name, D3DRMLOADOPTIONS loadflags, D3DRMLOADTEXTURECALLBACK, LPVOID lpArg) PURE;
420 STDMETHOD(Save)(THIS_ const char *filename, D3DRMXOFFORMAT, D3DRMSAVEOPTIONS save) PURE;
421 STDMETHOD(Scale)(THIS_ D3DVALUE sx, D3DVALUE sy, D3DVALUE sz) PURE;
422 STDMETHOD(Translate)(THIS_ D3DVALUE tx, D3DVALUE ty, D3DVALUE tz) PURE;
423 STDMETHOD(SetColorSource)(THIS_ D3DRMCOLORSOURCE) PURE;
424 STDMETHOD(GetBox)(THIS_ D3DRMBOX *) PURE;
425 STDMETHOD(GenerateNormals)(THIS) PURE;
426 STDMETHOD_(D3DRMCOLORSOURCE, GetColorSource)(THIS) PURE;
427
428 STDMETHOD(AddMesh)(THIS_ LPDIRECT3DRMMESH) PURE;
429 STDMETHOD(AddMeshBuilder)(THIS_ LPDIRECT3DRMMESHBUILDER) PURE;
430 STDMETHOD(AddFrame)(THIS_ LPDIRECT3DRMFRAME) PURE;
431 STDMETHOD(AddFace)(THIS_ LPDIRECT3DRMFACE) PURE;
432 STDMETHOD(AddFaces)
433 ( THIS_ DWORD vcount, D3DVECTOR *vertices, DWORD ncount, D3DVECTOR *normals,
434 DWORD *data, LPDIRECT3DRMFACEARRAY*
435 ) PURE;
436 STDMETHOD(ReserveSpace)(THIS_ DWORD vertex_Count, DWORD normal_count, DWORD face_count) PURE;
437 STDMETHOD(SetColorRGB)(THIS_ D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE;
438 STDMETHOD(SetColor)(THIS_ D3DCOLOR) PURE;
439 STDMETHOD(SetTexture)(THIS_ LPDIRECT3DRMTEXTURE) PURE;
440 STDMETHOD(SetMaterial)(THIS_ LPDIRECT3DRMMATERIAL) PURE;
441 STDMETHOD(SetTextureTopology)(THIS_ BOOL wrap_u, BOOL wrap_v) PURE;
442 STDMETHOD(SetQuality)(THIS_ D3DRMRENDERQUALITY) PURE;
443 STDMETHOD(SetPerspective)(THIS_ BOOL) PURE;
444 STDMETHOD(SetVertex)(THIS_ DWORD index, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
445 STDMETHOD(SetNormal)(THIS_ DWORD index, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
446 STDMETHOD(SetTextureCoordinates)(THIS_ DWORD index, D3DVALUE u, D3DVALUE v) PURE;
447 STDMETHOD(SetVertexColor)(THIS_ DWORD index, D3DCOLOR) PURE;
448 STDMETHOD(SetVertexColorRGB)(THIS_ DWORD index, D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE;
449
450 STDMETHOD(GetFaces)(THIS_ LPDIRECT3DRMFACEARRAY*) PURE;
451 STDMETHOD(GetVertices)
452 ( THIS_ DWORD *vcount, D3DVECTOR *vertices, DWORD *ncount, D3DVECTOR *normals, DWORD *face_data_size, DWORD *face_data
453 ) PURE;
454 STDMETHOD(GetTextureCoordinates)(THIS_ DWORD index, D3DVALUE *u, D3DVALUE *v) PURE;
455
456 STDMETHOD_(int, AddVertex)(THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
457 STDMETHOD_(int, AddNormal)(THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
458 STDMETHOD(CreateFace)(THIS_ LPDIRECT3DRMFACE*) PURE;
459 STDMETHOD_(D3DRMRENDERQUALITY, GetQuality)(THIS) PURE;
460 STDMETHOD_(BOOL, GetPerspective)(THIS) PURE;
461 STDMETHOD_(int, GetFaceCount)(THIS) PURE;
462 STDMETHOD_(int, GetVertexCount)(THIS) PURE;
463 STDMETHOD_(D3DCOLOR, GetVertexColor)(THIS_ DWORD index) PURE;
464
465 STDMETHOD(CreateMesh)(THIS_ LPDIRECT3DRMMESH*) PURE;
466 };
467
468 #undef INTERFACE
469 #define INTERFACE IDirect3DRMLight
470
DECLARE_INTERFACE_(IDirect3DRMLight,IDirect3DRMObject)471 DECLARE_INTERFACE_(IDirect3DRMLight, IDirect3DRMObject)
472 {
473 IUNKNOWN_METHODS(PURE);
474 IDIRECT3DRMOBJECT_METHODS(PURE);
475
476 /*
477 * IDirect3DRMLight methods
478 */
479 STDMETHOD(SetType)(THIS_ D3DRMLIGHTTYPE) PURE;
480 STDMETHOD(SetColor)(THIS_ D3DCOLOR) PURE;
481 STDMETHOD(SetColorRGB)(THIS_ D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE;
482 STDMETHOD(SetRange)(THIS_ D3DVALUE) PURE;
483 STDMETHOD(SetUmbra)(THIS_ D3DVALUE) PURE;
484 STDMETHOD(SetPenumbra)(THIS_ D3DVALUE) PURE;
485 STDMETHOD(SetConstantAttenuation)(THIS_ D3DVALUE) PURE;
486 STDMETHOD(SetLinearAttenuation)(THIS_ D3DVALUE) PURE;
487 STDMETHOD(SetQuadraticAttenuation)(THIS_ D3DVALUE) PURE;
488
489 STDMETHOD_(D3DVALUE, GetRange)(THIS) PURE;
490 STDMETHOD_(D3DVALUE, GetUmbra)(THIS) PURE;
491 STDMETHOD_(D3DVALUE, GetPenumbra)(THIS) PURE;
492 STDMETHOD_(D3DVALUE, GetConstantAttenuation)(THIS) PURE;
493 STDMETHOD_(D3DVALUE, GetLinearAttenuation)(THIS) PURE;
494 STDMETHOD_(D3DVALUE, GetQuadraticAttenuation)(THIS) PURE;
495 STDMETHOD_(D3DCOLOR, GetColor)(THIS) PURE;
496 STDMETHOD_(D3DRMLIGHTTYPE, GetType)(THIS) PURE;
497
498 STDMETHOD(SetEnableFrame)(THIS_ LPDIRECT3DRMFRAME) PURE;
499 STDMETHOD(GetEnableFrame)(THIS_ LPDIRECT3DRMFRAME*) PURE;
500 };
501
502 #undef INTERFACE
503 #define INTERFACE IDirect3DRMTexture
504
DECLARE_INTERFACE_(IDirect3DRMTexture,IDirect3DRMVisual)505 DECLARE_INTERFACE_(IDirect3DRMTexture, IDirect3DRMVisual)
506 {
507 IUNKNOWN_METHODS(PURE);
508 IDIRECT3DRMOBJECT_METHODS(PURE);
509
510 /*
511 * IDirect3DRMTexture methods
512 */
513 STDMETHOD(InitFromFile)(THIS_ const char *filename) PURE;
514 STDMETHOD(InitFromSurface)(THIS_ LPDIRECTDRAWSURFACE lpDDS) PURE;
515 STDMETHOD(InitFromResource)(THIS_ HRSRC) PURE;
516 STDMETHOD(Changed)(THIS_ BOOL pixels, BOOL palette) PURE;
517
518 STDMETHOD(SetColors)(THIS_ DWORD) PURE;
519 STDMETHOD(SetShades)(THIS_ DWORD) PURE;
520 STDMETHOD(SetDecalSize)(THIS_ D3DVALUE width, D3DVALUE height) PURE;
521 STDMETHOD(SetDecalOrigin)(THIS_ LONG x, LONG y) PURE;
522 STDMETHOD(SetDecalScale)(THIS_ DWORD) PURE;
523 STDMETHOD(SetDecalTransparency)(THIS_ BOOL) PURE;
524 STDMETHOD(SetDecalTransparentColor)(THIS_ D3DCOLOR) PURE;
525
526 STDMETHOD(GetDecalSize)(THIS_ D3DVALUE *width_return, D3DVALUE *height_return) PURE;
527 STDMETHOD(GetDecalOrigin)(THIS_ LONG *x_return, LONG *y_return) PURE;
528
529 STDMETHOD_(D3DRMIMAGE *, GetImage)(THIS) PURE;
530 STDMETHOD_(DWORD, GetShades)(THIS) PURE;
531 STDMETHOD_(DWORD, GetColors)(THIS) PURE;
532 STDMETHOD_(DWORD, GetDecalScale)(THIS) PURE;
533 STDMETHOD_(BOOL, GetDecalTransparency)(THIS) PURE;
534 STDMETHOD_(D3DCOLOR, GetDecalTransparentColor)(THIS) PURE;
535 };
536
537 #undef INTERFACE
538 #define INTERFACE IDirect3DRMWrap
539
DECLARE_INTERFACE_(IDirect3DRMWrap,IDirect3DRMObject)540 DECLARE_INTERFACE_(IDirect3DRMWrap, IDirect3DRMObject)
541 {
542 IUNKNOWN_METHODS(PURE);
543 IDIRECT3DRMOBJECT_METHODS(PURE);
544
545 /*
546 * IDirect3DRMWrap methods
547 */
548 STDMETHOD(Init)
549 ( THIS_ D3DRMWRAPTYPE, LPDIRECT3DRMFRAME ref,
550 D3DVALUE ox, D3DVALUE oy, D3DVALUE oz,
551 D3DVALUE dx, D3DVALUE dy, D3DVALUE dz,
552 D3DVALUE ux, D3DVALUE uy, D3DVALUE uz,
553 D3DVALUE ou, D3DVALUE ov,
554 D3DVALUE su, D3DVALUE sv
555 ) PURE;
556 STDMETHOD(Apply)(THIS_ LPDIRECT3DRMOBJECT) PURE;
557 STDMETHOD(ApplyRelative)(THIS_ LPDIRECT3DRMFRAME frame, LPDIRECT3DRMOBJECT) PURE;
558 };
559
560 #undef INTERFACE
561 #define INTERFACE IDirect3DRMMaterial
562
DECLARE_INTERFACE_(IDirect3DRMMaterial,IDirect3DRMObject)563 DECLARE_INTERFACE_(IDirect3DRMMaterial, IDirect3DRMObject)
564 {
565 IUNKNOWN_METHODS(PURE);
566 IDIRECT3DRMOBJECT_METHODS(PURE);
567
568 /*
569 * IDirect3DRMMaterial methods
570 */
571 STDMETHOD(SetPower)(THIS_ D3DVALUE power) PURE;
572 STDMETHOD(SetSpecular)(THIS_ D3DVALUE r, D3DVALUE g, D3DVALUE b) PURE;
573 STDMETHOD(SetEmissive)(THIS_ D3DVALUE r, D3DVALUE g, D3DVALUE b) PURE;
574
575 STDMETHOD_(D3DVALUE, GetPower)(THIS) PURE;
576 STDMETHOD(GetSpecular)(THIS_ D3DVALUE* r, D3DVALUE* g, D3DVALUE* b) PURE;
577 STDMETHOD(GetEmissive)(THIS_ D3DVALUE* r, D3DVALUE* g, D3DVALUE* b) PURE;
578 };
579
580 #undef INTERFACE
581 #define INTERFACE IDirect3DRMAnimation
582
DECLARE_INTERFACE_(IDirect3DRMAnimation,IDirect3DRMObject)583 DECLARE_INTERFACE_(IDirect3DRMAnimation, IDirect3DRMObject)
584 {
585 IUNKNOWN_METHODS(PURE);
586 IDIRECT3DRMOBJECT_METHODS(PURE);
587
588 /*
589 * IDirect3DRMAnimation methods
590 */
591 STDMETHOD(SetOptions)(THIS_ D3DRMANIMATIONOPTIONS flags) PURE;
592 STDMETHOD(AddRotateKey)(THIS_ D3DVALUE time, D3DRMQUATERNION *q) PURE;
593 STDMETHOD(AddPositionKey)(THIS_ D3DVALUE time, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
594 STDMETHOD(AddScaleKey)(THIS_ D3DVALUE time, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
595 STDMETHOD(DeleteKey)(THIS_ D3DVALUE time) PURE;
596 STDMETHOD(SetFrame)(THIS_ LPDIRECT3DRMFRAME frame) PURE;
597 STDMETHOD(SetTime)(THIS_ D3DVALUE time) PURE;
598
599 STDMETHOD_(D3DRMANIMATIONOPTIONS, GetOptions)(THIS) PURE;
600 };
601
602 #undef INTERFACE
603 #define INTERFACE IDirect3DRMAnimationSet
604
DECLARE_INTERFACE_(IDirect3DRMAnimationSet,IDirect3DRMObject)605 DECLARE_INTERFACE_(IDirect3DRMAnimationSet, IDirect3DRMObject)
606 {
607 IUNKNOWN_METHODS(PURE);
608 IDIRECT3DRMOBJECT_METHODS(PURE);
609
610 /*
611 * IDirect3DRMAnimationSet methods
612 */
613 STDMETHOD(AddAnimation)(THIS_ LPDIRECT3DRMANIMATION aid) PURE;
614 STDMETHOD(Load)(THIS_ LPVOID filename, LPVOID name, D3DRMLOADOPTIONS loadflags, D3DRMLOADTEXTURECALLBACK, LPVOID lpArg, LPDIRECT3DRMFRAME parent)PURE;
615 STDMETHOD(DeleteAnimation)(THIS_ LPDIRECT3DRMANIMATION aid) PURE;
616 STDMETHOD(SetTime)(THIS_ D3DVALUE time) PURE;
617 };
618
619 #undef INTERFACE
620 #define INTERFACE IDirect3DRMUserVisual
621
DECLARE_INTERFACE_(IDirect3DRMUserVisual,IDirect3DRMVisual)622 DECLARE_INTERFACE_(IDirect3DRMUserVisual, IDirect3DRMVisual)
623 {
624 IUNKNOWN_METHODS(PURE);
625 IDIRECT3DRMOBJECT_METHODS(PURE);
626
627 /*
628 * IDirect3DRMUserVisual methods
629 */
630 STDMETHOD(Init)(THIS_ D3DRMUSERVISUALCALLBACK fn, void *arg) PURE;
631 };
632
633 #undef INTERFACE
634 #define INTERFACE IDirect3DRMArray
635
DECLARE_INTERFACE_(IDirect3DRMArray,IUnknown)636 DECLARE_INTERFACE_(IDirect3DRMArray, IUnknown)
637 {
638 IUNKNOWN_METHODS(PURE);
639
640 STDMETHOD_(DWORD, GetSize)(THIS) PURE;
641 /* No GetElement method as it would get overloaded
642 * in derived classes, and overloading is
643 * a no-no in COM
644 */
645 };
646
647 #undef INTERFACE
648 #define INTERFACE IDirect3DRMDeviceArray
649
DECLARE_INTERFACE_(IDirect3DRMDeviceArray,IDirect3DRMArray)650 DECLARE_INTERFACE_(IDirect3DRMDeviceArray, IDirect3DRMArray)
651 {
652 IUNKNOWN_METHODS(PURE);
653
654 STDMETHOD_(DWORD, GetSize)(THIS) PURE;
655 STDMETHOD(GetElement)(THIS_ DWORD index, LPDIRECT3DRMDEVICE *) PURE;
656 };
657
658 #undef INTERFACE
659 #define INTERFACE IDirect3DRMFrameArray
660
DECLARE_INTERFACE_(IDirect3DRMFrameArray,IDirect3DRMArray)661 DECLARE_INTERFACE_(IDirect3DRMFrameArray, IDirect3DRMArray)
662 {
663 IUNKNOWN_METHODS(PURE);
664
665 STDMETHOD_(DWORD, GetSize)(THIS) PURE;
666 STDMETHOD(GetElement)(THIS_ DWORD index, LPDIRECT3DRMFRAME *) PURE;
667 };
668
669 #undef INTERFACE
670 #define INTERFACE IDirect3DRMViewportArray
671
DECLARE_INTERFACE_(IDirect3DRMViewportArray,IDirect3DRMArray)672 DECLARE_INTERFACE_(IDirect3DRMViewportArray, IDirect3DRMArray)
673 {
674 IUNKNOWN_METHODS(PURE);
675
676 STDMETHOD_(DWORD, GetSize)(THIS) PURE;
677 STDMETHOD(GetElement)(THIS_ DWORD index, LPDIRECT3DRMVIEWPORT *) PURE;
678 };
679
680 #undef INTERFACE
681 #define INTERFACE IDirect3DRMVisualArray
682
DECLARE_INTERFACE_(IDirect3DRMVisualArray,IDirect3DRMArray)683 DECLARE_INTERFACE_(IDirect3DRMVisualArray, IDirect3DRMArray)
684 {
685 IUNKNOWN_METHODS(PURE);
686
687 STDMETHOD_(DWORD, GetSize)(THIS) PURE;
688 STDMETHOD(GetElement)(THIS_ DWORD index, LPDIRECT3DRMVISUAL *) PURE;
689 };
690
691 #undef INTERFACE
692 #define INTERFACE IDirect3DRMPickedArray
693
DECLARE_INTERFACE_(IDirect3DRMPickedArray,IDirect3DRMArray)694 DECLARE_INTERFACE_(IDirect3DRMPickedArray, IDirect3DRMArray)
695 {
696 IUNKNOWN_METHODS(PURE);
697
698 STDMETHOD_(DWORD, GetSize)(THIS) PURE;
699 STDMETHOD(GetPick)(THIS_ DWORD index, LPDIRECT3DRMVISUAL *, LPDIRECT3DRMFRAMEARRAY *, LPD3DRMPICKDESC) PURE;
700 };
701
702 #undef INTERFACE
703 #define INTERFACE IDirect3DRMLightArray
704
DECLARE_INTERFACE_(IDirect3DRMLightArray,IDirect3DRMArray)705 DECLARE_INTERFACE_(IDirect3DRMLightArray, IDirect3DRMArray)
706 {
707 IUNKNOWN_METHODS(PURE);
708
709 STDMETHOD_(DWORD, GetSize)(THIS) PURE;
710 STDMETHOD(GetElement)(THIS_ DWORD index, LPDIRECT3DRMLIGHT *) PURE;
711 };
712
713 #undef INTERFACE
714 #define INTERFACE IDirect3DRMFaceArray
715
DECLARE_INTERFACE_(IDirect3DRMFaceArray,IDirect3DRMArray)716 DECLARE_INTERFACE_(IDirect3DRMFaceArray, IDirect3DRMArray)
717 {
718 IUNKNOWN_METHODS(PURE);
719
720 STDMETHOD_(DWORD, GetSize)(THIS) PURE;
721 STDMETHOD(GetElement)(THIS_ DWORD index, LPDIRECT3DRMFACE *) PURE;
722 };
723
724 #ifdef __cplusplus
725 };
726 #endif
727 #endif /* _D3DRMOBJ_H_ */
728