d2d1: Implement D2D1SinCos().

Signed-off-by: Giovanni Mascellani <wine@mascellani.eu>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Giovanni Mascellani 2020-10-26 20:09:27 +03:30 committed by Alexandre Julliard
parent a6d1ee860c
commit 4f6bd00a84
4 changed files with 41 additions and 1 deletions

View file

@ -6,6 +6,6 @@
@ stub D2D1ConvertColorSpace
@ stdcall D2D1CreateDevice(ptr ptr ptr)
@ stub D2D1CreateDeviceContext
@ stub D2D1SinCos
@ stdcall D2D1SinCos(float ptr ptr)
@ stub D2D1Tan
@ stub D2D1Vec3Length

View file

@ -713,6 +713,14 @@ HRESULT WINAPI D2D1CreateDevice(IDXGIDevice *dxgi_device,
return hr;
}
void WINAPI D2D1SinCos(float angle, float *s, float *c)
{
TRACE("angle %.8e, s %p, c %p.\n", angle, s, c);
*s = sinf(angle);
*c = cosf(angle);
}
static BOOL get_config_key_dword(HKEY default_key, HKEY application_key, const char *name, DWORD *value)
{
DWORD type, data, size;

View file

@ -9425,6 +9425,36 @@ static void test_wic_bitmap_format(void)
DestroyWindow(window);
}
static void test_math(void)
{
unsigned int i;
float s, c;
static const struct
{
float x;
float s;
float c;
}
sc_data[] =
{
{0.0f, 0.0f, 1.0f},
{1.0f, 8.41470957e-001f, 5.40302277e-001f},
{2.0f, 9.09297407e-001f, -4.16146845e-001f},
{M_PI / 2.0f, 1.0f, -4.37113883e-008f},
{M_PI, -8.74227766e-008f, -1.0f},
};
for (i = 0; i < ARRAY_SIZE(sc_data); ++i)
{
D2D1SinCos(sc_data[i].x, &s, &c);
ok(compare_float(s, sc_data[i].s, 0),
"Test %u: Got unexpected sin %.8e, expected %.8e.\n", i, s, sc_data[i].s);
ok(compare_float(c, sc_data[i].c, 0),
"Test %u: Got unexpected cos %.8e, expected %.8e.\n", i, c, sc_data[i].c);
}
}
START_TEST(d2d1)
{
unsigned int argc, i;
@ -9477,6 +9507,7 @@ START_TEST(d2d1)
queue_test(test_max_bitmap_size);
queue_test(test_dpi);
queue_test(test_wic_bitmap_format);
queue_test(test_math);
run_queued_tests();
}

View file

@ -794,3 +794,4 @@ interface ID2D1Factory1 : ID2D1Factory
[local] HRESULT __stdcall D2D1CreateDevice(IDXGIDevice *dxgi_device,
const D2D1_CREATION_PROPERTIES *creation_properties, ID2D1Device **device);
[local] void __stdcall D2D1SinCos(float angle, float *s, float *c);