[1/2] gdiplus: Add test for matrix transform in GdipWidenPath.

Vincent Povirk madewokherd at gmail.com
Tue Feb 16 16:10:21 CST 2016


From: Vincent Povirk <vincent at codeweavers.com>

Signed-off-by: Vincent Povirk <vincent at codeweavers.com>
---
 dlls/gdiplus/tests/graphicspath.c | 93 +++++++++++++++++++++++++++++++++++++++
 1 file changed, 93 insertions(+)

diff --git a/dlls/gdiplus/tests/graphicspath.c b/dlls/gdiplus/tests/graphicspath.c
index 400123c..81670a4 100644
--- a/dlls/gdiplus/tests/graphicspath.c
+++ b/dlls/gdiplus/tests/graphicspath.c
@@ -1055,6 +1055,13 @@ static path_test_t widenline_path[] = {
     {5.0, 15.0,  PathPointTypeLine|PathPointTypeCloseSubpath,  0, 0} /*3*/
     };
 
+static path_test_t widenline_wide_path[] = {
+    {5.0, 0.0,   PathPointTypeStart, 0, 1}, /*0*/
+    {50.0, 0.0,  PathPointTypeLine,  0, 1}, /*1*/
+    {50.0, 20.0, PathPointTypeLine,  0, 1}, /*2*/
+    {5.0, 20.0,  PathPointTypeLine|PathPointTypeCloseSubpath,  0, 1} /*3*/
+    };
+
 static void test_widen(void)
 {
     GpStatus status;
@@ -1099,6 +1106,92 @@ static void test_widen(void)
     expect(Ok, status);
     ok_path(path, widenline_path, sizeof(widenline_path)/sizeof(path_test_t), FALSE);
 
+    /* horizontal 2x stretch */
+    status = GdipResetPath(path);
+    expect(Ok, status);
+    status = GdipAddPathLine(path, 2.5, 10.0, 25.0, 10.0);
+    expect(Ok, status);
+
+    status = GdipScaleMatrix(m, 2.0, 1.0, MatrixOrderAppend);
+    expect(Ok, status);
+
+    status = GdipWidenPath(path, pen, m, 1.0);
+    expect(Ok, status);
+    ok_path(path, widenline_path, sizeof(widenline_path)/sizeof(path_test_t), FALSE);
+
+    /* vertical 2x stretch */
+    status = GdipResetPath(path);
+    expect(Ok, status);
+    status = GdipAddPathLine(path, 5.0, 5.0, 50.0, 5.0);
+    expect(Ok, status);
+
+    status = GdipScaleMatrix(m, 0.5, 2.0, MatrixOrderAppend);
+    expect(Ok, status);
+
+    status = GdipWidenPath(path, pen, m, 1.0);
+    expect(Ok, status);
+    ok_path(path, widenline_path, sizeof(widenline_path)/sizeof(path_test_t), FALSE);
+
+    status = GdipScaleMatrix(m, 1.0, 0.5, MatrixOrderAppend);
+    expect(Ok, status);
+
+    /* pen width in UnitWorld */
+    GdipDeletePen(pen);
+    status = GdipCreatePen1(0xffffffff, 10.0, UnitWorld, &pen);
+    expect(Ok, status);
+
+    status = GdipResetPath(path);
+    expect(Ok, status);
+    status = GdipAddPathLine(path, 5.0, 10.0, 50.0, 10.0);
+    expect(Ok, status);
+
+    status = GdipWidenPath(path, pen, m, 1.0);
+    expect(Ok, status);
+    ok_path(path, widenline_path, sizeof(widenline_path)/sizeof(path_test_t), FALSE);
+
+    /* horizontal 2x stretch */
+    status = GdipResetPath(path);
+    expect(Ok, status);
+    status = GdipAddPathLine(path, 2.5, 10.0, 25.0, 10.0);
+    expect(Ok, status);
+
+    status = GdipScaleMatrix(m, 2.0, 1.0, MatrixOrderAppend);
+    expect(Ok, status);
+
+    status = GdipWidenPath(path, pen, m, 1.0);
+    expect(Ok, status);
+    ok_path(path, widenline_path, sizeof(widenline_path)/sizeof(path_test_t), FALSE);
+
+    /* vertical 2x stretch */
+    status = GdipResetPath(path);
+    expect(Ok, status);
+    status = GdipAddPathLine(path, 5.0, 5.0, 50.0, 5.0);
+    expect(Ok, status);
+
+    status = GdipScaleMatrix(m, 0.5, 2.0, MatrixOrderAppend);
+    expect(Ok, status);
+
+    status = GdipWidenPath(path, pen, m, 1.0);
+    expect(Ok, status);
+    ok_path(path, widenline_wide_path, sizeof(widenline_wide_path)/sizeof(path_test_t), FALSE);
+
+    status = GdipScaleMatrix(m, 1.0, 0.5, MatrixOrderAppend);
+    expect(Ok, status);
+
+    /* pen width in UnitInch */
+    GdipDeletePen(pen);
+    status = GdipCreatePen1(0xffffffff, 10.0, UnitWorld, &pen);
+    expect(Ok, status);
+
+    status = GdipResetPath(path);
+    expect(Ok, status);
+    status = GdipAddPathLine(path, 5.0, 10.0, 50.0, 10.0);
+    expect(Ok, status);
+
+    status = GdipWidenPath(path, pen, m, 1.0);
+    expect(Ok, status);
+    ok_path(path, widenline_path, sizeof(widenline_path)/sizeof(path_test_t), FALSE);
+
     GdipDeleteMatrix(m);
     GdipDeletePen(pen);
     GdipDeletePath(path);
-- 
2.5.0




More information about the wine-patches mailing list