]> O.S.I.I.S - jp/vkvg.git/commitdiff
debug
authorJean-Philippe Bruyère <jp_bruyere@hotmail.com>
Mon, 24 Mar 2025 18:31:44 +0000 (19:31 +0100)
committerJean-Philippe Bruyère <jp_bruyere@hotmail.com>
Mon, 24 Mar 2025 18:31:44 +0000 (19:31 +0100)
gunit_tests/basicDraw.cpp
gunit_tests/drawTestBase.cpp
gunit_tests/imageDraw.cpp
gunit_tests/matrices.cpp
shaders/vkvg_main.frag
tests/CMakeLists.txt
tests/img_surf.c

index e4e290f83e31362f1b05c9959e476a37a0f32309..c07544da5e68e7bec9d7d8481fd2290ee58b2d1e 100644 (file)
@@ -130,3 +130,61 @@ TEST_F(BasicDrawTest, CtxSolidPaintClippedOver) {
 
     compareWithRefImage();
 }
+void drawLineJoin(VkvgContext ctx) {
+    vkvg_move_to(ctx, 20, 70);
+    vkvg_line_to(ctx, 50, 20);
+    vkvg_line_to(ctx, 80, 70);
+    vkvg_stroke(ctx);
+}
+TEST_F(BasicDrawTest, CtxStrokeJoins) {
+    VkvgContext ctx = vkvg_create(surf);
+    vkvg_set_source_rgba(ctx,0,0,0,1);
+    vkvg_set_line_width(ctx, 20);
+
+    vkvg_set_line_join(ctx, VKVG_LINE_JOIN_BEVEL);
+    drawLineJoin(ctx);
+
+    vkvg_translate(ctx, 0, 80);
+    vkvg_set_line_join(ctx, VKVG_LINE_JOIN_MITER);
+    drawLineJoin(ctx);
+
+    vkvg_translate(ctx, 0, 80 );
+    vkvg_set_line_join(ctx, VKVG_LINE_JOIN_ROUND);
+    drawLineJoin(ctx);
+
+    vkvg_destroy(ctx);
+
+    compareWithRefImage();
+}
+void drawLineCap(VkvgContext ctx) {
+    vkvg_set_source_rgba(ctx,0,0,0,1);
+    vkvg_set_line_width(ctx, 20);
+    vkvg_move_to(ctx, 50, 50);
+    vkvg_line_to(ctx, 200, 50);
+    vkvg_stroke(ctx);
+    vkvg_set_line_cap(ctx, VKVG_LINE_CAP_BUTT);
+    vkvg_set_source_rgba(ctx,1,0,0,1);
+    vkvg_set_line_width(ctx, 2);
+    vkvg_move_to(ctx, 50, 50);
+    vkvg_line_to(ctx, 200, 50);
+    vkvg_stroke(ctx);
+
+}
+TEST_F(BasicDrawTest, CtxStrokeCaps) {
+    VkvgContext ctx = vkvg_create(surf);
+
+    vkvg_set_line_cap(ctx, VKVG_LINE_CAP_BUTT);
+    drawLineCap(ctx);
+
+    vkvg_translate(ctx, 0, 50);
+    vkvg_set_line_cap(ctx, VKVG_LINE_CAP_ROUND);
+    drawLineCap(ctx);
+
+    vkvg_translate(ctx, 0, 50 );
+    vkvg_set_line_cap(ctx, VKVG_LINE_CAP_SQUARE);
+    drawLineCap(ctx);
+
+    vkvg_destroy(ctx);
+
+    compareWithRefImage();
+}
index 9fc021f47ef60f40ad01ffa7d31f873231c31ff3..2fdc9c5fa50ac0a658def5eae3687af008a2d945 100644 (file)
@@ -14,6 +14,7 @@ DrawTestBase::DrawTestBase() {
         fs::create_directories(diffDir);
 
     vkvg_device_create_info_t info{};
+    info.samples = VK_SAMPLE_COUNT_4_BIT;
     dev  = vkvg_device_create(&info);
 }
 
