From ed700553e03b9d4618e8d7be5719d46b6aeac4b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rico=20Sch=C3=BCller?= Date: Thu, 22 Dec 2011 12:15:53 +0100 Subject: [PATCH] d3dx9: Simplify ID3DXBaseEffect::SetInt(). --- dlls/d3dx9_36/effect.c | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/dlls/d3dx9_36/effect.c b/dlls/d3dx9_36/effect.c index 75680d3314e..01a407c1125 100644 --- a/dlls/d3dx9_36/effect.c +++ b/dlls/d3dx9_36/effect.c @@ -1,5 +1,6 @@ /* * Copyright 2010 Christian Costa + * Copyright 2011 Rico Schüller * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -1839,19 +1840,14 @@ static HRESULT WINAPI ID3DXBaseEffectImpl_SetInt(ID3DXBaseEffect *iface, D3DXHAN ((param->class == D3DXPC_VECTOR && param->columns != 2) || (param->class == D3DXPC_MATRIX_ROWS && param->rows != 2 && param->columns == 1))) { - FLOAT tmp = ((n & 0xff0000) >> 16) * INT_FLOAT_MULTI_INVERSE; - set_number((DWORD *)param->data, param->type, &tmp, D3DXPT_FLOAT); - - tmp = ((n & 0xff00) >> 8) * INT_FLOAT_MULTI_INVERSE; - set_number((DWORD *)param->data + 1, param->type, &tmp, D3DXPT_FLOAT); - - tmp = (n & 0xff) * INT_FLOAT_MULTI_INVERSE; - set_number((DWORD *)param->data + 2, param->type, &tmp, D3DXPT_FLOAT); + TRACE("Vector fixup\n"); + *(FLOAT *)param->data = ((n & 0xff0000) >> 16) * INT_FLOAT_MULTI_INVERSE; + ((FLOAT *)param->data)[1] = ((n & 0xff00) >> 8) * INT_FLOAT_MULTI_INVERSE; + ((FLOAT *)param->data)[2] = (n & 0xff) * INT_FLOAT_MULTI_INVERSE; if (param->rows * param->columns > 3) { - tmp = ((n & 0xff000000) >> 24) * INT_FLOAT_MULTI_INVERSE; - set_number((DWORD *)param->data + 3, param->type, &tmp, D3DXPT_FLOAT); + ((FLOAT *)param->data)[3] = ((n & 0xff000000) >> 24) * INT_FLOAT_MULTI_INVERSE; } return D3D_OK; } @@ -1882,6 +1878,8 @@ static HRESULT WINAPI ID3DXBaseEffectImpl_GetInt(ID3DXBaseEffect *iface, D3DXHAN ((param->class == D3DXPC_VECTOR && param->columns != 2) || (param->class == D3DXPC_MATRIX_ROWS && param->rows != 2 && param->columns == 1))) { + TRACE("Vector fixup\n"); + /* all components (3,4) are clamped (0,255) and put in the INT */ *n = (INT)(min(max(0.0f, *((FLOAT *)param->data + 2)), 1.0f) * INT_FLOAT_MULTI); *n += ((INT)(min(max(0.0f, *((FLOAT *)param->data + 1)), 1.0f) * INT_FLOAT_MULTI)) << 8;