(*==========================================================================; * * Copyright (C) 1999 Microsoft Corporation. All Rights Reserved. * * File: dxfile.h * Content: Interfaces to access Rendermorthics eXtensible file format * * Direct3DX 8.0 Delphi adaptation by Alexey Barkovoy * E-Mail: clootie@reactor.ru * * completely revised by Tim Baumgarten * * Modified: 05-Nov-2001 * * Partly based upon : * DirectX 7.0 Delphi adaptation by * Erik Unger, e-Mail: DelphiDirectX@next-reality.com * * Lastest version can be downloaded from: * http://www.delphi-jedi.org/DelphiGraphics/ * ***************************************************************************) (*==========================================================================; * History : * * 05-Nov-2001 (Tim Baumgarten) : Added * DirectX File Template GUIDs (TID_DXFILEXXX) and Descriptions (DXFILE_XTEMPLATES). * 05-Nov-2001 (Tim Baumgarten) : Added DXFileErrorString. * ***************************************************************************) {$MINENUMSIZE 4} {$ALIGN ON} unit DXFile; {$IFDEF VER150} {$WARN UNSAFE_CODE OFF} {$WARN UNSAFE_TYPE OFF} {$WARN UNSAFE_CAST OFF} {$ENDIF} interface uses Windows; (*************************************************************************** * * Copyright (C) 1998-1999 Microsoft Corporation. All Rights Reserved. * * File: dxfile.h * * Content: DirectX File public header file * ***************************************************************************) function DXFileErrorString(DXErrorCode : HResult) : String; type TDXFileFormat = Cardinal; const DXFILEFORMAT_BINARY = 0; DXFILEFORMAT_TEXT = 1; DXFILEFORMAT_COMPRESSED = 2; type TDXFileLoadOptions = Cardinal; const DXFILELOAD_FROMFILE = {viewgit}{/viewgit}; DXFILELOAD_FROMRESOURCE = ; DXFILELOAD_FROMMEMORY = ; DXFILELOAD_FROMSTREAM = ; DXFILELOAD_FROMURL = ; type PDXFileLoadResource = ^TDXFileLoadResource; TDXFileLoadResource = packed record hModule : HModule; lpName : PChar; lpType : PChar; end; PDXFileLoadMemory = ^TDXFileLoadMemory; TDXFileLoadMemory = packed record lpMemory : Pointer; dSize : Cardinal; end; (* * DirectX File object types. *) type IDirectXFile = interface; IDirectXFileEnumObject = interface; IDirectXFileSaveObject = interface; IDirectXFileObject = interface; IDirectXFileData = interface; IDirectXFileDataReference = interface; IDirectXFileBinary = interface; (* * DirectX File interfaces. *) IDirectXFile = interface(IUnknown) ['{3D82AB40-62DA-11CF-AB39-0020AF71E433}'] function CreateEnumObject(const pvSource : Pointer; const dwLoadOptions : TDXFileLoadOptions; out ppEnumObj : IDirectXFileEnumObject) : HResult; stdcall; function CreateSaveObject(const szFileName : PChar; const dwFileFormat : TDXFileFormat; out ppSaveObj : IDirectXFileSaveObject) : HResult; stdcall; function RegisterTemplates(const pvData : Pointer; const cbSize : Cardinal) : HResult; stdcall; end; IDirectXFileEnumObject = interface (IUnknown) ['{3D82AB41-62DA-11CF-AB39-0020AF71E433}'] function GetNextDataObject(out ppDataObj : IDirectXFileData) : HResult; stdcall; function GetDataObjectById(const rguid : TGUID; out ppDataObj : IDirectXFileData) : HResult; stdcall; function GetDataObjectByName(const szName : PChar; out ppDataObj : IDirectXFileData) : HResult; stdcall; end; IDirectXFileSaveObject = interface (IUnknown) ['{3D82AB42-62DA-11CF-AB39-0020AF71E433}'] function SaveTemplates(const cTemplates : Cardinal; var ppguidTemplates : PGUID) : HResult; stdcall; function CreateDataObject(const rguidTemplate : TGUID; const szName : PChar; const pguid : PGUID; const cbSize : Cardinal; pvData: Pointer; out ppDataObj : IDirectXFileData) : HResult; stdcall; function SaveData(pDataObj : IDirectXFileData) : HResult; stdcall; end; IDirectXFileObject = interface (IUnknown) ['{3D82AB43-62DA-11CF-AB39-0020AF71E433}'] function GetName(const pstrNameBuf : PChar; dwBufLen : PLongWord) : HResult; stdcall; function GetId (out pGuidBuf : TGUID) : HResult; stdcall; end; IDirectXFileData = interface (IDirectXFileObject) ['{3D82AB44-62DA-11CF-AB39-0020AF71E433}'] function GetData(const szMember: PChar; var pcbSize : LongWord; out ppvData : Pointer) : HResult; stdcall; function GetType(out ppguid : PGUID) : HResult; stdcall; function GetNextObject(out ppChildObj : IDirectXFileObject) : HResult; stdcall; function AddDataObject(const pDataObj : IDirectXFileData) : HResult; stdcall; function AddDataReference(const szRef : PChar; const pguidRef : PGUID) : HResult; stdcall; function AddBinaryObject(const szName : PChar; const pguid : PGUID; const szMimeType : PChar; const pvData : Pointer; const cbSize : LongWord) : HResult; stdcall; end; IDirectXFileDataReference = interface (IDirectXFileObject) ['{3D82AB45-62DA-11CF-AB39-0020AF71E433}'] function Resolve(out ppDataObj : IDirectXFileData) : HResult; stdcall; end; IDirectXFileBinary = interface (IDirectXFileObject) ['{3D82AB46-62DA-11CF-AB39-0020AF71E433}'] function GetSize(out pcbSize : LongWord) : HResult; stdcall; function GetMimeType(out pszMimeType : PChar) : HResult; stdcall; function Read(pvData : Pointer; const cbSize : LongWord; out pcbRead : LongWord) : HResult; stdcall; end; (* * DirectXFile Object Class Id (for CoCreateInstance()) *) const CLSID_CDirectXFile: TGUID = '{4516EC43-8F20-11D0-9B6D-0000C0781BC3}'; // (D1:16ec43;D2:f20;D3:d0;D4:(b,d,{viewgit}{/viewgit},{viewgit}{/viewgit},$c0,,b,$c3)); (* * DirectX File Interface GUIDs. *) type IID_IDirectXFile = IDirectXFile; IID_IDirectXFileEnumObject = IDirectXFileEnumObject; IID_IDirectXFileSaveObject = IDirectXFileSaveObject; IID_IDirectXFileObject = IDirectXFileObject; IID_IDirectXFileData = IDirectXFileData; IID_IDirectXFileDataReference = IDirectXFileDataReference; IID_IDirectXFileBinary = IDirectXFileBinary; (* * DirectX File Header template's GUID. *) const TID_DXFILEHEADER : TGUID = '{3D82AB43-62DA-11CF-AB39-0020AF71E433}'; TID_DXFILEMESH : TGUID = '{3D82AB44-62DA-11CF-AB39-0020AF71E433}'; TID_DXFILEMVECTOR : TGUID = '{3D82AB5E-62DA-11CF-AB39-0020AF71E433}'; TID_DXFILEMESHFACE : TGUID = '{3D82AB5F-62DA-11CF-AB39-0020AF71E433}'; TID_DXFILEMATERIAL : TGUID = '{3D82AB4D-62DA-11CF-AB39-0020AF71E433}'; TID_DXFILEFRAME : TGUID = '{3D82AB46-62DA-11CF-AB39-0020AF71E433}'; TID_DXFILEFRAMETRANSFORMMATRIX : TGUID = '{F6F23F41-7686-11CF-8F52-0040333594A3}'; TID_DXFILEMESHMATERIALLIST : TGUID = '{F6F23F42-7686-11CF-8F52-0040333594A3}'; TID_DXFILEMESHTEXTURECOORDS : TGUID = '{F6F23F40-7686-11CF-8F52-0040333594A3}'; TID_DXFILEMESHNORMALS : TGUID = '{F6F23F43-7686-11CF-8F52-0040333594A3}'; TID_DXFILECOORDS2D : TGUID = '{F6F23F44-7686-11CF-8F52-0040333594A3}'; TID_DXFILEMATRIX4X4 : TGUID = '{F6F23F45-7686-11CF-8F52-0040333594A3}'; TID_DXFILEANIMATION : TGUID = '{3D82AB4F-62DA-11CF-AB39-0020AF71E433}'; TID_DXFILEANIMATIONSET : TGUID = '{3D82AB50-62DA-11CF-AB39-0020AF71E433}'; TID_DXFILEANIMATIONKEY : TGUID = '{10DD46A8-775B-11CF-8F52-0040333594A3}'; TID_DXFILEFLOATKEYS : TGUID = '{10DD46A9-775B-11CF-8F52-0040333594A3}'; TID_DXFILECOLORRGBA : TGUID = '{35FF44E0-6C7C-11CF-8F52-0040333594A3}'; TID_DXFILECOLORRGB : TGUID = '{D3E16E81-7835-11CF-8F52-0040333594A3}'; TID_DXFILETEXTUREFILENAME : TGUID = '{A42790E1-7810-11CF-8F52-0040333594A3}'; TID_DXFILEINDEXEDCOLOR : TGUID = '{1630B820-7842-11CF-8F52-0040333594A3}'; TID_DXFILEBOOLEAN : TGUID = '{4885AE61-78E8-11CF-8F52-0040333594A3}'; TID_DXFILEBOOLEAN2D : TGUID = '{4885AE63-78E8-11CF-8F52-0040333594A3}'; TID_DXFILEMESHVERTEXCOLORS : TGUID = '{1630B821-7842-11CF-8F52-0040333594A3}'; TID_DXFILEMESHFACEWRAPS : TGUID = '{ED1EC5C0-C0A8-11D0-941C-0080C80CFA7B}'; TID_DXFILETIMEDFLOATKEYS : TGUID = '{F406B180-7B3B-11CF-8F52-0040333594A3}'; TID_DXFILEANIMATIONOPTIONS : TGUID = '{E2BF56C0-840F-11CF-8F52-0040333594A3}'; TID_DXFILEQUATERNION : TGUID = '{10DD46A3-775B-11cf-8F52-0040333594A3}'; TID_DXFILEPATCH : TGUID = '{A3EB5D44-FC22-429D-9AFB-3221CB9719A6}'; TID_DXFILEPATCHMESH : TGUID = '{D02C95CC-EDBA-4305-9B5D-1820D7704BBF}'; TID_DXFILEVERTEXDUPLICATIONINDICES : TGUID = '{B8D65549-D7C9-4995-89CF-53A9A8B031E3}'; TID_DXFILEXSKINMESHHEADER : TGUID = '{3CF169CE-FF7C-44ab-93C0-F78F62D172E2}'; TID_DXFILESKINWEIGHTS : TGUID = '{6F0D123B-BAD2-4167-A0D0-80224F25FABB}'; DXFILE_XTEMPLATE_BYTES = 3278; DXFILE_XTEMPLATES : array [0..DXFILE_XTEMPLATE_BYTES-1] of Byte = ( , f, , , , , , , , , e, , , , , , f, 0, , 0, , 0, 0, 0, , , , , , , $a, 0, , 0, , $ab, , d, $da, , $cf, , $ab, , 0, , $af, , $e4, , , 0, , 0, , 0, 0, 0, d, , a, f, , , 0, , 0, , 0, , 0, 0, 0, d, , e, f, , , 0, , 0, , 0, , 0, 0, 0, , c, , , , , 0, $b, 0, f, 0, , 0, , 0, 0, 0, , , , , f, , $a, 0, , 0, e, $ab, , d, $da, , $cf, , $ab, , 0, , $af, , $e4, , a, 0, , 0, , 0, 0, 0, , , 0, a, 0, , 0, , 0, 0, 0, , , 0, a, 0, , 0, , 0, 0, 0, a, , 0, $b, 0, f, 0, , 0, , 0, 0, 0, , f, f, , , , , , $a, 0, , 0, , f, $f2, $f6, , , $cf, , f, , 0, , , , , $a3, a, 0, , 0, , 0, 0, 0, , , 0, a, 0, , 0, , 0, 0, 0, , , 0, $b, 0, f, 0, , 0, , 0, 0, 0, d, , , , , , , , , $a, 0, , 0, , f, $f2, $f6, , , $cf, , f, , 0, , , , , $a3, , 0, a, 0, , 0, , 0, 0, 0, d, , , , , , $e, 0, , 0, , 0, 0, 0, $f, 0, , 0, $b, 0, f, 0, , 0, , 0, 0, 0, , f, c, f, , , , , , $a, 0, , 0, $e0, , $ff, , c, c, $cf, , f, , 0, , , , , $a3, a, 0, , 0, , 0, 0, 0, , , , , 0, a, 0, , 0, , 0, 0, 0, , , , , e, , 0, a, 0, , 0, , 0, 0, 0, , c, , , , 0, a, 0, , 0, , 0, 0, 0, , c, , , , , 0, $b, 0, f, 0, , 0, , 0, 0, 0, , f, c, f, , , , , $a, 0, , 0, , e, $e1, $d3, , , $cf, , f, , 0, , , , , $a3, a, 0, , 0, , 0, 0, 0, , , , , 0, a, 0, , 0, , 0, 0, 0, , , , , e, , 0, a, 0, , 0, , 0, 0, 0, , c, , , , 0, $b, 0, f, 0, , 0, $c, 0, 0, 0, , e, , , , , , , f, c, f, , $a, 0, , 0, , $b8, , , , , $cf, , f, , 0, , , , , $a3, , 0, , 0, , 0, 0, 0, , e, , , , , 0, , 0, , 0, 0, 0, , f, c, f, , , , , , , 0, $a, 0, 0, 0, , e, , , , , f, c, f, , , 0, $b, 0, f, 0, , 0, , 0, 0, 0, , f, f, c, , , e, $a, 0, , 0, $a0, $a6, d, , , $ca, $d0, , , c, 0, , $c8, $c, $fa, b, , 0, , 0, , 0, 0, 0, , , , , , , c, , , , 0, $b, 0, f, 0, , 0, , 0, 0, 0, , f, f, c, , , e, , , $a, 0, , 0, , $ae, , , $e8, , $cf, , f, , 0, , , , , $a3, , 0, , 0, 0, 0, , f, f, c, , , e, , 0, , 0, 0, 0, , , 0, , 0, , 0, 0, 0, , f, f, c, , , e, , 0, , 0, 0, 0, , , 0, $b, 0, f, 0, , 0, $c, 0, 0, 0, d, , , , , , , c, , , , , $a, 0, , 0, , $ae, , , $e8, , $cf, , f, , 0, , , , , $a3, , 0, , 0, 0, 0, , f, f, c, , , e, , 0, , 0, 0, 0, , , 0, , 0, , 0, 0, 0, , f, f, c, , , e, , 0, , 0, 0, 0, , , 0, $b, 0, f, 0, , 0, $f, 0, 0, 0, , , , , , , , , , c, , e, , d, , $a, 0, , 0, $e1, , , $a4, , , $cf, , f, , 0, , , , , $a3, , 0, , 0, , 0, 0, 0, , , c, , e, , d, , , 0, $b, 0, f, 0, , 0, , 0, 0, 0, d, , , , , , , c, $a, 0, , 0, d, $ab, , d, $da, , $cf, , $ab, , 0, , $af, , $e4, , , 0, , 0, 0, 0, , f, c, f, , , , , , , 0, , 0, 0, 0, , , , , , f, c, f, , , 0, a, 0, , 0, , 0, 0, 0, , f, , , , , 0, , 0, , 0, 0, 0, , f, c, f, , , , , , 0, $d, 0, 0, 0, , , , , , c, , , , f, c, f, , , 0, , 0, , 0, 0, 0, , f, c, f, , , , , , 0, $d, 0, 0, 0, , d, , , , , , , , f, c, f, , , 0, $e, 0, , 0, , 0, , 0, $f, 0, $b, 0, f, 0, , 0, , 0, 0, 0, d, , , , , , , , $a, 0, , 0, f, $ab, , d, $da, , $cf, , $ab, , 0, , $af, , $e4, , , 0, , 0, , 0, 0, 0, e, , , , , , , , , , , , e, , , , , , , 0, , 0, , 0, , 0, , 0, 0, 0, , , , , , , , , , , , e, , , , , , $e, 0, , 0, , 0, 0, 0, e, , , , , , , , , , , , e, , , , , , $f, 0, , 0, $b, 0, f, 0, , 0, $d, 0, 0, 0, d, , , , , , , , , , , , , $a, 0, , 0, $c0, $c5, e, $ed, $a8, $c0, $d0, , , c, 0, , $c8, $c, $fa, b, , 0, , 0, $f, 0, 0, 0, e, , , , , , , , , , , c, , , , , 0, , 0, , 0, , 0, 0, 0, , f, f, c, , , e, , , , 0, $e, 0, 0, 0, , , , , , , , , , , c, , , , $e, 0, , 0, $f, 0, 0, 0, e, , , , , , , , , , , c, , , , $f, 0, , 0, $b, 0, f, 0, , 0, , 0, 0, 0, d, , , , , , , , , , , , f, f, , , , $a, 0, , 0, , f, $f2, $f6, , , $cf, , f, , 0, , , , , $a3, , 0, , 0, $e, 0, 0, 0, e, , , , , , , , , f, f, , , , , 0, , 0, , 0, , 0, 0, 0, , f, f, , , , , , , 0, $d, 0, 0, 0, , , , , , , , , f, f, , , , $e, 0, , 0, $e, 0, 0, 0, e, , , , , , , , , f, f, , , , $f, 0, , 0, $b, 0, f, 0, , 0, , 0, 0, 0, d, , , , d, , , , , , , c, c, , , , $a, 0, , 0, , f, $f2, $f6, , , $cf, , f, , 0, , , , , $a3, , 0, , 0, $a, 0, 0, 0, e, d, , , , , , , c, , , 0, , 0, , 0, $c, 0, 0, 0, e, , , , , , e, , , , , , , 0, , 0, , 0, , 0, $b, 0, 0, 0, , , , , , e, , , , , , $e, 0, , 0, $c, 0, 0, 0, e, , , , , , e, , , , , , $f, 0, , 0, $e, 0, , 0, , 0, 0, 0, d, , , , , , , c, $f, 0, $b, 0, f, 0, , 0, $b, 0, 0, 0, d, , , , e, f, , d, , c, , $a, 0, , 0, , f, $f2, $f6, , , $cf, , f, , 0, , , , , $a3, , 0, , 0, , 0, 0, 0, e, e, f, , d, , c, , , 0, , 0, , 0, , 0, 0, 0, , , , , f, , , 0, , 0, 0, 0, e, f, , d, , c, , $e, 0, , 0, , 0, 0, 0, e, e, f, , d, , c, , $f, 0, , 0, , 0, , 0, $c, 0, 0, 0, e, , , , , e, f, , d, , c, , , 0, , 0, , 0, , 0, 0, 0, d, , , , , , , , , 0, $b, 0, 0, 0, , , , , e, f, , d, , c, , $e, 0, , 0, $c, 0, 0, 0, e, , , , , e, f, , d, , c, , $f, 0, , 0, $b, 0, f, 0, , 0, , 0, 0, 0, d, , , , , , , , , , , f, c, f, , , $a, 0, , 0, , $b8, , , , , $cf, , f, , 0, , , , , $a3, , 0, , 0, $d, 0, 0, 0, e, , , , , , , , f, c, f, , , , 0, , 0, , 0, $c, 0, 0, 0, , e, , , , , , , f, c, f, , , 0, $c, 0, 0, 0, , , , , , , , f, c, f, , , $e, 0, , 0, $d, 0, 0, 0, e, , , , , , , , f, c, f, , , $f, 0, , 0, $b, 0, f, 0, , 0, , 0, 0, 0, d, , , , $a, 0, , 0, , $ab, , d, $da, , $cf, , $ab, , 0, , $af, , $e4, , , 0, , 0, , 0, 0, 0, e, , , , , , , , , , 0, , 0, , 0, , 0, 0, 0, , , , , f, , , 0, , 0, 0, 0, , , , , , , , , $e, 0, , 0, , 0, 0, 0, e, , , , , , , , , $f, 0, , 0, , 0, , 0, , 0, 0, 0, e, , , , , , , 0, , 0, , 0, , 0, 0, 0, d, , , , , , , , , 0, , 0, 0, 0, , , , , , $e, 0, , 0, , 0, 0, 0, e, , , , , , $f, 0, , 0, $e, 0, , 0, , 0, , 0, $f, 0, $b, 0, f, 0, , 0, , 0, 0, 0, , , , d, , , , , e, , , f, , d, d, , , , , , $a, 0, , 0, , f, $f2, $f6, , , $cf, , f, , 0, , , , , $a3, , 0, , 0, 0, 0, d, , , , , , , , , , 0, $b, 0, 0, 0, , , , d, , d, , , , , , , 0, $b, 0, f, 0, , 0, , 0, 0, 0, , , , d, , $a, 0, , 0, , $ab, , d, $da, , $cf, , $ab, , 0, , $af, , $e4, , $e, 0, , 0, , 0, , 0, $f, 0, $b, 0, f, 0, , 0, , 0, 0, 0, , c, f, , , b, , , , $a, 0, , 0, $a9, , $dd, , b, , $cf, , f, , 0, , , , , $a3, , 0, , 0, , 0, 0, 0, e, , , c, , , , , 0, , 0, a, 0, , 0, , 0, 0, 0, , , c, , , , $e, 0, , 0, , 0, 0, 0, e, , , c, , , , $f, 0, , 0, $b, 0, f, 0, , 0, $e, 0, 0, 0, , , d, , , , c, f, , , b, , , , $a, 0, , 0, , $b1, , $f4, b, b, $cf, , f, , 0, , , , , $a3, , 0, , 0, , 0, 0, 0, , , d, , , 0, , 0, , 0, 0, 0, , c, f, , , b, , , , , 0, , 0, 0, 0, , , b, , , , , 0, $b, 0, f, 0, , 0, $c, 0, 0, 0, , e, , d, , , , f, e, b, , , $a, 0, , 0, $a8, , $dd, , b, , $cf, , f, , 0, , , , , $a3, , 0, , 0, , 0, 0, 0, b, , , , , , , , 0, , 0, , 0, , 0, 0, 0, e, b, , , , , 0, , 0, , 0, $e, 0, 0, 0, , , d, , , , c, f, , , b, , , , , 0, , 0, 0, 0, b, , , , $e, 0, , 0, , 0, 0, 0, e, b, , , , $f, 0, , 0, $b, 0, f, 0, , 0, , 0, 0, 0, , e, , d, , , , f, e, f, , , , f, e, , $a, 0, , 0, $c0, , $bf, $e2, $f, , $cf, , f, , 0, , , , , $a3, , 0, , 0, $a, 0, 0, 0, f, , , e, , c, f, , , , , 0, , 0, , 0, $f, 0, 0, 0, , f, , , , , f, e, , , , c, , , , , 0, $b, 0, f, 0, , 0, , 0, 0, 0, , e, , d, , , , f, e, $a, 0, , 0, f, $ab, , d, $da, , $cf, , $ab, , 0, , $af, , $e4, , $e, 0, , 0, , 0, , 0, $f, 0, $b, 0, f, 0, , 0, $c, 0, 0, 0, , e, , d, , , , f, e, , , , $a, 0, , 0, , $ab, , d, $da, , $cf, , $ab, , 0, , $af, , $e4, , $e, 0, , 0, , 0, 0, 0, , e, , d, , , , f, e, $f, 0, $b, 0, f, 0, , 0, $a, 0, 0, 0, , e, c, , e, , , , , , $a, 0, , 0, $a0, $ee, , a, $b1, , $d0, , $ab, , 0, , $af, , $e4, , $e, 0, , 0, , 0, 0, 0, , , e, , , , $f, 0, $b, 0, f, 0, , 0, , 0, 0, 0, , , c, $a, 0, , 0, $a1, $ee, , a, $b1, , $d0, , $ab, , 0, , $af, , $e4, , , 0, , 0, , 0, 0, 0, e, , , c, , , 0, , 0, , 0, , 0, , 0, 0, 0, , , c, , $e, 0, , 0, , 0, 0, 0, e, , , c, , $f, 0, , 0, $b, 0, f, 0, , 0, $f, 0, 0, 0, , , f, , , , , , , , , d, , , , $a, 0, , 0, , $c3, , a, d, , $d0, , , c, 0, , $c8, $c, $fa, b, $e, 0, , 0, , 0, 0, 0, , , c, , 0, , 0, $a, 0, 0, 0, , e, c, , e, , , , , , $f, 0, $b, 0, f, 0, , 0, , 0, 0, 0, , , , , $a, 0, , 0, $e0, , , $a4, , , $cf, , f, , 0, , , , , $a3, , 0, , 0, , 0, 0, 0, , , , , , , 0, , 0, , 0, , 0, 0, 0, , , , , , , 0, , 0, , 0, , 0, 0, 0, , , , , , , 0, , 0, d, 0, , 0, , 0, 0, 0, , , , , , $e, 0, , 0, , 0, 0, 0, $f, 0, , 0, $b, 0, f, 0, , 0, $e, 0, 0, 0, , , , , e, , , , f, , , , , , $a, 0, , 0, $e0, , $f, f, $e1, $bf, $d1, , , $c0, 0, $a0, $c9, , , , , 0, , 0, , 0, 0, 0, b, , , , 0, , 0, , 0, , 0, 0, 0, , , c, , , , 0, $b, 0, f, 0, , 0, $b, 0, 0, 0, , , f, , , , , , , , , $a, 0, , 0, $e1, , $f, f, $e1, $bf, $d1, , , $c0, 0, $a0, $c9, , , , $e, 0, , 0, $e, 0, 0, 0, , , , , e, , , , f, , , , , , $f, 0, $b, 0, f, 0, , 0, $e, 0, 0, 0, , , , , , e, , c, , , , , , c, $a, 0, , 0, $a0, a, , , $ba, $bd, $d1, , , $c0, 0, $a0, $c9, , , , , 0, , 0, 0, 0, , , , , , 0, , 0, 0, 0, , , , , , , , , , e, , c, , , , , , c, , 0, $e, 0, , 0, , 0, , 0, $f, 0, $b, 0, f, 0, , 0, $b, 0, 0, 0, , , , , , , , e, , , , $a, 0, , 0, $a0, e, d, f, a, $d5, $d1, , , $c0, 0, $a0, $c9, , , , , 0, , 0, $c, 0, 0, 0, , , , , , , , , e, , , , , 0, $b, 0); (* * DirectX File errors. *) const _FACD3D = 6; //#define MAKE_DDHRESULT( code ) MAKE_HRESULT( 1, _FACD3D, code ) function MAKE_DDHRESULT(Code: DWord): DWord; const MAKE_DDHRESULT_D = (1 shl 31) or (_FACD3D shl 16); DXFILE_OK = 0; DXFILEERR_BADOBJECT = HResult(MAKE_DDHRESULT_D or 850); DXFILEERR_BADVALUE = HResult(MAKE_DDHRESULT_D or 851); DXFILEERR_BADTYPE = HResult(MAKE_DDHRESULT_D or 852); DXFILEERR_BADSTREAMHANDLE = HResult(MAKE_DDHRESULT_D or 853); DXFILEERR_BADALLOC = HResult(MAKE_DDHRESULT_D or 854); DXFILEERR_NOTFOUND = HResult(MAKE_DDHRESULT_D or 855); DXFILEERR_NOTDONEYET = HResult(MAKE_DDHRESULT_D or 856); DXFILEERR_FILENOTFOUND = HResult(MAKE_DDHRESULT_D or 857); DXFILEERR_RESOURCENOTFOUND = HResult(MAKE_DDHRESULT_D or 858); DXFILEERR_URLNOTFOUND = HResult(MAKE_DDHRESULT_D or 859); DXFILEERR_BADRESOURCE = HResult(MAKE_DDHRESULT_D or 860); DXFILEERR_BADFILETYPE = HResult(MAKE_DDHRESULT_D or 861); DXFILEERR_BADFILEVERSION = HResult(MAKE_DDHRESULT_D or 862); DXFILEERR_BADFILEFLOATSIZE = HResult(MAKE_DDHRESULT_D or 863); DXFILEERR_BADFILECOMPRESSIONTYPE = HResult(MAKE_DDHRESULT_D or 864); DXFILEERR_BADFILE = HResult(MAKE_DDHRESULT_D or 865); DXFILEERR_PARSEERROR = HResult(MAKE_DDHRESULT_D or 866); DXFILEERR_NOTEMPLATE = HResult(MAKE_DDHRESULT_D or 867); DXFILEERR_BADARRAYSIZE = HResult(MAKE_DDHRESULT_D or 868); DXFILEERR_BADDATAREFERENCE = HResult(MAKE_DDHRESULT_D or 869); DXFILEERR_INTERNALERROR = HResult(MAKE_DDHRESULT_D or 870); DXFILEERR_NOMOREOBJECTS = HResult(MAKE_DDHRESULT_D or 871); DXFILEERR_BADINTRINSICS = HResult(MAKE_DDHRESULT_D or 872); DXFILEERR_NOMORESTREAMHANDLES = HResult(MAKE_DDHRESULT_D or 873); DXFILEERR_NOMOREDATA = HResult(MAKE_DDHRESULT_D or 874); DXFILEERR_BADCACHEFILE = HResult(MAKE_DDHRESULT_D or 875); DXFILEERR_NOINTERNET = HResult(MAKE_DDHRESULT_D or 876); (* * API for creating IDirectXFile interface. *) function DirectXFileCreate(out lplpDirectXFile : IDirectXFile) : HResult; stdcall; implementation //#define MAKE_D3DHRESULT( code ) MAKE_HRESULT( 1, _FACD3D, code ) function MAKE_DDHRESULT(Code: DWord): DWord; begin Result:= DWord((1 shl 31) or (_FACD3D shl 16)) or Code; end; function DXFileErrorString(DXErrorCode : HResult) : String; begin case DXErrorCode of HResult(DXFILE_OK) : Result := 'Command completed successfully.'; HResult(DXFILEERR_BADOBJECT) : Result := 'Object is invalid.'; HResult(DXFILEERR_BADVALUE) : Result := 'Parameter is invalid.'; HResult(DXFILEERR_BADTYPE) : Result := 'Object type is invalid.'; HResult(DXFILEERR_BADSTREAMHANDLE) : Result := 'Streamhandle is invalid.'; //Not in Docu. HResult(DXFILEERR_BADALLOC) : Result := 'Memory allocation failed.'; HResult(DXFILEERR_NOTFOUND) : Result := 'Object could not be found.'; HResult(DXFILEERR_NOTDONEYET) : Result := 'Operation has not completed.'; HResult(DXFILEERR_FILENOTFOUND) : Result := 'File could not be found.'; HResult(DXFILEERR_RESOURCENOTFOUND) : Result := 'Resource could not be found.'; HResult(DXFILEERR_URLNOTFOUND) : Result := 'URL could not be found'; HResult(DXFILEERR_BADRESOURCE) : Result := 'Resource is invalid.'; HResult(DXFILEERR_BADFILETYPE) : Result := 'File is not a DirectX (.x) file.'; HResult(DXFILEERR_BADFILEVERSION) : Result := 'File version is not valid.'; HResult(DXFILEERR_BADFILEFLOATSIZE) : Result := 'Floating-point size is invalid.'; HResult(DXFILEERR_BADFILECOMPRESSIONTYPE) : Result := 'File compression type is invalid.'; HResult(DXFILEERR_BADFILE) : Result := 'File is invalid.'; HResult(DXFILEERR_PARSEERROR) : Result := 'File could not be parsed.'; HResult(DXFILEERR_NOTEMPLATE) : Result := 'No template available.'; HResult(DXFILEERR_BADARRAYSIZE) : Result := 'Array size is invalid.'; HResult(DXFILEERR_BADDATAREFERENCE) : Result := 'Data reference is invalid.'; HResult(DXFILEERR_INTERNALERROR) : Result := 'Internal error occurred.'; HResult(DXFILEERR_NOMOREOBJECTS) : Result := 'All objects have been enumerated.'; HResult(DXFILEERR_BADINTRINSICS) : Result := 'Intrinsics are invalid.'; HResult(DXFILEERR_NOMORESTREAMHANDLES) : Result := 'No stream handles are available.'; HResult(DXFILEERR_NOMOREDATA) : Result := 'No further data is available.'; HResult(DXFILEERR_BADCACHEFILE) : Result := 'The cache file containing the .x file date is invalid. A cache file contains data retrieved from the network, cached on the hard disk, and retrieved in subsequent requests.'; HResult(DXFILEERR_NOINTERNET) : Result := 'Internet connection not found.'; else Result := 'Unknown Error'; end; end; (* * API for creating IDirectXFile interface. *) const DXFileDLL = 'D3DXOF.DLL'; function DirectXFileCreate; external DXFileDLL; end.