Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
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-winehq
Commits
5b11bd8b
Commit
5b11bd8b
authored
May 22, 2012
by
Christian Costa
Committed by
Alexandre Julliard
May 23, 2012
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
d3drm: Implement IDirect3DRMMaterial2 interface.
parent
bbbe6d3e
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
321 additions
and
0 deletions
+321
-0
Makefile.in
dlls/d3drm/Makefile.in
+1
-0
material.c
dlls/d3drm/material.c
+320
-0
No files found.
dlls/d3drm/Makefile.in
View file @
5b11bd8b
...
...
@@ -8,6 +8,7 @@ C_SRCS = \
device.c
\
frame.c
\
light.c
\
material.c
\
math.c
\
meshbuilder.c
\
viewport.c
...
...
dlls/d3drm/material.c
0 → 100644
View file @
5b11bd8b
/*
* Implementation of IDirect3DRMMaterial2 interface
*
* Copyright 2012 Christian Costa
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include "wine/debug.h"
#define COBJMACROS
#include "winbase.h"
#include "wingdi.h"
#include "d3drm_private.h"
WINE_DEFAULT_DEBUG_CHANNEL
(
d3drm
);
typedef
struct
{
D3DVALUE
r
;
D3DVALUE
g
;
D3DVALUE
b
;
}
color_rgb
;
typedef
struct
{
IDirect3DRMMaterial2
IDirect3DRMMaterial2_iface
;
LONG
ref
;
color_rgb
emissive
;
color_rgb
specular
;
D3DVALUE
power
;
color_rgb
ambient
;
}
IDirect3DRMMaterialImpl
;
static
inline
IDirect3DRMMaterialImpl
*
impl_from_IDirect3DRMMaterial2
(
IDirect3DRMMaterial2
*
iface
)
{
return
CONTAINING_RECORD
(
iface
,
IDirect3DRMMaterialImpl
,
IDirect3DRMMaterial2_iface
);
}
/*** IUnknown methods ***/
static
HRESULT
WINAPI
IDirect3DRMMaterial2Impl_QueryInterface
(
IDirect3DRMMaterial2
*
iface
,
REFIID
riid
,
void
**
ret_iface
)
{
IDirect3DRMMaterialImpl
*
This
=
impl_from_IDirect3DRMMaterial2
(
iface
);
TRACE
(
"(%p)->(%s, %p)
\n
"
,
iface
,
debugstr_guid
(
riid
),
ret_iface
);
if
(
IsEqualGUID
(
riid
,
&
IID_IUnknown
)
||
IsEqualGUID
(
riid
,
&
IID_IDirect3DRMMaterial
)
||
IsEqualGUID
(
riid
,
&
IID_IDirect3DRMMaterial2
))
{
*
ret_iface
=
&
This
->
IDirect3DRMMaterial2_iface
;
}
else
{
*
ret_iface
=
NULL
;
FIXME
(
"Interface %s not implemented
\n
"
,
debugstr_guid
(
riid
));
return
E_NOINTERFACE
;
}
IDirect3DRMMaterial_AddRef
(
iface
);
return
S_OK
;
}
static
ULONG
WINAPI
IDirect3DRMMaterial2Impl_AddRef
(
IDirect3DRMMaterial2
*
iface
)
{
IDirect3DRMMaterialImpl
*
This
=
impl_from_IDirect3DRMMaterial2
(
iface
);
ULONG
ref
=
InterlockedIncrement
(
&
This
->
ref
);
TRACE
(
"(%p)->(): new ref = %d
\n
"
,
iface
,
ref
);
return
ref
;
}
static
ULONG
WINAPI
IDirect3DRMMaterial2Impl_Release
(
IDirect3DRMMaterial2
*
iface
)
{
IDirect3DRMMaterialImpl
*
This
=
impl_from_IDirect3DRMMaterial2
(
iface
);
ULONG
ref
=
InterlockedDecrement
(
&
This
->
ref
);
TRACE
(
"(%p)->(): new ref = %d
\n
"
,
iface
,
ref
);
if
(
!
ref
)
HeapFree
(
GetProcessHeap
(),
0
,
This
);
return
ref
;
}
/*** IDirect3DRMObject methods ***/
static
HRESULT
WINAPI
IDirect3DRMMaterial2Impl_Clone
(
IDirect3DRMMaterial2
*
iface
,
LPUNKNOWN
unknown
,
REFIID
riid
,
LPVOID
*
object
)
{
FIXME
(
"(%p)->(%p, %s, %p): stub
\n
"
,
iface
,
unknown
,
debugstr_guid
(
riid
),
object
);
return
E_NOTIMPL
;
}
static
HRESULT
WINAPI
IDirect3DRMMaterial2Impl_AddDestroyCallback
(
IDirect3DRMMaterial2
*
iface
,
D3DRMOBJECTCALLBACK
cb
,
LPVOID
argument
)
{
FIXME
(
"(%p)->(%p, %p): stub
\n
"
,
iface
,
cb
,
argument
);
return
E_NOTIMPL
;
}
static
HRESULT
WINAPI
IDirect3DRMMaterial2Impl_DeleteDestroyCallback
(
IDirect3DRMMaterial2
*
iface
,
D3DRMOBJECTCALLBACK
cb
,
LPVOID
argument
)
{
FIXME
(
"(%p)->(%p, %p): stub
\n
"
,
iface
,
cb
,
argument
);
return
E_NOTIMPL
;
}
static
HRESULT
WINAPI
IDirect3DRMMaterial2Impl_SetAppData
(
IDirect3DRMMaterial2
*
iface
,
DWORD
data
)
{
FIXME
(
"(%p)->(%u): stub
\n
"
,
iface
,
data
);
return
E_NOTIMPL
;
}
static
DWORD
WINAPI
IDirect3DRMMaterial2Impl_GetAppData
(
IDirect3DRMMaterial2
*
iface
)
{
FIXME
(
"(%p)->(): stub
\n
"
,
iface
);
return
0
;
}
static
HRESULT
WINAPI
IDirect3DRMMaterial2Impl_SetName
(
IDirect3DRMMaterial2
*
iface
,
LPCSTR
name
)
{
FIXME
(
"(%p)->(%s): stub
\n
"
,
iface
,
name
);
return
E_NOTIMPL
;
}
static
HRESULT
WINAPI
IDirect3DRMMaterial2Impl_GetName
(
IDirect3DRMMaterial2
*
iface
,
LPDWORD
size
,
LPSTR
name
)
{
FIXME
(
"(%p)->(%p, %p): stub
\n
"
,
iface
,
size
,
name
);
return
E_NOTIMPL
;
}
static
HRESULT
WINAPI
IDirect3DRMMaterial2Impl_GetClassName
(
IDirect3DRMMaterial2
*
iface
,
LPDWORD
size
,
LPSTR
name
)
{
FIXME
(
"(%p)->(%p, %p): stub
\n
"
,
iface
,
size
,
name
);
return
E_NOTIMPL
;
}
/*** IDirect3DRMMaterial methods ***/
static
HRESULT
WINAPI
IDirect3DRMMaterial2Impl_SetPower
(
IDirect3DRMMaterial2
*
iface
,
D3DVALUE
power
)
{
IDirect3DRMMaterialImpl
*
This
=
impl_from_IDirect3DRMMaterial2
(
iface
);
TRACE
(
"(%p)->(%f)
\n
"
,
iface
,
power
);
This
->
power
=
power
;
return
D3DRM_OK
;
}
static
HRESULT
WINAPI
IDirect3DRMMaterial2Impl_SetSpecular
(
IDirect3DRMMaterial2
*
iface
,
D3DVALUE
r
,
D3DVALUE
g
,
D3DVALUE
b
)
{
IDirect3DRMMaterialImpl
*
This
=
impl_from_IDirect3DRMMaterial2
(
iface
);
TRACE
(
"(%p)->(%f, %f, %f)
\n
"
,
iface
,
r
,
g
,
b
);
This
->
specular
.
r
=
r
;
This
->
specular
.
g
=
g
;
This
->
specular
.
b
=
b
;
return
D3DRM_OK
;
}
static
HRESULT
WINAPI
IDirect3DRMMaterial2Impl_SetEmissive
(
IDirect3DRMMaterial2
*
iface
,
D3DVALUE
r
,
D3DVALUE
g
,
D3DVALUE
b
)
{
IDirect3DRMMaterialImpl
*
This
=
impl_from_IDirect3DRMMaterial2
(
iface
);
TRACE
(
"(%p)->(%f, %f, %f)
\n
"
,
iface
,
r
,
g
,
b
);
This
->
emissive
.
r
=
r
;
This
->
emissive
.
g
=
g
;
This
->
emissive
.
b
=
b
;
return
D3DRM_OK
;
}
static
D3DVALUE
WINAPI
IDirect3DRMMaterial2Impl_GetPower
(
IDirect3DRMMaterial2
*
iface
)
{
IDirect3DRMMaterialImpl
*
This
=
impl_from_IDirect3DRMMaterial2
(
iface
);
TRACE
(
"(%p)->()
\n
"
,
iface
);
return
This
->
power
;
}
static
HRESULT
WINAPI
IDirect3DRMMaterial2Impl_GetSpecular
(
IDirect3DRMMaterial2
*
iface
,
D3DVALUE
*
r
,
D3DVALUE
*
g
,
D3DVALUE
*
b
)
{
IDirect3DRMMaterialImpl
*
This
=
impl_from_IDirect3DRMMaterial2
(
iface
);
TRACE
(
"(%p)->(%p, %p, %p)
\n
"
,
iface
,
r
,
g
,
b
);
*
r
=
This
->
specular
.
r
;
*
g
=
This
->
specular
.
g
;
*
b
=
This
->
specular
.
b
;
return
D3DRM_OK
;
}
static
HRESULT
WINAPI
IDirect3DRMMaterial2Impl_GetEmissive
(
IDirect3DRMMaterial2
*
iface
,
D3DVALUE
*
r
,
D3DVALUE
*
g
,
D3DVALUE
*
b
)
{
IDirect3DRMMaterialImpl
*
This
=
impl_from_IDirect3DRMMaterial2
(
iface
);
TRACE
(
"(%p)->(%p, %p, %p)
\n
"
,
iface
,
r
,
g
,
b
);
*
r
=
This
->
emissive
.
r
;
*
g
=
This
->
emissive
.
g
;
*
b
=
This
->
emissive
.
b
;
return
D3DRM_OK
;
}
/*** IDirect3DRMMaterial2 methods ***/
static
HRESULT
WINAPI
IDirect3DRMMaterial2Impl_GetAmbient
(
IDirect3DRMMaterial2
*
iface
,
D3DVALUE
*
r
,
D3DVALUE
*
g
,
D3DVALUE
*
b
)
{
IDirect3DRMMaterialImpl
*
This
=
impl_from_IDirect3DRMMaterial2
(
iface
);
TRACE
(
"(%p)->(%p, %p, %p)
\n
"
,
iface
,
r
,
g
,
b
);
*
r
=
This
->
ambient
.
r
;
*
g
=
This
->
ambient
.
g
;
*
b
=
This
->
ambient
.
b
;
return
D3DRM_OK
;
}
static
HRESULT
WINAPI
IDirect3DRMMaterial2Impl_SetAmbient
(
IDirect3DRMMaterial2
*
iface
,
D3DVALUE
r
,
D3DVALUE
g
,
D3DVALUE
b
)
{
IDirect3DRMMaterialImpl
*
This
=
impl_from_IDirect3DRMMaterial2
(
iface
);
TRACE
(
"(%p)->(%f, %f, %f)
\n
"
,
iface
,
r
,
g
,
b
);
This
->
ambient
.
r
=
r
;
This
->
ambient
.
g
=
g
;
This
->
ambient
.
b
=
b
;
return
D3DRM_OK
;
}
static
const
struct
IDirect3DRMMaterial2Vtbl
Direct3DRMMaterial2_Vtbl
=
{
/*** IUnknown methods ***/
IDirect3DRMMaterial2Impl_QueryInterface
,
IDirect3DRMMaterial2Impl_AddRef
,
IDirect3DRMMaterial2Impl_Release
,
/*** IDirect3DRMObject methods ***/
IDirect3DRMMaterial2Impl_Clone
,
IDirect3DRMMaterial2Impl_AddDestroyCallback
,
IDirect3DRMMaterial2Impl_DeleteDestroyCallback
,
IDirect3DRMMaterial2Impl_SetAppData
,
IDirect3DRMMaterial2Impl_GetAppData
,
IDirect3DRMMaterial2Impl_SetName
,
IDirect3DRMMaterial2Impl_GetName
,
IDirect3DRMMaterial2Impl_GetClassName
,
/*** IDirect3DRMMaterial methods ***/
IDirect3DRMMaterial2Impl_SetPower
,
IDirect3DRMMaterial2Impl_SetSpecular
,
IDirect3DRMMaterial2Impl_SetEmissive
,
IDirect3DRMMaterial2Impl_GetPower
,
IDirect3DRMMaterial2Impl_GetSpecular
,
IDirect3DRMMaterial2Impl_GetEmissive
,
/*** IDirect3DRMMaterial2 methods ***/
IDirect3DRMMaterial2Impl_GetAmbient
,
IDirect3DRMMaterial2Impl_SetAmbient
};
HRESULT
Direct3DRMMaterial_create
(
IDirect3DRMMaterial2
**
ret_iface
)
{
IDirect3DRMMaterialImpl
*
object
;
TRACE
(
"(%p)
\n
"
,
ret_iface
);
object
=
HeapAlloc
(
GetProcessHeap
(),
HEAP_ZERO_MEMORY
,
sizeof
(
IDirect3DRMMaterialImpl
));
if
(
!
object
)
{
ERR
(
"Out of memory
\n
"
);
return
E_OUTOFMEMORY
;
}
object
->
IDirect3DRMMaterial2_iface
.
lpVtbl
=
&
Direct3DRMMaterial2_Vtbl
;
object
->
ref
=
1
;
*
ret_iface
=
&
object
->
IDirect3DRMMaterial2_iface
;
return
S_OK
;
}
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