index 3f0a93fbc246ebf8eb20883645b8a10acc079f10..c327f27b97224d735670513494d609d383c5b892 100644 (file)
@@ -130,4 +130,20 @@ TEST_F(ImageDrawTest, PaintImageTransform) {
     compareWithRefImage();
 }
 
+TEST_F(ImageDrawTest, PaintImageOnImage) {
+    VkvgContext ctx = vkvg_create(surf);
+    vkvg_set_source_surface(ctx, imgSurf, 0, 0);
+    vkvg_paint(ctx);
+
+    fs::path imgPath2 = fs::path(GTEST_DATA_ROOT) / "filled.png";
+    VkvgSurface imgSurf2 = vkvg_surface_create_from_image(dev, (char*)imgPath2.c_str());
+
+    vkvg_set_source_surface(ctx, imgSurf2, 50, 50);
+    vkvg_paint(ctx);
+
+    vkvg_surface_destroy(imgSurf2);
+    vkvg_destroy(ctx);
+
+    compareWithRefImage();
+}
 
index 040ce61b92dec20c134d0845583d5d2207509ae9..05a85a833e3ea73ff47562d2185155f435377b22 100644 (file)
@@ -8,7 +8,7 @@ EXPECT_FLOAT_EQ (mat.x0, _x0);EXPECT_FLOAT_EQ (mat.y0, _y0);
 
 
 TEST(MatrixTest, MatixInit) {
-    vkvg_matrix_t mat = VKVG_IDENTITY_MATRIX;
+    vkvg_matrix_t mat = {1,0,0,1,0,0};
     CHECK_MAT(1,0,0,1,0,0);
 
     vkvg_matrix_init_identity(&mat);
index b0d0423af72578476a0771ee8204b0cda80e4d92..8fe108da4367c19d0b612bb2ceaf9a35af08eb13 100644 (file)
@@ -78,7 +78,6 @@ void main()
                 uv /= inSrc.zw;
                 /*if (uv.x < 0 || uv.y < 0 || uv.x > 1 || uv.y > 1)
                     discard;*/
-
                 c = texture (source, uv);
                break;
        case LINEAR:
index 9199a4ad9f03092fcc91756ee670c062da5cbd97..d148dbed37b469644469878404afe2a70b7b5f44 100644 (file)
@@ -8,6 +8,8 @@ IF (VKVG_TEST_OFFSCREEN)
        ADD_DEFINITIONS (-DVKVG_TEST_OFFSCREEN)
 ENDIF ()
 
+set(TESTS_DATA_ROOT "${CMAKE_SOURCE_DIR}/tests/data/" CACHE STRING "Data path for tests")
+
 FUNCTION (buildtest TEST_FILE)
        GET_FILENAME_COMPONENT(TEST_NAME ${TEST_FILE} NAME_WE)
        ADD_EXECUTABLE(${TEST_NAME} ${TEST_FILE} $<TARGET_OBJECTS:tests_common>)
@@ -16,6 +18,9 @@ FUNCTION (buildtest TEST_FILE)
                        C_STANDARD 11
                        LINKER_LANGUAGE C
        )
