8 typedef DWORD DXFILEFORMAT
;
9 typedef DWORD DXFILELOADOPTIONS
;
11 DEFINE_GUID(IID_IDirectXFile
, 0x3D82AB40, 0x62DA, 0x11CF, 0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33);
12 DEFINE_GUID(IID_IDirectXFileEnumObject
, 0x3D82AB41, 0x62DA, 0x11CF, 0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33);
13 DEFINE_GUID(IID_IDirectXFileSaveObject
, 0x3D82AB42, 0x62DA, 0x11CF, 0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33);
14 DEFINE_GUID(IID_IDirectXFileObject
, 0x3D82AB43, 0x62DA, 0x11CF, 0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33);
15 DEFINE_GUID(IID_IDirectXFileData
, 0x3D82AB44, 0x62DA, 0x11CF, 0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33);
16 DEFINE_GUID(IID_IDirectXFileDataReference
, 0x3D82AB45, 0x62DA, 0x11CF, 0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33);
17 DEFINE_GUID(IID_IDirectXFileBinary
, 0x3D82AB46, 0x62DA, 0x11CF, 0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33);
18 DEFINE_GUID(TID_DXFILEHeader
, 0x3D82AB43, 0x62DA, 0x11CF, 0xAB, 0x39, 0x00, 0x20, 0xAF, 0x71, 0xE4, 0x33);
19 DEFINE_GUID(CLSID_CDirectXFile
, 0x4516EC43, 0x8F20, 0x11D0, 0x9B, 0x6D, 0x00, 0x00, 0xC0, 0x78, 0x1B, 0xC3);
22 #define WIN_TYPES(itype, ptype) typedef interface itype *LP##ptype, **LPLP##ptype
25 #define DXFILEFORMAT_BINARY 0
26 #define DXFILEFORMAT_TEXT 1
27 #define DXFILEFORMAT_COMPRESSED 2
28 #define DXFILELOAD_FROMFILE 0x00L
29 #define DXFILELOAD_FROMRESOURCE 0x01L
30 #define DXFILELOAD_FROMMEMORY 0x02L
31 #define DXFILELOAD_FROMSTREAM 0x04L
32 #define DXFILELOAD_FROMURL 0x08L
35 #define MAKE_DDHRESULT( code ) MAKE_HRESULT( 1, _FACDD, code )
37 #define DXFILEERR_BADOBJECT MAKE_DDHRESULT(850)
38 #define DXFILEERR_BADVALUE MAKE_DDHRESULT(851)
39 #define DXFILEERR_BADTYPE MAKE_DDHRESULT(852)
40 #define DXFILEERR_BADSTREAMHANDLE MAKE_DDHRESULT(853)
41 #define DXFILEERR_BADALLOC MAKE_DDHRESULT(854)
42 #define DXFILEERR_NOTFOUND MAKE_DDHRESULT(855)
43 #define DXFILEERR_NOTDONEYET MAKE_DDHRESULT(856)
44 #define DXFILEERR_FILENOTFOUND MAKE_DDHRESULT(857)
45 #define DXFILEERR_RESOURCENOTFOUND MAKE_DDHRESULT(858)
46 #define DXFILEERR_URLNOTFOUND MAKE_DDHRESULT(859)
47 #define DXFILEERR_BADRESOURCE MAKE_DDHRESULT(860)
48 #define DXFILEERR_BADFILETYPE MAKE_DDHRESULT(861)
49 #define DXFILEERR_BADFILEVERSION MAKE_DDHRESULT(862)
50 #define DXFILEERR_BADFILEFLOATSIZE MAKE_DDHRESULT(863)
51 #define DXFILEERR_BADFILECOMPRESSIONTYPE MAKE_DDHRESULT(864)
52 #define DXFILEERR_BADFILE MAKE_DDHRESULT(865)
53 #define DXFILEERR_PARSEERROR MAKE_DDHRESULT(866)
54 #define DXFILEERR_NOTEMPLATE MAKE_DDHRESULT(867)
55 #define DXFILEERR_BADARRAYSIZE MAKE_DDHRESULT(868)
56 #define DXFILEERR_BADDATAREFERENCE MAKE_DDHRESULT(869)
57 #define DXFILEERR_INTERNALERROR MAKE_DDHRESULT(870)
58 #define DXFILEERR_NOMOREOBJECTS MAKE_DDHRESULT(871)
59 #define DXFILEERR_BADINTRINSICS MAKE_DDHRESULT(872)
60 #define DXFILEERR_NOMORESTREAMHANDLES MAKE_DDHRESULT(873)
61 #define DXFILEERR_NOMOREDATA MAKE_DDHRESULT(874)
62 #define DXFILEERR_BADCACHEFILE MAKE_DDHRESULT(875)
63 #define DXFILEERR_NOINTERNET MAKE_DDHRESULT(876)
65 WIN_TYPES(IDirectXFile
, DIRECTXFILE
);
66 WIN_TYPES(IDirectXFileEnumObject
, DIRECTXFILEENUMOBJECT
);
67 WIN_TYPES(IDirectXFileSaveObject
, DIRECTXFILESAVEOBJECT
);
68 WIN_TYPES(IDirectXFileObject
, DIRECTXFILEOBJECT
);
69 WIN_TYPES(IDirectXFileData
, DIRECTXFILEDATA
);
70 WIN_TYPES(IDirectXFileDataReference
, DIRECTXFILEDATAREFERENCE
);
71 WIN_TYPES(IDirectXFileBinary
, DIRECTXFILEBINARY
);
73 typedef struct _DXFILELOADRESOURCE
78 }DXFILELOADRESOURCE
, *LPDXFILELOADRESOURCE
;
80 typedef struct _DXFILELOADMEMORY
84 }DXFILELOADMEMORY
, *LPDXFILELOADMEMORY
;
86 STDAPI
DirectXFileCreate(LPDIRECTXFILE
*lplpDirectXFile
);
87 #define IDIRECTXFILEOBJECT_METHODS(kind) \
88 STDMETHOD(GetName) (THIS_ LPSTR, LPDWORD) kind; \
89 STDMETHOD(GetId) (THIS_ LPGUID) kind
90 #define IUNKNOWN_METHODS(kind) \
91 STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID *ppvObj) kind; \
92 STDMETHOD_(ULONG, AddRef) (THIS) kind; \
93 STDMETHOD_(ULONG, Release) (THIS) kind
96 #define INTERFACE IDirectXFile
98 DECLARE_INTERFACE_(IDirectXFile
, IUnknown
)
100 IUNKNOWN_METHODS(PURE
);
101 STDMETHOD(CreateEnumObject
) (THIS_ LPVOID
, DXFILELOADOPTIONS
, LPDIRECTXFILEENUMOBJECT
*) PURE
;
102 STDMETHOD(CreateSaveObject
) (THIS_ LPCSTR
, DXFILEFORMAT
, LPDIRECTXFILESAVEOBJECT
*) PURE
;
103 STDMETHOD(RegisterTemplates
) (THIS_ LPVOID
, DWORD
) PURE
;
107 #define INTERFACE IDirectXFileEnumObject
109 DECLARE_INTERFACE_(IDirectXFileEnumObject
, IUnknown
)
111 IUNKNOWN_METHODS(PURE
);
112 STDMETHOD(GetNextDataObject
) (THIS_ LPDIRECTXFILEDATA
*) PURE
;
113 STDMETHOD(GetDataObjectById
) (THIS_ REFGUID
, LPDIRECTXFILEDATA
*) PURE
;
114 STDMETHOD(GetDataObjectByName
) (THIS_ LPCSTR
, LPDIRECTXFILEDATA
*) PURE
;
118 #define INTERFACE IDirectXFileSaveObject
120 DECLARE_INTERFACE_(IDirectXFileSaveObject
, IUnknown
)
122 IUNKNOWN_METHODS(PURE
);
123 STDMETHOD(SaveTemplates
) (THIS_ DWORD
, const GUID
**) PURE
;
124 STDMETHOD(CreateDataObject
) (THIS_ REFGUID
, LPCSTR
, const GUID
*,
125 DWORD
, LPVOID
, LPDIRECTXFILEDATA
*) PURE
;
126 STDMETHOD(SaveData
) (THIS_ LPDIRECTXFILEDATA
) PURE
;
130 #define INTERFACE IDirectXFileObject
132 DECLARE_INTERFACE_(IDirectXFileObject
, IUnknown
)
134 IUNKNOWN_METHODS(PURE
);
135 IDIRECTXFILEOBJECT_METHODS(PURE
);
139 #define INTERFACE IDirectXFileData
141 DECLARE_INTERFACE_(IDirectXFileData
, IDirectXFileObject
)
143 IUNKNOWN_METHODS(PURE
);
144 IDIRECTXFILEOBJECT_METHODS(PURE
);
145 STDMETHOD(GetData
) (THIS_ LPCSTR
, DWORD
*, void **) PURE
;
146 STDMETHOD(GetType
) (THIS_
const GUID
**) PURE
;
147 STDMETHOD(GetNextObject
) (THIS_ LPDIRECTXFILEOBJECT
*) PURE
;
148 STDMETHOD(AddDataObject
) (THIS_ LPDIRECTXFILEDATA
) PURE
;
149 STDMETHOD(AddDataReference
) (THIS_ LPCSTR
, const GUID
*) PURE
;
150 STDMETHOD(AddBinaryObject
) (THIS_ LPCSTR
, const GUID
*, LPCSTR
, LPVOID
, DWORD
) PURE
;
154 #define INTERFACE IDirectXFileDataReference
156 DECLARE_INTERFACE_(IDirectXFileDataReference
, IDirectXFileObject
)
158 IUNKNOWN_METHODS(PURE
);
159 IDIRECTXFILEOBJECT_METHODS(PURE
);
160 STDMETHOD(Resolve
) (THIS_ LPDIRECTXFILEDATA
*) PURE
;
164 #define INTERFACE IDirectXFileBinary
166 DECLARE_INTERFACE_(IDirectXFileBinary
, IDirectXFileObject
)
168 IUNKNOWN_METHODS(PURE
);
169 IDIRECTXFILEOBJECT_METHODS(PURE
);
171 STDMETHOD(GetSize
) (THIS_ DWORD
*) PURE
;
172 STDMETHOD(GetMimeType
) (THIS_ LPCSTR
*) PURE
;
173 STDMETHOD(Read
) (THIS_ LPVOID
, DWORD
, LPDWORD
) PURE
;