diff --git a/dlls/d3dx8/d3dx8.spec b/dlls/d3dx8/d3dx8.spec index ab796af7796..4a6d26ca577 100644 --- a/dlls/d3dx8/d3dx8.spec +++ b/dlls/d3dx8/d3dx8.spec @@ -67,7 +67,7 @@ @ stdcall D3DXPlaneFromPoints(ptr ptr ptr ptr) @ stdcall D3DXPlaneTransform(ptr ptr ptr) @ stdcall D3DXColorAdjustSaturation(ptr ptr long) -@ stub D3DXColorAdjustContrast +@ stdcall D3DXColorAdjustContrast(ptr ptr long) @ stub D3DXCreateMatrixStack @ stdcall D3DXCreateFont(ptr ptr ptr) @ stub D3DXCreateFontIndirect diff --git a/dlls/d3dx8/math.c b/dlls/d3dx8/math.c index ac664818189..3cff34f0495 100644 --- a/dlls/d3dx8/math.c +++ b/dlls/d3dx8/math.c @@ -34,6 +34,15 @@ WINE_DEFAULT_DEBUG_CHANNEL(d3dx8); /*_________________D3DXColor____________________*/ +D3DXCOLOR* WINAPI D3DXColorAdjustContrast(D3DXCOLOR *pout, CONST D3DXCOLOR *pc, FLOAT s) +{ + pout->r = 0.5f + s * (pc->r - 0.5f); + pout->g = 0.5f + s * (pc->g - 0.5f); + pout->b = 0.5f + s * (pc->b - 0.5f); + pout->a = pc->a; + return pout; +} + D3DXCOLOR* WINAPI D3DXColorAdjustSaturation(D3DXCOLOR *pout, CONST D3DXCOLOR *pc, FLOAT s) { FLOAT grey; diff --git a/dlls/d3dx8/tests/math.c b/dlls/d3dx8/tests/math.c index f349a289125..f62bd80e71d 100644 --- a/dlls/d3dx8/tests/math.c +++ b/dlls/d3dx8/tests/math.c @@ -82,6 +82,11 @@ static void D3DXColorTest(void) funcpointer = D3DXColorAdd(NULL,NULL,NULL); ok(funcpointer == NULL, "Expected: %p, Got: %p\n", NULL, funcpointer); +/*_______________D3DXColorAdjustContrast______*/ + expected.r = 0.41f; expected.g = 0.575f; expected.b = 0.473f, expected.a = 0.93f; + D3DXColorAdjustContrast(&got,&color,scale); + expect_color(expected,got); + /*_______________D3DXColorAdjustSaturation______*/ expected.r = 0.486028f; expected.g = 0.651028f; expected.b = 0.549028f, expected.a = 0.93f; D3DXColorAdjustSaturation(&got,&color,scale); diff --git a/include/d3dx8math.h b/include/d3dx8math.h index 28c1bbe1f9b..a3eca674f8d 100644 --- a/include/d3dx8math.h +++ b/include/d3dx8math.h @@ -263,7 +263,9 @@ typedef struct D3DXCOLOR extern "C" { #endif +D3DXCOLOR* WINAPI D3DXColorAdjustContrast(D3DXCOLOR *pout, CONST D3DXCOLOR *pc, FLOAT s); D3DXCOLOR* WINAPI D3DXColorAdjustSaturation(D3DXCOLOR *pout, CONST D3DXCOLOR *pc, FLOAT s); + D3DXMATRIX* WINAPI D3DXMatrixAffineTransformation(D3DXMATRIX *pout, float scaling, D3DXVECTOR3 *rotationcenter, D3DXQUATERNION *rotation, D3DXVECTOR3 *translation); FLOAT WINAPI D3DXMatrixfDeterminant(CONST D3DXMATRIX *pm); D3DXMATRIX* WINAPI D3DXMatrixInverse(D3DXMATRIX *pout, FLOAT *pdeterminant, CONST D3DXMATRIX *pm);