Zhiyi Zhang : d2d1/tests: Add d2d_transformed_geometry_StrokeContainsPoint() tests.

Alexandre Julliard julliard at winehq.org
Fri Mar 11 14:49:10 CST 2022


Module: wine
Branch: master
Commit: f2dbb0b41030aeb2b7c19478fd842b70efa0ce49
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=f2dbb0b41030aeb2b7c19478fd842b70efa0ce49

Author: Zhiyi Zhang <zzhang at codeweavers.com>
Date:   Fri Mar 11 14:32:05 2022 +0800

d2d1/tests: Add d2d_transformed_geometry_StrokeContainsPoint() tests.

Signed-off-by: Zhiyi Zhang <zzhang at codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/d2d1/tests/d2d1.c | 49 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 49 insertions(+)

diff --git a/dlls/d2d1/tests/d2d1.c b/dlls/d2d1/tests/d2d1.c
index d1e8b97ed7d..731ef6e0807 100644
--- a/dlls/d2d1/tests/d2d1.c
+++ b/dlls/d2d1/tests/d2d1.c
@@ -10352,7 +10352,9 @@ static void test_effect_crop(BOOL d3d11)
 
 static void test_stroke_contains_point(BOOL d3d11)
 {
+    ID2D1TransformedGeometry *transformed_geometry;
     ID2D1RectangleGeometry *rectangle;
+    D2D1_MATRIX_3X2_F matrix;
     ID2D1GeometrySink *sink;
     ID2D1PathGeometry *path;
     ID2D1Factory *factory;
@@ -10370,6 +10372,7 @@ static void test_stroke_contains_point(BOOL d3d11)
         float stroke_width;
         BOOL matrix;
         BOOL contains;
+        BOOL todo;
     }
     rectangle_tests[] =
     {
@@ -10527,6 +10530,24 @@ static void test_stroke_contains_point(BOOL d3d11)
         {{{{1.0f, 0.0f, 1.0f, 1.0f}}}, {1425.0f, 827.6f}, 0.1f, 5.0f, TRUE, FALSE},
         {{{{1.0f, 0.0f, 1.0f, 1.0f}}}, {1620.1f, 800.0f}, 0.1f, 5.0f, TRUE, FALSE},
         {{{{1.0f, 0.0f, 1.0f, 1.0f}}}, {1620.4f, 800.0f}, 0.1f, 5.0f, TRUE, TRUE},
+    },
+    transformed_tests[] =
+    {
+        /* 0. Stroked area hittesting. Edge. Tolerance is 0.0f */
+        {{{{0.0f}}}, {0.74f,  2.5f},  0.0f,   1.0f, FALSE, TRUE},
+        {{{{0.0f}}}, {0.75f,  2.5f},  0.0f,   1.0f, FALSE, FALSE, TRUE},
+
+        /* 2. Stroked area hittesting. Edge. Tolerance is negative */
+        {{{{0.0f}}}, {0.74f,  2.5f}, -1.0f,   1.0f, FALSE, TRUE},
+        {{{{0.0f}}}, {0.75f,  2.5f}, -1.0f,   1.0f, FALSE, FALSE, TRUE},
+
+        /* 4. Stroked area hittesting. Edge. Tolerance is close to zero */
+        {{{{0.0f}}}, {0.501f, 2.5f},  0.001f, 1.0f, FALSE, TRUE},
+        {{{{0.0f}}}, {0.502f, 2.5f},  0.001f, 1.0f, FALSE, FALSE, TRUE},
+
+        /* 6. Stroked area hittesting. Edge. Tolerance is D2D1_DEFAULT_FLATTENING_TOLERANCE */
+        {{{{0.0f}}}, {0.74f,  2.5f},  0.25f,  1.0f, FALSE, TRUE},
+        {{{{0.0f}}}, {0.75f,  2.5f},  0.25f,  1.0f, FALSE, FALSE, TRUE},
     };
 
     hr = D2D1CreateFactory(D2D1_FACTORY_TYPE_SINGLE_THREADED, &IID_ID2D1Factory, NULL, (void **)&factory);
@@ -10616,6 +10637,34 @@ static void test_stroke_contains_point(BOOL d3d11)
 
     ID2D1PathGeometry_Release(path);
 
+    set_rect(&rect, 0.0f, 0.0f, 5.0f, 5.0f);
+    hr = ID2D1Factory_CreateRectangleGeometry(factory, &rect, &rectangle);
+    ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
+    set_matrix_identity(&matrix);
+    scale_matrix(&matrix, 2.0f, 4.0f);
+    hr = ID2D1Factory_CreateTransformedGeometry(factory, (ID2D1Geometry *)rectangle, &matrix,
+                &transformed_geometry);
+    ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
+
+    for (i = 0; i < ARRAY_SIZE(transformed_tests); ++i)
+    {
+        const struct contains_point_test *test = &transformed_tests[i];
+
+        winetest_push_context("Test %u", i);
+
+        contains = !test->contains;
+        hr = ID2D1TransformedGeometry_StrokeContainsPoint(transformed_geometry, test->point,
+                test->stroke_width, NULL, test->matrix ? &test->transform : NULL, test->tolerance,
+                &contains);
+        ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
+        todo_wine_if(test->todo)
+        ok(contains == test->contains, "Got unexpected result %#x.\n", contains);
+
+        winetest_pop_context();
+    }
+    ID2D1TransformedGeometry_Release(transformed_geometry);
+    ID2D1RectangleGeometry_Release(rectangle);
+
     ID2D1Factory_Release(factory);
 }
 




More information about the wine-cvs mailing list