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