📄 dxfile8.pas
字号:
(*==========================================================================;
*
* 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 DXFile8;
{$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 = $00;
DXFILELOAD_FROMRESOURCE = $01;
DXFILELOAD_FROMMEMORY = $02;
DXFILELOAD_FROMSTREAM = $04;
DXFILELOAD_FROMURL = $08;
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:$4516ec43;D2:$8f20;D3:$11d0;D4:($9b,$6d,$00,$00,$c0,$78,$1b,$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 = (
$78, $6f, $66, $20, $30, $33, $30, $32, $62, $69, $6e, $20, $30, $30, $36, $34, $1f, 0, $1,
0, $6, 0, 0, 0, $48, $65, $61, $64, $65, $72, $a, 0, $5, 0, $43, $ab, $82, $3d, $da,
$62, $cf, $11, $ab, $39, 0, $20, $af, $71, $e4, $33, $28, 0, $1, 0, $5, 0, 0, 0, $6d,
$61, $6a, $6f, $72, $14, 0, $28, 0, $1, 0, $5, 0, 0, 0, $6d, $69, $6e, $6f, $72, $14,
0, $29, 0, $1, 0, $5, 0, 0, 0, $66, $6c, $61, $67, $73, $14, 0, $b, 0, $1f, 0,
$1, 0, $6, 0, 0, 0, $56, $65, $63, $74, $6f, $72, $a, 0, $5, 0, $5e, $ab, $82, $3d,
$da, $62, $cf, $11, $ab, $39, 0, $20, $af, $71, $e4, $33, $2a, 0, $1, 0, $1, 0, 0, 0,
$78, $14, 0, $2a, 0, $1, 0, $1, 0, 0, 0, $79, $14, 0, $2a, 0, $1, 0, $1, 0,
0, 0, $7a, $14, 0, $b, 0, $1f, 0, $1, 0, $8, 0, 0, 0, $43, $6f, $6f, $72, $64,
$73, $32, $64, $a, 0, $5, 0, $44, $3f, $f2, $f6, $86, $76, $cf, $11, $8f, $52, 0, $40, $33,
$35, $94, $a3, $2a, 0, $1, 0, $1, 0, 0, 0, $75, $14, 0, $2a, 0, $1, 0, $1, 0,
0, 0, $76, $14, 0, $b, 0, $1f, 0, $1, 0, $9, 0, 0, 0, $4d, $61, $74, $72, $69,
$78, $34, $78, $34, $a, 0, $5, 0, $45, $3f, $f2, $f6, $86, $76, $cf, $11, $8f, $52, 0, $40,
$33, $35, $94, $a3, $34, 0, $2a, 0, $1, 0, $6, 0, 0, 0, $6d, $61, $74, $72, $69, $78,
$e, 0, $3, 0, $10, 0, 0, 0, $f, 0, $14, 0, $b, 0, $1f, 0, $1, 0, $9, 0,
0, 0, $43, $6f, $6c, $6f, $72, $52, $47, $42, $41, $a, 0, $5, 0, $e0, $44, $ff, $35, $7c,
$6c, $cf, $11, $8f, $52, 0, $40, $33, $35, $94, $a3, $2a, 0, $1, 0, $3, 0, 0, 0, $72,
$65, $64, $14, 0, $2a, 0, $1, 0, $5, 0, 0, 0, $67, $72, $65, $65, $6e, $14, 0, $2a,
0, $1, 0, $4, 0, 0, 0, $62, $6c, $75, $65, $14, 0, $2a, 0, $1, 0, $5, 0, 0,
0, $61, $6c, $70, $68, $61, $14, 0, $b, 0, $1f, 0, $1, 0, $8, 0, 0, 0, $43, $6f,
$6c, $6f, $72, $52, $47, $42, $a, 0, $5, 0, $81, $6e, $e1, $d3, $35, $78, $cf, $11, $8f, $52,
0, $40, $33, $35, $94, $a3, $2a, 0, $1, 0, $3, 0, 0, 0, $72, $65, $64, $14, 0, $2a,
0, $1, 0, $5, 0, 0, 0, $67, $72, $65, $65, $6e, $14, 0, $2a, 0, $1, 0, $4, 0,
0, 0, $62, $6c, $75, $65, $14, 0, $b, 0, $1f, 0, $1, 0, $c, 0, 0, 0, $49, $6e,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -