From 4aa756267cdc1845b56b98995312d8b6058b1d59 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jean-Philippe=20Bruy=C3=A8re?= Date: Mon, 24 Mar 2025 19:31:44 +0100 Subject: [PATCH] debug --- gunit_tests/basicDraw.cpp | 58 ++++++++++++++++++++++++++++++++++++ gunit_tests/drawTestBase.cpp | 1 + gunit_tests/imageDraw.cpp | 16 ++++++++++ gunit_tests/matrices.cpp | 2 +- shaders/vkvg_main.frag | 1 - tests/CMakeLists.txt | 5 ++++ tests/img_surf.c | 56 +++++++++++++++++++++++++--------- 7 files changed, 123 insertions(+), 16 deletions(-) diff --git a/gunit_tests/basicDraw.cpp b/gunit_tests/basicDraw.cpp index e4e290f..c07544d 100644 --- a/gunit_tests/basicDraw.cpp +++ b/gunit_tests/basicDraw.cpp @@ -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(); +} diff --git a/gunit_tests/drawTestBase.cpp b/gunit_tests/drawTestBase.cpp index 9fc021f..2fdc9c5 100644 --- a/gunit_tests/drawTestBase.cpp +++ b/gunit_tests/drawTestBase.cpp @@ -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); } diff --git a/gunit_tests/imageDraw.cpp b/gunit_tests/imageDraw.cpp index 3f0a93f..c327f27 100644 --- a/gunit_tests/imageDraw.cpp +++ b/gunit_tests/imageDraw.cpp @@ -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(); +} diff --git a/gunit_tests/matrices.cpp b/gunit_tests/matrices.cpp index 040ce61..05a85a8 100644 --- a/gunit_tests/matrices.cpp +++ b/gunit_tests/matrices.cpp @@ -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); diff --git a/shaders/vkvg_main.frag b/shaders/vkvg_main.frag index b0d0423..8fe108d 100644 --- a/shaders/vkvg_main.frag +++ b/shaders/vkvg_main.frag @@ -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: diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 9199a4a..d148dbe 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -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} $) @@ -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} diff --git a/tests/img_surf.c b/tests/img_surf.c index 35a9461..f7bbb33 100644 --- a/tests/img_surf.c +++ b/tests/img_surf.c @@ -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; } -- 2.47.3