From cbe6e7177508b542dad5a90f14577216af179edd Mon Sep 17 00:00:00 2001 From: Alexandre Julliard Date: Sun, 25 Jan 2009 17:08:55 +0100 Subject: [PATCH] gdi32/tests: Fix the mapping test to handle the more precise LOMETRIC settings on Vista. --- dlls/gdi32/tests/mapping.c | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/dlls/gdi32/tests/mapping.c b/dlls/gdi32/tests/mapping.c index 7e85ca9e05a..f3a92e5cab9 100644 --- a/dlls/gdi32/tests/mapping.c +++ b/dlls/gdi32/tests/mapping.c @@ -75,8 +75,9 @@ static void test_world_transform(void) { BOOL is_win9x; HDC hdc; - INT ret, size_cx, size_cy, res_x, res_y; + INT ret, size_cx, size_cy, res_x, res_y, dpi_x, dpi_y; XFORM xform; + SIZE size; SetLastError(0xdeadbeef); GetWorldTransform(0, NULL); @@ -88,7 +89,10 @@ static void test_world_transform(void) size_cy = GetDeviceCaps(hdc, VERTSIZE); res_x = GetDeviceCaps(hdc, HORZRES); res_y = GetDeviceCaps(hdc, VERTRES); - trace("dc size %d x %d, resolution %d x %d\n", size_cx, size_cy, res_x, res_y); + dpi_x = GetDeviceCaps(hdc, LOGPIXELSX); + dpi_y = GetDeviceCaps(hdc, LOGPIXELSY); + trace("dc size %d x %d, resolution %d x %d dpi %d x %d\n", + size_cx, size_cy, res_x, res_y, dpi_x, dpi_y ); expect_viewport_ext(hdc, 1, 1); expect_window_ext(hdc, 1, 1); @@ -101,13 +105,19 @@ static void test_world_transform(void) if (is_win9x) { - expect_viewport_ext(hdc, GetDeviceCaps(hdc, LOGPIXELSX), GetDeviceCaps(hdc, LOGPIXELSY)); + expect_viewport_ext(hdc, dpi_x, dpi_y); expect_window_ext(hdc, 254, -254); } else { expect_viewport_ext(hdc, res_x, -res_y); - expect_window_ext(hdc, size_cx * 10, size_cy * 10); + ok( GetWindowExtEx( hdc, &size ), "GetWindowExtEx failed\n" ); + ok( size.cx == size_cx * 10 || + size.cx == MulDiv( res_x, 254, dpi_x ), /* Vista uses a more precise method */ + "expected cx %d or %d, got %d\n", size_cx * 10, MulDiv( res_x, 254, dpi_x ), size.cx ); + ok( size.cy == size_cy * 10 || + size.cy == MulDiv( res_y, 254, dpi_y ), /* Vista uses a more precise method */ + "expected cy %d or %d, got %d\n", size_cy * 10, MulDiv( res_y, 254, dpi_y ), size.cy ); } expect_world_trasform(hdc, 1.0, 1.0); expect_LPtoDP(hdc, MulDiv(1000 / 10, res_x, size_cx), -MulDiv(1000 / 10, res_y, size_cy)); @@ -154,9 +164,15 @@ static void test_world_transform(void) ok(ret == MM_TEXT, "expected MM_TEXT, got %d\n", ret); expect_viewport_ext(hdc, res_x, -res_y); - expect_window_ext(hdc, size_cx * 10, size_cy * 10); + ok( GetWindowExtEx( hdc, &size ), "GetWindowExtEx failed\n" ); + ok( size.cx == size_cx * 10 || + size.cx == MulDiv( res_x, 254, dpi_x ), /* Vista uses a more precise method */ + "expected cx %d or %d, got %d\n", size_cx * 10, MulDiv( res_x, 254, dpi_x ), size.cx ); + ok( size.cy == size_cy * 10 || + size.cy == MulDiv( res_y, 254, dpi_y ), /* Vista uses a more precise method */ + "expected cy %d or %d, got %d\n", size_cy * 10, MulDiv( res_y, 254, dpi_y ), size.cy ); expect_world_trasform(hdc, 20.0, 20.0); - expect_LPtoDP(hdc, MulDiv(1000 * 2, res_x, size_cx), -MulDiv(1000 * 2, res_y, size_cy)); + expect_LPtoDP(hdc, MulDiv(20000, res_x, size.cx), -MulDiv(20000, res_y, size.cy)); SetLastError(0xdeadbeef); ret = SetMapMode(hdc, MM_TEXT);