From a8a126c4a32b41be80022f02b37579bf4fbcc596 Mon Sep 17 00:00:00 2001 From: Alistair Leslie-Hughes Date: Fri, 27 May 2022 09:10:30 +0000 Subject: [PATCH] d3drm: Implement IDirect3DRMTexture3::{Get,Set}DecalSize(). --- dlls/d3drm/d3drm_private.h | 2 ++ dlls/d3drm/tests/d3drm.c | 17 +++++++++++++++++ dlls/d3drm/texture.c | 20 ++++++++++++++++---- 3 files changed, 35 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 c9cfe932ca4..5745fea4b09 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 hr %#lx.\n", hr); + ok(width == 1.0f, "Got %.8e.\n", width); + ok(height == 1.0f, "Got %.8e.\n", height); + + hr = IDirect3DRMTexture_SetDecalSize(texture1, 8.0f, 7.0f); + ok(hr == S_OK, "Got hr %#lx.\n", hr); + + hr = IDirect3DRMTexture_GetDecalSize(texture1, &width, &height); + ok(hr == S_OK, "Got hr %#lx.\n", hr); + ok(width == 8.0f, "Got %.8e.\n", width); + ok(height == 7.0f, "Got %.8e.\n", height); + + hr = IDirect3DRMTexture_SetDecalSize(texture1, 1.0f, 1.0f); + ok(hr == S_OK, "got %#lx.\n", hr); + transparency = IDirect3DRMTexture_GetDecalTransparency(texture1); ok(transparency == FALSE, "Got %d.\n", transparency); diff --git a/dlls/d3drm/texture.c b/dlls/d3drm/texture.c index a14e47efc1e..a60317b48bc 100644 --- a/dlls/d3drm/texture.c +++ b/dlls/d3drm/texture.c @@ -1193,9 +1193,14 @@ 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); - return E_NOTIMPL; + TRACE("iface %p, width %.8e, height %.8e.\n", iface, width, height); + + 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 +1242,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) @@ -1448,6 +1458,8 @@ HRESULT d3drm_texture_create(struct d3drm_texture **texture, IDirect3DRM *d3drm) object->max_colors = 8; object->max_shades = 16; object->transparency = FALSE; + object->decal_width = 1.0f; + object->decal_height = 1.0f; d3drm_object_init(&object->obj, classname); -- 2.11.4.GIT