44 TRACE(
"(%p,%p)\n", pUnkOuter, ppObj);
54 object->nb_xtemplates = 1;
56 object->xtemplates[0].nb_members = 2;
57 object->xtemplates[0].members[0].type =
TOKEN_DWORD;
58 object->xtemplates[0].members[0].nb_dims = 0;
59 object->xtemplates[0].members[1].type =
TOKEN_FLOAT;
60 object->xtemplates[0].members[1].nb_dims = 1;
61 object->xtemplates[0].members[1].dim_fixed[0] =
TRUE;
62 object->xtemplates[0].members[1].dim_value[0] = 4;
64 *ppObj = &
object->IDirectXFile_iface;
83 *
out = &
object->IDirectXFile_iface;
101 TRACE(
"%p increasing refcount to %lu.\n", iface, refcount);
111 TRACE(
"%p decreasing refcount to %lu.\n", iface, refcount);
129 TRACE(
"iface %p, source %p, load_options %#lx, out %p.\n", iface, pvSource, dwLoadOptions, ppEnumObj);
135 dwLoadOptions &= 0xF;
145 TRACE(
"Open source file '%s'\n", (
char*)pvSource);
150 TRACE(
"File '%s' not found\n", (
char*)pvSource);
166 if (!
object->mapped_memory)
215 FIXME(
"Source type %ld not handled yet.\n", dwLoadOptions);
237 object->pDirectXFile =
This;
239 object->buf.pdxf =
This;
240 object->buf.token_present =
FALSE;
257 TRACE(
"Registered templates (%lu):\n",
This->nb_xtemplates);
258 for (
i = 1;
i <
This->nb_xtemplates;
i++)
262 *ppEnumObj = &
object->IDirectXFileEnumObject_iface;
287 *
out = &
object->IDirectXFileSaveObject_iface;
301 buf.rem_bytes = cbSize;
304 TRACE(
"iface %p, data %p, size %lu.\n", iface,
pvData, cbSize);
338 TRACE(
"Registered templates (%lu):\n",
This->nb_xtemplates);
339 for (
i = 1;
i <
This->nb_xtemplates; ++
i)
363 TRACE(
"(%p)\n", ppObj);
393 *
out = &
object->IDirectXFileBinary_iface;
414 TRACE(
"%p increasing refcount to %lu.\n", iface, refcount);
424 TRACE(
"%p decreasing refcount to %lu.\n", iface, refcount);
442 FIXME(
"iface %p, guid %p stub!\n", iface,
guid);
449 FIXME(
"iface %p, size %p stub!\n", iface,
size);
456 FIXME(
"iface %p, mimetype %p stub!\n", iface, mimetype);
485 TRACE(
"(%p)\n", ppObj);
515 *
out = &
data->IDirectXFileData_iface;
536 TRACE(
"%p increasing refcount to %lu.\n", iface, refcount);
546 TRACE(
"%p decreasing refcount to %lu.\n", iface, refcount);
550 if (!
data->level && !
data->from_ref)
571 TRACE(
"(%p/%p)->(%p,%p)\n",
This, iface, pstrNameBuf, pdwBufLen);
581 if (*pdwBufLen <
len)
585 if (*pdwBufLen && !
len)
597 TRACE(
"(%p/%p)->(%p)\n",
This, iface, pGuid);
602 *pGuid =
This->pobj->class_id;
614 if (!pcbSize || !ppvData)
620 for (
i = 0;
i <
This->pobj->nb_members;
i++)
621 if (!
strcmp(
This->pobj->members[
i].name, szMember))
623 if (
i ==
This->pobj->nb_members)
625 WARN(
"Unknown member '%s'\n", szMember);
628 *pcbSize =
This->pobj->members[
i].size;
629 *ppvData =
This->pobj->root->pdata +
This->pobj->members[
i].start;
633 *pcbSize =
This->pobj->size;
634 *ppvData =
This->pobj->root->pdata +
This->pobj->pos_data;
645 TRACE(
"(%p/%p)->(%p)\n",
This, iface, pguid);
661 TRACE(
"(%p/%p)->(%p)\n",
This, iface, ppChildObj);
663 if (
This->cur_enum_object >=
This->pobj->nb_children)
669 if (
This->from_ref && (
This->level >= 1))
676 if (
This->pobj->children[
This->cur_enum_object]->binary)
686 else if (
This->pobj->children[
This->cur_enum_object]->ptarget)
694 object->ptarget =
This->pobj->children[
This->cur_enum_object++]->ptarget;
706 object->pobj =
This->pobj->children[
This->cur_enum_object++];
707 object->cur_enum_object = 0;
708 object->from_ref =
This->from_ref;
709 object->level =
This->level + 1;
719 FIXME(
"iface %p, data %p stub!\n", iface,
data);
736 FIXME(
"iface %p, name %s, guid %s, mimetype %s, data %p, size %lu stub!\n", iface,
debugstr_a(
name),
761 TRACE(
"(%p)\n", ppObj);
791 *
out = &
object->IDirectXFileDataReference_iface;
812 TRACE(
"%p increasing refcount to %lu.\n", iface, refcount);
822 TRACE(
"%p decreasing refcount to %lu.\n", iface, refcount);
836 TRACE(
"(%p/%p)->(%p,%p)\n",
This, iface, pstrNameBuf, pdwBufLen);
846 if (*pdwBufLen <
len)
850 if (*pdwBufLen && !
len)
863 TRACE(
"iface %p, guid %p.\n", iface,
guid);
868 *
guid =
object->ptarget->class_id;
880 TRACE(
"(%p/%p)->(%p)\n",
This, iface, ppDataObj);
889 object->pobj =
This->ptarget;
890 object->cur_enum_object = 0;
892 object->from_ref =
TRUE;
894 *ppDataObj = &
object->IDirectXFileData_iface;
913 TRACE(
"(%p)\n", ppObj);
942 *
out = &
object->IDirectXFileEnumObject_iface;
960 TRACE(
"%p increasing refcount to %lu.\n", iface, refcount);
970 TRACE(
"%p decreasing refcount to %lu.\n", iface, refcount);
976 for (
i = 0;
i <
object->nb_xobjects; ++
i)
978 if (
object->mapped_memory)
999 TRACE(
"(%p/%p)->(%p)\n",
This, iface, ppDataObj);
1003 ERR(
"Too many objects\n");
1011 if (!
This->buf.rem_bytes)
1032 object->cur_enum_object = 0;
1034 object->from_ref =
FALSE;
1036 This->buf.pxo_globals =
This->xobjects;
1037 This->buf.nb_pxo_globals =
This->nb_xobjects;
1038 This->buf.level = 0;
1040 This->buf.capacity = 0;
1041 This->buf.cur_pos_data = 0;
1042 This->buf.cur_pstrings =
This->buf.pstrings =
object->pstrings;
1043 This->buf.pxo =
This->xobjects[
This->nb_xobjects] =
This->buf.pxo_tab =
object->pobj;
1045 This->buf.pxo->nb_subobjects = 1;
1049 WARN(
"Object is not correct\n");
1054 *ppDataObj = &
object->IDirectXFileData_iface;
1057 This->pRefObjects[
This->nb_xobjects] = &
object->IDirectXFileData_iface;
1060 This->nb_xobjects++;
1101 TRACE(
"(%p)\n", ppObj);
1130 *
out = &
object->IDirectXFileSaveObject_iface;
1147 TRACE(
"%p increasing refcount to %lu.\n", iface, refcount);
1157 TRACE(
"%p decreasing refcount to %lu.\n", iface, refcount);
1176 FIXME(
"iface %p, template %s, name %s, guid %s, size %lu, data %p, dataobj %p stub!\n",
1184 FIXME(
"iface %p, data %p stub!\n", iface,
data);
#define InterlockedIncrement
#define InterlockedDecrement
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
static HRESULT WINAPI IDirectXFileEnumObjectImpl_GetNextDataObject(IDirectXFileEnumObject *iface, LPDIRECTXFILEDATA *ppDataObj)
static HRESULT WINAPI IDirectXFileImpl_RegisterTemplates(IDirectXFile *iface, LPVOID pvData, DWORD cbSize)
static HRESULT WINAPI IDirectXFileBinaryImpl_GetId(IDirectXFileBinary *iface, GUID *guid)
static HRESULT IDirectXFileDataImpl_Create(IDirectXFileDataImpl **ppObj)
static HRESULT WINAPI IDirectXFileSaveObjectImpl_SaveData(IDirectXFileSaveObject *iface, LPDIRECTXFILEDATA data)
static HRESULT WINAPI IDirectXFileDataImpl_GetName(IDirectXFileData *iface, LPSTR pstrNameBuf, LPDWORD pdwBufLen)
static HRESULT WINAPI IDirectXFileSaveObjectImpl_QueryInterface(IDirectXFileSaveObject *iface, REFIID riid, void **out)
static HRESULT WINAPI IDirectXFileDataImpl_GetId(IDirectXFileData *iface, LPGUID pGuid)
static HRESULT WINAPI IDirectXFileDataImpl_GetNextObject(IDirectXFileData *iface, LPDIRECTXFILEOBJECT *ppChildObj)
static HRESULT WINAPI IDirectXFileBinaryImpl_GetSize(IDirectXFileBinary *iface, DWORD *size)
static HRESULT WINAPI IDirectXFileDataImpl_AddBinaryObject(IDirectXFileData *iface, const char *name, const GUID *guid, const char *mimetype, void *data, DWORD size)
static HRESULT WINAPI IDirectXFileEnumObjectImpl_GetDataObjectByName(IDirectXFileEnumObject *iface, const char *name, LPDIRECTXFILEDATA *data)
static ULONG WINAPI IDirectXFileBinaryImpl_Release(IDirectXFileBinary *iface)
static IDirectXFileBinaryImpl * impl_from_IDirectXFileBinary(IDirectXFileBinary *iface)
static ULONG WINAPI IDirectXFileDataImpl_AddRef(IDirectXFileData *iface)
static HRESULT WINAPI IDirectXFileSaveObjectImpl_SaveTemplates(IDirectXFileSaveObject *iface, DWORD count, const GUID **templates)
static ULONG WINAPI IDirectXFileEnumObjectImpl_Release(IDirectXFileEnumObject *iface)
static ULONG WINAPI IDirectXFileEnumObjectImpl_AddRef(IDirectXFileEnumObject *iface)
static HRESULT IDirectXFileDataReferenceImpl_Create(IDirectXFileDataReferenceImpl **ppObj)
static HRESULT WINAPI IDirectXFileBinaryImpl_QueryInterface(IDirectXFileBinary *iface, REFIID riid, void **out)
static ULONG WINAPI IDirectXFileDataImpl_Release(IDirectXFileData *iface)
static const struct IDirectXFileBinaryVtbl IDirectXFileBinary_Vtbl
static HRESULT WINAPI IDirectXFileDataImpl_GetType(IDirectXFileData *iface, const GUID **pguid)
static IDirectXFileDataReferenceImpl * impl_from_IDirectXFileDataReference(IDirectXFileDataReference *iface)
static HRESULT WINAPI IDirectXFileDataImpl_QueryInterface(IDirectXFileData *iface, REFIID riid, void **out)
static HRESULT WINAPI IDirectXFileImpl_CreateEnumObject(IDirectXFile *iface, LPVOID pvSource, DXFILELOADOPTIONS dwLoadOptions, LPDIRECTXFILEENUMOBJECT *ppEnumObj)
static HRESULT WINAPI IDirectXFileImpl_QueryInterface(IDirectXFile *iface, REFIID riid, void **out)
static const struct IDirectXFileDataReferenceVtbl IDirectXFileDataReference_Vtbl
static HRESULT IDirectXFileSaveObjectImpl_Create(IDirectXFileSaveObjectImpl **ppObj)
static HRESULT WINAPI IDirectXFileDataImpl_AddDataReference(IDirectXFileData *iface, const char *reference, const GUID *guidref)
static ULONG WINAPI IDirectXFileSaveObjectImpl_Release(IDirectXFileSaveObject *iface)
static ULONG WINAPI IDirectXFileBinaryImpl_AddRef(IDirectXFileBinary *iface)
static IDirectXFileEnumObjectImpl * impl_from_IDirectXFileEnumObject(IDirectXFileEnumObject *iface)
static ULONG WINAPI IDirectXFileSaveObjectImpl_AddRef(IDirectXFileSaveObject *iface)
static ULONG WINAPI IDirectXFileDataReferenceImpl_AddRef(IDirectXFileDataReference *iface)
HRESULT IDirectXFileImpl_Create(IUnknown *pUnkOuter, LPVOID *ppObj)
static HRESULT WINAPI IDirectXFileBinaryImpl_Read(IDirectXFileBinary *iface, void *data, DWORD size, DWORD *count)
static const struct IDirectXFileDataVtbl IDirectXFileData_Vtbl
static HRESULT WINAPI IDirectXFileDataReferenceImpl_QueryInterface(IDirectXFileDataReference *iface, REFIID riid, void **out)
static HRESULT WINAPI IDirectXFileDataImpl_AddDataObject(IDirectXFileData *iface, LPDIRECTXFILEDATA data)
static IDirectXFileSaveObjectImpl * impl_from_IDirectXFileSaveObject(IDirectXFileSaveObject *iface)
static const struct IDirectXFileSaveObjectVtbl IDirectXFileSaveObject_Vtbl
static const struct IDirectXFileEnumObjectVtbl IDirectXFileEnumObject_Vtbl
static HRESULT WINAPI IDirectXFileDataReferenceImpl_Resolve(IDirectXFileDataReference *iface, LPDIRECTXFILEDATA *ppDataObj)
static HRESULT IDirectXFileEnumObjectImpl_Create(IDirectXFileEnumObjectImpl **ppObj)
static HRESULT WINAPI IDirectXFileDataImpl_GetData(IDirectXFileData *iface, LPCSTR szMember, DWORD *pcbSize, void **ppvData)
static HRESULT WINAPI IDirectXFileSaveObjectImpl_CreateDataObject(IDirectXFileSaveObject *iface, REFGUID template, const char *name, const GUID *guid, DWORD size, void *data, LPDIRECTXFILEDATA *dataobj)
static IDirectXFileDataImpl * impl_from_IDirectXFileData(IDirectXFileData *iface)
static HRESULT WINAPI IDirectXFileDataReferenceImpl_GetId(IDirectXFileDataReference *iface, GUID *guid)
static HRESULT IDirectXFileBinaryImpl_Create(IDirectXFileBinaryImpl **ppObj)
static IDirectXFileImpl * impl_from_IDirectXFile(IDirectXFile *iface)
static HRESULT WINAPI IDirectXFileDataReferenceImpl_GetName(IDirectXFileDataReference *iface, LPSTR pstrNameBuf, LPDWORD pdwBufLen)
static HRESULT WINAPI IDirectXFileEnumObjectImpl_QueryInterface(IDirectXFileEnumObject *iface, REFIID riid, void **out)
static HRESULT WINAPI IDirectXFileBinaryImpl_GetName(IDirectXFileBinary *iface, char *name, DWORD *length)
static HRESULT WINAPI IDirectXFileEnumObjectImpl_GetDataObjectById(IDirectXFileEnumObject *iface, REFGUID guid, LPDIRECTXFILEDATA *data)
static ULONG WINAPI IDirectXFileDataReferenceImpl_Release(IDirectXFileDataReference *iface)
static ULONG WINAPI IDirectXFileImpl_AddRef(IDirectXFile *iface)
static ULONG WINAPI IDirectXFileImpl_Release(IDirectXFile *iface)
static const struct IDirectXFileVtbl IDirectXFile_Vtbl
static HRESULT WINAPI IDirectXFileBinaryImpl_GetMimeType(IDirectXFileBinary *iface, LPCSTR *mimetype)
static HRESULT WINAPI IDirectXFileImpl_CreateSaveObject(IDirectXFile *iface, const char *filename, DXFILEFORMAT format, LPDIRECTXFILESAVEOBJECT *out)
BOOL parse_object(parse_buffer *buf)
#define MAX_STRINGS_BUFFER
HRESULT parse_header(parse_buffer *buf, BYTE **decomp_buffer_ptr)
BOOL parse_templates(parse_buffer *buf, BOOL templates_only)
#define INVALID_HANDLE_VALUE
#define CreateFileA(a, b, c, d, e, f, g)
#define HeapFree(x, y, z)
#define WINE_DECLARE_DEBUG_CHANNEL(x)
static void cleanup(void)
DWORD WINAPI GetFileSize(HANDLE hFile, LPDWORD lpFileSizeHigh)
BOOL WINAPI WriteFile(_In_ HANDLE hFile, _In_reads_bytes_opt_(nNumberOfBytesToWrite) LPCVOID lpBuffer, _In_ DWORD nNumberOfBytesToWrite, _Out_opt_ LPDWORD lpNumberOfBytesWritten, _Inout_opt_ LPOVERLAPPED lpOverlapped)
HRSRC WINAPI FindResourceA(HMODULE hModule, LPCSTR name, LPCSTR type)
DWORD WINAPI SizeofResource(HINSTANCE hModule, HRSRC hRsrc)
LPVOID WINAPI LockResource(HGLOBAL handle)
HGLOBAL WINAPI LoadResource(HINSTANCE hModule, HRSRC hRsrc)
_ACRTIMP size_t __cdecl strlen(const char *)
_ACRTIMP int __cdecl strcmp(const char *, const char *)
#define DXFILEERR_BADALLOC
#define DXFILEERR_RESOURCENOTFOUND
#define IDirectXFileData_AddRef(p)
struct IDirectXFileData * LPDIRECTXFILEDATA
#define DXFILEERR_BADDATAREFERENCE
#define IDirectXFileEnumObject_Release(p)
struct IDirectXFileSaveObject * LPDIRECTXFILESAVEOBJECT
#define DXFILELOAD_FROMFILE
#define DXFILEERR_FILENOTFOUND
#define DXFILEERR_NOTDONEYET
#define DXFILEERR_BADFILETYPE
struct IDirectXFileObject * LPDIRECTXFILEOBJECT
#define DXFILEERR_PARSEERROR
#define DXFILELOAD_FROMRESOURCE
struct IDirectXFileEnumObject * LPDIRECTXFILEENUMOBJECT
#define DXFILEERR_NOMOREOBJECTS
#define DXFILELOAD_FROMMEMORY
#define DXFILEERR_BADVALUE
#define DXFILEERR_BADRESOURCE
#define IDirectXFileData_Release(p)
HANDLE NTAPI CreateFileMappingA(IN HANDLE hFile, IN LPSECURITY_ATTRIBUTES lpFileMappingAttributes, IN DWORD flProtect, IN DWORD dwMaximumSizeHigh, IN DWORD dwMaximumSizeLow, IN LPCSTR lpName)
GLuint GLuint GLsizei count
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLenum GLuint GLenum GLsizei const GLchar * buf
GLuint GLsizei GLsizei * length
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
_In_ LPWSTR _In_ DWORD _In_ LPCVOID pvData
#define IsEqualGUID(rguid1, rguid2)
static unsigned int file_size
static char * file_buffer
#define CONTAINING_RECORD(address, type, field)
wchar_t tm const _CrtWcstime_Writes_and_advances_ptr_ count wchar_t ** out