From e664c2bd3ac39da32d6093aa3be272a6fa7f6ce4 Mon Sep 17 00:00:00 2001 From: Dmitry Timoshkov <dmitry@baikal.ru> Date: Mon, 8 Oct 2012 16:48:59 +0900 Subject: [PATCH] gdiplus: Add a font transformation test. --- dlls/gdiplus/tests/font.c | 70 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) diff --git a/dlls/gdiplus/tests/font.c b/dlls/gdiplus/tests/font.c index 66517b1bf11..0ac95581619 100644 --- a/dlls/gdiplus/tests/font.c +++ b/dlls/gdiplus/tests/font.c @@ -804,6 +804,75 @@ todo_wine DeleteDC(hdc); } +static void test_font_transform(void) +{ + GpStatus status; + HDC hdc; + LOGFONT lf; + GpFont *font; + GpGraphics *graphics; + GpMatrix *matrix; + + hdc = CreateCompatibleDC(0); + status = GdipCreateFromHDC(hdc, &graphics); + expect(Ok, status); + + memset(&lf, 0, sizeof(lf)); + lstrcpy(lf.lfFaceName, "Tahoma"); + lf.lfHeight = -100; + lf.lfWidth = 100; + status = GdipCreateFontFromLogfontA(hdc, &lf, &font); + expect(Ok, status); + + /* identity matrix */ + status = GdipCreateMatrix(&matrix); + expect(Ok, status); + status = GdipSetWorldTransform(graphics, matrix); + expect(Ok, status); + status = GdipGetLogFontA(font, graphics, &lf); + expect(Ok, status); + expect(-100, lf.lfHeight); + expect(0, lf.lfWidth); + + /* scale matrix */ + status = GdipScaleMatrix(matrix, 2.0, 3.0, MatrixOrderAppend); + expect(Ok, status); + status = GdipSetWorldTransform(graphics, matrix); + expect(Ok, status); + status = GdipGetLogFontA(font, graphics, &lf); + expect(Ok, status); +todo_wine + expect(-300, lf.lfHeight); + expect(0, lf.lfWidth); + + /* scale + ratate matrix */ + status = GdipRotateMatrix(matrix, 45.0, MatrixOrderAppend); + expect(Ok, status); + status = GdipSetWorldTransform(graphics, matrix); + expect(Ok, status); + status = GdipGetLogFontA(font, graphics, &lf); + expect(Ok, status); +todo_wine + expect(-300, lf.lfHeight); + expect(0, lf.lfWidth); + + /* scale + ratate + shear matrix */ + status = GdipShearMatrix(matrix, 4.0, 5.0, MatrixOrderAppend); + expect(Ok, status); + status = GdipSetWorldTransform(graphics, matrix); + expect(Ok, status); + status = GdipGetLogFontA(font, graphics, &lf); + expect(Ok, status); +todo_wine + expect(1032, lf.lfHeight); + expect(0, lf.lfWidth); + + GdipDeleteMatrix(matrix); + GdipDeleteFont(font); + GdipDeleteGraphics(graphics); + DeleteDC(hdc); +} + START_TEST(font) { struct GdiplusStartupInput gdiplusStartupInput; @@ -816,6 +885,7 @@ START_TEST(font) GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL); + test_font_transform(); test_font_substitution(); test_font_metrics(); test_createfont(); -- 2.24.1