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