/* * 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" #include "d3d8types.h" interface Direct3DDevice8; interface D3DXFont; interface D3DXBuffer; interface Direct3DSurface8; interface Direct3DTexture8; interface Direct3DCubeTexture8; interface Direct3DVolume8; interface D3DXMesh; interface D3DXSPMesh; interface D3DXPMesh; interface D3DXBaseMesh; interface D3DXSkinMesh; interface D3DXSprite; interface D3DXRenderToSurface; interface Direct3DBaseTexture8; interface DirectSound8; interface DirectSoundCapture8; interface DirectSoundEnum8; interface DirectSoundEnum8; interface DirectInput8; interface DirectMusicLoader8; interface DirectMusicComposer8; interface DirectMusicPerformance8; interface DirectXEvent8; interface DirectPlayVoiceClient8; interface DirectPlayVoiceServer8; interface DirectPlayVoiceTest8; interface DirectXFile; interface DirectPlay8Peer; interface DirectPlay8Server; interface DirectPlay8Client; interface DirectPlay8Address; interface Direct3D8; interface DirectPlay8LobbyClient; interface DirectPlay8LobbiedApplication; 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 = 0x7fffffff } D3DXIMAGE_FILEFORMAT; 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; [ 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] 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] D3DFORMAT *pixelformat, [in] D3DPOOL pool ); HRESULT CreateTexture( [in] Direct3DDevice8 *device, [in] LONG width, [in] LONG height, [in] LONG mipLevels, [in] LONG usage, [in] D3DFORMAT pixelformat, [in] 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] D3DFORMAT pixelformat, [in] 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] D3DFORMAT pixelformat, [in] 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] D3DFORMAT *pixelformat, [in] D3DPOOL pool ); HRESULT CreateCubeTexture( [in] Direct3DDevice8 *device, [in] LONG size, [in] LONG mipLevels, [in] LONG usage, [in] D3DFORMAT pixelformat, [in] 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] D3DFORMAT pixelformat, [in] 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] D3DFORMAT pixelformat, [in] 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] D3DFORMAT *pixelformat, [in] 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] D3DFORMAT pixelformat, [in] 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] D3DFORMAT pixelformat, [in] 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 **ppSkinMesh ); 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] D3DFORMAT format, [in] LONG depthStencil, [in] 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] D3DXIMAGE_FILEFORMAT destFormat, [in] Direct3DSurface8 *srcSurface, [in] PALETTEENTRY *srcPalette, [in] RECT *srcRect ); HRESULT SaveVolumeToFile( [in] BSTR destFile, [in] D3DXIMAGE_FILEFORMAT destFormat, [in] Direct3DVolume8 *srcVolume, [in] PALETTEENTRY *srcPalette, [in] void *srcBox ); HRESULT SaveTextureToFile( [in] BSTR destFile, [in] D3DXIMAGE_FILEFORMAT destFormat, [in] Direct3DBaseTexture8 *srcTexture, [in] PALETTEENTRY *srcPalette ); }; [ object, uuid(e7ff1301-96a5-11d3-ac85-00c04fc2c602), helpstring("DirectX8 root object functions"), local ] interface IDirectX8 : IUnknown { HRESULT DirectSoundCreate( [in] BSTR guid, [out, retval] DirectSound8 **ret ); HRESULT DirectSoundCaptureCreate( [in] BSTR guid, [out, retval] DirectSoundCapture8 **ret ); HRESULT GetDSEnum( [out, retval] DirectSoundEnum8 **ret ); HRESULT GetDSCaptureEnum( [out, retval] DirectSoundEnum8 **ret ); HRESULT DirectInputCreate( [out, retval] DirectInput8 **ret ); HRESULT DirectMusicLoaderCreate( [out, retval] DirectMusicLoader8 **ret ); HRESULT DirectMusicComposerCreate( [out, retval] DirectMusicComposer8 **ret ); HRESULT DirectMusicPerformanceCreate( [out, retval] DirectMusicPerformance8 **ret ); HRESULT CreateEvent( [in] DirectXEvent8 *event, [out, retval] LONG *h ); HRESULT SetEvent( [in] LONG eventid ); HRESULT DestroyEvent( [in] LONG eventid ); HRESULT CreateNewGuid( [out, retval] BSTR *retGuid ); HRESULT DirectPlayVoiceClientCreate( [out, retval] DirectPlayVoiceClient8 **ret ); HRESULT DirectPlayVoiceServerCreate( [out, retval] DirectPlayVoiceServer8 **ret ); HRESULT DirectPlayVoiceTestCreate( [out, retval] DirectPlayVoiceTest8 **ret ); HRESULT DirectXFileCreate( [out, retval] DirectXFile **ret ); HRESULT DirectPlayPeerCreate( [out, retval] DirectPlay8Peer **ret ); HRESULT DirectPlayServerCreate( [out, retval] DirectPlay8Server **ret ); HRESULT DirectPlayClientCreate( [out, retval] DirectPlay8Client **ret ); HRESULT DirectPlayAddressCreate( [out, retval] DirectPlay8Address **ret ); HRESULT Direct3DCreate( [out, retval] Direct3D8 **ret ); HRESULT DirectPlayLobbyClientCreate( [out, retval] DirectPlay8LobbyClient **ret ); HRESULT DirectPlayLobbiedApplicationCreate( [out, retval] DirectPlay8LobbiedApplication **ret ); }; [ uuid(58356c5d-0bfd-48ed-93c5-f4520b6233de), helpstring("D3DX8"), threading(both), progid("DIRECT.D3DX8.0"), vi_progid("DIRECT.D3DX8.0") ] coclass D3DX8 { interface ID3DX8; }; [ uuid(e7ff1300-96a5-11d3-ac85-00c04fc2c602), helpstring("DirectX8"), threading(both), progid("DIRECT.DirectX8.0"), vi_progid("DIRECT.DirectX8.0") ] coclass DirectX8 { interface IDirectX8; };