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)
28extern "C" {
29#endif
30
31typedef struct _D3DRMVECTOR4D
32{
33    D3DVALUE x;
34    D3DVALUE y;
35    D3DVALUE z;
36    D3DVALUE w;
37} D3DRMVECTOR4D, *LPD3DRMVECTOR4D;
38
39typedef D3DVALUE D3DRMMATRIX4D[4][4];
40
41typedef struct _D3DRMQUATERNION {
42    D3DVALUE s;
43    D3DVECTOR v;
44} D3DRMQUATERNION, *LPD3DRMQUATERNION;
45
46typedef struct _D3DRMRAY {
47    D3DVECTOR dvDir;
48    D3DVECTOR dvPos;
49} D3DRMRAY, *LPD3DRMRAY;
50
51typedef struct _D3DRMBOX {
52    D3DVECTOR min;
53    D3DVECTOR max;
54} D3DRMBOX, *LPD3DRMBOX;
55
56typedef void (*D3DRMWRAPCALLBACK)(D3DVECTOR *vec, int *u, int *v, D3DVECTOR *a, D3DVECTOR *b, void *ctx);
57
58typedef enum _D3DRMLIGHTTYPE {
59    D3DRMLIGHT_AMBIENT,
60    D3DRMLIGHT_POINT,
61    D3DRMLIGHT_SPOT,
62    D3DRMLIGHT_DIRECTIONAL,
63    D3DRMLIGHT_PARALLELPOINT
64} D3DRMLIGHTTYPE, *LPD3DRMLIGHTTYPE;
65
66typedef 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
74typedef 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
81typedef 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
89typedef 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
103typedef 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
124typedef enum _D3DRMCOMBINETYPE {
125    D3DRMCOMBINE_REPLACE,
126    D3DRMCOMBINE_BEFORE,
127    D3DRMCOMBINE_AFTER
128} D3DRMCOMBINETYPE, *LPD3DRMCOMBINETYPE;
129
130typedef D3DCOLORMODEL D3DRMCOLORMODEL, *LPD3DRMCOLORMODEL;
131
132typedef enum _D3DRMPALETTEFLAGS
133{
134    D3DRMPALETTE_FREE,
135    D3DRMPALETTE_READONLY,
136    D3DRMPALETTE_RESERVED
137} D3DRMPALETTEFLAGS, *LPD3DRMPALETTEFLAGS;
138
139typedef struct _D3DRMPALETTEENTRY {
140    unsigned char red;
141    unsigned char green;
142    unsigned char blue;
143    unsigned char flags;
144} D3DRMPALETTEENTRY, *LPD3DRMPALETTEENTRY;
145
146typedef 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
164typedef 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
176typedef 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
187typedef enum _D3DRMXOFFORMAT {
188    D3DRMXOF_BINARY,
189    D3DRMXOF_COMPRESSED,
190    D3DRMXOF_TEXT
191} D3DRMXOFFORMAT, *LPD3DRMXOFFORMAT;
192
193typedef 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
202typedef enum _D3DRMCOLORSOURCE {
203    D3DRMCOLOR_FROMFACE,
204    D3DRMCOLOR_FROMVERTEX
205} D3DRMCOLORSOURCE, *LPD3DRMCOLORSOURCE;
206
207typedef enum _D3DRMFRAMECONSTRAINT {
208    D3DRMCONSTRAIN_Z,
209    D3DRMCONSTRAIN_Y,
210    D3DRMCONSTRAIN_X
211} D3DRMFRAMECONSTRAINT, *LPD3DRMFRAMECONSTRAINT;
212
213typedef enum _D3DRMMATERIALMODE {
214    D3DRMMATERIAL_FROMMESH,
215    D3DRMMATERIAL_FROMPARENT,
216    D3DRMMATERIAL_FROMFRAME
217} D3DRMMATERIALMODE, *LPD3DRMMATERIALMODE;
218
219typedef enum _D3DRMFOGMODE {
220    D3DRMFOG_LINEAR,
221    D3DRMFOG_EXPONENTIAL,
222    D3DRMFOG_EXPONENTIALSQUARED
223} D3DRMFOGMODE, *LPD3DRMFOGMODE;
224
225typedef enum _D3DRMZBUFFERMODE {
226    D3DRMZBUFFER_FROMPARENT,
227    D3DRMZBUFFER_ENABLE,
228    D3DRMZBUFFER_DISABLE
229} D3DRMZBUFFERMODE, *LPD3DRMZBUFFERMODE;
230
231typedef enum _D3DRMSORTMODE {
232    D3DRMSORT_FROMPARENT,
233    D3DRMSORT_NONE,
234    D3DRMSORT_FRONTTOBACK,
235    D3DRMSORT_BACKTOFRONT
236} D3DRMSORTMODE, *LPD3DRMSORTMODE;
237
238typedef 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
322typedef 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
330typedef 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
339typedef 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
357typedef struct _D3DRMLOADRESOURCE {
358    HMODULE hModule;
359    LPCSTR /*LPCTSTR*/ lpName;
360    LPCSTR /*LPCTSTR*/ lpType;
361} D3DRMLOADRESOURCE, *LPD3DRMLOADRESOURCE;
362
363typedef 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
377typedef 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
388typedef enum _D3DRMUSERVISUALREASON {
389    D3DRMUSERVISUAL_CANSEE,
390    D3DRMUSERVISUAL_RENDER
391} D3DRMUSERVISUALREASON, *LPD3DRMUSERVISUALREASON;
392
393typedef 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;
410typedef D3DRMANIMATIONKEY *LPD3DRMANIMATIONKEY;
411
412#define D3DRMANIMATION_ROTATEKEY   0x01
413#define D3DRMANIMATION_SCALEKEY    0x02
414#define D3DRMANIMATION_POSITIONKEY 0x03
415
416typedef DWORD D3DRMMAPPING, D3DRMMAPPINGFLAG, *LPD3DRMMAPPING;
417static const D3DRMMAPPINGFLAG D3DRMMAP_WRAPU        = 1;
418static const D3DRMMAPPINGFLAG D3DRMMAP_WRAPV        = 2;
419static const D3DRMMAPPINGFLAG D3DRMMAP_PERSPCORRECT = 4;
420
421typedef struct _D3DRMVERTEX {
422    D3DVECTOR position;
423    D3DVECTOR normal;
424    D3DVALUE  tu;
425    D3DVALUE  tv;
426    D3DCOLOR  color;
427} D3DRMVERTEX, *LPD3DRMVERTEX;
428
429typedef LONG D3DRMGROUPINDEX;
430static const D3DRMGROUPINDEX D3DRMGROUP_ALLGROUPS = -1;
431
432void WINAPI D3DRMMatrixFromQuaternion(D3DRMMATRIX4D m, D3DRMQUATERNION *q);
433
434D3DRMQUATERNION * WINAPI D3DRMQuaternionFromRotation(D3DRMQUATERNION *x, D3DVECTOR *axis, D3DVALUE theta);
435D3DRMQUATERNION * WINAPI D3DRMQuaternionMultiply(D3DRMQUATERNION *ret, D3DRMQUATERNION *x, D3DRMQUATERNION *y);
436D3DRMQUATERNION * WINAPI D3DRMQuaternionSlerp(D3DRMQUATERNION *ret,
437        D3DRMQUATERNION *x, D3DRMQUATERNION *y, D3DVALUE alpha);
438
439D3DVECTOR * WINAPI D3DRMVectorAdd(D3DVECTOR *ret, D3DVECTOR *x, D3DVECTOR *y);
440D3DVECTOR * WINAPI D3DRMVectorCrossProduct(D3DVECTOR *ret, D3DVECTOR *x, D3DVECTOR *y);
441D3DVALUE WINAPI D3DRMVectorDotProduct(D3DVECTOR *x, D3DVECTOR *y);
442D3DVECTOR * WINAPI D3DRMVectorNormalize(D3DVECTOR *x);
443
444#define D3DRMVectorNormalise D3DRMVectorNormalize
445
446D3DVALUE WINAPI D3DRMVectorModulus(D3DVECTOR *x);
447D3DVECTOR * WINAPI D3DRMVectorRandom(D3DVECTOR *ret);
448D3DVECTOR * WINAPI D3DRMVectorRotate(D3DVECTOR *ret, D3DVECTOR *x, D3DVECTOR *axis, D3DVALUE theta);
449D3DVECTOR * WINAPI D3DRMVectorReflect(D3DVECTOR *ret, D3DVECTOR *ray, D3DVECTOR *normal);
450D3DVECTOR * WINAPI D3DRMVectorScale(D3DVECTOR *ret, D3DVECTOR *x, D3DVALUE scale);
451D3DVECTOR * WINAPI D3DRMVectorSubtract(D3DVECTOR *ret, D3DVECTOR *x, D3DVECTOR *y);
452
453D3DCOLOR WINAPI D3DRMCreateColorRGB(D3DVALUE, D3DVALUE, D3DVALUE);
454D3DCOLOR WINAPI D3DRMCreateColorRGBA(D3DVALUE, D3DVALUE, D3DVALUE, D3DVALUE);
455D3DVALUE WINAPI D3DRMColorGetAlpha(D3DCOLOR);
456D3DVALUE WINAPI D3DRMColorGetBlue(D3DCOLOR);
457D3DVALUE WINAPI D3DRMColorGetGreen(D3DCOLOR);
458D3DVALUE WINAPI D3DRMColorGetRed(D3DCOLOR);
459
460#if defined(__cplusplus)
461}
462#endif
463
464#endif
465