dlangui/3rdparty/win32/directx/d3dx9.d

1992 lines
79 KiB
D

// D3DX Types and Constants ---------------------------------------------------------------------------------------
module win32.directx.d3dx9;
version(Windows):
public import win32.directx.d3d9;
public import win32.windows;
alias D3DMATRIX D3DXMATRIX;
const uint MAXD3DDECLLENGTH = 64;
const uint MAX_FVF_DECL_SIZE = MAXD3DDECLLENGTH + 1;
align(4) struct D3DXATTRIBUTERANGE
{
DWORD AttribId;
DWORD FaceStart;
DWORD FaceCount;
DWORD VertexStart;
DWORD VertexCount;
}
align(4) struct D3DXVECTOR2
{
float x = 0, y = 0;
static D3DXVECTOR2 opCall(float x, float y)
{
D3DXVECTOR2 v;
v.x = x;
v.y = y;
return v;
}
}
alias D3DVECTOR D3DXVECTOR3;
align(4) struct D3DXVECTOR4
{
float x = 0, y = 0, z = 0, w = 0;
static D3DXVECTOR4 opCall(float x, float y, float z, float w)
{
D3DXVECTOR4 v;
v.x = x;
v.y = y;
v.z = z;
v.w = w;
return v;
}
}
align(4) struct D3DXQUATERNION
{
float x = 0, y = 0, z = 0, w = 0;
}
align(4) struct D3DXFRAME
{
LPSTR Name;
D3DXMATRIX TransformationMatrix;
D3DXMESHCONTAINER* pMeshContainer;
D3DXFRAME *pFrameSibling;
D3DXFRAME *pFrameFirstChild;
}
align(4) struct D3DXMESHCONTAINER
{
LPSTR Name;
D3DXMESHDATA MeshData;
D3DXMATERIAL* pMaterials;
D3DXEFFECTINSTANCE* pEffects;
DWORD NumMaterials;
DWORD *pAdjacency;
ID3DXSkinInfo pSkinInfo;
D3DXMESHCONTAINER* pNextMeshContainer;
}
align(4) struct D3DXMESHDATA
{
D3DXMESHDATATYPE Type;
// current mesh data interface
union
{
ID3DXMesh pMesh;
ID3DXPMesh pPMesh;
ID3DXPatchMesh pPatchMesh;
}
}
alias uint D3DXMESHDATATYPE;
enum : uint
{
D3DXMESHTYPE_MESH = 0x001, // Normal ID3DXMesh data
D3DXMESHTYPE_PMESH = 0x002, // Progressive Mesh - ID3DXPMesh
D3DXMESHTYPE_PATCHMESH = 0x003 // Patch Mesh - ID3DXPatchMesh
}
align(4) struct D3DXMATERIAL
{
D3DMATERIAL9 MatD3D;
LPSTR pTextureFilename;
}
alias uint D3DXEFFECTDEFAULTTYPE;
enum : uint
{
D3DXEDT_STRING = 0x1, // pValue points to a null terminated ASCII string
D3DXEDT_FLOATS = 0x2, // pValue points to an array of floats - number of floats is NumBytes / sizeof(float)
D3DXEDT_DWORD = 0x3 // pValue points to a DWORD
}
align(4) struct D3DXEFFECTDEFAULT
{
LPSTR pParamName;
D3DXEFFECTDEFAULTTYPE Type; // type of the data pointed to by pValue
DWORD NumBytes; // size in bytes of the data pointed to by pValue
LPVOID pValue; // data for the default of the effect
}
align(4) struct D3DXEFFECTINSTANCE
{
LPSTR pEffectFilename;
DWORD NumDefaults;
D3DXEFFECTDEFAULT* pDefaults;
}
alias uint D3DXPATCHMESHTYPE;
enum : uint
{
D3DXPATCHMESH_RECT = 0x001,
D3DXPATCHMESH_TRI = 0x002,
D3DXPATCHMESH_NPATCH = 0x003
}
align(4) struct D3DXPATCHINFO
{
D3DXPATCHMESHTYPE PatchType;
D3DDEGREETYPE Degree;
D3DBASISTYPE Basis;
}
const uint LF_FACESIZE = 32;
align(4) struct D3DXFONT_DESCA
{
INT Height;
UINT Width;
UINT Weight;
UINT MipLevels;
BOOL Italic;
BYTE CharSet;
BYTE OutputPrecision;
BYTE Quality;
BYTE PitchAndFamily;
CHAR FaceName[LF_FACESIZE];
}
align(4) struct D3DXFONT_DESCW
{
INT Height;
UINT Width;
UINT Weight;
UINT MipLevels;
BOOL Italic;
BYTE CharSet;
BYTE OutputPrecision;
BYTE Quality;
BYTE PitchAndFamily;
WCHAR FaceName[LF_FACESIZE];
}
align(4) struct TEXTMETRICA
{
LONG tmHeight;
LONG tmAscent;
LONG tmDescent;
LONG tmInternalLeading;
LONG tmExternalLeading;
LONG tmAveCharWidth;
LONG tmMaxCharWidth;
LONG tmWeight;
LONG tmOverhang;
LONG tmDigitizedAspectX;
LONG tmDigitizedAspectY;
BYTE tmFirstChar;
BYTE tmLastChar;
BYTE tmDefaultChar;
BYTE tmBreakChar;
BYTE tmItalic;
BYTE tmUnderlined;
BYTE tmStruckOut;
BYTE tmPitchAndFamily;
BYTE tmCharSet;
}
align(4) struct TEXTMETRICW
{
LONG tmHeight;
LONG tmAscent;
LONG tmDescent;
LONG tmInternalLeading;
LONG tmExternalLeading;
LONG tmAveCharWidth;
LONG tmMaxCharWidth;
LONG tmWeight;
LONG tmOverhang;
LONG tmDigitizedAspectX;
LONG tmDigitizedAspectY;
WCHAR tmFirstChar;
WCHAR tmLastChar;
WCHAR tmDefaultChar;
WCHAR tmBreakChar;
BYTE tmItalic;
BYTE tmUnderlined;
BYTE tmStruckOut;
BYTE tmPitchAndFamily;
BYTE tmCharSet;
}
align(4) struct D3DXEFFECT_DESC
{
LPCSTR Creator; // Creator string
UINT Parameters; // Number of parameters
UINT Techniques; // Number of techniques
UINT Functions; // Number of function entrypoints
}
alias char* D3DXHANDLE;
align(4) struct D3DXPARAMETER_DESC
{
LPCSTR Name; // Parameter name
LPCSTR Semantic; // Parameter semantic
D3DXPARAMETER_CLASS Class; // Class
D3DXPARAMETER_TYPE Type; // Component type
UINT Rows; // Number of rows
UINT Columns; // Number of columns
UINT Elements; // Number of array elements
UINT Annotations; // Number of annotations
UINT StructMembers; // Number of structure member sub-parameters
DWORD Flags; // D3DX_PARAMETER_* flags
UINT Bytes; // Parameter size, in bytes
}
alias uint D3DXPARAMETER_CLASS;
enum : uint
{
D3DXPC_SCALAR,
D3DXPC_VECTOR,
D3DXPC_MATRIX_ROWS,
D3DXPC_MATRIX_COLUMNS,
D3DXPC_OBJECT,
D3DXPC_STRUCT
}
alias uint D3DXPARAMETER_TYPE;
enum : uint
{
D3DXPT_VOID,
D3DXPT_BOOL,
D3DXPT_INT,
D3DXPT_FLOAT,
D3DXPT_STRING,
D3DXPT_TEXTURE,
D3DXPT_TEXTURE1D,
D3DXPT_TEXTURE2D,
D3DXPT_TEXTURE3D,
D3DXPT_TEXTURECUBE,
D3DXPT_SAMPLER,
D3DXPT_SAMPLER1D,
D3DXPT_SAMPLER2D,
D3DXPT_SAMPLER3D,
D3DXPT_SAMPLERCUBE,
D3DXPT_PIXELSHADER,
D3DXPT_VERTEXSHADER,
D3DXPT_PIXELFRAGMENT,
D3DXPT_VERTEXFRAGMENT
}
align(4) struct D3DXTECHNIQUE_DESC
{
LPCSTR Name; // Technique name
UINT Passes; // Number of passes
UINT Annotations; // Number of annotations
}
align(4) struct D3DXPASS_DESC
{
LPCSTR Name; // Pass name
UINT Annotations; // Number of annotations
DWORD *pVertexShaderFunction; // Vertex shader function
DWORD *pPixelShaderFunction; // Pixel shader function
}
align(4) struct D3DXFUNCTION_DESC
{
LPCSTR Name; // Function name
UINT Annotations; // Number of annotations
}
struct D3DXTRACK_DESC
{
DWORD Priority;
FLOAT Weight = 0;
FLOAT Speed = 0;
double Position = 0;
BOOL Enable;
}
align(4) struct D3DXEVENT_DESC
{
DWORD Type;
UINT Track;
double StartTime = 0;
double Duration = 0;
DWORD Transition;
union
{
FLOAT Weight = 0;
FLOAT Speed;
double Position;
BOOL Enable;
};
}
align(4) struct D3DXKEY_VECTOR3
{
FLOAT Time = 0;
D3DXVECTOR3 Value;
}
align(4) struct D3DXKEY_QUATERNION
{
FLOAT Time = 0;
D3DXQUATERNION Value;
}
align(4) struct D3DXKEY_CALLBACK
{
FLOAT Time = 0;
LPVOID pCallbackData;
}
align(4) struct D3DXIMAGE_INFO
{
UINT Width;
UINT Height;
UINT Depth;
UINT MipLevels;
D3DFORMAT Format;
D3DRESOURCETYPE ResourceType;
D3DXIMAGE_FILEFORMAT ImageFileFormat;
}
alias uint D3DXIMAGE_FILEFORMAT;
enum : uint
{
D3DXIFF_BMP = 0,
D3DXIFF_JPG = 1,
D3DXIFF_TGA = 2,
D3DXIFF_PNG = 3,
D3DXIFF_DDS = 4,
D3DXIFF_PPM = 5,
D3DXIFF_DIB = 6,
}
align(4) struct D3DXATTRIBUTEWEIGHTS
{
FLOAT Position = 0;
FLOAT Boundary = 0;
FLOAT Normal = 0;
FLOAT Diffuse = 0;
FLOAT Specular = 0;
FLOAT Texcoord[8] = 0;
FLOAT Tangent = 0;
FLOAT Binormal = 0;
}
align(4) struct D3DXPLANE
{
FLOAT a = 0, b = 0, c = 0, d = 0;
}
alias uint D3DXMESH;
enum : uint
{
D3DXMESH_32BIT = 0x001,
D3DXMESH_DONOTCLIP = 0x002,
D3DXMESH_POINTS = 0x004,
D3DXMESH_RTPATCHES = 0x008,
D3DXMESH_NPATCHES = 0x4000,
D3DXMESH_VB_SYSTEMMEM = 0x010,
D3DXMESH_VB_MANAGED = 0x020,
D3DXMESH_VB_WRITEONLY = 0x040,
D3DXMESH_VB_DYNAMIC = 0x080,
D3DXMESH_VB_SOFTWAREPROCESSING = 0x8000,
D3DXMESH_IB_SYSTEMMEM = 0x100,
D3DXMESH_IB_MANAGED = 0x200,
D3DXMESH_IB_WRITEONLY = 0x400,
D3DXMESH_IB_DYNAMIC = 0x800,
D3DXMESH_IB_SOFTWAREPROCESSING= 0x10000,
D3DXMESH_VB_SHARE = 0x1000,
D3DXMESH_USEHWONLY = 0x2000,
D3DXMESH_SYSTEMMEM = 0x110,
D3DXMESH_MANAGED = 0x220,
D3DXMESH_WRITEONLY = 0x440,
D3DXMESH_DYNAMIC = 0x880,
D3DXMESH_SOFTWAREPROCESSING = 0x18000,
}
align(4) struct D3DXMACRO
{
LPCSTR Name;
LPCSTR Definition;
}
align(4) struct D3DXSEMANTIC
{
UINT Usage;
UINT UsageIndex;
}
alias uint D3DXINCLUDE_TYPE;
enum : uint
{
D3DXINC_LOCAL,
D3DXINC_SYSTEM,
}
enum : uint
{
D3DXFX_DONOTSAVESTATE = (1 << 0),
D3DXFX_DONOTSAVESHADERSTATE = (1 << 1),
D3DXFX_DONOTSAVESAMPLERSTATE = (1 << 2),
D3DXFX_NOT_CLONEABLE = (1 << 11)
}
alias uint D3DXMESHSIMP;
enum : uint
{
D3DXMESHSIMP_VERTEX = 0x1,
D3DXMESHSIMP_FACE = 0x2
}
enum : uint
{
DT_TOP = 0x00000000,
DT_LEFT = 0x00000000,
DT_CENTER = 0x00000001,
DT_RIGHT = 0x00000002,
DT_VCENTER = 0x00000004,
DT_BOTTOM = 0x00000008,
DT_WORDBREAK = 0x00000010,
DT_SINGLELINE = 0x00000020,
DT_EXPANDTABS = 0x00000040,
DT_TABSTOP = 0x00000080,
DT_NOCLIP = 0x00000100,
DT_EXTERNALLEADING = 0x00000200,
DT_CALCRECT = 0x00000400,
DT_NOPREFIX = 0x00000800,
DT_INTERNAL = 0x00001000
}
enum : uint
{
D3DXSPRITE_DONOTSAVESTATE = (1 << 0),
D3DXSPRITE_DONOTMODIFY_RENDERSTATE = (1 << 1),
D3DXSPRITE_OBJECTSPACE = (1 << 2),
D3DXSPRITE_BILLBOARD = (1 << 3),
D3DXSPRITE_ALPHABLEND = (1 << 4),
D3DXSPRITE_SORT_TEXTURE = (1 << 5),
D3DXSPRITE_SORT_DEPTH_FRONTTOBACK = (1 << 6),
D3DXSPRITE_SORT_DEPTH_BACKTOFRONT = (1 << 7)
}
enum : uint
{
D3DX_FILTER_NONE = (1 << 0),
D3DX_FILTER_POINT = (2 << 0),
D3DX_FILTER_LINEAR = (3 << 0),
D3DX_FILTER_TRIANGLE = (4 << 0),
D3DX_FILTER_BOX = (5 << 0),
D3DX_FILTER_MIRROR_U = (1 << 16),
D3DX_FILTER_MIRROR_V = (2 << 16),
D3DX_FILTER_MIRROR_W = (4 << 16),
D3DX_FILTER_MIRROR = (7 << 16),
D3DX_FILTER_DITHER = (1 << 19),
D3DX_FILTER_DITHER_DIFFUSION = (2 << 19),
D3DX_FILTER_SRGB_IN = (1 << 21),
D3DX_FILTER_SRGB_OUT = (2 << 21),
D3DX_FILTER_SRGB = (3 << 21)
}
const uint D3DX_DEFAULT = cast(UINT) -1;
alias uint D3DXMESHOPT;
enum : uint
{
D3DXMESHOPT_COMPACT = 0x01000000,
D3DXMESHOPT_ATTRSORT = 0x02000000,
D3DXMESHOPT_VERTEXCACHE = 0x04000000,
D3DXMESHOPT_STRIPREORDER = 0x08000000,
D3DXMESHOPT_IGNOREVERTS = 0x10000000, // optimize faces only, don't touch vertices
D3DXMESHOPT_DONOTSPLIT = 0x20000000, // do not split vertices shared between attribute groups when attribute sorting
D3DXMESHOPT_DEVICEINDEPENDENT = 0x00400000 // Only affects VCache. uses a static known good cache size for all cards
}
enum : uint
{
D3DXPLAY_LOOP = 0,
D3DXPLAY_ONCE = 1,
D3DXPLAY_PINGPONG = 2
}
alias uint D3DXPLAYBACK_TYPE;
// D3DX Interfaces ---------------------------------------------------------------------------------------
interface ID3DXSkinInfo : IUnknown
{
extern(Windows):
// Specify the which vertices do each bones influence and by how much
HRESULT SetBoneInfluence(DWORD bone, DWORD numInfluences, DWORD* vertices, FLOAT* weights);
HRESULT SetBoneVertexInfluence(DWORD boneNum, DWORD influenceNum, float weight);
DWORD GetNumBoneInfluences(DWORD bone);
HRESULT GetBoneInfluence(DWORD bone, DWORD* vertices, FLOAT* weights);
HRESULT GetBoneVertexInfluence(DWORD boneNum, DWORD influenceNum, float *pWeight, DWORD *pVertexNum);
HRESULT GetMaxVertexInfluences(DWORD* maxVertexInfluences);
DWORD GetNumBones();
HRESULT FindBoneVertexInfluenceIndex(DWORD boneNum, DWORD vertexNum, DWORD *pInfluenceIndex);
// This gets the max face influences based on a triangle mesh with the specified index buffer
HRESULT GetMaxFaceInfluences(IDirect3DIndexBuffer9 pIB, DWORD NumFaces, DWORD* maxFaceInfluences);
// Set min bone influence. Bone influences that are smaller than this are ignored
HRESULT SetMinBoneInfluence(FLOAT MinInfl);
// Get min bone influence.
FLOAT GetMinBoneInfluence();
// Bone names are returned by D3DXLoadSkinMeshFromXof. They are not used by any other method of this object
HRESULT SetBoneName(DWORD Bone, LPCSTR pName); // pName is copied to an internal string buffer
LPCSTR GetBoneName(DWORD Bone); // A pointer to an internal string buffer is returned. Do not free this.
// Bone offset matrices are returned by D3DXLoadSkinMeshFromXof. They are not used by any other method of this object
HRESULT SetBoneOffsetMatrix(DWORD Bone, D3DXMATRIX *pBoneTransform); // pBoneTransform is copied to an internal buffer
D3DXMATRIX* GetBoneOffsetMatrix(DWORD Bone); // A pointer to an internal matrix is returned. Do not free this.
// Clone a skin info object
HRESULT Clone(ID3DXSkinInfo* ppSkinInfo);
// Update bone influence information to match vertices after they are reordered. This should be called
// if the target vertex buffer has been reordered externally.
HRESULT Remap(DWORD NumVertices, DWORD* pVertexRemap);
// These methods enable the modification of the vertex layout of the vertices that will be skinned
HRESULT SetFVF(DWORD FVF);
HRESULT SetDeclaration(D3DVERTEXELEMENT9 *pDeclaration);
DWORD GetFVF();
HRESULT GetDeclaration(D3DVERTEXELEMENT9 Declaration[MAX_FVF_DECL_SIZE]);
// Apply SW skinning based on current pose matrices to the target vertices.
HRESULT UpdateSkinnedMesh(
D3DXMATRIX* pBoneTransforms,
D3DXMATRIX* pBoneInvTransposeTransforms,
LPCVOID pVerticesSrc,
PVOID pVerticesDst);
// Takes a mesh and returns a new mesh with per vertex blend weights and a bone combination
// table that describes which bones affect which subsets of the mesh
HRESULT ConvertToBlendedMesh(
ID3DXMesh pMesh,
DWORD Options,
DWORD *pAdjacencyIn,
LPDWORD pAdjacencyOut,
DWORD* pFaceRemap,
ID3DXBuffer* ppVertexRemap,
DWORD* pMaxFaceInfl,
DWORD* pNumBoneCombinations,
ID3DXBuffer* ppBoneCombinationTable,
ID3DXMesh* ppMesh);
// Takes a mesh and returns a new mesh with per vertex blend weights and indices
// and a bone combination table that describes which bones palettes affect which subsets of the mesh
HRESULT ConvertToIndexedBlendedMesh(
ID3DXMesh pMesh,
DWORD Options,
DWORD paletteSize,
DWORD *pAdjacencyIn,
LPDWORD pAdjacencyOut,
DWORD* pFaceRemap,
ID3DXBuffer* ppVertexRemap,
DWORD* pMaxVertexInfl,
DWORD *pNumBoneCombinations,
ID3DXBuffer* ppBoneCombinationTable,
ID3DXMesh* ppMesh);
}
interface ID3DXBaseMesh : IUnknown
{
extern(Windows):
// ID3DXBaseMesh
HRESULT DrawSubset( DWORD AttribId) ;
DWORD GetNumFaces() ;
DWORD GetNumVertices() ;
DWORD GetFVF() ;
HRESULT GetDeclaration( D3DVERTEXELEMENT9 Declaration[MAX_FVF_DECL_SIZE]) ;
DWORD GetNumBytesPerVertex() ;
DWORD GetOptions() ;
HRESULT GetDevice( IDirect3DDevice9* ppDevice) ;
HRESULT CloneMeshFVF( DWORD Options,
DWORD FVF, IDirect3DDevice9 pD3DDevice, ID3DXMesh* ppCloneMesh) ;
HRESULT CloneMesh( DWORD Options,
D3DVERTEXELEMENT9 *pDeclaration, IDirect3DDevice9 pD3DDevice, ID3DXMesh* ppCloneMesh) ;
HRESULT GetVertexBuffer( IDirect3DVertexBuffer9* ppVB) ;
HRESULT GetIndexBuffer( IDirect3DIndexBuffer9* ppIB) ;
HRESULT LockVertexBuffer( DWORD Flags, LPVOID *ppData) ;
HRESULT UnlockVertexBuffer() ;
HRESULT LockIndexBuffer( DWORD Flags, LPVOID *ppData) ;
HRESULT UnlockIndexBuffer() ;
HRESULT GetAttributeTable(
D3DXATTRIBUTERANGE *pAttribTable, DWORD* pAttribTableSize) ;
HRESULT ConvertPointRepsToAdjacency( DWORD* pPRep, DWORD* pAdjacency) ;
HRESULT ConvertAdjacencyToPointReps( DWORD* pAdjacency, DWORD* pPRep) ;
HRESULT GenerateAdjacency( FLOAT Epsilon, DWORD* pAdjacency) ;
HRESULT UpdateSemantics( D3DVERTEXELEMENT9 Declaration[MAX_FVF_DECL_SIZE]) ;
}
interface ID3DXMesh : ID3DXBaseMesh
{
extern(Windows):
// ID3DXMesh
HRESULT LockAttributeBuffer( DWORD Flags, DWORD** ppData) ;
HRESULT UnlockAttributeBuffer() ;
HRESULT Optimize( DWORD Flags, DWORD* pAdjacencyIn, DWORD* pAdjacencyOut,
DWORD* pFaceRemap, ID3DXBuffer *ppVertexRemap,
ID3DXMesh* ppOptMesh) ;
HRESULT OptimizeInplace( DWORD Flags, DWORD* pAdjacencyIn, DWORD* pAdjacencyOut,
DWORD* pFaceRemap, ID3DXBuffer *ppVertexRemap) ;
HRESULT SetAttributeTable( D3DXATTRIBUTERANGE *pAttribTable, DWORD cAttribTableSize) ;
}
interface ID3DXBuffer : IUnknown
{
extern(Windows):
// ID3DXBuffer
LPVOID GetBufferPointer();
DWORD GetBufferSize();
}
interface ID3DXPMesh : ID3DXBaseMesh
{
extern(Windows):
// ID3DXPMesh
HRESULT ClonePMeshFVF( DWORD Options,
DWORD FVF, IDirect3DDevice9 pD3DDevice, ID3DXPMesh* ppCloneMesh) ;
HRESULT ClonePMesh( DWORD Options,
D3DVERTEXELEMENT9 *pDeclaration, IDirect3DDevice9 pD3DDevice, ID3DXPMesh* ppCloneMesh) ;
HRESULT SetNumFaces( DWORD Faces) ;
HRESULT SetNumVertices( DWORD Vertices) ;
DWORD GetMaxFaces() ;
DWORD GetMinFaces() ;
DWORD GetMaxVertices() ;
DWORD GetMinVertices() ;
HRESULT Save( void *pStream, D3DXMATERIAL* pMaterials, D3DXEFFECTINSTANCE* pEffectInstances, DWORD NumMaterials) ;
HRESULT Optimize( DWORD Flags, DWORD* pAdjacencyOut,
DWORD* pFaceRemap, ID3DXBuffer *ppVertexRemap,
ID3DXMesh* ppOptMesh) ;
HRESULT OptimizeBaseLOD( DWORD Flags, DWORD* pFaceRemap) ;
HRESULT TrimByFaces( DWORD NewFacesMin, DWORD NewFacesMax, DWORD *rgiFaceRemap, DWORD *rgiVertRemap) ;
HRESULT TrimByVertices( DWORD NewVerticesMin, DWORD NewVerticesMax, DWORD *rgiFaceRemap, DWORD *rgiVertRemap) ;
HRESULT GetAdjacency( DWORD* pAdjacency) ;
// Used to generate the immediate "ancestor" for each vertex when it is removed by a vsplit. Allows generation of geomorphs
// Vertex buffer must be equal to or greater than the maximum number of vertices in the pmesh
HRESULT GenerateVertexHistory( DWORD* pVertexHistory) ;
}
interface ID3DXPatchMesh : IUnknown
{
extern(Windows):
// ID3DXPatchMesh
// Return creation parameters
DWORD GetNumPatches() ;
DWORD GetNumVertices() ;
HRESULT GetDeclaration( D3DVERTEXELEMENT9 Declaration[MAX_FVF_DECL_SIZE]) ;
DWORD GetControlVerticesPerPatch() ;
DWORD GetOptions() ;
HRESULT GetDevice( IDirect3DDevice9 *ppDevice) ;
HRESULT GetPatchInfo( D3DXPATCHINFO* PatchInfo) ;
// Control mesh access
HRESULT GetVertexBuffer( IDirect3DVertexBuffer9* ppVB) ;
HRESULT GetIndexBuffer( IDirect3DIndexBuffer9* ppIB) ;
HRESULT LockVertexBuffer( DWORD flags, LPVOID *ppData) ;
HRESULT UnlockVertexBuffer() ;
HRESULT LockIndexBuffer( DWORD flags, LPVOID *ppData) ;
HRESULT UnlockIndexBuffer() ;
HRESULT LockAttributeBuffer( DWORD flags, DWORD** ppData) ;
HRESULT UnlockAttributeBuffer() ;
// function returns the size of the tessellated mesh given a tessellation level.
// assumes uniform tessellation. For adaptive tessellation the Adaptive parameter must
// be set to TRUE and TessellationLevel should be the max tessellation.
// will result in the max mesh size necessary for adaptive tessellation.
HRESULT GetTessSize( FLOAT fTessLevel,DWORD Adaptive, DWORD *NumTriangles,DWORD *NumVertices) ;
//GenerateAdjacency determines which patches are adjacent with provided tolerance
// information is used internally to optimize tessellation
HRESULT GenerateAdjacency( FLOAT Tolerance) ;
//CloneMesh Creates a new patchmesh with the specified decl, and converts the vertex buffer
//to the new decl. Entries in the new decl which are new are set to 0. If the current mesh
//has adjacency, the new mesh will also have adjacency
HRESULT CloneMesh( DWORD Options, D3DVERTEXELEMENT9 *pDecl, ID3DXPatchMesh *pMesh) ;
// Optimizes the patchmesh for efficient tessellation. function is designed
// to perform one time optimization for patch meshes that need to be tessellated
// repeatedly by calling the Tessellate() method. The optimization performed is
// independent of the actual tessellation level used.
// Currently Flags is unused.
// If vertices are changed, Optimize must be called again
HRESULT Optimize( DWORD flags) ;
//gets and sets displacement parameters
//displacement maps can only be 2D textures MIP-MAPPING is ignored for non adapative tessellation
HRESULT SetDisplaceParam( IDirect3DBaseTexture9 Texture,
D3DTEXTUREFILTERTYPE MinFilter,
D3DTEXTUREFILTERTYPE MagFilter,
D3DTEXTUREFILTERTYPE MipFilter,
D3DTEXTUREADDRESS Wrap,
DWORD dwLODBias) ;
HRESULT GetDisplaceParam( IDirect3DBaseTexture9 *Texture,
D3DTEXTUREFILTERTYPE *MinFilter,
D3DTEXTUREFILTERTYPE *MagFilter,
D3DTEXTUREFILTERTYPE *MipFilter,
D3DTEXTUREADDRESS *Wrap,
DWORD *dwLODBias) ;
// Performs the uniform tessellation based on the tessellation level.
// function will perform more efficiently if the patch mesh has been optimized using the Optimize() call.
HRESULT Tessellate( FLOAT fTessLevel,ID3DXMesh pMesh) ;
// Performs adaptive tessellation based on the Z based adaptive tessellation criterion.
// pTrans specifies a 4D vector that is dotted with the vertices to get the per vertex
// adaptive tessellation amount. Each edge is tessellated to the average of the criterion
// at the 2 vertices it connects.
// MaxTessLevel specifies the upper limit for adaptive tesselation.
// function will perform more efficiently if the patch mesh has been optimized using the Optimize() call.
HRESULT TessellateAdaptive(
D3DXVECTOR4 *pTrans,
DWORD dwMaxTessLevel,
DWORD dwMinTessLevel,
ID3DXMesh pMesh) ;
}
interface ID3DXFont : IUnknown
{
extern(Windows):
// ID3DXFont
HRESULT GetDevice( IDirect3DDevice9 *ppDevice) ;
HRESULT GetDescA( D3DXFONT_DESCA *pDesc) ;
HRESULT GetDescW( D3DXFONT_DESCW *pDesc) ;
BOOL GetTextMetricsA( TEXTMETRICA *pTextMetrics) ;
BOOL GetTextMetricsW( TEXTMETRICW *pTextMetrics) ;
HDC GetDC() ;
HRESULT GetGlyphData( UINT Glyph, IDirect3DTexture9 *ppTexture, RECT *pBlackBox, POINT *pCellInc) ;
HRESULT PreloadCharacters( UINT First, UINT Last) ;
HRESULT PreloadGlyphs( UINT First, UINT Last) ;
HRESULT PreloadTextA( LPCSTR pString, INT Count) ;
HRESULT PreloadTextW( LPCWSTR pString, INT Count) ;
INT DrawTextA( ID3DXSprite pSprite, LPCSTR pString, INT Count, LPRECT pRect, DWORD Format, D3DCOLOR Color) ;
INT DrawTextW( ID3DXSprite pSprite, LPCWSTR pString, INT Count, LPRECT pRect, DWORD Format, D3DCOLOR Color) ;
HRESULT OnLostDevice() ;
HRESULT OnResetDevice() ;
}
interface ID3DXSprite : IUnknown
{
extern(Windows):
// ID3DXSprite
HRESULT GetDevice( IDirect3DDevice9* ppDevice) ;
HRESULT GetTransform( D3DXMATRIX *pTransform) ;
HRESULT SetTransform( D3DXMATRIX *pTransform) ;
HRESULT SetWorldViewRH( D3DXMATRIX *pWorld, D3DXMATRIX *pView) ;
HRESULT SetWorldViewLH( D3DXMATRIX *pWorld, D3DXMATRIX *pView) ;
HRESULT Begin( DWORD Flags) ;
HRESULT Draw( IDirect3DTexture9 pTexture, RECT *pSrcRect, D3DXVECTOR3 *pCenter, D3DXVECTOR3 *pPosition, D3DCOLOR Color) ;
HRESULT Flush() ;
HRESULT End() ;
HRESULT OnLostDevice() ;
HRESULT OnResetDevice() ;
}
interface ID3DXBaseEffect : IUnknown
{
extern(Windows):
// Descs
HRESULT GetDesc( D3DXEFFECT_DESC* pDesc) ;
HRESULT GetParameterDesc( D3DXHANDLE hParameter, D3DXPARAMETER_DESC* pDesc) ;
HRESULT GetTechniqueDesc( D3DXHANDLE hTechnique, D3DXTECHNIQUE_DESC* pDesc) ;
HRESULT GetPassDesc( D3DXHANDLE hPass, D3DXPASS_DESC* pDesc) ;
HRESULT GetFunctionDesc( D3DXHANDLE hShader, D3DXFUNCTION_DESC* pDesc) ;
// Handle operations
D3DXHANDLE GetParameter( D3DXHANDLE hParameter, UINT Index) ;
D3DXHANDLE GetParameterByName( D3DXHANDLE hParameter, LPCSTR pName) ;
D3DXHANDLE GetParameterBySemantic( D3DXHANDLE hParameter, LPCSTR pSemantic) ;
D3DXHANDLE GetParameterElement( D3DXHANDLE hParameter, UINT Index) ;
D3DXHANDLE GetTechnique( UINT Index) ;
D3DXHANDLE GetTechniqueByName( LPCSTR pName) ;
D3DXHANDLE GetPass( D3DXHANDLE hTechnique, UINT Index) ;
D3DXHANDLE GetPassByName( D3DXHANDLE hTechnique, LPCSTR pName) ;
D3DXHANDLE GetFunction( UINT Index) ;
D3DXHANDLE GetFunctionByName( LPCSTR pName) ;
D3DXHANDLE GetAnnotation( D3DXHANDLE hObject, UINT Index) ;
D3DXHANDLE GetAnnotationByName( D3DXHANDLE hObject, LPCSTR pName) ;
// Get/Set Parameters
HRESULT SetValue( D3DXHANDLE hParameter, LPCVOID pData, UINT Bytes) ;
HRESULT GetValue( D3DXHANDLE hParameter, LPVOID pData, UINT Bytes) ;
HRESULT SetBool( D3DXHANDLE hParameter, BOOL b) ;
HRESULT GetBool( D3DXHANDLE hParameter, BOOL* pb) ;
HRESULT SetBoolArray( D3DXHANDLE hParameter, BOOL* pb, UINT Count) ;
HRESULT GetBoolArray( D3DXHANDLE hParameter, BOOL* pb, UINT Count) ;
HRESULT SetInt( D3DXHANDLE hParameter, INT n) ;
HRESULT GetInt( D3DXHANDLE hParameter, INT* pn) ;
HRESULT SetIntArray( D3DXHANDLE hParameter, INT* pn, UINT Count) ;
HRESULT GetIntArray( D3DXHANDLE hParameter, INT* pn, UINT Count) ;
HRESULT SetFloat( D3DXHANDLE hParameter, FLOAT f) ;
HRESULT GetFloat( D3DXHANDLE hParameter, FLOAT* pf) ;
HRESULT SetFloatArray( D3DXHANDLE hParameter, FLOAT* pf, UINT Count) ;
HRESULT GetFloatArray( D3DXHANDLE hParameter, FLOAT* pf, UINT Count) ;
HRESULT SetVector( D3DXHANDLE hParameter, D3DXVECTOR4* pVector) ;
HRESULT GetVector( D3DXHANDLE hParameter, D3DXVECTOR4* pVector) ;
HRESULT SetVectorArray( D3DXHANDLE hParameter, D3DXVECTOR4* pVector, UINT Count) ;
HRESULT GetVectorArray( D3DXHANDLE hParameter, D3DXVECTOR4* pVector, UINT Count) ;
HRESULT SetMatrix( D3DXHANDLE hParameter, D3DXMATRIX* pMatrix) ;
HRESULT GetMatrix( D3DXHANDLE hParameter, D3DXMATRIX* pMatrix) ;
HRESULT SetMatrixArray( D3DXHANDLE hParameter, D3DXMATRIX* pMatrix, UINT Count) ;
HRESULT GetMatrixArray( D3DXHANDLE hParameter, D3DXMATRIX* pMatrix, UINT Count) ;
HRESULT SetMatrixPointerArray( D3DXHANDLE hParameter, D3DXMATRIX** ppMatrix, UINT Count) ;
HRESULT GetMatrixPointerArray( D3DXHANDLE hParameter, D3DXMATRIX** ppMatrix, UINT Count) ;
HRESULT SetMatrixTranspose( D3DXHANDLE hParameter, D3DXMATRIX* pMatrix) ;
HRESULT GetMatrixTranspose( D3DXHANDLE hParameter, D3DXMATRIX* pMatrix) ;
HRESULT SetMatrixTransposeArray( D3DXHANDLE hParameter, D3DXMATRIX* pMatrix, UINT Count) ;
HRESULT GetMatrixTransposeArray( D3DXHANDLE hParameter, D3DXMATRIX* pMatrix, UINT Count) ;
HRESULT SetMatrixTransposePointerArray( D3DXHANDLE hParameter, D3DXMATRIX** ppMatrix, UINT Count) ;
HRESULT GetMatrixTransposePointerArray( D3DXHANDLE hParameter, D3DXMATRIX** ppMatrix, UINT Count) ;
HRESULT SetString( D3DXHANDLE hParameter, LPCSTR pString) ;
HRESULT GetString( D3DXHANDLE hParameter, LPCSTR* ppString) ;
HRESULT SetTexture( D3DXHANDLE hParameter, IDirect3DBaseTexture9 pTexture) ;
HRESULT GetTexture( D3DXHANDLE hParameter, IDirect3DBaseTexture9 *ppTexture) ;
HRESULT GetPixelShader( D3DXHANDLE hParameter, IDirect3DPixelShader9 *ppPShader) ;
HRESULT GetVertexShader( D3DXHANDLE hParameter, IDirect3DVertexShader9 *ppVShader) ;
//Set Range of an Array to pass to device
//Useful for sending only a subrange of an array down to the device
HRESULT SetArrayRange( D3DXHANDLE hParameter, UINT uStart, UINT uEnd) ;
}
interface ID3DXEffect : ID3DXBaseEffect
{
extern(Windows):
// Pool
HRESULT GetPool( ID3DXEffectPool* ppPool) ;
// Selecting and setting a technique
HRESULT SetTechnique( D3DXHANDLE hTechnique) ;
D3DXHANDLE GetCurrentTechnique() ;
HRESULT ValidateTechnique( D3DXHANDLE hTechnique) ;
HRESULT FindNextValidTechnique( D3DXHANDLE hTechnique, D3DXHANDLE *pTechnique) ;
BOOL IsParameterUsed( D3DXHANDLE hParameter, D3DXHANDLE hTechnique) ;
// Using current technique
// Begin starts active technique
// BeginPass begins a pass
// CommitChanges updates changes to any set calls in the pass. should be called before
// any DrawPrimitive call to d3d
// EndPass ends a pass
// End ends active technique
HRESULT Begin( UINT *pPasses, DWORD Flags) ;
HRESULT BeginPass( UINT Pass) ;
HRESULT CommitChanges() ;
HRESULT EndPass() ;
HRESULT End() ;
// Managing D3D Device
HRESULT GetDevice( IDirect3DDevice9* ppDevice) ;
HRESULT OnLostDevice() ;
HRESULT OnResetDevice() ;
// Logging device calls
HRESULT SetStateManager( ID3DXEffectStateManager pManager) ;
HRESULT GetStateManager( ID3DXEffectStateManager *ppManager) ;
// Parameter blocks
HRESULT BeginParameterBlock() ;
D3DXHANDLE EndParameterBlock() ;
HRESULT ApplyParameterBlock( D3DXHANDLE hParameterBlock) ;
HRESULT DeleteParameterBlock( D3DXHANDLE hParameterBlock) ;
// Cloning
HRESULT CloneEffect( IDirect3DDevice9 pDevice, ID3DXEffect* ppEffect) ;
}
interface ID3DXEffectPool : IUnknown
{
extern(Windows):
// No public methods
}
interface ID3DXEffectStateManager : IUnknown
{
extern(Windows):
// The following methods are called by the Effect when it wants to make
// the corresponding device call. Note that:
// 1. Users manage the state and are therefore responsible for making the
// the corresponding device calls themselves inside their callbacks.
// 2. Effects pay attention to the return values of the callbacks, and so
// users must pay attention to what they return in their callbacks.
HRESULT SetTransform( D3DTRANSFORMSTATETYPE State, D3DMATRIX *pMatrix) ;
HRESULT SetMaterial( D3DMATERIAL9 *pMaterial) ;
HRESULT SetLight( DWORD Index, D3DLIGHT9 *pLight) ;
HRESULT LightEnable( DWORD Index, BOOL Enable) ;
HRESULT SetRenderState( D3DRENDERSTATETYPE State, DWORD Value) ;
HRESULT SetTexture( DWORD Stage, IDirect3DBaseTexture9 pTexture) ;
HRESULT SetTextureStageState( DWORD Stage, D3DTEXTURESTAGESTATETYPE Type, DWORD Value) ;
HRESULT SetSamplerState( DWORD Sampler, D3DSAMPLERSTATETYPE Type, DWORD Value) ;
HRESULT SetNPatchMode( FLOAT NumSegments) ;
HRESULT SetFVF( DWORD FVF) ;
HRESULT SetVertexShader( IDirect3DVertexShader9 pShader) ;
HRESULT SetVertexShaderConstantF( UINT RegisterIndex, FLOAT *pConstantData, UINT RegisterCount) ;
HRESULT SetVertexShaderConstantI( UINT RegisterIndex, INT *pConstantData, UINT RegisterCount) ;
HRESULT SetVertexShaderConstantB( UINT RegisterIndex, BOOL *pConstantData, UINT RegisterCount) ;
HRESULT SetPixelShader( IDirect3DPixelShader9 pShader) ;
HRESULT SetPixelShaderConstantF( UINT RegisterIndex, FLOAT *pConstantData, UINT RegisterCount) ;
HRESULT SetPixelShaderConstantI( UINT RegisterIndex, INT *pConstantData, UINT RegisterCount) ;
HRESULT SetPixelShaderConstantB( UINT RegisterIndex, BOOL *pConstantData, UINT RegisterCount) ;
}
interface ID3DXInclude
{
HRESULT Open(D3DXINCLUDE_TYPE IncludeType, LPCSTR pFileName, LPCVOID pParentData, LPCVOID *ppData, UINT *pBytes);
HRESULT Close(LPCVOID pData);
}
// D3DX Functions ---------------------------------------------------------------------------------------
extern(Windows)
{
uint D3DXGetShaderVersion(uint* pFunction);
HRESULT D3DXCheckTextureRequirements(
IDirect3DDevice9 pDevice,
UINT* pWidth,
UINT* pHeight,
UINT* pNumMipLevels,
DWORD Usage,
D3DFORMAT* pFormat,
D3DPOOL Pool) ;
HRESULT D3DXCreateTexture(
IDirect3DDevice9 pDevice,
UINT Width,
UINT Height,
UINT MipLevels,
DWORD Usage,
D3DFORMAT Format,
D3DPOOL Pool,
IDirect3DTexture9* ppTexture);
HRESULT D3DXCreateCubeTexture(
IDirect3DDevice9 pDevice,
UINT Size,
UINT MipLevels,
DWORD Usage,
D3DFORMAT Format,
D3DPOOL Pool,
IDirect3DCubeTexture9* ppCubeTexture);
HRESULT D3DXCreateTextureFromFileA(
LPDIRECT3DDEVICE9 pDevice,
LPCTSTR pSrcFile,
LPDIRECT3DTEXTURE9 * ppTexture);
HRESULT D3DXCreateTextureFromFileExA(
IDirect3DDevice9 pDevice,
LPCSTR pSrcFile,
UINT Width,
UINT Height,
UINT MipLevels,
DWORD Usage,
D3DFORMAT Format,
D3DPOOL Pool,
DWORD Filter,
DWORD MipFilter,
D3DCOLOR ColorKey,
D3DXIMAGE_INFO* pSrcInfo,
PALETTEENTRY* pPalette,
IDirect3DTexture9* ppTexture);
HRESULT D3DXCreateCubeTextureFromFileExA(
IDirect3DDevice9 pDevice,
LPCSTR pSrcFile,
UINT Size,
UINT MipLevels,
DWORD Usage,
D3DFORMAT Format,
D3DPOOL Pool,
DWORD Filter,
DWORD MipFilter,
D3DCOLOR ColorKey,
D3DXIMAGE_INFO* pSrcInfo,
PALETTEENTRY* pPalette,
IDirect3DCubeTexture9* ppCubeTexture);
HRESULT D3DXSimplifyMesh(
ID3DXMesh pMesh,
DWORD* pAdjacency,
D3DXATTRIBUTEWEIGHTS *pVertexAttributeWeights,
FLOAT *pVertexWeights,
DWORD MinValue,
DWORD Options,
ID3DXMesh* ppMesh);
HRESULT D3DXCreateSkinInfoFVF(
DWORD NumVertices,
DWORD FVF,
DWORD NumBones,
ID3DXSkinInfo* ppSkinInfo);
D3DXVECTOR2* D3DXVec2TransformCoord( D3DXVECTOR2 *pOut, D3DXVECTOR2 *pV, D3DXMATRIX *pM );
D3DXVECTOR4* D3DXVec3Transform( D3DXVECTOR4 *pOut, D3DXVECTOR3 *pV, D3DXMATRIX *pM );
D3DXVECTOR3* D3DXVec3TransformCoord( D3DXVECTOR3 *pOut, D3DXVECTOR3 *pV, D3DXMATRIX *pM );
D3DXVECTOR4* D3DXVec4Transform( D3DXVECTOR4 *pOut, D3DXVECTOR4 *pV, D3DXMATRIX *pM );
D3DXMATRIX* D3DXMatrixTranspose( D3DXMATRIX *pOut, D3DXMATRIX *pM );
D3DXMATRIX* D3DXMatrixMultiply( D3DXMATRIX *pOut, D3DXMATRIX *pM1, D3DXMATRIX *pM2 );
D3DXMATRIX* D3DXMatrixInverse( D3DXMATRIX *pOut, FLOAT *pDeterminant, D3DXMATRIX *pM );
D3DXMATRIX* D3DXMatrixScaling( D3DXMATRIX *pOut, FLOAT sx, FLOAT sy, FLOAT sz );
D3DXMATRIX* D3DXMatrixTranslation( D3DXMATRIX *pOut, FLOAT x, FLOAT y, FLOAT z );
D3DXMATRIX* D3DXMatrixRotationX( D3DXMATRIX *pOut, FLOAT Angle );
D3DXMATRIX* D3DXMatrixRotationY( D3DXMATRIX *pOut, FLOAT Angle );
D3DXMATRIX* D3DXMatrixRotationZ( D3DXMATRIX *pOut, FLOAT Angle );
D3DXMATRIX* D3DXMatrixRotationQuaternion( D3DXMATRIX *pOut, D3DXQUATERNION *pQ);
D3DXMATRIX* D3DXMatrixRotationYawPitchRoll( D3DXMATRIX *pOut, FLOAT Yaw, FLOAT Pitch, FLOAT Roll );
D3DXMATRIX* D3DXMatrixAffineTransformation2D( D3DXMATRIX *pOut, FLOAT Scaling, D3DXVECTOR2 *pRotationCenter,
float Rotation, D3DXVECTOR2 *pTranslation);
D3DXMATRIX* D3DXMatrixPerspectiveFovLH( D3DXMATRIX *pOut, FLOAT fovy, FLOAT Aspect, FLOAT zn, FLOAT zf );
D3DXMATRIX* D3DXMatrixOrthoLH( D3DXMATRIX *pOut, FLOAT w, FLOAT h, FLOAT zn, FLOAT zf );
D3DXMATRIX* D3DXMatrixOrthoOffCenterLH( D3DXMATRIX *pOut, FLOAT l, FLOAT r, FLOAT b, FLOAT t, FLOAT zn,
FLOAT zf );
void D3DXQuaternionToAxisAngle( D3DXQUATERNION *pQ, D3DXVECTOR3 *pAxis, FLOAT *pAngle );
D3DXQUATERNION* D3DXQuaternionRotationMatrix( D3DXQUATERNION *pOut, D3DXMATRIX *pM);
D3DXQUATERNION* D3DXQuaternionNormalize( D3DXQUATERNION *pOut, D3DXQUATERNION *pQ );
D3DXPLANE* D3DXPlaneNormalize( D3DXPLANE *pOut, D3DXPLANE *pP);
char* DXGetErrorDescription9A(HRESULT hr);
HRESULT D3DXCreateEffectFromFileA(
IDirect3DDevice9 pDevice,
LPCSTR pSrcFile,
D3DXMACRO* pDefines,
ID3DXInclude pInclude,
DWORD Flags,
ID3DXEffectPool pPool,
ID3DXEffect* ppEffect,
ID3DXBuffer* ppCompilationErrors);
D3DXMATRIX* D3DXMatrixTransformation2D( D3DXMATRIX *pOut, D3DXVECTOR2 *pScalingCenter,
float *pScalingRotation, D3DXVECTOR2 *pScaling,
D3DXVECTOR2 *pRotationCenter, float Rotation,
D3DXVECTOR2 *pTranslation);
HRESULT D3DXLoadMeshFromXA(
LPCSTR pFilename,
DWORD Options,
IDirect3DDevice9 pD3D,
ID3DXBuffer *ppAdjacency,
ID3DXBuffer *ppMaterials,
ID3DXBuffer *ppEffectInstances,
DWORD *pNumMaterials,
ID3DXMesh *ppMesh);
HRESULT D3DXCreatePolygon(
IDirect3DDevice9 pDevice,
FLOAT Length,
UINT Sides,
ID3DXMesh* ppMesh,
ID3DXBuffer* ppAdjacency);
HRESULT D3DXCreateBox(
IDirect3DDevice9 pDevice,
FLOAT Width,
FLOAT Height,
FLOAT Depth,
ID3DXMesh* ppMesh,
ID3DXBuffer* ppAdjacency);
HRESULT D3DXCreateCylinder(
IDirect3DDevice9 pDevice,
FLOAT Radius1,
FLOAT Radius2,
FLOAT Length,
UINT Slices,
UINT Stacks,
ID3DXMesh* ppMesh,
ID3DXBuffer* ppAdjacency);
HRESULT D3DXCreateSphere(
IDirect3DDevice9 pDevice,
FLOAT Radius,
UINT Slices,
UINT Stacks,
ID3DXMesh* ppMesh,
ID3DXBuffer* ppAdjacency);
HRESULT D3DXCreateTorus(
IDirect3DDevice9 pDevice,
FLOAT InnerRadius,
FLOAT OuterRadius,
UINT Sides,
UINT Rings,
ID3DXMesh* ppMesh,
ID3DXBuffer* ppAdjacency);
HRESULT D3DXCreateTeapot(
IDirect3DDevice9 pDevice,
ID3DXMesh* ppMesh,
ID3DXBuffer* ppAdjacency);
HRESULT D3DXCreateFontA(
IDirect3DDevice9 pDevice,
UINT Height,
UINT Width,
UINT Weight,
UINT MipLevels,
BOOL Italic,
DWORD CharSet,
DWORD OutputPrecision,
DWORD Quality,
DWORD PitchAndFamily,
LPCTSTR pFacename,
ID3DXFont *ppFont);
HRESULT D3DXCreateSprite(
IDirect3DDevice9 pDevice,
ID3DXSprite* ppSprite) ;
HRESULT D3DXCreateEffect(
IDirect3DDevice9 pDevice,
LPCVOID pSrcData,
UINT SrcDataLen,
D3DXMACRO* pDefines,
ID3DXInclude pInclude,
DWORD Flags,
ID3DXEffectPool pPool,
ID3DXEffect* ppEffect,
ID3DXBuffer* ppCompilationErrors);
HRESULT D3DXCreateEffectPool(
ID3DXEffectPool* pEffectPool);
HRESULT D3DXGetShaderInputSemantics(
DWORD* pFunction,
D3DXSEMANTIC* pSemantics,
UINT* pCount);
HRESULT
D3DXCreateMeshFVF(
DWORD NumFaces,
DWORD NumVertices,
DWORD Options,
DWORD FVF,
IDirect3DDevice9 pD3DDevice,
ID3DXMesh* ppMesh);
UINT D3DXGetFVFVertexSize(DWORD FVF);
HRESULT D3DXFileCreate(ID3DXFile* lplpDirectXFile);
HRESULT D3DXLoadMeshFromXof(
ID3DXFileData pxofMesh,
DWORD Options,
IDirect3DDevice9 pD3DDevice,
ID3DXBuffer *ppAdjacency,
ID3DXBuffer *ppMaterials,
ID3DXBuffer *ppEffectInstances,
DWORD *pNumMaterials,
ID3DXMesh *ppMesh);
HRESULT D3DXConcatenateMeshes(
ID3DXMesh * ppMeshes,
UINT NumMeshes,
DWORD Options,
D3DXMATRIX * pGeomXForms,
D3DXMATRIX * pTextureXForms,
D3DVERTEXELEMENT9 * pDecl,
IDirect3DDevice9 pD3DDevice,
ID3DXMesh * ppMeshOut);
HRESULT D3DXDeclaratorFromFVF(DWORD FVF, D3DVERTEXELEMENT9* Declaration);
D3DXQUATERNION* D3DXQuaternionSlerp(D3DXQUATERNION* pOut, D3DXQUATERNION* pQ1, D3DXQUATERNION* pQ2, float t);
D3DXVECTOR3* D3DXVec3CatmullRom(D3DXVECTOR3 *pOut, D3DXVECTOR3 *pV0, D3DXVECTOR3 *pV1, D3DXVECTOR3 *pV2, D3DXVECTOR3 *pV3, float s);
void D3DXQuaternionSquadSetup( D3DXQUATERNION *pAOut,
D3DXQUATERNION *pBOut,
D3DXQUATERNION *pCOut,
D3DXQUATERNION *pQ0,
D3DXQUATERNION *pQ1,
D3DXQUATERNION *pQ2,
D3DXQUATERNION *pQ3);
D3DXQUATERNION* D3DXQuaternionSquad(D3DXQUATERNION *pOut,
D3DXQUATERNION *pQ1,
D3DXQUATERNION *pA,
D3DXQUATERNION *pB,
D3DXQUATERNION *pC,
float t);
HRESULT D3DXMatrixDecompose(D3DXVECTOR3 *pOutScale,
D3DXQUATERNION *pOutRotation,
D3DXVECTOR3 *pOutTranslation,
D3DXMATRIX *pM
);
D3DXQUATERNION* D3DXQuaternionRotationYawPitchRoll(D3DXQUATERNION *pOut,
FLOAT Yaw,
FLOAT Pitch,
FLOAT Roll
);
UINT D3DXGetDeclVertexSize(D3DVERTEXELEMENT9 *pDecl, DWORD Stream );
} // extern(Windows)
D3DXMATRIX* D3DXMatrixIdentity( D3DXMATRIX *pOut )
{
pOut.m[0][1] = pOut.m[0][2] = pOut.m[0][3] =
pOut.m[1][0] = pOut.m[1][2] = pOut.m[1][3] =
pOut.m[2][0] = pOut.m[2][1] = pOut.m[2][3] =
pOut.m[3][0] = pOut.m[3][1] = pOut.m[3][2] = 0.0f;
pOut.m[0][0] = pOut.m[1][1] = pOut.m[2][2] = pOut.m[3][3] = 1.0f;
return pOut;
}
FLOAT D3DXVec3LengthSq(D3DXVECTOR3* v)
{
return (v.x * v.x) + (v.y * v.y) + (v.z * v.z);
}
template DEFINE_GUID(uint d1, ushort d2, ushort d3, ubyte d4, ubyte d5, ubyte d6, ubyte d7, ubyte d8, ubyte d9, ubyte d10, ubyte d11)
{
const GUID DEFINE_GUID = {d1, d2, d3, [d4, d5, d6, d7, d8, d9, d10, d11]};
}
const GUID TID_D3DRMInfo = DEFINE_GUID!(0x2b957100, 0x9e9a, 0x11cf, 0xab, 0x39, 0x0, 0x20, 0xaf, 0x71, 0xe4, 0x33);
const GUID TID_D3DRMMesh = DEFINE_GUID!(0x3d82ab44, 0x62da, 0x11cf, 0xab, 0x39, 0x0, 0x20, 0xaf, 0x71, 0xe4, 0x33);
const GUID TID_D3DRMVector = DEFINE_GUID!(0x3d82ab5e, 0x62da, 0x11cf, 0xab, 0x39, 0x0, 0x20, 0xaf, 0x71, 0xe4, 0x33);
const GUID TID_D3DRMMeshFace = DEFINE_GUID!(0x3d82ab5f, 0x62da, 0x11cf, 0xab, 0x39, 0x0, 0x20, 0xaf, 0x71, 0xe4, 0x33);
const GUID TID_D3DRMMaterial = DEFINE_GUID!(0x3d82ab4d, 0x62da, 0x11cf, 0xab, 0x39, 0x0, 0x20, 0xaf, 0x71, 0xe4, 0x33);
const GUID TID_D3DRMMaterialArray = DEFINE_GUID!(0x35ff44e1, 0x6c7c, 0x11cf, 0x8F, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xa3);
const GUID TID_D3DRMFrame = DEFINE_GUID!(0x3d82ab46, 0x62da, 0x11cf, 0xab, 0x39, 0x0, 0x20, 0xaf, 0x71, 0xe4, 0x33);
const GUID TID_D3DRMFrameTransformMatrix = DEFINE_GUID!(0xf6f23f41, 0x7686, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xa3);
const GUID TID_D3DRMMeshMaterialList = DEFINE_GUID!(0xf6f23f42, 0x7686, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xa3);
const GUID TID_D3DRMMeshTextureCoords = DEFINE_GUID!(0xf6f23f40, 0x7686, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xa3);
const GUID TID_D3DRMMeshNormals = DEFINE_GUID!(0xf6f23f43, 0x7686, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xa3);
const GUID TID_D3DRMCoords2d = DEFINE_GUID!(0xf6f23f44, 0x7686, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xa3);
const GUID TID_D3DRMMatrix4x4 = DEFINE_GUID!(0xf6f23f45, 0x7686, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xa3);
const GUID TID_D3DRMAnimation = DEFINE_GUID!(0x3d82ab4f, 0x62da, 0x11cf, 0xab, 0x39, 0x0, 0x20, 0xaf, 0x71, 0xe4, 0x33);
const GUID TID_D3DRMAnimationSet = DEFINE_GUID!(0x3d82ab50, 0x62da, 0x11cf, 0xab, 0x39, 0x0, 0x20, 0xaf, 0x71, 0xe4, 0x33);
const GUID TID_D3DRMAnimationKey = DEFINE_GUID!(0x10dd46a8, 0x775b, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xA3);
const GUID TID_D3DRMFloatKeys = DEFINE_GUID!(0x10dd46a9, 0x775b, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xA3);
const GUID TID_D3DRMMaterialAmbientColor = DEFINE_GUID!(0x01411840, 0x7786, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xA3);
const GUID TID_D3DRMMaterialDiffuseColor = DEFINE_GUID!(0x01411841, 0x7786, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xA3);
const GUID TID_D3DRMMaterialSpecularColor = DEFINE_GUID!(0x01411842, 0x7786, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xA3);
const GUID TID_D3DRMMaterialEmissiveColor = DEFINE_GUID!(0xd3e16e80, 0x7835, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xa3);
const GUID TID_D3DRMMaterialPower = DEFINE_GUID!(0x01411843, 0x7786, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xA3);
const GUID TID_D3DRMColorRGBA = DEFINE_GUID!(0x35ff44e0, 0x6c7c, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xA3);
const GUID TID_D3DRMColorRGB = DEFINE_GUID!(0xd3e16e81, 0x7835, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xa3);
const GUID TID_D3DRMGuid = DEFINE_GUID!(0xa42790e0, 0x7810, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xa3);
const GUID TID_D3DRMTextureFilename = DEFINE_GUID!(0xa42790e1, 0x7810, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xa3);
const GUID TID_D3DRMTextureReference = DEFINE_GUID!(0xa42790e2, 0x7810, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xa3);
const GUID TID_D3DRMIndexedColor = DEFINE_GUID!(0x1630b820, 0x7842, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xa3);
const GUID TID_D3DRMMeshVertexColors = DEFINE_GUID!(0x1630b821, 0x7842, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xa3);
const GUID TID_D3DRMMaterialWrap = DEFINE_GUID!(0x4885ae60, 0x78e8, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xa3);
const GUID TID_D3DRMBoolean = DEFINE_GUID!(0x537da6a0, 0xca37, 0x11d0, 0x94, 0x1c, 0x0, 0x80, 0xc8, 0xc, 0xfa, 0x7b);
const GUID TID_D3DRMMeshFaceWraps = DEFINE_GUID!(0xed1ec5c0, 0xc0a8, 0x11d0, 0x94, 0x1c, 0x0, 0x80, 0xc8, 0xc, 0xfa, 0x7b);
const GUID TID_D3DRMBoolean2d = DEFINE_GUID!(0x4885ae63, 0x78e8, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xa3);
const GUID TID_D3DRMTimedFloatKeys = DEFINE_GUID!(0xf406b180, 0x7b3b, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xa3);
const GUID TID_D3DRMAnimationOptions = DEFINE_GUID!(0xe2bf56c0, 0x840f, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xa3);
const GUID TID_D3DRMFramePosition = DEFINE_GUID!(0xe2bf56c1, 0x840f, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xa3);
const GUID TID_D3DRMFrameVelocity = DEFINE_GUID!(0xe2bf56c2, 0x840f, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xa3);
const GUID TID_D3DRMFrameRotation = DEFINE_GUID!(0xe2bf56c3, 0x840f, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xa3);
const GUID TID_D3DRMLight = DEFINE_GUID!(0x3d82ab4a, 0x62da, 0x11cf, 0xab, 0x39, 0x0, 0x20, 0xaf, 0x71, 0xe4, 0x33);
const GUID TID_D3DRMCamera = DEFINE_GUID!(0x3d82ab51, 0x62da, 0x11cf, 0xab, 0x39, 0x0, 0x20, 0xaf, 0x71, 0xe4, 0x33);
const GUID TID_D3DRMAppData = DEFINE_GUID!(0xe5745280, 0xb24f, 0x11cf, 0x9d, 0xd5, 0x0, 0xaa, 0x0, 0xa7, 0x1a, 0x2f);
const GUID TID_D3DRMLightUmbra = DEFINE_GUID!(0xaed22740, 0xb31f, 0x11cf, 0x9d, 0xd5, 0x0, 0xaa, 0x0, 0xa7, 0x1a, 0x2f);
const GUID TID_D3DRMLightRange = DEFINE_GUID!(0xaed22742, 0xb31f, 0x11cf, 0x9d, 0xd5, 0x0, 0xaa, 0x0, 0xa7, 0x1a, 0x2f);
const GUID TID_D3DRMLightPenumbra = DEFINE_GUID!(0xaed22741, 0xb31f, 0x11cf, 0x9d, 0xd5, 0x0, 0xaa, 0x0, 0xa7, 0x1a, 0x2f);
const GUID TID_D3DRMLightAttenuation = DEFINE_GUID!(0xa8a98ba0, 0xc5e5, 0x11cf, 0xb9, 0x41, 0x0, 0x80, 0xc8, 0xc, 0xfa, 0x7b);
const GUID TID_D3DRMInlineData = DEFINE_GUID!(0x3a23eea0, 0x94b1, 0x11d0, 0xab, 0x39, 0x0, 0x20, 0xaf, 0x71, 0xe4, 0x33);
const GUID TID_D3DRMUrl = DEFINE_GUID!(0x3a23eea1, 0x94b1, 0x11d0, 0xab, 0x39, 0x0, 0x20, 0xaf, 0x71, 0xe4, 0x33);
const GUID TID_D3DRMProgressiveMesh = DEFINE_GUID!(0x8A63C360, 0x997D, 0x11d0, 0x94, 0x1C, 0x0, 0x80, 0xC8, 0x0C, 0xFA, 0x7B);
const GUID TID_D3DRMExternalVisual = DEFINE_GUID!(0x98116AA0, 0xBDBA, 0x11d1, 0x82, 0xC0, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x71);
const GUID TID_D3DRMStringProperty = DEFINE_GUID!(0x7f0f21e0, 0xbfe1, 0x11d1, 0x82, 0xc0, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x71);
const GUID TID_D3DRMPropertyBag = DEFINE_GUID!(0x7f0f21e1, 0xbfe1, 0x11d1, 0x82, 0xc0, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x71);
const GUID TID_D3DRMRightHanded = DEFINE_GUID!(0x7f5d5ea0, 0xd53a, 0x11d1, 0x82, 0xc0, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x71);
ubyte D3DRM_XTEMPLATES[] =
[
0x78, 0x6f, 0x66, 0x20, 0x30, 0x33, 0x30, 0x32, 0x62,
0x69, 0x6e, 0x20, 0x30, 0x30, 0x36, 0x34, 0x1f, 0, 0x1,
0, 0x6, 0, 0, 0, 0x48, 0x65, 0x61, 0x64, 0x65,
0x72, 0xa, 0, 0x5, 0, 0x43, 0xab, 0x82, 0x3d, 0xda,
0x62, 0xcf, 0x11, 0xab, 0x39, 0, 0x20, 0xaf, 0x71, 0xe4,
0x33, 0x28, 0, 0x1, 0, 0x5, 0, 0, 0, 0x6d,
0x61, 0x6a, 0x6f, 0x72, 0x14, 0, 0x28, 0, 0x1, 0,
0x5, 0, 0, 0, 0x6d, 0x69, 0x6e, 0x6f, 0x72, 0x14,
0, 0x29, 0, 0x1, 0, 0x5, 0, 0, 0, 0x66,
0x6c, 0x61, 0x67, 0x73, 0x14, 0, 0xb, 0, 0x1f, 0,
0x1, 0, 0x6, 0, 0, 0, 0x56, 0x65, 0x63, 0x74,
0x6f, 0x72, 0xa, 0, 0x5, 0, 0x5e, 0xab, 0x82, 0x3d,
0xda, 0x62, 0xcf, 0x11, 0xab, 0x39, 0, 0x20, 0xaf, 0x71,
0xe4, 0x33, 0x2a, 0, 0x1, 0, 0x1, 0, 0, 0,
0x78, 0x14, 0, 0x2a, 0, 0x1, 0, 0x1, 0, 0,
0, 0x79, 0x14, 0, 0x2a, 0, 0x1, 0, 0x1, 0,
0, 0, 0x7a, 0x14, 0, 0xb, 0, 0x1f, 0, 0x1,
0, 0x8, 0, 0, 0, 0x43, 0x6f, 0x6f, 0x72, 0x64,
0x73, 0x32, 0x64, 0xa, 0, 0x5, 0, 0x44, 0x3f, 0xf2,
0xf6, 0x86, 0x76, 0xcf, 0x11, 0x8f, 0x52, 0, 0x40, 0x33,
0x35, 0x94, 0xa3, 0x2a, 0, 0x1, 0, 0x1, 0, 0,
0, 0x75, 0x14, 0, 0x2a, 0, 0x1, 0, 0x1, 0,
0, 0, 0x76, 0x14, 0, 0xb, 0, 0x1f, 0, 0x1,
0, 0x9, 0, 0, 0, 0x4d, 0x61, 0x74, 0x72, 0x69,
0x78, 0x34, 0x78, 0x34, 0xa, 0, 0x5, 0, 0x45, 0x3f,
0xf2, 0xf6, 0x86, 0x76, 0xcf, 0x11, 0x8f, 0x52, 0, 0x40,
0x33, 0x35, 0x94, 0xa3, 0x34, 0, 0x2a, 0, 0x1, 0,
0x6, 0, 0, 0, 0x6d, 0x61, 0x74, 0x72, 0x69, 0x78,
0xe, 0, 0x3, 0, 0x10, 0, 0, 0, 0xf, 0,
0x14, 0, 0xb, 0, 0x1f, 0, 0x1, 0, 0x9, 0,
0, 0, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x52, 0x47, 0x42,
0x41, 0xa, 0, 0x5, 0, 0xe0, 0x44, 0xff, 0x35, 0x7c,
0x6c, 0xcf, 0x11, 0x8f, 0x52, 0, 0x40, 0x33, 0x35, 0x94,
0xa3, 0x2a, 0, 0x1, 0, 0x3, 0, 0, 0, 0x72,
0x65, 0x64, 0x14, 0, 0x2a, 0, 0x1, 0, 0x5, 0,
0, 0, 0x67, 0x72, 0x65, 0x65, 0x6e, 0x14, 0, 0x2a,
0, 0x1, 0, 0x4, 0, 0, 0, 0x62, 0x6c, 0x75,
0x65, 0x14, 0, 0x2a, 0, 0x1, 0, 0x5, 0, 0,
0, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x14, 0, 0xb, 0,
0x1f, 0, 0x1, 0, 0x8, 0, 0, 0, 0x43, 0x6f,
0x6c, 0x6f, 0x72, 0x52, 0x47, 0x42, 0xa, 0, 0x5, 0,
0x81, 0x6e, 0xe1, 0xd3, 0x35, 0x78, 0xcf, 0x11, 0x8f, 0x52,
0, 0x40, 0x33, 0x35, 0x94, 0xa3, 0x2a, 0, 0x1, 0,
0x3, 0, 0, 0, 0x72, 0x65, 0x64, 0x14, 0, 0x2a,
0, 0x1, 0, 0x5, 0, 0, 0, 0x67, 0x72, 0x65,
0x65, 0x6e, 0x14, 0, 0x2a, 0, 0x1, 0, 0x4, 0,
0, 0, 0x62, 0x6c, 0x75, 0x65, 0x14, 0, 0xb, 0,
0x1f, 0, 0x1, 0, 0xc, 0, 0, 0, 0x49, 0x6e,
0x64, 0x65, 0x78, 0x65, 0x64, 0x43, 0x6f, 0x6c, 0x6f, 0x72,
0xa, 0, 0x5, 0, 0x20, 0xb8, 0x30, 0x16, 0x42, 0x78,
0xcf, 0x11, 0x8f, 0x52, 0, 0x40, 0x33, 0x35, 0x94, 0xa3,
0x29, 0, 0x1, 0, 0x5, 0, 0, 0, 0x69, 0x6e,
0x64, 0x65, 0x78, 0x14, 0, 0x1, 0, 0x9, 0, 0,
0, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x52, 0x47, 0x42, 0x41,
0x1, 0, 0xa, 0, 0, 0, 0x69, 0x6e, 0x64, 0x65,
0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x14, 0, 0xb, 0,
0x1f, 0, 0x1, 0, 0x7, 0, 0, 0, 0x42, 0x6f,
0x6f, 0x6c, 0x65, 0x61, 0x6e, 0xa, 0, 0x5, 0, 0xa0,
0xa6, 0x7d, 0x53, 0x37, 0xca, 0xd0, 0x11, 0x94, 0x1c, 0,
0x80, 0xc8, 0xc, 0xfa, 0x7b, 0x29, 0, 0x1, 0, 0x9,
0, 0, 0, 0x74, 0x72, 0x75, 0x65, 0x66, 0x61, 0x6c,
0x73, 0x65, 0x14, 0, 0xb, 0, 0x1f, 0, 0x1, 0,
0x9, 0, 0, 0, 0x42, 0x6f, 0x6f, 0x6c, 0x65, 0x61,
0x6e, 0x32, 0x64, 0xa, 0, 0x5, 0, 0x63, 0xae, 0x85,
0x48, 0xe8, 0x78, 0xcf, 0x11, 0x8f, 0x52, 0, 0x40, 0x33,
0x35, 0x94, 0xa3, 0x1, 0, 0x7, 0, 0, 0, 0x42,
0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x1, 0, 0x1, 0,
0, 0, 0x75, 0x14, 0, 0x1, 0, 0x7, 0, 0,
0, 0x42, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x1, 0,
0x1, 0, 0, 0, 0x76, 0x14, 0, 0xb, 0, 0x1f,
0, 0x1, 0, 0xc, 0, 0, 0, 0x4d, 0x61, 0x74,
0x65, 0x72, 0x69, 0x61, 0x6c, 0x57, 0x72, 0x61, 0x70, 0xa,
0, 0x5, 0, 0x60, 0xae, 0x85, 0x48, 0xe8, 0x78, 0xcf,
0x11, 0x8f, 0x52, 0, 0x40, 0x33, 0x35, 0x94, 0xa3, 0x1,
0, 0x7, 0, 0, 0, 0x42, 0x6f, 0x6f, 0x6c, 0x65,
0x61, 0x6e, 0x1, 0, 0x1, 0, 0, 0, 0x75, 0x14,
0, 0x1, 0, 0x7, 0, 0, 0, 0x42, 0x6f, 0x6f,
0x6c, 0x65, 0x61, 0x6e, 0x1, 0, 0x1, 0, 0, 0,
0x76, 0x14, 0, 0xb, 0, 0x1f, 0, 0x1, 0, 0xf,
0, 0, 0, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65,
0x46, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0xa, 0,
0x5, 0, 0xe1, 0x90, 0x27, 0xa4, 0x10, 0x78, 0xcf, 0x11,
0x8f, 0x52, 0, 0x40, 0x33, 0x35, 0x94, 0xa3, 0x31, 0,
0x1, 0, 0x8, 0, 0, 0, 0x66, 0x69, 0x6c, 0x65,
0x6e, 0x61, 0x6d, 0x65, 0x14, 0, 0xb, 0, 0x1f, 0,
0x1, 0, 0x8, 0, 0, 0, 0x4d, 0x61, 0x74, 0x65,
0x72, 0x69, 0x61, 0x6c, 0xa, 0, 0x5, 0, 0x4d, 0xab,
0x82, 0x3d, 0xda, 0x62, 0xcf, 0x11, 0xab, 0x39, 0, 0x20,
0xaf, 0x71, 0xe4, 0x33, 0x1, 0, 0x9, 0, 0, 0,
0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x52, 0x47, 0x42, 0x41, 0x1,
0, 0x9, 0, 0, 0, 0x66, 0x61, 0x63, 0x65, 0x43,
0x6f, 0x6c, 0x6f, 0x72, 0x14, 0, 0x2a, 0, 0x1, 0,
0x5, 0, 0, 0, 0x70, 0x6f, 0x77, 0x65, 0x72, 0x14,
0, 0x1, 0, 0x8, 0, 0, 0, 0x43, 0x6f, 0x6c,
0x6f, 0x72, 0x52, 0x47, 0x42, 0x1, 0, 0xd, 0, 0,
0, 0x73, 0x70, 0x65, 0x63, 0x75, 0x6c, 0x61, 0x72, 0x43,
0x6f, 0x6c, 0x6f, 0x72, 0x14, 0, 0x1, 0, 0x8, 0,
0, 0, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x52, 0x47, 0x42,
0x1, 0, 0xd, 0, 0, 0, 0x65, 0x6d, 0x69, 0x73,
0x73, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x14,
0, 0xe, 0, 0x12, 0, 0x12, 0, 0x12, 0, 0xf,
0, 0xb, 0, 0x1f, 0, 0x1, 0, 0x8, 0, 0,
0, 0x4d, 0x65, 0x73, 0x68, 0x46, 0x61, 0x63, 0x65, 0xa,
0, 0x5, 0, 0x5f, 0xab, 0x82, 0x3d, 0xda, 0x62, 0xcf,
0x11, 0xab, 0x39, 0, 0x20, 0xaf, 0x71, 0xe4, 0x33, 0x29,
0, 0x1, 0, 0x12, 0, 0, 0, 0x6e, 0x46, 0x61,
0x63, 0x65, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x49, 0x6e,
0x64, 0x69, 0x63, 0x65, 0x73, 0x14, 0, 0x34, 0, 0x29,
0, 0x1, 0, 0x11, 0, 0, 0, 0x66, 0x61, 0x63,
0x65, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x49, 0x6e, 0x64,
0x69, 0x63, 0x65, 0x73, 0xe, 0, 0x1, 0, 0x12, 0,
0, 0, 0x6e, 0x46, 0x61, 0x63, 0x65, 0x56, 0x65, 0x72,
0x74, 0x65, 0x78, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73,
0xf, 0, 0x14, 0, 0xb, 0, 0x1f, 0, 0x1, 0,
0xd, 0, 0, 0, 0x4d, 0x65, 0x73, 0x68, 0x46, 0x61,
0x63, 0x65, 0x57, 0x72, 0x61, 0x70, 0x73, 0xa, 0, 0x5,
0, 0xc0, 0xc5, 0x1e, 0xed, 0xa8, 0xc0, 0xd0, 0x11, 0x94,
0x1c, 0, 0x80, 0xc8, 0xc, 0xfa, 0x7b, 0x29, 0, 0x1,
0, 0xf, 0, 0, 0, 0x6e, 0x46, 0x61, 0x63, 0x65,
0x57, 0x72, 0x61, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73,
0x14, 0, 0x34, 0, 0x1, 0, 0x9, 0, 0, 0,
0x42, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x32, 0x64, 0x1,
0, 0xe, 0, 0, 0, 0x66, 0x61, 0x63, 0x65, 0x57,
0x72, 0x61, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0xe,
0, 0x1, 0, 0xf, 0, 0, 0, 0x6e, 0x46, 0x61,
0x63, 0x65, 0x57, 0x72, 0x61, 0x70, 0x56, 0x61, 0x6c, 0x75,
0x65, 0x73, 0xf, 0, 0x14, 0, 0xb, 0, 0x1f, 0,
0x1, 0, 0x11, 0, 0, 0, 0x4d, 0x65, 0x73, 0x68,
0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x43, 0x6f, 0x6f,
0x72, 0x64, 0x73, 0xa, 0, 0x5, 0, 0x40, 0x3f, 0xf2,
0xf6, 0x86, 0x76, 0xcf, 0x11, 0x8f, 0x52, 0, 0x40, 0x33,
0x35, 0x94, 0xa3, 0x29, 0, 0x1, 0, 0xe, 0, 0,
0, 0x6e, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x43,
0x6f, 0x6f, 0x72, 0x64, 0x73, 0x14, 0, 0x34, 0, 0x1,
0, 0x8, 0, 0, 0, 0x43, 0x6f, 0x6f, 0x72, 0x64,
0x73, 0x32, 0x64, 0x1, 0, 0xd, 0, 0, 0, 0x74,
0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x43, 0x6f, 0x6f, 0x72,
0x64, 0x73, 0xe, 0, 0x1, 0, 0xe, 0, 0, 0,
0x6e, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x43, 0x6f,
0x6f, 0x72, 0x64, 0x73, 0xf, 0, 0x14, 0, 0xb, 0,
0x1f, 0, 0x1, 0, 0x10, 0, 0, 0, 0x4d, 0x65,
0x73, 0x68, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c,
0x4c, 0x69, 0x73, 0x74, 0xa, 0, 0x5, 0, 0x42, 0x3f,
0xf2, 0xf6, 0x86, 0x76, 0xcf, 0x11, 0x8f, 0x52, 0, 0x40,
0x33, 0x35, 0x94, 0xa3, 0x29, 0, 0x1, 0, 0xa, 0,
0, 0, 0x6e, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61,
0x6c, 0x73, 0x14, 0, 0x29, 0, 0x1, 0, 0xc, 0,
0, 0, 0x6e, 0x46, 0x61, 0x63, 0x65, 0x49, 0x6e, 0x64,
0x65, 0x78, 0x65, 0x73, 0x14, 0, 0x34, 0, 0x29, 0,
0x1, 0, 0xb, 0, 0, 0, 0x66, 0x61, 0x63, 0x65,
0x49, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x73, 0xe, 0, 0x1,
0, 0xc, 0, 0, 0, 0x6e, 0x46, 0x61, 0x63, 0x65,
0x49, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x73, 0xf, 0, 0x14,
0, 0xe, 0, 0x1, 0, 0x8, 0, 0, 0, 0x4d,
0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0xf, 0, 0xb,
0, 0x1f, 0, 0x1, 0, 0xb, 0, 0, 0, 0x4d,
0x65, 0x73, 0x68, 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x73,
0xa, 0, 0x5, 0, 0x43, 0x3f, 0xf2, 0xf6, 0x86, 0x76,
0xcf, 0x11, 0x8f, 0x52, 0, 0x40, 0x33, 0x35, 0x94, 0xa3,
0x29, 0, 0x1, 0, 0x8, 0, 0, 0, 0x6e, 0x4e,
0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x73, 0x14, 0, 0x34, 0,
0x1, 0, 0x6, 0, 0, 0, 0x56, 0x65, 0x63, 0x74,
0x6f, 0x72, 0x1, 0, 0x7, 0, 0, 0, 0x6e, 0x6f,
0x72, 0x6d, 0x61, 0x6c, 0x73, 0xe, 0, 0x1, 0, 0x8,
0, 0, 0, 0x6e, 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c,
0x73, 0xf, 0, 0x14, 0, 0x29, 0, 0x1, 0, 0xc,
0, 0, 0, 0x6e, 0x46, 0x61, 0x63, 0x65, 0x4e, 0x6f,
0x72, 0x6d, 0x61, 0x6c, 0x73, 0x14, 0, 0x34, 0, 0x1,
0, 0x8, 0, 0, 0, 0x4d, 0x65, 0x73, 0x68, 0x46,
0x61, 0x63, 0x65, 0x1, 0, 0xb, 0, 0, 0, 0x66,
0x61, 0x63, 0x65, 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x73,
0xe, 0, 0x1, 0, 0xc, 0, 0, 0, 0x6e, 0x46,
0x61, 0x63, 0x65, 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x73,
0xf, 0, 0x14, 0, 0xb, 0, 0x1f, 0, 0x1, 0,
0x10, 0, 0, 0, 0x4d, 0x65, 0x73, 0x68, 0x56, 0x65,
0x72, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x73,
0xa, 0, 0x5, 0, 0x21, 0xb8, 0x30, 0x16, 0x42, 0x78,
0xcf, 0x11, 0x8f, 0x52, 0, 0x40, 0x33, 0x35, 0x94, 0xa3,
0x29, 0, 0x1, 0, 0xd, 0, 0, 0, 0x6e, 0x56,
0x65, 0x72, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72,
0x73, 0x14, 0, 0x34, 0, 0x1, 0, 0xc, 0, 0,
0, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x64, 0x43, 0x6f,
0x6c, 0x6f, 0x72, 0x1, 0, 0xc, 0, 0, 0, 0x76,
0x65, 0x72, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72,
0x73, 0xe, 0, 0x1, 0, 0xd, 0, 0, 0, 0x6e,
0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f,
0x72, 0x73, 0xf, 0, 0x14, 0, 0xb, 0, 0x1f, 0,
0x1, 0, 0x4, 0, 0, 0, 0x4d, 0x65, 0x73, 0x68,
0xa, 0, 0x5, 0, 0x44, 0xab, 0x82, 0x3d, 0xda, 0x62,
0xcf, 0x11, 0xab, 0x39, 0, 0x20, 0xaf, 0x71, 0xe4, 0x33,
0x29, 0, 0x1, 0, 0x9, 0, 0, 0, 0x6e, 0x56,
0x65, 0x72, 0x74, 0x69, 0x63, 0x65, 0x73, 0x14, 0, 0x34,
0, 0x1, 0, 0x6, 0, 0, 0, 0x56, 0x65, 0x63,
0x74, 0x6f, 0x72, 0x1, 0, 0x8, 0, 0, 0, 0x76,
0x65, 0x72, 0x74, 0x69, 0x63, 0x65, 0x73, 0xe, 0, 0x1,
0, 0x9, 0, 0, 0, 0x6e, 0x56, 0x65, 0x72, 0x74,
0x69, 0x63, 0x65, 0x73, 0xf, 0, 0x14, 0, 0x29, 0,
0x1, 0, 0x6, 0, 0, 0, 0x6e, 0x46, 0x61, 0x63,
0x65, 0x73, 0x14, 0, 0x34, 0, 0x1, 0, 0x8, 0,
0, 0, 0x4d, 0x65, 0x73, 0x68, 0x46, 0x61, 0x63, 0x65,
0x1, 0, 0x5, 0, 0, 0, 0x66, 0x61, 0x63, 0x65,
0x73, 0xe, 0, 0x1, 0, 0x6, 0, 0, 0, 0x6e,
0x46, 0x61, 0x63, 0x65, 0x73, 0xf, 0, 0x14, 0, 0xe,
0, 0x12, 0, 0x12, 0, 0x12, 0, 0xf, 0, 0xb,
0, 0x1f, 0, 0x1, 0, 0x14, 0, 0, 0, 0x46,
0x72, 0x61, 0x6d, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66,
0x6f, 0x72, 0x6d, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0xa,
0, 0x5, 0, 0x41, 0x3f, 0xf2, 0xf6, 0x86, 0x76, 0xcf,
0x11, 0x8f, 0x52, 0, 0x40, 0x33, 0x35, 0x94, 0xa3, 0x1,
0, 0x9, 0, 0, 0, 0x4d, 0x61, 0x74, 0x72, 0x69,
0x78, 0x34, 0x78, 0x34, 0x1, 0, 0xb, 0, 0, 0,
0x66, 0x72, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x74, 0x72, 0x69,
0x78, 0x14, 0, 0xb, 0, 0x1f, 0, 0x1, 0, 0x5,
0, 0, 0, 0x46, 0x72, 0x61, 0x6d, 0x65, 0xa, 0,
0x5, 0, 0x46, 0xab, 0x82, 0x3d, 0xda, 0x62, 0xcf, 0x11,
0xab, 0x39, 0, 0x20, 0xaf, 0x71, 0xe4, 0x33, 0xe, 0,
0x12, 0, 0x12, 0, 0x12, 0, 0xf, 0, 0xb, 0,
0x1f, 0, 0x1, 0, 0x9, 0, 0, 0, 0x46, 0x6c,
0x6f, 0x61, 0x74, 0x4b, 0x65, 0x79, 0x73, 0xa, 0, 0x5,
0, 0xa9, 0x46, 0xdd, 0x10, 0x5b, 0x77, 0xcf, 0x11, 0x8f,
0x52, 0, 0x40, 0x33, 0x35, 0x94, 0xa3, 0x29, 0, 0x1,
0, 0x7, 0, 0, 0, 0x6e, 0x56, 0x61, 0x6c, 0x75,
0x65, 0x73, 0x14, 0, 0x34, 0, 0x2a, 0, 0x1, 0,
0x6, 0, 0, 0, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73,
0xe, 0, 0x1, 0, 0x7, 0, 0, 0, 0x6e, 0x56,
0x61, 0x6c, 0x75, 0x65, 0x73, 0xf, 0, 0x14, 0, 0xb,
0, 0x1f, 0, 0x1, 0, 0xe, 0, 0, 0, 0x54,
0x69, 0x6d, 0x65, 0x64, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x4b,
0x65, 0x79, 0x73, 0xa, 0, 0x5, 0, 0x80, 0xb1, 0x6,
0xf4, 0x3b, 0x7b, 0xcf, 0x11, 0x8f, 0x52, 0, 0x40, 0x33,
0x35, 0x94, 0xa3, 0x29, 0, 0x1, 0, 0x4, 0, 0,
0, 0x74, 0x69, 0x6d, 0x65, 0x14, 0, 0x1, 0, 0x9,
0, 0, 0, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x4b, 0x65,
0x79, 0x73, 0x1, 0, 0x6, 0, 0, 0, 0x74, 0x66,
0x6b, 0x65, 0x79, 0x73, 0x14, 0, 0xb, 0, 0x1f, 0,
0x1, 0, 0xc, 0, 0, 0, 0x41, 0x6e, 0x69, 0x6d,
0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0xa, 0,
0x5, 0, 0xa8, 0x46, 0xdd, 0x10, 0x5b, 0x77, 0xcf, 0x11,
0x8f, 0x52, 0, 0x40, 0x33, 0x35, 0x94, 0xa3, 0x29, 0,
0x1, 0, 0x7, 0, 0, 0, 0x6b, 0x65, 0x79, 0x54,
0x79, 0x70, 0x65, 0x14, 0, 0x29, 0, 0x1, 0, 0x5,
0, 0, 0, 0x6e, 0x4b, 0x65, 0x79, 0x73, 0x14, 0,
0x34, 0, 0x1, 0, 0xe, 0, 0, 0, 0x54, 0x69,
0x6d, 0x65, 0x64, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x4b, 0x65,
0x79, 0x73, 0x1, 0, 0x4, 0, 0, 0, 0x6b, 0x65,
0x79, 0x73, 0xe, 0, 0x1, 0, 0x5, 0, 0, 0,
0x6e, 0x4b, 0x65, 0x79, 0x73, 0xf, 0, 0x14, 0, 0xb,
0, 0x1f, 0, 0x1, 0, 0x10, 0, 0, 0, 0x41,
0x6e, 0x69, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70,
0x74, 0x69, 0x6f, 0x6e, 0x73, 0xa, 0, 0x5, 0, 0xc0,
0x56, 0xbf, 0xe2, 0xf, 0x84, 0xcf, 0x11, 0x8f, 0x52, 0,
0x40, 0x33, 0x35, 0x94, 0xa3, 0x29, 0, 0x1, 0, 0xa,
0, 0, 0, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6c, 0x6f,
0x73, 0x65, 0x64, 0x14, 0, 0x29, 0, 0x1, 0, 0xf,
0, 0, 0, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f,
0x6e, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x14, 0,
0xb, 0, 0x1f, 0, 0x1, 0, 0x9, 0, 0, 0,
0x41, 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0xa,
0, 0x5, 0, 0x4f, 0xab, 0x82, 0x3d, 0xda, 0x62, 0xcf,
0x11, 0xab, 0x39, 0, 0x20, 0xaf, 0x71, 0xe4, 0x33, 0xe,
0, 0x12, 0, 0x12, 0, 0x12, 0, 0xf, 0, 0xb,
0, 0x1f, 0, 0x1, 0, 0xc, 0, 0, 0, 0x41,
0x6e, 0x69, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65,
0x74, 0xa, 0, 0x5, 0, 0x50, 0xab, 0x82, 0x3d, 0xda,
0x62, 0xcf, 0x11, 0xab, 0x39, 0, 0x20, 0xaf, 0x71, 0xe4,
0x33, 0xe, 0, 0x1, 0, 0x9, 0, 0, 0, 0x41,
0x6e, 0x69, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0xf, 0,
0xb, 0, 0x1f, 0, 0x1, 0, 0xa, 0, 0, 0,
0x49, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x44, 0x61, 0x74, 0x61,
0xa, 0, 0x5, 0, 0xa0, 0xee, 0x23, 0x3a, 0xb1, 0x94,
0xd0, 0x11, 0xab, 0x39, 0, 0x20, 0xaf, 0x71, 0xe4, 0x33,
0xe, 0, 0x1, 0, 0x6, 0, 0, 0, 0x42, 0x49,
0x4e, 0x41, 0x52, 0x59, 0xf, 0, 0xb, 0, 0x1f, 0,
0x1, 0, 0x3, 0, 0, 0, 0x55, 0x72, 0x6c, 0xa,
0, 0x5, 0, 0xa1, 0xee, 0x23, 0x3a, 0xb1, 0x94, 0xd0,
0x11, 0xab, 0x39, 0, 0x20, 0xaf, 0x71, 0xe4, 0x33, 0x29,
0, 0x1, 0, 0x5, 0, 0, 0, 0x6e, 0x55, 0x72,
0x6c, 0x73, 0x14, 0, 0x34, 0, 0x31, 0, 0x1, 0,
0x4, 0, 0, 0, 0x75, 0x72, 0x6c, 0x73, 0xe, 0,
0x1, 0, 0x5, 0, 0, 0, 0x6e, 0x55, 0x72, 0x6c,
0x73, 0xf, 0, 0x14, 0, 0xb, 0, 0x1f, 0, 0x1,
0, 0xf, 0, 0, 0, 0x50, 0x72, 0x6f, 0x67, 0x72,
0x65, 0x73, 0x73, 0x69, 0x76, 0x65, 0x4d, 0x65, 0x73, 0x68,
0xa, 0, 0x5, 0, 0x60, 0xc3, 0x63, 0x8a, 0x7d, 0x99,
0xd0, 0x11, 0x94, 0x1c, 0, 0x80, 0xc8, 0xc, 0xfa, 0x7b,
0xe, 0, 0x1, 0, 0x3, 0, 0, 0, 0x55, 0x72,
0x6c, 0x13, 0, 0x1, 0, 0xa, 0, 0, 0, 0x49,
0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x44, 0x61, 0x74, 0x61, 0xf,
0, 0xb, 0, 0x1f, 0, 0x1, 0, 0x4, 0, 0,
0, 0x47, 0x75, 0x69, 0x64, 0xa, 0, 0x5, 0, 0xe0,
0x90, 0x27, 0xa4, 0x10, 0x78, 0xcf, 0x11, 0x8f, 0x52, 0,
0x40, 0x33, 0x35, 0x94, 0xa3, 0x29, 0, 0x1, 0, 0x5,
0, 0, 0, 0x64, 0x61, 0x74, 0x61, 0x31, 0x14, 0,
0x28, 0, 0x1, 0, 0x5, 0, 0, 0, 0x64, 0x61,
0x74, 0x61, 0x32, 0x14, 0, 0x28, 0, 0x1, 0, 0x5,
0, 0, 0, 0x64, 0x61, 0x74, 0x61, 0x33, 0x14, 0,
0x34, 0, 0x2d, 0, 0x1, 0, 0x5, 0, 0, 0,
0x64, 0x61, 0x74, 0x61, 0x34, 0xe, 0, 0x3, 0, 0x8,
0, 0, 0, 0xf, 0, 0x14, 0, 0xb, 0, 0x1f,
0, 0x1, 0, 0xe, 0, 0, 0, 0x53, 0x74, 0x72,
0x69, 0x6e, 0x67, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74,
0x79, 0xa, 0, 0x5, 0, 0xe0, 0x21, 0xf, 0x7f, 0xe1,
0xbf, 0xd1, 0x11, 0x82, 0xc0, 0, 0xa0, 0xc9, 0x69, 0x72,
0x71, 0x31, 0, 0x1, 0, 0x3, 0, 0, 0, 0x6b,
0x65, 0x79, 0x14, 0, 0x31, 0, 0x1, 0, 0x5, 0,
0, 0, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x14, 0, 0xb,
0, 0x1f, 0, 0x1, 0, 0xb, 0, 0, 0, 0x50,
0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x42, 0x61, 0x67,
0xa, 0, 0x5, 0, 0xe1, 0x21, 0xf, 0x7f, 0xe1, 0xbf,
0xd1, 0x11, 0x82, 0xc0, 0, 0xa0, 0xc9, 0x69, 0x72, 0x71,
0xe, 0, 0x1, 0, 0xe, 0, 0, 0, 0x53, 0x74,
0x72, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72,
0x74, 0x79, 0xf, 0, 0xb, 0, 0x1f, 0, 0x1, 0,
0xe, 0, 0, 0, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e,
0x61, 0x6c, 0x56, 0x69, 0x73, 0x75, 0x61, 0x6c, 0xa, 0,
0x5, 0, 0xa0, 0x6a, 0x11, 0x98, 0xba, 0xbd, 0xd1, 0x11,
0x82, 0xc0, 0, 0xa0, 0xc9, 0x69, 0x72, 0x71, 0x1, 0,
0x4, 0, 0, 0, 0x47, 0x75, 0x69, 0x64, 0x1, 0,
0x12, 0, 0, 0, 0x67, 0x75, 0x69, 0x64, 0x45, 0x78,
0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x56, 0x69, 0x73, 0x75,
0x61, 0x6c, 0x14, 0, 0xe, 0, 0x12, 0, 0x12, 0,
0x12, 0, 0xf, 0, 0xb, 0, 0x1f, 0, 0x1, 0,
0xb, 0, 0, 0, 0x52, 0x69, 0x67, 0x68, 0x74, 0x48,
0x61, 0x6e, 0x64, 0x65, 0x64, 0xa, 0, 0x5, 0, 0xa0,
0x5e, 0x5d, 0x7f, 0x3a, 0xd5, 0xd1, 0x11, 0x82, 0xc0, 0,
0xa0, 0xc9, 0x69, 0x72, 0x71, 0x29, 0, 0x1, 0, 0xc,
0, 0, 0, 0x62, 0x52, 0x69, 0x67, 0x68, 0x74, 0x48,
0x61, 0x6e, 0x64, 0x65, 0x64, 0x14, 0, 0xb, 0
];
const GUID DXFILEOBJ_XSkinMeshHeader = DEFINE_GUID!(0x3cf169ce, 0xff7c, 0x44ab, 0x93, 0xc0, 0xf7, 0x8f, 0x62, 0xd1, 0x72, 0xe2);
const GUID DXFILEOBJ_VertexDuplicationIndices = DEFINE_GUID!(0xb8d65549, 0xd7c9, 0x4995, 0x89, 0xcf, 0x53, 0xa9, 0xa8, 0xb0, 0x31, 0xe3);
const GUID DXFILEOBJ_FaceAdjacency = DEFINE_GUID!(0xa64c844a, 0xe282, 0x4756, 0x8b, 0x80, 0x25, 0xc, 0xde, 0x4, 0x39, 0x8c);
const GUID DXFILEOBJ_SkinWeights = DEFINE_GUID!(0x6f0d123b, 0xbad2, 0x4167, 0xa0, 0xd0, 0x80, 0x22, 0x4f, 0x25, 0xfa, 0xbb);
const GUID DXFILEOBJ_Patch = DEFINE_GUID!(0xa3eb5d44, 0xfc22, 0x429d, 0x9a, 0xfb, 0x32, 0x21, 0xcb, 0x97, 0x19, 0xa6);
const GUID DXFILEOBJ_PatchMesh = DEFINE_GUID!(0xd02c95cc, 0xedba, 0x4305, 0x9b, 0x5d, 0x18, 0x20, 0xd7, 0x70, 0x4b, 0xbf);
const GUID DXFILEOBJ_PatchMesh9 = DEFINE_GUID!(0xb9ec94e1, 0xb9a6, 0x4251, 0xba, 0x18, 0x94, 0x89, 0x3f, 0x2, 0xc0, 0xea);
const GUID DXFILEOBJ_PMInfo = DEFINE_GUID!(0xb6c3e656, 0xec8b, 0x4b92, 0x9b, 0x62, 0x68, 0x16, 0x59, 0x52, 0x29, 0x47);
const GUID DXFILEOBJ_PMAttributeRange = DEFINE_GUID!(0x917e0427, 0xc61e, 0x4a14, 0x9c, 0x64, 0xaf, 0xe6, 0x5f, 0x9e, 0x98, 0x44);
const GUID DXFILEOBJ_PMVSplitRecord = DEFINE_GUID!(0x574ccc14, 0xf0b3, 0x4333, 0x82, 0x2d, 0x93, 0xe8, 0xa8, 0xa0, 0x8e, 0x4c);
const GUID DXFILEOBJ_FVFData = DEFINE_GUID!(0xb6e70a0e, 0x8ef9, 0x4e83, 0x94, 0xad, 0xec, 0xc8, 0xb0, 0xc0, 0x48, 0x97);
const GUID DXFILEOBJ_VertexElement = DEFINE_GUID!(0xf752461c, 0x1e23, 0x48f6, 0xb9, 0xf8, 0x83, 0x50, 0x85, 0xf, 0x33, 0x6f);
const GUID DXFILEOBJ_DeclData = DEFINE_GUID!(0xbf22e553, 0x292c, 0x4781, 0x9f, 0xea, 0x62, 0xbd, 0x55, 0x4b, 0xdd, 0x93);
const GUID DXFILEOBJ_EffectFloats = DEFINE_GUID!(0xf1cfe2b3, 0xde3, 0x4e28, 0xaf, 0xa1, 0x15, 0x5a, 0x75, 0xa, 0x28, 0x2d);
const GUID DXFILEOBJ_EffectString = DEFINE_GUID!(0xd55b097e, 0xbdb6, 0x4c52, 0xb0, 0x3d, 0x60, 0x51, 0xc8, 0x9d, 0xe, 0x42);
const GUID DXFILEOBJ_EffectDWord = DEFINE_GUID!(0x622c0ed0, 0x956e, 0x4da9, 0x90, 0x8a, 0x2a, 0xf9, 0x4f, 0x3c, 0xe7, 0x16);
const GUID DXFILEOBJ_EffectParamFloats = DEFINE_GUID!(0x3014b9a0, 0x62f5, 0x478c, 0x9b, 0x86, 0xe4, 0xac, 0x9f, 0x4e, 0x41, 0x8b);
const GUID DXFILEOBJ_EffectParamString = DEFINE_GUID!(0x1dbc4c88, 0x94c1, 0x46ee, 0x90, 0x76, 0x2c, 0x28, 0x81, 0x8c, 0x94, 0x81);
const GUID DXFILEOBJ_EffectParamDWord = DEFINE_GUID!(0xe13963bc, 0xae51, 0x4c5d, 0xb0, 0xf, 0xcf, 0xa3, 0xa9, 0xd9, 0x7c, 0xe5);
const GUID DXFILEOBJ_EffectInstance = DEFINE_GUID!(0xe331f7e4, 0x559, 0x4cc2, 0x8e, 0x99, 0x1c, 0xec, 0x16, 0x57, 0x92, 0x8f);
const GUID DXFILEOBJ_AnimTicksPerSecond = DEFINE_GUID!(0x9e415a43, 0x7ba6, 0x4a73, 0x87, 0x43, 0xb7, 0x3d, 0x47, 0xe8, 0x84, 0x76);
const GUID DXFILEOBJ_CompressedAnimationSet = DEFINE_GUID!(0x7f9b00b3, 0xf125, 0x4890, 0x87, 0x6e, 0x1c, 0x42, 0xbf, 0x69, 0x7c, 0x4d);
align(1) struct XFILECOMPRESSEDANIMATIONSET
{
DWORD CompressedBlockSize;
FLOAT TicksPerSec;
DWORD PlaybackType;
DWORD BufferLength;
}
const char[] XSKINEXP_TEMPLATES =
"xof 0303txt 0032
template XSkinMeshHeader
{
<3CF169CE-FF7C-44ab-93C0-F78F62D172E2>
WORD nMaxSkinWeightsPerVertex;
WORD nMaxSkinWeightsPerFace;
WORD nBones;
}
template VertexDuplicationIndices
{
<B8D65549-D7C9-4995-89CF-53A9A8B031E3>
DWORD nIndices;
DWORD nOriginalVertices;
array DWORD indices[nIndices];
}
template FaceAdjacency
{
<A64C844A-E282-4756-8B80-250CDE04398C>
DWORD nIndices;
array DWORD indices[nIndices];
}
template SkinWeights
{
<6F0D123B-BAD2-4167-A0D0-80224F25FABB>
STRING transformNodeName;
DWORD nWeights;
array DWORD vertexIndices[nWeights];
array float weights[nWeights];
Matrix4x4 matrixOffset;
}
template Patch
{
<A3EB5D44-FC22-429D-9AFB-3221CB9719A6>
DWORD nControlIndices;
array DWORD controlIndices[nControlIndices];
}
template PatchMesh
{
<D02C95CC-EDBA-4305-9B5D-1820D7704BBF>
DWORD nVertices;
array Vector vertices[nVertices];
DWORD nPatches;
array Patch patches[nPatches];
[ ... ]
}
template PatchMesh9
{
<B9EC94E1-B9A6-4251-BA18-94893F02C0EA>
DWORD Type;
DWORD Degree;
DWORD Basis;
DWORD nVertices;
array Vector vertices[nVertices];
DWORD nPatches;
array Patch patches[nPatches];
[ ... ]
} "
"template EffectFloats
{
<F1CFE2B3-0DE3-4e28-AFA1-155A750A282D>
DWORD nFloats;
array float Floats[nFloats];
}
template EffectString
{
<D55B097E-BDB6-4c52-B03D-6051C89D0E42>
STRING Value;
}
template EffectDWord
{
<622C0ED0-956E-4da9-908A-2AF94F3CE716>
DWORD Value;
} "
"template EffectParamFloats
{
<3014B9A0-62F5-478c-9B86-E4AC9F4E418B>
STRING ParamName;
DWORD nFloats;
array float Floats[nFloats];
} "
"template EffectParamString
{
<1DBC4C88-94C1-46ee-9076-2C28818C9481>
STRING ParamName;
STRING Value;
}
template EffectParamDWord
{
<E13963BC-AE51-4c5d-B00F-CFA3A9D97CE5>
STRING ParamName;
DWORD Value;
}
template EffectInstance
{
<E331F7E4-0559-4cc2-8E99-1CEC1657928F>
STRING EffectFilename;
[ ... ]
} "
"template AnimTicksPerSecond
{
<9E415A43-7BA6-4a73-8743-B73D47E88476>
DWORD AnimTicksPerSecond;
}
template CompressedAnimationSet
{
<7F9B00B3-F125-4890-876E-1C42BF697C4D>
DWORD CompressedBlockSize;
FLOAT TicksPerSec;
DWORD PlaybackType;
DWORD BufferLength;
array DWORD CompressedData[BufferLength];
} ";
const char[] XEXTENSIONS_TEMPLATES =
"xof 0303txt 0032
template FVFData
{
<B6E70A0E-8EF9-4e83-94AD-ECC8B0C04897>
DWORD dwFVF;
DWORD nDWords;
array DWORD data[nDWords];
}
template VertexElement
{
<F752461C-1E23-48f6-B9F8-8350850F336F>
DWORD Type;
DWORD Method;
DWORD Usage;
DWORD UsageIndex;
}
template DeclData
{
<BF22E553-292C-4781-9FEA-62BD554BDD93>
DWORD nElements;
array VertexElement Elements[nElements];
DWORD nDWords;
array DWORD data[nDWords];
}
template PMAttributeRange
{
<917E0427-C61E-4a14-9C64-AFE65F9E9844>
DWORD iFaceOffset;
DWORD nFacesMin;
DWORD nFacesMax;
DWORD iVertexOffset;
DWORD nVerticesMin;
DWORD nVerticesMax;
}
template PMVSplitRecord
{
<574CCC14-F0B3-4333-822D-93E8A8A08E4C>
DWORD iFaceCLW;
DWORD iVlrOffset;
DWORD iCode;
}
template PMInfo
{
<B6C3E656-EC8B-4b92-9B62-681659522947>
DWORD nAttributes;
array PMAttributeRange attributeRanges[nAttributes];
DWORD nMaxValence;
DWORD nMinLogicalVertices;
DWORD nMaxLogicalVertices;
DWORD nVSplits;
array PMVSplitRecord splitRecords[nVSplits];
DWORD nAttributeMispredicts;
array DWORD attributeMispredicts[nAttributeMispredicts];
} ";
enum : uint
{
D3DXF_FILEFORMAT_BINARY = 0,
D3DXF_FILEFORMAT_TEXT = 1,
D3DXF_FILEFORMAT_COMPRESSED = 2
}
alias uint D3DXF_FILEFORMAT;
enum : uint
{
D3DXF_FILESAVE_TOFILE = 0x00L,
D3DXF_FILESAVE_TOWFILE = 0x01L
}
alias uint D3DXF_FILESAVEOPTIONS;
enum : uint
{
D3DXF_FILELOAD_FROMFILE = 0x00L,
D3DXF_FILELOAD_FROMWFILE = 0x01L,
D3DXF_FILELOAD_FROMRESOURCE = 0x02L,
D3DXF_FILELOAD_FROMMEMORY = 0x03L
}
alias uint D3DXF_FILELOADOPTIONS;
struct D3DXF_FILELOADRESOURCE
{
HMODULE hModule; // Desc
LPCSTR lpName; // Desc
LPCSTR lpType; // Desc
}
struct D3DXF_FILELOADMEMORY
{
LPCVOID lpMemory; // Desc
size_t dSize; // Desc
}
const GUID IID_ID3DXFile = DEFINE_GUID!(0xcef08cf9, 0x7b4f, 0x4429, 0x96, 0x24, 0x2a, 0x69, 0x0a, 0x93, 0x32, 0x01 );
const GUID IID_ID3DXFileSaveObject = DEFINE_GUID!(0xcef08cfa, 0x7b4f, 0x4429, 0x96, 0x24, 0x2a, 0x69, 0x0a, 0x93, 0x32, 0x01 );
const GUID IID_ID3DXFileSaveData = DEFINE_GUID!(0xcef08cfb, 0x7b4f, 0x4429, 0x96, 0x24, 0x2a, 0x69, 0x0a, 0x93, 0x32, 0x01 );
const GUID IID_ID3DXFileEnumObject = DEFINE_GUID!(0xcef08cfc, 0x7b4f, 0x4429, 0x96, 0x24, 0x2a, 0x69, 0x0a, 0x93, 0x32, 0x01 );
const GUID IID_ID3DXFileData = DEFINE_GUID!(0xcef08cfd, 0x7b4f, 0x4429, 0x96, 0x24, 0x2a, 0x69, 0x0a, 0x93, 0x32, 0x01 );
interface ID3DXFile : IUnknown
{
HRESULT CreateEnumObject(LPCVOID, D3DXF_FILELOADOPTIONS, ID3DXFileEnumObject*);
HRESULT CreateSaveObject(LPCVOID, D3DXF_FILESAVEOPTIONS, D3DXF_FILEFORMAT, ID3DXFileSaveObject*);
HRESULT RegisterTemplates(LPCVOID, size_t);
HRESULT RegisterEnumTemplates(ID3DXFileEnumObject);
}
interface ID3DXFileSaveObject : IUnknown
{
HRESULT GetFile(ID3DXFile*);
HRESULT AddDataObject(GUID*, LPCSTR, GUID*, size_t, LPCVOID, ID3DXFileSaveData*);
HRESULT Save();
}
interface ID3DXFileSaveData : IUnknown
{
HRESULT GetSave(ID3DXFileSaveObject*);
HRESULT GetName(LPSTR, size_t*);
HRESULT GetId(GUID*);
HRESULT GetType(GUID*);
HRESULT AddDataObject(GUID*, LPCSTR, GUID*, size_t, LPCVOID, ID3DXFileSaveData*);
HRESULT AddDataReference(LPCSTR, GUID* );
}
interface ID3DXFileEnumObject : IUnknown
{
HRESULT GetFile(ID3DXFile*);
HRESULT GetChildren(size_t*);
HRESULT GetChild(size_t, ID3DXFileData*);
HRESULT GetDataObjectById(REFGUID, ID3DXFileData*);
HRESULT GetDataObjectByName(LPCSTR, ID3DXFileData*);
}
interface ID3DXFileData : IUnknown
{
HRESULT GetEnum(ID3DXFileEnumObject*);
HRESULT GetName(LPSTR, size_t*);
HRESULT GetId(GUID*);
HRESULT Lock(size_t*, LPCVOID*);
HRESULT Unlock();
HRESULT GetType(GUID*);
BOOL IsReference();
HRESULT GetChildren(size_t*);
HRESULT GetChild(size_t, ID3DXFileData*);
}