From ccc6a576d6f8347ee3590135657da1c4f6109265 Mon Sep 17 00:00:00 2001 From: Nikolay Sivov Date: Wed, 7 Sep 2016 17:33:50 +0300 Subject: [PATCH] d2d1/tests: Test that target properties are kept during BindDC(). Signed-off-by: Nikolay Sivov Signed-off-by: Henri Verbeet Signed-off-by: Alexandre Julliard --- dlls/d2d1/tests/d2d1.c | 39 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) diff --git a/dlls/d2d1/tests/d2d1.c b/dlls/d2d1/tests/d2d1.c index dbbe7d0c395..0a81013cbbe 100644 --- a/dlls/d2d1/tests/d2d1.c +++ b/dlls/d2d1/tests/d2d1.c @@ -2654,18 +2654,23 @@ static void test_dc_target(void) { DXGI_FORMAT_B8G8R8A8_UNORM, D2D1_ALPHA_MODE_UNKNOWN }, { DXGI_FORMAT_R8G8B8A8_UNORM, D2D1_ALPHA_MODE_PREMULTIPLIED }, }; + D2D1_TEXT_ANTIALIAS_MODE text_aa_mode; D2D1_RENDER_TARGET_PROPERTIES desc; + D2D1_MATRIX_3X2_F matrix, matrix2; + D2D1_ANTIALIAS_MODE aa_mode; ID2D1SolidColorBrush *brush; ID2D1DCRenderTarget *rt; ID2D1Factory *factory; + FLOAT dpi_x, dpi_y; D2D1_COLOR_F color; D2D1_SIZE_F size; + D2D1_TAG t1, t2; unsigned int i; HDC hdc, hdc2; + D2D_RECT_F r; COLORREF clr; HRESULT hr; RECT rect; - D2D_RECT_F r; hr = D2D1CreateFactory(D2D1_FACTORY_TYPE_SINGLE_THREADED, &IID_ID2D1Factory, NULL, (void **)&factory); ok(SUCCEEDED(hr), "Failed to create factory, hr %#x.\n", hr); @@ -2716,6 +2721,14 @@ if (SUCCEEDED(hr)) hr = ID2D1Factory_CreateDCRenderTarget(factory, &desc, &rt); ok(SUCCEEDED(hr), "Failed to create target, hr %#x.\n", hr); + aa_mode = ID2D1DCRenderTarget_GetAntialiasMode(rt); + ok(aa_mode == D2D1_ANTIALIAS_MODE_PER_PRIMITIVE, "Got wrong default aa mode %d.\n", aa_mode); + text_aa_mode = ID2D1DCRenderTarget_GetTextAntialiasMode(rt); + ok(text_aa_mode == D2D1_TEXT_ANTIALIAS_MODE_DEFAULT, "Got wrong default text aa mode %d.\n", text_aa_mode); + + ID2D1DCRenderTarget_GetDpi(rt, &dpi_x, &dpi_y); + ok(dpi_x == 96.0f && dpi_y == 96.0f, "Got dpi_x %f, dpi_y %f.\n", dpi_x, dpi_y); + hdc = CreateCompatibleDC(NULL); ok(hdc != NULL, "Failed to create an HDC.\n"); @@ -2725,9 +2738,33 @@ if (SUCCEEDED(hr)) hr = ID2D1DCRenderTarget_BindDC(rt, NULL, &rect); ok(hr == E_INVALIDARG, "BindDC() returned %#x.\n", hr); + /* Target properties are retained during BindDC() */ + ID2D1DCRenderTarget_SetTags(rt, 1, 2); + ID2D1DCRenderTarget_SetAntialiasMode(rt, D2D1_ANTIALIAS_MODE_ALIASED); + ID2D1DCRenderTarget_SetTextAntialiasMode(rt, D2D1_TEXT_ANTIALIAS_MODE_CLEARTYPE); + + set_matrix_identity(&matrix); + translate_matrix(&matrix, 200.0f, 600.0f); + ID2D1DCRenderTarget_SetTransform(rt, &matrix); + hr = ID2D1DCRenderTarget_BindDC(rt, hdc, &rect); ok(hr == S_OK, "BindDC() returned %#x.\n", hr); + ID2D1DCRenderTarget_GetTags(rt, &t1, &t2); + ok(t1 == 1 && t2 == 2, "Got wrong tags.\n"); + + aa_mode = ID2D1DCRenderTarget_GetAntialiasMode(rt); + ok(aa_mode == D2D1_ANTIALIAS_MODE_ALIASED, "Got wrong aa mode %d.\n", aa_mode); + + text_aa_mode = ID2D1DCRenderTarget_GetTextAntialiasMode(rt); + ok(text_aa_mode == D2D1_TEXT_ANTIALIAS_MODE_CLEARTYPE, "Got wrong text aa mode %d.\n", text_aa_mode); + + ID2D1DCRenderTarget_GetTransform(rt, &matrix2); + ok(!memcmp(&matrix, &matrix2, sizeof(matrix)), "Got wrong target transform.\n"); + + set_matrix_identity(&matrix); + ID2D1DCRenderTarget_SetTransform(rt, &matrix); + /* target size comes from specified dimensions, not from selected bitmap size */ size = ID2D1DCRenderTarget_GetSize(rt); ok(size.width == 32.0f, "got width %.08e.\n", size.width);