ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

d3dtypes.h
Go to the documentation of this file.
00001 /*
00002  * Copyright (C) 2000 Peter Hunnisett
00003  *
00004  * This library is free software; you can redistribute it and/or
00005  * modify it under the terms of the GNU Lesser General Public
00006  * License as published by the Free Software Foundation; either
00007  * version 2.1 of the License, or (at your option) any later version.
00008  *
00009  * This library is distributed in the hope that it will be useful,
00010  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00011  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00012  * Lesser General Public License for more details.
00013  *
00014  * You should have received a copy of the GNU Lesser General Public
00015  * License along with this library; if not, write to the Free Software
00016  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
00017  */
00018 
00019 /* FIXME: Need to add C++ code for certain structs for headers - this is going to be a problem
00020           if WINE continues to only use C code  - I suppose that we could always inline in
00021           the header file to get around that little problem... */
00022 /* FIXME: We need to implement versioning on everything directx 5 and up if these headers
00023           are going to be generically useful for directx stuff */
00024 
00025 #ifndef __WINE_D3DTYPES_H
00026 #define __WINE_D3DTYPES_H
00027 
00028 /* #include <windows.h> FIXME: Need to include for compatibility. Inclusion caused compile fail */
00029 
00030 #if (DIRECT3D_VERSION >= 0x0800)
00031 #error "You should not include d3dtypes.h when compiling for DX8 or newer."
00032 #endif
00033 
00034 #include <float.h>
00035 #include <ddraw.h>
00036 
00037 #define D3DVALP(val, prec)      ((float)(val))
00038 #define D3DVAL(val)             ((float)(val))
00039 #define D3DDivide(a, b)         (float)((double) (a) / (double) (b))
00040 #define D3DMultiply(a, b)       ((a) * (b))
00041 
00042 typedef LONG D3DFIXED;
00043 
00044 
00045 #ifndef RGB_MAKE
00046 #define CI_GETALPHA(ci)    ((ci) >> 24)
00047 #define CI_GETINDEX(ci)    (((ci) >> 8) & 0xffff)
00048 #define CI_GETFRACTION(ci) ((ci) & 0xff)
00049 #define CI_ROUNDINDEX(ci)  CI_GETINDEX((ci) + 0x80)
00050 #define CI_MASKALPHA(ci)   ((ci) & 0xffffff)
00051 #define CI_MAKE(a, i, f)    (((a) << 24) | ((i) << 8) | (f))
00052 
00053 #define RGBA_GETALPHA(rgb)      ((rgb) >> 24)
00054 #define RGBA_GETRED(rgb)        (((rgb) >> 16) & 0xff)
00055 #define RGBA_GETGREEN(rgb)      (((rgb) >> 8) & 0xff)
00056 #define RGBA_GETBLUE(rgb)       ((rgb) & 0xff)
00057 #define RGBA_MAKE(r, g, b, a)   ((D3DCOLOR) (((a) << 24) | ((r) << 16) | ((g) << 8) | (b)))
00058 
00059 #define D3DRGB(r, g, b) \
00060     (0xff000000L | ( ((long)((r) * 255)) << 16) | (((long)((g) * 255)) << 8) | (long)((b) * 255))
00061 #define D3DRGBA(r, g, b, a) \
00062     (   (((long)((a) * 255)) << 24) | (((long)((r) * 255)) << 16) \
00063     |   (((long)((g) * 255)) << 8) | (long)((b) * 255) \
00064     )
00065 
00066 #define RGB_GETRED(rgb)         (((rgb) >> 16) & 0xff)
00067 #define RGB_GETGREEN(rgb)       (((rgb) >> 8) & 0xff)
00068 #define RGB_GETBLUE(rgb)        ((rgb) & 0xff)
00069 #define RGBA_SETALPHA(rgba, x) (((x) << 24) | ((rgba) & 0x00ffffff))
00070 #define RGB_MAKE(r, g, b)       ((D3DCOLOR) (((r) << 16) | ((g) << 8) | (b)))
00071 #define RGBA_TORGB(rgba)       ((D3DCOLOR) ((rgba) & 0xffffff))
00072 #define RGB_TORGBA(rgb)        ((D3DCOLOR) ((rgb) | 0xff000000))
00073 
00074 #endif
00075 
00076 #define D3DENUMRET_CANCEL                        DDENUMRET_CANCEL
00077 #define D3DENUMRET_OK                            DDENUMRET_OK
00078 
00079 typedef HRESULT (CALLBACK *LPD3DVALIDATECALLBACK)(LPVOID lpUserArg, DWORD dwOffset);
00080 typedef HRESULT (CALLBACK *LPD3DENUMTEXTUREFORMATSCALLBACK)(LPDDSURFACEDESC lpDdsd, LPVOID lpContext);
00081 typedef HRESULT (CALLBACK *LPD3DENUMPIXELFORMATSCALLBACK)(LPDDPIXELFORMAT lpDDPixFmt, LPVOID lpContext);
00082 
00083 #ifndef DX_SHARED_DEFINES
00084 
00085 typedef float D3DVALUE,*LPD3DVALUE;
00086 
00087 #ifndef D3DCOLOR_DEFINED
00088 typedef DWORD D3DCOLOR, *LPD3DCOLOR;
00089 #define D3DCOLOR_DEFINED
00090 #endif
00091 
00092 #ifndef D3DVECTOR_DEFINED
00093 typedef struct _D3DVECTOR {
00094   union {
00095         D3DVALUE        x;
00096     D3DVALUE dvX;
00097   } DUMMYUNIONNAME1;
00098   union {
00099         D3DVALUE        y;
00100     D3DVALUE dvY;
00101   } DUMMYUNIONNAME2;
00102   union {
00103         D3DVALUE        z;
00104     D3DVALUE dvZ;
00105   } DUMMYUNIONNAME3;
00106 #if defined(__cplusplus) && defined(D3D_OVERLOADS)
00107   /* the definitions for these methods are in d3dvec.inl */
00108 public:
00109   /*** constructors ***/
00110   _D3DVECTOR() {}
00111   _D3DVECTOR(D3DVALUE f);
00112   _D3DVECTOR(D3DVALUE _x, D3DVALUE _y, D3DVALUE _z);
00113   _D3DVECTOR(const D3DVALUE f[3]);
00114 
00115   /*** assignment operators ***/
00116   _D3DVECTOR& operator += (const _D3DVECTOR& v);
00117   _D3DVECTOR& operator -= (const _D3DVECTOR& v);
00118   _D3DVECTOR& operator *= (const _D3DVECTOR& v);
00119   _D3DVECTOR& operator /= (const _D3DVECTOR& v);
00120   _D3DVECTOR& operator *= (D3DVALUE s);
00121   _D3DVECTOR& operator /= (D3DVALUE s);
00122 
00123   /*** unary operators ***/
00124   friend _D3DVECTOR operator + (const _D3DVECTOR& v);
00125   friend _D3DVECTOR operator - (const _D3DVECTOR& v);
00126 
00127   /*** binary operators ***/
00128   friend _D3DVECTOR operator + (const _D3DVECTOR& v1, const _D3DVECTOR& v2);
00129   friend _D3DVECTOR operator - (const _D3DVECTOR& v1, const _D3DVECTOR& v2);
00130 
00131   friend _D3DVECTOR operator * (const _D3DVECTOR& v, D3DVALUE s);
00132   friend _D3DVECTOR operator * (D3DVALUE s, const _D3DVECTOR& v);
00133   friend _D3DVECTOR operator / (const _D3DVECTOR& v, D3DVALUE s);
00134 
00135   friend D3DVALUE SquareMagnitude(const _D3DVECTOR& v);
00136   friend D3DVALUE Magnitude(const _D3DVECTOR& v);
00137 
00138   friend _D3DVECTOR Normalize(const _D3DVECTOR& v);
00139 
00140   friend D3DVALUE DotProduct(const _D3DVECTOR& v1, const _D3DVECTOR& v2);
00141   friend _D3DVECTOR CrossProduct(const _D3DVECTOR& v1, const _D3DVECTOR& v2);
00142 #endif
00143 } D3DVECTOR,*LPD3DVECTOR;
00144 #define D3DVECTOR_DEFINED
00145 #endif
00146 
00147 #define DX_SHARED_DEFINES
00148 #endif /* DX_SHARED_DEFINES */
00149 
00150 typedef DWORD D3DMATERIALHANDLE, *LPD3DMATERIALHANDLE;
00151 typedef DWORD D3DTEXTUREHANDLE,  *LPD3DTEXTUREHANDLE;
00152 typedef DWORD D3DMATRIXHANDLE,   *LPD3DMATRIXHANDLE;
00153 
00154 #ifndef D3DCOLORVALUE_DEFINED
00155 typedef struct _D3DCOLORVALUE {
00156         union {
00157                 D3DVALUE r;
00158                 D3DVALUE dvR;
00159         } DUMMYUNIONNAME1;
00160         union {
00161                 D3DVALUE g;
00162                 D3DVALUE dvG;
00163         } DUMMYUNIONNAME2;
00164         union {
00165                 D3DVALUE b;
00166                 D3DVALUE dvB;
00167         } DUMMYUNIONNAME3;
00168         union {
00169                 D3DVALUE a;
00170                 D3DVALUE dvA;
00171         } DUMMYUNIONNAME4;
00172 } D3DCOLORVALUE,*LPD3DCOLORVALUE;
00173 #endif
00174 
00175 #ifndef D3DRECT_DEFINED
00176 typedef struct _D3DRECT {
00177   union {
00178     LONG x1;
00179     LONG lX1;
00180   } DUMMYUNIONNAME1;
00181   union {
00182     LONG y1;
00183     LONG lY1;
00184   } DUMMYUNIONNAME2;
00185   union {
00186     LONG x2;
00187     LONG lX2;
00188   } DUMMYUNIONNAME3;
00189   union {
00190     LONG y2;
00191     LONG lY2;
00192   } DUMMYUNIONNAME4;
00193 } D3DRECT;
00194 #endif
00195 typedef struct _D3DRECT *LPD3DRECT;
00196 
00197 typedef struct _D3DHVERTEX {
00198     DWORD         dwFlags;
00199  union {
00200     D3DVALUE    hx;
00201     D3DVALUE    dvHX;
00202   } DUMMYUNIONNAME1;
00203   union {
00204     D3DVALUE    hy;
00205     D3DVALUE    dvHY;
00206   } DUMMYUNIONNAME2;
00207   union {
00208     D3DVALUE    hz;
00209     D3DVALUE    dvHZ;
00210   } DUMMYUNIONNAME3;
00211 } D3DHVERTEX, *LPD3DHVERTEX;
00212 
00213 /*
00214  * Transformed/lit vertices
00215  */
00216 typedef struct _D3DTLVERTEX {
00217   union {
00218     D3DVALUE    sx;
00219     D3DVALUE    dvSX;
00220   } DUMMYUNIONNAME1;
00221   union {
00222     D3DVALUE    sy;
00223     D3DVALUE    dvSY;
00224   } DUMMYUNIONNAME2;
00225   union {
00226     D3DVALUE    sz;
00227     D3DVALUE    dvSZ;
00228   } DUMMYUNIONNAME3;
00229   union {
00230     D3DVALUE    rhw;
00231     D3DVALUE    dvRHW;
00232   } DUMMYUNIONNAME4;
00233   union {
00234     D3DCOLOR    color;
00235     D3DCOLOR    dcColor;
00236   } DUMMYUNIONNAME5;
00237   union {
00238     D3DCOLOR    specular;
00239     D3DCOLOR    dcSpecular;
00240   } DUMMYUNIONNAME6;
00241   union {
00242     D3DVALUE    tu;
00243     D3DVALUE    dvTU;
00244   } DUMMYUNIONNAME7;
00245   union {
00246     D3DVALUE    tv;
00247     D3DVALUE    dvTV;
00248   } DUMMYUNIONNAME8;
00249 #if defined(__cplusplus) && defined(D3D_OVERLOADS)
00250 public:
00251   _D3DTLVERTEX() {}
00252   _D3DTLVERTEX(const D3DVECTOR& v, float _rhw, D3DCOLOR _color, D3DCOLOR _specular, float _tu, float _tv) {
00253     sx = v.x; sy = v.y; sz = v.z; rhw = _rhw;
00254     color = _color; specular = _specular;
00255     tu = _tu; tv = _tv;
00256   }
00257 #endif
00258 } D3DTLVERTEX, *LPD3DTLVERTEX;
00259 
00260 typedef struct _D3DLVERTEX {
00261   union {
00262     D3DVALUE x;
00263     D3DVALUE dvX;
00264   } DUMMYUNIONNAME1;
00265   union {
00266     D3DVALUE y;
00267     D3DVALUE dvY;
00268   } DUMMYUNIONNAME2;
00269   union {
00270     D3DVALUE z;
00271     D3DVALUE dvZ;
00272   } DUMMYUNIONNAME3;
00273   DWORD            dwReserved;
00274   union {
00275     D3DCOLOR     color;
00276     D3DCOLOR     dcColor;
00277   } DUMMYUNIONNAME4;
00278   union {
00279     D3DCOLOR     specular;
00280     D3DCOLOR     dcSpecular;
00281   } DUMMYUNIONNAME5;
00282   union {
00283     D3DVALUE     tu;
00284     D3DVALUE     dvTU;
00285   } DUMMYUNIONNAME6;
00286   union {
00287     D3DVALUE     tv;
00288     D3DVALUE     dvTV;
00289   } DUMMYUNIONNAME7;
00290 } D3DLVERTEX, *LPD3DLVERTEX;
00291 
00292 typedef struct _D3DVERTEX {
00293   union {
00294     D3DVALUE     x;
00295     D3DVALUE     dvX;
00296   } DUMMYUNIONNAME1;
00297   union {
00298     D3DVALUE     y;
00299     D3DVALUE     dvY;
00300   } DUMMYUNIONNAME2;
00301   union {
00302     D3DVALUE     z;
00303     D3DVALUE     dvZ;
00304   } DUMMYUNIONNAME3;
00305   union {
00306     D3DVALUE     nx;
00307     D3DVALUE     dvNX;
00308   } DUMMYUNIONNAME4;
00309   union {
00310     D3DVALUE     ny;
00311     D3DVALUE     dvNY;
00312   } DUMMYUNIONNAME5;
00313   union {
00314     D3DVALUE     nz;
00315     D3DVALUE     dvNZ;
00316   } DUMMYUNIONNAME6;
00317   union {
00318     D3DVALUE     tu;
00319     D3DVALUE     dvTU;
00320   } DUMMYUNIONNAME7;
00321   union {
00322     D3DVALUE     tv;
00323     D3DVALUE     dvTV;
00324   } DUMMYUNIONNAME8;
00325 #if defined(__cplusplus) && defined(D3D_OVERLOADS)
00326 public:
00327   _D3DVERTEX() {}
00328   _D3DVERTEX(const D3DVECTOR& v, const D3DVECTOR& n, float _tu, float _tv) {
00329     x  = v.x; y  = v.y; z  = v.z;
00330     nx = n.x; ny = n.y; nz = n.z;
00331     tu = _tu; tv = _tv;
00332   }
00333 #endif
00334 } D3DVERTEX, *LPD3DVERTEX;
00335 
00336 #ifndef D3DMATRIX_DEFINED
00337 typedef struct _D3DMATRIX {
00338   D3DVALUE        _11, _12, _13, _14;
00339   D3DVALUE        _21, _22, _23, _24;
00340   D3DVALUE        _31, _32, _33, _34;
00341   D3DVALUE        _41, _42, _43, _44;
00342 #if defined(__cplusplus) && defined(D3D_OVERLOADS)
00343   _D3DMATRIX() { }
00344 
00345     /* This is different from MS, but avoids anonymous structs. */
00346     D3DVALUE &operator () (int r, int c)
00347     { return ((D3DVALUE [4][4])&_11)[r][c]; }
00348     const D3DVALUE &operator() (int r, int c) const
00349     { return ((const D3DVALUE [4][4])&_11)[r][c]; }
00350 #endif
00351 } D3DMATRIX, *LPD3DMATRIX;
00352 #endif
00353 
00354 #if defined(__cplusplus) && defined(D3D_OVERLOADS)
00355 #include <d3dvec.inl>
00356 #endif
00357 
00358 typedef struct _D3DVIEWPORT {
00359   DWORD       dwSize;
00360   DWORD       dwX;
00361   DWORD       dwY;
00362   DWORD       dwWidth;
00363   DWORD       dwHeight;
00364   D3DVALUE    dvScaleX;
00365   D3DVALUE    dvScaleY;
00366   D3DVALUE    dvMaxX;
00367   D3DVALUE    dvMaxY;
00368   D3DVALUE    dvMinZ;
00369   D3DVALUE    dvMaxZ;
00370 } D3DVIEWPORT, *LPD3DVIEWPORT;
00371 
00372 typedef struct _D3DVIEWPORT2 {
00373   DWORD       dwSize;
00374   DWORD       dwX;
00375   DWORD       dwY;
00376   DWORD       dwWidth;
00377   DWORD       dwHeight;
00378   D3DVALUE    dvClipX;
00379   D3DVALUE    dvClipY;
00380   D3DVALUE    dvClipWidth;
00381   D3DVALUE    dvClipHeight;
00382   D3DVALUE    dvMinZ;
00383   D3DVALUE    dvMaxZ;
00384 } D3DVIEWPORT2, *LPD3DVIEWPORT2;
00385 
00386 typedef struct _D3DVIEWPORT7 {
00387   DWORD       dwX;
00388   DWORD       dwY;
00389   DWORD       dwWidth;
00390   DWORD       dwHeight;
00391   D3DVALUE    dvMinZ;
00392   D3DVALUE    dvMaxZ;
00393 } D3DVIEWPORT7, *LPD3DVIEWPORT7;
00394 
00395 #define D3DMAXUSERCLIPPLANES 32
00396 
00397 #define D3DCLIPPLANE0 (1 << 0)
00398 #define D3DCLIPPLANE1 (1 << 1)
00399 #define D3DCLIPPLANE2 (1 << 2)
00400 #define D3DCLIPPLANE3 (1 << 3)
00401 #define D3DCLIPPLANE4 (1 << 4)
00402 #define D3DCLIPPLANE5 (1 << 5)
00403 
00404 #define D3DCLIP_LEFT     0x00000001
00405 #define D3DCLIP_RIGHT    0x00000002
00406 #define D3DCLIP_TOP      0x00000004
00407 #define D3DCLIP_BOTTOM   0x00000008
00408 #define D3DCLIP_FRONT    0x00000010
00409 #define D3DCLIP_BACK     0x00000020
00410 #define D3DCLIP_GEN0     0x00000040
00411 #define D3DCLIP_GEN1     0x00000080
00412 #define D3DCLIP_GEN2     0x00000100
00413 #define D3DCLIP_GEN3     0x00000200
00414 #define D3DCLIP_GEN4     0x00000400
00415 #define D3DCLIP_GEN5     0x00000800
00416 
00417 #define D3DSTATUS_CLIPUNIONLEFT                 D3DCLIP_LEFT
00418 #define D3DSTATUS_CLIPUNIONRIGHT                D3DCLIP_RIGHT
00419 #define D3DSTATUS_CLIPUNIONTOP                  D3DCLIP_TOP
00420 #define D3DSTATUS_CLIPUNIONBOTTOM               D3DCLIP_BOTTOM
00421 #define D3DSTATUS_CLIPUNIONFRONT                D3DCLIP_FRONT
00422 #define D3DSTATUS_CLIPUNIONBACK                 D3DCLIP_BACK
00423 #define D3DSTATUS_CLIPUNIONGEN0                 D3DCLIP_GEN0
00424 #define D3DSTATUS_CLIPUNIONGEN1                 D3DCLIP_GEN1
00425 #define D3DSTATUS_CLIPUNIONGEN2                 D3DCLIP_GEN2
00426 #define D3DSTATUS_CLIPUNIONGEN3                 D3DCLIP_GEN3
00427 #define D3DSTATUS_CLIPUNIONGEN4                 D3DCLIP_GEN4
00428 #define D3DSTATUS_CLIPUNIONGEN5                 D3DCLIP_GEN5
00429 
00430 #define D3DSTATUS_CLIPINTERSECTIONLEFT          0x00001000
00431 #define D3DSTATUS_CLIPINTERSECTIONRIGHT         0x00002000
00432 #define D3DSTATUS_CLIPINTERSECTIONTOP           0x00004000
00433 #define D3DSTATUS_CLIPINTERSECTIONBOTTOM        0x00008000
00434 #define D3DSTATUS_CLIPINTERSECTIONFRONT         0x00010000
00435 #define D3DSTATUS_CLIPINTERSECTIONBACK          0x00020000
00436 #define D3DSTATUS_CLIPINTERSECTIONGEN0          0x00040000
00437 #define D3DSTATUS_CLIPINTERSECTIONGEN1          0x00080000
00438 #define D3DSTATUS_CLIPINTERSECTIONGEN2          0x00100000
00439 #define D3DSTATUS_CLIPINTERSECTIONGEN3          0x00200000
00440 #define D3DSTATUS_CLIPINTERSECTIONGEN4          0x00400000
00441 #define D3DSTATUS_CLIPINTERSECTIONGEN5          0x00800000
00442 #define D3DSTATUS_ZNOTVISIBLE                   0x01000000
00443 
00444 #define D3DSTATUS_CLIPUNIONALL  (               \
00445             D3DSTATUS_CLIPUNIONLEFT     |       \
00446             D3DSTATUS_CLIPUNIONRIGHT    |       \
00447             D3DSTATUS_CLIPUNIONTOP      |       \
00448             D3DSTATUS_CLIPUNIONBOTTOM   |       \
00449             D3DSTATUS_CLIPUNIONFRONT    |       \
00450             D3DSTATUS_CLIPUNIONBACK     |       \
00451             D3DSTATUS_CLIPUNIONGEN0     |       \
00452             D3DSTATUS_CLIPUNIONGEN1     |       \
00453             D3DSTATUS_CLIPUNIONGEN2     |       \
00454             D3DSTATUS_CLIPUNIONGEN3     |       \
00455             D3DSTATUS_CLIPUNIONGEN4     |       \
00456             D3DSTATUS_CLIPUNIONGEN5             \
00457             )
00458 
00459 #define D3DSTATUS_CLIPINTERSECTIONALL   (               \
00460             D3DSTATUS_CLIPINTERSECTIONLEFT      |       \
00461             D3DSTATUS_CLIPINTERSECTIONRIGHT     |       \
00462             D3DSTATUS_CLIPINTERSECTIONTOP       |       \
00463             D3DSTATUS_CLIPINTERSECTIONBOTTOM    |       \
00464             D3DSTATUS_CLIPINTERSECTIONFRONT     |       \
00465             D3DSTATUS_CLIPINTERSECTIONBACK      |       \
00466             D3DSTATUS_CLIPINTERSECTIONGEN0      |       \
00467             D3DSTATUS_CLIPINTERSECTIONGEN1      |       \
00468             D3DSTATUS_CLIPINTERSECTIONGEN2      |       \
00469             D3DSTATUS_CLIPINTERSECTIONGEN3      |       \
00470             D3DSTATUS_CLIPINTERSECTIONGEN4      |       \
00471             D3DSTATUS_CLIPINTERSECTIONGEN5              \
00472             )
00473 
00474 #define D3DSTATUS_DEFAULT       (                       \
00475             D3DSTATUS_CLIPINTERSECTIONALL       |       \
00476             D3DSTATUS_ZNOTVISIBLE)
00477 
00478 #define D3DTRANSFORM_CLIPPED       0x00000001
00479 #define D3DTRANSFORM_UNCLIPPED     0x00000002
00480 
00481 typedef struct _D3DTRANSFORMDATA {
00482   DWORD           dwSize;
00483   LPVOID          lpIn;
00484   DWORD           dwInSize;
00485   LPVOID          lpOut;
00486   DWORD           dwOutSize;
00487   LPD3DHVERTEX    lpHOut;
00488   DWORD           dwClip;
00489   DWORD           dwClipIntersection;
00490   DWORD           dwClipUnion;
00491   D3DRECT         drExtent;
00492 } D3DTRANSFORMDATA, *LPD3DTRANSFORMDATA;
00493 
00494 typedef struct _D3DLIGHTINGELEMENT {
00495   D3DVECTOR dvPosition;
00496   D3DVECTOR dvNormal;
00497 } D3DLIGHTINGELEMENT, *LPD3DLIGHTINGELEMENT;
00498 
00499 typedef struct _D3DMATERIAL {
00500   DWORD               dwSize;
00501   union {
00502     D3DCOLORVALUE   diffuse;
00503     D3DCOLORVALUE   dcvDiffuse;
00504   } DUMMYUNIONNAME;
00505   union {
00506     D3DCOLORVALUE   ambient;
00507     D3DCOLORVALUE   dcvAmbient;
00508   } DUMMYUNIONNAME1;
00509   union {
00510     D3DCOLORVALUE   specular;
00511     D3DCOLORVALUE   dcvSpecular;
00512   } DUMMYUNIONNAME2;
00513   union {
00514     D3DCOLORVALUE   emissive;
00515     D3DCOLORVALUE   dcvEmissive;
00516   } DUMMYUNIONNAME3;
00517   union {
00518     D3DVALUE        power;
00519     D3DVALUE        dvPower;
00520   } DUMMYUNIONNAME4;
00521   D3DTEXTUREHANDLE    hTexture;
00522   DWORD               dwRampSize;
00523 } D3DMATERIAL, *LPD3DMATERIAL;
00524 
00525 typedef struct _D3DMATERIAL7 {
00526   union {
00527     D3DCOLORVALUE   diffuse;
00528     D3DCOLORVALUE   dcvDiffuse;
00529   } DUMMYUNIONNAME;
00530   union {
00531     D3DCOLORVALUE   ambient;
00532     D3DCOLORVALUE   dcvAmbient;
00533   } DUMMYUNIONNAME1;
00534   union {
00535     D3DCOLORVALUE   specular;
00536     D3DCOLORVALUE   dcvSpecular;
00537   } DUMMYUNIONNAME2;
00538   union {
00539     D3DCOLORVALUE   emissive;
00540     D3DCOLORVALUE   dcvEmissive;
00541   } DUMMYUNIONNAME3;
00542   union {
00543     D3DVALUE        power;
00544     D3DVALUE        dvPower;
00545   } DUMMYUNIONNAME4;
00546 } D3DMATERIAL7, *LPD3DMATERIAL7;
00547 
00548 #if (DIRECT3D_VERSION < 0x0800)
00549 
00550 typedef enum {
00551   D3DLIGHT_POINT          = 1,
00552   D3DLIGHT_SPOT           = 2,
00553   D3DLIGHT_DIRECTIONAL    = 3,
00554   D3DLIGHT_PARALLELPOINT  = 4,
00555   D3DLIGHT_GLSPOT         = 5,
00556   D3DLIGHT_FORCE_DWORD    = 0x7fffffff
00557 } D3DLIGHTTYPE;
00558 
00559 #endif
00560 
00561 typedef struct _D3DLIGHT {
00562     DWORD           dwSize;
00563     D3DLIGHTTYPE    dltType;
00564     D3DCOLORVALUE   dcvColor;
00565     D3DVECTOR       dvPosition;
00566     D3DVECTOR       dvDirection;
00567     D3DVALUE        dvRange;
00568     D3DVALUE        dvFalloff;
00569     D3DVALUE        dvAttenuation0;
00570     D3DVALUE        dvAttenuation1;
00571     D3DVALUE        dvAttenuation2;
00572     D3DVALUE        dvTheta;
00573     D3DVALUE        dvPhi;
00574 } D3DLIGHT,*LPD3DLIGHT;
00575 
00576 typedef struct _D3DLIGHT7 {
00577     D3DLIGHTTYPE    dltType;
00578     D3DCOLORVALUE   dcvDiffuse;
00579     D3DCOLORVALUE   dcvSpecular;
00580     D3DCOLORVALUE   dcvAmbient;
00581     D3DVECTOR       dvPosition;
00582     D3DVECTOR       dvDirection;
00583     D3DVALUE        dvRange;
00584     D3DVALUE        dvFalloff;
00585     D3DVALUE        dvAttenuation0;
00586     D3DVALUE        dvAttenuation1;
00587     D3DVALUE        dvAttenuation2;
00588     D3DVALUE        dvTheta;
00589     D3DVALUE        dvPhi;
00590 } D3DLIGHT7, *LPD3DLIGHT7;
00591 
00592 #define D3DLIGHT_ACTIVE         0x00000001
00593 #define D3DLIGHT_NO_SPECULAR    0x00000002
00594 #define D3DLIGHT_ALL (D3DLIGHT_ACTIVE | D3DLIGHT_NO_SPECULAR) /* 0x3 */
00595 
00596 #define D3DLIGHT_RANGE_MAX              ((float)sqrt(FLT_MAX))
00597 
00598 typedef struct _D3DLIGHT2 {
00599   DWORD           dwSize;
00600   D3DLIGHTTYPE    dltType;
00601   D3DCOLORVALUE   dcvColor;
00602   D3DVECTOR       dvPosition;
00603   D3DVECTOR       dvDirection;
00604   D3DVALUE        dvRange;
00605   D3DVALUE        dvFalloff;
00606   D3DVALUE        dvAttenuation0;
00607   D3DVALUE        dvAttenuation1;
00608   D3DVALUE        dvAttenuation2;
00609   D3DVALUE        dvTheta;
00610   D3DVALUE        dvPhi;
00611   DWORD           dwFlags;
00612 } D3DLIGHT2, *LPD3DLIGHT2;
00613 
00614 typedef struct _D3DLIGHTDATA {
00615   DWORD                dwSize;
00616   LPD3DLIGHTINGELEMENT lpIn;
00617   DWORD                dwInSize;
00618   LPD3DTLVERTEX        lpOut;
00619   DWORD                dwOutSize;
00620 } D3DLIGHTDATA, *LPD3DLIGHTDATA;
00621 
00622 #define D3DCOLOR_MONO   1
00623 #define D3DCOLOR_RGB    2
00624 
00625 typedef DWORD D3DCOLORMODEL;
00626 
00627 #ifndef D3DCLEAR_TARGET
00628 #define D3DCLEAR_TARGET   0x00000001
00629 #endif
00630 
00631 #ifndef D3DCLEAR_ZBUFFER
00632 #define D3DCLEAR_ZBUFFER  0x00000002
00633 #endif
00634 
00635 #ifndef D3DCLEAR_STENCIL
00636 #define D3DCLEAR_STENCIL  0x00000004
00637 #endif
00638 
00639 typedef enum _D3DOPCODE {
00640   D3DOP_POINT           = 1,
00641   D3DOP_LINE            = 2,
00642   D3DOP_TRIANGLE        = 3,
00643   D3DOP_MATRIXLOAD      = 4,
00644   D3DOP_MATRIXMULTIPLY  = 5,
00645   D3DOP_STATETRANSFORM  = 6,
00646   D3DOP_STATELIGHT      = 7,
00647   D3DOP_STATERENDER     = 8,
00648   D3DOP_PROCESSVERTICES = 9,
00649   D3DOP_TEXTURELOAD     = 10,
00650   D3DOP_EXIT            = 11,
00651   D3DOP_BRANCHFORWARD   = 12,
00652   D3DOP_SPAN            = 13,
00653   D3DOP_SETSTATUS       = 14,
00654 
00655   D3DOP_FORCE_DWORD     = 0x7fffffff
00656 } D3DOPCODE;
00657 
00658 typedef struct _D3DINSTRUCTION {
00659   BYTE bOpcode;
00660   BYTE bSize;
00661   WORD wCount;
00662 } D3DINSTRUCTION, *LPD3DINSTRUCTION;
00663 
00664 typedef struct _D3DTEXTURELOAD {
00665   D3DTEXTUREHANDLE hDestTexture;
00666   D3DTEXTUREHANDLE hSrcTexture;
00667 } D3DTEXTURELOAD, *LPD3DTEXTURELOAD;
00668 
00669 typedef struct _D3DPICKRECORD {
00670   BYTE     bOpcode;
00671   BYTE     bPad;
00672   DWORD    dwOffset;
00673   D3DVALUE dvZ;
00674 } D3DPICKRECORD, *LPD3DPICKRECORD;
00675 
00676 #if (DIRECT3D_VERSION < 0x0800)
00677 
00678 typedef enum {
00679   D3DSHADE_FLAT         = 1,
00680   D3DSHADE_GOURAUD      = 2,
00681   D3DSHADE_PHONG        = 3,
00682   D3DSHADE_FORCE_DWORD  = 0x7fffffff
00683 } D3DSHADEMODE;
00684 
00685 typedef enum {
00686   D3DFILL_POINT         = 1,
00687   D3DFILL_WIREFRAME     = 2,
00688   D3DFILL_SOLID         = 3,
00689   D3DFILL_FORCE_DWORD   = 0x7fffffff
00690 } D3DFILLMODE;
00691 
00692 typedef struct _D3DLINEPATTERN {
00693   WORD    wRepeatFactor;
00694   WORD    wLinePattern;
00695 } D3DLINEPATTERN;
00696 
00697 #endif /* (DIRECT3D_VERSION < 0x0800) */
00698 
00699 typedef enum {
00700   D3DFILTER_NEAREST          = 1,
00701   D3DFILTER_LINEAR           = 2,
00702   D3DFILTER_MIPNEAREST       = 3,
00703   D3DFILTER_MIPLINEAR        = 4,
00704   D3DFILTER_LINEARMIPNEAREST = 5,
00705   D3DFILTER_LINEARMIPLINEAR  = 6,
00706   D3DFILTER_FORCE_DWORD      = 0x7fffffff
00707 } D3DTEXTUREFILTER;
00708 
00709 #if (DIRECT3D_VERSION < 0x0800)
00710 
00711 typedef enum {
00712   D3DBLEND_ZERO            = 1,
00713   D3DBLEND_ONE             = 2,
00714   D3DBLEND_SRCCOLOR        = 3,
00715   D3DBLEND_INVSRCCOLOR     = 4,
00716   D3DBLEND_SRCALPHA        = 5,
00717   D3DBLEND_INVSRCALPHA     = 6,
00718   D3DBLEND_DESTALPHA       = 7,
00719   D3DBLEND_INVDESTALPHA    = 8,
00720   D3DBLEND_DESTCOLOR       = 9,
00721   D3DBLEND_INVDESTCOLOR    = 10,
00722   D3DBLEND_SRCALPHASAT     = 11,
00723   D3DBLEND_BOTHSRCALPHA    = 12,
00724   D3DBLEND_BOTHINVSRCALPHA = 13,
00725   D3DBLEND_FORCE_DWORD     = 0x7fffffff
00726 } D3DBLEND;
00727 
00728 #endif /* (DIRECT3D_VERSION < 0x0800) */
00729 
00730 
00731 typedef enum {
00732   D3DTBLEND_DECAL         = 1,
00733   D3DTBLEND_MODULATE      = 2,
00734   D3DTBLEND_DECALALPHA    = 3,
00735   D3DTBLEND_MODULATEALPHA = 4,
00736   D3DTBLEND_DECALMASK     = 5,
00737   D3DTBLEND_MODULATEMASK  = 6,
00738   D3DTBLEND_COPY          = 7,
00739   D3DTBLEND_ADD           = 8,
00740   D3DTBLEND_FORCE_DWORD   = 0x7fffffff
00741 } D3DTEXTUREBLEND;
00742 
00743 
00744 #if (DIRECT3D_VERSION < 0x0800)
00745 
00746 typedef enum _D3DTEXTUREADDRESS {
00747     D3DTADDRESS_WRAP           = 1,
00748     D3DTADDRESS_MIRROR         = 2,
00749     D3DTADDRESS_CLAMP          = 3,
00750     D3DTADDRESS_BORDER         = 4,
00751     D3DTADDRESS_FORCE_DWORD    = 0x7fffffff
00752 } D3DTEXTUREADDRESS;
00753 
00754 typedef enum {
00755   D3DCULL_NONE        = 1,
00756   D3DCULL_CW          = 2,
00757   D3DCULL_CCW         = 3,
00758   D3DCULL_FORCE_DWORD = 0x7fffffff
00759 } D3DCULL;
00760 
00761 typedef enum {
00762   D3DCMP_NEVER        = 1,
00763   D3DCMP_LESS         = 2,
00764   D3DCMP_EQUAL        = 3,
00765   D3DCMP_LESSEQUAL    = 4,
00766   D3DCMP_GREATER      = 5,
00767   D3DCMP_NOTEQUAL     = 6,
00768   D3DCMP_GREATEREQUAL = 7,
00769   D3DCMP_ALWAYS       = 8,
00770   D3DCMP_FORCE_DWORD  = 0x7fffffff
00771 } D3DCMPFUNC;
00772 
00773 typedef enum _D3DSTENCILOP {
00774   D3DSTENCILOP_KEEP        = 1,
00775   D3DSTENCILOP_ZERO        = 2,
00776   D3DSTENCILOP_REPLACE     = 3,
00777   D3DSTENCILOP_INCRSAT     = 4,
00778   D3DSTENCILOP_DECRSAT     = 5,
00779   D3DSTENCILOP_INVERT      = 6,
00780   D3DSTENCILOP_INCR        = 7,
00781   D3DSTENCILOP_DECR        = 8,
00782   D3DSTENCILOP_FORCE_DWORD = 0x7fffffff
00783 } D3DSTENCILOP;
00784 
00785 typedef enum _D3DFOGMODE {
00786   D3DFOG_NONE         = 0,
00787   D3DFOG_EXP          = 1,
00788   D3DFOG_EXP2         = 2,
00789   D3DFOG_LINEAR       = 3,
00790   D3DFOG_FORCE_DWORD  = 0x7fffffff
00791 } D3DFOGMODE;
00792 
00793 typedef enum _D3DZBUFFERTYPE {
00794   D3DZB_FALSE        = 0,
00795   D3DZB_TRUE         = 1,
00796   D3DZB_USEW         = 2,
00797   D3DZB_FORCE_DWORD  = 0x7fffffff
00798 } D3DZBUFFERTYPE;
00799 
00800 #endif /* (DIRECT3D_VERSION < 0x0800) */
00801 
00802 typedef enum _D3DANTIALIASMODE {
00803   D3DANTIALIAS_NONE            = 0,
00804   D3DANTIALIAS_SORTDEPENDENT   = 1,
00805   D3DANTIALIAS_SORTINDEPENDENT = 2,
00806   D3DANTIALIAS_FORCE_DWORD     = 0x7fffffff
00807 } D3DANTIALIASMODE;
00808 
00809 typedef enum {
00810   D3DVT_VERTEX        = 1,
00811   D3DVT_LVERTEX       = 2,
00812   D3DVT_TLVERTEX      = 3,
00813   D3DVT_FORCE_DWORD   = 0x7fffffff
00814 } D3DVERTEXTYPE;
00815 
00816 #if (DIRECT3D_VERSION < 0x0800)
00817 
00818 typedef enum {
00819   D3DPT_POINTLIST     = 1,
00820   D3DPT_LINELIST      = 2,
00821   D3DPT_LINESTRIP     = 3,
00822   D3DPT_TRIANGLELIST  = 4,
00823   D3DPT_TRIANGLESTRIP = 5,
00824   D3DPT_TRIANGLEFAN   = 6,
00825   D3DPT_FORCE_DWORD   = 0x7fffffff
00826 } D3DPRIMITIVETYPE;
00827 
00828 #endif /* (DIRECT3D_VERSION < 0x0800) */
00829 
00830 #define D3DSTATE_OVERRIDE_BIAS      256
00831 
00832 #define D3DSTATE_OVERRIDE(type) (D3DRENDERSTATETYPE)(((DWORD) (type) + D3DSTATE_OVERRIDE_BIAS))
00833 
00834 #if (DIRECT3D_VERSION < 0x0800)
00835 
00836 typedef enum _D3DTRANSFORMSTATETYPE {
00837     D3DTRANSFORMSTATE_WORLD         = 1,
00838     D3DTRANSFORMSTATE_VIEW          = 2,
00839     D3DTRANSFORMSTATE_PROJECTION    = 3,
00840     D3DTRANSFORMSTATE_WORLD1        = 4,
00841     D3DTRANSFORMSTATE_WORLD2        = 5,
00842     D3DTRANSFORMSTATE_WORLD3        = 6,
00843     D3DTRANSFORMSTATE_TEXTURE0      = 16,
00844     D3DTRANSFORMSTATE_TEXTURE1      = 17,
00845     D3DTRANSFORMSTATE_TEXTURE2      = 18,
00846     D3DTRANSFORMSTATE_TEXTURE3      = 19,
00847     D3DTRANSFORMSTATE_TEXTURE4      = 20,
00848     D3DTRANSFORMSTATE_TEXTURE5      = 21,
00849     D3DTRANSFORMSTATE_TEXTURE6      = 22,
00850     D3DTRANSFORMSTATE_TEXTURE7      = 23,
00851     D3DTRANSFORMSTATE_FORCE_DWORD   = 0x7fffffff
00852 } D3DTRANSFORMSTATETYPE;
00853 
00854 #endif /* (DIRECT3D_VERSION < 0x0800) */
00855 
00856 typedef enum {
00857   D3DLIGHTSTATE_MATERIAL      = 1,
00858   D3DLIGHTSTATE_AMBIENT       = 2,
00859   D3DLIGHTSTATE_COLORMODEL    = 3,
00860   D3DLIGHTSTATE_FOGMODE       = 4,
00861   D3DLIGHTSTATE_FOGSTART      = 5,
00862   D3DLIGHTSTATE_FOGEND        = 6,
00863   D3DLIGHTSTATE_FOGDENSITY    = 7,
00864   D3DLIGHTSTATE_COLORVERTEX   = 8,
00865   D3DLIGHTSTATE_FORCE_DWORD   = 0x7fffffff
00866 } D3DLIGHTSTATETYPE;
00867 
00868 #if (DIRECT3D_VERSION < 0x0800)
00869 
00870 typedef enum {
00871   D3DRENDERSTATE_TEXTUREHANDLE      = 1,
00872   D3DRENDERSTATE_ANTIALIAS          = 2,
00873   D3DRENDERSTATE_TEXTUREADDRESS     = 3,
00874   D3DRENDERSTATE_TEXTUREPERSPECTIVE = 4,
00875   D3DRENDERSTATE_WRAPU              = 5,
00876   D3DRENDERSTATE_WRAPV              = 6,
00877   D3DRENDERSTATE_ZENABLE            = 7,
00878   D3DRENDERSTATE_FILLMODE           = 8,
00879   D3DRENDERSTATE_SHADEMODE          = 9,
00880   D3DRENDERSTATE_LINEPATTERN        = 10,
00881   D3DRENDERSTATE_MONOENABLE         = 11,
00882   D3DRENDERSTATE_ROP2               = 12,
00883   D3DRENDERSTATE_PLANEMASK          = 13,
00884   D3DRENDERSTATE_ZWRITEENABLE       = 14,
00885   D3DRENDERSTATE_ALPHATESTENABLE    = 15,
00886   D3DRENDERSTATE_LASTPIXEL          = 16,
00887   D3DRENDERSTATE_TEXTUREMAG         = 17,
00888   D3DRENDERSTATE_TEXTUREMIN         = 18,
00889   D3DRENDERSTATE_SRCBLEND           = 19,
00890   D3DRENDERSTATE_DESTBLEND          = 20,
00891   D3DRENDERSTATE_TEXTUREMAPBLEND    = 21,
00892   D3DRENDERSTATE_CULLMODE           = 22,
00893   D3DRENDERSTATE_ZFUNC              = 23,
00894   D3DRENDERSTATE_ALPHAREF           = 24,
00895   D3DRENDERSTATE_ALPHAFUNC          = 25,
00896   D3DRENDERSTATE_DITHERENABLE       = 26,
00897   D3DRENDERSTATE_ALPHABLENDENABLE   = 27,
00898   D3DRENDERSTATE_FOGENABLE          = 28,
00899   D3DRENDERSTATE_SPECULARENABLE     = 29,
00900   D3DRENDERSTATE_ZVISIBLE           = 30,
00901   D3DRENDERSTATE_SUBPIXEL           = 31,
00902   D3DRENDERSTATE_SUBPIXELX          = 32,
00903   D3DRENDERSTATE_STIPPLEDALPHA      = 33,
00904   D3DRENDERSTATE_FOGCOLOR           = 34,
00905   D3DRENDERSTATE_FOGTABLEMODE       = 35,
00906   D3DRENDERSTATE_FOGTABLESTART      = 36,
00907   D3DRENDERSTATE_FOGTABLEEND        = 37,
00908   D3DRENDERSTATE_FOGTABLEDENSITY    = 38,
00909   D3DRENDERSTATE_FOGSTART           = 36,
00910   D3DRENDERSTATE_FOGEND             = 37,
00911   D3DRENDERSTATE_FOGDENSITY         = 38,
00912   D3DRENDERSTATE_STIPPLEENABLE      = 39,
00913   D3DRENDERSTATE_EDGEANTIALIAS      = 40,
00914   D3DRENDERSTATE_COLORKEYENABLE     = 41,
00915   D3DRENDERSTATE_BORDERCOLOR        = 43,
00916   D3DRENDERSTATE_TEXTUREADDRESSU    = 44,
00917   D3DRENDERSTATE_TEXTUREADDRESSV    = 45,
00918   D3DRENDERSTATE_MIPMAPLODBIAS      = 46,
00919   D3DRENDERSTATE_ZBIAS              = 47,
00920   D3DRENDERSTATE_RANGEFOGENABLE     = 48,
00921   D3DRENDERSTATE_ANISOTROPY         = 49,
00922   D3DRENDERSTATE_FLUSHBATCH         = 50,
00923   D3DRENDERSTATE_TRANSLUCENTSORTINDEPENDENT = 51,
00924 
00925   D3DRENDERSTATE_STENCILENABLE      = 52,
00926   D3DRENDERSTATE_STENCILFAIL        = 53,
00927   D3DRENDERSTATE_STENCILZFAIL       = 54,
00928   D3DRENDERSTATE_STENCILPASS        = 55,
00929   D3DRENDERSTATE_STENCILFUNC        = 56,
00930   D3DRENDERSTATE_STENCILREF         = 57,
00931   D3DRENDERSTATE_STENCILMASK        = 58,
00932   D3DRENDERSTATE_STENCILWRITEMASK   = 59,
00933   D3DRENDERSTATE_TEXTUREFACTOR      = 60,
00934 
00935   D3DRENDERSTATE_STIPPLEPATTERN00   = 64,
00936   D3DRENDERSTATE_STIPPLEPATTERN01   = 65,
00937   D3DRENDERSTATE_STIPPLEPATTERN02   = 66,
00938   D3DRENDERSTATE_STIPPLEPATTERN03   = 67,
00939   D3DRENDERSTATE_STIPPLEPATTERN04   = 68,
00940   D3DRENDERSTATE_STIPPLEPATTERN05   = 69,
00941   D3DRENDERSTATE_STIPPLEPATTERN06   = 70,
00942   D3DRENDERSTATE_STIPPLEPATTERN07   = 71,
00943   D3DRENDERSTATE_STIPPLEPATTERN08   = 72,
00944   D3DRENDERSTATE_STIPPLEPATTERN09   = 73,
00945   D3DRENDERSTATE_STIPPLEPATTERN10   = 74,
00946   D3DRENDERSTATE_STIPPLEPATTERN11   = 75,
00947   D3DRENDERSTATE_STIPPLEPATTERN12   = 76,
00948   D3DRENDERSTATE_STIPPLEPATTERN13   = 77,
00949   D3DRENDERSTATE_STIPPLEPATTERN14   = 78,
00950   D3DRENDERSTATE_STIPPLEPATTERN15   = 79,
00951   D3DRENDERSTATE_STIPPLEPATTERN16   = 80,
00952   D3DRENDERSTATE_STIPPLEPATTERN17   = 81,
00953   D3DRENDERSTATE_STIPPLEPATTERN18   = 82,
00954   D3DRENDERSTATE_STIPPLEPATTERN19   = 83,
00955   D3DRENDERSTATE_STIPPLEPATTERN20   = 84,
00956   D3DRENDERSTATE_STIPPLEPATTERN21   = 85,
00957   D3DRENDERSTATE_STIPPLEPATTERN22   = 86,
00958   D3DRENDERSTATE_STIPPLEPATTERN23   = 87,
00959   D3DRENDERSTATE_STIPPLEPATTERN24   = 88,
00960   D3DRENDERSTATE_STIPPLEPATTERN25   = 89,
00961   D3DRENDERSTATE_STIPPLEPATTERN26   = 90,
00962   D3DRENDERSTATE_STIPPLEPATTERN27   = 91,
00963   D3DRENDERSTATE_STIPPLEPATTERN28   = 92,
00964   D3DRENDERSTATE_STIPPLEPATTERN29   = 93,
00965   D3DRENDERSTATE_STIPPLEPATTERN30   = 94,
00966   D3DRENDERSTATE_STIPPLEPATTERN31   = 95,
00967 
00968   D3DRENDERSTATE_WRAP0              = 128,
00969   D3DRENDERSTATE_WRAP1              = 129,
00970   D3DRENDERSTATE_WRAP2              = 130,
00971   D3DRENDERSTATE_WRAP3              = 131,
00972   D3DRENDERSTATE_WRAP4              = 132,
00973   D3DRENDERSTATE_WRAP5              = 133,
00974   D3DRENDERSTATE_WRAP6              = 134,
00975   D3DRENDERSTATE_WRAP7              = 135,
00976   D3DRENDERSTATE_CLIPPING            = 136,
00977   D3DRENDERSTATE_LIGHTING            = 137,
00978   D3DRENDERSTATE_EXTENTS             = 138,
00979   D3DRENDERSTATE_AMBIENT             = 139,
00980   D3DRENDERSTATE_FOGVERTEXMODE       = 140,
00981   D3DRENDERSTATE_COLORVERTEX         = 141,
00982   D3DRENDERSTATE_LOCALVIEWER         = 142,
00983   D3DRENDERSTATE_NORMALIZENORMALS    = 143,
00984   D3DRENDERSTATE_COLORKEYBLENDENABLE = 144,
00985   D3DRENDERSTATE_DIFFUSEMATERIALSOURCE    = 145,
00986   D3DRENDERSTATE_SPECULARMATERIALSOURCE   = 146,
00987   D3DRENDERSTATE_AMBIENTMATERIALSOURCE    = 147,
00988   D3DRENDERSTATE_EMISSIVEMATERIALSOURCE   = 148,
00989   D3DRENDERSTATE_VERTEXBLEND              = 151,
00990   D3DRENDERSTATE_CLIPPLANEENABLE          = 152,
00991 
00992   D3DRENDERSTATE_FORCE_DWORD        = 0x7fffffff
00993 
00994   /* FIXME: We have some retired values that are being reused for DirectX 7 */
00995 } D3DRENDERSTATETYPE;
00996 
00997 typedef enum _D3DMATERIALCOLORSOURCE
00998 {
00999     D3DMCS_MATERIAL = 0,
01000     D3DMCS_COLOR1   = 1,
01001     D3DMCS_COLOR2   = 2,
01002     D3DMCS_FORCE_DWORD = 0x7fffffff
01003 } D3DMATERIALCOLORSOURCE;
01004 
01005 #define D3DRENDERSTATE_BLENDENABLE      D3DRENDERSTATE_ALPHABLENDENABLE
01006 #define D3DRENDERSTATE_WRAPBIAS                 128UL
01007 #define D3DWRAP_U   0x00000001L
01008 #define D3DWRAP_V   0x00000002L
01009 
01010 #define D3DWRAPCOORD_0   0x00000001L
01011 #define D3DWRAPCOORD_1   0x00000002L
01012 #define D3DWRAPCOORD_2   0x00000004L
01013 #define D3DWRAPCOORD_3   0x00000008L
01014 
01015 #endif /* (DIRECT3D_VERSION < 0x0800) */
01016 
01017 #define D3DRENDERSTATE_STIPPLEPATTERN(y) (D3DRENDERSTATE_STIPPLEPATTERN00 + (y))
01018 
01019 typedef struct _D3DSTATE {
01020   union {
01021     D3DTRANSFORMSTATETYPE dtstTransformStateType;
01022     D3DLIGHTSTATETYPE     dlstLightStateType;
01023     D3DRENDERSTATETYPE    drstRenderStateType;
01024   } DUMMYUNIONNAME1;
01025   union {
01026     DWORD                 dwArg[1];
01027     D3DVALUE              dvArg[1];
01028   } DUMMYUNIONNAME2;
01029 } D3DSTATE, *LPD3DSTATE;
01030 
01031 typedef struct _D3DMATRIXLOAD {
01032   D3DMATRIXHANDLE hDestMatrix;
01033   D3DMATRIXHANDLE hSrcMatrix;
01034 } D3DMATRIXLOAD, *LPD3DMATRIXLOAD;
01035 
01036 typedef struct _D3DMATRIXMULTIPLY {
01037   D3DMATRIXHANDLE hDestMatrix;
01038   D3DMATRIXHANDLE hSrcMatrix1;
01039   D3DMATRIXHANDLE hSrcMatrix2;
01040 } D3DMATRIXMULTIPLY, *LPD3DMATRIXMULTIPLY;
01041 
01042 typedef struct _D3DPROCESSVERTICES {
01043   DWORD dwFlags;
01044   WORD  wStart;
01045   WORD  wDest;
01046   DWORD dwCount;
01047   DWORD dwReserved;
01048 } D3DPROCESSVERTICES, *LPD3DPROCESSVERTICES;
01049 
01050 #define D3DPROCESSVERTICES_TRANSFORMLIGHT       0x00000000L
01051 #define D3DPROCESSVERTICES_TRANSFORM            0x00000001L
01052 #define D3DPROCESSVERTICES_COPY                 0x00000002L
01053 #define D3DPROCESSVERTICES_OPMASK               0x00000007L
01054 
01055 #define D3DPROCESSVERTICES_UPDATEEXTENTS        0x00000008L
01056 #define D3DPROCESSVERTICES_NOCOLOR              0x00000010L
01057 
01058 #if (DIRECT3D_VERSION < 0x0800)
01059 
01060 typedef enum _D3DTEXTURESTAGESTATETYPE
01061 {
01062     D3DTSS_COLOROP        =  1,
01063     D3DTSS_COLORARG1      =  2,
01064     D3DTSS_COLORARG2      =  3,
01065     D3DTSS_ALPHAOP        =  4,
01066     D3DTSS_ALPHAARG1      =  5,
01067     D3DTSS_ALPHAARG2      =  6,
01068     D3DTSS_BUMPENVMAT00   =  7,
01069     D3DTSS_BUMPENVMAT01   =  8,
01070     D3DTSS_BUMPENVMAT10   =  9,
01071     D3DTSS_BUMPENVMAT11   = 10,
01072     D3DTSS_TEXCOORDINDEX  = 11,
01073     D3DTSS_ADDRESS        = 12,
01074     D3DTSS_ADDRESSU       = 13,
01075     D3DTSS_ADDRESSV       = 14,
01076     D3DTSS_BORDERCOLOR    = 15,
01077     D3DTSS_MAGFILTER      = 16,
01078     D3DTSS_MINFILTER      = 17,
01079     D3DTSS_MIPFILTER      = 18,
01080     D3DTSS_MIPMAPLODBIAS  = 19,
01081     D3DTSS_MAXMIPLEVEL    = 20,
01082     D3DTSS_MAXANISOTROPY  = 21,
01083     D3DTSS_BUMPENVLSCALE  = 22,
01084     D3DTSS_BUMPENVLOFFSET = 23,
01085     D3DTSS_TEXTURETRANSFORMFLAGS = 24,
01086     D3DTSS_FORCE_DWORD   = 0x7fffffff
01087 } D3DTEXTURESTAGESTATETYPE;
01088 
01089 #define D3DTSS_TCI_PASSTHRU                             0x00000000
01090 #define D3DTSS_TCI_CAMERASPACENORMAL                    0x00010000
01091 #define D3DTSS_TCI_CAMERASPACEPOSITION                  0x00020000
01092 #define D3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR          0x00030000
01093 
01094 typedef enum _D3DTEXTUREOP
01095 {
01096     D3DTOP_DISABLE    = 1,
01097     D3DTOP_SELECTARG1 = 2,
01098     D3DTOP_SELECTARG2 = 3,
01099 
01100     D3DTOP_MODULATE   = 4,
01101     D3DTOP_MODULATE2X = 5,
01102     D3DTOP_MODULATE4X = 6,
01103 
01104     D3DTOP_ADD          =  7,
01105     D3DTOP_ADDSIGNED    =  8,
01106     D3DTOP_ADDSIGNED2X  =  9,
01107     D3DTOP_SUBTRACT     = 10,
01108     D3DTOP_ADDSMOOTH    = 11,
01109 
01110     D3DTOP_BLENDDIFFUSEALPHA    = 12,
01111     D3DTOP_BLENDTEXTUREALPHA    = 13,
01112     D3DTOP_BLENDFACTORALPHA     = 14,
01113     D3DTOP_BLENDTEXTUREALPHAPM  = 15,
01114     D3DTOP_BLENDCURRENTALPHA    = 16,
01115 
01116     D3DTOP_PREMODULATE            = 17,
01117     D3DTOP_MODULATEALPHA_ADDCOLOR = 18,
01118     D3DTOP_MODULATECOLOR_ADDALPHA = 19,
01119     D3DTOP_MODULATEINVALPHA_ADDCOLOR = 20,
01120     D3DTOP_MODULATEINVCOLOR_ADDALPHA = 21,
01121 
01122     D3DTOP_BUMPENVMAP           = 22,
01123     D3DTOP_BUMPENVMAPLUMINANCE  = 23,
01124     D3DTOP_DOTPRODUCT3          = 24,
01125 
01126     D3DTOP_FORCE_DWORD = 0x7fffffff
01127 } D3DTEXTUREOP;
01128 
01129 #define D3DTA_SELECTMASK        0x0000000f
01130 #define D3DTA_DIFFUSE           0x00000000
01131 #define D3DTA_CURRENT           0x00000001
01132 #define D3DTA_TEXTURE           0x00000002
01133 #define D3DTA_TFACTOR           0x00000003
01134 #define D3DTA_SPECULAR          0x00000004
01135 #define D3DTA_COMPLEMENT        0x00000010
01136 #define D3DTA_ALPHAREPLICATE    0x00000020
01137 
01138 #endif /* (DIRECT3D_VERSION < 0x0800) */
01139 
01140 typedef enum _D3DTEXTUREMAGFILTER
01141 {
01142     D3DTFG_POINT        = 1,
01143     D3DTFG_LINEAR       = 2,
01144     D3DTFG_FLATCUBIC    = 3,
01145     D3DTFG_GAUSSIANCUBIC = 4,
01146     D3DTFG_ANISOTROPIC  = 5,
01147     D3DTFG_FORCE_DWORD  = 0x7fffffff
01148 } D3DTEXTUREMAGFILTER;
01149 
01150 typedef enum _D3DTEXTUREMINFILTER
01151 {
01152     D3DTFN_POINT        = 1,
01153     D3DTFN_LINEAR       = 2,
01154     D3DTFN_ANISOTROPIC  = 3,
01155     D3DTFN_FORCE_DWORD  = 0x7fffffff
01156 } D3DTEXTUREMINFILTER;
01157 
01158 typedef enum _D3DTEXTUREMIPFILTER
01159 {
01160     D3DTFP_NONE         = 1,
01161     D3DTFP_POINT        = 2,
01162     D3DTFP_LINEAR       = 3,
01163     D3DTFP_FORCE_DWORD  = 0x7fffffff
01164 } D3DTEXTUREMIPFILTER;
01165 
01166 #define D3DTRIFLAG_START                        0x00000000L
01167 #define D3DTRIFLAG_STARTFLAT(len) (len)
01168 #define D3DTRIFLAG_ODD                          0x0000001eL
01169 #define D3DTRIFLAG_EVEN                         0x0000001fL
01170 
01171 #define D3DTRIFLAG_EDGEENABLE1                  0x00000100L
01172 #define D3DTRIFLAG_EDGEENABLE2                  0x00000200L
01173 #define D3DTRIFLAG_EDGEENABLE3                  0x00000400L
01174 #define D3DTRIFLAG_EDGEENABLETRIANGLE \
01175         (D3DTRIFLAG_EDGEENABLE1 | D3DTRIFLAG_EDGEENABLE2 | D3DTRIFLAG_EDGEENABLE3)
01176 
01177 typedef struct _D3DTRIANGLE {
01178   union {
01179     WORD v1;
01180     WORD wV1;
01181   } DUMMYUNIONNAME1;
01182   union {
01183     WORD v2;
01184     WORD wV2;
01185   } DUMMYUNIONNAME2;
01186   union {
01187     WORD v3;
01188     WORD wV3;
01189   } DUMMYUNIONNAME3;
01190   WORD     wFlags;
01191 } D3DTRIANGLE, *LPD3DTRIANGLE;
01192 
01193 typedef struct _D3DLINE {
01194   union {
01195     WORD v1;
01196     WORD wV1;
01197   } DUMMYUNIONNAME1;
01198   union {
01199     WORD v2;
01200     WORD wV2;
01201   } DUMMYUNIONNAME2;
01202 } D3DLINE, *LPD3DLINE;
01203 
01204 typedef struct _D3DSPAN {
01205   WORD wCount;
01206   WORD wFirst;
01207 } D3DSPAN, *LPD3DSPAN;
01208 
01209 typedef struct _D3DPOINT {
01210   WORD wCount;
01211   WORD wFirst;
01212 } D3DPOINT, *LPD3DPOINT;
01213 
01214 typedef struct _D3DBRANCH {
01215   DWORD dwMask;
01216   DWORD dwValue;
01217   BOOL  bNegate;
01218   DWORD dwOffset;
01219 } D3DBRANCH, *LPD3DBRANCH;
01220 
01221 typedef struct _D3DSTATUS {
01222   DWORD   dwFlags;
01223   DWORD   dwStatus;
01224   D3DRECT drExtent;
01225 } D3DSTATUS, *LPD3DSTATUS;
01226 
01227 #define D3DSETSTATUS_STATUS   0x00000001L
01228 #define D3DSETSTATUS_EXTENTS  0x00000002L
01229 #define D3DSETSTATUS_ALL      (D3DSETSTATUS_STATUS | D3DSETSTATUS_EXTENTS)
01230 
01231 typedef struct _D3DCLIPSTATUS {
01232   DWORD dwFlags;
01233   DWORD dwStatus;
01234   float minx, maxx;
01235   float miny, maxy;
01236   float minz, maxz;
01237 } D3DCLIPSTATUS, *LPD3DCLIPSTATUS;
01238 
01239 #define D3DCLIPSTATUS_STATUS        0x00000001L
01240 #define D3DCLIPSTATUS_EXTENTS2      0x00000002L
01241 #define D3DCLIPSTATUS_EXTENTS3      0x00000004L
01242 
01243 typedef struct {
01244   DWORD        dwSize;
01245   DWORD        dwTrianglesDrawn;
01246   DWORD        dwLinesDrawn;
01247   DWORD        dwPointsDrawn;
01248   DWORD        dwSpansDrawn;
01249   DWORD        dwVerticesProcessed;
01250 } D3DSTATS, *LPD3DSTATS;
01251 
01252 #define D3DEXECUTE_CLIPPED       0x00000001l
01253 #define D3DEXECUTE_UNCLIPPED     0x00000002l
01254 
01255 typedef struct _D3DEXECUTEDATA {
01256   DWORD     dwSize;
01257   DWORD     dwVertexOffset;
01258   DWORD     dwVertexCount;
01259   DWORD     dwInstructionOffset;
01260   DWORD     dwInstructionLength;
01261   DWORD     dwHVertexOffset;
01262   D3DSTATUS dsStatus;
01263 } D3DEXECUTEDATA, *LPD3DEXECUTEDATA;
01264 
01265 #define D3DPAL_FREE 0x00
01266 #define D3DPAL_READONLY 0x40
01267 #define D3DPAL_RESERVED 0x80
01268 
01269 typedef struct _D3DVERTEXBUFFERDESC {
01270   DWORD dwSize;
01271   DWORD dwCaps;
01272   DWORD dwFVF;
01273   DWORD dwNumVertices;
01274 } D3DVERTEXBUFFERDESC, *LPD3DVERTEXBUFFERDESC;
01275 
01276 #define D3DVBCAPS_SYSTEMMEMORY      0x00000800l
01277 #define D3DVBCAPS_WRITEONLY         0x00010000l
01278 #define D3DVBCAPS_OPTIMIZED         0x80000000l
01279 #define D3DVBCAPS_DONOTCLIP         0x00000001l
01280 
01281 #define D3DVOP_LIGHT       (1 << 10)
01282 #define D3DVOP_TRANSFORM   (1 << 0)
01283 #define D3DVOP_CLIP        (1 << 2)
01284 #define D3DVOP_EXTENTS     (1 << 3)
01285 
01286 #if (DIRECT3D_VERSION < 0x0800)
01287 
01288 #define D3DMAXNUMVERTICES    ((1<<16) - 1)
01289 
01290 #define D3DMAXNUMPRIMITIVES  ((1<<16) - 1)
01291 
01292 #define D3DPV_DONOTCOPYDATA (1 << 0)
01293 
01294 #define D3DFVF_RESERVED0        0x001
01295 #define D3DFVF_POSITION_MASK    0x00E
01296 #define D3DFVF_XYZ              0x002
01297 #define D3DFVF_XYZRHW           0x004
01298 #define D3DFVF_XYZB1            0x006
01299 #define D3DFVF_XYZB2            0x008
01300 #define D3DFVF_XYZB3            0x00a
01301 #define D3DFVF_XYZB4            0x00c
01302 #define D3DFVF_XYZB5            0x00e
01303 
01304 #define D3DFVF_NORMAL           0x010
01305 #define D3DFVF_RESERVED1        0x020
01306 #define D3DFVF_DIFFUSE          0x040
01307 #define D3DFVF_SPECULAR         0x080
01308 #define D3DFVF_TEXCOUNT_MASK    0xf00
01309 #define D3DFVF_TEXCOUNT_SHIFT   8
01310 #define D3DFVF_TEX0             0x000
01311 #define D3DFVF_TEX1             0x100
01312 #define D3DFVF_TEX2             0x200
01313 #define D3DFVF_TEX3             0x300
01314 #define D3DFVF_TEX4             0x400
01315 #define D3DFVF_TEX5             0x500
01316 #define D3DFVF_TEX6             0x600
01317 #define D3DFVF_TEX7             0x700
01318 #define D3DFVF_TEX8             0x800
01319 
01320 #define D3DFVF_RESERVED2        0xf000
01321 
01322 #endif /* (DIRECT3D_VERSION < 0x0800) */
01323 
01324 #define D3DFVF_VERTEX ( D3DFVF_XYZ | D3DFVF_NORMAL | D3DFVF_TEX1 )
01325 #define D3DFVF_LVERTEX ( D3DFVF_XYZ | D3DFVF_RESERVED1 | D3DFVF_DIFFUSE | \
01326                          D3DFVF_SPECULAR | D3DFVF_TEX1 )
01327 #define D3DFVF_TLVERTEX ( D3DFVF_XYZRHW | D3DFVF_DIFFUSE | D3DFVF_SPECULAR | \
01328                           D3DFVF_TEX1 )
01329 
01330 typedef struct _D3DDP_PTRSTRIDE {
01331   LPVOID lpvData;
01332   DWORD  dwStride;
01333 } D3DDP_PTRSTRIDE;
01334 
01335 #define D3DDP_MAXTEXCOORD 8
01336 
01337 typedef struct _D3DDRAWPRIMITIVESTRIDEDDATA  {
01338   D3DDP_PTRSTRIDE position;
01339   D3DDP_PTRSTRIDE normal;
01340   D3DDP_PTRSTRIDE diffuse;
01341   D3DDP_PTRSTRIDE specular;
01342   D3DDP_PTRSTRIDE textureCoords[D3DDP_MAXTEXCOORD];
01343 } D3DDRAWPRIMITIVESTRIDEDDATA ,*LPD3DDRAWPRIMITIVESTRIDEDDATA;
01344 
01345 #define D3DVIS_INSIDE_FRUSTUM       0
01346 #define D3DVIS_INTERSECT_FRUSTUM    1
01347 #define D3DVIS_OUTSIDE_FRUSTUM      2
01348 #define D3DVIS_INSIDE_LEFT          0
01349 #define D3DVIS_INTERSECT_LEFT       (1 << 2)
01350 #define D3DVIS_OUTSIDE_LEFT         (2 << 2)
01351 #define D3DVIS_INSIDE_RIGHT         0
01352 #define D3DVIS_INTERSECT_RIGHT      (1 << 4)
01353 #define D3DVIS_OUTSIDE_RIGHT        (2 << 4)
01354 #define D3DVIS_INSIDE_TOP           0
01355 #define D3DVIS_INTERSECT_TOP        (1 << 6)
01356 #define D3DVIS_OUTSIDE_TOP          (2 << 6)
01357 #define D3DVIS_INSIDE_BOTTOM        0
01358 #define D3DVIS_INTERSECT_BOTTOM     (1 << 8)
01359 #define D3DVIS_OUTSIDE_BOTTOM       (2 << 8)
01360 #define D3DVIS_INSIDE_NEAR          0
01361 #define D3DVIS_INTERSECT_NEAR       (1 << 10)
01362 #define D3DVIS_OUTSIDE_NEAR         (2 << 10)
01363 #define D3DVIS_INSIDE_FAR           0
01364 #define D3DVIS_INTERSECT_FAR        (1 << 12)
01365 #define D3DVIS_OUTSIDE_FAR          (2 << 12)
01366 
01367 #define D3DVIS_MASK_FRUSTUM         (3 << 0)
01368 #define D3DVIS_MASK_LEFT            (3 << 2)
01369 #define D3DVIS_MASK_RIGHT           (3 << 4)
01370 #define D3DVIS_MASK_TOP             (3 << 6)
01371 #define D3DVIS_MASK_BOTTOM          (3 << 8)
01372 #define D3DVIS_MASK_NEAR            (3 << 10)
01373 #define D3DVIS_MASK_FAR             (3 << 12)
01374 
01375 
01376 #if (DIRECT3D_VERSION < 0x0800)
01377 
01378 #define D3DDEVINFOID_TEXTUREMANAGER    1
01379 #define D3DDEVINFOID_D3DTEXTUREMANAGER 2
01380 #define D3DDEVINFOID_TEXTURING         3
01381 
01382 typedef enum _D3DSTATEBLOCKTYPE
01383 {
01384     D3DSBT_ALL           = 1,
01385     D3DSBT_PIXELSTATE    = 2,
01386     D3DSBT_VERTEXSTATE   = 3,
01387     D3DSBT_FORCE_DWORD   = 0xffffffff
01388 } D3DSTATEBLOCKTYPE;
01389 
01390 typedef enum _D3DVERTEXBLENDFLAGS
01391 {
01392     D3DVBLEND_DISABLE  = 0,
01393     D3DVBLEND_1WEIGHT  = 1,
01394     D3DVBLEND_2WEIGHTS = 2,
01395     D3DVBLEND_3WEIGHTS = 3,
01396 } D3DVERTEXBLENDFLAGS;
01397 
01398 typedef enum _D3DTEXTURETRANSFORMFLAGS {
01399     D3DTTFF_DISABLE         = 0,
01400     D3DTTFF_COUNT1          = 1,
01401     D3DTTFF_COUNT2          = 2,
01402     D3DTTFF_COUNT3          = 3,
01403     D3DTTFF_COUNT4          = 4,
01404     D3DTTFF_PROJECTED       = 256,
01405     D3DTTFF_FORCE_DWORD     = 0x7fffffff
01406 } D3DTEXTURETRANSFORMFLAGS;
01407 
01408 #define D3DFVF_TEXTUREFORMAT2 0
01409 #define D3DFVF_TEXTUREFORMAT1 3
01410 #define D3DFVF_TEXTUREFORMAT3 1
01411 #define D3DFVF_TEXTUREFORMAT4 2
01412 
01413 #define D3DFVF_TEXCOORDSIZE3(CoordIndex) (D3DFVF_TEXTUREFORMAT3 << (CoordIndex*2 + 16))
01414 #define D3DFVF_TEXCOORDSIZE2(CoordIndex) (D3DFVF_TEXTUREFORMAT2)
01415 #define D3DFVF_TEXCOORDSIZE4(CoordIndex) (D3DFVF_TEXTUREFORMAT4 << (CoordIndex*2 + 16))
01416 #define D3DFVF_TEXCOORDSIZE1(CoordIndex) (D3DFVF_TEXTUREFORMAT1 << (CoordIndex*2 + 16))
01417 
01418 #endif /* (DIRECT3D_VERSION < 0x0800) */
01419 
01420 #endif

Generated on Sun May 27 2012 04:31:19 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.