[PATCH 1/2] d3drm: IDirect3DRMTexture3 Get/SetDecalTransparency

Alistair Leslie-Hughes wine at gitlab.winehq.org
Fri May 27 03:02:07 CDT 2022


From: Alistair Leslie-Hughes <leslie_alistair at hotmail.com>

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, 24 insertions(+), 5 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..5e239fa93d5 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 %ld.\n", shades);
+
+    hr = IDirect3DRMTexture_SetDecalTransparency(texture1, TRUE);
+    ok(hr == S_OK, "got %#lx.\n", hr);
+
+    transparency = IDirect3DRMTexture_GetDecalTransparency(texture1);
+    ok(transparency == TRUE, "got %ld.\n", shades);
+
+    hr = IDirect3DRMTexture_SetDecalTransparency(texture1, FALSE);
+    ok(hr == S_OK, "got %#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..4bb6debbde3 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,9 @@ static DWORD WINAPI d3drm_texture3_GetDecalScale(IDirect3DRMTexture3 *iface)
 
 static BOOL WINAPI d3drm_texture3_GetDecalTransparency(IDirect3DRMTexture3 *iface)
 {
-    FIXME("iface %p stub!\n", iface);
-
-    return FALSE;
+    struct d3drm_texture *texture = impl_from_IDirect3DRMTexture3(iface);
+    TRACE("iface %p\n", iface);
+    return texture->transparency;
 }
 
 static D3DCOLOR WINAPI d3drm_texture3_GetDecalTransparentColor(IDirect3DRMTexture3 *iface)
@@ -1441,6 +1445,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);
 
-- 
GitLab


https://gitlab.winehq.org/wine/wine/-/merge_requests/138



More information about the wine-devel mailing list