Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-cw
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-cw
Commits
4296852b
Commit
4296852b
authored
Feb 01, 2010
by
Christian Costa
Committed by
Alexandre Julliard
Feb 01, 2010
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
d3drm: Implement partially IDirect3DRMMeshBuilderImpl_Load.
parent
aaf2ef41
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
288 additions
and
5 deletions
+288
-5
Makefile.in
dlls/d3drm/Makefile.in
+1
-1
meshbuilder.c
dlls/d3drm/meshbuilder.c
+285
-2
d3drm.c
dlls/d3drm/tests/d3drm.c
+2
-2
No files found.
dlls/d3drm/Makefile.in
View file @
4296852b
...
...
@@ -4,7 +4,7 @@ SRCDIR = @srcdir@
VPATH
=
@srcdir@
MODULE
=
d3drm.dll
IMPORTLIB
=
d3drm
IMPORTS
=
dxguid uuid kernel32
IMPORTS
=
dxguid uuid
d3dxof
kernel32
C_SRCS
=
\
d3drm.c
\
...
...
dlls/d3drm/meshbuilder.c
View file @
4296852b
...
...
@@ -27,6 +27,7 @@
#include "winbase.h"
#include "wingdi.h"
#include "dxfile.h"
#include "d3drm_private.h"
#include "d3drm.h"
...
...
@@ -40,6 +41,229 @@ typedef struct {
static
const
struct
IDirect3DRMMeshBuilderVtbl
Direct3DRMMeshBuilder_Vtbl
;
static
const
GUID
GUID_Mesh
=
{
0x3D82AB44
,
0x62DA
,
0x11CF
,
{
0xAB
,
0x39
,
0x00
,
0x20
,
0xAF
,
0x71
,
0xE4
,
0x33
}
};
static
char
templates
[]
=
{
"xof 0302txt 0064"
"template Header"
"{"
"<3D82AB43-62DA-11CF-AB39-0020AF71E433>"
"WORD major;"
"WORD minor;"
"DWORD flags;"
"}"
"template Vector"
"{"
"<3D82AB5E-62DA-11CF-AB39-0020AF71E433>"
"FLOAT x;"
"FLOAT y;"
"FLOAT z;"
"}"
"template Coords2d"
"{"
"<F6F23F44-7686-11CF-8F52-0040333594A3>"
"FLOAT u;"
"FLOAT v;"
"}"
"template Matrix4x4"
"{"
"<F6F23F45-7686-11CF-8F52-0040333594A3>"
"array FLOAT matrix[16];"
"}"
"template ColorRGBA"
"{"
"<35FF44E0-6C7C-11CF-8F52-0040333594A3>"
"FLOAT red;"
"FLOAT green;"
"FLOAT blue;"
"FLOAT alpha;"
"}"
"template ColorRGB"
"{"
"<D3E16E81-7835-11CF-8F52-0040333594A3>"
"FLOAT red;"
"FLOAT green;"
"FLOAT blue;"
"}"
"template IndexedColor"
"{"
"<1630B820-7842-11CF-8F52-0040333594A3>"
"DWORD index;"
"ColorRGBA indexColor;"
"}"
"template Boolean"
"{"
"<537DA6A0-CA37-11D0-941C-0080C80CFA7B>"
"DWORD truefalse;"
"}"
"template Boolean2d"
"{"
"<4885AE63-78E8-11CF-8F52-0040333594A3>"
"Boolean u;"
"Boolean v;"
"}"
"template MaterialWrap"
"{"
"<4885AE60-78E8-11CF-8F52-0040333594A3>"
"Boolean u;"
"Boolean v;"
"}"
"template TextureFilename"
"{"
"<A42790E1-7810-11CF-8F52-0040333594A3>"
"STRING filename;"
"}"
"template Material"
"{"
"<3D82AB4D-62DA-11CF-AB39-0020AF71E433>"
"ColorRGBA faceColor;"
"FLOAT power;"
"ColorRGB specularColor;"
"ColorRGB emissiveColor;"
"[...]"
"}"
"template MeshFace"
"{"
"<3D82AB5F-62DA-11CF-AB39-0020AF71E433>"
"DWORD nFaceVertexIndices;"
"array DWORD faceVertexIndices[nFaceVertexIndices];"
"}"
"template MeshFaceWraps"
"{"
"<ED1EC5C0-C0A8-11D0-941C-0080C80CFA7B>"
"DWORD nFaceWrapValues;"
"array Boolean2d faceWrapValues[nFaceWrapValues];"
"}"
"template MeshTextureCoords"
"{"
"<F6F23F40-7686-11CF-8F52-0040333594A3>"
"DWORD nTextureCoords;"
"array Coords2d textureCoords[nTextureCoords];"
"}"
"template MeshMaterialList"
"{"
"<F6F23F42-7686-11CF-8F52-0040333594A3>"
"DWORD nMaterials;"
"DWORD nFaceIndexes;"
"array DWORD faceIndexes[nFaceIndexes];"
"[Material]"
"}"
"template MeshNormals"
"{"
"<F6F23F43-7686-11CF-8F52-0040333594A3>"
"DWORD nNormals;"
"array Vector normals[nNormals];"
"DWORD nFaceNormals;"
"array MeshFace faceNormals[nFaceNormals];"
"}"
"template MeshVertexColors"
"{"
"<1630B821-7842-11CF-8F52-0040333594A3>"
"DWORD nVertexColors;"
"array IndexedColor vertexColors[nVertexColors];"
"}"
"template Mesh"
"{"
"<3D82AB44-62DA-11CF-AB39-0020AF71E433>"
"DWORD nVertices;"
"array Vector vertices[nVertices];"
"DWORD nFaces;"
"array MeshFace faces[nFaces];"
"[...]"
"}"
"template FrameTransformMatrix"
"{"
"<F6F23F41-7686-11CF-8F52-0040333594A3>"
"Matrix4x4 frameMatrix;"
"}"
"template Frame"
"{"
"<3D82AB46-62DA-11CF-AB39-0020AF71E433>"
"[...]"
"}"
"template FloatKeys"
"{"
"<10DD46A9-775B-11CF-8F52-0040333594A3>"
"DWORD nValues;"
"array FLOAT values[nValues];"
"}"
"template TimedFloatKeys"
"{"
"<F406B180-7B3B-11CF-8F52-0040333594A3>"
"DWORD time;"
"FloatKeys tfkeys;"
"}"
"template AnimationKey"
"{"
"<10DD46A8-775B-11CF-8F52-0040333594A3>"
"DWORD keyType;"
"DWORD nKeys;"
"array TimedFloatKeys keys[nKeys];"
"}"
"template AnimationOptions"
"{"
"<E2BF56C0-840F-11CF-8F52-0040333594A3>"
"DWORD openclosed;"
"DWORD positionquality;"
"}"
"template Animation"
"{"
"<3D82AB4F-62DA-11CF-AB39-0020AF71E433>"
"[...]"
"}"
"template AnimationSet"
"{"
"<3D82AB50-62DA-11CF-AB39-0020AF71E433>"
"[Animation]"
"}"
"template InlineData"
"{"
"<3A23EEA0-94B1-11D0-AB39-0020AF71E433>"
"[BINARY]"
"}"
"template Url"
"{"
"<3A23EEA1-94B1-11D0-AB39-0020AF71E433>"
"DWORD nUrls;"
"array STRING urls[nUrls];"
"}"
"template ProgressiveMesh"
"{"
"<8A63C360-997D-11D0-941C-0080C80CFA7B>"
"[Url,InlineData]"
"}"
"template Guid"
"{"
"<A42790E0-7810-11CF-8F52-0040333594A3>"
"DWORD data1;"
"WORD data2;"
"WORD data3;"
"array UCHAR data4[8];"
"}"
"template StringProperty"
"{"
"<7F0F21E0-BFE1-11D1-82C0-00A0C9697271>"
"STRING key;"
"STRING value;"
"}"
"template PropertyBag"
"{"
"<7F0F21E1-BFE1-11D1-82C0-00A0C9697271>"
"[StringProperty]"
"}"
"template ExternalVisual"
"{"
"<98116AA0-BDBA-11D1-82C0-00A0C9697271>"
"Guid guidExternalVisual;"
"[...]"
"}"
"template RightHanded"
"{"
"<7F5D5EA0-D53A-11D1-82C0-00A0C9697271>"
"DWORD bRightHanded;"
"}"
};
HRESULT
Direct3DRMMeshBuilder_create
(
LPDIRECT3DRMMESHBUILDER
*
ppMeshBuilder
)
{
IDirect3DRMMeshBuilderImpl
*
object
;
...
...
@@ -179,10 +403,69 @@ static HRESULT WINAPI IDirect3DRMMeshBuilderImpl_GetClassName(IDirect3DRMMeshBui
static
HRESULT
WINAPI
IDirect3DRMMeshBuilderImpl_Load
(
IDirect3DRMMeshBuilder
*
iface
,
LPVOID
filename
,
LPVOID
name
,
D3DRMLOADOPTIONS
loadflags
,
D3DRMLOADTEXTURECALLBACK
cb
,
LPVOID
pArg
)
{
IDirect3DRMMeshBuilderImpl
*
This
=
(
IDirect3DRMMeshBuilderImpl
*
)
iface
;
DXFILELOADOPTIONS
load_options
;
LPDIRECTXFILE
pDXFile
=
NULL
;
LPDIRECTXFILEENUMOBJECT
pEnumObject
=
NULL
;
LPDIRECTXFILEDATA
pData
=
NULL
;
const
GUID
*
pGuid
;
HRESULT
hr
;
HRESULT
ret
=
D3DRMERR_BADOBJECT
;
FIXME
(
"(%p)->(%p,%p,%x,%p,%p): stub
\n
"
,
This
,
filename
,
name
,
loadflags
,
cb
,
pArg
);
FIXME
(
"(%p)->(%p,%p,%x,%p,%p):
partial
stub
\n
"
,
This
,
filename
,
name
,
loadflags
,
cb
,
pArg
);
return
E_NOTIMPL
;
if
(
loadflags
==
D3DRMLOAD_FROMMEMORY
)
{
DXFILELOADMEMORY
info
;
LPD3DRMLOADMEMORY
pinfo
=
(
LPD3DRMLOADMEMORY
)
filename
;
info
.
lpMemory
=
pinfo
->
lpMemory
;
info
.
dSize
=
pinfo
->
dSize
;
load_options
=
DXFILELOAD_FROMMEMORY
;
}
else
{
FIXME
(
"Load options %d not supported yet
\n
"
,
loadflags
);
return
E_NOTIMPL
;
}
hr
=
DirectXFileCreate
(
&
pDXFile
);
if
(
hr
!=
DXFILE_OK
)
goto
end
;
hr
=
IDirectXFile_RegisterTemplates
(
pDXFile
,
templates
,
sizeof
(
templates
));
if
(
hr
!=
DXFILE_OK
)
goto
end
;
hr
=
IDirectXFile_CreateEnumObject
(
pDXFile
,
filename
,
load_options
,
&
pEnumObject
);
if
(
hr
!=
DXFILE_OK
)
goto
end
;
hr
=
IDirectXFileEnumObject_GetNextDataObject
(
pEnumObject
,
&
pData
);
if
(
hr
!=
DXFILE_OK
)
goto
end
;
hr
=
IDirectXFileData_GetType
(
pData
,
&
pGuid
);
if
(
hr
!=
DXFILE_OK
)
goto
end
;
TRACE
(
"Found object type whose GUID = %s
\n
"
,
debugstr_guid
(
pGuid
));
if
(
!
IsEqualGUID
(
pGuid
,
&
GUID_Mesh
))
{
ret
=
D3DRMERR_BADFILE
;
goto
end
;
}
ret
=
D3DRM_OK
;
end:
if
(
pData
)
IDirectXFileData_Release
(
pData
);
if
(
pEnumObject
)
IDirectXFileEnumObject_Release
(
pEnumObject
);
if
(
pDXFile
)
IDirectXFile_Release
(
pDXFile
);
return
ret
;
}
static
HRESULT
WINAPI
IDirect3DRMMeshBuilderImpl_Save
(
IDirect3DRMMeshBuilder
*
iface
,
const
char
*
filename
,
D3DRMXOFFORMAT
format
,
D3DRMSAVEOPTIONS
save
)
...
...
dlls/d3drm/tests/d3drm.c
View file @
4296852b
...
...
@@ -78,12 +78,12 @@ void Test(void)
info
.
lpMemory
=
data_bad
;
info
.
dSize
=
sizeof
(
data_bad
);
hr
=
IDirect3DRMMeshBuilder_Load
(
pMeshBuilder
,
&
info
,
NULL
,
D3DRMLOAD_FROMMEMORY
,
NULL
,
NULL
);
todo_wine
ok
(
hr
==
D3DRMERR_BADFILE
,
"Sould have returned D3DRMERR_BADFILE (hr = %x)
\n
"
,
hr
);
ok
(
hr
==
D3DRMERR_BADFILE
,
"Sould have returned D3DRMERR_BADFILE (hr = %x)
\n
"
,
hr
);
info
.
lpMemory
=
data_ok
;
info
.
dSize
=
sizeof
(
data_ok
);
hr
=
IDirect3DRMMeshBuilder_Load
(
pMeshBuilder
,
&
info
,
NULL
,
D3DRMLOAD_FROMMEMORY
,
NULL
,
NULL
);
todo_wine
ok
(
hr
==
D3DRM_OK
,
"Cannot load mesh data (hr = %x)
\n
"
,
hr
);
ok
(
hr
==
D3DRM_OK
,
"Cannot load mesh data (hr = %x)
\n
"
,
hr
);
IDirect3DRMMeshBuilder_Release
(
pMeshBuilder
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment