[PATCH v3 1/2] d3drm: IDirect3DRMTexture3 Get/SetDecalTransparency
Alistair Leslie-Hughes
wine at gitlab.winehq.org
Mon May 30 02:26:23 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