5 #if !defined( __D3DX9XOF_H__ )
8 #if defined( __cplusplus )
12 #if defined( _WIN32 ) && !defined( _NO_COM )
13 DEFINE_GUID( IID_ID3DXFile
, 0xcef08CF9, 0x7B4F, 0x4429, 0x96, 0x24, 0x2A, 0x69, 0x0A, 0x93, 0x32, 0x01 );
14 DEFINE_GUID( IID_ID3DXFileSaveObject
, 0xcef08CFA, 0x7B4F, 0x4429, 0x96, 0x24, 0x2A, 0x69, 0x0A, 0x93, 0x32, 0x01 );
15 DEFINE_GUID( IID_ID3DXFileSaveData
, 0xcef08CFB, 0x7B4F, 0x4429, 0x96, 0x24, 0x2A, 0x69, 0x0A, 0x93, 0x32, 0x01 );
16 DEFINE_GUID( IID_ID3DXFileEnumObject
, 0xcef08CFC, 0x7B4F, 0x4429, 0x96, 0x24, 0x2A, 0x69, 0x0A, 0x93, 0x32, 0x01 );
17 DEFINE_GUID( IID_ID3DXFileData
, 0xcef08CFD, 0x7B4F, 0x4429, 0x96, 0x24, 0x2A, 0x69, 0x0A, 0x93, 0x32, 0x01 );
20 #define D3DXF_FILEFORMAT_BINARY 0
21 #define D3DXF_FILEFORMAT_TEXT 1
22 #define D3DXF_FILEFORMAT_COMPRESSED 2
23 #define D3DXF_FILESAVE_TOFILE 0x00
24 #define D3DXF_FILESAVE_TOWFILE 0x01
25 #define D3DXF_FILELOAD_FROMFILE 0x00
26 #define D3DXF_FILELOAD_FROMWFILE 0x01
27 #define D3DXF_FILELOAD_FROMRESOURCE 0x02
28 #define D3DXF_FILELOAD_FROMMEMORY 0x03
29 #define _FACD3DXF 0x876
30 #define D3DXFERR_BADOBJECT MAKE_HRESULT( 1, _FACD3DXF, 900 )
31 #define D3DXFERR_BADVALUE MAKE_HRESULT( 1, _FACD3DXF, 901 )
32 #define D3DXFERR_BADTYPE MAKE_HRESULT( 1, _FACD3DXF, 902 )
33 #define D3DXFERR_NOTFOUND MAKE_HRESULT( 1, _FACD3DXF, 903 )
34 #define D3DXFERR_NOTDONEYET MAKE_HRESULT( 1, _FACD3DXF, 904 )
35 #define D3DXFERR_FILENOTFOUND MAKE_HRESULT( 1, _FACD3DXF, 905 )
36 #define D3DXFERR_RESOURCENOTFOUND MAKE_HRESULT( 1, _FACD3DXF, 906 )
37 #define D3DXFERR_BADRESOURCE MAKE_HRESULT( 1, _FACD3DXF, 907 )
38 #define D3DXFERR_BADFILETYPE MAKE_HRESULT( 1, _FACD3DXF, 908 )
39 #define D3DXFERR_BADFILEVERSION MAKE_HRESULT( 1, _FACD3DXF, 909 )
40 #define D3DXFERR_BADFILEFLOATSIZE MAKE_HRESULT( 1, _FACD3DXF, 910 )
41 #define D3DXFERR_BADFILE MAKE_HRESULT( 1, _FACD3DXF, 911 )
42 #define D3DXFERR_PARSEERROR MAKE_HRESULT( 1, _FACD3DXF, 912 )
43 #define D3DXFERR_BADARRAYSIZE MAKE_HRESULT( 1, _FACD3DXF, 913 )
44 #define D3DXFERR_BADDATAREFERENCE MAKE_HRESULT( 1, _FACD3DXF, 914 )
45 #define D3DXFERR_NOMOREOBJECTS MAKE_HRESULT( 1, _FACD3DXF, 915 )
46 #define D3DXFERR_NOMOREDATA MAKE_HRESULT( 1, _FACD3DXF, 916 )
47 #define D3DXFERR_BADCACHEFILE MAKE_HRESULT( 1, _FACD3DXF, 917 )
49 typedef DWORD D3DXF_FILEFORMAT
;
50 typedef DWORD D3DXF_FILESAVEOPTIONS
;
51 typedef DWORD D3DXF_FILELOADOPTIONS
;
53 typedef struct _D3DXF_FILELOADMEMORY
57 } D3DXF_FILELOADMEMORY
;
59 typedef struct _D3DXF_FILELOADRESOURCE
64 } D3DXF_FILELOADRESOURCE
;
67 #if defined( __cplusplus )
68 #if !defined( DECLSPEC_UUID )
70 #define DECLSPEC_UUID( x ) __declspec( uuid( x ) )
72 #define DECLSPEC_UUID( x )
76 #if defined( _COM_SMARTPTR_TYPEDEF )
77 interface
DECLSPEC_UUID( "CEF08CF9-7B4F-4429-9624-2A690A933201" ) ID3DXFile
;
78 interface
DECLSPEC_UUID( "CEF08CFA-7B4F-4429-9624-2A690A933201" ) ID3DXFileSaveObject
;
79 interface
DECLSPEC_UUID( "CEF08CFB-7B4F-4429-9624-2A690A933201" ) ID3DXFileSaveData
;
80 interface
DECLSPEC_UUID( "CEF08CFC-7B4F-4429-9624-2A690A933201" ) ID3DXFileEnumObject
;
81 interface
DECLSPEC_UUID( "CEF08CFD-7B4F-4429-9624-2A690A933201" ) ID3DXFileData
;
86 #define INTERFACE ID3DXFile
87 DECLARE_INTERFACE_( ID3DXFile
, IUnknown
)
89 STDMETHOD( QueryInterface
)( THIS_ REFIID
, LPVOID
* ) PURE
;
90 STDMETHOD_( ULONG
, AddRef
)( THIS
) PURE
;
91 STDMETHOD_( ULONG
, Release
)( THIS
) PURE
;
92 STDMETHOD( CreateEnumObject
)( THIS_ LPCVOID
, D3DXF_FILELOADOPTIONS
, ID3DXFileEnumObject
** ) PURE
;
93 STDMETHOD( CreateSaveObject
)( THIS_ LPCVOID
, D3DXF_FILESAVEOPTIONS
, D3DXF_FILEFORMAT
, ID3DXFileSaveObject
** ) PURE
;
94 STDMETHOD( RegisterTemplates
)( THIS_ LPCVOID
, SIZE_T
) PURE
;
95 STDMETHOD( RegisterEnumTemplates
)( THIS_ ID3DXFileEnumObject
* ) PURE
;
99 #define INTERFACE ID3DXFileEnumObject
100 DECLARE_INTERFACE_( ID3DXFileEnumObject
, IUnknown
)
102 STDMETHOD( QueryInterface
)( THIS_ REFIID
, LPVOID
* ) PURE
;
103 STDMETHOD_( ULONG
, AddRef
)( THIS
) PURE
;
104 STDMETHOD_( ULONG
, Release
)( THIS
) PURE
;
105 STDMETHOD( GetFile
)( THIS_ ID3DXFile
** ) PURE
;
106 STDMETHOD( GetChildren
)( THIS_ SIZE_T
* ) PURE
;
107 STDMETHOD( GetChild
)( THIS_ SIZE_T
, ID3DXFileData
** ) PURE
;
108 STDMETHOD( GetDataObjectById
)( THIS_ REFGUID
, ID3DXFileData
** ) PURE
;
109 STDMETHOD( GetDataObjectByName
)( THIS_ LPCSTR
, ID3DXFileData
** ) PURE
;
114 #define INTERFACE ID3DXFileData
116 DECLARE_INTERFACE_( ID3DXFileData
, IUnknown
)
118 STDMETHOD( QueryInterface
)( THIS_ REFIID
, LPVOID
* ) PURE
;
119 STDMETHOD_( ULONG
, AddRef
)( THIS
) PURE
;
120 STDMETHOD_( ULONG
, Release
)( THIS
) PURE
;
121 STDMETHOD( GetEnum
)( THIS_ ID3DXFileEnumObject
** ) PURE
;
122 STDMETHOD( GetName
)( THIS_ LPSTR
, SIZE_T
* ) PURE
;
123 STDMETHOD( GetId
)( THIS_ LPGUID
) PURE
;
124 STDMETHOD( Lock
)( THIS_ SIZE_T
*, LPCVOID
* ) PURE
;
125 STDMETHOD( Unlock
)( THIS
) PURE
;
126 STDMETHOD( GetType
)( THIS_ GUID
* ) PURE
;
127 STDMETHOD_( BOOL
, IsReference
)( THIS
) PURE
;
128 STDMETHOD( GetChildren
)( THIS_ SIZE_T
* ) PURE
;
129 STDMETHOD( GetChild
)( THIS_ SIZE_T
, ID3DXFileData
** ) PURE
;
133 #define INTERFACE ID3DXFileSaveData
134 DECLARE_INTERFACE_( ID3DXFileSaveData
, IUnknown
)
136 STDMETHOD( QueryInterface
)( THIS_ REFIID
, LPVOID
* ) PURE
;
137 STDMETHOD_( ULONG
, AddRef
)( THIS
) PURE
;
138 STDMETHOD_( ULONG
, Release
)( THIS
) PURE
;
139 STDMETHOD( GetSave
)( THIS_ ID3DXFileSaveObject
** ) PURE
;
140 STDMETHOD( GetName
)( THIS_ LPSTR
, SIZE_T
* ) PURE
;
141 STDMETHOD( GetId
)( THIS_ LPGUID
) PURE
;
142 STDMETHOD( GetType
)( THIS_ GUID
* ) PURE
;
143 STDMETHOD( AddDataObject
)( THIS_ REFGUID
, LPCSTR
, CONST GUID
*, SIZE_T
, LPCVOID
, ID3DXFileSaveData
** ) PURE
;
144 STDMETHOD( AddDataReference
)( THIS_ LPCSTR
, CONST GUID
* ) PURE
;
148 #define INTERFACE ID3DXFileSaveObject
149 DECLARE_INTERFACE_( ID3DXFileSaveObject
, IUnknown
)
151 STDMETHOD( QueryInterface
)( THIS_ REFIID
, LPVOID
* ) PURE
;
152 STDMETHOD_( ULONG
, AddRef
)( THIS
) PURE
;
153 STDMETHOD_( ULONG
, Release
)( THIS
) PURE
;
154 STDMETHOD( GetFile
)( THIS_ ID3DXFile
** ) PURE
;
155 STDMETHOD( AddDataObject
)( THIS_ REFGUID
, LPCSTR
, CONST GUID
*, SIZE_T
, LPCVOID
, ID3DXFileSaveData
** ) PURE
;
156 STDMETHOD( Save
)( THIS
) PURE
;
160 #define WIN_TYPES(itype, ptype) typedef interface itype *LP##ptype, **LPLP##ptype
162 WIN_TYPES(ID3DXFile
, D3DXFILE
);
163 WIN_TYPES(ID3DXFileEnumObject
, D3DXFILEENUMOBJECT
);
164 WIN_TYPES(ID3DXFileSaveObject
, D3DXFILESAVEOBJECT
);
165 WIN_TYPES(ID3DXFileData
, D3DXFILEDATA
);
166 WIN_TYPES(ID3DXFileSaveData
, D3DXFILESAVEDATA
);
167 #if defined( __cplusplus )