[PATCH 2/2] d3drm: IDirect3DRMTexture3 Get/SetDecalSize
Alistair Leslie-Hughes
wine at gitlab.winehq.org
Fri May 27 03:02:08 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 | 2 ++
dlls/d3drm/tests/d3drm.c | 17 +++++++++++++++++
dlls/d3drm/texture.c | 17 +++++++++++++----
3 files changed, 32 insertions(+), 4 deletions(-)
diff --git a/dlls/d3drm/d3drm_private.h b/dlls/d3drm/d3drm_private.h
index c5df376a72e..2fb6bafe951 100644
--- a/dlls/d3drm/d3drm_private.h
+++ b/dlls/d3drm/d3drm_private.h
@@ -69,6 +69,8 @@ struct d3drm_texture
DWORD max_colors;
DWORD max_shades;
BOOL transparency;
+ D3DVALUE decal_width;
+ D3DVALUE decal_height;
};
struct d3drm_frame
diff --git a/dlls/d3drm/tests/d3drm.c b/dlls/d3drm/tests/d3drm.c
index 5e239fa93d5..0d2dd5b5efa 100644
--- a/dlls/d3drm/tests/d3drm.c
+++ b/dlls/d3drm/tests/d3drm.c
@@ -2713,6 +2713,7 @@ static void test_Texture(void)
LONG decalx, decaly;
DWORD colors, shades;
BOOL transparency;
+ D3DVALUE width, height;
D3DRMIMAGE initimg =
{
@@ -2920,6 +2921,22 @@ static void test_Texture(void)
hr = IDirect3DRMTexture_SetShades(texture1, 8);
ok(hr == S_OK, "got %#lx.\n", hr);
+ hr = IDirect3DRMTexture_GetDecalSize(texture1, &width, &height);
+ ok(hr == S_OK, "got %#lx.\n", hr);
+ ok(width == 1.0, "got %.8e.\n", width);
+ ok(height == 1.0, "got %.8e.\n", height);
+
+ hr = IDirect3DRMTexture_SetDecalSize(texture1, 8.0, 7.0);
+ ok(hr == S_OK, "got %#lx.\n", hr);
+
+ hr = IDirect3DRMTexture_GetDecalSize(texture1, &width, &height);
+ ok(hr == S_OK, "got %#lx.\n", hr);
+ ok(width == 8.0, "got %.8e.\n", width);
+ ok(height == 7.0, "got %.8e.\n", height);
+
+ hr = IDirect3DRMTexture_SetDecalSize(texture1, 1.0, 1.0);
+ ok(hr == S_OK, "got %#lx.\n", hr);
+
transparency = IDirect3DRMTexture_GetDecalTransparency(texture1);
ok(transparency == FALSE, "got %ld.\n", shades);
diff --git a/dlls/d3drm/texture.c b/dlls/d3drm/texture.c
index 4bb6debbde3..1ec18836cdb 100644
--- a/dlls/d3drm/texture.c
+++ b/dlls/d3drm/texture.c
@@ -1193,9 +1193,13 @@ static HRESULT WINAPI d3drm_texture3_SetShades(IDirect3DRMTexture3 *iface, DWORD
static HRESULT WINAPI d3drm_texture3_SetDecalSize(IDirect3DRMTexture3 *iface, D3DVALUE width, D3DVALUE height)
{
- FIXME("iface %p, width %.8e, height %.8e stub!\n", iface, width, height);
+ struct d3drm_texture *texture = impl_from_IDirect3DRMTexture3(iface);
+ TRACE("iface %p, width %.8e, height %.8e\n", iface, width, height);
- return E_NOTIMPL;
+ texture->decal_width = width;
+ texture->decal_height = height;
+
+ return S_OK;
}
static HRESULT WINAPI d3drm_texture3_SetDecalOrigin(IDirect3DRMTexture3 *iface, LONG x, LONG y)
@@ -1237,9 +1241,14 @@ static HRESULT WINAPI d3drm_texture3_SetDecalTransparentColor(IDirect3DRMTexture
static HRESULT WINAPI d3drm_texture3_GetDecalSize(IDirect3DRMTexture3 *iface, D3DVALUE *width, D3DVALUE *height)
{
- FIXME("iface %p, width %p, height %p stub!\n", iface, width, height);
+ struct d3drm_texture *texture = impl_from_IDirect3DRMTexture3(iface);
- return E_NOTIMPL;
+ TRACE("iface %p, width %p, height %p\n", iface, width, height);
+
+ *width = texture->decal_width;
+ *height = texture->decal_height;
+
+ return S_OK;
}
static HRESULT WINAPI d3drm_texture3_GetDecalOrigin(IDirect3DRMTexture3 *iface, LONG *x, LONG *y)
--
GitLab
https://gitlab.winehq.org/wine/wine/-/merge_requests/138
More information about the wine-devel
mailing list