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 20extern "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 48WIN_TYPES(IDirect3DRMObject, DIRECT3DRMOBJECT); 49WIN_TYPES(IDirect3DRMDevice, DIRECT3DRMDEVICE); 50WIN_TYPES(IDirect3DRMViewport, DIRECT3DRMVIEWPORT); 51WIN_TYPES(IDirect3DRMFrame, DIRECT3DRMFRAME); 52WIN_TYPES(IDirect3DRMVisual, DIRECT3DRMVISUAL); 53WIN_TYPES(IDirect3DRMMesh, DIRECT3DRMMESH); 54WIN_TYPES(IDirect3DRMMeshBuilder, DIRECT3DRMMESHBUILDER); 55WIN_TYPES(IDirect3DRMFace, DIRECT3DRMFACE); 56WIN_TYPES(IDirect3DRMLight, DIRECT3DRMLIGHT); 57WIN_TYPES(IDirect3DRMTexture, DIRECT3DRMTEXTURE); 58WIN_TYPES(IDirect3DRMWrap, DIRECT3DRMWRAP); 59WIN_TYPES(IDirect3DRMMaterial, DIRECT3DRMMATERIAL); 60WIN_TYPES(IDirect3DRMAnimation, DIRECT3DRMANIMATION); 61WIN_TYPES(IDirect3DRMAnimationSet, DIRECT3DRMANIMATIONSET); 62WIN_TYPES(IDirect3DRMUserVisual, DIRECT3DRMUSERVISUAL); 63WIN_TYPES(IDirect3DRMShadow, DIRECT3DRMSHADOW); 64WIN_TYPES(IDirect3DRMArray, DIRECT3DRMOBJECTARRAY); 65WIN_TYPES(IDirect3DRMDeviceArray, DIRECT3DRMDEVICEARRAY); 66WIN_TYPES(IDirect3DRMFaceArray, DIRECT3DRMFACEARRAY); 67WIN_TYPES(IDirect3DRMViewportArray, DIRECT3DRMVIEWPORTARRAY); 68WIN_TYPES(IDirect3DRMFrameArray, DIRECT3DRMFRAMEARRAY); 69WIN_TYPES(IDirect3DRMVisualArray, DIRECT3DRMVISUALARRAY); 70WIN_TYPES(IDirect3DRMPickedArray, DIRECT3DRMPICKEDARRAY); 71WIN_TYPES(IDirect3DRMLightArray, DIRECT3DRMLIGHTARRAY); 72 73/* 74 * Direct3DRM Object classes 75 */ 76DEFINE_GUID(CLSID_CDirect3DRMDevice, 0x4fa3568e, 0x623f, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1); 77DEFINE_GUID(CLSID_CDirect3DRMViewport, 0x4fa3568f, 0x623f, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1); 78DEFINE_GUID(CLSID_CDirect3DRMFrame, 0x4fa35690, 0x623f, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1); 79DEFINE_GUID(CLSID_CDirect3DRMMesh, 0x4fa35691, 0x623f, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1); 80DEFINE_GUID(CLSID_CDirect3DRMMeshBuilder, 0x4fa35692, 0x623f, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1); 81DEFINE_GUID(CLSID_CDirect3DRMFace, 0x4fa35693, 0x623f, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1); 82DEFINE_GUID(CLSID_CDirect3DRMLight, 0x4fa35694, 0x623f, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1); 83DEFINE_GUID(CLSID_CDirect3DRMTexture, 0x4fa35695, 0x623f, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1); 84DEFINE_GUID(CLSID_CDirect3DRMWrap, 0x4fa35696, 0x623f, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1); 85DEFINE_GUID(CLSID_CDirect3DRMMaterial, 0x4fa35697, 0x623f, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1); 86DEFINE_GUID(CLSID_CDirect3DRMAnimation, 0x4fa35698, 0x623f, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1); 87DEFINE_GUID(CLSID_CDirect3DRMAnimationSet, 0x4fa35699, 0x623f, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1); 88DEFINE_GUID(CLSID_CDirect3DRMUserVisual, 0x4fa3569a, 0x623f, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1); 89DEFINE_GUID(CLSID_CDirect3DRMShadow, 0x4fa3569b, 0x623f, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1); 90 91/* 92 * Direct3DRM Object interfaces 93 */ 94DEFINE_GUID(IID_IDirect3DRMObject, 0xeb16cb00, 0xd271, 0x11ce, 0xac, 0x48, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1); 95DEFINE_GUID(IID_IDirect3DRMDevice, 0xe9e19280, 0x6e05, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1); 96DEFINE_GUID(IID_IDirect3DRMViewport, 0xeb16cb02, 0xd271, 0x11ce, 0xac, 0x48, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1); 97DEFINE_GUID(IID_IDirect3DRMFrame, 0xeb16cb03, 0xd271, 0x11ce, 0xac, 0x48, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1); 98DEFINE_GUID(IID_IDirect3DRMVisual, 0xeb16cb04, 0xd271, 0x11ce, 0xac, 0x48, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1); 99DEFINE_GUID(IID_IDirect3DRMMesh, 0xa3a80d01, 0x6e12, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1); 100DEFINE_GUID(IID_IDirect3DRMMeshBuilder, 0xa3a80d02, 0x6e12, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1); 101DEFINE_GUID(IID_IDirect3DRMFace, 0xeb16cb07, 0xd271, 0x11ce, 0xac, 0x48, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1); 102DEFINE_GUID(IID_IDirect3DRMLight, 0xeb16cb08, 0xd271, 0x11ce, 0xac, 0x48, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1); 103DEFINE_GUID(IID_IDirect3DRMTexture, 0xeb16cb09, 0xd271, 0x11ce, 0xac, 0x48, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1); 104DEFINE_GUID(IID_IDirect3DRMWrap, 0xeb16cb0a, 0xd271, 0x11ce, 0xac, 0x48, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1); 105DEFINE_GUID(IID_IDirect3DRMMaterial, 0xeb16cb0b, 0xd271, 0x11ce, 0xac, 0x48, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1); 106DEFINE_GUID(IID_IDirect3DRMAnimation, 0xeb16cb0d, 0xd271, 0x11ce, 0xac, 0x48, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1); 107DEFINE_GUID(IID_IDirect3DRMAnimationSet, 0xeb16cb0e, 0xd271, 0x11ce, 0xac, 0x48, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1); 108DEFINE_GUID(IID_IDirect3DRMDeviceArray, 0xeb16cb10, 0xd271, 0x11ce, 0xac, 0x48, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1); 109DEFINE_GUID(IID_IDirect3DRMViewportArray, 0xeb16cb11, 0xd271, 0x11ce, 0xac, 0x48, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1); 110DEFINE_GUID(IID_IDirect3DRMFrameArray, 0xeb16cb12, 0xd271, 0x11ce, 0xac, 0x48, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1); 111DEFINE_GUID(IID_IDirect3DRMVisualArray, 0xeb16cb13, 0xd271, 0x11ce, 0xac, 0x48, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1); 112DEFINE_GUID(IID_IDirect3DRMLightArray, 0xeb16cb14, 0xd271, 0x11ce, 0xac, 0x48, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1); 113DEFINE_GUID(IID_IDirect3DRMPickedArray, 0xeb16cb16, 0xd271, 0x11ce, 0xac, 0x48, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1); 114DEFINE_GUID(IID_IDirect3DRMFaceArray, 0xeb16cb17, 0xd271, 0x11ce, 0xac, 0x48, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1); 115DEFINE_GUID(IID_IDirect3DRMUserVisual, 0x59163de0, 0x6d43, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1); 116DEFINE_GUID(IID_IDirect3DRMShadow, 0xaf359780, 0x6ba3, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1); 117 118typedef void (*D3DRMOBJECTCALLBACK)(LPDIRECT3DRMOBJECT obj, LPVOID arg); 119typedef void (*D3DRMFRAMEMOVECALLBACK)(LPDIRECT3DRMFRAME obj, LPVOID arg, D3DVALUE delta); 120typedef void (*D3DRMUPDATECALLBACK)(LPDIRECT3DRMDEVICE obj, LPVOID arg, int, LPD3DRECT); 121typedef int (*D3DRMUSERVISUALCALLBACK)(LPDIRECT3DRMUSERVISUAL obj, LPVOID arg, 122 D3DRMUSERVISUALREASON reason, 123 LPDIRECT3DRMDEVICE dev, 124 LPDIRECT3DRMVIEWPORT view); 125typedef HRESULT (*D3DRMLOADTEXTURECALLBACK) 126 (char *tex_name, void *arg, LPDIRECT3DRMTEXTURE *); 127typedef void (*D3DRMLOADCALLBACK) 128 (LPDIRECT3DRMOBJECT object, REFIID objectguid, LPVOID arg); 129 130 131 132typedef 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 */ 146DECLARE_INTERFACE_(IDirect3DRMObject, IUnknown) 147{ 148 IUNKNOWN_METHODS(PURE); 149 IDIRECT3DRMOBJECT_METHODS(PURE); 150}; 151 152#undef INTERFACE 153#define INTERFACE IDirect3DRMVisual 154 155DECLARE_INTERFACE_(IDirect3DRMVisual, IDirect3DRMObject) 156{ 157 IUNKNOWN_METHODS(PURE); 158 IDIRECT3DRMOBJECT_METHODS(PURE); 159}; 160 161#undef INTERFACE 162#define INTERFACE IDirect3DRMDevice 163 164DECLARE_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 204DECLARE_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 251DECLARE_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 326DECLARE_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 359DECLARE_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 377DECLARE_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 411DECLARE_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 471DECLARE_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 505DECLARE_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 540DECLARE_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 563DECLARE_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 583DECLARE_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 605DECLARE_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 622DECLARE_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 636DECLARE_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 650DECLARE_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 661DECLARE_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 672DECLARE_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 683DECLARE_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 694DECLARE_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 705DECLARE_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 716DECLARE_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