summaryrefslogtreecommitdiffstatsci
diff options
context:
space:
mode:
authorJean-Philippe Bruyère <jp_bruyere@hotmail.com>2025-03-24 19:31:44 +0100
committerJean-Philippe Bruyère <jp_bruyere@hotmail.com>2025-03-24 19:31:44 +0100
commit4aa756267cdc1845b56b98995312d8b6058b1d59 (patch)
tree8763f51b5e0233af433b105b7475fd0c00973dd5
parent7e7e2b0c5a6810683caf88dcd98a4fae96cb2331 (diff)
debug
-rw-r--r--gunit_tests/basicDraw.cpp58
-rw-r--r--gunit_tests/drawTestBase.cpp1
-rw-r--r--gunit_tests/imageDraw.cpp16
-rw-r--r--gunit_tests/matrices.cpp2
-rw-r--r--shaders/vkvg_main.frag1
-rw-r--r--tests/CMakeLists.txt5
-rw-r--r--tests/img_surf.c56
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} $<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}
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;
}