+        target_compile_definitions("${TEST_NAME}" PUBLIC
+            TESTS_DATA_ROOT="${TESTS_DATA_ROOT}"
+        )
        TARGET_INCLUDE_DIRECTORIES(${TEST_NAME}
                PRIVATE
                        ${Vulkan_INCLUDE_DIRS}
index 35a94611bef99e9f613870fea0c93628cf3098d2..f7bbb33fbab9328615f646c3bd78b236d14ad290 100644 (file)
@@ -1,10 +1,10 @@
 #include "test.h"
 
-const char *imgPath = "data/miroir.jpg";
-const char* imgPath2 = "data/miroir.png";
-const char* imgPath3 = "data/filled.png";
-const char *imgPath4 = "data/miroir2.png";
-const char *imgPath5 = "data/miroir2-64.png";
+const char *imgPath = TESTS_DATA_ROOT "/miroir.jpg";
+const char* imgPath2 = TESTS_DATA_ROOT "/miroir.png";
+const char* imgPath3 = TESTS_DATA_ROOT "/filled.png";
+const char *imgPath4 = TESTS_DATA_ROOT "/miroir2.png";
+const char *imgPath5 = TESTS_DATA_ROOT "/miroir2-64.png";
 
 void        paint() {
     VkvgContext ctx     = vkvg_create(surf);
@@ -238,11 +238,7 @@ void imgTestClipped() {
     vkvg_destroy(ctx);
 }
 void imgTest3() {
-    VkvgSurface surface = vkvg_surface_create(device, 800, 600);
-
-    VkvgContext ctx = vkvg_create(surface);
-
-
+    VkvgContext ctx = vkvg_create(surf);
     VkvgSurface imgSurf = vkvg_surface_create_from_image(device, imgPath);
     VkvgSurface imgSurf2 = vkvg_surface_create_from_image(device, imgPath3);
     vkvg_set_operator(ctx, VKVG_OPERATOR_OVER);
@@ -261,9 +257,39 @@ void imgTest3() {
     vkvg_surface_destroy(imgSurf);
     vkvg_surface_destroy(imgSurf2);
 
-    vkvg_surface_write_to_png(surface, "imgTest3.png");
+    //vkvg_surface_write_to_png(surface, "imgTest3.png");
+
+    //vkvg_surface_destroy(surface);
+}
+
+void imgWithAlphaTest0() {    //VkvgSurface surface = vkvg_surface_create(device, 800, 600);
+
+    VkvgContext ctx = vkvg_create(surf);
+    VkvgSurface imgSurf = vkvg_surface_create_from_image(device, imgPath3);
+
+    vkvg_set_source_surface(ctx, imgSurf, 40, 40);
+    vkvg_paint(ctx);
+
+    vkvg_destroy(ctx);
+    vkvg_surface_destroy(imgSurf);
+}
+void imgWithAlphaTest1() {
+    VkvgContext ctx = vkvg_create(surf);
+    VkvgSurface imgSurf = vkvg_surface_create_from_image(device, imgPath);
+    VkvgSurface imgSurf2 = vkvg_surface_create_from_image(device, imgPath3);
+
+    vkvg_set_source_surface(ctx, imgSurf, 0, 0);
+    vkvg_paint(ctx);
+
+    vkvg_flush(ctx);
 
-    vkvg_surface_destroy(surface);
+    vkvg_set_source_surface(ctx, imgSurf2, 50, 50);
+    vkvg_paint(ctx);
+
+    vkvg_surface_destroy(imgSurf2);
+    vkvg_surface_destroy(imgSurf);
+
+    vkvg_destroy(ctx);
 }
 void imgTest4() {
     VkvgContext ctx = vkvg_create(surf);
@@ -303,8 +329,6 @@ void imgTest4() {
 }
 int main(int argc, char *argv[]) {
     no_test_size = true;
-    //PERFORM_TEST(imgTestClipped, argc, argv);
-    //PERFORM_TEST(imgTest3, argc, argv);
     PERFORM_TEST(paint, argc, argv);
     PERFORM_TEST(paint_offset, argc, argv);
     PERFORM_TEST(paint_with_scale, argc, argv);
@@ -318,7 +342,11 @@ int main(int argc, char *argv[]) {
     PERFORM_TEST(paint_patt_repeat_scalled, argc, argv);
     PERFORM_TEST(paint_patt_pad, argc, argv);
     PERFORM_TEST(test, argc, argv);
+    PERFORM_TEST(imgTest3, argc, argv);
     PERFORM_TEST(imgTest4, argc, argv);
+    PERFORM_TEST(imgTestClipped, argc, argv);
+    PERFORM_TEST(imgWithAlphaTest0, argc, argv);
+    PERFORM_TEST(imgWithAlphaTest1, argc, argv);
 
     return 0;
 }