[PATCH 1/2] dx8vb: Add D3DX8 coclass plus ID3DX8 interface and its dependencies

Fabian Maurer dark.shadow4 at web.de
Sat Oct 14 08:46:16 CDT 2017


Signed-off-by: Fabian Maurer <dark.shadow4 at web.de>
---
 dlls/dx8vb/Makefile.in |    2 +
 dlls/dx8vb/dx8vb.idl   | 2748 ++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 2750 insertions(+)
 create mode 100644 dlls/dx8vb/dx8vb.idl

diff --git a/dlls/dx8vb/Makefile.in b/dlls/dx8vb/Makefile.in
index d9f93f96f1..e0a083aa3d 100644
--- a/dlls/dx8vb/Makefile.in
+++ b/dlls/dx8vb/Makefile.in
@@ -3,3 +3,5 @@ IMPORTS   = uuid ole32
 
 C_SRCS = \
 	main.c
+
+IDL_SRCS = dx8vb.idl
diff --git a/dlls/dx8vb/dx8vb.idl b/dlls/dx8vb/dx8vb.idl
new file mode 100644
index 0000000000..b5f6bea851
--- /dev/null
+++ b/dlls/dx8vb/dx8vb.idl
@@ -0,0 +1,2748 @@
+/*
+ * Copyright 2017 Fabian Maurer
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#pragma makedep register
+
+#include "unknwn.idl"
+
+interface Direct3DDevice8;
+interface DirectSoundSecondaryBuffer8;
+interface DirectSoundPrimaryBuffer8;
+interface DirectSound8;
+interface DirectMusicBand8;
+interface DirectMusicSegment8;
+interface DirectPlayVoiceServer8;
+
+//Enumerations
+
+typedef enum CONST_D3DPOOL {
+    D3DPOOL_DEFAULT = 0,
+    D3DPOOL_MANAGED = 1,
+    D3DPOOL_SYSTEMMEM = 2,
+    D3DPOOL_FORCE_DWORD = 2147483647
+} CONST_D3DPOOL;
+
+typedef enum {
+    D3DFMT_UNKNOWN = 0,
+    D3DFMT_R8G8B8 = 20,
+    D3DFMT_A8R8G8B8 = 21,
+    D3DFMT_X8R8G8B8 = 22,
+    D3DFMT_R5G6B5 = 23,
+    D3DFMT_X1R5G5B5 = 24,
+    D3DFMT_A1R5G5B5 = 25,
+    D3DFMT_A4R4G4B4 = 26,
+    D3DFMT_R3G3B2 = 27,
+    D3DFMT_A8 = 28,
+    D3DFMT_A8R3G3B2 = 29,
+    D3DFMT_X4R4G4B4 = 30,
+    D3DFMT_A8P8 = 40,
+    D3DFMT_P8 = 41,
+    D3DFMT_L8 = 50,
+    D3DFMT_A8L8 = 51,
+    D3DFMT_A4L4 = 52,
+    D3DFMT_V8U8 = 60,
+    D3DFMT_L6V5U5 = 61,
+    D3DFMT_X8L8V8U8 = 62,
+    D3DFMT_Q8W8V8U8 = 63,
+    D3DFMT_V16U16 = 64,
+    D3DFMT_W11V11U10 = 65,
+    D3DFMT_UYVY = 1498831189,
+    D3DFMT_YUY2 = 844715353,
+    D3DFMT_DXT1 = 827611204,
+    D3DFMT_DXT2 = 844388420,
+    D3DFMT_DXT3 = 861165636,
+    D3DFMT_DXT4 = 877942852,
+    D3DFMT_DXT5 = 894720068,
+    D3DFMT_D16_LOCKABLE = 70,
+    D3DFMT_D32 = 71,
+    D3DFMT_D15S1 = 73,
+    D3DFMT_D24S8 = 75,
+    D3DFMT_D24X8 = 77,
+    D3DFMT_D24X4S4 = 79,
+    D3DFMT_D16 = 80,
+    D3DFMT_VERTEXDATA = 100,
+    D3DFMT_INDEX16 = 101,
+    D3DFMT_INDEX32 = 102,
+    D3DFMT_FORCE_DWORD = 2147483647
+} CONST_D3DFORMAT;
+
+typedef enum {
+    D3DDEVTYPE_HAL = 1,
+    D3DDEVTYPE_REF = 2,
+    D3DDEVTYPE_SW = 3,
+    D3DDEVTYPE_FORCE_DWORD = 2147483647
+} CONST_D3DDEVTYPE;
+
+typedef enum {
+    D3DRTYPE_SURFACE = 1,
+    D3DRTYPE_VOLUME = 2,
+    D3DRTYPE_TEXTURE = 3,
+    D3DRTYPE_VOLUMETEXTURE = 4,
+    D3DRTYPE_CUBETEXTURE = 5,
+    D3DRTYPE_VERTEXBUFFER = 6,
+    D3DRTYPE_INDEXBUFFER = 7,
+    D3DRTYPE_FORCE_DWORD = 2147483647
+} CONST_D3DRESOURCETYPE;
+
+typedef enum {
+    D3DMULTISAMPLE_NONE = 0,
+    D3DMULTISAMPLE_2_SAMPLES = 2,
+    D3DMULTISAMPLE_3_SAMPLES = 3,
+    D3DMULTISAMPLE_4_SAMPLES = 4,
+    D3DMULTISAMPLE_5_SAMPLES = 5,
+    D3DMULTISAMPLE_6_SAMPLES = 6,
+    D3DMULTISAMPLE_7_SAMPLES = 7,
+    D3DMULTISAMPLE_8_SAMPLES = 8,
+    D3DMULTISAMPLE_9_SAMPLES = 9,
+    D3DMULTISAMPLE_10_SAMPLES = 10,
+    D3DMULTISAMPLE_11_SAMPLES = 11,
+    D3DMULTISAMPLE_12_SAMPLES = 12,
+    D3DMULTISAMPLE_13_SAMPLES = 13,
+    D3DMULTISAMPLE_14_SAMPLES = 14,
+    D3DMULTISAMPLE_15_SAMPLES = 15,
+    D3DMULTISAMPLE_16_SAMPLES = 16,
+    D3DMULTISAMPLE_FORCE_DWORD = -1
+} CONST_D3DMULTISAMPLE_TYPE;
+
+typedef enum {
+    D3DCREATE_FPU_PRESERVE = 2,
+    D3DCREATE_MULTITHREADED = 4,
+    D3DCREATE_PUREDEVICE = 16,
+    D3DCREATE_SOFTWARE_VERTEXPROCESSING = 32,
+    D3DCREATE_HARDWARE_VERTEXPROCESSING = 64,
+    D3DCREATE_MIXED_VERTEXPROCESSING = 128
+} CONST_D3DCREATEFLAGS;
+
+typedef enum {
+    D3DSWAPEFFECT_DISCARD = 1,
+    D3DSWAPEFFECT_FLIP = 2,
+    D3DSWAPEFFECT_COPY = 3,
+    D3DSWAPEFFECT_COPY_VSYNC = 4,
+    D3DSWAPEFFECT_FORCE_DWORD = 2147483647
+} CONST_D3DSWAPEFFECT;
+
+typedef enum {
+    D3DUCURSOR_DEFAULT = 0,
+    D3DUCURSOR_IMMEDIATE_UPDATE = 1
+} CONST_D3DSCPFLAGS;
+
+typedef enum {
+    D3DBACKBUFFER_TYPE_MONO = 0,
+    D3DBACKBUFFER_TYPE_LEFT = 1,
+    D3DBACKBUFFER_TYPE_RIGHT = 2,
+    D3DBACKBUFFER_TYPE_FORCE_DWORD = 2147483647
+} CONST_D3DBACKBUFFERTYPE;
+
+typedef enum {
+    D3DCUBEMAP_FACE_POSITIVE_X = 0,
+    D3DCUBEMAP_FACE_NEGATIVE_X = 1,
+    D3DCUBEMAP_FACE_POSITIVE_Y = 2,
+    D3DCUBEMAP_FACE_NEGATIVE_Y = 3,
+    D3DCUBEMAP_FACE_POSITIVE_Z = 4,
+    D3DCUBEMAP_FACE_NEGATIVE_Z = 5,
+    D3DCUBEMAP_FACE_FORCE_DWORD = 2147483647
+} CONST_D3DCUBEMAP_FACES;
+
+typedef enum {
+    D3DCLEAR_TARGET = 1,
+    D3DCLEAR_ZBUFFER = 2,
+    D3DCLEAR_STENCIL = 4,
+    D3DCLEAR_FORCE_DWORD = 2147483647
+} CONST_D3DCLEARFLAGS;
+
+typedef enum {
+    D3DTS_WORLD = 256,
+    D3DTS_VIEW = 2,
+    D3DTS_PROJECTION = 3,
+    D3DTS_WORLD1 = 257,
+    D3DTS_WORLD2 = 258,
+    D3DTS_WORLD3 = 259,
+    D3DTS_TEXTURE0 = 16,
+    D3DTS_TEXTURE1 = 17,
+    D3DTS_TEXTURE2 = 18,
+    D3DTS_TEXTURE3 = 19,
+    D3DTS_TEXTURE4 = 20,
+    D3DTS_TEXTURE5 = 21,
+    D3DTS_TEXTURE6 = 22,
+    D3DTS_TEXTURE7 = 23,
+    D3DTS_FORCE_DWORD = 2147483647
+} CONST_D3DTRANSFORMSTATETYPE;
+
+typedef enum {
+    D3DLIGHT_POINT = 1,
+    D3DLIGHT_SPOT = 2,
+    D3DLIGHT_DIRECTIONAL = 3,
+    D3DLIGHT_FORCE_DWORD = 2147483647
+} CONST_D3DLIGHTTYPE;
+
+typedef enum {
+    D3DRS_ZENABLE = 7,
+    D3DRS_FILLMODE = 8,
+    D3DRS_SHADEMODE = 9,
+    D3DRS_LINEPATTERN = 10,
+    D3DRS_ZWRITEENABLE = 14,
+    D3DRS_ALPHATESTENABLE = 15,
+    D3DRS_LASTPIXEL = 16,
+    D3DRS_SRCBLEND = 19,
+    D3DRS_DESTBLEND = 20,
+    D3DRS_CULLMODE = 22,
+    D3DRS_ZFUNC = 23,
+    D3DRS_ALPHAREF = 24,
+    D3DRS_ALPHAFUNC = 25,
+    D3DRS_DITHERENABLE = 26,
+    D3DRS_ALPHABLENDENABLE = 27,
+    D3DRS_FOGENABLE = 28,
+    D3DRS_SPECULARENABLE = 29,
+    D3DRS_ZVISIBLE = 30,
+    D3DRS_FOGCOLOR = 34,
+    D3DRS_FOGTABLEMODE = 35,
+    D3DRS_FOGSTART = 36,
+    D3DRS_FOGEND = 37,
+    D3DRS_FOGDENSITY = 38,
+    D3DRS_EDGEANTIALIAS = 40,
+    D3DRS_ZBIAS = 47,
+    D3DRS_RANGEFOGENABLE = 48,
+    D3DRS_STENCILENABLE = 52,
+    D3DRS_STENCILFAIL = 53,
+    D3DRS_STENCILZFAIL = 54,
+    D3DRS_STENCILPASS = 55,
+    D3DRS_STENCILFUNC = 56,
+    D3DRS_STENCILREF = 57,
+    D3DRS_STENCILMASK = 58,
+    D3DRS_STENCILWRITEMASK = 59,
+    D3DRS_TEXTUREFACTOR = 60,
+    D3DRS_WRAP0 = 128,
+    D3DRS_WRAP1 = 129,
+    D3DRS_WRAP2 = 130,
+    D3DRS_WRAP3 = 131,
+    D3DRS_WRAP4 = 132,
+    D3DRS_WRAP5 = 133,
+    D3DRS_WRAP6 = 134,
+    D3DRS_WRAP7 = 135,
+    D3DRS_CLIPPING = 136,
+    D3DRS_LIGHTING = 137,
+    D3DRS_AMBIENT = 139,
+    D3DRS_FOGVERTEXMODE = 140,
+    D3DRS_COLORVERTEX = 141,
+    D3DRS_LOCALVIEWER = 142,
+    D3DRS_NORMALIZENORMALS = 143,
+    D3DRS_DIFFUSEMATERIALSOURCE = 145,
+    D3DRS_SPECULARMATERIALSOURCE = 146,
+    D3DRS_AMBIENTMATERIALSOURCE = 147,
+    D3DRS_EMISSIVEMATERIALSOURCE = 148,
+    D3DRS_VERTEXBLEND = 151,
+    D3DRS_CLIPPLANEENABLE = 152,
+    D3DRS_SOFTWAREVERTEXPROCESSING = 153,
+    D3DRS_POINTSIZE = 154,
+    D3DRS_POINTSIZE_MIN = 155,
+    D3DRS_POINTSPRITE_ENABLE = 156,
+    D3DRS_POINTSCALE_ENABLE = 157,
+    D3DRS_POINTSCALE_A = 158,
+    D3DRS_POINTSCALE_B = 159,
+    D3DRS_POINTSCALE_C = 160,
+    D3DRS_MULTISAMPLE_ANTIALIAS = 161,
+    D3DRS_MULTISAMPLE_MASK = 162,
+    D3DRS_PATCHEDGESTYLE = 163,
+    D3DRS_PATCHSEGMENTS = 164,
+    D3DRS_DEBUGMONITORTOKEN = 165,
+    D3DRS_POINT_SIZE_MAX = 166,
+    D3DRS_INDEXVERTEXBLENDENABLE = 167,
+    D3DRS_COLORWRITEENABLE = 168,
+    D3DRS_TWEENFACTOR = 170,
+    D3DRS_BLENDOP = 171,
+    D3DRS_FORCE_DWORD = 2147483647
+} CONST_D3DRENDERSTATETYPE;
+
+typedef enum {
+    D3DSBT_ALL = 1,
+    D3DSBT_PIXELSTATE = 2,
+    D3DSBT_VERTEXSTATE = 3,
+    D3DSBT_FORCE_DWORD = -1
+} CONST_D3DSTATEBLOCKTYPE;
+
+typedef enum {
+    D3DTSS_COLOROP = 1,
+    D3DTSS_COLORARG1 = 2,
+    D3DTSS_COLORARG2 = 3,
+    D3DTSS_ALPHAOP = 4,
+    D3DTSS_ALPHAARG1 = 5,
+    D3DTSS_ALPHAARG2 = 6,
+    D3DTSS_BUMPENVMAT00 = 7,
+    D3DTSS_BUMPENVMAT01 = 8,
+    D3DTSS_BUMPENVMAT10 = 9,
+    D3DTSS_BUMPENVMAT11 = 10,
+    D3DTSS_TEXCOORDINDEX = 11,
+    D3DTSS_ADDRESSU = 13,
+    D3DTSS_ADDRESSV = 14,
+    D3DTSS_BORDERCOLOR = 15,
+    D3DTSS_MAGFILTER = 16,
+    D3DTSS_MINFILTER = 17,
+    D3DTSS_MIPFILTER = 18,
+    D3DTSS_MIPMAPLODBIAS = 19,
+    D3DTSS_MAXMIPLEVEL = 20,
+    D3DTSS_MAXANISOTROPY = 21,
+    D3DTSS_BUMPENVLSCALE = 22,
+    D3DTSS_BUMPENVLOFFSET = 23,
+    D3DTSS_TEXTURETRANSFORMFLAGS = 24,
+    D3DTSS_ADDRESSW = 25,
+    D3DTSS_COLORARG0 = 26,
+    D3DTSS_ALPHAARG0 = 27,
+    D3DTSS_RESULTARG = 28,
+    D3DTSS_FORCE_DWORD = 2147483647
+} CONST_D3DTEXTURESTAGESTATETYPE;
+
+typedef enum {
+    D3DPT_POINTLIST = 1,
+    D3DPT_LINELIST = 2,
+    D3DPT_LINESTRIP = 3,
+    D3DPT_TRIANGLELIST = 4,
+    D3DPT_TRIANGLESTRIP = 5,
+    D3DPT_TRIANGLEFAN = 6,
+    D3DPT_FORCE_DWORD = 2147483647
+} CONST_D3DPRIMITIVETYPE;
+
+typedef enum {
+    D3DXIFF_BMP = 0,
+    D3DXIFF_JPG = 1,
+    D3DXIFF_TGA = 2,
+    D3DXIFF_PNG = 3,
+    D3DXIFF_DDS = 4,
+    D3DXIFF_PPM = 5,
+    D3DXIFF_DIB = 6,
+    D3DXIFF_FORCE_DWORD = 2147483647
+} CONST_D3DXIMAGE_FILEFORMAT;
+
+//Structures
+
+typedef struct tagDXGUID {
+    long data1;
+    short data2;
+    short data3;
+    unsigned char data4[8];
+} DXGUID;
+
+typedef struct tagD3DADAPTER_IDENTIFIER8 {
+    unsigned char Driver[512];
+    unsigned char Description[512];
+    long DriverVersionLowPart;
+    long DriverVersionHighPart;
+    long VendorId;
+    long DeviceId;
+    long SubSysId;
+    long Revision;
+    DXGUID DeviceIdentifier;
+    long WHQLLevel;
+} D3DADAPTER_IDENTIFIER8;
+
+typedef struct tagD3DDISPLAYMODE {
+    int Width;
+    int Height;
+    int RefreshRate;
+    CONST_D3DFORMAT Format;
+} D3DDISPLAYMODE;
+
+typedef struct tagD3DCAPS8 {
+    long DeviceType;
+    int AdapterOrdinal;
+    long Caps;
+    long Caps2;
+    long Caps3;
+    long PresentationIntervals;
+    long CursorCaps;
+    long DevCaps;
+    long PrimitiveMiscCaps;
+    long RasterCaps;
+    long ZCmpCaps;
+    long SrcBlendCaps;
+    long DestBlendCaps;
+    long AlphaCmpCaps;
+    long ShadeCaps;
+    long TextureCaps;
+    long TextureFilterCaps;
+    long CubeTextureFilterCaps;
+    long VolumeTextureFilterCaps;
+    long TextureAddressCaps;
+    long VolumeTextureAddressCaps;
+    long LineCaps;
+    long MaxTextureWidth;
+    long MaxTextureHeight;
+    long MaxVolumeExtent;
+    long MaxTextureRepeat;
+    long MaxTextureAspectRatio;
+    long MaxAnisotropy;
+    float MaxVertexW;
+    float GuardBandLeft;
+    float GuardBandTop;
+    float GuardBandRight;
+    float GuardBandBottom;
+    float ExtentsAdjust;
+    long StencilCaps;
+    long FVFCaps;
+    long TextureOpCaps;
+    long MaxTextureBlendStages;
+    long MaxSimultaneousTextures;
+    long VertexProcessingCaps;
+    long MaxActiveLights;
+    long MaxUserClipPlanes;
+    long MaxVertexBlendMatrices;
+    long MaxVertexBlendMatrixIndex;
+    float MaxPointSize;
+    long MaxPrimitiveCount;
+    long MaxVertexIndex;
+    long MaxStreams;
+    long MaxStreamStride;
+    long VertexShaderVersion;
+    long MaxVertexShaderConst;
+    long PixelShaderVersion;
+    float MaxPixelShaderValue;
+} D3DCAPS8;
+
+typedef struct tagD3DPRESENT_PARAMETERS {
+    int BackBufferWidth;
+    int BackBufferHeight;
+    CONST_D3DFORMAT BackBufferFormat;
+    int BackBufferCount;
+    CONST_D3DMULTISAMPLE_TYPE MultiSampleType;
+    CONST_D3DSWAPEFFECT SwapEffect;
+    long hDeviceWindow;
+    long Windowed;
+    long EnableAutoDepthStencil;
+    CONST_D3DFORMAT AutoDepthStencilFormat;
+    long flags;
+    int FullScreen_RefreshRateInHz;
+    int FullScreen_PresentationInterval;
+} D3DPRESENT_PARAMETERS;
+
+typedef struct tagD3DDEVICE_CREATION_PARAMETERS {
+    int AdapterOrdinal;
+    CONST_D3DDEVTYPE DeviceType;
+    long hFocusWindow;
+    long BehaviorFlags;
+} D3DDEVICE_CREATION_PARAMETERS;
+
+typedef struct tagD3DSURFACE_DESC {
+    CONST_D3DFORMAT Format;
+    CONST_D3DRESOURCETYPE Type;
+    long Usage;
+    CONST_D3DPOOL Pool;
+    int Size;
+    CONST_D3DMULTISAMPLE_TYPE MultiSampleType;
+    int Width;
+    int Height;
+} D3DSURFACE_DESC;
+
+typedef struct tagD3DLOCKED_RECT {
+    int Pitch;
+    long pBits;
+} D3DLOCKED_RECT;
+
+typedef struct tagD3DRASTER_STATUS {
+    long InVBLANK;
+    int ScanLine;
+} D3DRASTER_STATUS;
+
+typedef struct tagD3DGAMMARAMP {
+    short red[256];
+    short green[256];
+    short blue[256];
+} D3DGAMMARAMP;
+
+typedef struct tagD3DVOLUME_DESC {
+    CONST_D3DFORMAT Format;
+    CONST_D3DRESOURCETYPE Type;
+    long Usage;
+    CONST_D3DPOOL Pool;
+    int Size;
+    int Width;
+    int Height;
+    int Depth;
+} D3DVOLUME_DESC;
+
+typedef struct tagD3DLOCKED_BOX {
+    int RowPitch;
+    int SlicePitch;
+    long pBits;
+} D3DLOCKED_BOX;
+
+typedef struct tagD3DBOX {
+    int left;
+    int top;
+    int right;
+    int bottom;
+    int front;
+    int back;
+} D3DBOX;
+
+typedef struct tagD3DVERTEXBUFFER_DESC {
+    CONST_D3DFORMAT Format;
+    CONST_D3DRESOURCETYPE Type;
+    long Usage;
+    CONST_D3DPOOL Pool;
+    int Size;
+    long FVF;
+} D3DVERTEXBUFFER_DESC;
+
+typedef struct tagD3DINDEXBUFFER_DESC {
+    CONST_D3DFORMAT Format;
+    CONST_D3DRESOURCETYPE Type;
+    long Usage;
+    CONST_D3DPOOL Pool;
+    int Size;
+} D3DINDEXBUFFER_DESC;
+
+typedef struct tagD3DCOLORVALUE {
+    float r;
+    float g;
+    float b;
+    float a;
+} D3DCOLORVALUE;
+
+typedef struct tagD3DVECTOR {
+    float x;
+    float y;
+    float z;
+} D3DVECTOR;
+
+typedef struct tagD3DLIGHT8 {
+    CONST_D3DLIGHTTYPE Type;
+    D3DCOLORVALUE diffuse;
+    D3DCOLORVALUE specular;
+    D3DCOLORVALUE ambient;
+    D3DVECTOR Position;
+    D3DVECTOR Direction;
+    float Range;
+    float Falloff;
+    float Attenuation0;
+    float Attenuation1;
+    float Attenuation2;
+    float Theta;
+    float Phi;
+} D3DLIGHT8;
+
+typedef struct tagD3DCLIPSTATUS8 {
+    long ClipUnion;
+    long ClipIntersection;
+} D3DCLIPSTATUS8;
+
+typedef struct tagD3DMATRIX {
+    float m11;
+    float m12;
+    float m13;
+    float m14;
+    float m21;
+    float m22;
+    float m23;
+    float m24;
+    float m31;
+    float m32;
+    float m33;
+    float m34;
+    float m41;
+    float m42;
+    float m43;
+    float m44;
+} D3DMATRIX;
+
+typedef struct tagD3DVIEWPORT8 {
+    long x;
+    long y;
+    long Width;
+    long Height;
+    float MinZ;
+    float MaxZ;
+} D3DVIEWPORT8;
+
+typedef struct tagD3DMATERIAL8 {
+    D3DCOLORVALUE diffuse;
+    D3DCOLORVALUE ambient;
+    D3DCOLORVALUE specular;
+    D3DCOLORVALUE emissive;
+    float power;
+} D3DMATERIAL8;
+
+typedef struct tagD3DPLANE {
+    float a;
+    float b;
+    float c;
+    float d;
+} D3DPLANE;
+
+typedef struct tagLOGFONT {
+    long Height;
+    long Width;
+    long Escapement;
+    long orientation;
+    long Weight;
+    unsigned char Italic;
+    unsigned char Underline;
+    unsigned char StrikeOut;
+    unsigned char CharSet;
+    unsigned char OutPrecision;
+    unsigned char ClipPrecision;
+    unsigned char Quality;
+    unsigned char PitchAndFamily;
+    unsigned char FaceName[32];
+} LOGFONT;
+
+typedef struct tagD3DVECTOR2 {
+    float x;
+    float y;
+} D3DVECTOR2;
+
+typedef struct tagD3DXRTS_DESC {
+    long Width;
+    long Height;
+    long Format;
+    long DepthStencil;
+    long DepthStencilFormat;
+} D3DXRTS_DESC;
+
+typedef struct tagD3DXDECLARATOR {
+    long value[32];
+} D3DXDECLARATOR;
+
+typedef struct tagD3DXMATERIAL {
+    D3DMATERIAL8 MatD3D;
+    BSTR TextureFilename;
+} D3DXMATERIAL;
+
+typedef struct tagD3DXBONECOMBINATION {
+    long AttribId;
+    long FaceStart;
+    long FaceCount;
+    long VertexStart;
+    long VertexCount;
+    long pBones;
+} D3DXBONECOMBINATION;
+
+//Interfaces
+
+[
+    object,
+    uuid(b96eebca-b326-4ea5-882f-2ff5bae021dd),
+    local
+]
+interface Direct3DSurface8 : IUnknown {
+    HRESULT GetDevice(
+        [out, retval] Direct3DDevice8 **ppDevice
+    );
+    HRESULT SetPrivateData(
+        [in] DXGUID *refguid,
+        [in] void *data,
+        [in] long sizeOfData,
+        [in] long flags
+    );
+    HRESULT GetPrivateData(
+        [in] DXGUID *refguid,
+        [in, out] void *data,
+        [in, out] long *sizeOfData
+    );
+    HRESULT FreePrivateData(
+        [in] DXGUID *refguid
+    );
+    HRESULT GetContainer(
+        DXGUID *riid,
+        [out, retval] IUnknown **ppContainer
+    );
+    HRESULT GetDesc(
+        [out] D3DSURFACE_DESC *pDesc
+    );
+    HRESULT LockRect(
+        [in] D3DLOCKED_RECT *lockedRect,
+        [in] void *rect,
+        [in] long flags
+    );
+    HRESULT UnlockRect(
+    );
+};
+
+[
+    object,
+    uuid(928c088b-76b9-4c6b-a536-a590853876cd),
+    local
+]
+interface Direct3DSwapChain8 : IUnknown {
+    HRESULT Present(
+        [in] void *sourceRect,
+        [in] void *destRect,
+        [in] long hDestWindowOverride,
+        [in] void *dirtyRegion
+    );
+    HRESULT GetBackBuffer(
+        [in] int BackBuffer,
+        [in] CONST_D3DBACKBUFFERTYPE bufferType,
+        [out, retval] Direct3DSurface8 **ppBackBuffer
+    );
+};
+
+[
+    object,
+    uuid(1dd9e8da-1c77-4d40-b0cf-98fefdff9512),
+    local
+]
+interface Direct3D8 : IUnknown {
+    HRESULT RegisterSoftwareDevice(
+        [in] void *initializeFunction
+    );
+    int GetAdapterCount(
+    );
+    HRESULT GetAdapterIdentifier(
+        [in] int adapter,
+        [in] long flags,
+        [in, out] D3DADAPTER_IDENTIFIER8 *identifier
+    );
+    int GetAdapterModeCount(
+        [in] int adapter
+    );
+    HRESULT EnumAdapterModes(
+        [in] int adapter,
+        [in] int mode,
+        [in, out] D3DDISPLAYMODE *displayMode
+    );
+    HRESULT GetAdapterDisplayMode(
+        [in] int adapter,
+        [in, out] D3DDISPLAYMODE *displayMode
+    );
+    long CheckDeviceType(
+        [in] int adapter,
+        [in] CONST_D3DDEVTYPE checkType,
+        [in] CONST_D3DFORMAT displayFormat,
+        [in] CONST_D3DFORMAT backBufferFormat,
+        [in] long bWindowed
+    );
+    long CheckDeviceFormat(
+        [in] int adapter,
+        [in] CONST_D3DDEVTYPE deviceType,
+        [in] CONST_D3DFORMAT adapterFormat,
+        [in] long usage,
+        [in] CONST_D3DRESOURCETYPE rType,
+        [in] CONST_D3DFORMAT checkFormat
+    );
+    long CheckDeviceMultiSampleType(
+        [in] int adapter,
+        [in] CONST_D3DDEVTYPE deviceType,
+        [in] CONST_D3DFORMAT renderTargetFormat,
+        [in] long windowed,
+        [in] CONST_D3DMULTISAMPLE_TYPE multiSampleType
+    );
+    long CheckDepthStencilMatch(
+        [in] int Adapter,
+        [in] CONST_D3DDEVTYPE deviceType,
+        [in] CONST_D3DFORMAT adapterFormat,
+        [in] CONST_D3DFORMAT renderTargetFormat,
+        [in] CONST_D3DFORMAT depthStencilFormat
+    );
+    HRESULT GetDeviceCaps(
+        [in] int adapter,
+        [in] CONST_D3DDEVTYPE deviceType,
+        [in, out] D3DCAPS8 *caps
+    );
+    long GetAdapterMonitor(
+        [in] int adapter
+    );
+    HRESULT CreateDevice(
+        [in] int adapter,
+        [in] CONST_D3DDEVTYPE deviceType,
+        [in] long hFocusWindow,
+        [in] CONST_D3DCREATEFLAGS behaviorFlags,
+        [in] D3DPRESENT_PARAMETERS *presentationParameters,
+        [out, retval] Direct3DDevice8 **ppReturnedDeviceInterface
+    );
+};
+
+[
+    object,
+    uuid(e4cdd575-2866-4f01-b12e-7eece1ec9358),
+    local
+]
+interface Direct3DTexture8 : IUnknown {
+
+    HRESULT GetDevice(
+        [out, retval] Direct3DDevice8 **ppDevice
+    );
+    HRESULT SetPrivateData(
+        [in] DXGUID *refguid,
+        [in] void *data,
+        [in] long sizeOfData,
+        [in] long flags
+    );
+    HRESULT GetPrivateData(
+        [in] DXGUID *refguid,
+        [in] void *data,
+        [in, out] long *sizeOfData
+    );
+    HRESULT FreePrivateData(
+        [in] DXGUID *refguid
+    );
+    long SetPriority(
+        [in] long priorityNew
+    );
+    long GetPriority(
+    );
+    void PreLoad(
+    );
+    CONST_D3DRESOURCETYPE GetType(
+    );
+    long SetLOD(
+        [in] long dwLODNew
+    );
+    long GetLOD(
+    );
+    long GetLevelCount(
+    );
+    HRESULT GetLevelDesc(
+        [in] int level,
+        [out] D3DSURFACE_DESC *pDesc
+    );
+    HRESULT GetSurfaceLevel(
+        [in] int Level,
+        [out, retval] Direct3DSurface8 **ppSurfaceLevel
+    );
+    HRESULT LockRect(
+        [in] int level,
+        [in] D3DLOCKED_RECT *lockedRect,
+        [in] void *rect,
+        [in] long flags
+    );
+    HRESULT UnlockRect(
+        [in] int level
+    );
+    HRESULT AddDirtyRect(
+        [in] void *dirtyRect
+    );
+};
+
+[
+    object,
+    uuid(BD7349F5-14F1-42E4-9C79-972380DB40C0),
+    local
+]
+interface Direct3DVolume8 : IUnknown {
+    HRESULT GetDevice(
+        [out, retval] Direct3DDevice8 **ppDevice
+    );
+    HRESULT SetPrivateData(
+        [in] DXGUID *refguid,
+        [in] void *data,
+        [in] long sizeOfData,
+        [in] long flags
+    );
+    HRESULT GetPrivateData(
+        [in] DXGUID *refguid,
+        [in, out] void *data,
+        [in, out] long *sizeOfDataa
+    );
+    HRESULT FreePrivateData(
+        [in] DXGUID *refguid
+    );
+    HRESULT GetContainer(
+        DXGUID *riid,
+        [out, retval] IUnknown **ppContainer
+    );
+    HRESULT GetDesc(
+        [out] D3DVOLUME_DESC *pDesc
+    );
+    HRESULT LockBox(
+        [in] D3DLOCKED_BOX *lockedVolume,
+        [in] void *box,
+        [in] long flags
+    );
+    HRESULT UnlockBox(
+    );
+};
+
+[
+    object,
+    uuid(4b8aaafa-140f-42ba-9131-597eafaa2ead),
+    local
+]
+    interface Direct3DVolumeTexture8 : IUnknown {
+    HRESULT GetDevice(
+        [out, retval] Direct3DDevice8 **ppDevice
+    );
+    HRESULT SetPrivateData(
+        [in] DXGUID *refguid,
+        [in] void *data,
+        [in] long sizeOfData,
+        [in] long flags
+    );
+    HRESULT GetPrivateData(
+        [in] DXGUID *refguid,
+        [in] void *data,
+        [in, out] long *sizeOfData
+    );
+    HRESULT FreePrivateData(
+        [in] DXGUID *refguid
+    );
+    long SetPriority(
+        [in] long priorityNew
+    );
+    long GetPriority(
+    );
+    void PreLoad(
+    );
+    CONST_D3DRESOURCETYPE GetType(
+    );
+    long SetLOD(
+        [in] long dwLODNew
+    );
+    long GetLOD(
+    );
+    long GetLevelCount(
+    );
+    HRESULT GetLevelDesc(
+        [in] int level,
+        [out] D3DVOLUME_DESC *pDesc
+    );
+    HRESULT GetVolumeLevel(
+        [in] int level,
+        [out, retval] Direct3DVolume8 **ppVolumeLevel
+    );
+    HRESULT LockBox(
+        [in] int iLevel,
+        [in] D3DLOCKED_BOX *pLockedVolume,
+        [in, out] void *box,
+        [in] long flags
+    );
+    HRESULT UnlockBox(
+        [in] int level
+    );
+    HRESULT AddDirtyBox(
+        [in] D3DBOX *dirtyBox
+    );
+};
+
+[
+    object,
+    uuid(3ee5b968-2aca-4c34-8bb5-7e0c3d19b750),
+    local
+]
+interface Direct3DCubeTexture8 : IUnknown {
+    HRESULT GetDevice(
+        [out, retval] Direct3DDevice8 **ppDevice
+    );
+    HRESULT SetPrivateData(
+        [in] DXGUID *refguid,
+        [in] void *data,
+        [in] long sizeOfData,
+        [in] long flags
+    );
+    HRESULT GetPrivateData(
+        [in] DXGUID *refguid,
+        [in] void *data,
+        [in, out] long *sizeOfData
+    );
+    HRESULT FreePrivateData(
+        [in] DXGUID *refguid
+    );
+    long SetPriority(
+        [in] long priorityNew
+    );
+    long GetPriority(
+    );
+    void PreLoad(
+    );
+    CONST_D3DRESOURCETYPE GetType(
+    );
+    long SetLOD(
+        [in] long dwLODNew
+    );
+    long GetLOD(
+    );
+    long GetLevelCount(
+    );
+    HRESULT GetLevelDesc(
+        [in] int Level,
+        [out] D3DSURFACE_DESC *pDesc
+    );
+    HRESULT GetCubeMapSurface(
+        [in] CONST_D3DCUBEMAP_FACES faceType,
+        [in] int level,
+        [out, retval] Direct3DSurface8 **ppCubeMapSurface
+    );
+    HRESULT LockRect(
+        [in] CONST_D3DCUBEMAP_FACES faceType,
+        [in] int level,
+        [in] D3DLOCKED_RECT *lockedRect,
+        [in] void *rect,
+        [in] long flags
+    );
+    HRESULT UnlockRect(
+        [in] CONST_D3DCUBEMAP_FACES faceType,
+        [in] int iLevel
+    );
+    HRESULT AddDirtyRect(
+        [in] CONST_D3DCUBEMAP_FACES faceType,
+        [in] void *dirtyRect
+    );
+};
+
+[
+    object,
+    uuid(8aeeeac7-05f9-44d4-b591-000b0df1cb95),
+    local
+]
+interface Direct3DVertexBuffer8 : IUnknown {
+    HRESULT GetDevice(
+        [out, retval] Direct3DDevice8 **ppDevice
+    );
+    HRESULT SetPrivateData(
+        [in] DXGUID *refguid,
+        [in] void *data,
+        [in] long sizeOfData,
+        [in] long flags
+    );
+    HRESULT GetPrivateData(
+        [in] DXGUID *refguid,
+        [in] void *data,
+        [in, out] long *sizeOfData
+    );
+    HRESULT FreePrivateData(
+        [in] DXGUID *refguid
+    );
+    long SetPriority(
+        [in] long priorityNew
+    );
+    long GetPriority(
+    );
+    void PreLoad(
+    );
+    CONST_D3DRESOURCETYPE GetType(
+    );
+    HRESULT Lock(
+        [in] int byteOffsetToLock,
+        [in] int byteSizeToLock,
+        [out] long *pData,
+        [in] long flags
+    );
+    HRESULT Unlock(
+    );
+    HRESULT GetDesc(
+        [out] D3DVERTEXBUFFER_DESC *pDesc
+    );
+};
+
+[
+    object,
+    uuid(0e689c9a-053d-44a0-9d92-db0e3d750f86),
+    local
+]
+interface Direct3DIndexBuffer8 : IUnknown {
+    HRESULT GetDevice(
+        [out, retval] Direct3DDevice8 **ppDevice
+    );
+    HRESULT SetPrivateData(
+        [in] DXGUID *refguid,
+        [in] void *data,
+        [in] long sizeOfData,
+        [in] long flags
+    );
+    HRESULT GetPrivateData(
+        [in] DXGUID *refguid,
+        [in, out] void *data,
+        [in, out] long *sizeOfDataa
+    );
+    HRESULT FreePrivateData(
+        [in] DXGUID *refguid
+    );
+    long SetPriority(
+        [in] long priorityNew
+    );
+    long GetPriority(
+    );
+    void PreLoad(
+    );
+    CONST_D3DRESOURCETYPE GetType(
+    );
+    HRESULT Lock(
+        [in] int cbOffsetToLock,
+        [in] int cbSizeToLock,
+        [out] long *pData,
+        [in] long flags
+    );
+    HRESULT Unlock(
+    );
+    HRESULT GetDesc(
+        [out] D3DINDEXBUFFER_DESC *pDesc
+    );
+};
+
+[
+    object,
+    uuid(b4211cfa-51b9-4a9f-ab78-db99b2bb678e),
+    local
+]
+interface Direct3DBaseTexture8 : IUnknown {
+    HRESULT GetDevice(
+        [out, retval] Direct3DDevice8 **ppDevice
+    );
+    HRESULT SetPrivateData(
+        [in] DXGUID *refguid,
+        [in] void *data,
+        [in] long sizeOfData,
+        [in] long flags
+    );
+    HRESULT GetPrivateData(
+        [in] DXGUID *refguid,
+        [in] void *data,
+        [in, out] long *sizeOfData
+    );
+    HRESULT FreePrivateData(
+        [in] DXGUID *refguid
+    );
+    long SetPriority(
+        [in] long priorityNew
+    );
+    long GetPriority(
+    );
+    void PreLoad(
+    );
+    CONST_D3DRESOURCETYPE GetType(
+    );
+    long SetLOD(
+        [in] long newLOD
+    );
+    long GetLOD(
+    );
+    long GetLevelCount(
+    );
+ };
+
+[
+    object,
+    uuid(7385e5df-8fe8-41d5-86b6-d7b48547b6cf),
+    local
+]
+interface Direct3DDevice8 : IUnknown {
+    long TestCooperativeLevel(
+    );
+    int GetAvailableTextureMem(
+        [in] CONST_D3DPOOL pool
+    );
+    HRESULT ResourceManagerDiscardBytes(
+        [in] long numberOfBytes
+    );
+    HRESULT GetDirect3D(
+        [out, retval] Direct3D8 **pD3D8
+    );
+    HRESULT GetDeviceCaps(
+        [out] D3DCAPS8 *caps
+    );
+    HRESULT GetDisplayMode(
+        [out] D3DDISPLAYMODE *pMode
+    );
+    HRESULT GetCreationParameters(
+        [out] D3DDEVICE_CREATION_PARAMETERS *pCreationParams
+    );
+    HRESULT SetCursorProperties(
+        [in] int xHotSpot,
+        [in] int yHotSpot,
+        [in] Direct3DSurface8 *cursorSurface
+    );
+    void SetCursorPosition(
+        [in] int xScreenSpace,
+        [in] int yScreenSpace,
+        [in] CONST_D3DSCPFLAGS flags
+    );
+    long ShowCursor(
+        [in] long bShow
+    );
+    HRESULT CreateAdditionalSwapChain(
+        [in] D3DPRESENT_PARAMETERS *presentationParameters,
+        [out, retval] Direct3DSwapChain8 **ppSwapChain
+    );
+    HRESULT Reset(
+        [in] D3DPRESENT_PARAMETERS *presentationParameters
+    );
+    HRESULT Present(
+        [in] void *pSourceRect,
+        [in] void *pDestRect,
+        [in] long hWndDestWindowOverride,
+        [in] void *pDirtyRegion
+    );
+    HRESULT GetBackBuffer(
+        [in] long backBuffer,
+        [in] CONST_D3DBACKBUFFERTYPE bufferType,
+        [out, retval] Direct3DSurface8 **ppBackBuffer
+    );
+    D3DRASTER_STATUS GetRasterStatus(
+    );
+    void SetGammaRamp(
+        [in] long dwFlags,
+        [in] D3DGAMMARAMP *pRamp
+    );
+    void GetGammaRamp(
+        [in, out] D3DGAMMARAMP *pRamp
+    );
+    HRESULT CreateTexture(
+        [in] int width,
+        [in] int height,
+        [in] int levels,
+        [in] long usage,
+        [in] CONST_D3DFORMAT format,
+        [in] CONST_D3DPOOL pool,
+        [out, retval] Direct3DTexture8 **ppMipMap
+    );
+    HRESULT CreateVolumeTexture(
+        [in] int width,
+        [in] int height,
+        [in] int depth,
+        [in] int levels,
+        [in] long usage,
+        [in] CONST_D3DFORMAT format,
+        [in] CONST_D3DPOOL pool,
+        [out, retval] Direct3DVolumeTexture8 **ppMipMap
+    );
+    HRESULT CreateCubeTexture(
+        [in] int edgeLength,
+        [in] int levels,
+        [in] long usage,
+        [in] CONST_D3DFORMAT format,
+        [in] CONST_D3DPOOL pool,
+        [out, retval] Direct3DCubeTexture8 **ppCubeMap
+    );
+    HRESULT CreateVertexBuffer(
+        [in] int lengthInBytes,
+        [in] long usage,
+        [in] long fvf,
+        [in] CONST_D3DPOOL pool,
+        [out, retval] Direct3DVertexBuffer8 **ppVertexBuffer
+    );
+    HRESULT CreateIndexBuffer(
+        [in] int LengthInBytes,
+        [in] long usage,
+        [in] CONST_D3DFORMAT format,
+        [in] CONST_D3DPOOL Pool,
+        [out, retval] Direct3DIndexBuffer8 **ppIndexBuffer
+    );
+    HRESULT CreateRenderTarget(
+        [in] int width,
+        [in] int height,
+        [in] CONST_D3DFORMAT format,
+        [in] CONST_D3DMULTISAMPLE_TYPE multiSample,
+        [in] long lockable,
+        [out, retval] Direct3DSurface8 **ppSurface
+    );
+    HRESULT CreateDepthStencilSurface(
+        [in] int width,
+        [in] int height,
+        [in] CONST_D3DFORMAT format,
+        [in] CONST_D3DMULTISAMPLE_TYPE multiSample,
+        [out, retval] Direct3DSurface8 **ppSurface
+    );
+    HRESULT CreateImageSurface(
+        [in] int width,
+        [in] int height,
+        [in] CONST_D3DFORMAT format,
+        [out, retval] Direct3DSurface8 **ppSurface
+    );
+    HRESULT CopyRects(
+        [in] Direct3DSurface8 *sourceSurface,
+        [in] void *firstElementOfSourceRectsArray,
+        [in] int numberOfRects,
+        [in] Direct3DSurface8 *destinationSurface,
+        [in] void *firstElementofDestPointArray
+    );
+    HRESULT UpdateTexture(
+        [in] Direct3DBaseTexture8 *sourceTexture,
+        Direct3DBaseTexture8 *pDestinationTexture
+    );
+    HRESULT GetFrontBuffer(
+        [in] Direct3DSurface8 *pDestSurface
+    );
+    HRESULT SetRenderTarget(
+        [in] Direct3DSurface8 *renderTarget,
+        [in] Direct3DSurface8 *newZStencil,
+        [in] long flags
+    );
+    HRESULT GetRenderTarget(
+        [out, retval] Direct3DSurface8 **ppRenderTarget
+    );
+    HRESULT GetDepthStencilSurface(
+        [out, retval] Direct3DSurface8 **zStencilSurface
+    );
+    HRESULT BeginScene(
+    );
+    HRESULT EndScene(
+    );
+    HRESULT Clear(
+        [in] long clearRectCount,
+        [in] void *clearD3DRect,
+        [in] CONST_D3DCLEARFLAGS flags,
+        [in] long color,
+        [in] float z,
+        [in] long stencil
+    );
+    HRESULT SetTransform(
+        [in] CONST_D3DTRANSFORMSTATETYPE transformType,
+        [in] D3DMATRIX *matrix
+    );
+    HRESULT GetTransform(
+        [in] CONST_D3DTRANSFORMSTATETYPE transformType,
+        [out] D3DMATRIX *matrix
+    );
+    HRESULT MultiplyTransform(
+        [in] CONST_D3DTRANSFORMSTATETYPE transformType,
+        [in] D3DMATRIX *matrix
+    );
+    HRESULT SetViewport(
+        [in] D3DVIEWPORT8 *viewport
+    );
+    HRESULT GetViewport(
+        [out] D3DVIEWPORT8 *viewport
+    );
+    HRESULT SetMaterial(
+        [in] D3DMATERIAL8 *material
+    );
+    HRESULT GetMaterial(
+        [out] D3DMATERIAL8 *material
+    );
+    HRESULT SetLight(
+        [in] long index,
+        [in] D3DLIGHT8 *light
+    );
+    HRESULT GetLight(
+        [in] long index,
+        [out] D3DLIGHT8 *light
+    );
+    HRESULT LightEnable(
+        [in] long index,
+        [in] long enabled
+    );
+    HRESULT GetLightEnable(
+        [in] long index,
+        [out, retval] long *enabled
+    );
+    HRESULT SetClipPlane(
+        [in] long index,
+        [in] D3DPLANE *plane
+    );
+    HRESULT GetClipPlane(
+        [in] long index,
+        [out] D3DPLANE *plane
+    );
+    HRESULT SetRenderState(
+        [in] CONST_D3DRENDERSTATETYPE stateType,
+        [in] long value
+    );
+    HRESULT GetRenderState(
+        [in] CONST_D3DRENDERSTATETYPE stateType,
+        [out, retval] long *value
+    );
+    HRESULT BeginStateBlock(
+    );
+    HRESULT EndStateBlock(
+        [out, retval] long *blockid
+    );
+    HRESULT ApplyStateBlock(
+        [in] long blockid
+    );
+    HRESULT CaptureStateBlock(
+        [in] long blockid
+    );
+    HRESULT DeleteStateBlock(
+        [in] long blockid
+    );
+    HRESULT CreateStateBlock(
+        [in] CONST_D3DSTATEBLOCKTYPE blocktype,
+        [out, retval] long *blockid
+    );
+    HRESULT SetClipStatus(
+        [in] D3DCLIPSTATUS8 *clipstatus
+    );
+    HRESULT GetClipStatus(
+        [out] D3DCLIPSTATUS8 *clipstatus
+    );
+    HRESULT GetTexture(
+        [in] long stage,
+        [out, retval] Direct3DBaseTexture8 **texture
+    );
+    HRESULT SetTexture(
+        [in] long stage,
+        [in] Direct3DBaseTexture8 *texture
+    );
+    HRESULT GetTextureStageState(
+        [in] long stage,
+        [in] CONST_D3DTEXTURESTAGESTATETYPE stateType,
+        [out, retval] long *state
+    );
+    HRESULT SetTextureStageState(
+        [in] long stage,
+        [in] CONST_D3DTEXTURESTAGESTATETYPE stateType,
+        [in] long state
+    );
+    HRESULT ValidateDevice(
+        [out, retval] long *ret
+    );
+    HRESULT GetInfo(
+        [in] long flags,
+        [in, out] void *info,
+        [in] long size
+    );
+    HRESULT SetPaletteEntries(
+        [in] int paletteNumber,
+        [in] void *arrayOfEntries
+    );
+    HRESULT GetPaletteEntries(
+        [in] int paletteNumber,
+        [in, out] void *arrayOfEntries
+    );
+    HRESULT SetCurrentTexturePalette(
+        [in] int paletteNumber
+    );
+    HRESULT GetCurrentTexturePalette(
+        [out, retval] int *paletteNumber
+    );
+    HRESULT DrawPrimitive(
+        [in] CONST_D3DPRIMITIVETYPE primitiveType,
+        [in] int startVertex,
+        [in] int primitiveCount
+    );
+    HRESULT DrawIndexedPrimitive(
+        [in] CONST_D3DPRIMITIVETYPE primitiveType,
+        [in] int minIndex,
+        [in] int numIndices,
+        [in] int startIndex,
+        [in] int primitiveCount
+    );
+    HRESULT DrawPrimitiveUP(
+        [in] CONST_D3DPRIMITIVETYPE primitiveType,
+        [in] int primitiveCount,
+        [in] void *vertexStreamZeroDataArray,
+        [in] int vertexStreamZeroStride
+    );
+    HRESULT DrawIndexedPrimitiveUP(
+        [in] CONST_D3DPRIMITIVETYPE primitiveType,
+        [in] int minVertexIndex,
+        [in] int numVertexIndices,
+        [in] int primitiveCount,
+        [in] void *IndexDataArray,
+        [in] CONST_D3DFORMAT indexDataFormat,
+        [in] void *vertexStreamZeroDataArray,
+        [in] int vertexStreamZeroStride
+    );
+    HRESULT ProcessVertices(
+        [in] int srcStartIndex,
+        [in] int destIndex,
+        [in] int vertexCount,
+        [in] Direct3DVertexBuffer8 *destBuffer,
+        [in] long flags
+    );
+    HRESULT CreateVertexShader(
+        [in] long *declarationTokenArray,
+        [in, out] void *functionTokenArray,
+        [in, out] long *retHandle,
+        [in] long usage
+    );
+    HRESULT SetVertexShader(
+        [in] long vertexShaderHandle
+    );
+    HRESULT GetVertexShader(
+        [out, retval] long *pdwHandle
+    );
+    HRESULT DeleteVertexShader(
+        [in] long vertexShaderHandle
+    );
+    HRESULT SetVertexShaderConstant(
+        [in] long register,
+        [in] void *pConstantData,
+        [in] long constantCount
+    );
+    HRESULT GetVertexShaderConstant(
+        [in] long register,
+        [in, out] void *pConstantData,
+        [in] long constantCount
+    );
+    HRESULT GetVertexShaderDeclaration(
+        [in] long handle,
+        [in] void *data,
+        [in, out] long *sizeOfData
+    );
+    HRESULT GetVertexShaderFunction(
+        [in] long handle,
+        [in] void *pData,
+        [in, out] long *sizeOfData
+    );
+    HRESULT SetStreamSource(
+        [in] int streamNumber,
+        [in] Direct3DVertexBuffer8 *streamData,
+        [in] int stride
+    );
+    HRESULT GetStreamSource(
+        [in] int streamNumber,
+        [in, out] Direct3DVertexBuffer8 **retStreamData,
+        [in, out] int *retStride
+    );
+    HRESULT SetIndices(
+        [in] Direct3DIndexBuffer8 *indexData,
+        [in] int baseVertexIndex
+    );
+    HRESULT GetIndices(
+        [out] Direct3DIndexBuffer8 **retIndexData,
+        [out] int *retBaseVertexIndex
+    );
+    HRESULT CreatePixelShader(
+        [in] long *functionTokenArray,
+        [out, retval] long *pdwHandle
+    );
+    HRESULT SetPixelShader(
+        [in] long pixelShaderHandle
+    );
+    HRESULT GetPixelShader(
+        [out, retval] long *pdwHandle
+    );
+    HRESULT DeletePixelShader(
+        [in] long pixelShaderHandle
+    );
+    HRESULT SetPixelShaderConstant(
+        [in] long register,
+        [in] void *pConstantData,
+        [in] long constantCount
+    );
+    HRESULT GetPixelShaderConstant(
+        [in] long register,
+        [in, out] void *pConstantData,
+        [in] long constantCount
+    );
+    HRESULT GetPixelShaderFunction(
+        [in] long handle,
+        [in] void *pData,
+        [in, out] long *sizeOfData
+    );
+    HRESULT DrawRectPatch(
+        [in] long handle,
+        [in, out] float *numSegments,
+        void *surf
+    );
+    HRESULT DrawTriPatch(
+        [in] long handle,
+        [in, out] float *numSegments,
+        void *surf
+    );
+    HRESULT DeletePatch(
+        [in] long handle
+    );
+};
+
+[
+    object,
+    uuid(2d501df7-d253-4414-865f-a6d54a753138),
+    local
+]
+interface D3DXFont : IUnknown {
+    HRESULT GetDevice(
+        [out, retval] Direct3DDevice8 **ppDevice
+    );
+    HRESULT GetLogFont(
+        [in, out] LOGFONT *logfont
+    );
+    HRESULT Begin(
+    );
+    int DrawTextA(
+        [in] unsigned char *text,
+        [in] int count,
+        [in] RECT *destRect,
+        [in] long format,
+        [in] long color
+    );
+    int DrawTextW(
+        [in] BSTR Text,
+        [in] int count,
+        [in] RECT *destRect,
+        [in] long format,
+        [in] long color
+    );
+    HRESULT End(
+    );
+    HRESULT OnLostDevice(
+    );
+    HRESULT OnResetDevice(
+    );
+};
+
+[
+    object,
+    uuid(932e6a7e-c68e-45dd-a7bf-53d19c86db1f),
+    local
+]
+interface D3DXBuffer : IUnknown {
+    long GetBufferPointer(
+    );
+    long GetBufferSize(
+    );
+};
+
+[
+    object,
+    uuid(ccae5c3b-4dd1-4d0f-997e-4684ca64557f),
+    local
+]
+interface D3DXMesh : IUnknown {
+    HRESULT DrawSubset(
+        [in] long AttribId
+    );
+    long GetNumFaces(
+    );
+    long GetNumVertices(
+    );
+    long GetFVF(
+    );
+    HRESULT GetDeclaration(
+        [in, out] long *declaration
+    );
+    long GetOptions(
+    );
+    HRESULT GetDevice(
+        [out, retval] Direct3DDevice8 **ret
+    );
+    HRESULT CloneMeshFVF(
+        [in] long options,
+        [in] long fvf,
+        [in] Direct3DDevice8 *device,
+        [out, retval] D3DXMesh **ppCloneMesh
+    );
+    HRESULT CloneMesh(
+        [in] long options,
+        [in] void *declaration,
+        [in] Direct3DDevice8 *device,
+        [out, retval] D3DXMesh **ppCloneMesh
+    );
+    HRESULT GetVertexBuffer(
+        [out, retval] Direct3DVertexBuffer8 **ppVB
+    );
+    HRESULT GetIndexBuffer(
+        [out, retval] Direct3DIndexBuffer8 **ppIB
+    );
+    HRESULT LockVertexBuffer(
+        [in] long flags,
+        [out, retval] long *VBuffAddr
+    );
+    HRESULT UnlockVertexBuffer(
+    );
+    HRESULT LockIndexBuffer(
+        [in] long flags,
+        [out, retval] long *IBuffAddr
+    );
+    HRESULT UnlockIndexBuffer(
+    );
+    HRESULT GetAttributeTable(
+        [in, out] void *attribEntry,
+        [in, out] long *attribTabSize
+    );
+    HRESULT ConvertPointRepsToAdjacency(
+        void *pointRep,
+        void *adjacency
+    );
+    HRESULT ConvertAdjacencyToPointReps(
+        void *adjacency,
+        void *pointRep
+    );
+    HRESULT GenerateAdjacency(
+        [in] float epsilon,
+        [in, out] void *adjacency
+    );
+    HRESULT LockAttributeBuffer(
+        [in] long flags,
+        [out, retval] long *pData
+    );
+    HRESULT UnlockAttributeBuffer(
+    );
+    HRESULT Optimize(
+        [in] long flags,
+        [in, out] void *adjacency,
+        [in, out] void *optAdj,
+        [in, out] void *faceRemap,
+        [out] D3DXBuffer **vertexRemapOut,
+        [out, retval] D3DXMesh **ppOptMesh
+    );
+    HRESULT OptimizeInplace(
+        [in] long flags,
+        [in] void *adjacencyIn,
+        [in, out] void *adjacencyOut,
+        [in] void *faceRemap,
+        [out] D3DXBuffer **vertexRemapOut
+    );
+};
+
+[
+    object,
+    uuid(15981aa8-1a05-48e3-bbe7-ff5d49654e3f),
+    local
+]
+interface D3DXPMesh : IUnknown {
+    HRESULT DrawSubset(
+        [in] long AttribId
+    );
+    long GetNumFaces(
+    );
+    long GetNumVertices(
+    );
+    long GetFVF(
+    );
+    HRESULT GetDeclaration(
+        [in, out] long *declaration
+    );
+    long GetOptions(
+    );
+    HRESULT GetDevice(
+        [out, retval] Direct3DDevice8 **ret
+    );
+    HRESULT CloneMeshFVF(
+        [in] long options,
+        [in] long fvf,
+        [in] Direct3DDevice8 *device,
+        [out, retval] D3DXMesh **ppCloneMesh
+    );
+    HRESULT CloneMesh(
+        [in] long options,
+        [in] void *declaration,
+        [in] Direct3DDevice8 *device,
+        [out, retval] D3DXMesh **ppCloneMesh
+    );
+    HRESULT GetVertexBuffer(
+        [out, retval] Direct3DVertexBuffer8 **ppVB
+    );
+    HRESULT GetIndexBuffer(
+        [out, retval] Direct3DIndexBuffer8 **ppIB
+    );
+    HRESULT LockVertexBuffer(
+        [in] long flags,
+        [out, retval] long *VBuffAddr
+    );
+    HRESULT UnlockVertexBuffer(
+    );
+    HRESULT LockIndexBuffer(
+        [in] long flags,
+        [out, retval] long *IBuffAddr
+    );
+    HRESULT UnlockIndexBuffer(
+    );
+    HRESULT GetAttributeTable(
+        [in, out] void *attribEntry,
+        [in, out] long *attribTabSize
+    );
+    HRESULT ConvertPointRepsToAdjacency(
+        void *pointRep,
+        void *adjacency
+    );
+    HRESULT ConvertAdjacencyToPointReps(
+        void *adjacency,
+        void *pointRep
+    );
+    HRESULT GenerateAdjacency(
+        [in] float epsilon,
+        [in, out] void *adjacency
+    );
+    HRESULT ClonePMeshFVF(
+        [in] long options,
+        [in] long fvf,
+        [in] Direct3DDevice8 *device,
+        [out, retval] D3DXPMesh **ppCloneMesh
+    );
+    HRESULT ClonePMesh(
+        [in] long options,
+        [in] void *declaration,
+        [in] Direct3DDevice8 *device,
+        [out, retval] D3DXPMesh **ppCloneMesh
+    );
+    HRESULT SetNumFaces(
+        [in] long faces
+    );
+    HRESULT SetNumVertices(
+        [in] long vertices
+    );
+    long GetMaxFaces(
+    );
+    long GetMinFaces(
+    );
+    long GetMaxVertices(
+    );
+    long GetMinVertices(
+    );
+    HRESULT Save(
+        [in] long pIStream,
+        [in] long materialBufferHandle,
+        [in] long numMaterials
+    );
+    HRESULT Optimize(
+        [in] long flags,
+        [in, out] void *adjacencyOut,
+        [in, out] void *faceRemap,
+        [in, out] D3DXBuffer **vertexRemapOut,
+        [out, retval] D3DXMesh **ppOptMesh
+    );
+    HRESULT OptimizeBaseLOD(
+        [in] long flags,
+        [in, out] void *faceRemap
+    );
+    HRESULT TrimByFaces(
+        [in] long newFacesMin,
+        [in] long newFacesMax,
+        [in, out] long *rgiFaceRemap,
+        [in, out] long *rgiVertRemap
+    );
+    HRESULT TrimByVertices(
+        [in] long newVerticesMin,
+        [in] long newVerticesMax,
+        [in, out] long *rgiFaceRemap,
+        [in, out] long *rgiVertRemap
+    );
+    HRESULT GetAdjacency(
+        [out] void *adjacencyOut
+    );
+};
+
+[
+    object,
+    uuid(bc3bbde2-1f7d-11d3-b929-00c04f68dc23),
+    local
+]
+interface D3DXSPMesh : IUnknown {
+    long GetNumFaces(
+    );
+    long GetNumVertices(
+    );
+    long GetFVF(
+    );
+    HRESULT GetDeclaration(
+        [in, out] long *declaration
+    );
+    long GetOptions(
+    );
+    HRESULT GetDevice(
+        [out, retval] Direct3DDevice8 **ret
+    );
+    HRESULT CloneMeshFVF(
+        [in] long options,
+        [in] long fvf,
+        [in] Direct3DDevice8 *device,
+        [in, out] void *adjacencyOut,
+        [in, out] void *vertexRemapOut,
+        [out, retval] D3DXPMesh **ppCloneMesh
+    );
+    HRESULT CloneMesh(
+        [in] long options,
+        [in] void *declaration,
+        [in] Direct3DDevice8 *device,
+        [in, out] void *adjacencyOut,
+        [in, out] void *vertexRemapOut,
+        [out, retval] D3DXPMesh **ppCloneMesh
+    );
+    HRESULT ClonePMeshFVF(
+        [in] long options,
+        [in] long fvf,
+        [in] Direct3DDevice8 *pD3D,
+        [in, out] void *vertexRemapOut,
+        [out, retval] D3DXPMesh **ppCloneMesh
+    );
+    HRESULT ClonePMesh(
+        [in] long options,
+        [in] void *declaration,
+        [in] Direct3DDevice8 *pD3D,
+        [in, out] void *vertexRemapOut,
+        [out, retval] D3DXPMesh **ppCloneMesh
+    );
+    HRESULT ReduceFaces(
+        [in] long faces
+    );
+    HRESULT ReduceVertices(
+        [in] long vertices
+    );
+    long GetMaxFaces(
+    );
+    long GetMaxVertices(
+    );
+};
+
+[
+    object,
+    uuid(2a835771-bf4d-43f4-8e14-82a809f17d8a),
+    local
+]
+interface D3DXBaseMesh : IUnknown {
+    HRESULT DrawSubset(
+        [in] long attribId
+    );
+    long GetNumFaces(
+    );
+    long GetNumVertices(
+    );
+    long GetFVF(
+    );
+    HRESULT GetDeclaration(
+        [in, out] long *declaration
+    );
+    long GetOptions(
+    );
+    HRESULT GetDevice(
+        [out, retval] Direct3DDevice8 **ret
+    );
+    HRESULT CloneMeshFVF(
+        [in] long options,
+        [in] long fvf,
+        [in] Direct3DDevice8 *device,
+        [out, retval] D3DXMesh **ppCloneMesh
+    );
+    HRESULT CloneMesh(
+        [in] long options,
+        [in] void *declaration,
+        [in] Direct3DDevice8 *device,
+        [out, retval] D3DXMesh **ppCloneMesh
+    );
+    HRESULT GetVertexBuffer(
+        [out, retval] Direct3DVertexBuffer8 **ppVB
+    );
+    HRESULT GetIndexBuffer(
+        [out, retval] Direct3DIndexBuffer8 **ppIB
+    );
+    HRESULT LockVertexBuffer(
+        [in] long flags,
+        [out, retval] long *VBuffAddr
+    );
+    HRESULT UnlockVertexBuffer(
+    );
+    HRESULT LockIndexBuffer(
+        [in] long flags,
+        [out, retval] long *IBuffAddr
+    );
+    HRESULT UnlockIndexBuffer(
+    );
+    HRESULT GetAttributeTable(
+        [in, out] void *attribEntry,
+        [in, out] long *attribTabSize
+    );
+    HRESULT ConvertPointRepsToAdjacency(
+        void *pointRep,
+        void *adjacency
+    );
+    HRESULT ConvertAdjacencyToPointReps(
+        void *adjacency,
+        void *pointRep
+    );
+    HRESULT GenerateAdjacency(
+        [in] float epsilon,
+        [in, out] void *adjacency
+    );
+};
+
+[
+    object,
+    uuid(82a53844-f322-409e-a2e9-992e1104069d),
+    local
+]
+interface D3DXSkinMesh : IUnknown {
+    long GetNumFaces(
+    );
+    long GetNumVertices(
+    );
+    long GetFVF(
+    );
+    HRESULT GetDeclaration(
+        [in, out] long *declaration
+    );
+    long GetOptions(
+    );
+    HRESULT GetDevice(
+        [out, retval] Direct3DDevice8 **ret
+    );
+    HRESULT GetVertexBuffer(
+        [out, retval] Direct3DVertexBuffer8 **ppVB
+    );
+    HRESULT GetIndexBuffer(
+        [out, retval] Direct3DIndexBuffer8 **ppIB
+    );
+    HRESULT LockVertexBuffer(
+        [in] long flags,
+        [out, retval] long *VBuffAddr
+    );
+    HRESULT UnlockVertexBuffer(
+    );
+    HRESULT LockIndexBuffer(
+        [in] long flags,
+        [out, retval] long *IBuffAddr
+    );
+    HRESULT UnlockIndexBuffer(
+    );
+    HRESULT LockAttributeBuffer(
+        [in] long flags,
+        [out, retval] long *pData
+    );
+    HRESULT UnlockAttributeBuffer(
+    );
+    long GetNumBones(
+    );
+    HRESULT GetOriginalMesh(
+        [out, retval] D3DXMesh **pMesh
+    );
+    HRESULT SetBoneInfluence(
+        [in] long bone,
+        [in] long numInfluences,
+        [in] long *vertices,
+        [in] float *weights
+    );
+    long GetNumBoneInfluences(
+        [in] long bone
+    );
+    HRESULT GetBoneInfluence(
+        [in] long bone,
+        [in, out] long *vertices,
+        [in, out] float *weights
+    );
+    HRESULT GetMaxVertexInfluences(
+        [out, retval] long *maxVertexInfluences
+    );
+    HRESULT GetMaxFaceInfluences(
+        [out, retval] long *maxFaceInfluences
+    );
+    HRESULT ConvertToBlendedMesh(
+        [in] long options,
+        [in] void *adjacencyIn,
+        [in, out] void *adjacencyOut,
+        [in, out] long *retNumBoneCombinations,
+        [in, out] D3DXBuffer **retBoneCombinationTable,
+        [in, out] void *pFaceRemap,
+        [in, out] D3DXBuffer **vertexRemap,
+        [out, retval] D3DXMesh **retMesh
+    );
+    HRESULT ConvertToIndexedBlendedMesh(
+        [in] long options,
+        [in] void *adjacencyIn,
+        [in] long paletteSize,
+        [in, out] void *adjacencyOut,
+        [in, out] long *retNumBoneCombinations,
+        [in, out] D3DXBuffer **retBoneCombinationTable,
+        [in, out] void *pFaceRemap,
+        [in, out] D3DXBuffer **vertexRemap,
+        [out, retval] D3DXMesh **retMesh
+    );
+    HRESULT GenerateSkinnedMesh(
+        [in] long options,
+        [in] float minWeight,
+        [in] void *adjacencyIn,
+        [in, out] void *adjacencyOut,
+        [in, out] void *pFaceRemap,
+        [in, out] D3DXBuffer **vertexRemap,
+        [out, retval] D3DXMesh **retMesh
+    );
+    HRESULT UpdateSkinnedMesh(
+        [in] void *boneTransformsIn,
+        [in] D3DMATRIX *boneInvTransforms,
+        [in, out] D3DXMesh *retMesh
+    );
+};
+
+[
+    object,
+    uuid(e8691849-87b8-4929-9050-1b0542d5538c),
+    local
+]
+interface D3DXSprite : IUnknown {
+    HRESULT GetDevice(
+        [out, retval] Direct3DDevice8 **ppDevice
+    );
+    HRESULT Begin(
+    );
+    HRESULT Draw(
+        [in] Direct3DTexture8 *srcTexture,
+        [in] void *srcRect,
+        [in] D3DVECTOR2 *scaling,
+        [in] D3DVECTOR2 *rotationCenter,
+        [in] float rotation,
+        [in] D3DVECTOR2 *translation,
+        [in] long color
+    );
+    HRESULT DrawTransform(
+        [in] Direct3DTexture8 *srcTexture,
+        [in] void *srcRect,
+        [in] D3DMATRIX *transformMatrix,
+        [in] long color
+    );
+    HRESULT End(
+    );
+    HRESULT OnLostDevice(
+    );
+    HRESULT OnResetDevice(
+    );
+};
+
+[
+    object,
+    uuid(69cc587c-e40c-458d-b5d3-b029e18eb60a),
+    local
+]
+interface D3DXRenderToSurface : IUnknown {
+    HRESULT GetDevice(
+        [out, retval] Direct3DDevice8 **ppDevice
+    );
+    HRESULT GetDesc(
+        [out] D3DXRTS_DESC *parameters
+    );
+    HRESULT BeginScene(
+        [in] Direct3DSurface8 *surface,
+        [in] D3DVIEWPORT8 *viewport
+    );
+    HRESULT EndScene(
+    );
+    HRESULT OnLostDevice(
+    );
+    HRESULT OnResetDevice(
+    );
+};
+
+[
+    object,
+    uuid(3ac50043-cf82-4c44-862e-b206b4f03301),
+    local
+]
+interface ID3DX8 : IUnknown {
+    HRESULT CreateFont(
+        [in] Direct3DDevice8 *device,
+        [in] long hFont,
+        [out, retval] D3DXFont **retFont
+    );
+    HRESULT DrawText(
+        [in] D3DXFont *d3dFont,
+        [in] long color,
+        [in] BSTR text,
+        [in] RECT *rect,
+        [in] long format
+    );
+    HRESULT GetFVFVertexSize(
+        [in] long fvf,
+        [out, retval] long *size
+    );
+    HRESULT AssembleShaderFromFile(
+        [in] BSTR file,
+        [in] long flags,
+        [in, out] BSTR *log,
+        [in, out] D3DXBuffer **constants,
+        [out, retval] D3DXBuffer **ppVertexShader
+    );
+    HRESULT AssembleShader(
+        [in] BSTR data,
+        [in] long flags,
+        [in, out] D3DXBuffer **constants,
+        [in, out, optional] BSTR *log,
+        [out, retval] D3DXBuffer **ppVertexShader
+    );
+    HRESULT GetErrorString(
+        [in] long hr,
+        [out, retval] BSTR *retStr
+    );
+    HRESULT LoadSurfaceFromFile(
+        [in] Direct3DSurface8 *destSurface,
+        [in] void *destPalette,
+        [in] void *destRect,
+        [in] BSTR srcFile,
+        [in] void *srcRect,
+        [in] long filter,
+        [in] long colorKey,
+        [in, out] void *srcInfo
+    );
+    HRESULT LoadSurfaceFromFileInMemory(
+        [in] Direct3DSurface8 *destSurface,
+        [in] void *destPalette,
+        [in] void *destRect,
+        [in] void *srcData,
+        [in] long lengthInBytes,
+        [in] void *srcRect,
+        [in] long filter,
+        [in] long colorKey,
+        [in, out] void *srcInfo
+    );
+    HRESULT LoadSurfaceFromSurface(
+        [in] Direct3DSurface8 *destSurface,
+        [in] void *destPalette,
+        [in] void *destRect,
+        [in] Direct3DSurface8 *srcSurface,
+        [in] void *srcPalette,
+        [in] void *srcRect,
+        [in] long filter,
+        [in] long colorKey
+    );
+    HRESULT LoadSurfaceFromMemory(
+        [in] Direct3DSurface8 *destSurface,
+        [in] void *destPalette,
+        [in] void *destRect,
+        [in] void *srcData,
+        [in] CONST_D3DFORMAT formatSrc,
+        [in] long srcPitch,
+        [in] void *srcPalette,
+        [in] RECT *srcRect,
+        [in] long filter,
+        [in] long colorKey
+    );
+    HRESULT CheckTextureRequirements(
+        [in, out] Direct3DDevice8 *device,
+        [in, out] long *width,
+        [in, out] long *height,
+        [in, out] long *mipLevels,
+        [in] long usage,
+        [in, out] CONST_D3DFORMAT *pixelformat,
+        [in] CONST_D3DPOOL pool
+    );
+    HRESULT CreateTexture(
+        [in] Direct3DDevice8 *device,
+        [in] long width,
+        [in] long height,
+        [in] long mipLevels,
+        [in] long usage,
+        [in] CONST_D3DFORMAT pixelformat,
+        [in] CONST_D3DPOOL pool,
+        [out, retval] Direct3DTexture8 **ppTexture
+    );
+    HRESULT CreateTextureFromResource(
+        [in] Direct3DDevice8 *device,
+        [in] long hModule,
+        [in] BSTR srcResource,
+        [out, retval] Direct3DTexture8 **ppTexture
+    );
+    HRESULT CreateTextureFromFile(
+        [in] Direct3DDevice8 *device,
+        [in] BSTR srcFile,
+        [out, retval] Direct3DTexture8 **ppTexture
+    );
+    HRESULT CreateTextureFromFileEx(
+        [in] Direct3DDevice8 *device,
+        [in] BSTR srcFile,
+        [in] long width,
+        [in] long height,
+        [in] long mipLevels,
+        [in] long usage,
+        [in] CONST_D3DFORMAT pixelformat,
+        [in] CONST_D3DPOOL pool,
+        [in] long filter,
+        [in] long mipFilter,
+        [in] long colorKey,
+        [in, out] void *srcInfo,
+        [in] void *palette,
+        [out, retval] Direct3DTexture8 **ppTexture
+    );
+    HRESULT CreateTextureFromFileInMemory(
+        [in] Direct3DDevice8 *device,
+        [in] void *srcData,
+        [in] long lengthInBytes,
+        [out, retval] Direct3DTexture8 **ppTexture
+    );
+    HRESULT CreateTextureFromFileInMemoryEx(
+        [in] Direct3DDevice8 *device,
+        [in] void *srcData,
+        [in] long lengthInBytes,
+        [in] long width,
+        [in] long height,
+        [in] long mipLevels,
+        [in] long usage,
+        [in] CONST_D3DFORMAT pixelformat,
+        [in] CONST_D3DPOOL pool,
+        [in] long filter,
+        [in] long mipFilter,
+        [in] long colorKey,
+        [in, out] void *srcInfo,
+        [in] void *palette,
+        [out, retval] Direct3DTexture8 **ppTexture
+    );
+    HRESULT FilterTexture(
+        [in] Direct3DTexture8 *texture,
+        [in] void *palette,
+        [in] long srcLevel,
+        [in] long filter
+    );
+    HRESULT CheckCubeTextureRequirements(
+        [in] Direct3DDevice8 *device,
+        [in, out] long *Size,
+        [in, out] long *mipLevels,
+        [in] long usage,
+        [in, out] CONST_D3DFORMAT *pixelformat,
+        [in] CONST_D3DPOOL pool
+    );
+    HRESULT CreateCubeTexture(
+        [in] Direct3DDevice8 *device,
+        [in] long Size,
+        [in] long mipLevels,
+        [in] long usage,
+        [in] CONST_D3DFORMAT pixelformat,
+        [in] CONST_D3DPOOL pool,
+        [out, retval] Direct3DCubeTexture8 **ppCubeTexture
+    );
+    HRESULT CreateCubeTextureFromFile(
+        [in] Direct3DDevice8 *device,
+        [in] BSTR srcFile,
+        [out, retval] Direct3DCubeTexture8 **ppCubeTexture
+    );
+    HRESULT CreateCubeTextureFromFileEx(
+        [in] Direct3DDevice8 *device,
+        [in] BSTR srcFile,
+        [in] long textureSize,
+        [in] long mipLevels,
+        [in] long usage,
+        [in] CONST_D3DFORMAT pixelformat,
+        [in] CONST_D3DPOOL pool,
+        [in] long filter,
+        [in] long mipFilter,
+        [in] long colorKey,
+        [in, out] void *srcInfo,
+        [in] void *palette,
+        [out, retval] Direct3DCubeTexture8 **ppTexture
+    );
+    HRESULT CreateCubeTextureFromFileInMemory(
+        [in] Direct3DDevice8 *device,
+        [in] void *srcData,
+        [in] long lengthInBytes,
+        [out, retval] Direct3DCubeTexture8 **ppTexture
+    );
+    HRESULT CreateCubeTextureFromFileInMemoryEx(
+        [in] Direct3DDevice8 *device,
+        [in] void *srcData,
+        [in] long lengthInBytes,
+        [in] long textureSize,
+        [in] long mipLevels,
+        [in] long usage,
+        [in] CONST_D3DFORMAT pixelformat,
+        [in] CONST_D3DPOOL pool,
+        [in] long filter,
+        [in] long mipFilter,
+        [in] long colorKey,
+        [in, out] void *srcInfo,
+        [in] void *palette,
+        [out, retval] Direct3DCubeTexture8 **ppTexture
+    );
+    HRESULT FilterCubeTexture(
+        [in] Direct3DCubeTexture8 *cubeTexture,
+        [in] void *palette,
+        [in] long srcLevel,
+        [in] long filter
+    );
+    HRESULT CheckVolumeTextureRequirements(
+        [in] Direct3DDevice8 *device,
+        [out] long *width,
+        [out] long *height,
+        [out] long *depth,
+        [out] long *mipLevels,
+        [in] long usage,
+        [in, out] CONST_D3DFORMAT *pixelformat,
+        [in] CONST_D3DPOOL pool
+    );
+    HRESULT CreateTextureFromResourceEx(
+        [in] Direct3DDevice8 *device,
+        [in] long hSrcModule,
+        [in] BSTR srcResource,
+        [in] long width,
+        [in] long height,
+        [in] long mipLevels,
+        [in] long usage,
+        [in] CONST_D3DFORMAT pixelformat,
+        [in] CONST_D3DPOOL pool,
+        [in] long filter,
+        [in] long mipFilter,
+        [in] long colorKey,
+        [in, out] void *srcInfo,
+        [in] void *palette,
+        [out, retval] Direct3DTexture8 **retTexture
+    );
+    HRESULT CreateVolumeTexture(
+        [in] Direct3DDevice8 *device,
+        [in] long width,
+        [in] long height,
+        [in] long depth,
+        [in] long mipLevels,
+        [in] long usage,
+        [in] CONST_D3DFORMAT pixelformat,
+        [in] CONST_D3DPOOL pool,
+        [out, retval] Direct3DVolume8 **ppVolumeTexture
+    );
+    HRESULT FilterVolumeTexture(
+        [in] Direct3DVolume8 *volumeTexture,
+        [in] void *palette,
+        [in] long srcLevel,
+        [in] long filter
+    );
+    HRESULT LoadSurfaceFromResource(
+        [in] Direct3DSurface8 *destSurface,
+        [in] void *destPalette,
+        [in] void *destRect,
+        [in] long hSrcModule,
+        [in] BSTR srcResource,
+        [in] void *srcRect,
+        [in] long filter,
+        [in] long colorKey,
+        [in, out] void *srcInfo
+    );
+    HRESULT LoadVolumeFromVolume(
+        [in] Direct3DVolume8 *destVolume,
+        [in] void *destPalette,
+        [in] void *destBox,
+        [in] Direct3DVolume8 *srcVolume,
+        [in] void *srcPalette,
+        [in] void *srcBox,
+        [in] long filter,
+        [in] long colorKey
+    );
+    HRESULT LoadVolumeFromMemory(
+        [in] Direct3DVolume8 *destVolume,
+        [in] void *destPalette,
+        [in] void *destBox,
+        [in] void *srcMemory,
+        [in] long srcFormat,
+        [in] long srcRowPitch,
+        [in] long srcSlicePitch,
+        [in] void *srcPalette,
+        [in] void *srcBox,
+        [in] long filter,
+        [in] long colorKey
+    );
+    HRESULT CreateMesh(
+        [in] long numFaces,
+        [in] long numVertices,
+        [in] long options,
+        [in] void *declaration,
+        [in] Direct3DDevice8 *pD3D,
+        [out, retval] D3DXMesh **ppMesh
+    );
+    HRESULT CreateMeshFVF(
+        [in] long numFaces,
+        [in] long numVertices,
+        [in] long options,
+        [in] long fvf,
+        [in] Direct3DDevice8 *pD3D,
+        [out, retval] D3DXMesh **ppMesh
+    );
+    HRESULT CreateSPMesh(
+        [in] D3DXMesh *pMesh,
+        [in] void *adjacency,
+        [in] void *vertexAttributeWeights,
+        [in] void *vertexWeights,
+        [out, retval] D3DXSPMesh **ppSMesh
+    );
+    HRESULT GeneratePMesh(
+        [in] D3DXMesh *mesh,
+        [in] void *adjacency,
+        [in] void *vertexAttributeWeights,
+        [in] void *vertexWeights,
+        [in] long minValue,
+        [in] long options,
+        [out, retval] D3DXPMesh **ppPMesh
+    );
+    HRESULT SimplifyMesh(
+        [in] D3DXMesh *mesh,
+        [in] void *adjacency,
+        [in] void *vertexAttributeWeights,
+        [in] void *vertexWeights,
+        [in] long minValue,
+        [in] long options,
+        [out, retval] D3DXMesh **ppMesh
+    );
+    HRESULT ComputeBoundingSphere(
+        [in] void *pointsFVF,
+        [in] long numVertices,
+        [in] long fvf,
+        [in] D3DVECTOR *centers,
+        [in, out] float *radiusArray
+    );
+    HRESULT ComputeBoundingBox(
+        [in] void *pointsFVF,
+        [in] long numVertices,
+        [in] long fvf,
+        [in, out] D3DVECTOR *minVert,
+        [in, out] D3DVECTOR *maxVert
+    );
+    HRESULT ComputeNormals(
+        [in] D3DXBaseMesh *pMesh
+    );
+    HRESULT DeclaratorFromFVF(
+        [in] long fvf,
+        [out] D3DXDECLARATOR *Declarator
+    );
+    HRESULT FVFFromDeclarator(
+        [in] D3DXDECLARATOR *Declarator,
+        [out, retval] long *fvf
+    );
+    HRESULT CreateBuffer(
+        [in] long numBytes,
+        [out, retval] D3DXBuffer **ppBuffer
+    );
+    HRESULT LoadMeshFromX(
+        [in] BSTR filename,
+        [in] long options,
+        [in] Direct3DDevice8 *device,
+        [in, out] D3DXBuffer **retAdjacency,
+        [in, out] D3DXBuffer **retMaterials,
+        [in, out] long *retMaterialCount,
+        [out, retval] D3DXMesh **retMesh
+    );
+    HRESULT SaveMeshToX(
+        [in] BSTR filename,
+        [in] D3DXMesh *mesh,
+        [in] void *adjacencyArray,
+        [in] D3DXMATERIAL *materialArray,
+        [in] long materialCount,
+        [in] long xFormat
+    );
+    HRESULT LoadMeshFromXof(
+        [in] IUnknown *xofobjMesh,
+        [in] long options,
+        [in] Direct3DDevice8 *device,
+        [in, out] D3DXBuffer **retBufAdjacency,
+        [in, out] D3DXBuffer **retMaterials,
+        [in, out] long *retMaterialCount,
+        [out, retval] D3DXMesh **retMesh
+    );
+    HRESULT TessellateNPatches(
+        [in] D3DXMesh *meshIn,
+        [in] void *adjacencyIn,
+        [in] float numSegs,
+        [in] VARIANT_BOOL quadraticInterpNormals,
+        [in, out, optional] D3DXBuffer **adjacencyOut,
+        [out, retval] D3DXMesh **meshOut
+    );
+    HRESULT BufferGetMaterial(
+        [in] D3DXBuffer *materialBuffer,
+        [in] long index,
+        [out] D3DMATERIAL8 *mat
+    );
+    HRESULT BufferGetTextureName(
+        [in] D3DXBuffer *materialBuffer,
+        [in] long index,
+        [out, retval] BSTR *retName
+    );
+    HRESULT BufferGetData(
+        [in] D3DXBuffer *buffer,
+        [in] long index,
+        [in] long typesize,
+        [in] long typecount,
+        [in, out] void *data
+    );
+    HRESULT BufferSetData(
+        [in] D3DXBuffer *buffer,
+        [in] long index,
+        [in] long typesize,
+        [in] long typecount,
+        [in, out] void *data
+    );
+    HRESULT Intersect(
+        [in] D3DXMesh *meshIn,
+        [in] D3DVECTOR *rayPos,
+        [in] D3DVECTOR *rayDir,
+        [out] long *retHit,
+        [out] long *retFaceIndex,
+        [out] float *U,
+        [out] float *v,
+        [out] float *retDist,
+        [out] long *countHits,
+        [out, retval] D3DXBuffer **allHits
+    );
+    HRESULT SphereBoundProbe(
+        [in] D3DVECTOR *center,
+        [in] float radius,
+        [in] D3DVECTOR *rayPosition,
+        [in] D3DVECTOR *raydirection,
+        [out, retval] VARIANT_BOOL *retHit
+    );
+    HRESULT ComputeBoundingSphereFromMesh(
+        [in] D3DXMesh *meshIn,
+        [in, out] D3DVECTOR *centers,
+        [in, out] float *radiusArray
+    );
+    HRESULT ComputeBoundingBoxFromMesh(
+        [in] D3DXMesh *meshIn,
+        [in, out] D3DVECTOR *minArray,
+        [in, out] D3DVECTOR *maxArray
+    );
+    HRESULT CreateSkinMesh(
+        [in] long numFaces,
+        [in] long numVertices,
+        [in] long numBones,
+        [in] long options,
+        [in] void *declaration,
+        [in] Direct3DDevice8 *device,
+        [out, retval] D3DXSkinMesh **SkinMesh
+    );
+    HRESULT CreateSkinMeshFVF(
+        [in] long numFaces,
+        [in] long numVertices,
+        [in] long numBones,
+        [in] long options,
+        [in] long fvf,
+        [in] Direct3DDevice8 *device,
+        [out, retval] D3DXSkinMesh **ppSkinMesh
+    );
+    HRESULT CreateSkinMeshFromMesh(
+        [in] D3DXMesh *mesh,
+        [in] long numBones,
+        [out, retval] D3DXSkinMesh **ppSkinMesh
+    );
+    HRESULT LoadSkinMeshFromXof(
+        [in] IUnknown *xofobjMesh,
+        [in] long options,
+        [in] Direct3DDevice8 *device,
+        [in, out] D3DXBuffer **adjacencyOut,
+        [in, out] D3DXBuffer **materialsOut,
+        [in, out] long *numMatOut,
+        [in, out] D3DXBuffer **boneNamesOut,
+        [in, out] D3DXBuffer **boneTransformsOut,
+        [out, retval] D3DXSkinMesh **ppMesh
+    );
+    HRESULT CreatePolygon(
+        [in] Direct3DDevice8 *device,
+        [in] float length,
+        [in] long sides,
+        [in, out] D3DXBuffer **retAdjacency,
+        [out, retval] D3DXMesh **retMesh
+    );
+    HRESULT CreateBox(
+        [in] Direct3DDevice8 *device,
+        [in] float width,
+        [in] float height,
+        [in] float depth,
+        [in, out] D3DXBuffer **retAdjacency,
+        [out, retval] D3DXMesh **retMesh
+    );
+    HRESULT CreateCylinder(
+        [in] Direct3DDevice8 *device,
+        [in] float radius1,
+        [in] float radius2,
+        [in] float length,
+        [in] long slices,
+        [in] long stacks,
+        [in, out] D3DXBuffer **retAdjacency,
+        [out, retval] D3DXMesh **retMesh
+    );
+    HRESULT CreateSphere(
+        [in] Direct3DDevice8 *device,
+        [in] float radius,
+        [in] long slices,
+        [in] long stacks,
+        [in, out] D3DXBuffer **retAdjacency,
+        [out, retval] D3DXMesh **retMesh
+    );
+    HRESULT CreateTorus(
+        [in] Direct3DDevice8 *device,
+        [in] float innerRadius,
+        [in] float outerRadius,
+        [in] long sides,
+        [in] long rings,
+        [in, out] D3DXBuffer **retAdjacency,
+        [out, retval] D3DXMesh **retMesh
+    );
+    HRESULT CreateTeapot(
+        [in] Direct3DDevice8 *device,
+        [in, out] D3DXBuffer **retAdjacency,
+        [out, retval] D3DXMesh **retMesh
+    );
+    HRESULT CreateText(
+        [in] Direct3DDevice8 *device,
+        [in] long hDC,
+        [in] BSTR text,
+        [in] float deviation,
+        [in] float extrusion,
+        [in, out] D3DXMesh **retMesh,
+        [in, out] D3DXBuffer **adjacencyOut,
+        [in, out] void *glyphMetrics
+    );
+    HRESULT BufferGetBoneName(
+        [in] D3DXBuffer *boneNameBuffer,
+        [in] long index,
+        [out, retval] BSTR *retName
+    );
+    HRESULT CreateSprite(
+        [in] Direct3DDevice8 *device,
+        [out, retval] D3DXSprite **retSprite
+    );
+    HRESULT CreateRenderToSurface(
+        [in] Direct3DDevice8 *device,
+        [in] long width,
+        [in] long height,
+        [in] CONST_D3DFORMAT format,
+        [in] long depthStencil,
+        [in] CONST_D3DFORMAT depthStencilFormat,
+        [out, retval] D3DXRenderToSurface **retRenderToSurface
+    );
+    HRESULT CleanMesh(
+        [in] D3DXMesh *meshIn,
+        [in] void *adjacency,
+        [in, out] BSTR *log,
+        [in, out] D3DXBuffer *adjacencyOut,
+        [out, retval] D3DXMesh **meshOut
+    );
+    HRESULT ValidMesh(
+        [in] D3DXMesh *meshIn,
+        [in] void *adjacency,
+        [in, out, optional] BSTR *log,
+        [out, retval] VARIANT_BOOL *ret
+    );
+    HRESULT BoxBoundProbe(
+        [in] D3DVECTOR *minVert,
+        [in] D3DVECTOR *maxVert,
+        [in] D3DVECTOR *rayPosition,
+        [in] D3DVECTOR *raydirection,
+        [out, retval] VARIANT_BOOL *ret
+    );
+    HRESULT SavePMeshToFile(
+        [in] BSTR filename,
+        [in] D3DXPMesh *mesh,
+        [in] D3DXMATERIAL *materialArray,
+        [in] long materialCount
+    );
+    HRESULT LoadPMeshFromFile(
+        [in] BSTR filename,
+        [in] long options,
+        [in] Direct3DDevice8 *device,
+        [out] D3DXBuffer **retMaterials,
+        [out] long *RetNumMaterials,
+        [out, retval] D3DXPMesh **retPMesh
+    );
+    HRESULT BufferGetBoneCombo(
+        [in] D3DXBuffer *boneComboBuffer,
+        [in] long index,
+        [in, out] D3DXBONECOMBINATION *boneCombo
+    );
+    HRESULT BufferGetBoneComboBoneIds(
+        [in] D3DXBuffer *boneComboBuffer,
+        [in] long index,
+        [in] long paletteSize,
+        [in] void *boneIds
+    );
+    HRESULT SaveSurfaceToFile(
+        [in] BSTR destFile,
+        [in] CONST_D3DXIMAGE_FILEFORMAT destFormat,
+        [in] Direct3DSurface8 *srcSurface,
+        [in] PALETTEENTRY *srcPalette,
+        [in] RECT *srcRect
+    );
+    HRESULT SaveVolumeToFile(
+        [in] BSTR destFile,
+        [in] CONST_D3DXIMAGE_FILEFORMAT destFormat,
+        [in] Direct3DVolume8 *srcVolume,
+        [in] PALETTEENTRY *srcPalette,
+        [in] void *srcBox
+    );
+    HRESULT SaveTextureToFile(
+        [in] BSTR destFile,
+        [in] CONST_D3DXIMAGE_FILEFORMAT destFormat,
+        [in] Direct3DBaseTexture8 *srcTexture,
+        [in] PALETTEENTRY *srcPalette
+    );
+};
+
+//Coclasses
+
+[
+    uuid(58356c5d-0bfd-48ed-93c5-f4520b6233de),
+    helpstring("D3DX8"),
+    threading(both)
+]
+coclass D3DX8 { interface ID3DX8; };
-- 
2.14.2




More information about the wine-patches mailing list