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();
+}
fs::create_directories(diffDir);
vkvg_device_create_info_t info{};
+ info.samples = VK_SAMPLE_COUNT_4_BIT;
dev = vkvg_device_create(&info);
}
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();
+}
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);
uv /= inSrc.zw;
/*if (uv.x < 0 || uv.y < 0 || uv.x > 1 || uv.y > 1)
discard;*/
-
c = texture (source, uv);
break;
case LINEAR:
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>)
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}
#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);
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);
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);
}
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);
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;
}