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