19fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/*==========================================================================;
29fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream *
39fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream *  Copyright (C) 1995-1996 Microsoft Corporation.  All Rights Reserved.
49fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream *
59fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream *  File:       d3dtypes.h
69fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream *  Content:    Direct3D types include file
79fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream *
89fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream ***************************************************************************/
99fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
109fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#ifndef _D3DTYPES_H_
119fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define _D3DTYPES_H_
129fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
139fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#ifndef WIN32
149fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#include "subwtype.h"
159fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#else
169fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#include <windows.h>
179fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#endif
189fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
199fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#include <ddraw.h>
209fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
219fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#pragma pack(4)
229fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
239fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#if defined(__cplusplus)
249fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamextern "C"
259fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream{
269fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#endif
279fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
289fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/* D3DVALUE is the fundamental Direct3D fractional data type */
299fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
309fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define D3DVALP(val, prec) ((float)(val))
319fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define D3DVAL(val) ((float)(val))
329fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamtypedef float D3DVALUE, *LPD3DVALUE;
339fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define D3DDivide(a, b)    (float)((double) (a) / (double) (b))
349fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define D3DMultiply(a, b)    ((a) * (b))
359fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
369fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamtypedef LONG D3DFIXED;
379fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
389fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#ifndef RGB_MAKE
399fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/*
409fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * Format of CI colors is
419fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream *  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
429fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream *  |    alpha      |         color index           |   fraction    |
439fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream *  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
449fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream */
459fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define CI_GETALPHA(ci)    ((ci) >> 24)
469fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define CI_GETINDEX(ci)    (((ci) >> 8) & 0xffff)
479fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define CI_GETFRACTION(ci) ((ci) & 0xff)
489fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define CI_ROUNDINDEX(ci)  CI_GETINDEX((ci) + 0x80)
499fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define CI_MASKALPHA(ci)   ((ci) & 0xffffff)
509fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define CI_MAKE(a, i, f)    (((a) << 24) | ((i) << 8) | (f))
519fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
529fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/*
539fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * Format of RGBA colors is
549fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream *  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
559fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream *  |    alpha      |      red      |     green     |     blue      |
569fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream *  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
579fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream */
589fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define RGBA_GETALPHA(rgb)      ((rgb) >> 24)
599fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define RGBA_GETRED(rgb)        (((rgb) >> 16) & 0xff)
609fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define RGBA_GETGREEN(rgb)      (((rgb) >> 8) & 0xff)
619fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define RGBA_GETBLUE(rgb)       ((rgb) & 0xff)
629fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define RGBA_MAKE(r, g, b, a)   ((D3DCOLOR) (((a) << 24) | ((r) << 16) | ((g) << 8) | (b)))
639fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
649fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/* D3DRGB and D3DRGBA may be used as initialisers for D3DCOLORs
659fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * The float values must be in the range 0..1
669fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream */
679fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define D3DRGB(r, g, b) \
689fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    (0xff000000L | ( ((long)((r) * 255)) << 16) | (((long)((g) * 255)) << 8) | (long)((b) * 255))
699fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define D3DRGBA(r, g, b, a) \
709fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    (   (((long)((a) * 255)) << 24) | (((long)((r) * 255)) << 16) \
719fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    |   (((long)((g) * 255)) << 8) | (long)((b) * 255) \
729fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    )
739fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
749fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/*
759fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * Format of RGB colors is
769fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream *  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
779fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream *  |    ignored    |      red      |     green     |     blue      |
789fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream *  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
799fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream */
809fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define RGB_GETRED(rgb)         (((rgb) >> 16) & 0xff)
819fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define RGB_GETGREEN(rgb)       (((rgb) >> 8) & 0xff)
829fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define RGB_GETBLUE(rgb)        ((rgb) & 0xff)
839fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define RGBA_SETALPHA(rgba, x) (((x) << 24) | ((rgba) & 0x00ffffff))
849fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define RGB_MAKE(r, g, b)       ((D3DCOLOR) (((r) << 16) | ((g) << 8) | (b)))
859fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define RGBA_TORGB(rgba)       ((D3DCOLOR) ((rgba) & 0xffffff))
869fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define RGB_TORGBA(rgb)        ((D3DCOLOR) ((rgb) | 0xff000000))
879fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
889fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#endif
899fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
909fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/*
919fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * Flags for Enumerate functions
929fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream */
939fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
949fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/*
959fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * Stop the enumeration
969fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream */
979fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define D3DENUMRET_CANCEL                        DDENUMRET_CANCEL
989fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
999fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/*
1009fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * Continue the enumeration
1019fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream */
1029fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define D3DENUMRET_OK                            DDENUMRET_OK
1039fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
1049fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamtypedef HRESULT (WINAPI* LPD3DVALIDATECALLBACK)(LPVOID lpUserArg, DWORD dwOffset);
1059fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamtypedef HRESULT (WINAPI* LPD3DENUMTEXTUREFORMATSCALLBACK)(LPDDSURFACEDESC lpDdsd, LPVOID lpContext);
1069fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
1079fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamtypedef DWORD D3DCOLOR, D3DCOLOR, *LPD3DCOLOR;
1089fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
1099fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamtypedef DWORD D3DMATERIALHANDLE, *LPD3DMATERIALHANDLE;
1109fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamtypedef DWORD D3DTEXTUREHANDLE, *LPD3DTEXTUREHANDLE;
1119fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamtypedef DWORD D3DMATRIXHANDLE, *LPD3DMATRIXHANDLE;
1129fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
1139fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamtypedef struct _D3DCOLORVALUE {
1149fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    union {
1159fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        D3DVALUE r;
1169fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        D3DVALUE dvR;
1179fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    };
1189fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    union {
1199fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        D3DVALUE g;
1209fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        D3DVALUE dvG;
1219fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    };
1229fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    union {
1239fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        D3DVALUE b;
1249fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        D3DVALUE dvB;
1259fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    };
1269fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    union {
1279fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        D3DVALUE a;
1289fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        D3DVALUE dvA;
1299fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    };
1309fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream} D3DCOLORVALUE;
1319fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
1329fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamtypedef struct _D3DRECT {
1339fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    union {
1349fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        LONG x1;
1359fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        LONG lX1;
1369fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    };
1379fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    union {
1389fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        LONG y1;
1399fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        LONG lY1;
1409fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    };
1419fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    union {
1429fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        LONG x2;
1439fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        LONG lX2;
1449fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    };
1459fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    union {
1469fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        LONG y2;
1479fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        LONG lY2;
1489fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    };
1499fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream} D3DRECT, *LPD3DRECT;
1509fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
1519fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamtypedef struct _D3DVECTOR {
1529fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    union {
1539fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        D3DVALUE x;
1549fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        D3DVALUE dvX;
1559fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    };
1569fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    union {
1579fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        D3DVALUE y;
1589fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        D3DVALUE dvY;
1599fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    };
1609fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    union {
1619fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        D3DVALUE z;
1629fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        D3DVALUE dvZ;
1639fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    };
1649fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream} D3DVECTOR, *LPD3DVECTOR;
1659fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
1669fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
1679fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/*
1689fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * Vertex data types supported in an ExecuteBuffer.
1699fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream */
1709fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
1719fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/*
1729fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * Homogeneous vertices
1739fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream */
1749fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
1759fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamtypedef struct _D3DHVERTEX {
1769fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    DWORD           dwFlags;        /* Homogeneous clipping flags */
1779fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    union {
1789fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        D3DVALUE    hx;
1799fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        D3DVALUE    dvHX;
1809fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    };
1819fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    union {
1829fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        D3DVALUE    hy;
1839fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        D3DVALUE    dvHY;
1849fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    };
1859fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    union {
1869fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        D3DVALUE    hz;
1879fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        D3DVALUE    dvHZ;
1889fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    };
1899fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream} D3DHVERTEX, *LPD3DHVERTEX;
1909fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
1919fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/*
1929fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * Transformed/lit vertices
1939fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream */
1949fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamtypedef struct _D3DTLVERTEX {
1959fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    union {
1969fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        D3DVALUE    sx;             /* Screen coordinates */
1979fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        D3DVALUE    dvSX;
1989fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    };
1999fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    union {
2009fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        D3DVALUE    sy;
2019fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        D3DVALUE    dvSY;
2029fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    };
2039fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    union {
2049fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        D3DVALUE    sz;
2059fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        D3DVALUE    dvSZ;
2069fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    };
2079fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    union {
2089fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        D3DVALUE    rhw;            /* Reciprocal of homogeneous w */
2099fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        D3DVALUE    dvRHW;
2109fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    };
2119fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    union {
2129fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        D3DCOLOR    color;          /* Vertex color */
2139fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        D3DCOLOR    dcColor;
2149fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    };
2159fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    union {
2169fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        D3DCOLOR    specular;       /* Specular component of vertex */
2179fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        D3DCOLOR    dcSpecular;
2189fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    };
2199fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    union {
2209fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        D3DVALUE    tu;             /* Texture coordinates */
2219fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        D3DVALUE    dvTU;
2229fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    };
2239fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    union {
2249fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        D3DVALUE    tv;
2259fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        D3DVALUE    dvTV;
2269fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    };
2279fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream} D3DTLVERTEX, *LPD3DTLVERTEX;
2289fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
2299fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/*
2309fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * Untransformed/lit vertices
2319fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream */
2329fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamtypedef struct _D3DLVERTEX {
2339fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    union {
2349fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        D3DVALUE     x;             /* Homogeneous coordinates */
2359fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        D3DVALUE     dvX;
2369fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    };
2379fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    union {
2389fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        D3DVALUE     y;
2399fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        D3DVALUE     dvY;
2409fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    };
2419fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    union {
2429fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        D3DVALUE     z;
2439fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        D3DVALUE     dvZ;
2449fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    };
2459fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    DWORD            dwReserved;
2469fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    union {
2479fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        D3DCOLOR     color;         /* Vertex color */
2489fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        D3DCOLOR     dcColor;
2499fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    };
2509fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    union {
2519fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        D3DCOLOR     specular;      /* Specular component of vertex */
2529fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        D3DCOLOR     dcSpecular;
2539fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    };
2549fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    union {
2559fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        D3DVALUE     tu;            /* Texture coordinates */
2569fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        D3DVALUE     dvTU;
2579fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    };
2589fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    union {
2599fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        D3DVALUE     tv;
2609fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        D3DVALUE     dvTV;
2619fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    };
2629fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream} D3DLVERTEX, *LPD3DLVERTEX;
2639fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
2649fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/*
2659fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * Untransformed/unlit vertices
2669fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream */
2679fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
2689fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamtypedef struct _D3DVERTEX {
2699fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    union {
2709fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        D3DVALUE     x;             /* Homogeneous coordinates */
2719fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        D3DVALUE     dvX;
2729fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    };
2739fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    union {
2749fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        D3DVALUE     y;
2759fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        D3DVALUE     dvY;
2769fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    };
2779fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    union {
2789fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        D3DVALUE     z;
2799fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        D3DVALUE     dvZ;
2809fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    };
2819fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    union {
2829fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        D3DVALUE     nx;            /* Normal */
2839fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        D3DVALUE     dvNX;
2849fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    };
2859fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    union {
2869fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        D3DVALUE     ny;
2879fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        D3DVALUE     dvNY;
2889fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    };
2899fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    union {
2909fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        D3DVALUE     nz;
2919fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        D3DVALUE     dvNZ;
2929fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    };
2939fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    union {
2949fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        D3DVALUE     tu;            /* Texture coordinates */
2959fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        D3DVALUE     dvTU;
2969fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    };
2979fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    union {
2989fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        D3DVALUE     tv;
2999fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        D3DVALUE     dvTV;
3009fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    };
3019fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream} D3DVERTEX, *LPD3DVERTEX;
3029fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
3039fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/*
3049fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * Matrix, viewport, and tranformation structures and definitions.
3059fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream */
3069fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
3079fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamtypedef struct _D3DMATRIX {
3089fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DVALUE        _11, _12, _13, _14;
3099fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DVALUE        _21, _22, _23, _24;
3109fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DVALUE        _31, _32, _33, _34;
3119fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DVALUE        _41, _42, _43, _44;
3129fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream} D3DMATRIX, *LPD3DMATRIX;
3139fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
3149fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamtypedef struct _D3DVIEWPORT {
3159fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    DWORD       dwSize;
3169fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    DWORD       dwX;
3179fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    DWORD       dwY;            /* Top left */
3189fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    DWORD       dwWidth;
3199fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    DWORD       dwHeight;       /* Dimensions */
3209fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DVALUE    dvScaleX;       /* Scale homogeneous to screen */
3219fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DVALUE    dvScaleY;       /* Scale homogeneous to screen */
3229fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DVALUE    dvMaxX;         /* Min/max homogeneous x coord */
3239fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DVALUE    dvMaxY;         /* Min/max homogeneous y coord */
3249fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DVALUE    dvMinZ;
3259fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DVALUE    dvMaxZ;         /* Min/max homogeneous z coord */
3269fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream} D3DVIEWPORT, *LPD3DVIEWPORT;
3279fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
3289fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/*
3299fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * Values for clip fields.
3309fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream */
3319fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define D3DCLIP_LEFT                            0x00000001L
3329fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define D3DCLIP_RIGHT                           0x00000002L
3339fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define D3DCLIP_TOP                             0x00000004L
3349fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define D3DCLIP_BOTTOM                          0x00000008L
3359fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define D3DCLIP_FRONT                           0x00000010L
3369fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define D3DCLIP_BACK                            0x00000020L
3379fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define D3DCLIP_GEN0                            0x00000040L
3389fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define D3DCLIP_GEN1                            0x00000080L
3399fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define D3DCLIP_GEN2                            0x00000100L
3409fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define D3DCLIP_GEN3                            0x00000200L
3419fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define D3DCLIP_GEN4                            0x00000400L
3429fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define D3DCLIP_GEN5                            0x00000800L
3439fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
3449fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/*
3459fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * Values for d3d status.
3469fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream */
3479fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define D3DSTATUS_CLIPUNIONLEFT                 D3DCLIP_LEFT
3489fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define D3DSTATUS_CLIPUNIONRIGHT                D3DCLIP_RIGHT
3499fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define D3DSTATUS_CLIPUNIONTOP                  D3DCLIP_TOP
3509fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define D3DSTATUS_CLIPUNIONBOTTOM               D3DCLIP_BOTTOM
3519fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define D3DSTATUS_CLIPUNIONFRONT                D3DCLIP_FRONT
3529fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define D3DSTATUS_CLIPUNIONBACK                 D3DCLIP_BACK
3539fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define D3DSTATUS_CLIPUNIONGEN0                 D3DCLIP_GEN0
3549fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define D3DSTATUS_CLIPUNIONGEN1                 D3DCLIP_GEN1
3559fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define D3DSTATUS_CLIPUNIONGEN2                 D3DCLIP_GEN2
3569fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define D3DSTATUS_CLIPUNIONGEN3                 D3DCLIP_GEN3
3579fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define D3DSTATUS_CLIPUNIONGEN4                 D3DCLIP_GEN4
3589fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define D3DSTATUS_CLIPUNIONGEN5                 D3DCLIP_GEN5
3599fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
3609fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define D3DSTATUS_CLIPINTERSECTIONLEFT          0x00001000L
3619fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define D3DSTATUS_CLIPINTERSECTIONRIGHT         0x00002000L
3629fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define D3DSTATUS_CLIPINTERSECTIONTOP           0x00004000L
3639fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define D3DSTATUS_CLIPINTERSECTIONBOTTOM        0x00008000L
3649fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define D3DSTATUS_CLIPINTERSECTIONFRONT         0x00010000L
3659fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define D3DSTATUS_CLIPINTERSECTIONBACK          0x00020000L
3669fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define D3DSTATUS_CLIPINTERSECTIONGEN0          0x00040000L
3679fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define D3DSTATUS_CLIPINTERSECTIONGEN1          0x00080000L
3689fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define D3DSTATUS_CLIPINTERSECTIONGEN2          0x00100000L
3699fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define D3DSTATUS_CLIPINTERSECTIONGEN3          0x00200000L
3709fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define D3DSTATUS_CLIPINTERSECTIONGEN4          0x00400000L
3719fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define D3DSTATUS_CLIPINTERSECTIONGEN5          0x00800000L
3729fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define D3DSTATUS_ZNOTVISIBLE                   0x01000000L
3739fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
3749fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define D3DSTATUS_CLIPUNIONALL  (               \
3759fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream            D3DSTATUS_CLIPUNIONLEFT     |       \
3769fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream            D3DSTATUS_CLIPUNIONRIGHT    |       \
3779fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream            D3DSTATUS_CLIPUNIONTOP      |       \
3789fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream            D3DSTATUS_CLIPUNIONBOTTOM   |       \
3799fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream            D3DSTATUS_CLIPUNIONFRONT    |       \
3809fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream            D3DSTATUS_CLIPUNIONBACK     |       \
3819fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream            D3DSTATUS_CLIPUNIONGEN0     |       \
3829fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream            D3DSTATUS_CLIPUNIONGEN1     |       \
3839fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream            D3DSTATUS_CLIPUNIONGEN2     |       \
3849fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream            D3DSTATUS_CLIPUNIONGEN3     |       \
3859fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream            D3DSTATUS_CLIPUNIONGEN4     |       \
3869fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream            D3DSTATUS_CLIPUNIONGEN5             \
3879fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream            )
3889fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
3899fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define D3DSTATUS_CLIPINTERSECTIONALL   (               \
3909fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream            D3DSTATUS_CLIPINTERSECTIONLEFT      |       \
3919fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream            D3DSTATUS_CLIPINTERSECTIONRIGHT     |       \
3929fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream            D3DSTATUS_CLIPINTERSECTIONTOP       |       \
3939fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream            D3DSTATUS_CLIPINTERSECTIONBOTTOM    |       \
3949fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream            D3DSTATUS_CLIPINTERSECTIONFRONT     |       \
3959fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream            D3DSTATUS_CLIPINTERSECTIONBACK      |       \
3969fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream            D3DSTATUS_CLIPINTERSECTIONGEN0      |       \
3979fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream            D3DSTATUS_CLIPINTERSECTIONGEN1      |       \
3989fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream            D3DSTATUS_CLIPINTERSECTIONGEN2      |       \
3999fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream            D3DSTATUS_CLIPINTERSECTIONGEN3      |       \
4009fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream            D3DSTATUS_CLIPINTERSECTIONGEN4      |       \
4019fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream            D3DSTATUS_CLIPINTERSECTIONGEN5              \
4029fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream            )
4039fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
4049fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define D3DSTATUS_DEFAULT       (                       \
4059fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream            D3DSTATUS_CLIPINTERSECTIONALL       |       \
4069fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream            D3DSTATUS_ZNOTVISIBLE)
4079fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
4089fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
4099fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/*
4109fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * Options for direct transform calls
4119fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream */
4129fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define D3DTRANSFORM_CLIPPED       0x00000001l
4139fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define D3DTRANSFORM_UNCLIPPED     0x00000002l
4149fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
4159fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamtypedef struct _D3DTRANSFORMDATA {
4169fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    DWORD           dwSize;
4179fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    LPVOID          lpIn;           /* Input vertices */
4189fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    DWORD           dwInSize;       /* Stride of input vertices */
4199fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    LPVOID          lpOut;          /* Output vertices */
4209fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    DWORD           dwOutSize;      /* Stride of output vertices */
4219fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    LPD3DHVERTEX    lpHOut;         /* Output homogeneous vertices */
4229fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    DWORD           dwClip;         /* Clipping hint */
4239fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    DWORD           dwClipIntersection;
4249fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    DWORD           dwClipUnion;    /* Union of all clip flags */
4259fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DRECT         drExtent;       /* Extent of transformed vertices */
4269fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream} D3DTRANSFORMDATA, *LPD3DTRANSFORMDATA;
4279fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
4289fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/*
4299fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * Structure defining position and direction properties for lighting.
4309fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream */
4319fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamtypedef struct _D3DLIGHTINGELEMENT {
4329fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DVECTOR dvPosition;           /* Lightable point in model space */
4339fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DVECTOR dvNormal;             /* Normalised unit vector */
4349fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream} D3DLIGHTINGELEMENT, *LPD3DLIGHTINGELEMENT;
4359fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
4369fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/*
4379fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * Structure defining material properties for lighting.
4389fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream */
4399fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamtypedef struct _D3DMATERIAL {
4409fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    DWORD               dwSize;
4419fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    union {
4429fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        D3DCOLORVALUE   diffuse;        /* Diffuse color RGBA */
4439fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        D3DCOLORVALUE   dcvDiffuse;
4449fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    };
4459fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    union {
4469fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        D3DCOLORVALUE   ambient;        /* Ambient color RGB */
4479fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        D3DCOLORVALUE   dcvAmbient;
4489fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    };
4499fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    union {
4509fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        D3DCOLORVALUE   specular;       /* Specular 'shininess' */
4519fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        D3DCOLORVALUE   dcvSpecular;
4529fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    };
4539fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    union {
4549fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        D3DCOLORVALUE   emissive;       /* Emissive color RGB */
4559fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        D3DCOLORVALUE   dcvEmissive;
4569fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    };
4579fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    union {
4589fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        D3DVALUE        power;          /* Sharpness if specular highlight */
4599fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        D3DVALUE        dvPower;
4609fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    };
4619fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DTEXTUREHANDLE    hTexture;       /* Handle to texture map */
4629fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    DWORD               dwRampSize;
4639fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream} D3DMATERIAL, *LPD3DMATERIAL;
4649fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
4659fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamtypedef enum _D3DLIGHTTYPE {
4669fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DLIGHT_POINT          = 1,
4679fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DLIGHT_SPOT           = 2,
4689fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DLIGHT_DIRECTIONAL    = 3,
4699fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DLIGHT_PARALLELPOINT  = 4,
4709fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DLIGHT_GLSPOT         = 5,
4719fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream} D3DLIGHTTYPE;
4729fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
4739fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/*
4749fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * Structure defining a light source and its properties.
4759fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream */
4769fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamtypedef struct _D3DLIGHT {
4779fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    DWORD           dwSize;
4789fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DLIGHTTYPE    dltType;            /* Type of light source */
4799fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DCOLORVALUE   dcvColor;           /* Color of light */
4809fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DVECTOR       dvPosition;         /* Position in world space */
4819fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DVECTOR       dvDirection;        /* Direction in world space */
4829fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DVALUE        dvRange;            /* Cutoff range */
4839fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DVALUE        dvFalloff;          /* Falloff */
4849fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DVALUE        dvAttenuation0;     /* Constant attenuation */
4859fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DVALUE        dvAttenuation1;     /* Linear attenuation */
4869fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DVALUE        dvAttenuation2;     /* Quadratic attenuation */
4879fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DVALUE        dvTheta;            /* Inner angle of spotlight cone */
4889fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DVALUE        dvPhi;              /* Outer angle of spotlight cone */
4899fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream} D3DLIGHT, *LPD3DLIGHT;
4909fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
4919fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamtypedef struct _D3DLIGHTDATA {
4929fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    DWORD                dwSize;
4939fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    LPD3DLIGHTINGELEMENT lpIn;          /* Input positions and normals */
4949fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    DWORD                dwInSize;      /* Stride of input elements */
4959fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    LPD3DTLVERTEX        lpOut;         /* Output colors */
4969fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    DWORD                dwOutSize;     /* Stride of output colors */
4979fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream} D3DLIGHTDATA, *LPD3DLIGHTDATA;
4989fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
4999fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamtypedef enum _D3DCOLORMODEL {
5009fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DCOLOR_MONO           = 1,
5019fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DCOLOR_RGB            = 2,
5029fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream} D3DCOLORMODEL;
5039fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
5049fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/*
5059fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * Options for clearing
5069fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream */
5079fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define D3DCLEAR_TARGET            0x00000001l /* Clear target surface */
5089fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define D3DCLEAR_ZBUFFER           0x00000002l /* Clear target z buffer */
5099fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
5109fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/*
5119fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * Execute buffers are allocated via Direct3D.  These buffers may then
5129fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * be filled by the application with instructions to execute along with
5139fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * vertex data.
5149fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream */
5159fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
5169fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/*
5179fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * Supported op codes for execute instructions.
5189fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream */
5199fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamtypedef enum _D3DOPCODE {
5209fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DOP_POINT                 = 1,
5219fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DOP_LINE                  = 2,
5229fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DOP_TRIANGLE              = 3,
5239fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DOP_MATRIXLOAD            = 4,
5249fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DOP_MATRIXMULTIPLY        = 5,
5259fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DOP_STATETRANSFORM        = 6,
5269fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DOP_STATELIGHT            = 7,
5279fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DOP_STATERENDER           = 8,
5289fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DOP_PROCESSVERTICES       = 9,
5299fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DOP_TEXTURELOAD           = 10,
5309fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DOP_EXIT                  = 11,
5319fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DOP_BRANCHFORWARD         = 12,
5329fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DOP_SPAN                  = 13,
5339fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DOP_SETSTATUS             = 14,
5349fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream} D3DOPCODE;
5359fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
5369fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamtypedef struct _D3DINSTRUCTION {
5379fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    BYTE bOpcode;   /* Instruction opcode */
5389fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    BYTE bSize;     /* Size of each instruction data unit */
5399fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    WORD wCount;    /* Count of instruction data units to follow */
5409fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream} D3DINSTRUCTION, *LPD3DINSTRUCTION;
5419fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
5429fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/*
5439fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * Structure for texture loads
5449fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream */
5459fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamtypedef struct _D3DTEXTURELOAD {
5469fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DTEXTUREHANDLE hDestTexture;
5479fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DTEXTUREHANDLE hSrcTexture;
5489fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream} D3DTEXTURELOAD, *LPD3DTEXTURELOAD;
5499fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
5509fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/*
5519fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * Structure for picking
5529fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream */
5539fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamtypedef struct _D3DPICKRECORD {
5549fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    BYTE     bOpcode;
5559fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    BYTE     bPad;
5569fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    DWORD    dwOffset;
5579fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DVALUE dvZ;
5589fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream} D3DPICKRECORD, *LPD3DPICKRECORD;
5599fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
5609fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/*
5619fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * The following defines the rendering states which can be set in the
5629fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * execute buffer.
5639fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream */
5649fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
5659fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamtypedef enum _D3DSHADEMODE {
5669fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DSHADE_FLAT              = 1,
5679fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DSHADE_GOURAUD           = 2,
5689fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DSHADE_PHONG             = 3,
5699fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream} D3DSHADEMODE;
5709fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
5719fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamtypedef enum _D3DFILLMODE {
5729fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DFILL_POINT              = 1,
5739fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DFILL_WIREFRAME          = 2,
5749fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DFILL_SOLID              = 3,
5759fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream} D3DFILLMODE;
5769fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
5779fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamtypedef struct _D3DLINEPATTERN {
5789fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    WORD        wRepeatFactor;
5799fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    WORD        wLinePattern;
5809fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream} D3DLINEPATTERN;
5819fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
5829fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamtypedef enum _D3DTEXTUREFILTER {
5839fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DFILTER_NEAREST          = 1,
5849fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DFILTER_LINEAR           = 2,
5859fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DFILTER_MIPNEAREST       = 3,
5869fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DFILTER_MIPLINEAR        = 4,
5879fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DFILTER_LINEARMIPNEAREST = 5,
5889fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DFILTER_LINEARMIPLINEAR  = 6,
5899fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream} D3DTEXTUREFILTER;
5909fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
5919fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamtypedef enum _D3DBLEND {
5929fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DBLEND_ZERO              = 1,
5939fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DBLEND_ONE               = 2,
5949fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DBLEND_SRCCOLOR          = 3,
5959fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DBLEND_INVSRCCOLOR       = 4,
5969fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DBLEND_SRCALPHA          = 5,
5979fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DBLEND_INVSRCALPHA       = 6,
5989fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DBLEND_DESTALPHA         = 7,
5999fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DBLEND_INVDESTALPHA      = 8,
6009fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DBLEND_DESTCOLOR         = 9,
6019fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DBLEND_INVDESTCOLOR      = 10,
6029fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DBLEND_SRCALPHASAT       = 11,
6039fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DBLEND_BOTHSRCALPHA      = 12,
6049fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DBLEND_BOTHINVSRCALPHA   = 13,
6059fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream} D3DBLEND;
6069fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
6079fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamtypedef enum _D3DTEXTUREBLEND {
6089fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DTBLEND_DECAL            = 1,
6099fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DTBLEND_MODULATE         = 2,
6109fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DTBLEND_DECALALPHA       = 3,
6119fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DTBLEND_MODULATEALPHA    = 4,
6129fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DTBLEND_DECALMASK        = 5,
6139fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DTBLEND_MODULATEMASK     = 6,
6149fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DTBLEND_COPY             = 7,
6159fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream} D3DTEXTUREBLEND;
6169fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
6179fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamtypedef enum _D3DTEXTUREADDRESS {
6189fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DTADDRESS_WRAP           = 1,
6199fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DTADDRESS_MIRROR         = 2,
6209fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DTADDRESS_CLAMP          = 3,
6219fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream} D3DTEXTUREADDRESS;
6229fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
6239fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamtypedef enum _D3DCULL {
6249fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DCULL_NONE               = 1,
6259fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DCULL_CW                 = 2,
6269fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DCULL_CCW                = 3,
6279fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream} D3DCULL;
6289fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
6299fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamtypedef enum _D3DCMPFUNC {
6309fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DCMP_NEVER               = 1,
6319fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DCMP_LESS                = 2,
6329fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DCMP_EQUAL               = 3,
6339fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DCMP_LESSEQUAL           = 4,
6349fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DCMP_GREATER             = 5,
6359fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DCMP_NOTEQUAL            = 6,
6369fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DCMP_GREATEREQUAL        = 7,
6379fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DCMP_ALWAYS              = 8,
6389fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream} D3DCMPFUNC;
6399fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
6409fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamtypedef enum _D3DFOGMODE {
6419fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DFOG_NONE                = 0,
6429fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DFOG_EXP                 = 1,
6439fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DFOG_EXP2                = 2,
6449fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DFOG_LINEAR              = 3
6459fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream} D3DFOGMODE;
6469fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
6479fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/*
6489fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * Amount to add to a state to generate the override for that state.
6499fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream */
6509fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define D3DSTATE_OVERRIDE_BIAS          256
6519fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
6529fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/*
6539fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * A state which sets the override flag for the specified state type.
6549fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream */
6559fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define D3DSTATE_OVERRIDE(type) ((DWORD) (type) + D3DSTATE_OVERRIDE_BIAS)
6569fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
6579fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamtypedef enum _D3DTRANSFORMSTATETYPE {
6589fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DTRANSFORMSTATE_WORLD           = 1,
6599fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DTRANSFORMSTATE_VIEW            = 2,
6609fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DTRANSFORMSTATE_PROJECTION      = 3,
6619fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream} D3DTRANSFORMSTATETYPE;
6629fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
6639fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamtypedef enum _D3DLIGHTSTATETYPE {
6649fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DLIGHTSTATE_MATERIAL            = 1,
6659fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DLIGHTSTATE_AMBIENT             = 2,
6669fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DLIGHTSTATE_COLORMODEL          = 3,
6679fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DLIGHTSTATE_FOGMODE             = 4,
6689fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DLIGHTSTATE_FOGSTART            = 5,
6699fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DLIGHTSTATE_FOGEND              = 6,
6709fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DLIGHTSTATE_FOGDENSITY          = 7,
6719fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream} D3DLIGHTSTATETYPE;
6729fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
6739fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamtypedef enum _D3DRENDERSTATETYPE {
6749fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DRENDERSTATE_TEXTUREHANDLE      = 1,    /* Texture handle */
6759fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DRENDERSTATE_ANTIALIAS          = 2,    /* Antialiasing prim edges */
6769fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DRENDERSTATE_TEXTUREADDRESS     = 3,    /* D3DTEXTUREADDRESS      */
6779fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DRENDERSTATE_TEXTUREPERSPECTIVE = 4,    /* TRUE for perspective correction */
6789fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DRENDERSTATE_WRAPU              = 5,    /* TRUE for wrapping in u */
6799fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DRENDERSTATE_WRAPV              = 6,    /* TRUE for wrapping in v */
6809fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DRENDERSTATE_ZENABLE            = 7,    /* TRUE to enable z test */
6819fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DRENDERSTATE_FILLMODE           = 8,    /* D3DFILL_MODE            */
6829fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DRENDERSTATE_SHADEMODE          = 9,    /* D3DSHADEMODE */
6839fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DRENDERSTATE_LINEPATTERN        = 10,   /* D3DLINEPATTERN */
6849fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DRENDERSTATE_MONOENABLE         = 11,   /* TRUE to enable mono rasterization */
6859fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DRENDERSTATE_ROP2               = 12,   /* ROP2 */
6869fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DRENDERSTATE_PLANEMASK          = 13,   /* DWORD physical plane mask */
6879fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DRENDERSTATE_ZWRITEENABLE       = 14,   /* TRUE to enable z writes */
6889fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DRENDERSTATE_ALPHATESTENABLE    = 15,   /* TRUE to enable alpha tests */
6899fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DRENDERSTATE_LASTPIXEL          = 16,   /* TRUE for last-pixel on lines */
6909fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DRENDERSTATE_TEXTUREMAG         = 17,   /* D3DTEXTUREFILTER */
6919fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DRENDERSTATE_TEXTUREMIN         = 18,   /* D3DTEXTUREFILTER */
6929fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DRENDERSTATE_SRCBLEND           = 19,   /* D3DBLEND */
6939fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DRENDERSTATE_DESTBLEND          = 20,   /* D3DBLEND */
6949fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DRENDERSTATE_TEXTUREMAPBLEND    = 21,   /* D3DTEXTUREBLEND */
6959fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DRENDERSTATE_CULLMODE           = 22,   /* D3DCULL */
6969fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DRENDERSTATE_ZFUNC              = 23,   /* D3DCMPFUNC */
6979fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DRENDERSTATE_ALPHAREF           = 24,   /* D3DFIXED */
6989fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DRENDERSTATE_ALPHAFUNC          = 25,   /* D3DCMPFUNC */
6999fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DRENDERSTATE_DITHERENABLE       = 26,   /* TRUE to enable dithering */
7009fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DRENDERSTATE_BLENDENABLE        = 27,   /* TRUE to enable alpha blending */
7019fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DRENDERSTATE_FOGENABLE          = 28,   /* TRUE to enable fog */
7029fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DRENDERSTATE_SPECULARENABLE     = 29,   /* TRUE to enable specular */
7039fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DRENDERSTATE_ZVISIBLE           = 30,   /* TRUE to enable z checking */
7049fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DRENDERSTATE_SUBPIXEL           = 31,   /* TRUE to enable subpixel correction */
7059fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DRENDERSTATE_SUBPIXELX          = 32,   /* TRUE to enable correction in X only */
7069fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DRENDERSTATE_STIPPLEDALPHA      = 33,   /* TRUE to enable stippled alpha */
7079fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DRENDERSTATE_FOGCOLOR           = 34,   /* D3DCOLOR */
7089fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DRENDERSTATE_FOGTABLEMODE       = 35,   /* D3DFOGMODE */
7099fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DRENDERSTATE_FOGTABLESTART      = 36,   /* Fog table start        */
7109fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DRENDERSTATE_FOGTABLEEND        = 37,   /* Fog table end          */
7119fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DRENDERSTATE_FOGTABLEDENSITY    = 38,   /* Fog table density      */
7129fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DRENDERSTATE_STIPPLEENABLE      = 39,   /* TRUE to enable stippling */
7139fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DRENDERSTATE_STIPPLEPATTERN00   = 64,   /* Stipple pattern 01...  */
7149fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DRENDERSTATE_STIPPLEPATTERN01   = 65,
7159fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DRENDERSTATE_STIPPLEPATTERN02   = 66,
7169fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DRENDERSTATE_STIPPLEPATTERN03   = 67,
7179fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DRENDERSTATE_STIPPLEPATTERN04   = 68,
7189fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DRENDERSTATE_STIPPLEPATTERN05   = 69,
7199fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DRENDERSTATE_STIPPLEPATTERN06   = 70,
7209fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DRENDERSTATE_STIPPLEPATTERN07   = 71,
7219fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DRENDERSTATE_STIPPLEPATTERN08   = 72,
7229fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DRENDERSTATE_STIPPLEPATTERN09   = 73,
7239fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DRENDERSTATE_STIPPLEPATTERN10   = 74,
7249fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DRENDERSTATE_STIPPLEPATTERN11   = 75,
7259fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DRENDERSTATE_STIPPLEPATTERN12   = 76,
7269fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DRENDERSTATE_STIPPLEPATTERN13   = 77,
7279fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DRENDERSTATE_STIPPLEPATTERN14   = 78,
7289fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DRENDERSTATE_STIPPLEPATTERN15   = 79,
7299fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DRENDERSTATE_STIPPLEPATTERN16   = 80,
7309fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DRENDERSTATE_STIPPLEPATTERN17   = 81,
7319fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DRENDERSTATE_STIPPLEPATTERN18   = 82,
7329fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DRENDERSTATE_STIPPLEPATTERN19   = 83,
7339fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DRENDERSTATE_STIPPLEPATTERN20   = 84,
7349fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DRENDERSTATE_STIPPLEPATTERN21   = 85,
7359fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DRENDERSTATE_STIPPLEPATTERN22   = 86,
7369fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DRENDERSTATE_STIPPLEPATTERN23   = 87,
7379fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DRENDERSTATE_STIPPLEPATTERN24   = 88,
7389fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DRENDERSTATE_STIPPLEPATTERN25   = 89,
7399fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DRENDERSTATE_STIPPLEPATTERN26   = 90,
7409fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DRENDERSTATE_STIPPLEPATTERN27   = 91,
7419fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DRENDERSTATE_STIPPLEPATTERN28   = 92,
7429fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DRENDERSTATE_STIPPLEPATTERN29   = 93,
7439fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DRENDERSTATE_STIPPLEPATTERN30   = 94,
7449fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DRENDERSTATE_STIPPLEPATTERN31   = 95,
7459fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream} D3DRENDERSTATETYPE;
7469fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
7479fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define D3DRENDERSTATE_STIPPLEPATTERN(y) (D3DRENDERSTATE_STIPPLEPATTERN00 + (y))
7489fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
7499fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamtypedef struct _D3DSTATE {
7509fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    union {
7519fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        D3DTRANSFORMSTATETYPE   dtstTransformStateType;
7529fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        D3DLIGHTSTATETYPE       dlstLightStateType;
7539fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        D3DRENDERSTATETYPE      drstRenderStateType;
7549fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    };
7559fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    union {
7569fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        DWORD                   dwArg[1];
7579fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        D3DVALUE                dvArg[1];
7589fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    };
7599fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream} D3DSTATE, *LPD3DSTATE;
7609fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
7619fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/*
7629fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * Operation used to load matrices
7639fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * hDstMat = hSrcMat
7649fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream */
7659fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamtypedef struct _D3DMATRIXLOAD {
7669fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DMATRIXHANDLE hDestMatrix;   /* Destination matrix */
7679fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DMATRIXHANDLE hSrcMatrix;   /* Source matrix */
7689fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream} D3DMATRIXLOAD, *LPD3DMATRIXLOAD;
7699fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
7709fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/*
7719fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * Operation used to multiply matrices
7729fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * hDstMat = hSrcMat1 * hSrcMat2
7739fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream */
7749fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamtypedef struct _D3DMATRIXMULTIPLY {
7759fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DMATRIXHANDLE hDestMatrix;   /* Destination matrix */
7769fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DMATRIXHANDLE hSrcMatrix1;  /* First source matrix */
7779fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DMATRIXHANDLE hSrcMatrix2;  /* Second source matrix */
7789fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream} D3DMATRIXMULTIPLY, *LPD3DMATRIXMULTIPLY;
7799fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
7809fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/*
7819fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * Operation used to transform and light vertices.
7829fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream */
7839fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamtypedef struct _D3DPROCESSVERTICES {
7849fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    DWORD        dwFlags;    /* Do we transform or light or just copy? */
7859fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    WORD         wStart;     /* Index to first vertex in source */
7869fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    WORD         wDest;      /* Index to first vertex in local buffer */
7879fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    DWORD        dwCount;    /* Number of vertices to be processed */
7889fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    DWORD        dwReserved; /* Must be zero */
7899fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream} D3DPROCESSVERTICES, *LPD3DPROCESSVERTICES;
7909fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
7919fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define D3DPROCESSVERTICES_TRANSFORMLIGHT       0x00000000L
7929fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define D3DPROCESSVERTICES_TRANSFORM            0x00000001L
7939fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define D3DPROCESSVERTICES_COPY                 0x00000002L
7949fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define D3DPROCESSVERTICES_OPMASK               0x00000007L
7959fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
7969fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define D3DPROCESSVERTICES_UPDATEEXTENTS        0x00000008L
7979fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define D3DPROCESSVERTICES_NOCOLOR              0x00000010L
7989fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
7999fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
8009fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/*
8019fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * Triangle flags
8029fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream */
8039fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
8049fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/*
8059fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * Tri strip and fan flags.
8069fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * START loads all three vertices
8079fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * EVEN and ODD load just v3 with even or odd culling
8089fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * START_FLAT contains a count from 0 to 29 that allows the
8099fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * whole strip or fan to be culled in one hit.
8109fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * e.g. for a quad len = 1
8119fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream */
8129fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define D3DTRIFLAG_START                        0x00000000L
8139fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define D3DTRIFLAG_STARTFLAT(len) (len)         /* 0 < len < 30 */
8149fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define D3DTRIFLAG_ODD                          0x0000001eL
8159fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define D3DTRIFLAG_EVEN                         0x0000001fL
8169fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
8179fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/*
8189fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * Triangle edge flags
8199fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * enable edges for wireframe or antialiasing
8209fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream */
8219fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define D3DTRIFLAG_EDGEENABLE1                  0x00000100L /* v0-v1 edge */
8229fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define D3DTRIFLAG_EDGEENABLE2                  0x00000200L /* v1-v2 edge */
8239fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define D3DTRIFLAG_EDGEENABLE3                  0x00000400L /* v2-v0 edge */
8249fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define D3DTRIFLAG_EDGEENABLETRIANGLE \
8259fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        (D3DTRIFLAG_EDGEENABLE1 | D3DTRIFLAG_EDGEENABLE2 | D3DTRIFLAG_EDGEENABLE3)
8269fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
8279fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/*
8289fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * Primitive structures and related defines.  Vertex offsets are to types
8299fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * D3DVERTEX, D3DLVERTEX, or D3DTLVERTEX.
8309fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream */
8319fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
8329fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/*
8339fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * Triangle list primitive structure
8349fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream */
8359fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamtypedef struct _D3DTRIANGLE {
8369fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    union {
8379fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        WORD    v1;            /* Vertex indices */
8389fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        WORD    wV1;
8399fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    };
8409fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    union {
8419fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        WORD    v2;
8429fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        WORD    wV2;
8439fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    };
8449fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    union {
8459fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        WORD    v3;
8469fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        WORD    wV3;
8479fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    };
8489fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    WORD        wFlags;       /* Edge (and other) flags */
8499fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream} D3DTRIANGLE, *LPD3DTRIANGLE;
8509fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
8519fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/*
8529fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * Line strip structure.
8539fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * The instruction count - 1 defines the number of line segments.
8549fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream */
8559fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamtypedef struct _D3DLINE {
8569fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    union {
8579fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        WORD    v1;            /* Vertex indices */
8589fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        WORD    wV1;
8599fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    };
8609fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    union {
8619fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        WORD    v2;
8629fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream        WORD    wV2;
8639fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    };
8649fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream} D3DLINE, *LPD3DLINE;
8659fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
8669fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/*
8679fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * Span structure
8689fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * Spans join a list of points with the same y value.
8699fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * If the y value changes, a new span is started.
8709fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream */
8719fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamtypedef struct _D3DSPAN {
8729fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    WORD        wCount; /* Number of spans */
8739fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    WORD        wFirst; /* Index to first vertex */
8749fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream} D3DSPAN, *LPD3DSPAN;
8759fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
8769fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/*
8779fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * Point structure
8789fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream */
8799fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamtypedef struct _D3DPOINT {
8809fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    WORD        wCount;         /* number of points         */
8819fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    WORD        wFirst;         /* index to first vertex    */
8829fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream} D3DPOINT, *LPD3DPOINT;
8839fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
8849fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
8859fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/*
8869fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * Forward branch structure.
8879fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * Mask is logically anded with the driver status mask
8889fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * if the result equals 'value', the branch is taken.
8899fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream */
8909fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamtypedef struct _D3DBRANCH {
8919fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    DWORD       dwMask;         /* Bitmask against D3D status */
8929fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    DWORD       dwValue;
8939fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    BOOL        bNegate;        /* TRUE to negate comparison */
8949fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    DWORD       dwOffset;       /* How far to branch forward (0 for exit)*/
8959fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream} D3DBRANCH, *LPD3DBRANCH;
8969fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
8979fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/*
8989fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * Status used for set status instruction.
8999fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * The D3D status is initialised on device creation
9009fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * and is modified by all execute calls.
9019fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream */
9029fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamtypedef struct _D3DSTATUS {
9039fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    DWORD       dwFlags;        /* Do we set extents or status */
9049fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    DWORD       dwStatus;       /* D3D status */
9059fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DRECT     drExtent;
9069fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream} D3DSTATUS, *LPD3DSTATUS;
9079fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
9089fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define D3DSETSTATUS_STATUS             0x00000001L
9099fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define D3DSETSTATUS_EXTENTS            0x00000002L
9109fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define D3DSETSTATUS_ALL        (D3DSETSTATUS_STATUS | D3DSETSTATUS_EXTENTS)
9119fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
9129fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/*
9139fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * Statistics structure
9149fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream */
9159fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamtypedef struct _D3DSTATS {
9169fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    DWORD        dwSize;
9179fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    DWORD        dwTrianglesDrawn;
9189fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    DWORD        dwLinesDrawn;
9199fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    DWORD        dwPointsDrawn;
9209fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    DWORD        dwSpansDrawn;
9219fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    DWORD        dwVerticesProcessed;
9229fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream} D3DSTATS, *LPD3DSTATS;
9239fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
9249fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/*
9259fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * Execute options.
9269fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * When calling using D3DEXECUTE_UNCLIPPED all the primitives
9279fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * inside the buffer must be contained within the viewport.
9289fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream */
9299fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define D3DEXECUTE_CLIPPED       0x00000001l
9309fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define D3DEXECUTE_UNCLIPPED     0x00000002l
9319fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
9329fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamtypedef struct _D3DEXECUTEDATA {
9339fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    DWORD       dwSize;
9349fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    DWORD       dwVertexOffset;
9359fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    DWORD       dwVertexCount;
9369fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    DWORD       dwInstructionOffset;
9379fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    DWORD       dwInstructionLength;
9389fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    DWORD       dwHVertexOffset;
9399fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream    D3DSTATUS   dsStatus;       /* Status after execute */
9409fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream} D3DEXECUTEDATA, *LPD3DEXECUTEDATA;
9419fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
9429fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/*
9439fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * Palette flags.
9449fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * This are or'ed with the peFlags in the PALETTEENTRYs passed to DirectDraw.
9459fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream */
9469fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define D3DPAL_FREE     0x00    /* Renderer may use this entry freely */
9479fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define D3DPAL_READONLY 0x40    /* Renderer may not set this entry */
9489fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define D3DPAL_RESERVED 0x80    /* Renderer may not use this entry */
9499fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
9509fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#if defined(__cplusplus)
9519fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream};
9529fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#endif
9539fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
9549fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#pragma pack()
9559fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
9569fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#endif /* _D3DTYPES_H_ */
957