include: Add some __RPC_XXX macros to help compile code using midl-generated headers.
[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(AddTranslation)(THIS_ D3DRMCOMBINETYPE, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
1613     STDMETHOD(AddScale)(THIS_ D3DRMCOMBINETYPE, D3DVALUE sx, D3DVALUE sy, D3DVALUE sz) PURE;
1614     STDMETHOD(AddRotation)(THIS_ D3DRMCOMBINETYPE, D3DVALUE x, D3DVALUE y, D3DVALUE z, D3DVALUE theta) PURE;
1615     STDMETHOD(AddVisual)(THIS_ LPUNKNOWN) PURE;
1616     STDMETHOD(GetChildren)(THIS_ LPDIRECT3DRMFRAMEARRAY *children) PURE;
1617     STDMETHOD_(D3DCOLOR, GetColor)(THIS) PURE;
1618     STDMETHOD(GetLights)(THIS_ LPDIRECT3DRMLIGHTARRAY *lights) PURE;
1619     STDMETHOD_(D3DRMMATERIALMODE, GetMaterialMode)(THIS) PURE;
1620     STDMETHOD(GetParent)(THIS_ LPDIRECT3DRMFRAME3 *) PURE;
1621     STDMETHOD(GetPosition)(THIS_ LPDIRECT3DRMFRAME3 reference, LPD3DVECTOR return_position) PURE;
1622     STDMETHOD(GetRotation)(THIS_ LPDIRECT3DRMFRAME3 reference, LPD3DVECTOR axis, LPD3DVALUE return_theta) PURE;
1623     STDMETHOD(GetScene)(THIS_ LPDIRECT3DRMFRAME3 *) PURE;
1624     STDMETHOD_(D3DRMSORTMODE, GetSortMode)(THIS) PURE;
1625     STDMETHOD(GetTexture)(THIS_ LPDIRECT3DRMTEXTURE3 *) PURE;
1626     STDMETHOD(GetTransform)(THIS_ LPDIRECT3DRMFRAME3 reference, D3DRMMATRIX4D rmMatrix) PURE;
1627     STDMETHOD(GetVelocity)(THIS_ LPDIRECT3DRMFRAME3 reference, LPD3DVECTOR return_velocity,
1628         BOOL with_rotation) PURE;
1629     STDMETHOD(GetOrientation)(THIS_ LPDIRECT3DRMFRAME3 reference, LPD3DVECTOR dir, LPD3DVECTOR up) PURE;
1630     STDMETHOD(GetVisuals)(THIS_ LPDWORD pCount, LPUNKNOWN *) PURE;
1631     STDMETHOD(InverseTransform)(THIS_ D3DVECTOR *d, D3DVECTOR *s) PURE;
1632     STDMETHOD(Load)(THIS_ LPVOID filename, LPVOID name, D3DRMLOADOPTIONS loadflags,
1633         D3DRMLOADTEXTURE3CALLBACK, LPVOID pArg) PURE;
1634     STDMETHOD(LookAt)(THIS_ LPDIRECT3DRMFRAME3 target, LPDIRECT3DRMFRAME3 reference, D3DRMFRAMECONSTRAINT) PURE;
1635     STDMETHOD(Move)(THIS_ D3DVALUE delta) PURE;
1636     STDMETHOD(DeleteChild)(THIS_ LPDIRECT3DRMFRAME3) PURE;
1637     STDMETHOD(DeleteLight)(THIS_ LPDIRECT3DRMLIGHT) PURE;
1638     STDMETHOD(DeleteMoveCallback)(THIS_ D3DRMFRAME3MOVECALLBACK, VOID *arg) PURE;
1639     STDMETHOD(DeleteVisual)(THIS_ LPUNKNOWN) PURE;
1640     STDMETHOD_(D3DCOLOR, GetSceneBackground)(THIS) PURE;
1641     STDMETHOD(GetSceneBackgroundDepth)(THIS_ LPDIRECTDRAWSURFACE *) PURE;
1642     STDMETHOD_(D3DCOLOR, GetSceneFogColor)(THIS) PURE;
1643     STDMETHOD_(BOOL, GetSceneFogEnable)(THIS) PURE;
1644     STDMETHOD_(D3DRMFOGMODE, GetSceneFogMode)(THIS) PURE;
1645     STDMETHOD(GetSceneFogParams)(THIS_ D3DVALUE *return_start, D3DVALUE *return_end,
1646         D3DVALUE *return_density) PURE;
1647     STDMETHOD(SetSceneBackground)(THIS_ D3DCOLOR) PURE;
1648     STDMETHOD(SetSceneBackgroundRGB)(THIS_ D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE;
1649     STDMETHOD(SetSceneBackgroundDepth)(THIS_ LPDIRECTDRAWSURFACE) PURE;
1650     STDMETHOD(SetSceneBackgroundImage)(THIS_ LPDIRECT3DRMTEXTURE3) PURE;
1651     STDMETHOD(SetSceneFogEnable)(THIS_ BOOL) PURE;
1652     STDMETHOD(SetSceneFogColor)(THIS_ D3DCOLOR) PURE;
1653     STDMETHOD(SetSceneFogMode)(THIS_ D3DRMFOGMODE) PURE;
1654     STDMETHOD(SetSceneFogParams)(THIS_ D3DVALUE start, D3DVALUE end, D3DVALUE density) PURE;
1655     STDMETHOD(SetColor)(THIS_ D3DCOLOR) PURE;
1656     STDMETHOD(SetColorRGB)(THIS_ D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE;
1657     STDMETHOD_(D3DRMZBUFFERMODE, GetZbufferMode)(THIS) PURE;
1658     STDMETHOD(SetMaterialMode)(THIS_ D3DRMMATERIALMODE) PURE;
1659     STDMETHOD(SetOrientation)(THIS_ LPDIRECT3DRMFRAME3 reference, D3DVALUE dx, D3DVALUE dy, D3DVALUE dz,
1660         D3DVALUE ux, D3DVALUE uy, D3DVALUE uz) PURE;
1661     STDMETHOD(SetPosition)(THIS_ LPDIRECT3DRMFRAME3 reference, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
1662     STDMETHOD(SetRotation)(THIS_ LPDIRECT3DRMFRAME3 reference, D3DVALUE x, D3DVALUE y, D3DVALUE z,
1663         D3DVALUE theta) PURE;
1664     STDMETHOD(SetSortMode)(THIS_ D3DRMSORTMODE) PURE;
1665     STDMETHOD(SetTexture)(THIS_ LPDIRECT3DRMTEXTURE3) PURE;
1666     STDMETHOD(SetVelocity)(THIS_ LPDIRECT3DRMFRAME3 reference, D3DVALUE x, D3DVALUE y, D3DVALUE z,
1667         BOOL with_rotation) PURE;
1668     STDMETHOD(SetZbufferMode)(THIS_ D3DRMZBUFFERMODE) PURE;
1669     STDMETHOD(Transform)(THIS_ D3DVECTOR *d, D3DVECTOR *s) PURE;
1670     STDMETHOD(GetBox)(THIS_ LPD3DRMBOX) PURE;
1671     STDMETHOD_(BOOL, GetBoxEnable)(THIS) PURE;
1672     STDMETHOD(GetAxes)(THIS_ LPD3DVECTOR dir, LPD3DVECTOR up);
1673     STDMETHOD(GetMaterial)(THIS_ LPDIRECT3DRMMATERIAL2 *) PURE;
1674     STDMETHOD_(BOOL, GetInheritAxes)(THIS);
1675     STDMETHOD(GetHierarchyBox)(THIS_ LPD3DRMBOX) PURE;
1676     STDMETHOD(SetBox)(THIS_ LPD3DRMBOX) PURE;
1677     STDMETHOD(SetBoxEnable)(THIS_ BOOL) PURE;
1678     STDMETHOD(SetAxes)(THIS_ D3DVALUE dx, D3DVALUE dy, D3DVALUE dz, D3DVALUE ux, D3DVALUE uy, D3DVALUE uz);
1679     STDMETHOD(SetInheritAxes)(THIS_ BOOL inherit_from_parent);
1680     STDMETHOD(SetMaterial)(THIS_ LPDIRECT3DRMMATERIAL2) PURE;
1681     STDMETHOD(SetQuaternion)(THIS_ LPDIRECT3DRMFRAME3 reference, D3DRMQUATERNION *q) PURE;
1682     STDMETHOD(RayPick)(THIS_ LPDIRECT3DRMFRAME3 reference, LPD3DRMRAY ray, DWORD flags,
1683         LPDIRECT3DRMPICKED2ARRAY *return_visuals) PURE;
1684     STDMETHOD(Save)(THIS_ LPCSTR filename, D3DRMXOFFORMAT d3dFormat, D3DRMSAVEOPTIONS d3dSaveFlags);
1685     STDMETHOD(TransformVectors)(THIS_ LPDIRECT3DRMFRAME3 reference, DWORD NumVectors,
1686         LPD3DVECTOR pDstVectors, LPD3DVECTOR pSrcVectors) PURE;
1687     STDMETHOD(InverseTransformVectors)(THIS_ LPDIRECT3DRMFRAME3 reference, DWORD NumVectors,
1688         LPD3DVECTOR pDstVectors, LPD3DVECTOR pSrcVectors) PURE;
1689     STDMETHOD(SetTraversalOptions)(THIS_ DWORD flags) PURE;
1690     STDMETHOD(GetTraversalOptions)(THIS_ LPDWORD pFlags) PURE;
1691     STDMETHOD(SetSceneFogMethod)(THIS_ DWORD flags) PURE;
1692     STDMETHOD(GetSceneFogMethod)(THIS_ LPDWORD pFlags) PURE;
1693     STDMETHOD(SetMaterialOverride)(THIS_ LPD3DRMMATERIALOVERRIDE) PURE;
1694     STDMETHOD(GetMaterialOverride)(THIS_ LPD3DRMMATERIALOVERRIDE) PURE;
1695 };
1696 #undef INTERFACE
1697
1698 #if !defined(__cplusplus) || defined(CINTERFACE)
1699 /*** IUnknown methods ***/
1700 #define IDirect3DRMFrame3_QueryInterface(p,a,b)              (p)->lpVtbl->QueryInterface(p,a,b)
1701 #define IDirect3DRMFrame3_AddRef(p)                          (p)->lpVtbl->AddRef(p)
1702 #define IDirect3DRMFrame3_Release(p)                         (p)->lpVtbl->Release(p)
1703 /*** IDirect3DRMObject methods ***/
1704 #define IDirect3DRMFrame3_Clone(p,a,b,c)                     (p)->lpVtbl->Clone(p,a,b,c)
1705 #define IDirect3DRMFrame3_AddDestroyCallback(p,a,b)          (p)->lpVtbl->AddDestroyCallback(p,a,b)
1706 #define IDirect3DRMFrame3_DeleteDestroyCallback(p,a,b)       (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
1707 #define IDirect3DRMFrame3_SetAppData(p,a)                    (p)->lpVtbl->SetAppData(p,a)
1708 #define IDirect3DRMFrame3_GetAppData(p)                      (p)->lpVtbl->GetAppData(p)
1709 #define IDirect3DRMFrame3_SetName(p,a)                       (p)->lpVtbl->SetName(p,a)
1710 #define IDirect3DRMFrame3_GetName(p,a,b)                     (p)->lpVtbl->GetName(p,a,b)
1711 #define IDirect3DRMFrame3_GetClassName(p,a,b)                (p)->lpVtbl->GetClassName(p,a,b)
1712 /*** IDirect3DRMFrame3 methods ***/
1713 #define IDirect3DRMFrame3_AddChild(p,a)                      (p)->lpVtbl->AddChild(p,a)
1714 #define IDirect3DRMFrame3_AddLight(p,a)                      (p)->lpVtbl->AddLight(p,a)
1715 #define IDirect3DRMFrame3_AddMoveCallback(p,a,b,c)           (p)->lpVtbl->AddMoveCallback(p,a,b,c)
1716 #define IDirect3DRMFrame3_AddTransform(p,a,b)                (p)->lpVtbl->AddTransform(p,a,b)
1717 #define IDirect3DRMFrame3_AddTranslation(p,a,b,c,d)          (p)->lpVtbl->AddTranslation(p,a,b,c,d)
1718 #define IDirect3DRMFrame3_AddScale(p,a,b,c,d)                (p)->lpVtbl->AddScale(p,a,b,c,d)
1719 #define IDirect3DRMFrame3_AddRotation(p,a,b,c,d,e)           (p)->lpVtbl->AddRotation(p,a,b,c,d,e)
1720 #define IDirect3DRMFrame3_AddVisual(p,a)                     (p)->lpVtbl->AddVisual(p,a)
1721 #define IDirect3DRMFrame3_GetChildren(p,a)                   (p)->lpVtbl->GetChildren(p,a)
1722 #define IDirect3DRMFrame3_GetColor(p)                        (p)->lpVtbl->GetColor(p)
1723 #define IDirect3DRMFrame3_GetLights(p,a)                     (p)->lpVtbl->GetLights(p,a)
1724 #define IDirect3DRMFrame3_GetMaterialMode(p)                 (p)->lpVtbl->GetMaterialMode(p)
1725 #define IDirect3DRMFrame3_GetParent(p,a)                     (p)->lpVtbl->GetParent(p,a)
1726 #define IDirect3DRMFrame3_GetPosition(p,a,b)                 (p)->lpVtbl->GetPosition(p,a,b)
1727 #define IDirect3DRMFrame3_GetRotation(p,a,b,c)               (p)->lpVtbl->GetRotation(p,a,b,c)
1728 #define IDirect3DRMFrame3_GetScene(p,a)                      (p)->lpVtbl->GetScene(p,a)
1729 #define IDirect3DRMFrame3_GetSortMode(p)                     (p)->lpVtbl->GetSortMode(p)
1730 #define IDirect3DRMFrame3_GetTexture(p,a)                    (p)->lpVtbl->GetTexture(p,a)
1731 #define IDirect3DRMFrame3_GetTransform(p,a,b)                (p)->lpVtbl->GetTransform(p,a,b)
1732 #define IDirect3DRMFrame3_GetVelocity(p,a,b,c)               (p)->lpVtbl->GetVelocity(p,a,b,c)
1733 #define IDirect3DRMFrame3_GetOrientation(p,a,b,c)            (p)->lpVtbl->GetOrientation(p,a,b,c)
1734 #define IDirect3DRMFrame3_GetVisuals(p,a,b)                  (p)->lpVtbl->GetVisuals(p,a,b)
1735 #define IDirect3DRMFrame3_InverseTransform(p,a,b)            (p)->lpVtbl->InverseTransform(p,a,b)
1736 #define IDirect3DRMFrame3_Load(p,a,b,c,d,e)                  (p)->lpVtbl->Load(p,a,b,c,d,e)
1737 #define IDirect3DRMFrame3_LookAt(p,a,b,c)                    (p)->lpVtbl->LookAt(p,a,b,c)
1738 #define IDirect3DRMFrame3_Move(p,a)                          (p)->lpVtbl->Move(p,a)
1739 #define IDirect3DRMFrame3_DeleteChild(p,a)                   (p)->lpVtbl->DeleteChild(p,a)
1740 #define IDirect3DRMFrame3_DeleteLight(p,a)                   (p)->lpVtbl->DeleteLight(p,a)
1741 #define IDirect3DRMFrame3_DeleteMoveCallback(p,a,b)          (p)->lpVtbl->DeleteMoveCallback(p,a,b)
1742 #define IDirect3DRMFrame3_DeleteVisual(p,a)                  (p)->lpVtbl->DeleteVisual(p,a)
1743 #define IDirect3DRMFrame3_GetSceneBackground(p)              (p)->lpVtbl->GetSceneBackground(p)
1744 #define IDirect3DRMFrame3_GetSceneBackgroundDepth(p,a)       (p)->lpVtbl->GetSceneBackgroundDepth(p,a)
1745 #define IDirect3DRMFrame3_GetSceneFogColor(p)                (p)->lpVtbl->GetSceneFogColor(p)
1746 #define IDirect3DRMFrame3_GetSceneFogEnable(p)               (p)->lpVtbl->GetSceneFogEnable(p)
1747 #define IDirect3DRMFrame3_GetSceneFogMode(p)                 (p)->lpVtbl->GetSceneFogMode(p)
1748 #define IDirect3DRMFrame3_GetSceneFogParams(p,a,b,c)         (p)->lpVtbl->GetSceneFogParams(p,a,b,c)
1749 #define IDirect3DRMFrame3_SetSceneBackground(p,a)            (p)->lpVtbl->SetSceneBackground(p,a)
1750 #define IDirect3DRMFrame3_SetSceneBackgroundRGB(p,a,b,c)     (p)->lpVtbl->SetSceneBackgroundRGB(p,a,b,c)
1751 #define IDirect3DRMFrame3_SetSceneBackgroundDepth(p,a)       (p)->lpVtbl->SetSceneBackgroundDepth(p,a)
1752 #define IDirect3DRMFrame3_SetSceneBackgroundImage(p,a)       (p)->lpVtbl->SetSceneBackgroundImage(p,a)
1753 #define IDirect3DRMFrame3_SetSceneFogEnable(p,a)             (p)->lpVtbl->SetSceneFogEnable(p,a)
1754 #define IDirect3DRMFrame3_SetSceneFogColor(p,a)              (p)->lpVtbl->SetSceneFogColor(p,a)
1755 #define IDirect3DRMFrame3_SetSceneFogMode(p,a)               (p)->lpVtbl->SetSceneFogMode(p,a)
1756 #define IDirect3DRMFrame3_SetSceneFogParams(p,a,b,c)         (p)->lpVtbl->SetSceneFogParams(p,a,b,c)
1757 #define IDirect3DRMFrame3_SetColor(p,a)                      (p)->lpVtbl->SetColor(p,a)
1758 #define IDirect3DRMFrame3_SetColorRGB(p,a,b,c)               (p)->lpVtbl->SetColorRGB(p,a,b,c)
1759 #define IDirect3DRMFrame3_GetZbufferMode(p)                  (p)->lpVtbl->GetZbufferMode(p)
1760 #define IDirect3DRMFrame3_SetMaterialMode(p,a)               (p)->lpVtbl->SetMaterialMode(p,a)
1761 #define IDirect3DRMFrame3_SetOrientation(p,a,b,c,d,e,f,g)    (p)->lpVtbl->SetOrientation(p,a,b,c,d,e,f,g)
1762 #define IDirect3DRMFrame3_SetPosition(p,a,b,c,d)             (p)->lpVtbl->SetPosition(p,a,b,c,d)
1763 #define IDirect3DRMFrame3_SetRotation(p,a,b,c,d,e)           (p)->lpVtbl->SetRotation(p,a,b,c,d,e)
1764 #define IDirect3DRMFrame3_SetSortMode(p,a)                   (p)->lpVtbl->SetSortMode(p,a)
1765 #define IDirect3DRMFrame3_SetTexture(p,a)                    (p)->lpVtbl->SetTexture(p,a)
1766 #define IDirect3DRMFrame3_SetVelocity(p,a,b,c,d,e)           (p)->lpVtbl->SetVelocity(p,a,b,c,d,e)
1767 #define IDirect3DRMFrame3_SetZbufferMode(p,a)                (p)->lpVtbl->SetZbufferMode(p,a)
1768 #define IDirect3DRMFrame3_Transform(p,a,b)                   (p)->lpVtbl->Transform(p,a,b)
1769 #define IDirect3DRMFrame3_GetBox(p,a)                        (p)->lpVtbl->GetBox(p,a)
1770 #define IDirect3DRMFrame3_GetBoxEnable(p)                    (p)->lpVtbl->GetBoxEnable(p)
1771 #define IDirect3DRMFrame3_GetAxes(p,a,b)                     (p)->lpVtbl->GetAxes(p,a,b)
1772 #define IDirect3DRMFrame3_GetMaterial(p,a)                   (p)->lpVtbl->GetMaterial(p,a)
1773 #define IDirect3DRMFrame3_GetInheritAxes(p)                  (p)->lpVtbl->GetInheritAxes(p)
1774 #define IDirect3DRMFrame3_GetHierarchyBox(p,a)               (p)->lpVtbl->GetHierarchyBox(p,a)
1775 #define IDirect3DRMFrame3_SetBox(p,a)                        (p)->lpVtbl->SetBox(p,a)
1776 #define IDirect3DRMFrame3_SetBoxEnable(p,a)                  (p)->lpVtbl->SetBoxEnable(p,a)
1777 #define IDirect3DRMFrame3_SetAxes(p,a,b,c,d,e,f)             (p)->lpVtbl->SetAxes(p,a,b,c,d,e,f)
1778 #define IDirect3DRMFrame3_SetInheritAxes(p,a)                (p)->lpVtbl->SetInheritAxes(p,a)
1779 #define IDirect3DRMFrame3_SetMaterial(p,a)                   (p)->lpVtbl->SetMaterial(p,a)
1780 #define IDirect3DRMFrame3_SetQuaternion(p,a,b)               (p)->lpVtbl->SetQuaternion(p,a,b)
1781 #define IDirect3DRMFrame3_RayPick(p,a,b,c,d)                 (p)->lpVtbl->RayPick(p,a,b,c,d)
1782 #define IDirect3DRMFrame3_Save(p,a,b,c)                      (p)->lpVtbl->Save(p,a,b,c)
1783 #define IDirect3DRMFrame3_TransformVectors(p,a,b,c,d)        (p)->lpVtbl->TransformVectors(p,a,b,c,d)
1784 #define IDirect3DRMFrame3_InverseTransformVectors(p,a,b,c,d) (p)->lpVtbl->InverseTransformVectors(p,a,b,c,d)
1785 #define IDirect3DRMFrame3_SetTraversalOptions(p,a)           (p)->lpVtbl->SetTraversalOptions(p,a)
1786 #define IDirect3DRMFrame3_GetTraversalOptions(p,a)           (p)->lpVtbl->GetTraversalOptions(p,a)
1787 #define IDirect3DRMFrame3_SetSceneFogMethod(p,a)             (p)->lpVtbl->SetSceneFogMethod(p,a)
1788 #define IDirect3DRMFrame3_GetSceneFogMethod(p,a)             (p)->lpVtbl->GetSceneFogMethod(p,a)
1789 #define IDirect3DRMFrame3_SetMaterialOverride(p,a)           (p)->lpVtbl->SetMaterialOverride(p,a)
1790 #define IDirect3DRMFrame3_GetMaterialOverride(p,a)           (p)->lpVtbl->GetMaterialOverride(p,a)
1791 #else
1792 /*** IUnknown methods ***/
1793 #define IDirect3DRMFrame3_QueryInterface(p,a,b)              (p)->QueryInterface(a,b)
1794 #define IDirect3DRMFrame3_AddRef(p)                          (p)->AddRef()
1795 #define IDirect3DRMFrame3_Release(p)                         (p)->Release()
1796 /*** IDirect3DRMObject methods ***/
1797 #define IDirect3DRMFrame3_Clone(p,a,b,c)                     (p)->Clone(a,b,c)
1798 #define IDirect3DRMFrame3_AddDestroyCallback(p,a,b)          (p)->AddDestroyCallback(a,b)
1799 #define IDirect3DRMFrame3_DeleteDestroyCallback(p,a,b)       (p)->DeleteDestroyCallback(a,b)
1800 #define IDirect3DRMFrame3_SetAppData(p,a)                    (p)->SetAppData(a)
1801 #define IDirect3DRMFrame3_GetAppData(p)                      (p)->GetAppData()
1802 #define IDirect3DRMFrame3_SetName(p,a)                       (p)->SetName(a)
1803 #define IDirect3DRMFrame3_GetName(p,a,b)                     (p)->GetName(a,b)
1804 #define IDirect3DRMFrame3_GetClassName(p,a,b)                (p)->GetClassName(a,b)
1805 /*** IDirect3DRMFrame3 methods ***/
1806 #define IDirect3DRMFrame3_AddChild(p,a)                      (p)->AddChild(a)
1807 #define IDirect3DRMFrame3_AddLight(p,a)                      (p)->AddLight(a)
1808 #define IDirect3DRMFrame3_AddMoveCallback(p,a,b,c)           (p)->AddMoveCallback(a,b,c)
1809 #define IDirect3DRMFrame3_AddTransform(p,a,b)                (p)->AddTransform(a,b)
1810 #define IDirect3DRMFrame3_AddTranslation(p,a,b,c,d)          (p)->AddTranslation(a,b,c,d)
1811 #define IDirect3DRMFrame3_AddScale(p,a,b,c,d)                (p)->AddScale(a,b,c,d)
1812 #define IDirect3DRMFrame3_AddRotation(p,a,b,c,d,e)           (p)->AddRotation(a,b,c,d,e)
1813 #define IDirect3DRMFrame3_AddVisual(p,a)                     (p)->AddVisual(a)
1814 #define IDirect3DRMFrame3_GetChildren(p,a)                   (p)->GetChildren(a)
1815 #define IDirect3DRMFrame3_GetColor(p)                        (p)->GetColor()
1816 #define IDirect3DRMFrame3_GetLights(p,a)                     (p)->GetLights(a)
1817 #define IDirect3DRMFrame3_GetMaterialMode(p)                 (p)->GetMaterialMode()
1818 #define IDirect3DRMFrame3_GetParent(p,a)                     (p)->GetParent(a)
1819 #define IDirect3DRMFrame3_GetPosition(p,a,b)                 (p)->GetPosition(a,b)
1820 #define IDirect3DRMFrame3_GetRotation(p,a,b,c)               (p)->GetRotation(a,b,c)
1821 #define IDirect3DRMFrame3_GetScene(p,a)                      (p)->GetScene(a)
1822 #define IDirect3DRMFrame3_GetSortMode(p)                     (p)->GetSortMode()
1823 #define IDirect3DRMFrame3_GetTexture(p,a)                    (p)->GetTexture(a)
1824 #define IDirect3DRMFrame3_GetTransform(p,a,b)                (p)->GetTransform(a,b)
1825 #define IDirect3DRMFrame3_GetVelocity(p,a,b,c)               (p)->GetVelocity(a,b,c)
1826 #define IDirect3DRMFrame3_GetOrientation(p,a,b,c)            (p)->GetOrientation(a,b,c)
1827 #define IDirect3DRMFrame3_GetVisuals(p,a,b)                  (p)->GetVisuals(a,b)
1828 #define IDirect3DRMFrame3_InverseTransform(p,a,b)            (p)->InverseTransform(a,b)
1829 #define IDirect3DRMFrame3_Load(p,a,b,c,d,e)                  (p)->Load(a,b,c,d,e)
1830 #define IDirect3DRMFrame3_LookAt(p,a,b,c)                    (p)->LookAt(a,b,c)
1831 #define IDirect3DRMFrame3_Move(p,a)                          (p)->Move(a)
1832 #define IDirect3DRMFrame3_DeleteChild(p,a)                   (p)->DeleteChild(a)
1833 #define IDirect3DRMFrame3_DeleteLight(p,a)                   (p)->DeleteLight(a)
1834 #define IDirect3DRMFrame3_DeleteMoveCallback(p,a,b)          (p)->DeleteMoveCallback(a,b)
1835 #define IDirect3DRMFrame3_DeleteVisual(p,a)                  (p)->DeleteVisual(a)
1836 #define IDirect3DRMFrame3_GetSceneBackground(p)              (p)->GetSceneBackground()
1837 #define IDirect3DRMFrame3_GetSceneBackgroundDepth(p,a)       (p)->GetSceneBackgroundDepth(a)
1838 #define IDirect3DRMFrame3_GetSceneFogColor(p)                (p)->GetSceneFogColor()
1839 #define IDirect3DRMFrame3_GetSceneFogEnable(p)               (p)->GetSceneFogEnable()
1840 #define IDirect3DRMFrame3_GetSceneFogMode(p)                 (p)->GetSceneFogMode()
1841 #define IDirect3DRMFrame3_GetSceneFogParams(p,a,b,c)         (p)->GetSceneFogParams(a,b,c)
1842 #define IDirect3DRMFrame3_SetSceneBackground(p,a)            (p)->SetSceneBackground(a)
1843 #define IDirect3DRMFrame3_SetSceneBackgroundRGB(p,a,b,c)     (p)->SetSceneBackgroundRGB(a,b,c)
1844 #define IDirect3DRMFrame3_SetSceneBackgroundDepth(p,a)       (p)->SetSceneBackgroundDepth(a)
1845 #define IDirect3DRMFrame3_SetSceneBackgroundImage(p,a)       (p)->SetSceneBackgroundImage(a)
1846 #define IDirect3DRMFrame3_SetSceneFogEnable(p,a)             (p)->SetSceneFogEnable(a)
1847 #define IDirect3DRMFrame3_SetSceneFogColor(p,a)              (p)->SetSceneFogColor(a)
1848 #define IDirect3DRMFrame3_SetSceneFogMode(p,a)               (p)->SetSceneFogMode(a)
1849 #define IDirect3DRMFrame3_SetSceneFogParams(p,a,b,c)         (p)->SetSceneFogParams(a,b,c)
1850 #define IDirect3DRMFrame3_SetColor(p,a)                      (p)->SetColor(a)
1851 #define IDirect3DRMFrame3_SetColorRGB(p,a,b,c)               (p)->SetColorRGB(a,b,c)
1852 #define IDirect3DRMFrame3_GetZbufferMode(p)                  (p)->GetZbufferMode()
1853 #define IDirect3DRMFrame3_SetMaterialMode(p,a)               (p)->SetMaterialMode(a)
1854 #define IDirect3DRMFrame3_SetOrientation(p,a,b,c,d,e,f,g)    (p)->SetOrientation(a,b,c,d,e,f,g)
1855 #define IDirect3DRMFrame3_SetPosition(p,a,b,c,d)             (p)->SetPosition(a,b,c,d)
1856 #define IDirect3DRMFrame3_SetRotation(p,a,b,c,d,e)           (p)->SetRotation(a,b,c,d,e)
1857 #define IDirect3DRMFrame3_SetSortMode(p,a)                   (p)->SetSortMode(a)
1858 #define IDirect3DRMFrame3_SetTexture(p,a)                    (p)->SetTexture(a)
1859 #define IDirect3DRMFrame3_SetVelocity(p,a,b,c,d,e)           (p)->SetVelocity(a,b,c,d,e)
1860 #define IDirect3DRMFrame3_SetZbufferMode(p,a)                (p)->SetZbufferMode(a)
1861 #define IDirect3DRMFrame3_Transform(p,a,b)                   (p)->Transform(a,b)
1862 #define IDirect3DRMFrame3_GetBox(p,a)                        (p)->GetBox(a)
1863 #define IDirect3DRMFrame3_GetBoxEnable(p)                    (p)->GetBoxEnable()
1864 #define IDirect3DRMFrame3_GetAxes(p,a,b)                     (p)->GetAxes(a,b)
1865 #define IDirect3DRMFrame3_GetMaterial(p,a)                   (p)->GetMaterial(a)
1866 #define IDirect3DRMFrame3_GetInheritAxes(p)                  (p)->GetInheritAxes()
1867 #define IDirect3DRMFrame3_GetHierarchyBox(p,a)               (p)->GetHierarchyBox(a)
1868 #define IDirect3DRMFrame3_SetBox(p,a)                        (p)->SetBox(a)
1869 #define IDirect3DRMFrame3_SetBoxEnable(p,a)                  (p)->SetBoxEnable(a)
1870 #define IDirect3DRMFrame3_SetAxes(p,a,b,c,d,e,f)             (p)->SetAxes(a,b,c,d,e,f)
1871 #define IDirect3DRMFrame3_SetInheritAxes(p,a)                (p)->SetInheritAxes(a)
1872 #define IDirect3DRMFrame3_SetMaterial(p,a)                   (p)->SetMaterial(a)
1873 #define IDirect3DRMFrame3_SetQuaternion(p,a,b)               (p)->SetQuaternion(a,b)
1874 #define IDirect3DRMFrame3_RayPick(p,a,b,c,d)                 (p)->RayPick(a,b,c,d)
1875 #define IDirect3DRMFrame3_Save(p,a,b,c)                      (p)->Save(a,b,c)
1876 #define IDirect3DRMFrame3_TransformVectors(p,a,b,c,d)        (p)->TransformVectors(a,b,c,d)
1877 #define IDirect3DRMFrame3_InverseTransformVectors(p,a,b,c,d) (p)->InverseTransformVectors(a,b,c,d)
1878 #define IDirect3DRMFrame3_SetTraversalOptions(p,a)           (p)->SetTraversalOptions(a)
1879 #define IDirect3DRMFrame3_GetTraversalOptions(p,a)           (p)->GetTraversalOptions(a)
1880 #define IDirect3DRMFrame3_SetSceneFogMethod(p,a)             (p)->SetSceneFogMethod(a)
1881 #define IDirect3DRMFrame3_GetSceneFogMethod(p,a)             (p)->GetSceneFogMethod(a)
1882 #define IDirect3DRMFrame3_SetMaterialOverride(p,a)           (p)->SetMaterialOverride(a)
1883 #define IDirect3DRMFrame3_GetMaterialOverride(p,a)           (p)->GetMaterialOverride(a)
1884 #endif
1885
1886 /*****************************************************************************
1887  * IDirect3DRMMesh interface
1888  */
1889 #define INTERFACE IDirect3DRMMesh
1890 DECLARE_INTERFACE_(IDirect3DRMMesh,IDirect3DRMVisual)
1891 {
1892     /*** IUnknown methods ***/
1893     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
1894     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
1895     STDMETHOD_(ULONG,Release)(THIS) PURE;
1896     /*** IDirect3DRMObject methods ***/
1897     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
1898     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
1899     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
1900     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
1901     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
1902     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
1903     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
1904     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
1905     /*** IDirect3DRMMesh methods ***/
1906     STDMETHOD(Scale)(THIS_ D3DVALUE sx, D3DVALUE sy, D3DVALUE sz) PURE;
1907     STDMETHOD(Translate)(THIS_ D3DVALUE tx, D3DVALUE ty, D3DVALUE tz) PURE;
1908     STDMETHOD(GetBox)(THIS_ D3DRMBOX *) PURE;
1909     STDMETHOD(AddGroup)(THIS_ unsigned vCount, unsigned fCount, unsigned vPerFace, unsigned *fData,
1910         D3DRMGROUPINDEX *returnId) PURE;
1911     STDMETHOD(SetVertices)(THIS_ D3DRMGROUPINDEX id, unsigned index, unsigned count,
1912         D3DRMVERTEX *values) PURE;
1913     STDMETHOD(SetGroupColor)(THIS_ D3DRMGROUPINDEX id, D3DCOLOR value) PURE;
1914     STDMETHOD(SetGroupColorRGB)(THIS_ D3DRMGROUPINDEX id, D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE;
1915     STDMETHOD(SetGroupMapping)(THIS_ D3DRMGROUPINDEX id, D3DRMMAPPING value) PURE;
1916     STDMETHOD(SetGroupQuality)(THIS_ D3DRMGROUPINDEX id, D3DRMRENDERQUALITY value) PURE;
1917     STDMETHOD(SetGroupMaterial)(THIS_ D3DRMGROUPINDEX id, LPDIRECT3DRMMATERIAL value) PURE;
1918     STDMETHOD(SetGroupTexture)(THIS_ D3DRMGROUPINDEX id, LPDIRECT3DRMTEXTURE value) PURE;
1919     STDMETHOD_(unsigned, GetGroupCount)(THIS) PURE;
1920     STDMETHOD(GetGroup)(THIS_ D3DRMGROUPINDEX id, unsigned *vCount, unsigned *fCount, unsigned *vPerFace,
1921         DWORD *fDataSize, unsigned *fData) PURE;
1922     STDMETHOD(GetVertices)(THIS_ D3DRMGROUPINDEX id, DWORD index, DWORD count, D3DRMVERTEX *returnPtr) PURE;
1923     STDMETHOD_(D3DCOLOR, GetGroupColor)(THIS_ D3DRMGROUPINDEX id) PURE;
1924     STDMETHOD_(D3DRMMAPPING, GetGroupMapping)(THIS_ D3DRMGROUPINDEX id) PURE;
1925     STDMETHOD_(D3DRMRENDERQUALITY, GetGroupQuality)(THIS_ D3DRMGROUPINDEX id) PURE;
1926     STDMETHOD(GetGroupMaterial)(THIS_ D3DRMGROUPINDEX id, LPDIRECT3DRMMATERIAL *returnPtr) PURE;
1927     STDMETHOD(GetGroupTexture)(THIS_ D3DRMGROUPINDEX id, LPDIRECT3DRMTEXTURE *returnPtr) PURE;
1928 };
1929 #undef INTERFACE
1930
1931 #if !defined(__cplusplus) || defined(CINTERFACE)
1932 /*** IUnknown methods ***/
1933 #define IDirect3DRMMesh_QueryInterface(p,a,b)              (p)->lpVtbl->QueryInterface(p,a,b)
1934 #define IDirect3DRMMesh_AddRef(p)                          (p)->lpVtbl->AddRef(p)
1935 #define IDirect3DRMMesh_Release(p)                         (p)->lpVtbl->Release(p)
1936 /*** IDirect3DRMObject methods ***/
1937 #define IDirect3DRMMesh_Clone(p,a,b,c)                     (p)->lpVtbl->Clone(p,a,b,c)
1938 #define IDirect3DRMMesh_AddDestroyCallback(p,a,b)          (p)->lpVtbl->AddDestroyCallback(p,a,b)
1939 #define IDirect3DRMMesh_DeleteDestroyCallback(p,a,b)       (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
1940 #define IDirect3DRMMesh_SetAppData(p,a)                    (p)->lpVtbl->SetAppData(p,a)
1941 #define IDirect3DRMMesh_GetAppData(p)                      (p)->lpVtbl->GetAppData(p)
1942 #define IDirect3DRMMesh_SetName(p,a)                       (p)->lpVtbl->SetName(p,a)
1943 #define IDirect3DRMMesh_GetName(p,a,b)                     (p)->lpVtbl->GetName(p,a,b)
1944 #define IDirect3DRMMesh_GetClassName(p,a,b)                (p)->lpVtbl->GetClassName(p,a,b)
1945 /*** IDirect3DRMMesh methods ***/
1946 #define IDirect3DRMMesh_Scale(p,a,b,c)                     (p)->lpVtbl->Scale(p,a,b,c)
1947 #define IDirect3DRMMesh_Translate(p,a,b,c)                 (p)->lpVtbl->Translate(p,a,b,c)
1948 #define IDirect3DRMMesh_GetBox(p,a)                        (p)->lpVtbl->GetBox(p,a)
1949 #define IDirect3DRMMesh_AddGroup(p,a,b,c,d,e)              (p)->lpVtbl->AddGroup(p,a,b,c,d,e)
1950 #define IDirect3DRMMesh_SetVertices(p,a,b,c,d)             (p)->lpVtbl->SetVertices(p,a,b,c,d)
1951 #define IDirect3DRMMesh_SetGroupColor(p,a,b)               (p)->lpVtbl->SetGroupColor(p,a,b)
1952 #define IDirect3DRMMesh_SetGroupColorRGB(p,a,b,c,d)        (p)->lpVtbl->SetGroupColorRGB(p,a,b,c,d)
1953 #define IDirect3DRMMesh_SetGroupMapping(p,a,b)             (p)->lpVtbl->SetGroupMapping(p,a,b)
1954 #define IDirect3DRMMesh_SetGroupQuality(p,a,b)             (p)->lpVtbl->SetGroupQuality(p,a,b)
1955 #define IDirect3DRMMesh_SetGroupMaterial(p,a,b)            (p)->lpVtbl->SetGroupMaterial(p,a,b)
1956 #define IDirect3DRMMesh_SetGroupTexture(p,a,b)             (p)->lpVtbl->SetGroupTexture(p,a,b)
1957 #define IDirect3DRMMesh_GetGroupCount(p)                   (p)->lpVtbl->GetGroupCount(p)
1958 #define IDirect3DRMMesh_GetGroup(p,a,b,c,d,e,f)            (p)->lpVtbl->GetGroup(p,a,b,c,d,e,f)
1959 #define IDirect3DRMMesh_GetVertices(p,a,b,c,d)             (p)->lpVtbl->GetVertices(p,a,b,c,d)
1960 #define IDirect3DRMMesh_GetGroupColor(p,a)                 (p)->lpVtbl->GetGroupColor(p,a)
1961 #define IDirect3DRMMesh_GetGroupMapping(p,a)               (p)->lpVtbl->GetGroupMapping(p,a)
1962 #define IDirect3DRMMesh_GetGroupQuality(p,a)               (p)->lpVtbl->GetGroupQuality(p,a)
1963 #define IDirect3DRMMesh_GetGroupMaterial(p,a,b)            (p)->lpVtbl->GetGroupMaterial(p,a,b)
1964 #define IDirect3DRMMesh_GetGroupTexture(p,a,b)             (p)->lpVtbl->GetGroupTexture(p,a,b)
1965 #else
1966 /*** IUnknown methods ***/
1967 #define IDirect3DRMMesh_QueryInterface(p,a,b)              (p)->QueryInterface(a,b)
1968 #define IDirect3DRMMesh_AddRef(p)                          (p)->AddRef()
1969 #define IDirect3DRMMesh_Release(p)                         (p)->Release()
1970 /*** IDirect3DRMObject methods ***/
1971 #define IDirect3DRMMesh_Clone(p,a,b,c)                     (p)->Clone(a,b,c)
1972 #define IDirect3DRMMesh_AddDestroyCallback(p,a,b)          (p)->AddDestroyCallback(a,b)
1973 #define IDirect3DRMMesh_DeleteDestroyCallback(p,a,b)       (p)->DeleteDestroyCallback(a,b)
1974 #define IDirect3DRMMesh_SetAppData(p,a)                    (p)->SetAppData(a)
1975 #define IDirect3DRMMesh_GetAppData(p)                      (p)->GetAppData()
1976 #define IDirect3DRMMesh_SetName(p,a)                       (p)->SetName(a)
1977 #define IDirect3DRMMesh_GetName(p,a,b)                     (p)->GetName(a,b)
1978 #define IDirect3DRMMesh_GetClassName(p,a,b)                (p)->GetClassName(a,b)
1979 /*** IDirect3DRMMesh methods ***/
1980 #define IDirect3DRMMesh_Scale(p,a,b,c)                     (p)->Scale(a,b,c)
1981 #define IDirect3DRMMesh_Translate(p,a,b,c)                 (p)->Translate(a,b,c)
1982 #define IDirect3DRMMesh_GetBox(p,a)                        (p)->GetBox(a)
1983 #define IDirect3DRMMesh_AddGroup(p,a,b,c,d,e)              (p)->AddGroup(a,b,c,d,e)
1984 #define IDirect3DRMMesh_SetVertices(p,a,b,c,d)             (p)->SetVertices(a,b,c,d)
1985 #define IDirect3DRMMesh_SetGroupColor(p,a,b)               (p)->SetGroupColor(a,b)
1986 #define IDirect3DRMMesh_SetGroupColorRGB(p,a,b,c,d)        (p)->SetGroupColorRGB(a,b,c,d)
1987 #define IDirect3DRMMesh_SetGroupMapping(p,a,b)             (p)->SetGroupMapping(a,b)
1988 #define IDirect3DRMMesh_SetGroupQuality(p,a,b)             (p)->SetGroupQuality(a,b)
1989 #define IDirect3DRMMesh_SetGroupMaterial(p,a,b)            (p)->SetGroupMaterial(a,b)
1990 #define IDirect3DRMMesh_SetGroupTexture(p,a,b)             (p)->SetGroupTexture(a,b)
1991 #define IDirect3DRMMesh_GetGroupCount(p)                   (p)->GetGroupCount()
1992 #define IDirect3DRMMesh_GetGroup(p,a,b,c,d,e,f)            (p)->GetGroup(a,b,c,d,e,f)
1993 #define IDirect3DRMMesh_GetVertices(p,a,b,c,d)             (p)->GetVertices(a,b,c,d)
1994 #define IDirect3DRMMesh_GetGroupColor(p,a)                 (p)->GetGroupColor(a)
1995 #define IDirect3DRMMesh_GetGroupMapping(p,a)               (p)->GetGroupMapping(a)
1996 #define IDirect3DRMMesh_GetGroupQuality(p,a)               (p)->GetGroupQuality(a)
1997 #define IDirect3DRMMesh_GetGroupMaterial(p,a,b)            (p)->GetGroupMaterial(a,b)
1998 #define IDirect3DRMMesh_GetGroupTexture(p,a,b)             (p)->GetGroupTexture(a,b)
1999 #endif
2000
2001 /*****************************************************************************
2002  * IDirect3DRMProgressiveMesh interface
2003  */
2004 #define INTERFACE IDirect3DRMProgressiveMesh
2005 DECLARE_INTERFACE_(IDirect3DRMProgressiveMesh,IDirect3DRMVisual)
2006 {
2007     /*** IUnknown methods ***/
2008     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
2009     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
2010     STDMETHOD_(ULONG,Release)(THIS) PURE;
2011     /*** IDirect3DRMObject methods ***/
2012     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
2013     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
2014     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
2015     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
2016     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
2017     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
2018     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
2019     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
2020     /*** IDirect3DRMProgressiveMesh methods ***/
2021     STDMETHOD(Load) (THIS_ LPVOID pObjLocation, LPVOID pObjId, D3DRMLOADOPTIONS dloLoadflags,
2022         D3DRMLOADTEXTURECALLBACK pCallback, LPVOID lpArg) PURE;
2023     STDMETHOD(GetLoadStatus) (THIS_ LPD3DRMPMESHLOADSTATUS pStatus) PURE;
2024     STDMETHOD(SetMinRenderDetail) (THIS_ D3DVALUE d3dVal) PURE;
2025     STDMETHOD(Abort) (THIS_ DWORD flags) PURE;
2026     STDMETHOD(GetFaceDetail) (THIS_ LPDWORD pCount) PURE;
2027     STDMETHOD(GetVertexDetail) (THIS_ LPDWORD pCount) PURE;
2028     STDMETHOD(SetFaceDetail) (THIS_ DWORD count) PURE;
2029     STDMETHOD(SetVertexDetail) (THIS_ DWORD count) PURE;
2030     STDMETHOD(GetFaceDetailRange) (THIS_ LPDWORD pMin, LPDWORD pMax) PURE;
2031     STDMETHOD(GetVertexDetailRange) (THIS_ LPDWORD pMin, LPDWORD pMax) PURE;
2032     STDMETHOD(GetDetail) (THIS_ D3DVALUE *pdvVal) PURE;
2033     STDMETHOD(SetDetail) (THIS_ D3DVALUE d3dVal) PURE;
2034     STDMETHOD(RegisterEvents) (THIS_ HANDLE event, DWORD flags, DWORD reserved) PURE;
2035     STDMETHOD(CreateMesh) (THIS_ LPDIRECT3DRMMESH *ppD3DRMMesh) PURE;
2036     STDMETHOD(Duplicate) (THIS_ LPDIRECT3DRMPROGRESSIVEMESH *ppD3DRMPMesh) PURE;
2037     STDMETHOD(GetBox) (THIS_ LPD3DRMBOX pBBox) PURE;
2038     STDMETHOD(SetQuality) (THIS_ D3DRMRENDERQUALITY) PURE;
2039     STDMETHOD(GetQuality) (THIS_ LPD3DRMRENDERQUALITY pQuality) PURE;
2040 };
2041 #undef INTERFACE
2042
2043 #if !defined(__cplusplus) || defined(CINTERFACE)
2044 /*** IUnknown methods ***/
2045 #define IDirect3DRMProgressiveMesh_QueryInterface(p,a,b)          (p)->lpVtbl->QueryInterface(p,a,b)
2046 #define IDirect3DRMProgressiveMesh_AddRef(p)                      (p)->lpVtbl->AddRef(p)
2047 #define IDirect3DRMProgressiveMesh_Release(p)                     (p)->lpVtbl->Release(p)
2048 /*** IDirect3DRMObject methods ***/
2049 #define IDirect3DRMProgressiveMesh_Clone(p,a,b,c)                 (p)->lpVtbl->Clone(p,a,b,c)
2050 #define IDirect3DRMProgressiveMesh_AddDestroyCallback(p,a,b)      (p)->lpVtbl->AddDestroyCallback(p,a,b)
2051 #define IDirect3DRMProgressiveMesh_DeleteDestroyCallback(p,a,b)   (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
2052 #define IDirect3DRMProgressiveMesh_SetAppData(p,a)                (p)->lpVtbl->SetAppData(p,a)
2053 #define IDirect3DRMProgressiveMesh_GetAppData(p)                  (p)->lpVtbl->GetAppData(p)
2054 #define IDirect3DRMProgressiveMesh_SetName(p,a)                   (p)->lpVtbl->SetName(p,a)
2055 #define IDirect3DRMProgressiveMesh_GetName(p,a,b)                 (p)->lpVtbl->GetName(p,a,b)
2056 #define IDirect3DRMProgressiveMesh_GetClassName(p,a,b)            (p)->lpVtbl->GetClassName(p,a,b)
2057 /*** IDirect3DRMProgressiveMesh methods ***/
2058 #define IDirect3DRMProgressiveMesh_Load(p,a,b,c,d,e)              (p)->lpVtbl->Load(p,a,b,c,d,e)
2059 #define IDirect3DRMProgressiveMesh_GetLoadStatus(p,a)             (p)->lpVtbl->GetLoadStatus(p,a)
2060 #define IDirect3DRMProgressiveMesh_SetMinRenderDetail(p,a)        (p)->lpVtbl->SetMinRenderDetail(p,a)
2061 #define IDirect3DRMProgressiveMesh_Abort(p,a)                     (p)->lpVtbl->Abort(p,a)
2062 #define IDirect3DRMProgressiveMesh_GetFaceDetail(p,a)             (p)->lpVtbl->GetFaceDetail(p,a)
2063 #define IDirect3DRMProgressiveMesh_GetVertexDetail(p,a)           (p)->lpVtbl->GetVertexDetail(p,a)
2064 #define IDirect3DRMProgressiveMesh_SetFaceDetail(p,a)             (p)->lpVtbl->SetFaceDetail(p,a)
2065 #define IDirect3DRMProgressiveMesh_SetVertexDetail(p,a)           (p)->lpVtbl->SetVertexDetail(p,a)
2066 #define IDirect3DRMProgressiveMesh_GetFaceDetailRange(p,a,b)      (p)->lpVtbl->GetFaceDetailRange(p,a,b)
2067 #define IDirect3DRMProgressiveMesh_GetVertexDetailRange(p,a,b)    (p)->lpVtbl->GetVertexDetailRange(p,a,b)
2068 #define IDirect3DRMProgressiveMesh_GetDetail(p,a)                 (p)->lpVtbl->GetDetail(p,a)
2069 #define IDirect3DRMProgressiveMesh_SetDetail(p,a)                 (p)->lpVtbl->SetDetail(p,a)
2070 #define IDirect3DRMProgressiveMesh_RegisterEvents(p,a,b,c)        (p)->lpVtbl->RegisterEvents(p,a,b,c)
2071 #define IDirect3DRMProgressiveMesh_CreateMesh(p,a)                (p)->lpVtbl->CreateMesh(p,a)
2072 #define IDirect3DRMProgressiveMesh_Duplicate(p,a)                 (p)->lpVtbl->Duplicate(p,a)
2073 #define IDirect3DRMProgressiveMesh_GetBox(p,a)                    (p)->lpVtbl->GetBox(p,a)
2074 #define IDirect3DRMProgressiveMesh_SetQuality(p,a)                (p)->lpVtbl->SetQuality(p,a)
2075 #define IDirect3DRMProgressiveMesh_GetQuality(p,a)                (p)->lpVtbl->GetQuality(p,a)
2076 #else
2077 /*** IUnknown methods ***/
2078 #define IDirect3DRMProgressiveMesh_QueryInterface(p,a,b)          (p)->QueryInterface(a,b)
2079 #define IDirect3DRMProgressiveMesh_AddRef(p)                      (p)->AddRef()
2080 #define IDirect3DRMProgressiveMesh_Release(p)                     (p)->Release()
2081 /*** IDirect3DRMObject methods ***/
2082 #define IDirect3DRMProgressiveMesh_Clone(p,a,b,c)                 (p)->Clone(a,b,c)
2083 #define IDirect3DRMProgressiveMesh_AddDestroyCallback(p,a,b)      (p)->AddDestroyCallback(a,b)
2084 #define IDirect3DRMProgressiveMesh_DeleteDestroyCallback(p,a,b)   (p)->DeleteDestroyCallback(a,b)
2085 #define IDirect3DRMProgressiveMesh_SetAppData(p,a)                (p)->SetAppData(a)
2086 #define IDirect3DRMProgressiveMesh_GetAppData(p)                  (p)->GetAppData()
2087 #define IDirect3DRMProgressiveMesh_SetName(p,a)                   (p)->SetName(a)
2088 #define IDirect3DRMProgressiveMesh_GetName(p,a,b)                 (p)->GetName(a,b)
2089 #define IDirect3DRMProgressiveMesh_GetClassName(p,a,b)            (p)->GetClassName(a,b)
2090 /*** IDirect3DRMProgressiveMesh methods ***/
2091 #define IDirect3DRMProgressiveMesh_Load(p,a,b,c,d,e)              (p)->Load(a,b,c,d,e)
2092 #define IDirect3DRMProgressiveMesh_GetLoadStatus(p,a)             (p)->GetLoadStatus(a)
2093 #define IDirect3DRMProgressiveMesh_SetMinRenderDetail(p,a)        (p)->SetMinRenderDetail(a)
2094 #define IDirect3DRMProgressiveMesh_Abort(p,a)                     (p)->Abort(a)
2095 #define IDirect3DRMProgressiveMesh_GetFaceDetail(p,a)             (p)->GetFaceDetail(a)
2096 #define IDirect3DRMProgressiveMesh_GetVertexDetail(p,a)           (p)->GetVertexDetail(a)
2097 #define IDirect3DRMProgressiveMesh_SetFaceDetail(p,a)             (p)->SetFaceDetail(a)
2098 #define IDirect3DRMProgressiveMesh_SetVertexDetail(p,a)           (p)->SetVertexDetail(a)
2099 #define IDirect3DRMProgressiveMesh_GetFaceDetailRange(p,a,b)      (p)->GetFaceDetailRange(a,b)
2100 #define IDirect3DRMProgressiveMesh_GetVertexDetailRange(p,a,b)    (p)->GetVertexDetailRange(a,b)
2101 #define IDirect3DRMProgressiveMesh_GetDetail(p,a)                 (p)->GetDetail(a)
2102 #define IDirect3DRMProgressiveMesh_SetDetail(p,a)                 (p)->SetDetail(a)
2103 #define IDirect3DRMProgressiveMesh_RegisterEvents(p,a,b,c)        (p)->RegisterEvents(a,b,c)
2104 #define IDirect3DRMProgressiveMesh_CreateMesh(p,a)                (p)->CreateMesh(a)
2105 #define IDirect3DRMProgressiveMesh_Duplicate(p,a)                 (p)->Duplicate(a)
2106 #define IDirect3DRMProgressiveMesh_GetBox(p,a)                    (p)->GetBox(a)
2107 #define IDirect3DRMProgressiveMesh_SetQuality(p,a)                (p)->SetQuality(a)
2108 #define IDirect3DRMProgressiveMesh_GetQuality(p,a)                (p)->GetQuality(a)
2109 #endif
2110
2111 /*****************************************************************************
2112  * IDirect3DRMShadow interface
2113  */
2114 #define INTERFACE IDirect3DRMShadow
2115 DECLARE_INTERFACE_(IDirect3DRMShadow,IDirect3DRMVisual)
2116 {
2117     /*** IUnknown methods ***/
2118     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
2119     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
2120     STDMETHOD_(ULONG,Release)(THIS) PURE;
2121     /*** IDirect3DRMObject methods ***/
2122     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
2123     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
2124     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
2125     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
2126     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
2127     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
2128     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
2129     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
2130     /*** IDirect3DRMShadow methods ***/
2131     STDMETHOD(Init)(THIS_ LPDIRECT3DRMVISUAL visual, LPDIRECT3DRMLIGHT light,
2132         D3DVALUE px, D3DVALUE py, D3DVALUE pz, D3DVALUE nx, D3DVALUE ny, D3DVALUE nz) PURE;
2133 };
2134 #undef INTERFACE
2135
2136 #if !defined(__cplusplus) || defined(CINTERFACE)
2137 /*** IUnknown methods ***/
2138 #define IDirect3DRMShadow_QueryInterface(p,a,b)          (p)->lpVtbl->QueryInterface(p,a,b)
2139 #define IDirect3DRMShadow_AddRef(p)                      (p)->lpVtbl->AddRef(p)
2140 #define IDirect3DRMShadow_Release(p)                     (p)->lpVtbl->Release(p)
2141 /*** IDirect3DRMObject methods ***/
2142 #define IDirect3DRMShadow_Clone(p,a,b,c)                 (p)->lpVtbl->Clone(p,a,b,c)
2143 #define IDirect3DRMShadow_AddDestroyCallback(p,a,b)      (p)->lpVtbl->AddDestroyCallback(p,a,b)
2144 #define IDirect3DRMShadow_DeleteDestroyCallback(p,a,b)   (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
2145 #define IDirect3DRMShadow_SetAppData(p,a)                (p)->lpVtbl->SetAppData(p,a)
2146 #define IDirect3DRMShadow_GetAppData(p)                  (p)->lpVtbl->GetAppData(p)
2147 #define IDirect3DRMShadow_SetName(p,a)                   (p)->lpVtbl->SetName(p,a)
2148 #define IDirect3DRMShadow_GetName(p,a,b)                 (p)->lpVtbl->GetName(p,a,b)
2149 #define IDirect3DRMShadow_GetClassName(p,a,b)            (p)->lpVtbl->GetClassName(p,a,b)
2150 /*** IDirect3DRMShadow methods ***/
2151 #define IDirect3DRMShadow_Init(p,a,b,c,d,e,f,g)          (p)->lpVtbl->Load(p,a,b,c,d,e,f,g)
2152 #else
2153 /*** IUnknown methods ***/
2154 #define IDirect3DRMShadow_QueryInterface(p,a,b)          (p)->QueryInterface(a,b)
2155 #define IDirect3DRMShadow_AddRef(p)                      (p)->AddRef()
2156 #define IDirect3DRMShadow_Release(p)                     (p)->Release()
2157 /*** IDirect3DRMObject methods ***/
2158 #define IDirect3DRMShadow_Clone(p,a,b,c)                 (p)->Clone(a,b,c)
2159 #define IDirect3DRMShadow_AddDestroyCallback(p,a,b)      (p)->AddDestroyCallback(a,b)
2160 #define IDirect3DRMShadow_DeleteDestroyCallback(p,a,b)   (p)->DeleteDestroyCallback(a,b)
2161 #define IDirect3DRMShadow_SetAppData(p,a)                (p)->SetAppData(a)
2162 #define IDirect3DRMShadow_GetAppData(p)                  (p)->GetAppData()
2163 #define IDirect3DRMShadow_SetName(p,a)                   (p)->SetName(a)
2164 #define IDirect3DRMShadow_GetName(p,a,b)                 (p)->GetName(a,b)
2165 #define IDirect3DRMShadow_GetClassName(p,a,b)            (p)->GetClassName(a,b)
2166 /*** IDirect3DRMShadow methods ***/
2167 #define IDirect3DRMShadow_Init(p,a,b,c,d,e,f,g)          (p)->Load(a,b,c,d,e,f,g)
2168 #endif
2169
2170 /*****************************************************************************
2171  * IDirect3DRMShadow2 interface
2172  */
2173 #define INTERFACE IDirect3DRMShadow2
2174 DECLARE_INTERFACE_(IDirect3DRMShadow2,IDirect3DRMVisual)
2175 {
2176     /*** IUnknown methods ***/
2177     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
2178     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
2179     STDMETHOD_(ULONG,Release)(THIS) PURE;
2180     /*** IDirect3DRMObject methods ***/
2181     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
2182     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
2183     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
2184     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
2185     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
2186     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
2187     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
2188     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
2189     /*** IDirect3DRMShadow methods ***/
2190     STDMETHOD(Init)(THIS_ LPUNKNOWN pUNK, LPDIRECT3DRMLIGHT light,
2191         D3DVALUE px, D3DVALUE py, D3DVALUE pz, D3DVALUE nx, D3DVALUE ny, D3DVALUE nz) PURE;
2192     /*** IDirect3DRMShadow2 methods ***/
2193     STDMETHOD(GetVisual)(THIS_ LPDIRECT3DRMVISUAL *) PURE;
2194     STDMETHOD(SetVisual)(THIS_ LPUNKNOWN pUNK, DWORD) PURE;
2195     STDMETHOD(GetLight)(THIS_ LPDIRECT3DRMLIGHT *) PURE;
2196     STDMETHOD(SetLight)(THIS_ LPDIRECT3DRMLIGHT, DWORD) PURE;
2197     STDMETHOD(GetPlane)(THIS_ LPD3DVALUE px, LPD3DVALUE py, LPD3DVALUE pz,
2198         LPD3DVALUE nx, LPD3DVALUE ny, LPD3DVALUE nz) PURE;
2199     STDMETHOD(SetPlane)(THIS_ D3DVALUE px, D3DVALUE py, D3DVALUE pz,
2200         D3DVALUE nx, D3DVALUE ny, D3DVALUE nz, DWORD) PURE;
2201     STDMETHOD(GetOptions)(THIS_ LPDWORD) PURE;
2202     STDMETHOD(SetOptions)(THIS_ DWORD) PURE;
2203 };
2204 #undef INTERFACE
2205
2206 #if !defined(__cplusplus) || defined(CINTERFACE)
2207 /*** IUnknown methods ***/
2208 #define IDirect3DRMShadow2_QueryInterface(p,a,b)          (p)->lpVtbl->QueryInterface(p,a,b)
2209 #define IDirect3DRMShadow2_AddRef(p)                      (p)->lpVtbl->AddRef(p)
2210 #define IDirect3DRMShadow2_Release(p)                     (p)->lpVtbl->Release(p)
2211 /*** IDirect3DRMObject methods ***/
2212 #define IDirect3DRMShadow2_Clone(p,a,b,c)                 (p)->lpVtbl->Clone(p,a,b,c)
2213 #define IDirect3DRMShadow2_AddDestroyCallback(p,a,b)      (p)->lpVtbl->AddDestroyCallback(p,a,b)
2214 #define IDirect3DRMShadow2_DeleteDestroyCallback(p,a,b)   (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
2215 #define IDirect3DRMShadow2_SetAppData(p,a)                (p)->lpVtbl->SetAppData(p,a)
2216 #define IDirect3DRMShadow2_GetAppData(p)                  (p)->lpVtbl->GetAppData(p)
2217 #define IDirect3DRMShadow2_SetName(p,a)                   (p)->lpVtbl->SetName(p,a)
2218 #define IDirect3DRMShadow2_GetName(p,a,b)                 (p)->lpVtbl->GetName(p,a,b)
2219 #define IDirect3DRMShadow2_GetClassName(p,a,b)            (p)->lpVtbl->GetClassName(p,a,b)
2220 /*** IDirect3DRMShadow methods ***/
2221 #define IDirect3DRMShadow2_Init(p,a,b,c,d,e,f,g)          (p)->lpVtbl->Init(p,a,b,c,d,e,f,g)
2222 /*** IDirect3DRMShadow2 methods ***/
2223 #define IDirect3DRMShadow2_GetVisual(p,a)                 (p)->lpVtbl->GetVisual(p,a)
2224 #define IDirect3DRMShadow2_SetVisual(p,a,b)               (p)->lpVtbl->SetVisual(p,a,b)
2225 #define IDirect3DRMShadow2_GetLight(p,a)                  (p)->lpVtbl->GetLight(p,a)
2226 #define IDirect3DRMShadow2_SetLight(p,a,b)                (p)->lpVtbl->SetLight(p,a,b)
2227 #define IDirect3DRMShadow2_GetPlane(p,a,b,c,d,e,f)        (p)->lpVtbl->GetPlane(p,a,b,c,d,e,f)
2228 #define IDirect3DRMShadow2_SetPlane(p,a,b,c,d,e,f)        (p)->lpVtbl->SetPlane(p,a,b,c,d,e,f)
2229 #define IDirect3DRMShadow2_GetOptions(p,a)                (p)->lpVtbl->GetOptions(p,a)
2230 #define IDirect3DRMShadow2_SetOptions(p,a)                (p)->lpVtbl->SetOptions(p,a)
2231 #else
2232 /*** IUnknown methods ***/
2233 #define IDirect3DRMShadow2_QueryInterface(p,a,b)          (p)->QueryInterface(a,b)
2234 #define IDirect3DRMShadow2_AddRef(p)                      (p)->AddRef()
2235 #define IDirect3DRMShadow2_Release(p)                     (p)->Release()
2236 /*** IDirect3DRMObject methods ***/
2237 #define IDirect3DRMShadow2_Clone(p,a,b,c)                 (p)->Clone(a,b,c)
2238 #define IDirect3DRMShadow2_AddDestroyCallback(p,a,b)      (p)->AddDestroyCallback(a,b)
2239 #define IDirect3DRMShadow2_DeleteDestroyCallback(p,a,b)   (p)->DeleteDestroyCallback(a,b)
2240 #define IDirect3DRMShadow2_SetAppData(p,a)                (p)->SetAppData(a)
2241 #define IDirect3DRMShadow2_GetAppData(p)                  (p)->GetAppData()
2242 #define IDirect3DRMShadow2_SetName(p,a)                   (p)->SetName(a)
2243 #define IDirect3DRMShadow2_GetName(p,a,b)                 (p)->GetName(a,b)
2244 #define IDirect3DRMShadow2_GetClassName(p,a,b)            (p)->GetClassName(a,b)
2245 /*** IDirect3DRMShadow methods ***/
2246 #define IDirect3DRMShadow2_Init(p,a,b,c,d,e,f,g)          (p)->Init(a,b,c,d,e,f,g)
2247 /*** IDirect3DRMShadow2 methods ***/
2248 #define IDirect3DRMShadow2_GetVisual(p,a)                 (p)->GetVisual(a)
2249 #define IDirect3DRMShadow2_SetVisual(p,a,b)               (p)->SetVisual(a,b)
2250 #define IDirect3DRMShadow2_GetLight(p,a)                  (p)->GetLight(a)
2251 #define IDirect3DRMShadow2_SetLight(p,a,b)                (p)->SetLight(a,b)
2252 #define IDirect3DRMShadow2_GetPlane(p,a,b,c,d,e,f)        (p)->GetPlane(a,b,c,d,e,f)
2253 #define IDirect3DRMShadow2_SetPlane(p,a,b,c,d,e,f)        (p)->SetPlane(a,b,c,d,e,f)
2254 #define IDirect3DRMShadow2_GetOptions(p,a)                (p)->GetOptions(a)
2255 #define IDirect3DRMShadow2_SetOptions(p,a)                (p)->SetOptions(a)
2256 #endif
2257
2258 /*****************************************************************************
2259  * IDirect3DRMFace interface
2260  */
2261 #define INTERFACE IDirect3DRMFace
2262 DECLARE_INTERFACE_(IDirect3DRMFace,IDirect3DRMObject)
2263 {
2264     /*** IUnknown methods ***/
2265     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
2266     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
2267     STDMETHOD_(ULONG,Release)(THIS) PURE;
2268     /*** IDirect3DRMObject methods ***/
2269     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
2270     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
2271     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
2272     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
2273     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
2274     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
2275     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
2276     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
2277     /*** IDirect3DRMFace methods ***/
2278     STDMETHOD(AddVertex)(THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
2279     STDMETHOD(AddVertexAndNormalIndexed)(THIS_ DWORD vertex, DWORD normal) PURE;
2280     STDMETHOD(SetColorRGB)(THIS_ D3DVALUE, D3DVALUE, D3DVALUE) PURE;
2281     STDMETHOD(SetColor)(THIS_ D3DCOLOR) PURE;
2282     STDMETHOD(SetTexture)(THIS_ LPDIRECT3DRMTEXTURE) PURE;
2283     STDMETHOD(SetTextureCoordinates)(THIS_ DWORD vertex, D3DVALUE u, D3DVALUE v) PURE;
2284     STDMETHOD(SetMaterial)(THIS_ LPDIRECT3DRMMATERIAL) PURE;
2285     STDMETHOD(SetTextureTopology)(THIS_ BOOL wrap_u, BOOL wrap_v) PURE;
2286     STDMETHOD(GetVertex)(THIS_ DWORD index, D3DVECTOR *vertex, D3DVECTOR *normal) PURE;
2287     STDMETHOD(GetVertices)(THIS_ DWORD *vertex_count, D3DVECTOR *coords, D3DVECTOR *normals);
2288     STDMETHOD(GetTextureCoordinates)(THIS_ DWORD vertex, D3DVALUE *u, D3DVALUE *v) PURE;
2289     STDMETHOD(GetTextureTopology)(THIS_ BOOL *wrap_u, BOOL *wrap_v) PURE;
2290     STDMETHOD(GetNormal)(THIS_ D3DVECTOR *) PURE;
2291     STDMETHOD(GetTexture)(THIS_ LPDIRECT3DRMTEXTURE *) PURE;
2292     STDMETHOD(GetMaterial)(THIS_ LPDIRECT3DRMMATERIAL *) PURE;
2293     STDMETHOD_(int, GetVertexCount)(THIS) PURE;
2294     STDMETHOD_(int, GetVertexIndex)(THIS_ DWORD which) PURE;
2295     STDMETHOD_(int, GetTextureCoordinateIndex)(THIS_ DWORD which) PURE;
2296     STDMETHOD_(D3DCOLOR, GetColor)(THIS) PURE;
2297 };
2298 #undef INTERFACE
2299
2300 #if !defined(__cplusplus) || defined(CINTERFACE)
2301 /*** IUnknown methods ***/
2302 #define IDirect3DRMFace_QueryInterface(p,a,b)             (p)->lpVtbl->QueryInterface(p,a,b)
2303 #define IDirect3DRMFace_AddRef(p)                         (p)->lpVtbl->AddRef(p)
2304 #define IDirect3DRMFace_Release(p)                        (p)->lpVtbl->Release(p)
2305 /*** IDirect3DRMObject methods ***/
2306 #define IDirect3DRMFace_Clone(p,a,b,c)                    (p)->lpVtbl->Clone(p,a,b,c)
2307 #define IDirect3DRMFace_AddDestroyCallback(p,a,b)         (p)->lpVtbl->AddDestroyCallback(p,a,b)
2308 #define IDirect3DRMFace_DeleteDestroyCallback(p,a,b)      (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
2309 #define IDirect3DRMFace_SetAppData(p,a)                   (p)->lpVtbl->SetAppData(p,a)
2310 #define IDirect3DRMFace_GetAppData(p)                     (p)->lpVtbl->GetAppData(p)
2311 #define IDirect3DRMFace_SetName(p,a)                      (p)->lpVtbl->SetName(p,a)
2312 #define IDirect3DRMFace_GetName(p,a,b)                    (p)->lpVtbl->GetName(p,a,b)
2313 #define IDirect3DRMFace_GetClassName(p,a,b)               (p)->lpVtbl->GetClassName(p,a,b)
2314 /*** IDirect3DRMFace methods ***/
2315 #define IDirect3DRMFace_AddVertex(p,a,b,c)                (p)->lpVtbl->AddVertex(p,a,b,c)
2316 #define IDirect3DRMFace_AddVertexAndNormalIndexed(p,a,b)  (p)->lpVtbl->AddVertexAndNormalIndexed(p,a,b)
2317 #define IDirect3DRMFace_SetColorRGB(p,a,b,c)              (p)->lpVtbl->SetColorRGB(p,a,b,c)
2318 #define IDirect3DRMFace_SetColor(p,a)                     (p)->lpVtbl->SetColor(p,a)
2319 #define IDirect3DRMFace_SetTexture(p,a)                   (p)->lpVtbl->SetTexture(p,a)
2320 #define IDirect3DRMFace_SetTextureCoordinates(p,a,b,c)    (p)->lpVtbl->SetTextureCoordinates(p,a,b,c)
2321 #define IDirect3DRMFace_SetMaterial(p,a)                  (p)->lpVtbl->SetMaterial(p,a)
2322 #define IDirect3DRMFace_SetTextureTopology(p,a,b)         (p)->lpVtbl->SetTextureTopology(p,a,b)
2323 #define IDirect3DRMFace_GetVertex(p,a,b,c)                (p)->lpVtbl->GetVertex(p,a,b,c)
2324 #define IDirect3DRMFace_GetVertices(p,a,b,c)              (p)->lpVtbl->GetVertices(p,a,b,c)
2325 #define IDirect3DRMFace_GetTextureCoordinates(p,a,b,c)    (p)->lpVtbl->GetTextureCoordinates(p,a,b,c)
2326 #define IDirect3DRMFace_GetTextureTopology(p,a,b)         (p)->lpVtbl->GetTextureTopology(p,a,b)
2327 #define IDirect3DRMFace_GetNormal(p,a)                    (p)->lpVtbl->GetNormal(p,a)
2328 #define IDirect3DRMFace_GetTexture(p,a)                   (p)->lpVtbl->GetTexture(p,a)
2329 #define IDirect3DRMFace_GetVertexCount(p)                 (p)->lpVtbl->GetVertexCount(p)
2330 #define IDirect3DRMFace_GetVertexIndex(p,a)               (p)->lpVtbl->GetVertexIndex(p,a)
2331 #define IDirect3DRMFace_GetTextureCoordinateIndex(p,a)    (p)->lpVtbl->GetTextureCoordinateIndex(p,a)
2332 #define IDirect3DRMFace_GetColor(p,a)                     (p)->lpVtbl->GetColor(p,a)
2333 #else
2334 /*** IUnknown methods ***/
2335 #define IDirect3DRMFace_QueryInterface(p,a,b)             (p)->QueryInterface(a,b)
2336 #define IDirect3DRMFace_AddRef(p)                         (p)->AddRef()
2337 #define IDirect3DRMFace_Release(p)                        (p)->Release()
2338 /*** IDirect3DRMObject methods ***/
2339 #define IDirect3DRMFace_Clone(p,a,b,c)                    (p)->Clone(a,b,c)
2340 #define IDirect3DRMFace_AddDestroyCallback(p,a,b)         (p)->AddDestroyCallback(a,b)
2341 #define IDirect3DRMFace_DeleteDestroyCallback(p,a,b)      (p)->DeleteDestroyCallback(a,b)
2342 #define IDirect3DRMFace_SetAppData(p,a)                   (p)->SetAppData(a)
2343 #define IDirect3DRMFace_GetAppData(p)                     (p)->GetAppData()
2344 #define IDirect3DRMFace_SetName(p,a)                      (p)->SetName(a)
2345 #define IDirect3DRMFace_GetName(p,a,b)                    (p)->GetName(a,b)
2346 #define IDirect3DRMFace_GetClassName(p,a,b)               (p)->GetClassName(a,b)
2347 /*** IDirect3DRMFace methods ***/
2348 #define IDirect3DRMFace_AddVertex(p,a,b,c)                (p)->AddVertex(a,b,c)
2349 #define IDirect3DRMFace_AddVertexAndNormalIndexed(p,a,b)  (p)->AddVertexAndNormalIndexed(a,b)
2350 #define IDirect3DRMFace_SetColorRGB(p,a,b,c)              (p)->SetColorRGB(a,b,c)
2351 #define IDirect3DRMFace_SetColor(p,a)                     (p)->SetColor(a)
2352 #define IDirect3DRMFace_SetTexture(p,a)                   (p)->SetTexture(a)
2353 #define IDirect3DRMFace_SetTextureCoordinates(p,a,b,c)    (p)->SetTextureCoordinates(a,b,c)
2354 #define IDirect3DRMFace_SetMaterial(p,a)                  (p)->SetMaterial(a)
2355 #define IDirect3DRMFace_SetTextureTopology(p,a,b)         (p)->SetTextureTopology(a,b)
2356 #define IDirect3DRMFace_GetVertex(p,a,b,c)                (p)->GetVertex(a,b,c)
2357 #define IDirect3DRMFace_GetVertices(p,a,b,c)              (p)->GetVertices(a,b,c)
2358 #define IDirect3DRMFace_GetTextureCoordinates(p,a,b,c)    (p)->GetTextureCoordinates(a,b,c)
2359 #define IDirect3DRMFace_GetTextureTopology(p,a,b)         (p)->GetTextureTopology(a,b)
2360 #define IDirect3DRMFace_GetNormal(p,a)                    (p)->GetNormal(a)
2361 #define IDirect3DRMFace_GetTexture(p,a)                   (p)->GetTexture(a)
2362 #define IDirect3DRMFace_GetVertexCount(p)                 (p)->GetVertexCount()
2363 #define IDirect3DRMFace_GetVertexIndex(p,a)               (p)->GetVertexIndex(a)
2364 #define IDirect3DRMFace_GetTextureCoordinateIndex(p,a)    (p)->GetTextureCoordinateIndex(a)
2365 #define IDirect3DRMFace_GetColor(p,a)                     (p)->GetColor(a)
2366 #endif
2367
2368 /*****************************************************************************
2369  * IDirect3DRMFace2 interface
2370  */
2371 #define INTERFACE IDirect3DRMFace2
2372 DECLARE_INTERFACE_(IDirect3DRMFace2,IDirect3DRMObject)
2373 {
2374     /*** IUnknown methods ***/
2375     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
2376     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
2377     STDMETHOD_(ULONG,Release)(THIS) PURE;
2378     /*** IDirect3DRMObject methods ***/
2379     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
2380     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
2381     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
2382     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
2383     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
2384     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
2385     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
2386     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
2387     /*** IDirect3DRMFace methods ***/
2388     STDMETHOD(AddVertex)(THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
2389     STDMETHOD(AddVertexAndNormalIndexed)(THIS_ DWORD vertex, DWORD normal) PURE;
2390     STDMETHOD(SetColorRGB)(THIS_ D3DVALUE, D3DVALUE, D3DVALUE) PURE;
2391     STDMETHOD(SetColor)(THIS_ D3DCOLOR) PURE;
2392     STDMETHOD(SetTexture)(THIS_ LPDIRECT3DRMTEXTURE3) PURE;
2393     STDMETHOD(SetTextureCoordinates)(THIS_ DWORD vertex, D3DVALUE u, D3DVALUE v) PURE;
2394     STDMETHOD(SetMaterial)(THIS_ LPDIRECT3DRMMATERIAL2) PURE;
2395     STDMETHOD(SetTextureTopology)(THIS_ BOOL wrap_u, BOOL wrap_v) PURE;
2396     STDMETHOD(GetVertex)(THIS_ DWORD index, D3DVECTOR *vertex, D3DVECTOR *normal) PURE;
2397     STDMETHOD(GetVertices)(THIS_ DWORD *vertex_count, D3DVECTOR *coords, D3DVECTOR *normals);
2398     STDMETHOD(GetTextureCoordinates)(THIS_ DWORD vertex, D3DVALUE *u, D3DVALUE *v) PURE;
2399     STDMETHOD(GetTextureTopology)(THIS_ BOOL *wrap_u, BOOL *wrap_v) PURE;
2400     STDMETHOD(GetNormal)(THIS_ D3DVECTOR *) PURE;
2401     STDMETHOD(GetTexture)(THIS_ LPDIRECT3DRMTEXTURE3 *) PURE;
2402     STDMETHOD(GetMaterial)(THIS_ LPDIRECT3DRMMATERIAL2 *) PURE;
2403     STDMETHOD_(int, GetVertexCount)(THIS) PURE;
2404     STDMETHOD_(int, GetVertexIndex)(THIS_ DWORD which) PURE;
2405     STDMETHOD_(int, GetTextureCoordinateIndex)(THIS_ DWORD which) PURE;
2406     STDMETHOD_(D3DCOLOR, GetColor)(THIS) PURE;
2407 };
2408 #undef INTERFACE
2409
2410 #if !defined(__cplusplus) || defined(CINTERFACE)
2411 /*** IUnknown methods ***/
2412 #define IDirect3DRMFace2_QueryInterface(p,a,b)             (p)->lpVtbl->QueryInterface(p,a,b)
2413 #define IDirect3DRMFace2_AddRef(p)                         (p)->lpVtbl->AddRef(p)
2414 #define IDirect3DRMFace2_Release(p)                        (p)->lpVtbl->Release(p)
2415 /*** IDirect3DRMObject methods ***/
2416 #define IDirect3DRMFace2_Clone(p,a,b,c)                    (p)->lpVtbl->Clone(p,a,b,c)
2417 #define IDirect3DRMFace2_AddDestroyCallback(p,a,b)         (p)->lpVtbl->AddDestroyCallback(p,a,b)
2418 #define IDirect3DRMFace2_DeleteDestroyCallback(p,a,b)      (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
2419 #define IDirect3DRMFace2_SetAppData(p,a)                   (p)->lpVtbl->SetAppData(p,a)
2420 #define IDirect3DRMFace2_GetAppData(p)                     (p)->lpVtbl->GetAppData(p)
2421 #define IDirect3DRMFace2_SetName(p,a)                      (p)->lpVtbl->SetName(p,a)
2422 #define IDirect3DRMFace2_GetName(p,a,b)                    (p)->lpVtbl->GetName(p,a,b)
2423 #define IDirect3DRMFace2_GetClassName(p,a,b)               (p)->lpVtbl->GetClassName(p,a,b)
2424 /*** IDirect3DRMFace methods ***/
2425 #define IDirect3DRMFace2_AddVertex(p,a,b,c)                (p)->lpVtbl->AddVertex(p,a,b,c)
2426 #define IDirect3DRMFace2_AddVertexAndNormalIndexed(p,a,b)  (p)->lpVtbl->AddVertexAndNormalIndexed(p,a,b)
2427 #define IDirect3DRMFace2_SetColorRGB(p,a,b,c)              (p)->lpVtbl->SetColorRGB(p,a,b,c)
2428 #define IDirect3DRMFace2_SetColor(p,a)                     (p)->lpVtbl->SetColor(p,a)
2429 #define IDirect3DRMFace2_SetTexture(p,a)                   (p)->lpVtbl->SetTexture(p,a)
2430 #define IDirect3DRMFace2_SetTextureCoordinates(p,a,b,c)    (p)->lpVtbl->SetTextureCoordinates(p,a,b,c)
2431 #define IDirect3DRMFace2_SetMaterial(p,a)                  (p)->lpVtbl->SetMaterial(p,a)
2432 #define IDirect3DRMFace2_SetTextureTopology(p,a,b)         (p)->lpVtbl->SetTextureTopology(p,a,b)
2433 #define IDirect3DRMFace2_GetVertex(p,a,b,c)                (p)->lpVtbl->GetVertex(p,a,b,c)
2434 #define IDirect3DRMFace2_GetVertices(p,a,b,c)              (p)->lpVtbl->GetVertices(p,a,b,c)
2435 #define IDirect3DRMFace2_GetTextureCoordinates(p,a,b,c)    (p)->lpVtbl->GetTextureCoordinates(p,a,b,c)
2436 #define IDirect3DRMFace2_GetTextureTopology(p,a,b)         (p)->lpVtbl->GetTextureTopology(p,a,b)
2437 #define IDirect3DRMFace2_GetNormal(p,a)                    (p)->lpVtbl->GetNormal(p,a)
2438 #define IDirect3DRMFace2_GetTexture(p,a)                   (p)->lpVtbl->GetTexture(p,a)
2439 #define IDirect3DRMFace2_GetVertexCount(p)                 (p)->lpVtbl->GetVertexCount(p)
2440 #define IDirect3DRMFace2_GetVertexIndex(p,a)               (p)->lpVtbl->GetVertexIndex(p,a)
2441 #define IDirect3DRMFace2_GetTextureCoordinateIndex(p,a)    (p)->lpVtbl->GetTextureCoordinateIndex(p,a)
2442 #define IDirect3DRMFace2_GetColor(p,a)                     (p)->lpVtbl->GetColor(p,a)
2443 #else
2444 /*** IUnknown methods ***/
2445 #define IDirect3DRMFace2_QueryInterface(p,a,b)             (p)->QueryInterface(a,b)
2446 #define IDirect3DRMFace2_AddRef(p)                         (p)->AddRef()
2447 #define IDirect3DRMFace2_Release(p)                        (p)->Release()
2448 /*** IDirect3DRMObject methods ***/
2449 #define IDirect3DRMFace2_Clone(p,a,b,c)                    (p)->Clone(a,b,c)
2450 #define IDirect3DRMFace2_AddDestroyCallback(p,a,b)         (p)->AddDestroyCallback(a,b)
2451 #define IDirect3DRMFace2_DeleteDestroyCallback(p,a,b)      (p)->DeleteDestroyCallback(a,b)
2452 #define IDirect3DRMFace2_SetAppData(p,a)                   (p)->SetAppData(a)
2453 #define IDirect3DRMFace2_GetAppData(p)                     (p)->GetAppData()
2454 #define IDirect3DRMFace2_SetName(p,a)                      (p)->SetName(a)
2455 #define IDirect3DRMFace2_GetName(p,a,b)                    (p)->GetName(a,b)
2456 #define IDirect3DRMFace2_GetClassName(p,a,b)               (p)->GetClassName(a,b)
2457 /*** IDirect3DRMFace methods ***/
2458 #define IDirect3DRMFace2_AddVertex(p,a,b,c)                (p)->AddVertex(a,b,c)
2459 #define IDirect3DRMFace2_AddVertexAndNormalIndexed(p,a,b)  (p)->AddVertexAndNormalIndexed(a,b)
2460 #define IDirect3DRMFace2_SetColorRGB(p,a,b,c)              (p)->SetColorRGB(a,b,c)
2461 #define IDirect3DRMFace2_SetColor(p,a)                     (p)->SetColor(a)
2462 #define IDirect3DRMFace2_SetTexture(p,a)                   (p)->SetTexture(a)
2463 #define IDirect3DRMFace2_SetTextureCoordinates(p,a,b,c)    (p)->SetTextureCoordinates(a,b,c)
2464 #define IDirect3DRMFace2_SetMaterial(p,a)                  (p)->SetMaterial(a)
2465 #define IDirect3DRMFace2_SetTextureTopology(p,a,b)         (p)->SetTextureTopology(a,b)
2466 #define IDirect3DRMFace2_GetVertex(p,a,b,c)                (p)->GetVertex(a,b,c)
2467 #define IDirect3DRMFace2_GetVertices(p,a,b,c)              (p)->GetVertices(a,b,c)
2468 #define IDirect3DRMFace2_GetTextureCoordinates(p,a,b,c)    (p)->GetTextureCoordinates(a,b,c)
2469 #define IDirect3DRMFace2_GetTextureTopology(p,a,b)         (p)->GetTextureTopology(a,b)
2470 #define IDirect3DRMFace2_GetNormal(p,a)                    (p)->GetNormal(a)
2471 #define IDirect3DRMFace2_GetTexture(p,a)                   (p)->GetTexture(a)
2472 #define IDirect3DRMFace2_GetVertexCount(p)                 (p)->GetVertexCount()
2473 #define IDirect3DRMFace2_GetVertexIndex(p,a)               (p)->GetVertexIndex(a)
2474 #define IDirect3DRMFace2_GetTextureCoordinateIndex(p,a)    (p)->GetTextureCoordinateIndex(a)
2475 #define IDirect3DRMFace2_GetColor(p,a)                     (p)->GetColor(a)
2476 #endif
2477
2478 /*****************************************************************************
2479  * IDirect3DRMMeshBuilder interface
2480  */
2481 #define INTERFACE IDirect3DRMMeshBuilder
2482 DECLARE_INTERFACE_(IDirect3DRMMeshBuilder,IDirect3DRMVisual)
2483 {
2484     /*** IUnknown methods ***/
2485     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
2486     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
2487     STDMETHOD_(ULONG,Release)(THIS) PURE;
2488     /*** IDirect3DRMObject methods ***/
2489     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
2490     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
2491     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
2492     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
2493     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
2494     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
2495     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
2496     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
2497     /*** IDirect3DRMMeshBuilder methods ***/
2498     STDMETHOD(Load)(THIS_ LPVOID filename, LPVOID name, D3DRMLOADOPTIONS loadflags, D3DRMLOADTEXTURECALLBACK, LPVOID pArg) PURE;
2499     STDMETHOD(Save)(THIS_ const char *filename, D3DRMXOFFORMAT, D3DRMSAVEOPTIONS save) PURE;
2500     STDMETHOD(Scale)(THIS_ D3DVALUE sx, D3DVALUE sy, D3DVALUE sz) PURE;
2501     STDMETHOD(Translate)(THIS_ D3DVALUE tx, D3DVALUE ty, D3DVALUE tz) PURE;
2502     STDMETHOD(SetColorSource)(THIS_ D3DRMCOLORSOURCE) PURE;
2503     STDMETHOD(GetBox)(THIS_ D3DRMBOX *) PURE;
2504     STDMETHOD(GenerateNormals)(THIS) PURE;
2505     STDMETHOD_(D3DRMCOLORSOURCE, GetColorSource)(THIS) PURE;
2506     STDMETHOD(AddMesh)(THIS_ LPDIRECT3DRMMESH) PURE;
2507     STDMETHOD(AddMeshBuilder)(THIS_ LPDIRECT3DRMMESHBUILDER) PURE;
2508     STDMETHOD(AddFrame)(THIS_ LPDIRECT3DRMFRAME) PURE;
2509     STDMETHOD(AddFace)(THIS_ LPDIRECT3DRMFACE) PURE;
2510     STDMETHOD(AddFaces)(THIS_ DWORD vcount, D3DVECTOR *vertices, DWORD ncount, D3DVECTOR *normals, DWORD *data,
2511         LPDIRECT3DRMFACEARRAY*) PURE;
2512     STDMETHOD(ReserveSpace)(THIS_ DWORD vertex_Count, DWORD normal_count, DWORD face_count) PURE;
2513     STDMETHOD(SetColorRGB)(THIS_ D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE;
2514     STDMETHOD(SetColor)(THIS_ D3DCOLOR) PURE;
2515     STDMETHOD(SetTexture)(THIS_ LPDIRECT3DRMTEXTURE) PURE;
2516     STDMETHOD(SetMaterial)(THIS_ LPDIRECT3DRMMATERIAL) PURE;
2517     STDMETHOD(SetTextureTopology)(THIS_ BOOL wrap_u, BOOL wrap_v) PURE;
2518     STDMETHOD(SetQuality)(THIS_ D3DRMRENDERQUALITY) PURE;
2519     STDMETHOD(SetPerspective)(THIS_ BOOL) PURE;
2520     STDMETHOD(SetVertex)(THIS_ DWORD index, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
2521     STDMETHOD(SetNormal)(THIS_ DWORD index, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
2522     STDMETHOD(SetTextureCoordinates)(THIS_ DWORD index, D3DVALUE u, D3DVALUE v) PURE;
2523     STDMETHOD(SetVertexColor)(THIS_ DWORD index, D3DCOLOR) PURE;
2524     STDMETHOD(SetVertexColorRGB)(THIS_ DWORD index, D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE;
2525     STDMETHOD(GetFaces)(THIS_ LPDIRECT3DRMFACEARRAY*) PURE;
2526     STDMETHOD(GetVertices)(THIS_ DWORD *vcount, D3DVECTOR *vertices, DWORD *ncount, D3DVECTOR *normals,
2527         DWORD *face_data_size, DWORD *face_data) PURE;
2528     STDMETHOD(GetTextureCoordinates)(THIS_ DWORD index, D3DVALUE *u, D3DVALUE *v) PURE;
2529     STDMETHOD_(int, AddVertex)(THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
2530     STDMETHOD_(int, AddNormal)(THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
2531     STDMETHOD(CreateFace)(THIS_ LPDIRECT3DRMFACE*) PURE;
2532     STDMETHOD_(D3DRMRENDERQUALITY, GetQuality)(THIS) PURE;
2533     STDMETHOD_(BOOL, GetPerspective)(THIS) PURE;
2534     STDMETHOD_(int, GetFaceCount)(THIS) PURE;
2535     STDMETHOD_(int, GetVertexCount)(THIS) PURE;
2536     STDMETHOD_(D3DCOLOR, GetVertexColor)(THIS_ DWORD index) PURE;
2537     STDMETHOD(CreateMesh)(THIS_ LPDIRECT3DRMMESH*) PURE;
2538 };
2539 #undef INTERFACE
2540
2541 #if !defined(__cplusplus) || defined(CINTERFACE)
2542 /*** IUnknown methods ***/
2543 #define IDirect3DRMMeshBuilder_QueryInterface(p,a,b)             (p)->lpVtbl->QueryInterface(p,a,b)
2544 #define IDirect3DRMMeshBuilder_AddRef(p)                         (p)->lpVtbl->AddRef(p)
2545 #define IDirect3DRMMeshBuilder_Release(p)                        (p)->lpVtbl->Release(p)
2546 /*** IDirect3DRMObject methods ***/
2547 #define IDirect3DRMMeshBuilder_Clone(p,a,b,c)                    (p)->lpVtbl->Clone(p,a,b,c)
2548 #define IDirect3DRMMeshBuilder_AddDestroyCallback(p,a,b)         (p)->lpVtbl->AddDestroyCallback(p,a,b)
2549 #define IDirect3DRMMeshBuilder_DeleteDestroyCallback(p,a,b)      (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
2550 #define IDirect3DRMMeshBuilder_SetAppData(p,a)                   (p)->lpVtbl->SetAppData(p,a)
2551 #define IDirect3DRMMeshBuilder_GetAppData(p)                     (p)->lpVtbl->GetAppData(p)
2552 #define IDirect3DRMMeshBuilder_SetName(p,a)                      (p)->lpVtbl->SetName(p,a)
2553 #define IDirect3DRMMeshBuilder_GetName(p,a,b)                    (p)->lpVtbl->GetName(p,a,b)
2554 #define IDirect3DRMMeshBuilder_GetClassName(p,a,b)               (p)->lpVtbl->GetClassName(p,a,b)
2555 /*** IDirect3DRMMeshBuilder methods ***/
2556 #define IDirect3DRMMeshBuilder_Load(p,a,b,c,d,e)                 (p)->lpVtbl->Load(p,a,b,c,d,e)
2557 #define IDirect3DRMMeshBuilder_Save(p,a,b,c)                     (p)->lpVtbl->Save(p,a,b,c)
2558 #define IDirect3DRMMeshBuilder_Scale(p,a,b,c)                    (p)->lpVtbl->Scale(p,a,b,c)
2559 #define IDirect3DRMMeshBuilder_Translate(p,a,b,c)                (p)->lpVtbl->Translate(p,a)
2560 #define IDirect3DRMMeshBuilder_SetColorSource(p,a)               (p)->lpVtbl->SetColorSource(p,a,b,c)
2561 #define IDirect3DRMMeshBuilder_GetBox(p,a)                       (p)->lpVtbl->GetBox(p,a)
2562 #define IDirect3DRMMeshBuilder_GenerateNormals(p)                (p)->lpVtbl->GenerateNormals(p)
2563 #define IDirect3DRMMeshBuilder_GetColorSource(p)                 (p)->lpVtbl->GetColorSource(p)
2564 #define IDirect3DRMMeshBuilder_AddMesh(p,a)                      (p)->lpVtbl->AddMesh(p,a)
2565 #define IDirect3DRMMeshBuilder_AddMeshBuilder(p,a)               (p)->lpVtbl->AddMeshBuilder(p,a)
2566 #define IDirect3DRMMeshBuilder_AddFrame(p,a)                     (p)->lpVtbl->AddFrame(p,a)
2567 #define IDirect3DRMMeshBuilder_AddFace(p,a)                      (p)->lpVtbl->AddFace(p,a)
2568 #define IDirect3DRMMeshBuilder_AddFaces(p,a,b,c,d,e,f)           (p)->lpVtbl->AddFaces(p,a,b,c,d,e,f)
2569 #define IDirect3DRMMeshBuilder_ReserveSpace(p,a,b,c)             (p)->lpVtbl->ReserveSpace(p,a,b,c)
2570 #define IDirect3DRMMeshBuilder_SetColorRGB(p,a,b,c)              (p)->lpVtbl->SetColorRGB(p,a,b,c)
2571 #define IDirect3DRMMeshBuilder_SetColor(p,a)                     (p)->lpVtbl->SetColor(p,a)
2572 #define IDirect3DRMMeshBuilder_SetTexture(p,a)                   (p)->lpVtbl->SetTexture(p,a)
2573 #define IDirect3DRMMeshBuilder_SetMateria(p,a)                   (p)->lpVtbl->SetMateria(p,a)
2574 #define IDirect3DRMMeshBuilder_SetTextureTopology(p,a,b)         (p)->lpVtbl->SetTextureTopology(p,a,b)
2575 #define IDirect3DRMMeshBuilder_SetQuality(p,a)                   (p)->lpVtbl->SetQuality(p,a)
2576 #define IDirect3DRMMeshBuilder_SetPerspective(p,a)               (p)->lpVtbl->SetPerspective(p,a)
2577 #define IDirect3DRMMeshBuilder_SetVertex(p,a,b,c,d)              (p)->lpVtbl->SetVertex(p,a,b,c,d)
2578 #define IDirect3DRMMeshBuilder_SetNormal(p,a,b,c,d)              (p)->lpVtbl->SetNormal(p,a,b,c,d)
2579 #define IDirect3DRMMeshBuilder_SetTextureCoordinates(p,a,b,c)    (p)->lpVtbl->SetTextureCoordinates(p,a,b,c)
2580 #define IDirect3DRMMeshBuilder_SetVertexColor(p,a,b)             (p)->lpVtbl->SetVertexColor(p,a,b)
2581 #define IDirect3DRMMeshBuilder_SetVertexColorRGB(p,a,b,c,d)      (p)->lpVtbl->SetVertexColorRGB(p,a,b,c,d)
2582 #define IDirect3DRMMeshBuilder_GetFaces(p,a)                     (p)->lpVtbl->GetFaces(p,a)
2583 #define IDirect3DRMMeshBuilder_GetVertices(p,a,b,c,d,e,f)        (p)->lpVtbl->GetVertices(p,a,b,c,d,e,f)
2584 #define IDirect3DRMMeshBuilder_GetTextureCoordinates(p,a,b,c)    (p)->lpVtbl->GetTextureCoordinates(p,a,b,c)
2585 #define IDirect3DRMMeshBuilder_AddVertex(p,a,b,c)                (p)->lpVtbl->AddVertex(p,a,b,c)
2586 #define IDirect3DRMMeshBuilder_AddNormal(p,a,b,c)                (p)->lpVtbl->AddNormal(p,a,b,c)
2587 #define IDirect3DRMMeshBuilder_CreateFace(p,a)                   (p)->lpVtbl->CreateFace(p,a)
2588 #define IDirect3DRMMeshBuilder_GetQuality(p)                     (p)->lpVtbl->GetQuality(p)
2589 #define IDirect3DRMMeshBuilder_GetPerspective(p)                 (p)->lpVtbl->GetPerspective(p)
2590 #define IDirect3DRMMeshBuilder_GetFaceCount(p)                   (p)->lpVtbl->GetFaceCount(p)
2591 #define IDirect3DRMMeshBuilder_GetVertexCount(p)                 (p)->lpVtbl->GetVertexCount(p)
2592 #define IDirect3DRMMeshBuilder_GetVertexColor(p,a)               (p)->lpVtbl->GetVertexColor(p,a)
2593 #define IDirect3DRMMeshBuilder_CreateMesh(p,a)                   (p)->lpVtbl->CreateMesh(p,a)
2594 #else
2595 /*** IUnknown methods ***/
2596 #define IDirect3DRMMeshBuilder_QueryInterface(p,a,b)             (p)->QueryInterface(a,b)
2597 #define IDirect3DRMMeshBuilder_AddRef(p)                         (p)->AddRef()
2598 #define IDirect3DRMMeshBuilder_Release(p)                        (p)->Release()
2599 /*** IDirect3DRMObject methods ***/
2600 #define IDirect3DRMMeshBuilder_Clone(p,a,b,c)                    (p)->Clone(a,b,c)
2601 #define IDirect3DRMMeshBuilder_AddDestroyCallback(p,a,b)         (p)->AddDestroyCallback(a,b)
2602 #define IDirect3DRMMeshBuilder_DeleteDestroyCallback(p,a,b)      (p)->DeleteDestroyCallback(a,b)
2603 #define IDirect3DRMMeshBuilder_SetAppData(p,a)                   (p)->SetAppData(a)
2604 #define IDirect3DRMMeshBuilder_GetAppData(p)                     (p)->GetAppData()
2605 #define IDirect3DRMMeshBuilder_SetName(p,a)                      (p)->SetName(a)
2606 #define IDirect3DRMMeshBuilder_GetName(p,a,b)                    (p)->GetName(a,b)
2607 #define IDirect3DRMMeshBuilder_GetClassName(p,a,b)               (p)->GetClassName(a,b)
2608 /*** IDirect3DRMMeshBuilder methods ***/
2609 #define IDirect3DRMMeshBuilder_Load(p,a,b,c,d,e)                 (p)->Load(a,b,c,d,e)
2610 #define IDirect3DRMMeshBuilder_Save(p,a,b,c)                     (p)->Save(a,b,c)
2611 #define IDirect3DRMMeshBuilder_Scale(p,a,b,c)                    (p)->Scale(a,b,c)
2612 #define IDirect3DRMMeshBuilder_Translate(p,a,b,c)                (p)->Translate(a)
2613 #define IDirect3DRMMeshBuilder_SetColorSource(p,a)               (p)->SetColorSource(a,b,c)
2614 #define IDirect3DRMMeshBuilder_GetBox(p,a)                       (p)->GetBox(a)
2615 #define IDirect3DRMMeshBuilder_GenerateNormals(p)                (p)->GenerateNormals()
2616 #define IDirect3DRMMeshBuilder_GetColorSource(p)                 (p)->GetColorSource()
2617 #define IDirect3DRMMeshBuilder_AddMesh(p,a)                      (p)-->AddMesh(a)
2618 #define IDirect3DRMMeshBuilder_AddMeshBuilder(p,a)               (p)->AddMeshBuilder(a)
2619 #define IDirect3DRMMeshBuilder_AddFrame(p,a)                     (p)->AddFrame(a)
2620 #define IDirect3DRMMeshBuilder_AddFace(p,a)                      (p)->AddFace(a)
2621 #define IDirect3DRMMeshBuilder_AddFaces(p,a,b,c,d,e,f)           (p)->AddFaces(a,b,c,d,e,f)
2622 #define IDirect3DRMMeshBuilder_ReserveSpace(p,a,b,c)             (p)->ReserveSpace(a,b,c)
2623 #define IDirect3DRMMeshBuilder_SetColorRGB(p,a,b,c)              (p)->SetColorRGB(a,b,c)
2624 #define IDirect3DRMMeshBuilder_SetColor(p,a)                     (p)->SetColor(a)
2625 #define IDirect3DRMMeshBuilder_SetTexture(p,a)                   (p)->SetTexture(a)
2626 #define IDirect3DRMMeshBuilder_SetMateria(p,a)                   (p)->SetMateria(a)
2627 #define IDirect3DRMMeshBuilder_SetTextureTopology(p,a,b)         (p)->SetTextureTopology(a,b)
2628 #define IDirect3DRMMeshBuilder_SetQuality(p,a)                   (p)->SetQuality(a)
2629 #define IDirect3DRMMeshBuilder_SetPerspective(p,a)               (p)->SetPerspective(a)
2630 #define IDirect3DRMMeshBuilder_SetVertex(p,a,b,c,d)              (p)->SetVertex(a,b,c,d)
2631 #define IDirect3DRMMeshBuilder_SetNormal(p,a,b,c,d)              (p)->SetNormal(a,b,c,d)
2632 #define IDirect3DRMMeshBuilder_SetTextureCoordinates(p,a,b,c)    (p)->SetTextureCoordinates(a,b,c)
2633 #define IDirect3DRMMeshBuilder_SetVertexColor(p,a,b)             (p)->SetVertexColor(a,b)
2634 #define IDirect3DRMMeshBuilder_SetVertexColorRGB(p,a,b,c,d)      (p)->SetVertexColorRGB(a,b,c,d)
2635 #define IDirect3DRMMeshBuilder_GetFaces(p,a)                     (p)->GetFaces(a)
2636 #define IDirect3DRMMeshBuilder_GetVertices(p,a,b,c,d,e,f)        (p)->GetVertices(a,b,c,d,e,f)
2637 #define IDirect3DRMMeshBuilder_GetTextureCoordinates(p,a,b,c)    (p)->GetTextureCoordinates(a,b,c)
2638 #define IDirect3DRMMeshBuilder_AddVertex(p,a,b,c)                (p)->AddVertex(a,b,c)
2639 #define IDirect3DRMMeshBuilder_AddNormal(p,a,b,c)                (p)->AddNormal(a,b,c)
2640 #define IDirect3DRMMeshBuilder_CreateFace(p,a)                   (p)->CreateFace(a)
2641 #define IDirect3DRMMeshBuilder_GetQuality(p)                     (p)->GetQuality()
2642 #define IDirect3DRMMeshBuilder_GetPerspective(p)                 (p)->GetPerspective()
2643 #define IDirect3DRMMeshBuilder_GetFaceCount(p)                   (p)->GetFaceCount()
2644 #define IDirect3DRMMeshBuilder_GetVertexCount(p)                 (p)->GetVertexCount()
2645 #define IDirect3DRMMeshBuilder_GetVertexColor(p,a)               (p)->GetVertexColor(a)
2646 #define IDirect3DRMMeshBuilder_CreateMesh(p,a)                   (p)->CreateMesh(a)
2647 #endif
2648
2649 /*****************************************************************************
2650  * IDirect3DRMMeshBuilder2 interface
2651  */
2652 #define INTERFACE IDirect3DRMMeshBuilder2
2653 DECLARE_INTERFACE_(IDirect3DRMMeshBuilder2,IDirect3DRMMeshBuilder)
2654 {
2655     /*** IUnknown methods ***/
2656     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
2657     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
2658     STDMETHOD_(ULONG,Release)(THIS) PURE;
2659     /*** IDirect3DRMObject methods ***/
2660     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
2661     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
2662     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
2663     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
2664     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
2665     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
2666     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
2667     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
2668     /*** IDirect3DRMMeshBuilder methods ***/
2669     STDMETHOD(Load)(THIS_ LPVOID filename, LPVOID name, D3DRMLOADOPTIONS loadflags, D3DRMLOADTEXTURECALLBACK, LPVOID pArg) PURE;
2670     STDMETHOD(Save)(THIS_ const char *filename, D3DRMXOFFORMAT, D3DRMSAVEOPTIONS save) PURE;
2671     STDMETHOD(Scale)(THIS_ D3DVALUE sx, D3DVALUE sy, D3DVALUE sz) PURE;
2672     STDMETHOD(Translate)(THIS_ D3DVALUE tx, D3DVALUE ty, D3DVALUE tz) PURE;
2673     STDMETHOD(SetColorSource)(THIS_ D3DRMCOLORSOURCE) PURE;
2674     STDMETHOD(GetBox)(THIS_ D3DRMBOX *) PURE;
2675     STDMETHOD(GenerateNormals)(THIS) PURE;
2676     STDMETHOD_(D3DRMCOLORSOURCE, GetColorSource)(THIS) PURE;
2677     STDMETHOD(AddMesh)(THIS_ LPDIRECT3DRMMESH) PURE;
2678     STDMETHOD(AddMeshBuilder)(THIS_ LPDIRECT3DRMMESHBUILDER) PURE;
2679     STDMETHOD(AddFrame)(THIS_ LPDIRECT3DRMFRAME) PURE;
2680     STDMETHOD(AddFace)(THIS_ LPDIRECT3DRMFACE) PURE;
2681     STDMETHOD(AddFaces)(THIS_ DWORD vcount, D3DVECTOR *vertices, DWORD ncount, D3DVECTOR *normals, DWORD *data,
2682         LPDIRECT3DRMFACEARRAY*) PURE;
2683     STDMETHOD(ReserveSpace)(THIS_ DWORD vertex_Count, DWORD normal_count, DWORD face_count) PURE;
2684     STDMETHOD(SetColorRGB)(THIS_ D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE;
2685     STDMETHOD(SetColor)(THIS_ D3DCOLOR) PURE;
2686     STDMETHOD(SetTexture)(THIS_ LPDIRECT3DRMTEXTURE) PURE;
2687     STDMETHOD(SetMaterial)(THIS_ LPDIRECT3DRMMATERIAL) PURE;
2688     STDMETHOD(SetTextureTopology)(THIS_ BOOL wrap_u, BOOL wrap_v) PURE;
2689     STDMETHOD(SetQuality)(THIS_ D3DRMRENDERQUALITY) PURE;
2690     STDMETHOD(SetPerspective)(THIS_ BOOL) PURE;
2691     STDMETHOD(SetVertex)(THIS_ DWORD index, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
2692     STDMETHOD(SetNormal)(THIS_ DWORD index, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
2693     STDMETHOD(SetTextureCoordinates)(THIS_ DWORD index, D3DVALUE u, D3DVALUE v) PURE;
2694     STDMETHOD(SetVertexColor)(THIS_ DWORD index, D3DCOLOR) PURE;
2695     STDMETHOD(SetVertexColorRGB)(THIS_ DWORD index, D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE;
2696     STDMETHOD(GetFaces)(THIS_ LPDIRECT3DRMFACEARRAY*) PURE;
2697     STDMETHOD(GetVertices)(THIS_ DWORD *vcount, D3DVECTOR *vertices, DWORD *ncount, D3DVECTOR *normals,
2698         DWORD *face_data_size, DWORD *face_data) PURE;
2699     STDMETHOD(GetTextureCoordinates)(THIS_ DWORD index, D3DVALUE *u, D3DVALUE *v) PURE;
2700     STDMETHOD_(int, AddVertex)(THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
2701     STDMETHOD_(int, AddNormal)(THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
2702     STDMETHOD(CreateFace)(THIS_ LPDIRECT3DRMFACE*) PURE;
2703     STDMETHOD_(D3DRMRENDERQUALITY, GetQuality)(THIS) PURE;
2704     STDMETHOD_(BOOL, GetPerspective)(THIS) PURE;
2705     STDMETHOD_(int, GetFaceCount)(THIS) PURE;
2706     STDMETHOD_(int, GetVertexCount)(THIS) PURE;
2707     STDMETHOD_(D3DCOLOR, GetVertexColor)(THIS_ DWORD index) PURE;
2708     STDMETHOD(CreateMesh)(THIS_ LPDIRECT3DRMMESH*) PURE;
2709     /*** IDirect3DRMMeshBuilder2 methods ***/
2710     STDMETHOD(GenerateNormals2)(THIS_ D3DVALUE crease, DWORD flags) PURE;
2711     STDMETHOD(GetFace)(THIS_ DWORD index, LPDIRECT3DRMFACE*) PURE;
2712 };
2713 #undef INTERFACE
2714
2715 #if !defined(__cplusplus) || defined(CINTERFACE)
2716 /*** IUnknown methods ***/
2717 #define IDirect3DRMMeshBuilder2_QueryInterface(p,a,b)            (p)->lpVtbl->QueryInterface(p,a,b)
2718 #define IDirect3DRMMeshBuilder2_AddRef(p)                        (p)->lpVtbl->AddRef(p)
2719 #define IDirect3DRMMeshBuilder2_Release(p)                       (p)->lpVtbl->Release(p)
2720 /*** IDirect3DRMObject methods ***/
2721 #define IDirect3DRMMeshBuilder2_Clone(p,a,b,c)                   (p)->lpVtbl->Clone(p,a,b,c)
2722 #define IDirect3DRMMeshBuilder2_AddDestroyCallback(p,a,b)        (p)->lpVtbl->AddDestroyCallback(p,a,b)
2723 #define IDirect3DRMMeshBuilder2_DeleteDestroyCallback(p,a,b)     (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
2724 #define IDirect3DRMMeshBuilder2_SetAppData(p,a)                  (p)->lpVtbl->SetAppData(p,a)
2725 #define IDirect3DRMMeshBuilder2_GetAppData(p)                    (p)->lpVtbl->GetAppData(p)
2726 #define IDirect3DRMMeshBuilder2_SetName(p,a)                     (p)->lpVtbl->SetName(p,a)
2727 #define IDirect3DRMMeshBuilder2_GetName(p,a,b)                   (p)->lpVtbl->GetName(p,a,b)
2728 #define IDirect3DRMMeshBuilder2_GetClassName(p,a,b)              (p)->lpVtbl->GetClassName(p,a,b)
2729 /*** IDirect3DRMMeshBuilder methods ***/
2730 #define IDirect3DRMMeshBuilder2_Load(p,a,b,c,d,e)                (p)->lpVtbl->Load(p,a,b,c,d,e)
2731 #define IDirect3DRMMeshBuilder2_Save(p,a,b,c)                    (p)->lpVtbl->Save(p,a,b,c)
2732 #define IDirect3DRMMeshBuilder2_Scale(p,a,b,c)                   (p)->lpVtbl->Scale(p,a,b,c)
2733 #define IDirect3DRMMeshBuilder2_Translate(p,a,b,c)               (p)->lpVtbl->Translate(p,a)
2734 #define IDirect3DRMMeshBuilder2_SetColorSource(p,a)              (p)->lpVtbl->SetColorSource(p,a,b,c)
2735 #define IDirect3DRMMeshBuilder2_GetBox(p,a)                      (p)->lpVtbl->GetBox(p,a)
2736 #define IDirect3DRMMeshBuilder2_GenerateNormals(p)               (p)->lpVtbl->GenerateNormals(p)
2737 #define IDirect3DRMMeshBuilder2_GetColorSource(p)                (p)->lpVtbl->GetColorSource(p)
2738 #define IDirect3DRMMeshBuilder2_AddMesh(p,a)                     (p)->lpVtbl->AddMesh(p,a)
2739 #define IDirect3DRMMeshBuilder2_AddMeshBuilder(p,a)              (p)->lpVtbl->AddMeshBuilder(p,a)
2740 #define IDirect3DRMMeshBuilder2_AddFrame(p,a)                    (p)->lpVtbl->AddFrame(p,a)
2741 #define IDirect3DRMMeshBuilder2_AddFace(p,a)                     (p)->lpVtbl->AddFace(p,a)
2742 #define IDirect3DRMMeshBuilder2_AddFaces(p,a,b,c,d,e,f)          (p)->lpVtbl->AddFaces(p,a,b,c,d,e,f)
2743 #define IDirect3DRMMeshBuilder2_ReserveSpace(p,a,b,c)            (p)->lpVtbl->ReserveSpace(p,a,b,c)
2744 #define IDirect3DRMMeshBuilder2_SetColorRGB(p,a,b,c)             (p)->lpVtbl->SetColorRGB(p,a,b,c)
2745 #define IDirect3DRMMeshBuilder2_SetColor(p,a)                    (p)->lpVtbl->SetColor(p,a)
2746 #define IDirect3DRMMeshBuilder2_SetTexture(p,a)                  (p)->lpVtbl->SetTexture(p,a)
2747 #define IDirect3DRMMeshBuilder2_SetMateria(p,a)                  (p)->lpVtbl->SetMateria(p,a)
2748 #define IDirect3DRMMeshBuilder2_SetTextureTopology(p,a,b)        (p)->lpVtbl->SetTextureTopology(p,a,b)
2749 #define IDirect3DRMMeshBuilder2_SetQuality(p,a)                  (p)->lpVtbl->SetQuality(p,a)
2750 #define IDirect3DRMMeshBuilder2_SetPerspective(p,a)              (p)->lpVtbl->SetPerspective(p,a)
2751 #define IDirect3DRMMeshBuilder2_SetVertex(p,a,b,c,d)             (p)->lpVtbl->SetVertex(p,a,b,c,d)
2752 #define IDirect3DRMMeshBuilder2_SetNormal(p,a,b,c,d)             (p)->lpVtbl->SetNormal(p,a,b,c,d)
2753 #define IDirect3DRMMeshBuilder2_SetTextureCoordinates(p,a,b,c)   (p)->lpVtbl->SetTextureCoordinates(p,a,b,c)
2754 #define IDirect3DRMMeshBuilder2_SetVertexColor(p,a,b)            (p)->lpVtbl->SetVertexColor(p,a,b)
2755 #define IDirect3DRMMeshBuilder2_SetVertexColorRGB(p,a,b,c,d)     (p)->lpVtbl->SetVertexColorRGB(p,a,b,c,d)
2756 #define IDirect3DRMMeshBuilder2_GetFaces(p,a)                    (p)->lpVtbl->GetFaces(p,a)
2757 #define IDirect3DRMMeshBuilder2_GetVertices(p,a,b,c,d,e,f)       (p)->lpVtbl->GetVertices(p,a,b,c,d,e,f)
2758 #define IDirect3DRMMeshBuilder2_GetTextureCoordinates(p,a,b,c)   (p)->lpVtbl->GetTextureCoordinates(p,a,b,c)
2759 #define IDirect3DRMMeshBuilder2_AddVertex(p,a,b,c)               (p)->lpVtbl->AddVertex(p,a,b,c)
2760 #define IDirect3DRMMeshBuilder2_AddNormal(p,a,b,c)               (p)->lpVtbl->AddNormal(p,a,b,c)
2761 #define IDirect3DRMMeshBuilder2_CreateFace(p,a)                  (p)->lpVtbl->CreateFace(p,a)
2762 #define IDirect3DRMMeshBuilder2_GetQuality(p)                    (p)->lpVtbl->GetQuality(p)
2763 #define IDirect3DRMMeshBuilder2_GetPerspective(p)                (p)->lpVtbl->GetPerspective(p)
2764 #define IDirect3DRMMeshBuilder2_GetFaceCount(p)                  (p)->lpVtbl->GetFaceCount(p)
2765 #define IDirect3DRMMeshBuilder2_GetVertexCount(p)                (p)->lpVtbl->GetVertexCount(p)
2766 #define IDirect3DRMMeshBuilder2_GetVertexColor(p,a)              (p)->lpVtbl->GetVertexColor(p,a)
2767 #define IDirect3DRMMeshBuilder2_CreateMesh(p,a)                  (p)->lpVtbl->CreateMesh(p,a)
2768 /*** IDirect3DRMMeshBuilder2 methods ***/
2769 #define IDirect3DRMMeshBuilder2_GenerateNormals2(p,a,b)          (p)->lpVtbl->GenerateNormals2(p,a,b)
2770 #define IDirect3DRMMeshBuilder2_GetFace(p,a,b)                   (p)->lpVtbl->GetFace(p,a,b)
2771 #else
2772 /*** IUnknown methods ***/
2773 #define IDirect3DRMMeshBuilder2_QueryInterface(p,a,b)            (p)->QueryInterface(a,b)
2774 #define IDirect3DRMMeshBuilder2_AddRef(p)                        (p)->AddRef()
2775 #define IDirect3DRMMeshBuilder2_Release(p)                       (p)->Release()
2776 /*** IDirect3DRMObject methods ***/
2777 #define IDirect3DRMMeshBuilder2_Clone(p,a,b,c)                   (p)->Clone(a,b,c)
2778 #define IDirect3DRMMeshBuilder2_AddDestroyCallback(p,a,b)        (p)->AddDestroyCallback(a,b)
2779 #define IDirect3DRMMeshBuilder2_DeleteDestroyCallback(p,a,b)     (p)->DeleteDestroyCallback(a,b)
2780 #define IDirect3DRMMeshBuilder2_SetAppData(p,a)                  (p)->SetAppData(a)
2781 #define IDirect3DRMMeshBuilder2_GetAppData(p)                    (p)->GetAppData()
2782 #define IDirect3DRMMeshBuilder2_SetName(p,a)                     (p)->SetName(a)
2783 #define IDirect3DRMMeshBuilder2_GetName(p,a,b)                   (p)->GetName(a,b)
2784 #define IDirect3DRMMeshBuilder2_GetClassName(p,a,b)              (p)->GetClassName(a,b)
2785 /*** IDirect3DRMMeshBuilder methods ***/
2786 #define IDirect3DRMMeshBuilder2_Load(p,a,b,c,d,e)                (p)->Load(a,b,c,d,e)
2787 #define IDirect3DRMMeshBuilder2_Save(p,a,b,c)                    (p)->Save(a,b,c)
2788 #define IDirect3DRMMeshBuilder2_Scale(p,a,b,c)                   (p)->Scale(a,b,c)
2789 #define IDirect3DRMMeshBuilder2_Translate(p,a,b,c)               (p)->Translate(a)
2790 #define IDirect3DRMMeshBuilder2_SetColorSource(p,a)              (p)->SetColorSource(a,b,c)
2791 #define IDirect3DRMMeshBuilder2_GetBox(p,a)                      (p)->GetBox(a)
2792 #define IDirect3DRMMeshBuilder2_GenerateNormals(p)               (p)->GenerateNormals()
2793 #define IDirect3DRMMeshBuilder2_GetColorSource(p)                (p)->GetColorSource()
2794 #define IDirect3DRMMeshBuilder2_AddMesh(p,a)                     (p)-->AddMesh(a)
2795 #define IDirect3DRMMeshBuilder2_AddMeshBuilder(p,a)              (p)->AddMeshBuilder(a)
2796 #define IDirect3DRMMeshBuilder2_AddFrame(p,a)                    (p)->AddFrame(a)
2797 #define IDirect3DRMMeshBuilder2_AddFace(p,a)                     (p)->AddFace(a)
2798 #define IDirect3DRMMeshBuilder2_AddFaces(p,a,b,c,d,e,f)          (p)->AddFaces(a,b,c,d,e,f)
2799 #define IDirect3DRMMeshBuilder2_ReserveSpace(p,a,b,c)            (p)->ReserveSpace(a,b,c)
2800 #define IDirect3DRMMeshBuilder2_SetColorRGB(p,a,b,c)             (p)->SetColorRGB(a,b,c)
2801 #define IDirect3DRMMeshBuilder2_SetColor(p,a)                    (p)->SetColor(a)
2802 #define IDirect3DRMMeshBuilder2_SetTexture(p,a)                  (p)->SetTexture(a)
2803 #define IDirect3DRMMeshBuilder2_SetMateria(p,a)                  (p)->SetMateria(a)
2804 #define IDirect3DRMMeshBuilder2_SetTextureTopology(p,a,b)        (p)->SetTextureTopology(a,b)
2805 #define IDirect3DRMMeshBuilder2_SetQuality(p,a)                  (p)->SetQuality(a)
2806 #define IDirect3DRMMeshBuilder2_SetPerspective(p,a)              (p)->SetPerspective(a)
2807 #define IDirect3DRMMeshBuilder2_SetVertex(p,a,b,c,d)             (p)->SetVertex(a,b,c,d)
2808 #define IDirect3DRMMeshBuilder2_SetNormal(p,a,b,c,d)             (p)->SetNormal(a,b,c,d)
2809 #define IDirect3DRMMeshBuilder2_SetTextureCoordinates(p,a,b,c)   (p)->SetTextureCoordinates(a,b,c)
2810 #define IDirect3DRMMeshBuilder2_SetVertexColor(p,a,b)            (p)->SetVertexColor(a,b)
2811 #define IDirect3DRMMeshBuilder2_SetVertexColorRGB(p,a,b,c,d)     (p)->SetVertexColorRGB(a,b,c,d)
2812 #define IDirect3DRMMeshBuilder2_GetFaces(p,a)                    (p)->GetFaces(a)
2813 #define IDirect3DRMMeshBuilder2_GetVertices(p,a,b,c,d,e,f)       (p)->GetVertices(a,b,c,d,e,f)
2814 #define IDirect3DRMMeshBuilder2_GetTextureCoordinates(p,a,b,c)   (p)->GetTextureCoordinates(a,b,c)
2815 #define IDirect3DRMMeshBuilder2_AddVertex(p,a,b,c)               (p)->AddVertex(a,b,c)
2816 #define IDirect3DRMMeshBuilder2_AddNormal(p,a,b,c)               (p)->AddNormal(a,b,c)
2817 #define IDirect3DRMMeshBuilder2_CreateFace(p,a)                  (p)->CreateFace(a)
2818 #define IDirect3DRMMeshBuilder2_GetQuality(p)                    (p)->GetQuality()
2819 #define IDirect3DRMMeshBuilder2_GetPerspective(p)                (p)->GetPerspective()
2820 #define IDirect3DRMMeshBuilder2_GetFaceCount(p)                  (p)->GetFaceCount()
2821 #define IDirect3DRMMeshBuilder2_GetVertexCount(p)                (p)->GetVertexCount()
2822 #define IDirect3DRMMeshBuilder2_GetVertexColor(p,a)              (p)->GetVertexColor(a)
2823 #define IDirect3DRMMeshBuilder2_CreateMesh(p,a)                  (p)->CreateMesh(a)
2824 /*** IDirect3DRMMeshBuilder2 methods ***/
2825 #define IDirect3DRMMeshBuilder2_GenerateNormals2(p,a,b)          (p)->GenerateNormals2(a,b)
2826 #define IDirect3DRMMeshBuilder2_GetFace(p,a,b)                   (p)->GetFace(a,b)
2827 #endif
2828
2829 /*****************************************************************************
2830  * IDirect3DRMMeshBuilder3 interface
2831  */
2832 #define INTERFACE IDirect3DRMMeshBuilder3
2833 DECLARE_INTERFACE_(IDirect3DRMMeshBuilder3,IDirect3DRMVisual)
2834 {
2835     /*** IUnknown methods ***/
2836     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
2837     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
2838     STDMETHOD_(ULONG,Release)(THIS) PURE;
2839     /*** IDirect3DRMObject methods ***/
2840     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
2841     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
2842     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
2843     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
2844     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
2845     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
2846     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
2847     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
2848     /*** IDirect3DRMMeshBuilder3 methods ***/
2849     STDMETHOD(Load)(THIS_ LPVOID filename, LPVOID name, D3DRMLOADOPTIONS loadflags, D3DRMLOADTEXTURE3CALLBACK, LPVOID pArg) PURE;
2850     STDMETHOD(Save)(THIS_ const char *filename, D3DRMXOFFORMAT, D3DRMSAVEOPTIONS save) PURE;
2851     STDMETHOD(Scale)(THIS_ D3DVALUE sx, D3DVALUE sy, D3DVALUE sz) PURE;
2852     STDMETHOD(Translate)(THIS_ D3DVALUE tx, D3DVALUE ty, D3DVALUE tz) PURE;
2853     STDMETHOD(SetColorSource)(THIS_ D3DRMCOLORSOURCE) PURE;
2854     STDMETHOD(GetBox)(THIS_ D3DRMBOX *) PURE;
2855     STDMETHOD(GenerateNormals)(THIS_ D3DVALUE crease, DWORD flags) PURE;
2856     STDMETHOD_(D3DRMCOLORSOURCE, GetColorSource)(THIS) PURE;
2857     STDMETHOD(AddMesh)(THIS_ LPDIRECT3DRMMESH) PURE;
2858     STDMETHOD(AddMeshBuilder)(THIS_ LPDIRECT3DRMMESHBUILDER3) PURE;
2859     STDMETHOD(AddFrame)(THIS_ LPDIRECT3DRMFRAME3) PURE;
2860     STDMETHOD(AddFace)(THIS_ LPDIRECT3DRMFACE2) PURE;
2861     STDMETHOD(AddFaces)(THIS_ DWORD vcount, D3DVECTOR *vertices, DWORD ncount, D3DVECTOR *normals, DWORD *data,
2862         LPDIRECT3DRMFACEARRAY*) PURE;
2863     STDMETHOD(ReserveSpace)(THIS_ DWORD vertex_Count, DWORD normal_count, DWORD face_count) PURE;
2864     STDMETHOD(SetColorRGB)(THIS_ D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE;
2865     STDMETHOD(SetColor)(THIS_ D3DCOLOR) PURE;
2866     STDMETHOD(SetTexture)(THIS_ LPDIRECT3DRMTEXTURE3) PURE;
2867     STDMETHOD(SetMaterial)(THIS_ LPDIRECT3DRMMATERIAL2) PURE;
2868     STDMETHOD(SetTextureTopology)(THIS_ BOOL wrap_u, BOOL wrap_v) PURE;
2869     STDMETHOD(SetQuality)(THIS_ D3DRMRENDERQUALITY) PURE;
2870     STDMETHOD(SetPerspective)(THIS_ BOOL) PURE;
2871     STDMETHOD(SetVertex)(THIS_ DWORD index, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
2872     STDMETHOD(SetNormal)(THIS_ DWORD index, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
2873     STDMETHOD(SetTextureCoordinates)(THIS_ DWORD index, D3DVALUE u, D3DVALUE v) PURE;
2874     STDMETHOD(SetVertexColor)(THIS_ DWORD index, D3DCOLOR) PURE;
2875     STDMETHOD(SetVertexColorRGB)(THIS_ DWORD index, D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE;
2876     STDMETHOD(GetFaces)(THIS_ LPDIRECT3DRMFACEARRAY*) PURE;
2877     STDMETHOD(GetGeometry)(THIS_ DWORD *vcount, D3DVECTOR *vertices, DWORD *ncount, D3DVECTOR *normals,
2878         DWORD *face_data_size, DWORD *face_data) PURE;
2879     STDMETHOD(GetTextureCoordinates)(THIS_ DWORD index, D3DVALUE *u, D3DVALUE *v) PURE;
2880     STDMETHOD_(int, AddVertex)(THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
2881     STDMETHOD_(int, AddNormal)(THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
2882     STDMETHOD(CreateFace)(THIS_ LPDIRECT3DRMFACE2*) PURE;
2883     STDMETHOD_(D3DRMRENDERQUALITY, GetQuality)(THIS) PURE;
2884     STDMETHOD_(BOOL, GetPerspective)(THIS) PURE;
2885     STDMETHOD_(int, GetFaceCount)(THIS) PURE;
2886     STDMETHOD_(int, GetVertexCount)(THIS) PURE;
2887     STDMETHOD_(D3DCOLOR, GetVertexColor)(THIS_ DWORD index) PURE;
2888     STDMETHOD(CreateMesh)(THIS_ LPDIRECT3DRMMESH*) PURE;
2889     STDMETHOD(GetFace)(THIS_ DWORD index, LPDIRECT3DRMFACE2 *) PURE;
2890     STDMETHOD(GetVertex)(THIS_ DWORD index, LPD3DVECTOR pVector) PURE;
2891     STDMETHOD(GetNormal)(THIS_ DWORD index, LPD3DVECTOR pVector) PURE;
2892     STDMETHOD(DeleteVertices)(THIS_ DWORD IndexFirst, DWORD count) PURE;
2893     STDMETHOD(DeleteNormals)(THIS_ DWORD IndexFirst, DWORD count) PURE;
2894     STDMETHOD(DeleteFace)(THIS_ LPDIRECT3DRMFACE2) PURE;
2895     STDMETHOD(Empty)(THIS_ DWORD flags) PURE;
2896     STDMETHOD(Optimize)(THIS_ DWORD flags) PURE;
2897     STDMETHOD(AddFacesIndexed)(THIS_ DWORD flags, DWORD *pvIndices, DWORD *pIndexFirst, DWORD *pCount) PURE;
2898     STDMETHOD(CreateSubMesh)(THIS_ LPUNKNOWN *) PURE;
2899     STDMETHOD(GetParentMesh)(THIS_ DWORD, LPUNKNOWN *) PURE;
2900     STDMETHOD(GetSubMeshes)(THIS_ LPDWORD pCount, LPUNKNOWN *) PURE;
2901     STDMETHOD(DeleteSubMesh)(THIS_ LPUNKNOWN) PURE;
2902     STDMETHOD(Enable)(THIS_ DWORD) PURE;
2903     STDMETHOD(GetEnable)(THIS_ DWORD *) PURE;
2904     STDMETHOD(AddTriangles)(THIS_ DWORD flags, DWORD format, DWORD VertexCount, LPVOID pvData) PURE;
2905     STDMETHOD(SetVertices)(THIS_ DWORD IndexFirst, DWORD count, LPD3DVECTOR) PURE;
2906     STDMETHOD(GetVertices)(THIS_ DWORD IndexFirst, LPDWORD pCount, LPD3DVECTOR) PURE;
2907     STDMETHOD(SetNormals)(THIS_ DWORD IndexFirst, DWORD count, LPD3DVECTOR) PURE;
2908     STDMETHOD(GetNormals)(THIS_ DWORD IndexFirst, LPDWORD pCount, LPD3DVECTOR) PURE;
2909     STDMETHOD_(int, GetNormalCount)(THIS) PURE;
2910 };
2911 #undef INTERFACE
2912
2913 #if !defined(__cplusplus) || defined(CINTERFACE)
2914 /*** IUnknown methods ***/
2915 #define IDirect3DRMMeshBuilder3_QueryInterface(p,a,b)            (p)->lpVtbl->QueryInterface(p,a,b)
2916 #define IDirect3DRMMeshBuilder3_AddRef(p)                        (p)->lpVtbl->AddRef(p)
2917 #define IDirect3DRMMeshBuilder3_Release(p)                       (p)->lpVtbl->Release(p)
2918 /*** IDirect3DRMObject methods ***/
2919 #define IDirect3DRMMeshBuilder3_Clone(p,a,b,c)                   (p)->lpVtbl->Clone(p,a,b,c)
2920 #define IDirect3DRMMeshBuilder3_AddDestroyCallback(p,a,b)        (p)->lpVtbl->AddDestroyCallback(p,a,b)
2921 #define IDirect3DRMMeshBuilder3_DeleteDestroyCallback(p,a,b)     (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
2922 #define IDirect3DRMMeshBuilder3_SetAppData(p,a)                  (p)->lpVtbl->SetAppData(p,a)
2923 #define IDirect3DRMMeshBuilder3_GetAppData(p)                    (p)->lpVtbl->GetAppData(p)
2924 #define IDirect3DRMMeshBuilder3_SetName(p,a)                     (p)->lpVtbl->SetName(p,a)
2925 #define IDirect3DRMMeshBuilder3_GetName(p,a,b)                   (p)->lpVtbl->GetName(p,a,b)
2926 #define IDirect3DRMMeshBuilder3_GetClassName(p,a,b)              (p)->lpVtbl->GetClassName(p,a,b)
2927 /*** IDirect3DRMMeshBuilder3 methods ***/
2928 #define IDirect3DRMMeshBuilder3_Load(p,a,b,c,d,e)                (p)->lpVtbl->Load(p,a,b,c,d,e)
2929 #define IDirect3DRMMeshBuilder3_Save(p,a,b,c)                    (p)->lpVtbl->Save(p,a,b,c)
2930 #define IDirect3DRMMeshBuilder3_Scale(p,a,b,c)                   (p)->lpVtbl->Scale(p,a,b,c)
2931 #define IDirect3DRMMeshBuilder3_Translate(p,a,b,c)               (p)->lpVtbl->Translate(p,a)
2932 #define IDirect3DRMMeshBuilder3_SetColorSource(p,a)              (p)->lpVtbl->SetColorSource(p,a,b,c)
2933 #define IDirect3DRMMeshBuilder3_GetBox(p,a)                      (p)->lpVtbl->GetBox(p,a)
2934 #define IDirect3DRMMeshBuilder3_GenerateNormals(p,a,b)           (p)->lpVtbl->GenerateNormals(p,a,b)
2935 #define IDirect3DRMMeshBuilder3_GetColorSource(p)                (p)->lpVtbl->GetColorSource(p)
2936 #define IDirect3DRMMeshBuilder3_AddMesh(p,a)                     (p)->lpVtbl->AddMesh(p,a)
2937 #define IDirect3DRMMeshBuilder3_AddMeshBuilder(p,a)              (p)->lpVtbl->AddMeshBuilder(p,a)
2938 #define IDirect3DRMMeshBuilder3_AddFrame(p,a)                    (p)->lpVtbl->AddFrame(p,a)
2939 #define IDirect3DRMMeshBuilder3_AddFace(p,a)                     (p)->lpVtbl->AddFace(p,a)
2940 #define IDirect3DRMMeshBuilder3_AddFaces(p,a,b,c,d,e,f)          (p)->lpVtbl->AddFaces(p,a,b,c,d,e,f)
2941 #define IDirect3DRMMeshBuilder3_ReserveSpace(p,a,b,c)            (p)->lpVtbl->ReserveSpace(p,a,b,c)
2942 #define IDirect3DRMMeshBuilder3_SetColorRGB(p,a,b,c)             (p)->lpVtbl->SetColorRGB(p,a,b,c)
2943 #define IDirect3DRMMeshBuilder3_SetColor(p,a)                    (p)->lpVtbl->SetColor(p,a)
2944 #define IDirect3DRMMeshBuilder3_SetTexture(p,a)                  (p)->lpVtbl->SetTexture(p,a)
2945 #define IDirect3DRMMeshBuilder3_SetMateria(p,a)                  (p)->lpVtbl->SetMateria(p,a)
2946 #define IDirect3DRMMeshBuilder3_SetTextureTopology(p,a,b)        (p)->lpVtbl->SetTextureTopology(p,a,b)
2947 #define IDirect3DRMMeshBuilder3_SetQuality(p,a)                  (p)->lpVtbl->SetQuality(p,a)
2948 #define IDirect3DRMMeshBuilder3_SetPerspective(p,a)              (p)->lpVtbl->SetPerspective(p,a)
2949 #define IDirect3DRMMeshBuilder3_SetVertex(p,a,b,c,d)             (p)->lpVtbl->SetVertex(p,a,b,c,d)
2950 #define IDirect3DRMMeshBuilder3_SetNormal(p,a,b,c,d)             (p)->lpVtbl->SetNormal(p,a,b,c,d)
2951 #define IDirect3DRMMeshBuilder3_SetTextureCoordinates(p,a,b,c)   (p)->lpVtbl->SetTextureCoordinates(p,a,b,c)
2952 #define IDirect3DRMMeshBuilder3_SetVertexColor(p,a,b)            (p)->lpVtbl->SetVertexColor(p,a,b)
2953 #define IDirect3DRMMeshBuilder3_SetVertexColorRGB(p,a,b,c,d)     (p)->lpVtbl->SetVertexColorRGB(p,a,b,c,d)
2954 #define IDirect3DRMMeshBuilder3_GetFaces(p,a)                    (p)->lpVtbl->GetFaces(p,a)
2955 #define IDirect3DRMMeshBuilder3_GetGeometry(p,a,b,c,d,e,f)       (p)->lpVtbl->GetGeometry(p,a,b,c,d,e,f)
2956 #define IDirect3DRMMeshBuilder3_GetTextureCoordinates(p,a,b,c)   (p)->lpVtbl->GetTextureCoordinates(p,a,b,c)
2957 #define IDirect3DRMMeshBuilder3_AddVertex(p,a,b,c)               (p)->lpVtbl->AddVertex(p,a,b,c)
2958 #define IDirect3DRMMeshBuilder3_AddNormal(p,a,b,c)               (p)->lpVtbl->AddNormal(p,a,b,c)
2959 #define IDirect3DRMMeshBuilder3_CreateFace(p,a)                  (p)->lpVtbl->CreateFace(p,a)
2960 #define IDirect3DRMMeshBuilder3_GetQuality(p)                    (p)->lpVtbl->GetQuality(p)
2961 #define IDirect3DRMMeshBuilder3_GetPerspective(p)                (p)->lpVtbl->GetPerspective(p)
2962 #define IDirect3DRMMeshBuilder3_GetFaceCount(p)                  (p)->lpVtbl->GetFaceCount(p)
2963 #define IDirect3DRMMeshBuilder3_GetVertexCount(p)                (p)->lpVtbl->GetVertexCount(p)
2964 #define IDirect3DRMMeshBuilder3_GetVertexColor(p,a)              (p)->lpVtbl->GetVertexColor(p,a)
2965 #define IDirect3DRMMeshBuilder3_CreateMesh(p,a)                  (p)->lpVtbl->CreateMesh(p,a)
2966 #define IDirect3DRMMeshBuilder3_GetFace(p,a,b)                   (p)->lpVtbl->GetFace(p,a,b)
2967 #define IDirect3DRMMeshBuilder3_GetVertex(p,a,b)                 (p)->lpVtbl->GetVertex(p,a,b)
2968 #define IDirect3DRMMeshBuilder3_GetNormal(p,a,b)                 (p)->lpVtbl->GetNormal(p,a,b)
2969 #define IDirect3DRMMeshBuilder3_DeleteVertices(p,a,b)            (p)->lpVtbl->DeleteVertices(p,a,b)
2970 #define IDirect3DRMMeshBuilder3_DeleteNormals(p,a,b)             (p)->lpVtbl->DeleteNormals(p,a,b)
2971 #define IDirect3DRMMeshBuilder3_DeleteFace(p,a)                  (p)->lpVtbl->DeleteFace(p,a)
2972 #define IDirect3DRMMeshBuilder3_Empty(p,a)                       (p)->lpVtbl->Empty(p,a)
2973 #define IDirect3DRMMeshBuilder3_Optimize(p,a)                    (p)->lpVtbl->Optimize(p,a)
2974 #define IDirect3DRMMeshBuilder3_AddFacesIndexed(p,a,b,c,d)       (p)->lpVtbl->AddFacesIndexed(p,a,b,c,d)
2975 #define IDirect3DRMMeshBuilder3_CreateSubMesh(p,a)               (p)->lpVtbl->CreateSubMesh(p,a)
2976 #define IDirect3DRMMeshBuilder3_GetParentMesh(p,a,b)             (p)->lpVtbl->GetParentMesh(p,a,b)
2977 #define IDirect3DRMMeshBuilder3_GetSubMeshes(p,a,b)              (p)->lpVtbl->GetSubMeshes(p,a,b)
2978 #define IDirect3DRMMeshBuilder3_DeleteSubMesh(p,a)               (p)->lpVtbl->DeleteSubMesh(p,a)
2979 #define IDirect3DRMMeshBuilder3_Enable(p,a)                      (p)->lpVtbl->Enable(p,a)
2980 #define IDirect3DRMMeshBuilder3_AddTriangles(p,a,b,c,d)          (p)->lpVtbl->AddTriangles(p,a,b,c,d)
2981 #define IDirect3DRMMeshBuilder3_SetVertices(p,a,b,c)             (p)->lpVtbl->SetVertices(p,a,b,c)
2982 #define IDirect3DRMMeshBuilder3_GetVertices(p,a,b,c)             (p)->lpVtbl->GetVertices(p,a,b,c)
2983 #define IDirect3DRMMeshBuilder3_SetNormals(p,a,b,c)              (p)->lpVtbl->SetNormals(p,a,b,c)
2984 #define IDirect3DRMMeshBuilder3_GetNormals(p,a,b,c)              (p)->lpVtbl->GetNormals(p,a,b,c)
2985 #define IDirect3DRMMeshBuilder3_GetNormalCount(p)                (p)->lpVtbl->GetNormalCount(p)
2986 #else
2987 /*** IUnknown methods ***/
2988 #define IDirect3DRMMeshBuilder3_QueryInterface(p,a,b)            (p)->QueryInterface(a,b)
2989 #define IDirect3DRMMeshBuilder3_AddRef(p)                        (p)->AddRef()
2990 #define IDirect3DRMMeshBuilder3_Release(p)                       (p)->Release()
2991 /*** IDirect3DRMObject methods ***/
2992 #define IDirect3DRMMeshBuilder3_Clone(p,a,b,c)                   (p)->Clone(a,b,c)
2993 #define IDirect3DRMMeshBuilder3_AddDestroyCallback(p,a,b)        (p)->AddDestroyCallback(a,b)
2994 #define IDirect3DRMMeshBuilder3_DeleteDestroyCallback(p,a,b)     (p)->DeleteDestroyCallback(a,b)
2995 #define IDirect3DRMMeshBuilder3_SetAppData(p,a)                  (p)->SetAppData(a)
2996 #define IDirect3DRMMeshBuilder3_GetAppData(p)                    (p)->GetAppData()
2997 #define IDirect3DRMMeshBuilder3_SetName(p,a)                     (p)->SetName(a)
2998 #define IDirect3DRMMeshBuilder3_GetName(p,a,b)                   (p)->GetName(a,b)
2999 #define IDirect3DRMMeshBuilder3_GetClassName(p,a,b)              (p)->GetClassName(a,b)
3000 /*** IDirect3DRMMeshBuilder3 methods ***/
3001 #define IDirect3DRMMeshBuilder3_Load(p,a,b,c,d,e)                (p)->Load(a,b,c,d,e)
3002 #define IDirect3DRMMeshBuilder3_Save(p,a,b,c)                    (p)->Save(a,b,c)
3003 #define IDirect3DRMMeshBuilder3_Scale(p,a,b,c)                   (p)->Scale(a,b,c)
3004 #define IDirect3DRMMeshBuilder3_Translate(p,a,b,c)               (p)->Translate(a)
3005 #define IDirect3DRMMeshBuilder3_SetColorSource(p,a)              (p)->SetColorSource(a,b,c)
3006 #define IDirect3DRMMeshBuilder3_GetBox(p,a)                      (p)->GetBox(a)
3007 #define IDirect3DRMMeshBuilder3_GenerateNormals(p,a,b)           (p)->GenerateNormals(a,b)
3008 #define IDirect3DRMMeshBuilder3_GetColorSource(p)                (p)->GetColorSource()
3009 #define IDirect3DRMMeshBuilder3_AddMesh(p,a)                     (p)-->AddMesh(a)
3010 #define IDirect3DRMMeshBuilder3_AddMeshBuilder(p,a)              (p)->AddMeshBuilder(a)
3011 #define IDirect3DRMMeshBuilder3_AddFrame(p,a)                    (p)->AddFrame(a)
3012 #define IDirect3DRMMeshBuilder3_AddFace(p,a)                     (p)->AddFace(a)
3013 #define IDirect3DRMMeshBuilder3_AddFaces(p,a,b,c,d,e,f)          (p)->AddFaces(a,b,c,d,e,f)
3014 #define IDirect3DRMMeshBuilder3_ReserveSpace(p,a,b,c)            (p)->ReserveSpace(a,b,c)
3015 #define IDirect3DRMMeshBuilder3_SetColorRGB(p,a,b,c)             (p)->SetColorRGB(a,b,c)
3016 #define IDirect3DRMMeshBuilder3_SetColor(p,a)                    (p)->SetColor(a)
3017 #define IDirect3DRMMeshBuilder3_SetTexture(p,a)                  (p)->SetTexture(a)
3018 #define IDirect3DRMMeshBuilder3_SetMateria(p,a)                  (p)->SetMateria(a)
3019 #define IDirect3DRMMeshBuilder3_SetTextureTopology(p,a,b)        (p)->SetTextureTopology(a,b)
3020 #define IDirect3DRMMeshBuilder3_SetQuality(p,a)                  (p)->SetQuality(a)
3021 #define IDirect3DRMMeshBuilder3_SetPerspective(p,a)              (p)->SetPerspective(a)
3022 #define IDirect3DRMMeshBuilder3_SetVertex(p,a,b,c,d)             (p)->SetVertex(a,b,c,d)
3023 #define IDirect3DRMMeshBuilder3_SetNormal(p,a,b,c,d)             (p)->SetNormal(a,b,c,d)
3024 #define IDirect3DRMMeshBuilder3_SetTextureCoordinates(p,a,b,c)   (p)->SetTextureCoordinates(a,b,c)
3025 #define IDirect3DRMMeshBuilder3_SetVertexColor(p,a,b)            (p)->SetVertexColor(a,b)
3026 #define IDirect3DRMMeshBuilder3_SetVertexColorRGB(p,a,b,c,d)     (p)->SetVertexColorRGB(a,b,c,d)
3027 #define IDirect3DRMMeshBuilder3_GetFaces(p,a)                    (p)->GetFaces(a)
3028 #define IDirect3DRMMeshBuilder3_GetGeometry(p,a,b,c,d,e,f)       (p)->GetGeometry(a,b,c,d,e,f)
3029 #define IDirect3DRMMeshBuilder3_GetTextureCoordinates(p,a,b,c)   (p)->GetTextureCoordinates(a,b,c)
3030 #define IDirect3DRMMeshBuilder3_AddVertex(p,a,b,c)               (p)->AddVertex(a,b,c)
3031 #define IDirect3DRMMeshBuilder3_AddNormal(p,a,b,c)               (p)->AddNormal(a,b,c)
3032 #define IDirect3DRMMeshBuilder3_CreateFace(p,a)                  (p)->CreateFace(a)
3033 #define IDirect3DRMMeshBuilder3_GetQuality(p)                    (p)->GetQuality()
3034 #define IDirect3DRMMeshBuilder3_GetPerspective(p)                (p)->GetPerspective()
3035 #define IDirect3DRMMeshBuilder3_GetFaceCount(p)                  (p)->GetFaceCount()
3036 #define IDirect3DRMMeshBuilder3_GetVertexCount(p)                (p)->GetVertexCount()
3037 #define IDirect3DRMMeshBuilder3_GetVertexColor(p,a)              (p)->GetVertexColor(a)
3038 #define IDirect3DRMMeshBuilder3_CreateMesh(p,a)                  (p)->CreateMesh(a)
3039 #define IDirect3DRMMeshBuilder3_GetFace(p,a,b)                   (p)->GetFace(a,b)
3040 #define IDirect3DRMMeshBuilder3_GetVertex(p,a,b)                 (p)->GetVertex(a,b)
3041 #define IDirect3DRMMeshBuilder3_GetNormal(p,a,b)                 (p)->GetNormal(a,b)
3042 #define IDirect3DRMMeshBuilder3_DeleteVertices(p,a,b)            (p)->DeleteVertices(a,b)
3043 #define IDirect3DRMMeshBuilder3_DeleteNormals(p,a,b)             (p)->DeleteNormals(a,b)
3044 #define IDirect3DRMMeshBuilder3_DeleteFace(p,a)                  (p)->DeleteFace(a)
3045 #define IDirect3DRMMeshBuilder3_Empty(p,a)                       (p)->Empty(a)
3046 #define IDirect3DRMMeshBuilder3_Optimize(p,a)                    (p)->Optimize(a)
3047 #define IDirect3DRMMeshBuilder3_AddFacesIndexed(p,a,b,c,d)       (p)->AddFacesIndexed(a,b,c,d)
3048 #define IDirect3DRMMeshBuilder3_CreateSubMesh(p,a)               (p)->CreateSubMesh(a)
3049 #define IDirect3DRMMeshBuilder3_GetParentMesh(p,a,b)             (p)->GetParentMesh(a,b)
3050 #define IDirect3DRMMeshBuilder3_GetSubMeshes(p,a,b)              (p)->GetSubMeshes(a,b)
3051 #define IDirect3DRMMeshBuilder3_DeleteSubMesh(p,a)               (p)->DeleteSubMesh(a)
3052 #define IDirect3DRMMeshBuilder3_Enable(p,a)                      (p)->Enable(a)
3053 #define IDirect3DRMMeshBuilder3_AddTriangles(p,a,b,c,d)          (p)->AddTriangles(a,b,c,d)
3054 #define IDirect3DRMMeshBuilder3_SetVertices(p,a,b,c)             (p)->SetVertices(a,b,c)
3055 #define IDirect3DRMMeshBuilder3_GetVertices(p,a,b,c)             (p)->GetVertices(a,b,c)
3056 #define IDirect3DRMMeshBuilder3_SetNormals(p,a,b,c)              (p)->SetNormals(a,b,c)
3057 #define IDirect3DRMMeshBuilder3_GetNormals(p,a,b,c)              (p)->GetNormals(a,b,c)
3058 #define IDirect3DRMMeshBuilder3_GetNormalCount(p)                (p)->GetNormalCount()
3059 #endif
3060
3061 /*****************************************************************************
3062  * IDirect3DRMLight interface
3063  */
3064 #define INTERFACE IDirect3DRMLight
3065 DECLARE_INTERFACE_(IDirect3DRMLight,IDirect3DRMObject)
3066 {
3067     /*** IUnknown methods ***/
3068     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
3069     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
3070     STDMETHOD_(ULONG,Release)(THIS) PURE;
3071     /*** IDirect3DRMObject methods ***/
3072     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
3073     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
3074     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
3075     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
3076     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
3077     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
3078     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
3079     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
3080     /*** IDirect3DRMLight methods ***/
3081     STDMETHOD(SetType)(THIS_ D3DRMLIGHTTYPE) PURE;
3082     STDMETHOD(SetColor)(THIS_ D3DCOLOR) PURE;
3083     STDMETHOD(SetColorRGB)(THIS_ D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE;
3084     STDMETHOD(SetRange)(THIS_ D3DVALUE) PURE;
3085     STDMETHOD(SetUmbra)(THIS_ D3DVALUE) PURE;
3086     STDMETHOD(SetPenumbra)(THIS_ D3DVALUE) PURE;
3087     STDMETHOD(SetConstantAttenuation)(THIS_ D3DVALUE) PURE;
3088     STDMETHOD(SetLinearAttenuation)(THIS_ D3DVALUE) PURE;
3089     STDMETHOD(SetQuadraticAttenuation)(THIS_ D3DVALUE) PURE;
3090     STDMETHOD_(D3DVALUE, GetRange)(THIS) PURE;
3091     STDMETHOD_(D3DVALUE, GetUmbra)(THIS) PURE;
3092     STDMETHOD_(D3DVALUE, GetPenumbra)(THIS) PURE;
3093     STDMETHOD_(D3DVALUE, GetConstantAttenuation)(THIS) PURE;
3094     STDMETHOD_(D3DVALUE, GetLinearAttenuation)(THIS) PURE;
3095     STDMETHOD_(D3DVALUE, GetQuadraticAttenuation)(THIS) PURE;
3096     STDMETHOD_(D3DCOLOR, GetColor)(THIS) PURE;
3097     STDMETHOD_(D3DRMLIGHTTYPE, GetType)(THIS) PURE;
3098     STDMETHOD(SetEnableFrame)(THIS_ LPDIRECT3DRMFRAME) PURE;
3099     STDMETHOD(GetEnableFrame)(THIS_ LPDIRECT3DRMFRAME*) PURE;
3100 };
3101 #undef INTERFACE
3102
3103 #if !defined(__cplusplus) || defined(CINTERFACE)
3104 /*** IUnknown methods ***/
3105 #define IDirect3DRMLight_QueryInterface(p,a,b)            (p)->lpVtbl->QueryInterface(p,a,b)
3106 #define IDirect3DRMLight_AddRef(p)                        (p)->lpVtbl->AddRef(p)
3107 #define IDirect3DRMLight_Release(p)                       (p)->lpVtbl->Release(p)
3108 /*** IDirect3DRMObject methods ***/
3109 #define IDirect3DRMLight_Clone(p,a,b,c)                   (p)->lpVtbl->Clone(p,a,b,c)
3110 #define IDirect3DRMLight_AddDestroyCallback(p,a,b)        (p)->lpVtbl->AddDestroyCallback(p,a,b)
3111 #define IDirect3DRMLight_DeleteDestroyCallback(p,a,b)     (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
3112 #define IDirect3DRMLight_SetAppData(p,a)                  (p)->lpVtbl->SetAppData(p,a)
3113 #define IDirect3DRMLight_GetAppData(p)                    (p)->lpVtbl->GetAppData(p)
3114 #define IDirect3DRMLight_SetName(p,a)                     (p)->lpVtbl->SetName(p,a)
3115 #define IDirect3DRMLight_GetName(p,a,b)                   (p)->lpVtbl->GetName(p,a,b)
3116 #define IDirect3DRMLight_GetClassName(p,a,b)              (p)->lpVtbl->GetClassName(p,a,b)
3117 /*** IDirect3DRMLight methods ***/
3118 #define IDirect3DRMLight_SetType(p,a)                     (p)->lpVtbl->SetType(p,a)
3119 #define IDirect3DRMLight_SetColor(p,a)                    (p)->lpVtbl->SetColor(p,a)
3120 #define IDirect3DRMLight_SetColorRGB(p,a,b,c)             (p)->lpVtbl->SetColorRGB(p,a,b,c)
3121 #define IDirect3DRMLight_SetRange(p,a)                    (p)->lpVtbl->SetRange(p,a)
3122 #define IDirect3DRMLight_SetUmbra(p,a)                    (p)->lpVtbl->SetUmbra(p,a)
3123 #define IDirect3DRMLight_SetPenumbra(p,a)                 (p)->lpVtbl->SetPenumbra(p,a)
3124 #define IDirect3DRMLight_SetConstantAttenuation(p,a)      (p)->lpVtbl->SetConstantAttenuation(p,a)
3125 #define IDirect3DRMLight_SetLinearAttenuation(p,a)        (p)->lpVtbl->SetLinearAttenuation(p,a)
3126 #define IDirect3DRMLight_SetQuadraticAttenuation(p,a)     (p)->lpVtbl->SetQuadraticAttenuation(p,a)
3127 #define IDirect3DRMLight_GetRange(p)                      (p)->lpVtbl->GetRange(p)
3128 #define IDirect3DRMLight_GetUmbra(p)                      (p)->lpVtbl->GetUmbra(p)
3129 #define IDirect3DRMLight_GetPenumbra(p)                   (p)->lpVtbl->GetPenumbra(p)
3130 #define IDirect3DRMLight_GetConstantAttenuation(p)        (p)->lpVtbl->GetConstantAttenuation(p)
3131 #define IDirect3DRMLight_GetLinearAttenuation(p)          (p)->lpVtbl->GetLinearAttenuation(p)
3132 #define IDirect3DRMLight_GetQuadraticAttenuation(p)       (p)->lpVtbl->GetQuadraticAttenuation(p)
3133 #define IDirect3DRMLight_GetColor(p)                      (p)->lpVtbl->GetColor(p)
3134 #define IDirect3DRMLight_GetType(p)                       (p)->lpVtbl->GetType(p)
3135 #define IDirect3DRMLight_SetEnableFrame(p,a)              (p)->lpVtbl->SetEnableFrame(p,a)
3136 #define IDirect3DRMLight_GetEnableFrame(p,a)              (p)->lpVtbl->GetEnableFrame(p,a)
3137 #else
3138 /*** IUnknown methods ***/
3139 #define IDirect3DRMLight_QueryInterface(p,a,b)            (p)->QueryInterface(a,b)
3140 #define IDirect3DRMLight_AddRef(p)                        (p)->AddRef()
3141 #define IDirect3DRMLight_Release(p)                       (p)->Release()
3142 /*** IDirect3DRMObject methods ***/
3143 #define IDirect3DRMLight_Clone(p,a,b,c)                   (p)->Clone(a,b,c)
3144 #define IDirect3DRMLight_AddDestroyCallback(p,a,b)        (p)->AddDestroyCallback(a,b)
3145 #define IDirect3DRMLight_DeleteDestroyCallback(p,a,b)     (p)->DeleteDestroyCallback(a,b)
3146 #define IDirect3DRMLight_SetAppData(p,a)                  (p)->SetAppData(a)
3147 #define IDirect3DRMLight_GetAppData(p)                    (p)->GetAppData()
3148 #define IDirect3DRMLight_SetName(p,a)                     (p)->SetName(a)
3149 #define IDirect3DRMLight_GetName(p,a,b)                   (p)->GetName(a,b)
3150 #define IDirect3DRMLight_GetClassName(p,a,b)              (p)->GetClassName(a,b)
3151 /*** IDirect3DRMLight methods ***/
3152 #define IDirect3DRMLight_SetType(p,a)                     (p)->SetType(a)
3153 #define IDirect3DRMLight_SetColor(p,a)                    (p)->SetColor(a)
3154 #define IDirect3DRMLight_SetColorRGB(p,a,b,c)             (p)->SetColorRGB(a,b,c)
3155 #define IDirect3DRMLight_SetRange(p,a)                    (p)->SetRange(a)
3156 #define IDirect3DRMLight_SetUmbra(p,a)                    (p)->SetUmbra(a)
3157 #define IDirect3DRMLight_SetPenumbra(p,a)                 (p)->SetPenumbra(a)
3158 #define IDirect3DRMLight_SetConstantAttenuation(p,a)      (p)->SetConstantAttenuation(a)
3159 #define IDirect3DRMLight_SetLinearAttenuation(p,a)        (p)->SetLinearAttenuation(a)
3160 #define IDirect3DRMLight_SetQuadraticAttenuation(p,a)     (p)->SetQuadraticAttenuation(a)
3161 #define IDirect3DRMLight_GetRange(p)                      (p)->GetRange()
3162 #define IDirect3DRMLight_GetUmbra(p)                      (p)->GetUmbra()
3163 #define IDirect3DRMLight_GetPenumbra(p)                   (p)->GetPenumbra()
3164 #define IDirect3DRMLight_GetConstantAttenuation(p)        (p)->GetConstantAttenuation()
3165 #define IDirect3DRMLight_GetLinearAttenuation(p)          (p)->GetLinearAttenuation()
3166 #define IDirect3DRMLight_GetQuadraticAttenuation(p)       (p)->GetQuadraticAttenuation()
3167 #define IDirect3DRMLight_GetColor(p)                      (p)->GetColor()
3168 #define IDirect3DRMLight_GetType(p)                       (p)->GetType()
3169 #define IDirect3DRMLight_SetEnableFrame(p,a)              (p)->SetEnableFrame(a)
3170 #define IDirect3DRMLight_GetEnableFrame(p,a)              (p)->GetEnableFrame(a)
3171 #endif
3172
3173 /*****************************************************************************
3174  * IDirect3DRMTexture interface
3175  */
3176 #define INTERFACE IDirect3DRMTexture
3177 DECLARE_INTERFACE_(IDirect3DRMTexture, IDirect3DRMVisual)
3178 {
3179     /*** IUnknown methods ***/
3180     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
3181     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
3182     STDMETHOD_(ULONG,Release)(THIS) PURE;
3183     /*** IDirect3DRMObject methods ***/
3184     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
3185     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
3186     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
3187     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
3188     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
3189     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
3190     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
3191     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
3192     /*** IDirect3DRMTexture methods ***/
3193     STDMETHOD(InitFromFile)(THIS_ const char *filename) PURE;
3194     STDMETHOD(InitFromSurface)(THIS_ LPDIRECTDRAWSURFACE lpDDS) PURE;
3195     STDMETHOD(InitFromResource)(THIS_ HRSRC) PURE;
3196     STDMETHOD(Changed)(THIS_ BOOL pixels, BOOL palette) PURE;
3197     STDMETHOD(SetColors)(THIS_ DWORD) PURE;
3198     STDMETHOD(SetShades)(THIS_ DWORD) PURE;
3199     STDMETHOD(SetDecalSize)(THIS_ D3DVALUE width, D3DVALUE height) PURE;
3200     STDMETHOD(SetDecalOrigin)(THIS_ LONG x, LONG y) PURE;
3201     STDMETHOD(SetDecalScale)(THIS_ DWORD) PURE;
3202     STDMETHOD(SetDecalTransparency)(THIS_ BOOL) PURE;
3203     STDMETHOD(SetDecalTransparentColor)(THIS_ D3DCOLOR) PURE;
3204     STDMETHOD(GetDecalSize)(THIS_ D3DVALUE *width_return, D3DVALUE *height_return) PURE;
3205     STDMETHOD(GetDecalOrigin)(THIS_ LONG *x_return, LONG *y_return) PURE;
3206     STDMETHOD_(D3DRMIMAGE *, GetImage)(THIS) PURE;
3207     STDMETHOD_(DWORD, GetShades)(THIS) PURE;
3208     STDMETHOD_(DWORD, GetColors)(THIS) PURE;
3209     STDMETHOD_(DWORD, GetDecalScale)(THIS) PURE;
3210     STDMETHOD_(BOOL, GetDecalTransparency)(THIS) PURE;
3211     STDMETHOD_(D3DCOLOR, GetDecalTransparentColor)(THIS) PURE;
3212 };
3213 #undef INTERFACE
3214
3215 #if !defined(__cplusplus) || defined(CINTERFACE)
3216 /*** IUnknown methods ***/
3217 #define IDirect3DRMTexture_QueryInterface(p,a,b)            (p)->lpVtbl->QueryInterface(p,a,b)
3218 #define IDirect3DRMTexture_AddRef(p)                        (p)->lpVtbl->AddRef(p)
3219 #define IDirect3DRMTexture_Release(p)                       (p)->lpVtbl->Release(p)
3220 /*** IDirect3DRMObject methods ***/
3221 #define IDirect3DRMTexture_Clone(p,a,b,c)                   (p)->lpVtbl->Clone(p,a,b,c)
3222 #define IDirect3DRMTexture_AddDestroyCallback(p,a,b)        (p)->lpVtbl->AddDestroyCallback(p,a,b)
3223 #define IDirect3DRMTexture_DeleteDestroyCallback(p,a,b)     (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
3224 #define IDirect3DRMTexture_SetAppData(p,a)                  (p)->lpVtbl->SetAppData(p,a)
3225 #define IDirect3DRMTexture_GetAppData(p)                    (p)->lpVtbl->GetAppData(p)
3226 #define IDirect3DRMTexture_SetName(p,a)                     (p)->lpVtbl->SetName(p,a)
3227 #define IDirect3DRMTexture_GetName(p,a,b)                   (p)->lpVtbl->GetName(p,a,b)
3228 #define IDirect3DRMTexture_GetClassName(p,a,b)              (p)->lpVtbl->GetClassName(p,a,b)
3229 /*** IDirect3DRMTexture methods ***/
3230 #define IDirect3DRMTexture_InitFromFile(p,a)                (p)->lpVtbl->InitFromFile(p,a)
3231 #define IDirect3DRMTexture_InitFromSurface(p,a)             (p)->lpVtbl->InitFromSurface(p,a)
3232 #define IDirect3DRMTexture_InitFromResource(p,a)            (p)->lpVtbl->InitFromResource(p,a)
3233 #define IDirect3DRMTexture_Changed(p,a,b)                   (p)->lpVtbl->Changed(p,a,b)
3234 #define IDirect3DRMTexture_SetColors(p,a)                   (p)->lpVtbl->SetColors(p,a)
3235 #define IDirect3DRMTexture_SetShades(p,a)                   (p)->lpVtbl->SetShades(p,a)
3236 #define IDirect3DRMTexture_SetDecalSize(p,a,b)              (p)->lpVtbl->SetDecalSize(p,a,b)
3237 #define IDirect3DRMTexture_SetDecalOrigin(p,a,b)            (p)->lpVtbl->SetDecalOrigin(p,a,b)
3238 #define IDirect3DRMTexture_SetDecalScale(p,a)               (p)->lpVtbl->SetDecalScale(p,a)
3239 #define IDirect3DRMTexture_SetDecalTransparency(p,a)        (p)->lpVtbl->SetDecalTransparency(p,a)
3240 #define IDirect3DRMTexture_SetDecalTransparencyColor(p,a)   (p)->lpVtbl->SetDecalTransparentColor(p,a)
3241 #define IDirect3DRMTexture_GetDecalSize(p,a,b)              (p)->lpVtbl->GetDecalSize(p,a,b)
3242 #define IDirect3DRMTexture_GetDecalOrigin(p,a,b)            (p)->lpVtbl->GetDecalOrigin(p,a,b)
3243 #define IDirect3DRMTexture_GetImage(p)                      (p)->lpVtbl->GetImage(p)
3244 #define IDirect3DRMTexture_GetShades(p)                     (p)->lpVtbl->GetShades(p)
3245 #define IDirect3DRMTexture_GetColors(p)                     (p)->lpVtbl->GetColors(p)
3246 #define IDirect3DRMTexture_GetDecalScale(p)                 (p)->lpVtbl->GetDecalScale(p)
3247 #define IDirect3DRMTexture_GetDecalTransparency(p)          (p)->lpVtbl->GetDecalTransparency(p)
3248 #define IDirect3DRMTexture_GetDecalTransparencyColor(p)     (p)->lpVtbl->GetDecalTransparencyColor(p)
3249 #else
3250 /*** IUnknown methods ***/
3251 #define IDirect3DRMTexture_QueryInterface(p,a,b)            (p)->QueryInterface(a,b)
3252 #define IDirect3DRMTexture_AddRef(p)                        (p)->AddRef()
3253 #define IDirect3DRMTexture_Release(p)                       (p)->Release()
3254 /*** IDirect3DRMObject methods ***/
3255 #define IDirect3DRMTexture_Clone(p,a,b,c)                   (p)->Clone(a,b,c)
3256 #define IDirect3DRMTexture_AddDestroyCallback(p,a,b)        (p)->AddDestroyCallback(a,b)
3257 #define IDirect3DRMTexture_DeleteDestroyCallback(p,a,b)     (p)->DeleteDestroyCallback(a,b)
3258 #define IDirect3DRMTexture_SetAppData(p,a)                  (p)->SetAppData(a)
3259 #define IDirect3DRMTexture_GetAppData(p)                    (p)->GetAppData()
3260 #define IDirect3DRMTexture_SetName(p,a)                     (p)->SetName(a)
3261 #define IDirect3DRMTexture_GetName(p,a,b)                   (p)->GetName(a,b)
3262 #define IDirect3DRMTexture_GetClassName(p,a,b)              (p)->GetClassName(a,b)
3263 /*** IDirect3DRMTexture methods ***/
3264 #define IDirect3DRMTexture_InitFromFile(p,a)                (p)->InitFromFile(a)
3265 #define IDirect3DRMTexture_InitFromSurface(p,a)             (p)->InitFromSurface(a)
3266 #define IDirect3DRMTexture_InitFromResource(p,a)            (p)->InitFromResource(a)
3267 #define IDirect3DRMTexture_Changed(p,a,b)                   (p)->Changed(a,b)
3268 #define IDirect3DRMTexture_SetColors(p,a)                   (p)->SetColors(a)
3269 #define IDirect3DRMTexture_SetShades(p,a)                   (p)->SetShades(a)
3270 #define IDirect3DRMTexture_SetDecalSize(p,a,b)              (p)->SetDecalSize(a,b)
3271 #define IDirect3DRMTexture_SetDecalOrigin(p,a,b)            (p)->SetDecalOrigin(a,b)
3272 #define IDirect3DRMTexture_SetDecalScale(p,a)               (p)->SetDecalScale(a)
3273 #define IDirect3DRMTexture_SetDecalTransparency(p,a)        (p)->SetDecalTransparency(a)
3274 #define IDirect3DRMTexture_SetDecalTransparencyColor(p,a)   (p)->SetDecalTransparentColor(a)
3275 #define IDirect3DRMTexture_GetDecalSize(p,a,b)              (p)->GetDecalSize(a,b)
3276 #define IDirect3DRMTexture_GetDecalOrigin(p,a,b)            (p)->GetDecalOrigin(a,b)
3277 #define IDirect3DRMTexture_GetImage(p)                      (p)->GetImage()
3278 #define IDirect3DRMTexture_GetShades(p)                     (p)->GetShades()
3279 #define IDirect3DRMTexture_GetColors(p)                     (p)->GetColors()
3280 #define IDirect3DRMTexture_GetDecalScale(p)                 (p)->GetDecalScale()
3281 #define IDirect3DRMTexture_GetDecalTransparency(p)          (p)->GetDecalTransparency()
3282 #define IDirect3DRMTexture_GetDecalTransparencyColor(p)     (p)->GetDecalTransparencyColor()
3283 #endif
3284
3285 /*****************************************************************************
3286  * IDirect3DRMTexture2 interface
3287  */
3288 #define INTERFACE IDirect3DRMTexture2
3289 DECLARE_INTERFACE_(IDirect3DRMTexture2, IDirect3DRMTexture)
3290 {
3291     /*** IUnknown methods ***/
3292     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
3293     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
3294     STDMETHOD_(ULONG,Release)(THIS) PURE;
3295     /*** IDirect3DRMObject methods ***/
3296     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
3297     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
3298     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
3299     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
3300     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
3301     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
3302     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
3303     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
3304     /*** IDirect3DRMTexture methods ***/
3305     STDMETHOD(InitFromFile)(THIS_ const char *filename) PURE;
3306     STDMETHOD(InitFromSurface)(THIS_ LPDIRECTDRAWSURFACE lpDDS) PURE;
3307     STDMETHOD(InitFromResource)(THIS_ HRSRC) PURE;
3308     STDMETHOD(Changed)(THIS_ BOOL pixels, BOOL palette) PURE;
3309     STDMETHOD(SetColors)(THIS_ DWORD) PURE;
3310     STDMETHOD(SetShades)(THIS_ DWORD) PURE;
3311     STDMETHOD(SetDecalSize)(THIS_ D3DVALUE width, D3DVALUE height) PURE;
3312     STDMETHOD(SetDecalOrigin)(THIS_ LONG x, LONG y) PURE;
3313     STDMETHOD(SetDecalScale)(THIS_ DWORD) PURE;
3314     STDMETHOD(SetDecalTransparency)(THIS_ BOOL) PURE;
3315     STDMETHOD(SetDecalTransparentColor)(THIS_ D3DCOLOR) PURE;
3316     STDMETHOD(GetDecalSize)(THIS_ D3DVALUE *width_return, D3DVALUE *height_return) PURE;
3317     STDMETHOD(GetDecalOrigin)(THIS_ LONG *x_return, LONG *y_return) PURE;
3318     STDMETHOD_(D3DRMIMAGE *, GetImage)(THIS) PURE;
3319     STDMETHOD_(DWORD, GetShades)(THIS) PURE;
3320     STDMETHOD_(DWORD, GetColors)(THIS) PURE;
3321     STDMETHOD_(DWORD, GetDecalScale)(THIS) PURE;
3322     STDMETHOD_(BOOL, GetDecalTransparency)(THIS) PURE;
3323     STDMETHOD_(D3DCOLOR, GetDecalTransparentColor)(THIS) PURE;
3324     /*** IDirect3DRMTexture2 methods ***/
3325     STDMETHOD(InitFromImage)(THIS_ LPD3DRMIMAGE) PURE;
3326     STDMETHOD(InitFromResource2)(THIS_ HMODULE hModule, LPCSTR /* LPCTSTR */ strName, LPCSTR /* LPCTSTR */ strType) PURE;
3327     STDMETHOD(GenerateMIPMap)(THIS_ DWORD) PURE;
3328 };
3329 #undef INTERFACE
3330
3331 #if !defined(__cplusplus) || defined(CINTERFACE)
3332 /*** IUnknown methods ***/
3333 #define IDirect3DRMTexture2_QueryInterface(p,a,b)            (p)->lpVtbl->QueryInterface(p,a,b)
3334 #define IDirect3DRMTexture2_AddRef(p)                        (p)->lpVtbl->AddRef(p)
3335 #define IDirect3DRMTexture2_Release(p)                       (p)->lpVtbl->Release(p)
3336 /*** IDirect3DRMObject methods ***/
3337 #define IDirect3DRMTexture2_Clone(p,a,b,c)                   (p)->lpVtbl->Clone(p,a,b,c)
3338 #define IDirect3DRMTexture2_AddDestroyCallback(p,a,b)        (p)->lpVtbl->AddDestroyCallback(p,a,b)
3339 #define IDirect3DRMTexture2_DeleteDestroyCallback(p,a,b)     (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
3340 #define IDirect3DRMTexture2_SetAppData(p,a)                  (p)->lpVtbl->SetAppData(p,a)
3341 #define IDirect3DRMTexture2_GetAppData(p)                    (p)->lpVtbl->GetAppData(p)
3342 #define IDirect3DRMTexture2_SetName(p,a)                     (p)->lpVtbl->SetName(p,a)
3343 #define IDirect3DRMTexture2_GetName(p,a,b)                   (p)->lpVtbl->GetName(p,a,b)
3344 #define IDirect3DRMTexture2_GetClassName(p,a,b)              (p)->lpVtbl->GetClassName(p,a,b)
3345 /*** IDirect3DRMTexture methods ***/
3346 #define IDirect3DRMTexture2_InitFromFile(p,a)                (p)->lpVtbl->InitFromFile(p,a)
3347 #define IDirect3DRMTexture2_InitFromSurface(p,a)             (p)->lpVtbl->InitFromSurface(p,a)
3348 #define IDirect3DRMTexture2_InitFromResource(p,a)            (p)->lpVtbl->InitFromResource(p,a)
3349 #define IDirect3DRMTexture2_Changed(p,a,b)                   (p)->lpVtbl->Changed(p,a,b)
3350 #define IDirect3DRMTexture2_SetColors(p,a)                   (p)->lpVtbl->SetColors(p,a)
3351 #define IDirect3DRMTexture2_SetShades(p,a)                   (p)->lpVtbl->SetShades(p,a)
3352 #define IDirect3DRMTexture2_SetDecalSize(p,a,b)              (p)->lpVtbl->SetDecalSize(p,a,b)
3353 #define IDirect3DRMTexture2_SetDecalOrigin(p,a,b)            (p)->lpVtbl->SetDecalOrigin(p,a,b)
3354 #define IDirect3DRMTexture2_SetDecalScale(p,a)               (p)->lpVtbl->SetDecalScale(p,a)
3355 #define IDirect3DRMTexture2_SetDecalTransparency(p,a)        (p)->lpVtbl->SetDecalTransparency(p,a)
3356 #define IDirect3DRMTexture2_SetDecalTransparencyColor(p,a)   (p)->lpVtbl->SetDecalTransparentColor(p,a)
3357 #define IDirect3DRMTexture2_GetDecalSize(p,a,b)              (p)->lpVtbl->GetDecalSize(p,a,b)
3358 #define IDirect3DRMTexture2_GetDecalOrigin(p,a,b)            (p)->lpVtbl->GetDecalOrigin(p,a,b)
3359 #define IDirect3DRMTexture2_GetImage(p)                      (p)->lpVtbl->GetImage(p)
3360 #define IDirect3DRMTexture2_GetShades(p)                     (p)->lpVtbl->GetShades(p)
3361 #define IDirect3DRMTexture2_GetColors(p)                     (p)->lpVtbl->GetColors(p)
3362 #define IDirect3DRMTexture2_GetDecalScale(p)                 (p)->lpVtbl->GetDecalScale(p)
3363 #define IDirect3DRMTexture2_GetDecalTransparency(p)          (p)->lpVtbl->GetDecalTransparency(p)
3364 #define IDirect3DRMTexture2_GetDecalTransparencyColor(p)     (p)->lpVtbl->GetDecalTransparencyColor(p)
3365 /*** IDirect3DRMTexture2 methods ***/
3366 #define IDirect3DRMTexture2_InitFromImage(p,a)               (p)->lpVtbl->InitFromImage(p,a)
3367 #define IDirect3DRMTexture2_InitFromResource2(p,a,b,c)       (p)->lpVtbl->InitFromResource2(p,a,b,c)
3368 #define IDirect3DRMTexture2_GenerateMIPMap(p,a)              (p)->lpVtbl->GenerateMIPMap(p,a)
3369 #else
3370 /*** IUnknown methods ***/
3371 #define IDirect3DRMTexture2_QueryInterface(p,a,b)            (p)->QueryInterface(a,b)
3372 #define IDirect3DRMTexture2_AddRef(p)                        (p)->AddRef()
3373 #define IDirect3DRMTexture2_Release(p)                       (p)->Release()
3374 /*** IDirect3DRMObject methods ***/
3375 #define IDirect3DRMTexture2_Clone(p,a,b,c)                   (p)->Clone(a,b,c)
3376 #define IDirect3DRMTexture2_AddDestroyCallback(p,a,b)        (p)->AddDestroyCallback(a,b)
3377 #define IDirect3DRMTexture2_DeleteDestroyCallback(p,a,b)     (p)->DeleteDestroyCallback(a,b)
3378 #define IDirect3DRMTexture2_SetAppData(p,a)                  (p)->SetAppData(a)
3379 #define IDirect3DRMTexture2_GetAppData(p)                    (p)->GetAppData()
3380 #define IDirect3DRMTexture2_SetName(p,a)                     (p)->SetName(a)
3381 #define IDirect3DRMTexture2_GetName(p,a,b)                   (p)->GetName(a,b)
3382 #define IDirect3DRMTexture2_GetClassName(p,a,b)              (p)->GetClassName(a,b)
3383 /*** IDirect3DRMTexture methods ***/
3384 #define IDirect3DRMTexture2_InitFromFile(p,a)                (p)->InitFromFile(a)
3385 #define IDirect3DRMTexture2_InitFromSurface(p,a)             (p)->InitFromSurface(a)
3386 #define IDirect3DRMTexture2_InitFromResource(p,a)            (p)->InitFromResource(a)
3387 #define IDirect3DRMTexture2_Changed(p,a,b)                   (p)->Changed(a,b)
3388 #define IDirect3DRMTexture2_SetColors(p,a)                   (p)->SetColors(a)
3389 #define IDirect3DRMTexture2_SetShades(p,a)                   (p)->SetShades(a)
3390 #define IDirect3DRMTexture2_SetDecalSize(p,a,b)              (p)->SetDecalSize(a,b)
3391 #define IDirect3DRMTexture2_SetDecalOrigin(p,a,b)            (p)->SetDecalOrigin(a,b)
3392 #define IDirect3DRMTexture2_SetDecalScale(p,a)               (p)->SetDecalScale(a)
3393 #define IDirect3DRMTexture2_SetDecalTransparency(p,a)        (p)->SetDecalTransparency(a)
3394 #define IDirect3DRMTexture2_SetDecalTransparencyColor(p,a)   (p)->SetDecalTransparentColor(a)
3395 #define IDirect3DRMTexture2_GetDecalSize(p,a,b)              (p)->GetDecalSize(a,b)
3396 #define IDirect3DRMTexture2_GetDecalOrigin(p,a,b)            (p)->GetDecalOrigin(a,b)
3397 #define IDirect3DRMTexture2_GetImage(p)                      (p)->GetImage()
3398 #define IDirect3DRMTexture2_GetShades(p)                     (p)->GetShades()
3399 #define IDirect3DRMTexture2_GetColors(p)                     (p)->GetColors()
3400 #define IDirect3DRMTexture2_GetDecalScale(p)                 (p)->GetDecalScale()
3401 #define IDirect3DRMTexture2_GetDecalTransparency(p)          (p)->GetDecalTransparency()
3402 #define IDirect3DRMTexture2_GetDecalTransparencyColor(p)     (p)->GetDecalTransparencyColor()
3403 /*** IDirect3DRMTexture2 methods ***/
3404 #define IDirect3DRMTexture2_InitFromImage(p,a)               (p)->InitFromImage(a)
3405 #define IDirect3DRMTexture2_InitFromResource2(p,a,b,c)       (p)->InitFromResource2(a,b,c)
3406 #define IDirect3DRMTexture2_GenerateMIPMap(p,a)              (p)->GenerateMIPMap(a)
3407 #endif
3408
3409 /*****************************************************************************
3410  * IDirect3DRMTexture3 interface
3411  */
3412 #define INTERFACE IDirect3DRMTexture3
3413 DECLARE_INTERFACE_(IDirect3DRMTexture3, IDirect3DRMVisual)
3414 {
3415     /*** IUnknown methods ***/
3416     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
3417     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
3418     STDMETHOD_(ULONG,Release)(THIS) PURE;
3419     /*** IDirect3DRMObject methods ***/
3420     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
3421     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
3422     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
3423     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
3424     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
3425     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
3426     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
3427     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
3428     /*** IDirect3DRMTexture3 methods ***/
3429     STDMETHOD(InitFromFile)(THIS_ const char *filename) PURE;
3430     STDMETHOD(InitFromSurface)(THIS_ LPDIRECTDRAWSURFACE lpDDS) PURE;
3431     STDMETHOD(InitFromResource)(THIS_ HRSRC) PURE;
3432     STDMETHOD(Changed)(THIS_ DWORD dwFlags, DWORD dwcRects, LPRECT pRects) PURE;
3433     STDMETHOD(SetColors)(THIS_ DWORD) PURE;
3434     STDMETHOD(SetShades)(THIS_ DWORD) PURE;
3435     STDMETHOD(SetDecalSize)(THIS_ D3DVALUE width, D3DVALUE height) PURE;
3436     STDMETHOD(SetDecalOrigin)(THIS_ LONG x, LONG y) PURE;
3437     STDMETHOD(SetDecalScale)(THIS_ DWORD) PURE;
3438     STDMETHOD(SetDecalTransparency)(THIS_ BOOL) PURE;
3439     STDMETHOD(SetDecalTransparentColor)(THIS_ D3DCOLOR) PURE;
3440     STDMETHOD(GetDecalSize)(THIS_ D3DVALUE *width_return, D3DVALUE *height_return) PURE;
3441     STDMETHOD(GetDecalOrigin)(THIS_ LONG *x_return, LONG *y_return) PURE;
3442     STDMETHOD_(D3DRMIMAGE *, GetImage)(THIS) PURE;
3443     STDMETHOD_(DWORD, GetShades)(THIS) PURE;
3444     STDMETHOD_(DWORD, GetColors)(THIS) PURE;
3445     STDMETHOD_(DWORD, GetDecalScale)(THIS) PURE;
3446     STDMETHOD_(BOOL, GetDecalTransparency)(THIS) PURE;
3447     STDMETHOD_(D3DCOLOR, GetDecalTransparentColor)(THIS) PURE;
3448     STDMETHOD(InitFromImage)(THIS_ LPD3DRMIMAGE) PURE;
3449     STDMETHOD(InitFromResource2)(THIS_ HMODULE hModule, LPCSTR /* LPCTSTR */ strName, LPCSTR /* LPCTSTR */ strType) PURE;
3450     STDMETHOD(GenerateMIPMap)(THIS_ DWORD) PURE;
3451     STDMETHOD(GetSurface)(THIS_ DWORD dwFlags, LPDIRECTDRAWSURFACE* lplpDDS) PURE;
3452     STDMETHOD(SetCacheOptions)(THIS_ LONG lImportance, DWORD dwFlags) PURE;
3453     STDMETHOD(GetCacheOptions)(THIS_ LPLONG lplImportance, LPDWORD lpdwFlags) PURE;
3454     STDMETHOD(SetDownsampleCallback)(THIS_ D3DRMDOWNSAMPLECALLBACK pCallback, LPVOID pArg) PURE;
3455     STDMETHOD(SetValidationCallback)(THIS_ D3DRMVALIDATIONCALLBACK pCallback, LPVOID pArg) PURE;
3456 };
3457 #undef INTERFACE
3458
3459 #if !defined(__cplusplus) || defined(CINTERFACE)
3460 /*** IUnknown methods ***/
3461 #define IDirect3DRMTexture3_QueryInterface(p,a,b)            (p)->lpVtbl->QueryInterface(p,a,b)
3462 #define IDirect3DRMTexture3_AddRef(p)                        (p)->lpVtbl->AddRef(p)
3463 #define IDirect3DRMTexture3_Release(p)                       (p)->lpVtbl->Release(p)
3464 /*** IDirect3DRMObject methods ***/
3465 #define IDirect3DRMTexture3_Clone(p,a,b,c)                   (p)->lpVtbl->Clone(p,a,b,c)
3466 #define IDirect3DRMTexture3_AddDestroyCallback(p,a,b)        (p)->lpVtbl->AddDestroyCallback(p,a,b)
3467 #define IDirect3DRMTexture3_DeleteDestroyCallback(p,a,b)     (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
3468 #define IDirect3DRMTexture3_SetAppData(p,a)                  (p)->lpVtbl->SetAppData(p,a)
3469 #define IDirect3DRMTexture3_GetAppData(p)                    (p)->lpVtbl->GetAppData(p)
3470 #define IDirect3DRMTexture3_SetName(p,a)                     (p)->lpVtbl->SetName(p,a)
3471 #define IDirect3DRMTexture3_GetName(p,a,b)                   (p)->lpVtbl->GetName(p,a,b)
3472 #define IDirect3DRMTexture3_GetClassName(p,a,b)              (p)->lpVtbl->GetClassName(p,a,b)
3473 /*** IDirect3DRMTexture3 methods ***/
3474 #define IDirect3DRMTexture3_InitFromFile(p,a)                (p)->lpVtbl->InitFromFile(p,a)
3475 #define IDirect3DRMTexture3_InitFromSurface(p,a)             (p)->lpVtbl->InitFromSurface(p,a)
3476 #define IDirect3DRMTexture3_InitFromResource(p,a)            (p)->lpVtbl->InitFromResource(p,a)
3477 #define IDirect3DRMTexture3_Changed(p,a,b,c)                 (p)->lpVtbl->Changed(p,a,b,c)
3478 #define IDirect3DRMTexture3_SetColors(p,a)                   (p)->lpVtbl->SetColors(p,a)
3479 #define IDirect3DRMTexture3_SetShades(p,a)                   (p)->lpVtbl->SetShades(p,a)
3480 #define IDirect3DRMTexture3_SetDecalSize(p,a,b)              (p)->lpVtbl->SetDecalSize(p,a,b)
3481 #define IDirect3DRMTexture3_SetDecalOrigin(p,a,b)            (p)->lpVtbl->SetDecalOrigin(p,a,b)
3482 #define IDirect3DRMTexture3_SetDecalScale(p,a)               (p)->lpVtbl->SetDecalScale(p,a)
3483 #define IDirect3DRMTexture3_SetDecalTransparency(p,a)        (p)->lpVtbl->SetDecalTransparency(p,a)
3484 #define IDirect3DRMTexture3_SetDecalTransparencyColor(p,a)   (p)->lpVtbl->SetDecalTransparentColor(p,a)
3485 #define IDirect3DRMTexture3_GetDecalSize(p,a,b)              (p)->lpVtbl->GetDecalSize(p,a,b)
3486 #define IDirect3DRMTexture3_GetDecalOrigin(p,a,b)            (p)->lpVtbl->GetDecalOrigin(p,a,b)
3487 #define IDirect3DRMTexture3_GetImage(p)                      (p)->lpVtbl->GetImage(p)
3488 #define IDirect3DRMTexture3_GetShades(p)                     (p)->lpVtbl->GetShades(p)
3489 #define IDirect3DRMTexture3_GetColors(p)                     (p)->lpVtbl->GetColors(p)
3490 #define IDirect3DRMTexture3_GetDecalScale(p)                 (p)->lpVtbl->GetDecalScale(p)
3491 #define IDirect3DRMTexture3_GetDecalTransparency(p)          (p)->lpVtbl->GetDecalTransparency(p)
3492 #define IDirect3DRMTexture3_GetDecalTransparencyColor(p)     (p)->lpVtbl->GetDecalTransparencyColor(p)
3493 #define IDirect3DRMTexture3_InitFromImage(p,a)               (p)->lpVtbl->InitFromImage(p,a)
3494 #define IDirect3DRMTexture3_InitFromResource2(p,a,b,c)       (p)->lpVtbl->InitFromResource2(p,a,b,c)
3495 #define IDirect3DRMTexture3_GenerateMIPMap(p,a)              (p)->lpVtbl->GenerateMIPMap(p,a)
3496 #define IDirect3DRMTexture3_GetSurface(p,a,b)                (p)->lpVtbl->GetSurface(p,a,b)
3497 #define IDirect3DRMTexture3_SetCacheOptions(p,a,b)           (p)->lpVtbl->SetCacheOptions(p,a,b)
3498 #define IDirect3DRMTexture3_GetCacheOptions(p,a,b)           (p)->lpVtbl->GetCacheOptions(p,a,b)
3499 #define IDirect3DRMTexture3_SetDownsampleCallback(p,a,b)     (p)->lpVtbl->SetDownsampleCallback(p,a,b)
3500 #define IDirect3DRMTexture3_SetValidationCallback(p,a,b)     (p)->lpVtbl->SetValidationCallback(p,a,b)
3501 #else
3502 /*** IUnknown methods ***/
3503 #define IDirect3DRMTexture3_QueryInterface(p,a,b)            (p)->QueryInterface(a,b)
3504 #define IDirect3DRMTexture3_AddRef(p)                        (p)->AddRef()
3505 #define IDirect3DRMTexture3_Release(p)                       (p)->Release()
3506 /*** IDirect3DRMObject methods ***/
3507 #define IDirect3DRMTexture3_Clone(p,a,b,c)                   (p)->Clone(a,b,c)
3508 #define IDirect3DRMTexture3_AddDestroyCallback(p,a,b)        (p)->AddDestroyCallback(a,b)
3509 #define IDirect3DRMTexture3_DeleteDestroyCallback(p,a,b)     (p)->DeleteDestroyCallback(a,b)
3510 #define IDirect3DRMTexture3_SetAppData(p,a)                  (p)->SetAppData(a)
3511 #define IDirect3DRMTexture3_GetAppData(p)                    (p)->GetAppData()
3512 #define IDirect3DRMTexture3_SetName(p,a)                     (p)->SetName(a)
3513 #define IDirect3DRMTexture3_GetName(p,a,b)                   (p)->GetName(a,b)
3514 #define IDirect3DRMTexture3_GetClassName(p,a,b)              (p)->GetClassName(a,b)
3515 /*** IDirect3DRMTexture3 methods ***/
3516 #define IDirect3DRMTexture3_InitFromFile(p,a)                (p)->InitFromFile(a)
3517 #define IDirect3DRMTexture3_InitFromSurface(p,a)             (p)->InitFromSurface(a)
3518 #define IDirect3DRMTexture3_InitFromResource(p,a)            (p)->InitFromResource(a)
3519 #define IDirect3DRMTexture3_Changed(p,a,b,c)                 (p)->Changed(a,b,c)
3520 #define IDirect3DRMTexture3_SetColors(p,a)                   (p)->SetColors(a)
3521 #define IDirect3DRMTexture3_SetShades(p,a)                   (p)->SetShades(a)
3522 #define IDirect3DRMTexture3_SetDecalSize(p,a,b)              (p)->SetDecalSize(a,b)
3523 #define IDirect3DRMTexture3_SetDecalOrigin(p,a,b)            (p)->SetDecalOrigin(a,b)
3524 #define IDirect3DRMTexture3_SetDecalScale(p,a)               (p)->SetDecalScale(a)
3525 #define IDirect3DRMTexture3_SetDecalTransparency(p,a)        (p)->SetDecalTransparency(a)
3526 #define IDirect3DRMTexture3_SetDecalTransparencyColor(p,a)   (p)->SetDecalTransparentColor(a)
3527 #define IDirect3DRMTexture3_GetDecalSize(p,a,b)              (p)->GetDecalSize(a,b)
3528 #define IDirect3DRMTexture3_GetDecalOrigin(p,a,b)            (p)->GetDecalOrigin(a,b)
3529 #define IDirect3DRMTexture3_GetImage(p)                      (p)->GetImage()
3530 #define IDirect3DRMTexture3_GetShades(p)                     (p)->GetShades()
3531 #define IDirect3DRMTexture3_GetColors(p)                     (p)->GetColors()
3532 #define IDirect3DRMTexture3_GetDecalScale(p)                 (p)->GetDecalScale()
3533 #define IDirect3DRMTexture3_GetDecalTransparency(p)          (p)->GetDecalTransparency()
3534 #define IDirect3DRMTexture3_GetDecalTransparencyColor(p)     (p)->GetDecalTransparencyColor()
3535 #define IDirect3DRMTexture3_InitFromImage(p,a)               (p)->InitFromImage(a)
3536 #define IDirect3DRMTexture3_InitFromResource2(p,a,b,c)       (p)->InitFromResource2(a,b,c)
3537 #define IDirect3DRMTexture3_GenerateMIPMap(p,a)              (p)->GenerateMIPMap(a)
3538 #define IDirect3DRMTexture3_GetSurface(p,a,b)                (p)->GetSurface(a,b)
3539 #define IDirect3DRMTexture3_SetCacheOptions(p,a,b)           (p)->SetCacheOptions(a,b)
3540 #define IDirect3DRMTexture3_GetCacheOptions(p,a,b)           (p)->GetCacheOptions(a,b)
3541 #define IDirect3DRMTexture3_SetDownsampleCallback(p,a,b)     (p)->SetDownsampleCallback(a,b)
3542 #define IDirect3DRMTexture3_SetValidationCallback(p,a,b)     (p)->SetValidationCallback(a,b)
3543 #endif
3544
3545 /*****************************************************************************
3546  * IDirect3DRMWrap interface
3547  */
3548 #define INTERFACE IDirect3DRMWrap
3549 DECLARE_INTERFACE_(IDirect3DRMWrap, IDirect3DRMObject)
3550 {
3551     /*** IUnknown methods ***/
3552     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
3553     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
3554     STDMETHOD_(ULONG,Release)(THIS) PURE;
3555     /*** IDirect3DRMObject methods ***/
3556     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
3557     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
3558     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
3559     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
3560     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
3561     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
3562     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
3563     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
3564     /*** IDirect3DRMWrap methods ***/
3565     STDMETHOD(Init)
3566     (   THIS_ D3DRMWRAPTYPE, LPDIRECT3DRMFRAME ref,
3567         D3DVALUE ox, D3DVALUE oy, D3DVALUE oz,
3568         D3DVALUE dx, D3DVALUE dy, D3DVALUE dz,
3569         D3DVALUE ux, D3DVALUE uy, D3DVALUE uz,
3570         D3DVALUE ou, D3DVALUE ov,
3571         D3DVALUE su, D3DVALUE sv
3572     ) PURE;
3573     STDMETHOD(Apply)(THIS_ LPDIRECT3DRMOBJECT) PURE;
3574     STDMETHOD(ApplyRelative)(THIS_ LPDIRECT3DRMFRAME frame, LPDIRECT3DRMOBJECT) PURE;
3575 };
3576 #undef INTERFACE
3577
3578 #if !defined(__cplusplus) || defined(CINTERFACE)
3579 /*** IUnknown methods ***/
3580 #define IDirect3DRMWrap_QueryInterface(p,a,b)                   (p)->lpVtbl->QueryInterface(p,a,b)
3581 #define IDirect3DRMWrap_AddRef(p)                               (p)->lpVtbl->AddRef(p)
3582 #define IDirect3DRMWrap_Release(p)                              (p)->lpVtbl->Release(p)
3583 /*** IDirect3DRMObject methods ***/
3584 #define IDirect3DRMWrap_Clone(p,a,b,c)                          (p)->lpVtbl->Clone(p,a,b,c)
3585 #define IDirect3DRMWrap_AddDestroyCallback(p,a,b)               (p)->lpVtbl->AddDestroyCallback(p,a,b)
3586 #define IDirect3DRMWrap_DeleteDestroyCallback(p,a,b)            (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
3587 #define IDirect3DRMWrap_SetAppData(p,a)                         (p)->lpVtbl->SetAppData(p,a)
3588 #define IDirect3DRMWrap_GetAppData(p)                           (p)->lpVtbl->GetAppData(p)
3589 #define IDirect3DRMWrap_SetName(p,a)                            (p)->lpVtbl->SetName(p,a)
3590 #define IDirect3DRMWrap_GetName(p,a,b)                          (p)->lpVtbl->GetName(p,a,b)
3591 #define IDirect3DRMWrap_GetClassName(p,a,b)                     (p)->lpVtbl->GetClassName(p,a,b)
3592 /*** IDirect3DRMWrap methods ***/
3593 #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)
3594 #define IDirect3DRMWrap_Apply(p,a)                              (p)->lpVtbl->Apply(p,a)
3595 #define IDirect3DRMWrap_ApplyRelative(p,a,b)                    (p)->lpVtbl->ApplyRelative(p,a,b)
3596 #else
3597 /*** IUnknown methods ***/
3598 #define IDirect3DRMWrap_QueryInterface(p,a,b)                   (p)->QueryInterface(a,b)
3599 #define IDirect3DRMWrap_AddRef(p)                               (p)->AddRef()
3600 #define IDirect3DRMWrap_Release(p)                              (p)->Release()
3601 /*** IDirect3DRMObject methods ***/
3602 #define IDirect3DRMWrap_Clone(p,a,b,c)                          (p)->Clone(a,b,c)
3603 #define IDirect3DRMWrap_AddDestroyCallback(p,a,b)               (p)->AddDestroyCallback(a,b)
3604 #define IDirect3DRMWrap_DeleteDestroyCallback(p,a,b)            (p)->DeleteDestroyCallback(a,b)
3605 #define IDirect3DRMWrap_SetAppData(p,a)                         (p)->SetAppData(a)
3606 #define IDirect3DRMWrap_GetAppData(p)                           (p)->GetAppData()
3607 #define IDirect3DRMWrap_SetName(p,a)                            (p)->SetName(a)
3608 #define IDirect3DRMWrap_GetName(p,a,b)                          (p)->GetName(a,b)
3609 #define IDirect3DRMWrap_GetClassName(p,a,b)                     (p)->GetClassName(a,b)
3610 /*** IDirect3DRMWrap methods ***/
3611 #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)
3612 #define IDirect3DRMWrap_Apply(p,a)                              (p)->Apply(p,a)
3613 #define IDirect3DRMWrap_ApplyRelative(p,a,b)                    (p)->ApplyRelative(p,a,b)
3614 #endif
3615
3616 /*****************************************************************************
3617  * IDirect3DRMMaterial interface
3618  */
3619 #define INTERFACE IDirect3DRMMaterial
3620 DECLARE_INTERFACE_(IDirect3DRMMaterial, IDirect3DRMObject)
3621 {
3622     /*** IUnknown methods ***/
3623     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
3624     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
3625     STDMETHOD_(ULONG,Release)(THIS) PURE;
3626     /*** IDirect3DRMObject methods ***/
3627     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
3628     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
3629     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
3630     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
3631     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
3632     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
3633     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
3634     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
3635     /*** IDirect3DRMMaterial methods ***/
3636     STDMETHOD(SetPower)(THIS_ D3DVALUE power) PURE;
3637     STDMETHOD(SetSpecular)(THIS_ D3DVALUE r, D3DVALUE g, D3DVALUE b) PURE;
3638     STDMETHOD(SetEmissive)(THIS_ D3DVALUE r, D3DVALUE g, D3DVALUE b) PURE;
3639     STDMETHOD_(D3DVALUE, GetPower)(THIS) PURE;
3640     STDMETHOD(GetSpecular)(THIS_ D3DVALUE* r, D3DVALUE* g, D3DVALUE* b) PURE;
3641     STDMETHOD(GetEmissive)(THIS_ D3DVALUE* r, D3DVALUE* g, D3DVALUE* b) PURE;
3642 };
3643 #undef INTERFACE
3644
3645 #if !defined(__cplusplus) || defined(CINTERFACE)
3646 /*** IUnknown methods ***/
3647 #define IDirect3DRMMaterial_QueryInterface(p,a,b)                   (p)->lpVtbl->QueryInterface(p,a,b)
3648 #define IDirect3DRMMaterial_AddRef(p)                               (p)->lpVtbl->AddRef(p)
3649 #define IDirect3DRMMaterial_Release(p)                              (p)->lpVtbl->Release(p)
3650 /*** IDirect3DRMObject methods ***/
3651 #define IDirect3DRMMaterial_Clone(p,a,b,c)                          (p)->lpVtbl->Clone(p,a,b,c)
3652 #define IDirect3DRMMaterial_AddDestroyCallback(p,a,b)               (p)->lpVtbl->AddDestroyCallback(p,a,b)
3653 #define IDirect3DRMMaterial_DeleteDestroyCallback(p,a,b)            (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
3654 #define IDirect3DRMMaterial_SetAppData(p,a)                         (p)->lpVtbl->SetAppData(p,a)
3655 #define IDirect3DRMMaterial_GetAppData(p)                           (p)->lpVtbl->GetAppData(p)
3656 #define IDirect3DRMMaterial_SetName(p,a)                            (p)->lpVtbl->SetName(p,a)
3657 #define IDirect3DRMMaterial_GetName(p,a,b)                          (p)->lpVtbl->GetName(p,a,b)
3658 #define IDirect3DRMMaterial_GetClassName(p,a,b)                     (p)->lpVtbl->GetClassName(p,a,b)
3659 /*** IDirect3DRMMaterial methods ***/
3660 #define IDirect3DRMMaterial_SetPower(p,a)                           (p)->lpVtbl->SetPower(p,a)
3661 #define IDirect3DRMMaterial_SetSpecular(p,a,b,c)                    (p)->lpVtbl->SetSpecular(p,a,b,c)
3662 #define IDirect3DRMMaterial_SetEmissive(p,a,b,c)                    (p)->lpVtbl->SetEmissive(p,a,b,c)
3663 #define IDirect3DRMMaterial_GetPower(p)                             (p)->lpVtbl->GetPower(p)
3664 #define IDirect3DRMMaterial_GetSpecular(p,a,b,c)                    (p)->lpVtbl->GetSpecular(p,a,b,c)
3665 #define IDirect3DRMMaterial_GetEmissive(p,a,b,c)                    (p)->lpVtbl->GetEmissive(p,a,b,c)
3666 #else
3667 /*** IUnknown methods ***/
3668 #define IDirect3DRMMaterial_QueryInterface(p,a,b)                   (p)->QueryInterface(a,b)
3669 #define IDirect3DRMMaterial_AddRef(p)                               (p)->AddRef()
3670 #define IDirect3DRMMaterial_Release(p)                              (p)->Release()
3671 /*** IDirect3DRMObject methods ***/
3672 #define IDirect3DRMMaterial_Clone(p,a,b,c)                          (p)->Clone(a,b,c)
3673 #define IDirect3DRMMaterial_AddDestroyCallback(p,a,b)               (p)->AddDestroyCallback(a,b)
3674 #define IDirect3DRMMaterial_DeleteDestroyCallback(p,a,b)            (p)->DeleteDestroyCallback(a,b)
3675 #define IDirect3DRMMaterial_SetAppData(p,a)                         (p)->SetAppData(a)
3676 #define IDirect3DRMMaterial_GetAppData(p)                           (p)->GetAppData()
3677 #define IDirect3DRMMaterial_SetName(p,a)                            (p)->SetName(a)
3678 #define IDirect3DRMMaterial_GetName(p,a,b)                          (p)->GetName(a,b)
3679 #define IDirect3DRMMaterial_GetClassName(p,a,b)                     (p)->GetClassName(a,b)
3680 /*** IDirect3DRMMaterial methods ***/
3681 #define IDirect3DRMMaterial_SetPower(p,a)                           (p)->SetPower(a)
3682 #define IDirect3DRMMaterial_SetSpecular(p,a,b,c)                    (p)->SetSpecular(a,b,c)
3683 #define IDirect3DRMMaterial_SetEmissive(p,a,b,c)                    (p)->SetEmissive(a,b,c)
3684 #define IDirect3DRMMaterial_GetPower(p)                             (p)->GetPower()
3685 #define IDirect3DRMMaterial_GetSpecular(p,a,b,c)                    (p)->GetSpecular(a,b,c)
3686 #define IDirect3DRMMaterial_GetEmissive(p,a,b,c)                    (p)->GetEmissive(a,b,c)
3687 #endif
3688
3689 /*****************************************************************************
3690  * IDirect3DRMMaterial2 interface
3691  */
3692 #define INTERFACE IDirect3DRMMaterial2
3693 DECLARE_INTERFACE_(IDirect3DRMMaterial2, IDirect3DRMObject)
3694 {
3695     /*** IUnknown methods ***/
3696     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
3697     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
3698     STDMETHOD_(ULONG,Release)(THIS) PURE;
3699     /*** IDirect3DRMObject methods ***/
3700     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
3701     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
3702     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
3703     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
3704     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
3705     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
3706     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
3707     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
3708     /*** IDirect3DRMMaterial2 methods ***/
3709     STDMETHOD(SetPower)(THIS_ D3DVALUE power) PURE;
3710     STDMETHOD(SetSpecular)(THIS_ D3DVALUE r, D3DVALUE g, D3DVALUE b) PURE;
3711     STDMETHOD(SetEmissive)(THIS_ D3DVALUE r, D3DVALUE g, D3DVALUE b) PURE;
3712     STDMETHOD_(D3DVALUE, GetPower)(THIS) PURE;
3713     STDMETHOD(GetSpecular)(THIS_ D3DVALUE* r, D3DVALUE* g, D3DVALUE* b) PURE;
3714     STDMETHOD(GetEmissive)(THIS_ D3DVALUE* r, D3DVALUE* g, D3DVALUE* b) PURE;
3715     STDMETHOD(GetAmbient)(THIS_ D3DVALUE* r, D3DVALUE* g, D3DVALUE* b) PURE;
3716     STDMETHOD(SetAmbient)(THIS_ D3DVALUE r, D3DVALUE g, D3DVALUE b) PURE;
3717 };
3718 #undef INTERFACE
3719
3720 #if !defined(__cplusplus) || defined(CINTERFACE)
3721 /*** IUnknown methods ***/
3722 #define IDirect3DRMMaterial2_QueryInterface(p,a,b)                   (p)->lpVtbl->QueryInterface(p,a,b)
3723 #define IDirect3DRMMaterial2_AddRef(p)                               (p)->lpVtbl->AddRef(p)
3724 #define IDirect3DRMMaterial2_Release(p)                              (p)->lpVtbl->Release(p)
3725 /*** IDirect3DRMObject methods ***/
3726 #define IDirect3DRMMaterial2_Clone(p,a,b,c)                          (p)->lpVtbl->Clone(p,a,b,c)
3727 #define IDirect3DRMMaterial2_AddDestroyCallback(p,a,b)               (p)->lpVtbl->AddDestroyCallback(p,a,b)
3728 #define IDirect3DRMMaterial2_DeleteDestroyCallback(p,a,b)            (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
3729 #define IDirect3DRMMaterial2_SetAppData(p,a)                         (p)->lpVtbl->SetAppData(p,a)
3730 #define IDirect3DRMMaterial2_GetAppData(p)                           (p)->lpVtbl->GetAppData(p)
3731 #define IDirect3DRMMaterial2_SetName(p,a)                            (p)->lpVtbl->SetName(p,a)
3732 #define IDirect3DRMMaterial2_GetName(p,a,b)                          (p)->lpVtbl->GetName(p,a,b)
3733 #define IDirect3DRMMaterial2_GetClassName(p,a,b)                     (p)->lpVtbl->GetClassName(p,a,b)
3734 /*** IDirect3DRMMaterial2 methods ***/
3735 #define IDirect3DRMMaterial2_SetPower(p,a)                           (p)->lpVtbl->SetPower(p,a)
3736 #define IDirect3DRMMaterial2_SetSpecular(p,a,b,c)                    (p)->lpVtbl->SetSpecular(p,a,b,c)
3737 #define IDirect3DRMMaterial2_SetEmissive(p,a,b,c)                    (p)->lpVtbl->SetEmissive(p,a,b,c)
3738 #define IDirect3DRMMaterial2_GetPower(p)                             (p)->lpVtbl->GetPower(p)
3739 #define IDirect3DRMMaterial2_GetSpecular(p,a,b,c)                    (p)->lpVtbl->GetSpecular(p,a,b,c)
3740 #define IDirect3DRMMaterial2_GetEmissive(p,a,b,c)                    (p)->lpVtbl->GetEmissive(p,a,b,c)
3741 #define IDirect3DRMMaterial2_SetAmbient(p,a,b,c)                     (p)->lpVtbl->SetAmbient(p,a,b,c)
3742 #define IDirect3DRMMaterial2_GetAmbient(p,a,b,c)                     (p)->lpVtbl->GetAmbient(p,a,b,c)
3743 #else
3744 /*** IUnknown methods ***/
3745 #define IDirect3DRMMaterial2_QueryInterface(p,a,b)                   (p)->QueryInterface(a,b)
3746 #define IDirect3DRMMaterial2_AddRef(p)                               (p)->AddRef()
3747 #define IDirect3DRMMaterial2_Release(p)                              (p)->Release()
3748 /*** IDirect3DRMObject methods ***/
3749 #define IDirect3DRMMaterial2_Clone(p,a,b,c)                          (p)->Clone(a,b,c)
3750 #define IDirect3DRMMaterial2_AddDestroyCallback(p,a,b)               (p)->AddDestroyCallback(a,b)
3751 #define IDirect3DRMMaterial2_DeleteDestroyCallback(p,a,b)            (p)->DeleteDestroyCallback(a,b)
3752 #define IDirect3DRMMaterial2_SetAppData(p,a)                         (p)->SetAppData(a)
3753 #define IDirect3DRMMaterial2_GetAppData(p)                           (p)->GetAppData()
3754 #define IDirect3DRMMaterial2_SetName(p,a)                            (p)->SetName(a)
3755 #define IDirect3DRMMaterial2_GetName(p,a,b)                          (p)->GetName(a,b)
3756 #define IDirect3DRMMaterial2_GetClassName(p,a,b)                     (p)->GetClassName(a,b)
3757 /*** IDirect3DRMMaterial2 methods ***/
3758 #define IDirect3DRMMaterial2_SetPower(p,a)                           (p)->SetPower(a)
3759 #define IDirect3DRMMaterial2_SetSpecular(p,a,b,c)                    (p)->SetSpecular(a,b,c)
3760 #define IDirect3DRMMaterial2_SetEmissive(p,a,b,c)                    (p)->SetEmissive(a,b,c)
3761 #define IDirect3DRMMaterial2_GetPower(p)                             (p)->GetPower()
3762 #define IDirect3DRMMaterial2_GetSpecular(p,a,b,c)                    (p)->GetSpecular(a,b,c)
3763 #define IDirect3DRMMaterial2_GetEmissive(p,a,b,c)                    (p)->GetEmissive(a,b,c)
3764 #define IDirect3DRMMaterial2_SetAmbient(p,a,b,c)                     (p)->SetAmbient(a,b,c)
3765 #define IDirect3DRMMaterial2_GetAmbient(p,a,b,c)                     (p)->GetAmbient(a,b,c)
3766 #endif
3767
3768 /*****************************************************************************
3769  * IDirect3DRMAnimation interface
3770  */
3771 #define INTERFACE IDirect3DRMAnimation
3772 DECLARE_INTERFACE_(IDirect3DRMAnimation, IDirect3DRMObject)
3773 {
3774     /*** IUnknown methods ***/
3775     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
3776     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
3777     STDMETHOD_(ULONG,Release)(THIS) PURE;
3778     /*** IDirect3DRMObject methods ***/
3779     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
3780     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
3781     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
3782     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
3783     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
3784     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
3785     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
3786     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
3787     /*** IDirect3DRMAnimation methods ***/
3788     STDMETHOD(SetOptions)(THIS_ D3DRMANIMATIONOPTIONS flags) PURE;
3789     STDMETHOD(AddRotateKey)(THIS_ D3DVALUE time, D3DRMQUATERNION *q) PURE;
3790     STDMETHOD(AddPositionKey)(THIS_ D3DVALUE time, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
3791     STDMETHOD(AddScaleKey)(THIS_ D3DVALUE time, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
3792     STDMETHOD(DeleteKey)(THIS_ D3DVALUE time) PURE;
3793     STDMETHOD(SetFrame)(THIS_ LPDIRECT3DRMFRAME frame) PURE;
3794     STDMETHOD(SetTime)(THIS_ D3DVALUE time) PURE;
3795     STDMETHOD_(D3DRMANIMATIONOPTIONS, GetOptions)(THIS) PURE;
3796 };
3797 #undef INTERFACE
3798
3799 #if !defined(__cplusplus) || defined(CINTERFACE)
3800 /*** IUnknown methods ***/
3801 #define IDirect3DRMAnimation_QueryInterface(p,a,b)                   (p)->lpVtbl->QueryInterface(p,a,b)
3802 #define IDirect3DRMAnimation_AddRef(p)                               (p)->lpVtbl->AddRef(p)
3803 #define IDirect3DRMAnimation_Release(p)                              (p)->lpVtbl->Release(p)
3804 /*** IDirect3DRMObject methods ***/
3805 #define IDirect3DRMAnimation_Clone(p,a,b,c)                          (p)->lpVtbl->Clone(p,a,b,c)
3806 #define IDirect3DRMAnimation_AddDestroyCallback(p,a,b)               (p)->lpVtbl->AddDestroyCallback(p,a,b)
3807 #define IDirect3DRMAnimation_DeleteDestroyCallback(p,a,b)            (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
3808 #define IDirect3DRMAnimation_SetAppData(p,a)                         (p)->lpVtbl->SetAppData(p,a)
3809 #define IDirect3DRMAnimation_GetAppData(p)                           (p)->lpVtbl->GetAppData(p)
3810 #define IDirect3DRMAnimation_SetName(p,a)                            (p)->lpVtbl->SetName(p,a)
3811 #define IDirect3DRMAnimation_GetName(p,a,b)                          (p)->lpVtbl->GetName(p,a,b)
3812 #define IDirect3DRMAnimation_GetClassName(p,a,b)                     (p)->lpVtbl->GetClassName(p,a,b)
3813 /*** IDirect3DRMAnimation methods ***/
3814 #define IDirect3DRMAnimation_SetOptions(p,a)                         (p)->lpVtbl->SetOptions(p,a)
3815 #define IDirect3DRMAnimation_AddRotateKey(p,a,b)                     (p)->lpVtbl->AddRotateKey(p,a,b)
3816 #define IDirect3DRMAnimation_AddPositionKey(p,a,b,c,d)               (p)->lpVtbl->AddPositionKey(p,a,b,c,d)
3817 #define IDirect3DRMAnimation_AddScaleKey(p,a,b,c,d)                  (p)->lpVtbl->AddScaleKey(p,a,b,c,d)
3818 #define IDirect3DRMAnimation_DeleteKey(p,a)                          (p)->lpVtbl->DeleteKey(p,a)
3819 #define IDirect3DRMAnimation_SetFrame(p,a)                           (p)->lpVtbl->SetFrame(p,a)
3820 #define IDirect3DRMAnimation_SetTime(p,a)                            (p)->lpVtbl->SetTime(p,a)
3821 #define IDirect3DRMAnimation_GetOptions(p)                           (p)->lpVtbl->GetOptions(p)
3822 #else
3823 /*** IUnknown methods ***/
3824 #define IDirect3DRMAnimation_QueryInterface(p,a,b)                   (p)->QueryInterface(a,b)
3825 #define IDirect3DRMAnimation_AddRef(p)                               (p)->AddRef()
3826 #define IDirect3DRMAnimation_Release(p)                              (p)->Release()
3827 /*** IDirect3DRMObject methods ***/
3828 #define IDirect3DRMAnimation_Clone(p,a,b,c)                          (p)->Clone(a,b,c)
3829 #define IDirect3DRMAnimation_AddDestroyCallback(p,a,b)               (p)->AddDestroyCallback(a,b)
3830 #define IDirect3DRMAnimation_DeleteDestroyCallback(p,a,b)            (p)->DeleteDestroyCallback(a,b)
3831 #define IDirect3DRMAnimation_SetAppData(p,a)                         (p)->SetAppData(a)
3832 #define IDirect3DRMAnimation_GetAppData(p)                           (p)->GetAppData()
3833 #define IDirect3DRMAnimation_SetName(p,a)                            (p)->SetName(a)
3834 #define IDirect3DRMAnimation_GetName(p,a,b)                          (p)->GetName(a,b)
3835 #define IDirect3DRMAnimation_GetClassName(p,a,b)                     (p)->GetClassName(a,b)
3836 /*** IDirect3DRMAnimation methods ***/
3837 #define IDirect3DRMAnimation_SetOptions(p,a)                         (p)->SetOptions(a)
3838 #define IDirect3DRMAnimation_AddRotateKey(p,a,b)                     (p)->AddRotateKey(a,b)
3839 #define IDirect3DRMAnimation_AddPositionKey(p,a,b,c,d)               (p)->AddPositionKey(a,b,c,d)
3840 #define IDirect3DRMAnimation_AddScaleKey(p,a,b,c,d)                  (p)->AddScaleKey(a,b,c,d)
3841 #define IDirect3DRMAnimation_DeleteKey(p,a)                          (p)->DeleteKey(a)
3842 #define IDirect3DRMAnimation_SetFrame(p,a)                           (p)->SetFrame(a)
3843 #define IDirect3DRMAnimation_SetTime(p,a)                            (p)->SetTime(a)
3844 #define IDirect3DRMAnimation_GetOptions(p)                           (p)->GetOptions()
3845 #endif
3846
3847 /*****************************************************************************
3848  * IDirect3DRMAnimation2 interface
3849  */
3850 #define INTERFACE IDirect3DRMAnimation2
3851 DECLARE_INTERFACE_(IDirect3DRMAnimation2, IDirect3DRMObject)
3852 {
3853     /*** IUnknown methods ***/
3854     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
3855     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
3856     STDMETHOD_(ULONG,Release)(THIS) PURE;
3857     /*** IDirect3DRMObject methods ***/
3858     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
3859     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
3860     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
3861     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
3862     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
3863     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
3864     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
3865     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
3866     /*** IDirect3DRMAnimation2 methods ***/
3867     STDMETHOD(SetOptions)(THIS_ D3DRMANIMATIONOPTIONS flags) PURE;
3868     STDMETHOD(AddRotateKey)(THIS_ D3DVALUE time, D3DRMQUATERNION *q) PURE;
3869     STDMETHOD(AddPositionKey)(THIS_ D3DVALUE time, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
3870     STDMETHOD(AddScaleKey)(THIS_ D3DVALUE time, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
3871     STDMETHOD(DeleteKey)(THIS_ D3DVALUE time) PURE;
3872     STDMETHOD(SetFrame)(THIS_ LPDIRECT3DRMFRAME3 frame) PURE;
3873     STDMETHOD(SetTime)(THIS_ D3DVALUE time) PURE;
3874     STDMETHOD_(D3DRMANIMATIONOPTIONS, GetOptions)(THIS) PURE;
3875     STDMETHOD(GetFrame)(THIS_ LPDIRECT3DRMFRAME3 *lpD3DFrame) PURE;
3876     STDMETHOD(DeleteKeyByID)(THIS_ DWORD dwID) PURE;
3877     STDMETHOD(AddKey)(THIS_ LPD3DRMANIMATIONKEY lpKey) PURE;
3878     STDMETHOD(ModifyKey)(THIS_ LPD3DRMANIMATIONKEY lpKey) PURE;
3879     STDMETHOD(GetKeys)(THIS_ D3DVALUE dvTimeMin,
3880                        D3DVALUE dvTimeMax, LPDWORD lpdwNumKeys,
3881                        LPD3DRMANIMATIONKEY lpKey);
3882 };
3883 #undef INTERFACE
3884
3885 #if !defined(__cplusplus) || defined(CINTERFACE)
3886 /*** IUnknown methods ***/
3887 #define IDirect3DRMAnimation2_QueryInterface(p,a,b)                   (p)->lpVtbl->QueryInterface(p,a,b)
3888 #define IDirect3DRMAnimation2_AddRef(p)                               (p)->lpVtbl->AddRef(p)
3889 #define IDirect3DRMAnimation2_Release(p)                              (p)->lpVtbl->Release(p)
3890 /*** IDirect3DRMObject methods ***/
3891 #define IDirect3DRMAnimation2_Clone(p,a,b,c)                          (p)->lpVtbl->Clone(p,a,b,c)
3892 #define IDirect3DRMAnimation2_AddDestroyCallback(p,a,b)               (p)->lpVtbl->AddDestroyCallback(p,a,b)
3893 #define IDirect3DRMAnimation2_DeleteDestroyCallback(p,a,b)            (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
3894 #define IDirect3DRMAnimation2_SetAppData(p,a)                         (p)->lpVtbl->SetAppData(p,a)
3895 #define IDirect3DRMAnimation2_GetAppData(p)                           (p)->lpVtbl->GetAppData(p)
3896 #define IDirect3DRMAnimation2_SetName(p,a)                            (p)->lpVtbl->SetName(p,a)
3897 #define IDirect3DRMAnimation2_GetName(p,a,b)                          (p)->lpVtbl->GetName(p,a,b)
3898 #define IDirect3DRMAnimation2_GetClassName(p,a,b)                     (p)->lpVtbl->GetClassName(p,a,b)
3899 /*** IDirect3DRMAnimation2 methods ***/
3900 #define IDirect3DRMAnimation2_SetOptions(p,a)                         (p)->lpVtbl->SetOptions(p,a)
3901 #define IDirect3DRMAnimation2_AddRotateKey(p,a,b)                     (p)->lpVtbl->AddRotateKey(p,a,b)
3902 #define IDirect3DRMAnimation2_AddPositionKey(p,a,b,c,d)               (p)->lpVtbl->AddPositionKey(p,a,b,c,d)
3903 #define IDirect3DRMAnimation2_AddScaleKey(p,a,b,c,d)                  (p)->lpVtbl->AddScaleKey(p,a,b,c,d)
3904 #define IDirect3DRMAnimation2_DeleteKey(p,a)                          (p)->lpVtbl->DeleteKey(p,a)
3905 #define IDirect3DRMAnimation2_SetFrame(p,a)                           (p)->lpVtbl->SetFrame(p,a)
3906 #define IDirect3DRMAnimation2_SetTime(p,a)                            (p)->lpVtbl->SetTime(p,a)
3907 #define IDirect3DRMAnimation2_GetOptions(p)                           (p)->lpVtbl->GetOptions(p)
3908 #define IDirect3DRMAnimation2_GetFrame(p,a)                           (p)->lpVtbl->GetFrame(p,a)
3909 #define IDirect3DRMAnimation2_DeleteKeyByID(p,a)                      (p)->lpVtbl->DeleteKeyByID(p,a)
3910 #define IDirect3DRMAnimation2_AddKey(p,a)                             (p)->lpVtbl->AddKey(p,a)
3911 #define IDirect3DRMAnimation2_ModifyKey(p,a)                          (p)->lpVtbl->ModifyKey(p,a)
3912 #define IDirect3DRMAnimation2_GetKeys(p,a,b,c,d)                      (p)->lpVtbl->GetKeys(p,a,b,c,d)
3913 #else
3914 /*** IUnknown methods ***/
3915 #define IDirect3DRMAnimation2_QueryInterface(p,a,b)                   (p)->QueryInterface(a,b)
3916 #define IDirect3DRMAnimation2_AddRef(p)                               (p)->AddRef()
3917 #define IDirect3DRMAnimation2_Release(p)                              (p)->Release()
3918 /*** IDirect3DRMObject methods ***/
3919 #define IDirect3DRMAnimation2_Clone(p,a,b,c)                          (p)->Clone(a,b,c)
3920 #define IDirect3DRMAnimation2_AddDestroyCallback(p,a,b)               (p)->AddDestroyCallback(a,b)
3921 #define IDirect3DRMAnimation2_DeleteDestroyCallback(p,a,b)            (p)->DeleteDestroyCallback(a,b)
3922 #define IDirect3DRMAnimation2_SetAppData(p,a)                         (p)->SetAppData(a)
3923 #define IDirect3DRMAnimation2_GetAppData(p)                           (p)->GetAppData()
3924 #define IDirect3DRMAnimation2_SetName(p,a)                            (p)->SetName(a)
3925 #define IDirect3DRMAnimation2_GetName(p,a,b)                          (p)->GetName(a,b)
3926 #define IDirect3DRMAnimation2_GetClassName(p,a,b)                     (p)->GetClassName(a,b)
3927 /*** IDirect3DRMAnimation2 methods ***/
3928 #define IDirect3DRMAnimation2_SetOptions(p,a)                         (p)->SetOptions(a)
3929 #define IDirect3DRMAnimation2_AddRotateKey(p,a,b)                     (p)->AddRotateKey(a,b)
3930 #define IDirect3DRMAnimation2_AddPositionKey(p,a,b,c,d)               (p)->AddPositionKey(a,b,c,d)
3931 #define IDirect3DRMAnimation2_AddScaleKey(p,a,b,c,d)                  (p)->AddScaleKey(a,b,c,d)
3932 #define IDirect3DRMAnimation2_DeleteKey(p,a)                          (p)->DeleteKey(a)
3933 #define IDirect3DRMAnimation2_SetFrame(p,a)                           (p)->SetFrame(a)
3934 #define IDirect3DRMAnimation2_SetTime(p,a)                            (p)->SetTime(a)
3935 #define IDirect3DRMAnimation2_GetOptions(p)                           (p)->GetOptions()
3936 #define IDirect3DRMAnimation2_GetFrame(p,a)                           (p)->GetFrame(a)
3937 #define IDirect3DRMAnimation2_DeleteKeyByID(p,a)                      (p)->DeleteKeyByID(a)
3938 #define IDirect3DRMAnimation2_AddKey(p,a)                             (p)->AddKey(a)
3939 #define IDirect3DRMAnimation2_ModifyKey(p,a)                          (p)->ModifyKey(a)
3940 #define IDirect3DRMAnimation2_GetKeys(p,a,b,c,d)                      (p)->GetKeys(a,b,c,d)
3941 #endif
3942
3943 /*****************************************************************************
3944  * IDirect3DRMAnimationSet interface
3945  */
3946 #define INTERFACE IDirect3DRMAnimationSet
3947 DECLARE_INTERFACE_(IDirect3DRMAnimationSet, IDirect3DRMObject)
3948 {
3949     /*** IUnknown methods ***/
3950     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
3951     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
3952     STDMETHOD_(ULONG,Release)(THIS) PURE;
3953     /*** IDirect3DRMObject methods ***/
3954     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
3955     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
3956     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
3957     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
3958     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
3959     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
3960     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
3961     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
3962     /*** IDirect3DRMAnimationSet methods ***/
3963     STDMETHOD(AddAnimation)(THIS_ LPDIRECT3DRMANIMATION aid) PURE;
3964     STDMETHOD(Load)(THIS_ LPVOID filename, LPVOID name, D3DRMLOADOPTIONS loadflags, D3DRMLOADTEXTURECALLBACK, LPVOID lpArg, LPDIRECT3DRMFRAME parent)PURE;
3965     STDMETHOD(DeleteAnimation)(THIS_ LPDIRECT3DRMANIMATION aid) PURE;
3966     STDMETHOD(SetTime)(THIS_ D3DVALUE time) PURE;
3967 };
3968 #undef INTERFACE
3969
3970 #if !defined(__cplusplus) || defined(CINTERFACE)
3971 /*** IUnknown methods ***/
3972 #define IDirect3DRMAnimationSet_QueryInterface(p,a,b)                   (p)->lpVtbl->QueryInterface(p,a,b)
3973 #define IDirect3DRMAnimationSet_AddRef(p)                               (p)->lpVtbl->AddRef(p)
3974 #define IDirect3DRMAnimationSet_Release(p)                              (p)->lpVtbl->Release(p)
3975 /*** IDirect3DRMObject methods ***/
3976 #define IDirect3DRMAnimationSet_Clone(p,a,b,c)                          (p)->lpVtbl->Clone(p,a,b,c)
3977 #define IDirect3DRMAnimationSet_AddDestroyCallback(p,a,b)               (p)->lpVtbl->AddDestroyCallback(p,a,b)
3978 #define IDirect3DRMAnimationSet_DeleteDestroyCallback(p,a,b)            (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
3979 #define IDirect3DRMAnimationSet_SetAppData(p,a)                         (p)->lpVtbl->SetAppData(p,a)
3980 #define IDirect3DRMAnimationSet_GetAppData(p)                           (p)->lpVtbl->GetAppData(p)
3981 #define IDirect3DRMAnimationSet_SetName(p,a)                            (p)->lpVtbl->SetName(p,a)
3982 #define IDirect3DRMAnimationSet_GetName(p,a,b)                          (p)->lpVtbl->GetName(p,a,b)
3983 #define IDirect3DRMAnimationSet_GetClassName(p,a,b)                     (p)->lpVtbl->GetClassName(p,a,b)
3984 /*** IDirect3DRMAnimationSet methods ***/
3985 #define IDirect3DRMAnimationSet_AddAnimation(p,a)                       (p)->lpVtbl->AddAnimation(p,a)
3986 #define IDirect3DRMAnimationSet_Load(p,a,b,c,d,e,f)                     (p)->lpVtbl->Load(p,a,b,c,d,e,f)
3987 #define IDirect3DRMAnimationSet_DeleteAnimation(p,a)                    (p)->lpVtbl->DeleteAnimation(p,a)
3988 #define IDirect3DRMAnimationSet_SetTime(p,a)                            (p)->lpVtbl->SetTime(p,a)
3989 #else
3990 /*** IUnknown methods ***/
3991 #define IDirect3DRMAnimationSet_QueryInterface(p,a,b)                   (p)->QueryInterface(a,b)
3992 #define IDirect3DRMAnimationSet_AddRef(p)                               (p)->AddRef()
3993 #define IDirect3DRMAnimationSet_Release(p)                              (p)->Release()
3994 /*** IDirect3DRMObject methods ***/
3995 #define IDirect3DRMAnimationSet_Clone(p,a,b,c)                          (p)->Clone(a,b,c)
3996 #define IDirect3DRMAnimationSet_AddDestroyCallback(p,a,b)               (p)->AddDestroyCallback(a,b)
3997 #define IDirect3DRMAnimationSet_DeleteDestroyCallback(p,a,b)            (p)->DeleteDestroyCallback(a,b)
3998 #define IDirect3DRMAnimationSet_SetAppData(p,a)                         (p)->SetAppData(a)
3999 #define IDirect3DRMAnimationSet_GetAppData(p)                           (p)->GetAppData()
4000 #define IDirect3DRMAnimationSet_SetName(p,a)                            (p)->SetName(a)
4001 #define IDirect3DRMAnimationSet_GetName(p,a,b)                          (p)->GetName(a,b)
4002 #define IDirect3DRMAnimationSet_GetClassName(p,a,b)                     (p)->GetClassName(a,b)
4003 /*** IDirect3DRMAnimationSet methods ***/
4004 #define IDirect3DRMAnimationSet_AddAnimation(p,a)                       (p)->AddAnimation(a)
4005 #define IDirect3DRMAnimationSet_Load(p,a,b,c,d,e,f)                     (p)->Load(a,b,c,d,e,f)
4006 #define IDirect3DRMAnimationSet_DeleteAnimation(p,a)                    (p)->DeleteAnimation(a)
4007 #define IDirect3DRMAnimationSet_SetTime(p,a)                            (p)->SetTime(a)
4008 #endif
4009
4010 /*****************************************************************************
4011  * IDirect3DRMAnimationSet2 interface
4012  */
4013 #define INTERFACE IDirect3DRMAnimationSet2
4014 DECLARE_INTERFACE_(IDirect3DRMAnimationSet2, IDirect3DRMObject)
4015 {
4016     /*** IUnknown methods ***/
4017     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
4018     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
4019     STDMETHOD_(ULONG,Release)(THIS) PURE;
4020     /*** IDirect3DRMObject methods ***/
4021     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
4022     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
4023     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
4024     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
4025     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
4026     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
4027     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
4028     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
4029     /*** IDirect3DRMAnimationSet2 methods ***/
4030     STDMETHOD(AddAnimation)(THIS_ LPDIRECT3DRMANIMATION2 aid) PURE;
4031     STDMETHOD(Load)(THIS_ LPVOID filename, LPVOID name, D3DRMLOADOPTIONS loadflags, D3DRMLOADTEXTURE3CALLBACK, LPVOID lpArg, LPDIRECT3DRMFRAME3 parent)PURE;
4032     STDMETHOD(DeleteAnimation)(THIS_ LPDIRECT3DRMANIMATION2 aid) PURE;
4033     STDMETHOD(SetTime)(THIS_ D3DVALUE time) PURE;
4034     STDMETHOD(GetAnimations)(THIS_ LPDIRECT3DRMANIMATIONARRAY *) PURE;
4035 };
4036 #undef INTERFACE
4037
4038 #if !defined(__cplusplus) || defined(CINTERFACE)
4039 /*** IUnknown methods ***/
4040 #define IDirect3DRMAnimationSet2_QueryInterface(p,a,b)                   (p)->lpVtbl->QueryInterface(p,a,b)
4041 #define IDirect3DRMAnimationSet2_AddRef(p)                               (p)->lpVtbl->AddRef(p)
4042 #define IDirect3DRMAnimationSet2_Release(p)                              (p)->lpVtbl->Release(p)
4043 /*** IDirect3DRMObject methods ***/
4044 #define IDirect3DRMAnimationSet2_Clone(p,a,b,c)                          (p)->lpVtbl->Clone(p,a,b,c)
4045 #define IDirect3DRMAnimationSet2_AddDestroyCallback(p,a,b)               (p)->lpVtbl->AddDestroyCallback(p,a,b)
4046 #define IDirect3DRMAnimationSet2_DeleteDestroyCallback(p,a,b)            (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
4047 #define IDirect3DRMAnimationSet2_SetAppData(p,a)                         (p)->lpVtbl->SetAppData(p,a)
4048 #define IDirect3DRMAnimationSet2_GetAppData(p)                           (p)->lpVtbl->GetAppData(p)
4049 #define IDirect3DRMAnimationSet2_SetName(p,a)                            (p)->lpVtbl->SetName(p,a)
4050 #define IDirect3DRMAnimationSet2_GetName(p,a,b)                          (p)->lpVtbl->GetName(p,a,b)
4051 #define IDirect3DRMAnimationSet2_GetClassName(p,a,b)                     (p)->lpVtbl->GetClassName(p,a,b)
4052 /*** IDirect3DRMAnimationSet2 methods ***/
4053 #define IDirect3DRMAnimationSet2_AddAnimation(p,a)                       (p)->lpVtbl->AddAnimation(p,a)
4054 #define IDirect3DRMAnimationSet2_Load(p,a,b,c,d,e,f)                     (p)->lpVtbl->Load(p,a,b,c,d,e,f)
4055 #define IDirect3DRMAnimationSet2_DeleteAnimation(p,a)                    (p)->lpVtbl->DeleteAnimation(p,a)
4056 #define IDirect3DRMAnimationSet2_SetTime(p,a)                            (p)->lpVtbl->SetTime(p,a)
4057 #define IDirect3DRMAnimationSet2_GetAnimations(p,a)                      (p)->lpVtbl->GetAnimations(p,a)
4058 #else
4059 /*** IUnknown methods ***/
4060 #define IDirect3DRMAnimationSet2_QueryInterface(p,a,b)                   (p)->QueryInterface(a,b)
4061 #define IDirect3DRMAnimationSet2_AddRef(p)                               (p)->AddRef()
4062 #define IDirect3DRMAnimationSet2_Release(p)                              (p)->Release()
4063 /*** IDirect3DRMObject methods ***/
4064 #define IDirect3DRMAnimationSet2_Clone(p,a,b,c)                          (p)->Clone(a,b,c)
4065 #define IDirect3DRMAnimationSet2_AddDestroyCallback(p,a,b)               (p)->AddDestroyCallback(a,b)
4066 #define IDirect3DRMAnimationSet2_DeleteDestroyCallback(p,a,b)            (p)->DeleteDestroyCallback(a,b)
4067 #define IDirect3DRMAnimationSet2_SetAppData(p,a)                         (p)->SetAppData(a)
4068 #define IDirect3DRMAnimationSet2_GetAppData(p)                           (p)->GetAppData()
4069 #define IDirect3DRMAnimationSet2_SetName(p,a)                            (p)->SetName(a)
4070 #define IDirect3DRMAnimationSet2_GetName(p,a,b)                          (p)->GetName(a,b)
4071 #define IDirect3DRMAnimationSet2_GetClassName(p,a,b)                     (p)->GetClassName(a,b)
4072 /*** IDirect3DRMAnimationSet2 methods ***/
4073 #define IDirect3DRMAnimationSet2_AddAnimation(p,a)                       (p)->AddAnimation(a)
4074 #define IDirect3DRMAnimationSet2_Load(p,a,b,c,d,e,f)                     (p)->Load(a,b,c,d,e,f)
4075 #define IDirect3DRMAnimationSet2_DeleteAnimation(p,a)                    (p)->DeleteAnimation(a)
4076 #define IDirect3DRMAnimationSet2_SetTime(p,a)                            (p)->SetTime(a)
4077 #define IDirect3DRMAnimationSet2_GetAnimations(p,a)                      (p)->GetAnimations(a)
4078 #endif
4079
4080 /*****************************************************************************
4081  * IDirect3DRMUserVisual interface
4082  */
4083 #define INTERFACE IDirect3DRMUserVisual
4084 DECLARE_INTERFACE_(IDirect3DRMUserVisual, IDirect3DRMVisual)
4085 {
4086     /*** IUnknown methods ***/
4087     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
4088     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
4089     STDMETHOD_(ULONG,Release)(THIS) PURE;
4090     /*** IDirect3DRMObject methods ***/
4091     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
4092     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
4093     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
4094     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
4095     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
4096     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
4097     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
4098     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
4099     /*** IDirect3DRMUserVisual methods ***/
4100     STDMETHOD(Init)(THIS_ D3DRMUSERVISUALCALLBACK fn, void *arg) PURE;
4101 };
4102 #undef INTERFACE
4103
4104 #if !defined(__cplusplus) || defined(CINTERFACE)
4105 /*** IUnknown methods ***/
4106 #define IDirect3DRMUserVisual_QueryInterface(p,a,b)                   (p)->lpVtbl->QueryInterface(p,a,b)
4107 #define IDirect3DRMUserVisual_AddRef(p)                               (p)->lpVtbl->AddRef(p)
4108 #define IDirect3DRMUserVisual_Release(p)                              (p)->lpVtbl->Release(p)
4109 /*** IDirect3DRMObject methods ***/
4110 #define IDirect3DRMUserVisual_Clone(p,a,b,c)                          (p)->lpVtbl->Clone(p,a,b,c)
4111 #define IDirect3DRMUserVisual_AddDestroyCallback(p,a,b)               (p)->lpVtbl->AddDestroyCallback(p,a,b)
4112 #define IDirect3DRMUserVisual_DeleteDestroyCallback(p,a,b)            (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
4113 #define IDirect3DRMUserVisual_SetAppData(p,a)                         (p)->lpVtbl->SetAppData(p,a)
4114 #define IDirect3DRMUserVisual_GetAppData(p)                           (p)->lpVtbl->GetAppData(p)
4115 #define IDirect3DRMUserVisual_SetName(p,a)                            (p)->lpVtbl->SetName(p,a)
4116 #define IDirect3DRMUserVisual_GetName(p,a,b)                          (p)->lpVtbl->GetName(p,a,b)
4117 #define IDirect3DRMUserVisual_GetClassName(p,a,b)                     (p)->lpVtbl->GetClassName(p,a,b)
4118 /*** IDirect3DRMUserVisual methods ***/
4119 #define IDirect3DRMUserVisual_Init(p,a,b)                             (p)->lpVtbl->Init(p,a,b)
4120 #else
4121 /*** IUnknown methods ***/
4122 #define IDirect3DRMUserVisual_QueryInterface(p,a,b)                   (p)->QueryInterface(a,b)
4123 #define IDirect3DRMUserVisual_AddRef(p)                               (p)->AddRef()
4124 #define IDirect3DRMUserVisual_Release(p)                              (p)->Release()
4125 /*** IDirect3DRMObject methods ***/
4126 #define IDirect3DRMUserVisual_Clone(p,a,b,c)                          (p)->Clone(a,b,c)
4127 #define IDirect3DRMUserVisual_AddDestroyCallback(p,a,b)               (p)->AddDestroyCallback(a,b)
4128 #define IDirect3DRMUserVisual_DeleteDestroyCallback(p,a,b)            (p)->DeleteDestroyCallback(a,b)
4129 #define IDirect3DRMUserVisual_SetAppData(p,a)                         (p)->SetAppData(a)
4130 #define IDirect3DRMUserVisual_GetAppData(p)                           (p)->GetAppData()
4131 #define IDirect3DRMUserVisual_SetName(p,a)                            (p)->SetName(a)
4132 #define IDirect3DRMUserVisual_GetName(p,a,b)                          (p)->GetName(a,b)
4133 #define IDirect3DRMUserVisual_GetClassName(p,a,b)                     (p)->GetClassName(a,b)
4134 /*** IDirect3DRMUserVisual methods ***/
4135 #define IDirect3DRMUserVisual_Init(p,a,b)                             (p)->Init(a,b)
4136 #endif
4137
4138 /*****************************************************************************
4139  * IDirect3DRMArray interface
4140  */
4141 #define INTERFACE IDirect3DRMArray
4142 DECLARE_INTERFACE_(IDirect3DRMArray, IUnknown)
4143 {
4144     /*** IUnknown methods ***/
4145     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
4146     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
4147     STDMETHOD_(ULONG,Release)(THIS) PURE;
4148     /*** IDirect3DRMArray methods ***/
4149     STDMETHOD_(DWORD, GetSize)(THIS) PURE;
4150 };
4151 #undef INTERFACE
4152
4153 #if !defined(__cplusplus) || defined(CINTERFACE)
4154 /*** IUnknown methods ***/
4155 #define IDirect3DRMArray_QueryInterface(p,a,b)                   (p)->lpVtbl->QueryInterface(p,a,b)
4156 #define IDirect3DRMArray_AddRef(p)                               (p)->lpVtbl->AddRef(p)
4157 #define IDirect3DRMArray_Release(p)                              (p)->lpVtbl->Release(p)
4158 /*** IDirect3DRMArray methods ***/
4159 #define IDirect3DRMArray_GetSize(p)                              (p)->lpVtbl->GetSize(p)
4160 #else
4161 /*** IUnknown methods ***/
4162 #define IDirect3DRMArray_QueryInterface(p,a,b)                   (p)->QueryInterface(a,b)
4163 #define IDirect3DRMArray_AddRef(p)                               (p)->AddRef()
4164 #define IDirect3DRMArray_Release(p)                              (p)->Release()
4165 /*** IDirect3DRMArray methods ***/
4166 #define IDirect3DRMArray_GetSize(p)                              (p)->GetSize()
4167 #endif
4168
4169 /*****************************************************************************
4170  * IDirect3DRMObjectArray interface
4171  */
4172 #define INTERFACE IDirect3DRMObjectArray
4173 DECLARE_INTERFACE_(IDirect3DRMObjectArray, IDirect3DRMArray)
4174 {
4175     /*** IUnknown methods ***/
4176     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
4177     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
4178     STDMETHOD_(ULONG,Release)(THIS) PURE;
4179     /*** IDirect3DRMArray methods ***/
4180     STDMETHOD_(DWORD, GetSize)(THIS) PURE;
4181     /*** IDirect3DRMObjectArray methods ***/
4182     STDMETHOD(GetElement)(THIS_ DWORD index, LPDIRECT3DRMOBJECT *) PURE;
4183 };
4184 #undef INTERFACE
4185
4186 #if !defined(__cplusplus) || defined(CINTERFACE)
4187 /*** IUnknown methods ***/
4188 #define IDirect3DRMObjectArray_QueryInterface(p,a,b)                   (p)->lpVtbl->QueryInterface(p,a,b)
4189 #define IDirect3DRMObjectArray_AddRef(p)                               (p)->lpVtbl->AddRef(p)
4190 #define IDirect3DRMObjectArray_Release(p)                              (p)->lpVtbl->Release(p)
4191 /*** IDirect3DRMArray methods ***/
4192 #define IDirect3DRMObjectArray_GetSize(p)                              (p)->lpVtbl->GetSize(p)
4193 /*** IDirect3DRMObjectArray methods ***/
4194 #define IDirect3DRMObjectArray_GetElement(p,a,b)                       (p)->lpVtbl->GetElement(p,a,b)
4195 #else
4196 /*** IUnknown methods ***/
4197 #define IDirect3DRMObjectArray_QueryInterface(p,a,b)                   (p)->QueryInterface(a,b)
4198 #define IDirect3DRMObjectArray_AddRef(p)                               (p)->AddRef()
4199 #define IDirect3DRMObjectArray_Release(p)                              (p)->Release()
4200 /*** IDirect3DRMArray methods ***/
4201 #define IDirect3DRMObjectArray_GetSize(p)                              (p)->GetSize()
4202 /*** IDirect3DRMObjectArray methods ***/
4203 #define IDirect3DRMObjectArray_GetElement(p,a,b)                       (p)->GetElement(a,b)
4204 #endif
4205
4206 /*****************************************************************************
4207  * IDirect3DRMDeviceArray interface
4208  */
4209 #define INTERFACE IDirect3DRMDeviceArray
4210 DECLARE_INTERFACE_(IDirect3DRMDeviceArray, IDirect3DRMArray)
4211 {
4212     /*** IUnknown methods ***/
4213     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
4214     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
4215     STDMETHOD_(ULONG,Release)(THIS) PURE;
4216     /*** IDirect3DRMArray methods ***/
4217     STDMETHOD_(DWORD, GetSize)(THIS) PURE;
4218     /*** IDirect3DRMDeviceArray methods ***/
4219     STDMETHOD(GetElement)(THIS_ DWORD index, LPDIRECT3DRMDEVICE *) PURE;
4220 };
4221 #undef INTERFACE
4222
4223 #if !defined(__cplusplus) || defined(CINTERFACE)
4224 /*** IUnknown methods ***/
4225 #define IDirect3DRMDeviceArray_QueryInterface(p,a,b)                   (p)->lpVtbl->QueryInterface(p,a,b)
4226 #define IDirect3DRMDeviceArray_AddRef(p)                               (p)->lpVtbl->AddRef(p)
4227 #define IDirect3DRMDeviceArray_Release(p)                              (p)->lpVtbl->Release(p)
4228 /*** IDirect3DRMArray methods ***/
4229 #define IDirect3DRMDeviceArray_GetSize(p)                              (p)->lpVtbl->GetSize(p)
4230 /*** IDirect3DRMDeviceArray methods ***/
4231 #define IDirect3DRMDeviceArray_GetElement(p,a,b)                       (p)->lpVtbl->GetElement(p,a,b)
4232 #else
4233 /*** IUnknown methods ***/
4234 #define IDirect3DRMDeviceArray_QueryInterface(p,a,b)                   (p)->QueryInterface(a,b)
4235 #define IDirect3DRMDeviceArray_AddRef(p)                               (p)->AddRef()
4236 #define IDirect3DRMDeviceArray_Release(p)                              (p)->Release()
4237 /*** IDirect3DRMArray methods ***/
4238 #define IDirect3DRMDeviceArray_GetSize(p)                              (p)->GetSize()
4239 /*** IDirect3DRMDeviceArray methods ***/
4240 #define IDirect3DRMDeviceArray_GetElement(p,a,b)                       (p)->GetElement(a,b)
4241 #endif
4242
4243 /*****************************************************************************
4244  * IDirect3DRMFrameArray interface
4245  */
4246 #define INTERFACE IDirect3DRMFrameArray
4247 DECLARE_INTERFACE_(IDirect3DRMFrameArray, IDirect3DRMArray)
4248 {
4249     /*** IUnknown methods ***/
4250     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
4251     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
4252     STDMETHOD_(ULONG,Release)(THIS) PURE;
4253     /*** IDirect3DRMArray methods ***/
4254     STDMETHOD_(DWORD, GetSize)(THIS) PURE;
4255     /*** IDirect3DRMFrameArray methods ***/
4256     STDMETHOD(GetElement)(THIS_ DWORD index, LPDIRECT3DRMFRAME *) PURE;
4257 };
4258 #undef INTERFACE
4259
4260 #if !defined(__cplusplus) || defined(CINTERFACE)
4261 /*** IUnknown methods ***/
4262 #define IDirect3DRMFrameArray_QueryInterface(p,a,b)                   (p)->lpVtbl->QueryInterface(p,a,b)
4263 #define IDirect3DRMFrameArray_AddRef(p)                               (p)->lpVtbl->AddRef(p)
4264 #define IDirect3DRMFrameArray_Release(p)                              (p)->lpVtbl->Release(p)
4265 /*** IDirect3DRMArray methods ***/
4266 #define IDirect3DRMFrameArray_GetSize(p)                              (p)->lpVtbl->GetSize(p)
4267 /*** IDirect3DRMFrameArray methods ***/
4268 #define IDirect3DRMFrameArray_GetElement(p,a,b)                       (p)->lpVtbl->GetElement(p,a,b)
4269 #else
4270 /*** IUnknown methods ***/
4271 #define IDirect3DRMFrameArray_QueryInterface(p,a,b)                   (p)->QueryInterface(a,b)
4272 #define IDirect3DRMFrameArray_AddRef(p)                               (p)->AddRef()
4273 #define IDirect3DRMFrameArray_Release(p)                              (p)->Release()
4274 /*** IDirect3DRMArray methods ***/
4275 #define IDirect3DRMFrameArray_GetSize(p)                              (p)->GetSize()
4276 /*** IDirect3DRMFrameArray methods ***/
4277 #define IDirect3DRMFrameArray_GetElement(p,a,b)                       (p)->GetElement(a,b)
4278 #endif
4279
4280 /*****************************************************************************
4281  * IDirect3DRMViewportArray interface
4282  */
4283 #define INTERFACE IDirect3DRMViewportArray
4284 DECLARE_INTERFACE_(IDirect3DRMViewportArray, IDirect3DRMArray)
4285 {
4286     /*** IUnknown methods ***/
4287     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
4288     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
4289     STDMETHOD_(ULONG,Release)(THIS) PURE;
4290     /*** IDirect3DRMArray methods ***/
4291     STDMETHOD_(DWORD, GetSize)(THIS) PURE;
4292     /*** IDirect3DRMViewportArray methods ***/
4293     STDMETHOD(GetElement)(THIS_ DWORD index, LPDIRECT3DRMVIEWPORT *) PURE;
4294 };
4295 #undef INTERFACE
4296
4297 #if !defined(__cplusplus) || defined(CINTERFACE)
4298 /*** IUnknown methods ***/
4299 #define IDirect3DRMViewportArray_QueryInterface(p,a,b)                   (p)->lpVtbl->QueryInterface(p,a,b)
4300 #define IDirect3DRMViewportArray_AddRef(p)                               (p)->lpVtbl->AddRef(p)
4301 #define IDirect3DRMViewportArray_Release(p)                              (p)->lpVtbl->Release(p)
4302 /*** IDirect3DRMArray methods ***/
4303 #define IDirect3DRMViewportArray_GetSize(p)                              (p)->lpVtbl->GetSize(p)
4304 /*** IDirect3DRMViewportArray methods ***/
4305 #define IDirect3DRMViewportArray_GetElement(p,a,b)                       (p)->lpVtbl->GetElement(p,a,b)
4306 #else
4307 /*** IUnknown methods ***/
4308 #define IDirect3DRMViewportArray_QueryInterface(p,a,b)                   (p)->QueryInterface(a,b)
4309 #define IDirect3DRMViewportArray_AddRef(p)                               (p)->AddRef()
4310 #define IDirect3DRMViewportArray_Release(p)                              (p)->Release()
4311 /*** IDirect3DRMArray methods ***/
4312 #define IDirect3DRMViewportArray_GetSize(p)                              (p)->GetSize()
4313 /*** IDirect3DRMViewportArray methods ***/
4314 #define IDirect3DRMviewportArray_GetElement(p,a,b)                       (p)->GetElement(a,b)
4315 #endif
4316
4317 /*****************************************************************************
4318  * IDirect3DRMVisualArray interface
4319  */
4320 #define INTERFACE IDirect3DRMVisualArray
4321 DECLARE_INTERFACE_(IDirect3DRMVisualArray, IDirect3DRMArray)
4322 {
4323     /*** IUnknown methods ***/
4324     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
4325     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
4326     STDMETHOD_(ULONG,Release)(THIS) PURE;
4327     /*** IDirect3DRMArray methods ***/
4328     STDMETHOD_(DWORD, GetSize)(THIS) PURE;
4329     /*** IDirect3DRMVisualArray methods ***/
4330     STDMETHOD(GetElement)(THIS_ DWORD index, LPDIRECT3DRMVISUAL *) PURE;
4331 };
4332 #undef INTERFACE
4333
4334 #if !defined(__cplusplus) || defined(CINTERFACE)
4335 /*** IUnknown methods ***/
4336 #define IDirect3DRMVisualArray_QueryInterface(p,a,b)                   (p)->lpVtbl->QueryInterface(p,a,b)
4337 #define IDirect3DRMVisualArray_AddRef(p)                               (p)->lpVtbl->AddRef(p)
4338 #define IDirect3DRMVisualArray_Release(p)                              (p)->lpVtbl->Release(p)
4339 /*** IDirect3DRMArray methods ***/
4340 #define IDirect3DRMVisualArray_GetSize(p)                              (p)->lpVtbl->GetSize(p)
4341 /*** IDirect3DRMVisualArray methods ***/
4342 #define IDirect3DRMVisualArray_GetElement(p,a,b)                       (p)->lpVtbl->GetElement(p,a,b)
4343 #else
4344 /*** IUnknown methods ***/
4345 #define IDirect3DRMVisualArray_QueryInterface(p,a,b)                   (p)->QueryInterface(a,b)
4346 #define IDirect3DRMVisualArray_AddRef(p)                               (p)->AddRef()
4347 #define IDirect3DRMVisualArray_Release(p)                              (p)->Release()
4348 /*** IDirect3DRMArray methods ***/
4349 #define IDirect3DRMVisualArray_GetSize(p)                              (p)->GetSize()
4350 /*** IDirect3DRMVisualArray methods ***/
4351 #define IDirect3DRMVisualArray_GetElement(p,a,b)                       (p)->GetElement(a,b)
4352 #endif
4353
4354 /*****************************************************************************
4355  * IDirect3DRMAnimationArray interface
4356  */
4357 #define INTERFACE IDirect3DRMAnimationArray
4358 DECLARE_INTERFACE_(IDirect3DRMAnimationArray, IDirect3DRMArray)
4359 {
4360     /*** IUnknown methods ***/
4361     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
4362     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
4363     STDMETHOD_(ULONG,Release)(THIS) PURE;
4364     /*** IDirect3DRMArray methods ***/
4365     STDMETHOD_(DWORD, GetSize)(THIS) PURE;
4366     /*** IDirect3DRMAnimationArray methods ***/
4367     STDMETHOD(GetElement)(THIS_ DWORD index, LPDIRECT3DRMANIMATION2 *) PURE;
4368 };
4369 #undef INTERFACE
4370
4371 #if !defined(__cplusplus) || defined(CINTERFACE)
4372 /*** IUnknown methods ***/
4373 #define IDirect3DRMAnimationArray_QueryInterface(p,a,b)                   (p)->lpVtbl->QueryInterface(p,a,b)
4374 #define IDirect3DRMAnimationArray_AddRef(p)                               (p)->lpVtbl->AddRef(p)
4375 #define IDirect3DRMAnimationArray_Release(p)                              (p)->lpVtbl->Release(p)
4376 /*** IDirect3DRMArray methods ***/
4377 #define IDirect3DRMAnimationArray_GetSize(p)                              (p)->lpVtbl->GetSize(p)
4378 /*** IDirect3DRMAnimationArray methods ***/
4379 #define IDirect3DRMAnimationArray_GetElement(p,a,b)                       (p)->lpVtbl->GetElement(p,a,b)
4380 #else
4381 /*** IUnknown methods ***/
4382 #define IDirect3DRMAnimationArray_QueryInterface(p,a,b)                   (p)->QueryInterface(a,b)
4383 #define IDirect3DRMAnimationArray_AddRef(p)                               (p)->AddRef()
4384 #define IDirect3DRMAnimationArray_Release(p)                              (p)->Release()
4385 /*** IDirect3DRMArray methods ***/
4386 #define IDirect3DRMAnimationArray_GetSize(p)                              (p)->GetSize()
4387 /*** IDirect3DRMAnimationArray methods ***/
4388 #define IDirect3DRMAnimationArray_GetElement(p,a,b)                       (p)->GetElement(a,b)
4389 #endif
4390
4391 /*****************************************************************************
4392  * IDirect3DRMPickedArray interface
4393  */
4394 #define INTERFACE IDirect3DRMPickedArray
4395 DECLARE_INTERFACE_(IDirect3DRMPickedArray, IDirect3DRMArray)
4396 {
4397     /*** IUnknown methods ***/
4398     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
4399     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
4400     STDMETHOD_(ULONG,Release)(THIS) PURE;
4401     /*** IDirect3DRMArray methods ***/
4402     STDMETHOD_(DWORD, GetSize)(THIS) PURE;
4403     /*** IDirect3DRMPickedArray methods ***/
4404     STDMETHOD(GetPick)(THIS_ DWORD index, LPDIRECT3DRMVISUAL *, LPDIRECT3DRMFRAMEARRAY *, LPD3DRMPICKDESC) PURE;
4405 };
4406 #undef INTERFACE
4407
4408 #if !defined(__cplusplus) || defined(CINTERFACE)
4409 /*** IUnknown methods ***/
4410 #define IDirect3DRMPickedArray_QueryInterface(p,a,b)                   (p)->lpVtbl->QueryInterface(p,a,b)
4411 #define IDirect3DRMPickedArray_AddRef(p)                               (p)->lpVtbl->AddRef(p)
4412 #define IDirect3DRMPickedArray_Release(p)                              (p)->lpVtbl->Release(p)
4413 /*** IDirect3DRMArray methods ***/
4414 #define IDirect3DRMPickedArray_GetSize(p)                              (p)->lpVtbl->GetSize(p)
4415 /*** IDirect3DRMPickedArray methods ***/
4416 #define IDirect3DRMPickedArray_GetPick(p,a,b,c,d)                      (p)->lpVtbl->GetPick(p,a,b,c,d)
4417 #else
4418 /*** IUnknown methods ***/
4419 #define IDirect3DRMPickedArray_QueryInterface(p,a,b)                   (p)->QueryInterface(a,b)
4420 #define IDirect3DRMPickedArray_AddRef(p)                               (p)->AddRef()
4421 #define IDirect3DRMPickedArray_Release(p)                              (p)->Release()
4422 /*** IDirect3DRMArray methods ***/
4423 #define IDirect3DRMPickedArray_GetSize(p)                              (p)->GetSize()
4424 /*** IDirect3DRMPickedArray methods ***/
4425 #define IDirect3DRMPickedArray_GetPick(p,a,b,c,d)                      (p)->GetPick(a,b,c,d)
4426 #endif
4427
4428 /*****************************************************************************
4429  * IDirect3DRMLightArray interface
4430  */
4431 #define INTERFACE IDirect3DRMLightArray
4432 DECLARE_INTERFACE_(IDirect3DRMLightArray, IDirect3DRMArray)
4433 {
4434     /*** IUnknown methods ***/
4435     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
4436     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
4437     STDMETHOD_(ULONG,Release)(THIS) PURE;
4438     /*** IDirect3DRMArray methods ***/
4439     STDMETHOD_(DWORD, GetSize)(THIS) PURE;
4440     /*** IDirect3DRMLightArray methods ***/
4441     STDMETHOD(GetElement)(THIS_ DWORD index, LPDIRECT3DRMLIGHT *) PURE;
4442 };
4443 #undef INTERFACE
4444
4445 #if !defined(__cplusplus) || defined(CINTERFACE)
4446 /*** IUnknown methods ***/
4447 #define IDirect3DRMLightArray_QueryInterface(p,a,b)                   (p)->lpVtbl->QueryInterface(p,a,b)
4448 #define IDirect3DRMLightArray_AddRef(p)                               (p)->lpVtbl->AddRef(p)
4449 #define IDirect3DRMLightArray_Release(p)                              (p)->lpVtbl->Release(p)
4450 /*** IDirect3DRMArray methods ***/
4451 #define IDirect3DRMLightArray_GetSize(p)                              (p)->lpVtbl->GetSize(p)
4452 /*** IDirect3DRMLightArray methods ***/
4453 #define IDirect3DRMLightArray_GetElement(p,a,b)                       (p)->lpVtbl->GetElement(p,a,b)
4454 #else
4455 /*** IUnknown methods ***/
4456 #define IDirect3DRMLightArray_QueryInterface(p,a,b)                   (p)->QueryInterface(a,b)
4457 #define IDirect3DRMLightArray_AddRef(p)                               (p)->AddRef()
4458 #define IDirect3DRMLightArray_Release(p)                              (p)->Release()
4459 /*** IDirect3DRMArray methods ***/
4460 #define IDirect3DRMLightArray_GetSize(p)                              (p)->GetSize()
4461 /*** IDirect3DRMLightArray methods ***/
4462 #define IDirect3DRMLightArray_GetElement(p,a,b)                       (p)->GetElement(a,b)
4463 #endif
4464
4465 /*****************************************************************************
4466  * IDirect3DRMFaceArray interface
4467  */
4468 #define INTERFACE IDirect3DRMFaceArray
4469 DECLARE_INTERFACE_(IDirect3DRMFaceArray, IDirect3DRMArray)
4470 {
4471     /*** IUnknown methods ***/
4472     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
4473     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
4474     STDMETHOD_(ULONG,Release)(THIS) PURE;
4475     /*** IDirect3DRMArray methods ***/
4476     STDMETHOD_(DWORD, GetSize)(THIS) PURE;
4477     /*** IDirect3DRMFaceArray methods ***/
4478     STDMETHOD(GetElement)(THIS_ DWORD index, LPDIRECT3DRMFACE *) PURE;
4479 };
4480 #undef INTERFACE
4481
4482 #if !defined(__cplusplus) || defined(CINTERFACE)
4483 /*** IUnknown methods ***/
4484 #define IDirect3DRMFaceArray_QueryInterface(p,a,b)                   (p)->lpVtbl->QueryInterface(p,a,b)
4485 #define IDirect3DRMFaceArray_AddRef(p)                               (p)->lpVtbl->AddRef(p)
4486 #define IDirect3DRMFaceArray_Release(p)                              (p)->lpVtbl->Release(p)
4487 /*** IDirect3DRMArray methods ***/
4488 #define IDirect3DRMFaceArray_GetSize(p)                              (p)->lpVtbl->GetSize(p)
4489 /*** IDirect3DRMFaceArray methods ***/
4490 #define IDirect3DRMFaceArray_GetElement(p,a,b)                       (p)->lpVtbl->GetElement(p,a,b)
4491 #else
4492 /*** IUnknown methods ***/
4493 #define IDirect3DRMFaceArray_QueryInterface(p,a,b)                   (p)->QueryInterface(a,b)
4494 #define IDirect3DRMFaceArray_AddRef(p)                               (p)->AddRef()
4495 #define IDirect3DRMFaceArray_Release(p)                              (p)->Release()
4496 /*** IDirect3DRMArray methods ***/
4497 #define IDirect3DRMFaceArray_GetSize(p)                              (p)->GetSize()
4498 /*** IDirect3DRMFaceArray methods ***/
4499 #define IDirect3DRMFaceArray_GetElement(p,a,b)                       (p)->GetElement(a,b)
4500 #endif
4501
4502 /*****************************************************************************
4503  * IDirect3DRMPicked2Array interface
4504  */
4505 #define INTERFACE IDirect3DRMPicked2Array
4506 DECLARE_INTERFACE_(IDirect3DRMPicked2Array, IDirect3DRMArray)
4507 {
4508     /*** IUnknown methods ***/
4509     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
4510     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
4511     STDMETHOD_(ULONG,Release)(THIS) PURE;
4512     /*** IDirect3DRMArray methods ***/
4513     STDMETHOD_(DWORD, GetSize)(THIS) PURE;
4514     /*** IDirect3DRMPicked2Array methods ***/
4515     STDMETHOD(GetPick)(THIS_ DWORD index, LPDIRECT3DRMVISUAL *, LPDIRECT3DRMFRAMEARRAY *, LPD3DRMPICKDESC2) PURE;
4516 };
4517 #undef INTERFACE
4518
4519 #if !defined(__cplusplus) || defined(CINTERFACE)
4520 /*** IUnknown methods ***/
4521 #define IDirect3DRMPicked2Array_QueryInterface(p,a,b)                   (p)->lpVtbl->QueryInterface(p,a,b)
4522 #define IDirect3DRMPicked2Array_AddRef(p)                               (p)->lpVtbl->AddRef(p)
4523 #define IDirect3DRMPicked2Array_Release(p)                              (p)->lpVtbl->Release(p)
4524 /*** IDirect3DRMArray methods ***/
4525 #define IDirect3DRMPicked2Array_GetSize(p)                              (p)->lpVtbl->GetSize(p)
4526 /*** IDirect3DRMPicked2Array methods ***/
4527 #define IDirect3DRMPicked2Array_GetPick(p,a,b,c,d)                      (p)->lpVtbl->GetPick(p,a,b,c,d)
4528 #else
4529 /*** IUnknown methods ***/
4530 #define IDirect3DRMPicked2Array_QueryInterface(p,a,b)                   (p)->QueryInterface(a,b)
4531 #define IDirect3DRMPicked2Array_AddRef(p)                               (p)->AddRef()
4532 #define IDirect3DRMPicked2Array_Release(p)                              (p)->Release()
4533 /*** IDirect3DRMArray methods ***/
4534 #define IDirect3DRMPicked2Array_GetSize(p)                              (p)->GetSize()
4535 /*** IDirect3DRMPicked2Array methods ***/
4536 #define IDirect3DRMPicked2Array_GetPick(p,a,b,c,d)                      (p)->GetPick(a,b,c,d)
4537 #endif
4538
4539 /*****************************************************************************
4540  * IDirect3DRMInterpolator interface
4541  */
4542 #define INTERFACE IDirect3DRMInterpolator
4543 DECLARE_INTERFACE_(IDirect3DRMInterpolator, IDirect3DRMObject)
4544 {
4545     /*** IUnknown methods ***/
4546     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
4547     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
4548     STDMETHOD_(ULONG,Release)(THIS) PURE;
4549     /*** IDirect3DRMObject methods ***/
4550     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
4551     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
4552     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
4553     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
4554     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
4555     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
4556     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
4557     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
4558     /*** IDirect3DRMInterpolator methods ***/
4559     STDMETHOD(AttachObject)(THIS_ LPDIRECT3DRMOBJECT) PURE;
4560     STDMETHOD(GetAttachedObjects)(THIS_ LPDIRECT3DRMOBJECTARRAY *) PURE;
4561     STDMETHOD(DetachObject)(THIS_ LPDIRECT3DRMOBJECT) PURE;
4562     STDMETHOD(SetIndex)(THIS_ D3DVALUE) PURE;
4563     STDMETHOD_(D3DVALUE, GetIndex)(THIS) PURE;
4564     STDMETHOD(Interpolate)(THIS_ D3DVALUE, LPDIRECT3DRMOBJECT, D3DRMINTERPOLATIONOPTIONS) PURE;
4565 };
4566 #undef INTERFACE
4567
4568 #if !defined(__cplusplus) || defined(CINTERFACE)
4569 /*** IUnknown methods ***/
4570 #define IDirect3DRMInterpolator_QueryInterface(p,a,b)                   (p)->lpVtbl->QueryInterface(p,a,b)
4571 #define IDirect3DRMInterpolator_AddRef(p)                               (p)->lpVtbl->AddRef(p)
4572 #define IDirect3DRMInterpolator_Release(p)                              (p)->lpVtbl->Release(p)
4573 /*** IDirect3DRMObject methods ***/
4574 #define IDirect3DRMInterpolator_Clone(p,a,b,c)                          (p)->lpVtbl->Clone(p,a,b,c)
4575 #define IDirect3DRMInterpolator_AddDestroyCallback(p,a,b)               (p)->lpVtbl->AddDestroyCallback(p,a,b)
4576 #define IDirect3DRMInterpolator_DeleteDestroyCallback(p,a,b)            (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
4577 #define IDirect3DRMInterpolator_SetAppData(p,a)                         (p)->lpVtbl->SetAppData(p,a)
4578 #define IDirect3DRMInterpolator_GetAppData(p)                           (p)->lpVtbl->GetAppData(p)
4579 #define IDirect3DRMInterpolator_SetName(p,a)                            (p)->lpVtbl->SetName(p,a)
4580 #define IDirect3DRMInterpolator_GetName(p,a,b)                          (p)->lpVtbl->GetName(p,a,b)
4581 #define IDirect3DRMInterpolator_GetClassName(p,a,b)                     (p)->lpVtbl->GetClassName(p,a,b)
4582 /*** IDirect3DRMInterpolator methods ***/
4583 #define IDirect3DRMInterpolator_AttachObject(p,a)                       (p)->lpVtbl->AttachObject(p,a)
4584 #define IDirect3DRMInterpolator_GetAttachedObjects(p,a)                 (p)->lpVtbl->GetAttachedObjects(p,a)
4585 #define IDirect3DRMInterpolator_DetachObject(p,a)                       (p)->lpVtbl->DetachObject(p,a)
4586 #define IDirect3DRMInterpolator_SetIndex(p,a)                           (p)->lpVtbl->SetIndex(p,a)
4587 #define IDirect3DRMInterpolator_GetIndex(p)                             (p)->lpVtbl->GetIndex(p)
4588 #define IDirect3DRMInterpolator_Interpolate(p,a,b,c)                    (p)->lpVtbl->Interpolate(p,a,b,c)
4589 #else
4590 /*** IUnknown methods ***/
4591 #define IDirect3DRMInterpolator_QueryInterface(p,a,b)                   (p)->QueryInterface(a,b)
4592 #define IDirect3DRMInterpolator_AddRef(p)                               (p)->AddRef()
4593 #define IDirect3DRMInterpolator_Release(p)                              (p)->Release()
4594 /*** IDirect3DRMObject methods ***/
4595 #define IDirect3DRMInterpolator_Clone(p,a,b,c)                          (p)->Clone(a,b,c)
4596 #define IDirect3DRMInterpolator_AddDestroyCallback(p,a,b)               (p)->AddDestroyCallback(a,b)
4597 #define IDirect3DRMInterpolator_DeleteDestroyCallback(p,a,b)            (p)->DeleteDestroyCallback(a,b)
4598 #define IDirect3DRMInterpolator_SetAppData(p,a)                         (p)->SetAppData(a)
4599 #define IDirect3DRMInterpolator_GetAppData(p)                           (p)->GetAppData()
4600 #define IDirect3DRMInterpolator_SetName(p,a)                            (p)->SetName(a)
4601 #define IDirect3DRMInterpolator_GetName(p,a,b)                          (p)->GetName(a,b)
4602 #define IDirect3DRMInterpolator_GetClassName(p,a,b)                     (p)->GetClassName(a,b)
4603 /*** IDirect3DRMInterpolator methods ***/
4604 #define IDirect3DRMInterpolator_AttachObject(p,a)                       (p)->AttachObject(a)
4605 #define IDirect3DRMInterpolator_GetAttachedObjects(p,a)                 (p)->GetAttachedObjects(a)
4606 #define IDirect3DRMInterpolator_DetachObject(p,a)                       (p)->DetachObject(a)
4607 #define IDirect3DRMInterpolator_SetIndex(p,a)                           (p)->SetIndex(a)
4608 #define IDirect3DRMInterpolator_GetIndex(p)                             (p)->GetIndex()
4609 #define IDirect3DRMInterpolator_Interpolate(p,a,b,c)                    (p)->Interpolate(a,b,c)
4610 #endif
4611
4612 /*****************************************************************************
4613  * IDirect3DRMClippedVisual interface
4614  */
4615 #define INTERFACE IDirect3DRMClippedVisual
4616 DECLARE_INTERFACE_(IDirect3DRMClippedVisual, IDirect3DRMVisual)
4617 {
4618     /*** IUnknown methods ***/
4619     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
4620     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
4621     STDMETHOD_(ULONG,Release)(THIS) PURE;
4622     /*** IDirect3DRMObject methods ***/
4623     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
4624     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
4625     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
4626     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
4627     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
4628     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
4629     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
4630     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
4631     /*** IDirect3DRMClippedVisual methods ***/
4632     STDMETHOD(Init) (THIS_ LPDIRECT3DRMVISUAL) PURE;
4633     STDMETHOD(AddPlane) (THIS_ LPDIRECT3DRMFRAME3, LPD3DVECTOR, LPD3DVECTOR, DWORD, LPDWORD) PURE;
4634     STDMETHOD(DeletePlane)(THIS_ DWORD, DWORD) PURE;
4635     STDMETHOD(GetPlaneIDs)(THIS_ LPDWORD, LPDWORD, DWORD) PURE;
4636     STDMETHOD(GetPlane) (THIS_ DWORD, LPDIRECT3DRMFRAME3, LPD3DVECTOR, LPD3DVECTOR, DWORD) PURE;
4637     STDMETHOD(SetPlane) (THIS_ DWORD, LPDIRECT3DRMFRAME3, LPD3DVECTOR, LPD3DVECTOR, DWORD) PURE;
4638 };
4639 #undef INTERFACE
4640
4641 #if !defined(__cplusplus) || defined(CINTERFACE)
4642 /*** IUnknown methods ***/
4643 #define IDirect3DRMClippedVisual_QueryInterface(p,a,b)                   (p)->lpVtbl->QueryInterface(p,a,b)
4644 #define IDirect3DRMClippedVisual_AddRef(p)                               (p)->lpVtbl->AddRef(p)
4645 #define IDirect3DRMClippedVisual_Release(p)                              (p)->lpVtbl->Release(p)
4646 /*** IDirect3DRMObject methods ***/
4647 #define IDirect3DRMClippedVisual_Clone(p,a,b,c)                          (p)->lpVtbl->Clone(p,a,b,c)
4648 #define IDirect3DRMClippedVisual_AddDestroyCallback(p,a,b)               (p)->lpVtbl->AddDestroyCallback(p,a,b)
4649 #define IDirect3DRMClippedVisual_DeleteDestroyCallback(p,a,b)            (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
4650 #define IDirect3DRMClippedVisual_SetAppData(p,a)                         (p)->lpVtbl->SetAppData(p,a)
4651 #define IDirect3DRMClippedVisual_GetAppData(p)                           (p)->lpVtbl->GetAppData(p)
4652 #define IDirect3DRMClippedVisual_SetName(p,a)                            (p)->lpVtbl->SetName(p,a)
4653 #define IDirect3DRMClippedVisual_GetName(p,a,b)                          (p)->lpVtbl->GetName(p,a,b)
4654 #define IDirect3DRMClippedVisual_GetClassName(p,a,b)                     (p)->lpVtbl->GetClassName(p,a,b)
4655 /*** IDirect3DRMClippedVisual methods ***/
4656 #define IDirect3DRMClippedVisual_Init(p,a)                               (p)->lpVtbl->Init(p,a)
4657 #define IDirect3DRMClippedVisual_AddPlane(p,a,b,c,d,e)                   (p)->lpVtbl->AddPlane(p,a,b,c,d,e)
4658 #define IDirect3DRMClippedVisual_DeletePlane(p,a,b)                      (p)->lpVtbl->DeletePlane(p,a,b)
4659 #define IDirect3DRMClippedVisual_GetPlaneIDs(p,a,b,c)                    (p)->lpVtbl->GetPlaneIDs(p,a,b,c)
4660 #define IDirect3DRMClippedVisual_GetPlane(p,a,b,c,d,e)                   (p)->lpVtbl->GetPlane(p,a,b,c,d,e)
4661 #define IDirect3DRMClippedVisual_SetPlane(p,a,b,c,d,e)                   (p)->lpVtbl->SetPlane(p,a,b,c,d,e)
4662 #else
4663 /*** IUnknown methods ***/
4664 #define IDirect3DRMClippedVisual_QueryInterface(p,a,b)                   (p)->QueryInterface(a,b)
4665 #define IDirect3DRMClippedVisual_AddRef(p)                               (p)->AddRef()
4666 #define IDirect3DRMClippedVisual_Release(p)                              (p)->Release()
4667 /*** IDirect3DRMObject methods ***/
4668 #define IDirect3DRMClippedVisual_Clone(p,a,b,c)                          (p)->Clone(a,b,c)
4669 #define IDirect3DRMClippedVisual_AddDestroyCallback(p,a,b)               (p)->AddDestroyCallback(a,b)
4670 #define IDirect3DRMClippedVisual_DeleteDestroyCallback(p,a,b)            (p)->DeleteDestroyCallback(a,b)
4671 #define IDirect3DRMClippedVisual_SetAppData(p,a)                         (p)->SetAppData(a)
4672 #define IDirect3DRMClippedVisual_GetAppData(p)                           (p)->GetAppData()
4673 #define IDirect3DRMClippedVisual_SetName(p,a)                            (p)->SetName(a)
4674 #define IDirect3DRMClippedVisual_GetName(p,a,b)                          (p)->GetName(a,b)
4675 #define IDirect3DRMClippedVisual_GetClassName(p,a,b)                     (p)->GetClassName(a,b)
4676 /*** IDirect3DRMClippedVisual methods ***/
4677 #define IDirect3DRMClippedVisual_Init(p,a)                               (p)->Init(a)
4678 #define IDirect3DRMClippedVisual_AddPlane(p,a,b,c,d,e)                   (p)->AddPlane(a,b,c,d,e)
4679 #define IDirect3DRMClippedVisual_DeletePlane(p,a,b)                      (p)->DeletePlane(a,b)
4680 #define IDirect3DRMClippedVisual_GetPlaneIDs(p,a,b,c)                    (p)->GetPlaneIDs(a,b,c)
4681 #define IDirect3DRMClippedVisual_GetPlane(p,a,b,c,d,e)                   (p)->GetPlane(a,b,c,d,e)
4682 #define IDirect3DRMClippedVisual_SetPlane(p,a,b,c,d,e)                   (p)->SetPlane(a,b,c,d,e)
4683 #endif
4684
4685 #ifdef __cplusplus
4686 };
4687 #endif
4688
4689 #endif /* __D3DRMOBJ_H__ */