diff --git a/dlls/gdiplus/tests/Makefile.in b/dlls/gdiplus/tests/Makefile.in index 3771da2ac74..8f0904c2b76 100644 --- a/dlls/gdiplus/tests/Makefile.in +++ b/dlls/gdiplus/tests/Makefile.in @@ -7,6 +7,7 @@ IMPORTS = gdiplus user32 gdi32 kernel32 CTESTS = \ brush.c \ + font.c \ graphics.c \ graphicspath.c \ image.c \ diff --git a/dlls/gdiplus/tests/font.c b/dlls/gdiplus/tests/font.c new file mode 100644 index 00000000000..1326a6ad36a --- /dev/null +++ b/dlls/gdiplus/tests/font.c @@ -0,0 +1,82 @@ +/* + * Unit test suite for fonts + * + * Copyright (C) 2007 Google (Evan Stade) + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include "windows.h" +#include "gdiplus.h" +#include "wine/test.h" + +#define expect(expected, got) ok(got == expected, "Expected %.8x, got %.8x\n", expected, got) + +static WCHAR arial[] = {'A','r','i','a','l','\0'}; + +static void test_logfont(void) +{ + LOGFONTW lfw, lfw2; + GpFont *font; + GpStatus stat; + GpGraphics *graphics; + HDC hdc = GetDC(0); + + GdipCreateFromHDC(hdc, &graphics); + memset(&lfw, 0, sizeof(LOGFONTW)); + memset(&lfw2, 0xff, sizeof(LOGFONTW)); + memcpy(&lfw.lfFaceName, arial, 6 * sizeof(WCHAR)); + + stat = GdipCreateFontFromLogfontW(hdc, &lfw, &font); + expect(Ok, stat); + stat = GdipGetLogFontW(font, graphics, &lfw2); + expect(Ok, stat); + + todo_wine + ok(lfw2.lfHeight < 0, "Expected negative height\n"); + expect(0, lfw2.lfWidth); + expect(0, lfw2.lfEscapement); + expect(0, lfw2.lfOrientation); + todo_wine + ok((lfw2.lfWeight >= 100) && (lfw2.lfWeight <= 900), "Expected weight to be set\n"); + expect(0, lfw2.lfItalic); + expect(0, lfw2.lfUnderline); + expect(0, lfw2.lfStrikeOut); + expect(0, lfw2.lfCharSet); + expect(0, lfw2.lfOutPrecision); + expect(0, lfw2.lfClipPrecision); + expect(0, lfw2.lfQuality); + expect(0, lfw2.lfPitchAndFamily); + + GdipDeleteGraphics(graphics); + ReleaseDC(0, hdc); +} + +START_TEST(font) +{ + struct GdiplusStartupInput gdiplusStartupInput; + ULONG_PTR gdiplusToken; + + gdiplusStartupInput.GdiplusVersion = 1; + gdiplusStartupInput.DebugEventCallback = NULL; + gdiplusStartupInput.SuppressBackgroundThread = 0; + gdiplusStartupInput.SuppressExternalCodecs = 0; + + GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL); + + test_logfont(); + + GdiplusShutdown(gdiplusToken); +}