d3drm: Avoid LPDIRECT3DRMDEVICE.
[wine] / include / d3drmdef.h
1 /*
2  * Copyright 2007,2010 Vijay Kiran Kamuju
3  * Copyright 2007 David ADAM
4  * Copyright 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 __D3DRMDEFS_H__
22 #define __D3DRMDEFS_H__
23
24 #include <stddef.h>
25 #include <d3dtypes.h>
26
27 #if defined(__cplusplus)
28 extern "C" {
29 #endif
30
31 typedef struct _D3DRMVECTOR4D
32 {
33     D3DVALUE x;
34     D3DVALUE y;
35     D3DVALUE z;
36     D3DVALUE w;
37 } D3DRMVECTOR4D, *LPD3DRMVECTOR4D;
38
39 typedef D3DVALUE D3DRMMATRIX4D[4][4];
40
41 typedef struct _D3DRMQUATERNION {
42     D3DVALUE s;
43     D3DVECTOR v;
44 } D3DRMQUATERNION, *LPD3DRMQUATERNION;
45
46 typedef struct _D3DRMRAY {
47     D3DVECTOR dvDir;
48     D3DVECTOR dvPos;
49 } D3DRMRAY, *LPD3DRMRAY;
50
51 typedef struct _D3DRMBOX {
52     D3DVECTOR min;
53     D3DVECTOR max;
54 } D3DRMBOX, *LPD3DRMBOX;
55
56 typedef void (*D3DRMWRAPCALLBACK)(D3DVECTOR *vec, int *u, int *v, D3DVECTOR *a, D3DVECTOR *b, void *ctx);
57
58 typedef enum _D3DRMLIGHTTYPE {
59     D3DRMLIGHT_AMBIENT,
60     D3DRMLIGHT_POINT,
61     D3DRMLIGHT_SPOT,
62     D3DRMLIGHT_DIRECTIONAL,
63     D3DRMLIGHT_PARALLELPOINT
64 } D3DRMLIGHTTYPE, *LPD3DRMLIGHTTYPE;
65
66 typedef enum _D3DRMSHADEMODE {
67     D3DRMSHADE_FLAT     = 0,
68     D3DRMSHADE_GOURAUD  = 1,
69     D3DRMSHADE_PHONG    = 2,
70     D3DRMSHADE_MASK     = 7,
71     D3DRMSHADE_MAX      = 8
72 } D3DRMSHADEMODE, *LPD3DRMSHADEMODE;
73
74 typedef enum _D3DRMLIGHTMODE {
75     D3DRMLIGHT_OFF      = 0 * D3DRMSHADE_MAX,
76     D3DRMLIGHT_ON       = 1 * D3DRMSHADE_MAX,
77     D3DRMLIGHT_MASK     = 7 * D3DRMSHADE_MAX,
78     D3DRMLIGHT_MAX      = 8 * D3DRMSHADE_MAX
79 } D3DRMLIGHTMODE, *LPD3DRMLIGHTMODE;
80
81 typedef enum _D3DRMFILLMODE {
82     D3DRMFILL_POINTS    = 0 * D3DRMLIGHT_MAX,
83     D3DRMFILL_WIREFRAME = 1 * D3DRMLIGHT_MAX,
84     D3DRMFILL_SOLID     = 2 * D3DRMLIGHT_MAX,
85     D3DRMFILL_MASK      = 7 * D3DRMLIGHT_MAX,
86     D3DRMFILL_MAX       = 8 * D3DRMLIGHT_MAX
87 } D3DRMFILLMODE, *LPD3DRMFILLMODE;
88
89 typedef DWORD D3DRMRENDERQUALITY, *LPD3DRMRENDERQUALITY;
90
91 #define D3DRMRENDER_WIREFRAME   (D3DRMSHADE_FLAT+D3DRMLIGHT_OFF+D3DRMFILL_WIREFRAME)
92 #define D3DRMRENDER_UNLITFLAT   (D3DRMSHADE_FLAT+D3DRMLIGHT_OFF+D3DRMFILL_SOLID)
93 #define D3DRMRENDER_FLAT        (D3DRMSHADE_FLAT+D3DRMLIGHT_ON+D3DRMFILL_SOLID)
94 #define D3DRMRENDER_GOURAUD     (D3DRMSHADE_GOURAUD+D3DRMLIGHT_ON+D3DRMFILL_SOLID)
95 #define D3DRMRENDER_PHONG       (D3DRMSHADE_PHONG+D3DRMLIGHT_ON+D3DRMFILL_SOLID
96
97 #define D3DRMRENDERMODE_BLENDEDTRANSPARENCY       1
98 #define D3DRMRENDERMODE_SORTEDTRANSPARENCY        2
99 #define D3DRMRENDERMODE_LIGHTINMODELSPACE         8
100 #define D3DRMRENDERMODE_VIEWDEPENDENTSPECULAR    16
101 #define D3DRMRENDERMODE_DISABLESORTEDALPHAZWRITE 32
102
103 typedef enum _D3DRMTEXTUREQUALITY {
104     D3DRMTEXTURE_NEAREST,
105     D3DRMTEXTURE_LINEAR,
106     D3DRMTEXTURE_MIPNEAREST,
107     D3DRMTEXTURE_MIPLINEAR,
108     D3DRMTEXTURE_LINEARMIPNEAREST,
109     D3DRMTEXTURE_LINEARMIPLINEAR
110 } D3DRMTEXTUREQUALITY, *LPD3DRMTEXTUREQUALITY;
111
112 #define D3DRMTEXTURE_FORCERESIDENT          0x00000001
113 #define D3DRMTEXTURE_STATIC                 0x00000002
114 #define D3DRMTEXTURE_DOWNSAMPLEPOINT        0x00000004
115 #define D3DRMTEXTURE_DOWNSAMPLEBILINEAR     0x00000008
116 #define D3DRMTEXTURE_DOWNSAMPLEREDUCEDEPTH  0x00000010
117 #define D3DRMTEXTURE_DOWNSAMPLENONE         0x00000020
118 #define D3DRMTEXTURE_CHANGEDPIXELS          0x00000040
119 #define D3DRMTEXTURE_CHANGEDPALETTE         0x00000080
120 #define D3DRMTEXTURE_INVALIDATEONLY         0x00000100
121
122 #define D3DRMSHADOW_TRUEALPHA               0x00000001
123
124 typedef enum _D3DRMCOMBINETYPE {
125     D3DRMCOMBINE_REPLACE,
126     D3DRMCOMBINE_BEFORE,
127     D3DRMCOMBINE_AFTER
128 } D3DRMCOMBINETYPE, *LPD3DRMCOMBINETYPE;
129
130 typedef D3DCOLORMODEL D3DRMCOLORMODEL, *LPD3DRMCOLORMODEL;
131
132 typedef enum _D3DRMPALETTEFLAGS
133 {
134     D3DRMPALETTE_FREE,
135     D3DRMPALETTE_READONLY,
136     D3DRMPALETTE_RESERVED
137 } D3DRMPALETTEFLAGS, *LPD3DRMPALETTEFLAGS;
138
139 typedef struct _D3DRMPALETTEENTRY {
140     unsigned char red;
141     unsigned char green;
142     unsigned char blue;
143     unsigned char flags;
144 } D3DRMPALETTEENTRY, *LPD3DRMPALETTEENTRY;
145
146 typedef struct _D3DRMIMAGE {
147     int width;
148     int height;
149     int aspectx;
150     int aspecty;
151     int depth;
152     int rgb;
153     int bytes_per_line;
154     void* buffer1;
155     void* buffer2;
156     ULONG red_mask;
157     ULONG green_mask;
158     ULONG blue_mask;
159     ULONG alpha_mask;
160     int palette_size;
161     D3DRMPALETTEENTRY* palette;
162 } D3DRMIMAGE, *LPD3DRMIMAGE;
163
164 typedef enum _D3DRMWRAPTYPE {
165     D3DRMWRAP_FLAT,
166     D3DRMWRAP_CYLINDER,
167     D3DRMWRAP_SPHERE,
168     D3DRMWRAP_CHROME,
169     D3DRMWRAP_SHEET,
170     D3DRMWRAP_BOX
171 } D3DRMWRAPTYPE, *LPD3DRMWRAPTYPE;
172
173 #define D3DRMWIREFRAME_CULL             1
174 #define D3DRMWIREFRAME_HIDDENLINE       2
175
176 typedef enum _D3DRMPROJECTIONTYPE
177 {
178     D3DRMPROJECT_PERSPECTIVE,
179     D3DRMPROJECT_ORTHOGRAPHIC,
180     D3DRMPROJECT_RIGHTHANDPERSPECTIVE,
181     D3DRMPROJECT_RIGHTHANDORTHOGRAPHIC
182 } D3DRMPROJECTIONTYPE, *LPD3DRMPROJECTIONTYPE;
183
184 #define D3DRMOPTIONS_LEFTHANDED  0x00000001
185 #define D3DRMOPTIONS_RIGHTHANDED 0x00000002
186
187 typedef enum _D3DRMXOFFORMAT {
188     D3DRMXOF_BINARY,
189     D3DRMXOF_COMPRESSED,
190     D3DRMXOF_TEXT
191 } D3DRMXOFFORMAT, *LPD3DRMXOFFORMAT;
192
193 typedef DWORD D3DRMSAVEOPTIONS;
194 #define D3DRMXOFSAVE_NORMALS             1
195 #define D3DRMXOFSAVE_TEXTURECOORDINATES  2
196 #define D3DRMXOFSAVE_MATERIALS           4
197 #define D3DRMXOFSAVE_TEXTURENAMES        8
198 #define D3DRMXOFSAVE_ALL                15
199 #define D3DRMXOFSAVE_TEMPLATES          16
200 #define D3DRMXOFSAVE_TEXTURETOPOLOGY    32
201
202 typedef enum _D3DRMCOLORSOURCE {
203     D3DRMCOLOR_FROMFACE,
204     D3DRMCOLOR_FROMVERTEX
205 } D3DRMCOLORSOURCE, *LPD3DRMCOLORSOURCE;
206
207 typedef enum _D3DRMFRAMECONSTRAINT {
208     D3DRMCONSTRAIN_Z,
209     D3DRMCONSTRAIN_Y,
210     D3DRMCONSTRAIN_X
211 } D3DRMFRAMECONSTRAINT, *LPD3DRMFRAMECONSTRAINT;
212
213 typedef enum _D3DRMMATERIALMODE {
214     D3DRMMATERIAL_FROMMESH,
215     D3DRMMATERIAL_FROMPARENT,
216     D3DRMMATERIAL_FROMFRAME
217 } D3DRMMATERIALMODE, *LPD3DRMMATERIALMODE;
218
219 typedef enum _D3DRMFOGMODE {
220     D3DRMFOG_LINEAR,
221     D3DRMFOG_EXPONENTIAL,
222     D3DRMFOG_EXPONENTIALSQUARED
223 } D3DRMFOGMODE, *LPD3DRMFOGMODE;
224
225 typedef enum _D3DRMZBUFFERMODE {
226     D3DRMZBUFFER_FROMPARENT,
227     D3DRMZBUFFER_ENABLE,
228     D3DRMZBUFFER_DISABLE
229 } D3DRMZBUFFERMODE, *LPD3DRMZBUFFERMODE;
230
231 typedef enum _D3DRMSORTMODE {
232     D3DRMSORT_FROMPARENT,
233     D3DRMSORT_NONE,
234     D3DRMSORT_FRONTTOBACK,
235     D3DRMSORT_BACKTOFRONT
236 } D3DRMSORTMODE, *LPD3DRMSORTMODE;
237
238 typedef struct _D3DRMMATERIALOVERRIDE {
239     DWORD         dwSize;
240     DWORD         dwFlags;
241     D3DCOLORVALUE dcDiffuse;
242     D3DCOLORVALUE dcAmbient;
243     D3DCOLORVALUE dcEmissive;
244     D3DCOLORVALUE dcSpecular;
245     D3DVALUE      dvPower;
246     LPUNKNOWN     lpD3DRMTex;
247 } D3DRMMATERIALOVERRIDE, *LPD3DRMMATERIALOVERRIDE;
248
249 #define D3DRMMATERIALOVERRIDE_DIFFUSE_ALPHAONLY     0x00000001
250 #define D3DRMMATERIALOVERRIDE_DIFFUSE_RGBONLY       0x00000002
251 #define D3DRMMATERIALOVERRIDE_DIFFUSE               0x00000003
252 #define D3DRMMATERIALOVERRIDE_AMBIENT               0x00000004
253 #define D3DRMMATERIALOVERRIDE_EMISSIVE              0x00000008
254 #define D3DRMMATERIALOVERRIDE_SPECULAR              0x00000010
255 #define D3DRMMATERIALOVERRIDE_POWER                 0x00000020
256 #define D3DRMMATERIALOVERRIDE_TEXTURE               0x00000040
257 #define D3DRMMATERIALOVERRIDE_DIFFUSE_ALPHAMULTIPLY 0x00000080
258 #define D3DRMMATERIALOVERRIDE_ALL                   0x000000FF
259
260 #define D3DRMFPTF_ALPHA                             0x00000001
261 #define D3DRMFPTF_NOALPHA                           0x00000002
262 #define D3DRMFPTF_PALETTIZED                        0x00000004
263 #define D3DRMFPTF_NOTPALETTIZED                     0x00000008
264
265 #define D3DRMSTATECHANGE_UPDATEONLY                0x000000001
266 #define D3DRMSTATECHANGE_VOLATILE                  0x000000002
267 #define D3DRMSTATECHANGE_NONVOLATILE               0x000000004
268 #define D3DRMSTATECHANGE_RENDER                    0x000000020
269 #define D3DRMSTATECHANGE_LIGHT                     0x000000040
270
271 #define D3DRMDEVICE_NOZBUFFER           0x00000001
272
273 #define D3DRMCALLBACK_PREORDER          0
274 #define D3DRMCALLBACK_POSTORDER         1
275
276 #define D3DRMRAYPICK_ONLYBOUNDINGBOXES          0x01
277 #define D3DRMRAYPICK_IGNOREFURTHERPRIMITIVES    0x02
278 #define D3DRMRAYPICK_INTERPOLATEUV              0x04
279 #define D3DRMRAYPICK_INTERPOLATECOLOR           0x08
280 #define D3DRMRAYPICK_INTERPOLATENORMAL          0x10
281
282 #define D3DRMADDFACES_VERTICESONLY              1
283
284 #define D3DRMGENERATENORMALS_PRECOMPACT         1
285 #define D3DRMGENERATENORMALS_USECREASEANGLE     2
286
287 #define D3DRMMESHBUILDER_DIRECTPARENT           1
288 #define D3DRMMESHBUILDER_ROOTMESH               2
289
290 #define D3DRMMESHBUILDER_RENDERENABLE   0x00000001
291 #define D3DRMMESHBUILDER_PICKENABLE     0x00000002
292
293 #define D3DRMADDMESHBUILDER_DONTCOPYAPPDATA     1
294 #define D3DRMADDMESHBUILDER_FLATTENSUBMESHES    2
295 #define D3DRMADDMESHBUILDER_NOSUBMESHES         4
296
297 #define D3DRMMESHBUILDERAGE_GEOMETRY    0x00000001
298 #define D3DRMMESHBUILDERAGE_MATERIALS   0x00000002
299 #define D3DRMMESHBUILDERAGE_TEXTURES    0x00000004
300
301 #define D3DRMFVF_TYPE                   0x00000001
302 #define D3DRMFVF_NORMAL                 0x00000002
303 #define D3DRMFVF_COLOR                  0x00000004
304 #define D3DRMFVF_TEXTURECOORDS          0x00000008
305
306 #define D3DRMVERTEX_STRIP               0x00000001
307 #define D3DRMVERTEX_FAN                 0x00000002
308 #define D3DRMVERTEX_LIST                0x00000004
309
310 #define D3DRMCLEAR_TARGET               0x00000001
311 #define D3DRMCLEAR_ZBUFFER              0x00000002
312 #define D3DRMCLEAR_DIRTYRECTS           0x00000004
313 #define D3DRMCLEAR_ALL                  (D3DRMCLEAR_TARGET | D3DRMCLEAR_ZBUFFER | D3DRMCLEAR_DIRTYRECTS)
314
315 #define D3DRMFOGMETHOD_VERTEX           0x00000001
316 #define D3DRMFOGMETHOD_TABLE            0x00000002
317 #define D3DRMFOGMETHOD_ANY              0x00000004
318
319 #define D3DRMFRAME_RENDERENABLE         0x00000001
320 #define D3DRMFRAME_PICKENABLE           0x00000002
321
322 typedef DWORD D3DRMANIMATIONOPTIONS;
323 #define D3DRMANIMATION_OPEN             0x00000001
324 #define D3DRMANIMATION_CLOSED           0x00000002
325 #define D3DRMANIMATION_LINEARPOSITION   0x00000004
326 #define D3DRMANIMATION_SPLINEPOSITION   0x00000008
327 #define D3DRMANIMATION_SCALEANDROTATION 0x00000010
328 #define D3DRMANIMATION_POSITION         0x00000020
329
330 typedef DWORD D3DRMINTERPOLATIONOPTIONS;
331 #define D3DRMINTERPOLATION_OPEN         0x0001
332 #define D3DRMINTERPOLATION_CLOSED       0x0002
333 #define D3DRMINTERPOLATION_NEAREST      0x0100
334 #define D3DRMINTERPOLATION_LINEAR       0x0004
335 #define D3DRMINTERPOLATION_SPLINE       0x0008
336 #define D3DRMINTERPOLATION_VERTEXCOLOR  0x0040
337 #define D3DRMINTERPOLATION_SLERPNORMALS 0x0080
338
339 typedef DWORD D3DRMLOADOPTIONS;
340
341 #define D3DRMLOAD_FROMFILE             __MSABI_LONG(0x000)
342 #define D3DRMLOAD_FROMRESOURCE         __MSABI_LONG(0x001)
343 #define D3DRMLOAD_FROMMEMORY           __MSABI_LONG(0x002)
344 #define D3DRMLOAD_FROMSTREAM           __MSABI_LONG(0x004)
345 #define D3DRMLOAD_FROMURL              __MSABI_LONG(0x008)
346
347 #define D3DRMLOAD_BYNAME               __MSABI_LONG(0x010)
348 #define D3DRMLOAD_BYPOSITION           __MSABI_LONG(0x020)
349 #define D3DRMLOAD_BYGUID               __MSABI_LONG(0x040)
350 #define D3DRMLOAD_FIRST                __MSABI_LONG(0x080)
351
352 #define D3DRMLOAD_INSTANCEBYREFERENCE  __MSABI_LONG(0x100)
353 #define D3DRMLOAD_INSTANCEBYCOPYING    __MSABI_LONG(0x200)
354
355 #define D3DRMLOAD_ASYNCHRONOUS         __MSABI_LONG(0x400)
356
357 typedef struct _D3DRMLOADRESOURCE {
358     HMODULE hModule;
359     LPCSTR /*LPCTSTR*/ lpName;
360     LPCSTR /*LPCTSTR*/ lpType;
361 } D3DRMLOADRESOURCE, *LPD3DRMLOADRESOURCE;
362
363 typedef struct _D3DRMLOADMEMORY {
364     LPVOID lpMemory;
365     DWORD dSize;
366 } D3DRMLOADMEMORY, *LPD3DRMLOADMEMORY;
367
368 #define D3DRMPMESHSTATUS_VALID            0x01
369 #define D3DRMPMESHSTATUS_INTERRUPTED      0x02
370 #define D3DRMPMESHSTATUS_BASEMESHCOMPLETE 0x04
371 #define D3DRMPMESHSTATUS_COMPLETE         0x08
372 #define D3DRMPMESHSTATUS_RENDERABLE       0x10
373
374 #define D3DRMPMESHEVENT_BASEMESH          0x01
375 #define D3DRMPMESHEVENT_COMPLETE          0x02
376
377 typedef struct _D3DRMPMESHLOADSTATUS {
378     DWORD dwSize;
379     DWORD dwPMeshSize;
380     DWORD dwBaseMeshSize;
381     DWORD dwBytesLoaded;
382     DWORD dwVerticesLoaded;
383     DWORD dwFacesLoaded;
384     HRESULT dwLoadResult;
385     DWORD dwFlags;
386 } D3DRMPMESHLOADSTATUS, *LPD3DRMPMESHLOADSTATUS;
387
388 typedef enum _D3DRMUSERVISUALREASON {
389     D3DRMUSERVISUAL_CANSEE,
390     D3DRMUSERVISUAL_RENDER
391 } D3DRMUSERVISUALREASON, *LPD3DRMUSERVISUALREASON;
392
393 typedef struct _D3DRMANIMATIONKEY
394 {
395     DWORD dwSize;
396     DWORD dwKeyType;
397     D3DVALUE dvTime;
398     DWORD dwID;
399 #if !defined(__cplusplus) || !defined(D3D_OVERLOADS)
400     union
401     {
402         D3DRMQUATERNION dqRotateKey;
403         D3DVECTOR dvScaleKey;
404         D3DVECTOR dvPositionKey;
405     } DUMMYUNIONNAME;
406 #else
407     D3DVALUE dvK[4];
408 #endif
409 } D3DRMANIMATIONKEY;
410 typedef D3DRMANIMATIONKEY *LPD3DRMANIMATIONKEY;
411
412 #define D3DRMANIMATION_ROTATEKEY   0x01
413 #define D3DRMANIMATION_SCALEKEY    0x02
414 #define D3DRMANIMATION_POSITIONKEY 0x03
415
416 typedef DWORD D3DRMMAPPING, D3DRMMAPPINGFLAG, *LPD3DRMMAPPING;
417 static const D3DRMMAPPINGFLAG D3DRMMAP_WRAPU        = 1;
418 static const D3DRMMAPPINGFLAG D3DRMMAP_WRAPV        = 2;
419 static const D3DRMMAPPINGFLAG D3DRMMAP_PERSPCORRECT = 4;
420
421 typedef struct _D3DRMVERTEX {
422     D3DVECTOR position;
423     D3DVECTOR normal;
424     D3DVALUE  tu;
425     D3DVALUE  tv;
426     D3DCOLOR  color;
427 } D3DRMVERTEX, *LPD3DRMVERTEX;
428
429 typedef LONG D3DRMGROUPINDEX;
430 static const D3DRMGROUPINDEX D3DRMGROUP_ALLGROUPS = -1;
431
432 void WINAPI D3DRMMatrixFromQuaternion(D3DRMMATRIX4D m, D3DRMQUATERNION *q);
433
434 D3DRMQUATERNION * WINAPI D3DRMQuaternionFromRotation(D3DRMQUATERNION *x, D3DVECTOR *axis, D3DVALUE theta);
435 D3DRMQUATERNION * WINAPI D3DRMQuaternionMultiply(D3DRMQUATERNION *ret, D3DRMQUATERNION *x, D3DRMQUATERNION *y);
436 D3DRMQUATERNION * WINAPI D3DRMQuaternionSlerp(D3DRMQUATERNION *ret,
437         D3DRMQUATERNION *x, D3DRMQUATERNION *y, D3DVALUE alpha);
438
439 D3DVECTOR * WINAPI D3DRMVectorAdd(D3DVECTOR *ret, D3DVECTOR *x, D3DVECTOR *y);
440 D3DVECTOR * WINAPI D3DRMVectorCrossProduct(D3DVECTOR *ret, D3DVECTOR *x, D3DVECTOR *y);
441 D3DVALUE WINAPI D3DRMVectorDotProduct(D3DVECTOR *x, D3DVECTOR *y);
442 D3DVECTOR * WINAPI D3DRMVectorNormalize(D3DVECTOR *x);
443
444 #define D3DRMVectorNormalise D3DRMVectorNormalize
445
446 D3DVALUE WINAPI D3DRMVectorModulus(D3DVECTOR *x);
447 D3DVECTOR * WINAPI D3DRMVectorRandom(D3DVECTOR *ret);
448 D3DVECTOR * WINAPI D3DRMVectorRotate(D3DVECTOR *ret, D3DVECTOR *x, D3DVECTOR *axis, D3DVALUE theta);
449 D3DVECTOR * WINAPI D3DRMVectorReflect(D3DVECTOR *ret, D3DVECTOR *ray, D3DVECTOR *normal);
450 D3DVECTOR * WINAPI D3DRMVectorScale(D3DVECTOR *ret, D3DVECTOR *x, D3DVALUE scale);
451 D3DVECTOR * WINAPI D3DRMVectorSubtract(D3DVECTOR *ret, D3DVECTOR *x, D3DVECTOR *y);
452
453 D3DCOLOR WINAPI D3DRMCreateColorRGB(D3DVALUE, D3DVALUE, D3DVALUE);
454 D3DCOLOR WINAPI D3DRMCreateColorRGBA(D3DVALUE, D3DVALUE, D3DVALUE, D3DVALUE);
455 D3DVALUE WINAPI D3DRMColorGetAlpha(D3DCOLOR);
456 D3DVALUE WINAPI D3DRMColorGetBlue(D3DCOLOR);
457 D3DVALUE WINAPI D3DRMColorGetGreen(D3DCOLOR);
458 D3DVALUE WINAPI D3DRMColorGetRed(D3DCOLOR);
459
460 #if defined(__cplusplus)
461 }
462 #endif
463
464 #endif