Commit 76d52393 authored by Christian Costa's avatar Christian Costa Committed by Alexandre Julliard

d3dxof: Add some preliminary support for binary objects.

parent 40c5c8ad
......@@ -1347,6 +1347,27 @@ static const IDirectXFileVtbl IDirectXFile_Vtbl =
IDirectXFileImpl_RegisterTemplates
};
static HRESULT IDirectXFileBinaryImpl_Create(IDirectXFileBinaryImpl** ppObj)
{
IDirectXFileBinaryImpl* object;
TRACE("(%p)\n", ppObj);
object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IDirectXFileBinaryImpl));
if (!object)
{
ERR("Out of memory\n");
return DXFILEERR_BADALLOC;
}
object->lpVtbl.lpVtbl = &IDirectXFileBinary_Vtbl;
object->ref = 1;
*ppObj = object;
return DXFILE_OK;
}
/*** IUnknown methods ***/
static HRESULT WINAPI IDirectXFileBinaryImpl_QueryInterface(IDirectXFileBinary* iface, REFIID riid, void** ppvObject)
{
......@@ -1606,7 +1627,17 @@ static HRESULT WINAPI IDirectXFileDataImpl_GetNextObject(IDirectXFileData* iface
return DXFILEERR_NOMOREOBJECTS;
}
if (This->pobj->childs[This->cur_enum_object]->ptarget)
if (This->pobj->childs[This->cur_enum_object]->binary)
{
IDirectXFileBinaryImpl *object;
hr = IDirectXFileBinaryImpl_Create(&object);
if (FAILED(hr))
return hr;
*ppChildObj = (LPDIRECTXFILEOBJECT)object;
}
else if (This->pobj->childs[This->cur_enum_object]->ptarget)
{
IDirectXFileDataReferenceImpl *object;
......
......@@ -55,6 +55,7 @@ typedef struct {
char name[MAX_NAME_LEN];
GUID class_id;
BOOL open;
BOOL binary;
ULONG nb_childs;
char childs[MAX_CHILDS][MAX_NAME_LEN];
ULONG nb_members;
......@@ -68,6 +69,7 @@ typedef struct {
} xobject_member;
struct _xobject {
BOOL binary;
struct _xobject* ptarget;
char name[MAX_NAME_LEN];
GUID class_id;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment