Home | History | Annotate | Download | only in include
      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     IUnknown *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 {
    359     HMODULE hModule;
    360     const char *lpName;
    361     const char *lpType;
    362 } D3DRMLOADRESOURCE, *LPD3DRMLOADRESOURCE;
    363 
    364 typedef struct _D3DRMLOADMEMORY
    365 {
    366     void *lpMemory;
    367     DWORD dSize;
    368 } D3DRMLOADMEMORY, *LPD3DRMLOADMEMORY;
    369 
    370 #define D3DRMPMESHSTATUS_VALID            0x01
    371 #define D3DRMPMESHSTATUS_INTERRUPTED      0x02
    372 #define D3DRMPMESHSTATUS_BASEMESHCOMPLETE 0x04
    373 #define D3DRMPMESHSTATUS_COMPLETE         0x08
    374 #define D3DRMPMESHSTATUS_RENDERABLE       0x10
    375 
    376 #define D3DRMPMESHEVENT_BASEMESH          0x01
    377 #define D3DRMPMESHEVENT_COMPLETE          0x02
    378 
    379 typedef struct _D3DRMPMESHLOADSTATUS {
    380     DWORD dwSize;
    381     DWORD dwPMeshSize;
    382     DWORD dwBaseMeshSize;
    383     DWORD dwBytesLoaded;
    384     DWORD dwVerticesLoaded;
    385     DWORD dwFacesLoaded;
    386     HRESULT dwLoadResult;
    387     DWORD dwFlags;
    388 } D3DRMPMESHLOADSTATUS, *LPD3DRMPMESHLOADSTATUS;
    389 
    390 typedef enum _D3DRMUSERVISUALREASON {
    391     D3DRMUSERVISUAL_CANSEE,
    392     D3DRMUSERVISUAL_RENDER
    393 } D3DRMUSERVISUALREASON, *LPD3DRMUSERVISUALREASON;
    394 
    395 typedef struct _D3DRMANIMATIONKEY
    396 {
    397     DWORD dwSize;
    398     DWORD dwKeyType;
    399     D3DVALUE dvTime;
    400     DWORD dwID;
    401 #if !defined(__cplusplus) || !defined(D3D_OVERLOADS)
    402     union
    403     {
    404 	D3DRMQUATERNION dqRotateKey;
    405 	D3DVECTOR dvScaleKey;
    406 	D3DVECTOR dvPositionKey;
    407     } DUMMYUNIONNAME;
    408 #else
    409     D3DVALUE dvK[4];
    410 #endif
    411 } D3DRMANIMATIONKEY;
    412 typedef D3DRMANIMATIONKEY *LPD3DRMANIMATIONKEY;
    413 
    414 #define D3DRMANIMATION_ROTATEKEY   0x01
    415 #define D3DRMANIMATION_SCALEKEY    0x02
    416 #define D3DRMANIMATION_POSITIONKEY 0x03
    417 
    418 typedef DWORD D3DRMMAPPING, D3DRMMAPPINGFLAG, *LPD3DRMMAPPING;
    419 static const D3DRMMAPPINGFLAG D3DRMMAP_WRAPU        = 1;
    420 static const D3DRMMAPPINGFLAG D3DRMMAP_WRAPV        = 2;
    421 static const D3DRMMAPPINGFLAG D3DRMMAP_PERSPCORRECT = 4;
    422 
    423 typedef struct _D3DRMVERTEX {
    424     D3DVECTOR position;
    425     D3DVECTOR normal;
    426     D3DVALUE  tu;
    427     D3DVALUE  tv;
    428     D3DCOLOR  color;
    429 } D3DRMVERTEX, *LPD3DRMVERTEX;
    430 
    431 typedef LONG D3DRMGROUPINDEX;
    432 static const D3DRMGROUPINDEX D3DRMGROUP_ALLGROUPS = -1;
    433 
    434 void WINAPI D3DRMMatrixFromQuaternion(D3DRMMATRIX4D m, D3DRMQUATERNION *q);
    435 
    436 D3DRMQUATERNION * WINAPI D3DRMQuaternionFromRotation(D3DRMQUATERNION *x, D3DVECTOR *axis, D3DVALUE theta);
    437 D3DRMQUATERNION * WINAPI D3DRMQuaternionMultiply(D3DRMQUATERNION *ret, D3DRMQUATERNION *x, D3DRMQUATERNION *y);
    438 D3DRMQUATERNION * WINAPI D3DRMQuaternionSlerp(D3DRMQUATERNION *ret,
    439         D3DRMQUATERNION *x, D3DRMQUATERNION *y, D3DVALUE alpha);
    440 
    441 D3DVECTOR * WINAPI D3DRMVectorAdd(D3DVECTOR *ret, D3DVECTOR *x, D3DVECTOR *y);
    442 D3DVECTOR * WINAPI D3DRMVectorCrossProduct(D3DVECTOR *ret, D3DVECTOR *x, D3DVECTOR *y);
    443 D3DVALUE WINAPI D3DRMVectorDotProduct(D3DVECTOR *x, D3DVECTOR *y);
    444 D3DVECTOR * WINAPI D3DRMVectorNormalize(D3DVECTOR *x);
    445 
    446 #define D3DRMVectorNormalise D3DRMVectorNormalize
    447 
    448 D3DVALUE WINAPI D3DRMVectorModulus(D3DVECTOR *x);
    449 D3DVECTOR * WINAPI D3DRMVectorRandom(D3DVECTOR *ret);
    450 D3DVECTOR * WINAPI D3DRMVectorRotate(D3DVECTOR *ret, D3DVECTOR *x, D3DVECTOR *axis, D3DVALUE theta);
    451 D3DVECTOR * WINAPI D3DRMVectorReflect(D3DVECTOR *ret, D3DVECTOR *ray, D3DVECTOR *normal);
    452 D3DVECTOR * WINAPI D3DRMVectorScale(D3DVECTOR *ret, D3DVECTOR *x, D3DVALUE scale);
    453 D3DVECTOR * WINAPI D3DRMVectorSubtract(D3DVECTOR *ret, D3DVECTOR *x, D3DVECTOR *y);
    454 
    455 D3DCOLOR WINAPI D3DRMCreateColorRGB(D3DVALUE, D3DVALUE, D3DVALUE);
    456 D3DCOLOR WINAPI D3DRMCreateColorRGBA(D3DVALUE, D3DVALUE, D3DVALUE, D3DVALUE);
    457 D3DVALUE WINAPI D3DRMColorGetAlpha(D3DCOLOR);
    458 D3DVALUE WINAPI D3DRMColorGetBlue(D3DCOLOR);
    459 D3DVALUE WINAPI D3DRMColorGetGreen(D3DCOLOR);
    460 D3DVALUE WINAPI D3DRMColorGetRed(D3DCOLOR);
    461 
    462 #if defined(__cplusplus)
    463 }
    464 #endif
    465 
    466 #endif
    467