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