Alistair Leslie-Hughes : d3drm: Implement IDirect3DRMTexture3::{Get,Set}DecalTransparency().
Alexandre Julliard
julliard at winehq.org
Mon May 30 15:34:58 CDT 2022
Module: wine
Branch: master
Commit: 66c8cb3ee961ef259071f90c86d32018e1e9b1ac
URL: https://source.winehq.org/git/wine.git/?a=commit;h=66c8cb3ee961ef259071f90c86d32018e1e9b1ac
Author: Alistair Leslie-Hughes <leslie_alistair at hotmail.com>
Date: Fri May 27 09:10:29 2022 +0000
d3drm: Implement IDirect3DRMTexture3::{Get,Set}DecalTransparency().
Signed-off-by: Alistair Leslie-Hughes <leslie_alistair at hotmail.com>
---
dlls/d3drm/d3drm_private.h | 1 +
dlls/d3drm/tests/d3drm.c | 13 +++++++++++++
dlls/d3drm/texture.c | 15 +++++++++++----
3 files changed, 25 insertions(+), 4 deletions(-)
diff --git a/dlls/d3drm/d3drm_private.h b/dlls/d3drm/d3drm_private.h
index 44bf41fdabf..c5df376a72e 100644
--- a/dlls/d3drm/d3drm_private.h
+++ b/dlls/d3drm/d3drm_private.h
@@ -68,6 +68,7 @@ struct d3drm_texture
LONG decal_y;
DWORD max_colors;
DWORD max_shades;
+ BOOL transparency;
};
struct d3drm_frame
diff --git a/dlls/d3drm/tests/d3drm.c b/dlls/d3drm/tests/d3drm.c
index 72c71ebae09..c9cfe932ca4 100644
--- a/dlls/d3drm/tests/d3drm.c
+++ b/dlls/d3drm/tests/d3drm.c
@@ -2712,6 +2712,7 @@ static void test_Texture(void)
IDirectDrawSurface *surface;
LONG decalx, decaly;
DWORD colors, shades;
+ BOOL transparency;
D3DRMIMAGE initimg =
{
@@ -2919,6 +2920,18 @@ static void test_Texture(void)
hr = IDirect3DRMTexture_SetShades(texture1, 8);
ok(hr == S_OK, "got %#lx.\n", hr);
+ transparency = IDirect3DRMTexture_GetDecalTransparency(texture1);
+ ok(transparency == FALSE, "Got %d.\n", transparency);
+
+ hr = IDirect3DRMTexture_SetDecalTransparency(texture1, TRUE);
+ ok(hr == S_OK, "Got hr %#lx.\n", hr);
+
+ transparency = IDirect3DRMTexture_GetDecalTransparency(texture1);
+ ok(transparency == TRUE, "Got %d.\n", transparency);
+
+ hr = IDirect3DRMTexture_SetDecalTransparency(texture1, FALSE);
+ ok(hr == S_OK, "Got hr %#lx.\n", hr);
+
d3drm_img = IDirect3DRMTexture_GetImage(texture1);
ok(!!d3drm_img, "Failed to get image.\n");
ok(d3drm_img == &initimg, "Expected image returned == %p, got %p.\n", &initimg, d3drm_img);
diff --git a/dlls/d3drm/texture.c b/dlls/d3drm/texture.c
index 76f82671811..a14e47efc1e 100644
--- a/dlls/d3drm/texture.c
+++ b/dlls/d3drm/texture.c
@@ -1219,9 +1219,13 @@ static HRESULT WINAPI d3drm_texture3_SetDecalScale(IDirect3DRMTexture3 *iface, D
static HRESULT WINAPI d3drm_texture3_SetDecalTransparency(IDirect3DRMTexture3 *iface, BOOL transparency)
{
- FIXME("iface %p, transparency %#x stub!\n", iface, transparency);
+ struct d3drm_texture *texture = impl_from_IDirect3DRMTexture3(iface);
- return E_NOTIMPL;
+ TRACE("iface %p, transparency %#x.\n", iface, transparency);
+
+ texture->transparency = transparency;
+
+ return S_OK;
}
static HRESULT WINAPI d3drm_texture3_SetDecalTransparentColor(IDirect3DRMTexture3 *iface, D3DCOLOR color)
@@ -1282,9 +1286,11 @@ static DWORD WINAPI d3drm_texture3_GetDecalScale(IDirect3DRMTexture3 *iface)
static BOOL WINAPI d3drm_texture3_GetDecalTransparency(IDirect3DRMTexture3 *iface)
{
- FIXME("iface %p stub!\n", iface);
+ struct d3drm_texture *texture = impl_from_IDirect3DRMTexture3(iface);
+
+ TRACE("iface %p.\n", iface);
- return FALSE;
+ return texture->transparency;
}
static D3DCOLOR WINAPI d3drm_texture3_GetDecalTransparentColor(IDirect3DRMTexture3 *iface)
@@ -1441,6 +1447,7 @@ HRESULT d3drm_texture_create(struct d3drm_texture **texture, IDirect3DRM *d3drm)
object->d3drm = d3drm;
object->max_colors = 8;
object->max_shades = 16;
+ object->transparency = FALSE;
d3drm_object_init(&object->obj, classname);
More information about the wine-cvs
mailing list