From db328d2a861f5aedec900e44fbe1fd542b307afb Mon Sep 17 00:00:00 2001 From: Jean-Philippe Bruyère Date: Sun, 22 Jun 2025 12:06:15 +0200 Subject: unified samples app in c++, unit testing wip --- samples/tests/gradient.cpp | 161 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 161 insertions(+) create mode 100644 samples/tests/gradient.cpp (limited to 'samples/tests/gradient.cpp') diff --git a/samples/tests/gradient.cpp b/samples/tests/gradient.cpp new file mode 100644 index 0000000..33c0e6d --- /dev/null +++ b/samples/tests/gradient.cpp @@ -0,0 +1,161 @@ +#include "VkvgTest.hpp" + +VkvgPattern create_grad(VkvgContext ctx, float x) { + VkvgPattern pat = vkvg_pattern_create_linear(x, 0, 300, 0); + vkvg_pattern_add_color_stop(pat, 0, 1, 0, 0, 1); + vkvg_pattern_add_color_stop(pat, 0.5f, 0, 1, 0, 1); + vkvg_pattern_add_color_stop(pat, 1, 0, 0, 1, 1); + return pat; +} + +TEST(gradient_paint) { + VkvgContext ctx = vkvg_create(test->surf); + vkvg_clear(ctx); + + // vkvg_translate(ctx,100,100); + VkvgPattern pat = create_grad(ctx, 0); + // vkvg_pattern_set_extend(pat,VKVG_EXTEND_NONE); + vkvg_rectangle(ctx, 0, 0, 400, 460); + vkvg_set_source(ctx, pat); + vkvg_pattern_destroy(pat); + vkvg_fill(ctx); + + float x = 100; + pat = create_grad(ctx, x); + // vkvg_pattern_set_extend(pat,VKVG_EXTEND_NONE); + vkvg_rectangle(ctx, x, 200, 50, 50); + vkvg_set_source(ctx, pat); + vkvg_pattern_destroy(pat); + vkvg_fill(ctx); + + x += 100; + + pat = vkvg_pattern_create_linear(10, 0, 300, 0); + vkvg_pattern_add_color_stop(pat, 0, 0, 0, 1, 0); + vkvg_pattern_add_color_stop(pat, 1, 1, 0, 0, 1); + // vkvg_pattern_set_extend(pat,VKVG_EXTEND_NONE); + vkvg_rectangle(ctx, 10, 10, 300, 50); + vkvg_set_source(ctx, pat); + vkvg_pattern_destroy(pat); + vkvg_fill(ctx); + + x += 200; + + pat = create_grad(ctx, x); + // vkvg_pattern_set_extend(pat,VKVG_EXTEND_NONE); + vkvg_rectangle(ctx, x, 200, 50, 50); + vkvg_set_source(ctx, pat); + vkvg_pattern_destroy(pat); + vkvg_fill(ctx); + + x += 100; + + pat = create_grad(ctx, x); + // vkvg_pattern_set_extend(pat,VKVG_EXTEND_NONE); + vkvg_rectangle(ctx, x, 200, 50, 50); + vkvg_set_source(ctx, pat); + vkvg_pattern_destroy(pat); + vkvg_fill(ctx); + + /*vkvg_set_source_rgb(ctx, 0,1,0); + vkvg_rectangle(ctx, 100,100,200,160); + vkvg_fill_preserve(ctx); + vkvg_set_source_rgb(ctx, 0,0,0); + vkvg_set_line_width(ctx,1.0f); + vkvg_stroke(ctx);*/ + + vkvg_destroy(ctx); +} + +TEST(gradient_paint_repeat) { + VkvgContext ctx = vkvg_create(test->surf); + vkvg_clear(ctx); + + VkvgPattern pat = create_grad(ctx, 0); + vkvg_pattern_set_extend(pat, VKVG_EXTEND_REPEAT); + vkvg_set_source(ctx, pat); + vkvg_pattern_destroy(pat); + vkvg_paint(ctx); + + vkvg_destroy(ctx); +} + +TEST(gradient_test0) { + VkvgContext ctx = vkvg_create(test->surf); + vkvg_clear(ctx); + VkvgPattern pat = create_grad(ctx, 0); + vkvg_set_source(ctx, pat); + vkvg_rectangle(ctx, 100, 100, 200, 200); + vkvg_set_line_width(ctx, 20); + // vkvg_fill (ctx); + // vkvg_paint(ctx); + vkvg_stroke(ctx); + vkvg_pattern_destroy(pat); + + vkvg_destroy(ctx); +} +TEST(gradient_test1) { + VkvgContext ctx = vkvg_create(test->surf); + vkvg_clear(ctx); + + vkvg_set_source_rgb(ctx, 1, 0, 0); + vkvg_paint(ctx); + + VkvgPattern pat = vkvg_pattern_create_linear(100, 0, 300, 0); + vkvg_set_line_width(ctx, 20); + vkvg_pattern_add_color_stop(pat, 0, 1, 1, 1, 1); + vkvg_pattern_add_color_stop(pat, 1, 1, 1, 0, 0); + vkvg_set_source(ctx, pat); + vkvg_rectangle(ctx, 100, 100, 200, 200); + vkvg_fill(ctx); + // vkvg_stroke (ctx); + vkvg_pattern_destroy(pat); + + vkvg_destroy(ctx); +} + +TEST(gradient_transform) { + VkvgContext ctx = vkvg_create(test->surf); + vkvg_clear(ctx); + + // vkvg_translate(ctx,-100,-100); + + vkvg_translate(ctx, 200, 100); + vkvg_rotate(ctx, 0.5f); + + // vkvg_scale(ctx,2,2); + VkvgPattern pat = vkvg_pattern_create_linear(0, 0, 400, 0); + vkvg_pattern_set_extend(pat, VKVG_EXTEND_NONE); + vkvg_set_line_width(ctx, 20); + vkvg_pattern_add_color_stop(pat, 0, 1, 0, 0, 1); + vkvg_pattern_add_color_stop(pat, 0.5f, 0, 1, 0, 1); + vkvg_pattern_add_color_stop(pat, 1, 0, 0, 1, 1); + vkvg_set_source(ctx, pat); + vkvg_rectangle(ctx, 0, 0, 400, 200); + // vkvg_fill (ctx); + vkvg_stroke(ctx); + // vkvg_paint(ctx); + vkvg_pattern_destroy(pat); + + vkvg_destroy(ctx); +} + +TEST(gradient_alpha) { + VkvgContext ctx = vkvg_create(test->surf); + vkvg_clear(ctx); + + vkvg_set_source_rgb(ctx, 0, 1, 0); + vkvg_paint(ctx); + + VkvgPattern pat = vkvg_pattern_create_linear(10, 0, 300, 0); + vkvg_pattern_add_color_stop(pat, 1, 1, 0, 0, 0.5); + vkvg_pattern_add_color_stop(pat, 1, 1, 0, 0, 0.5); + + vkvg_set_source(ctx, pat); + vkvg_pattern_destroy(pat); + vkvg_rectangle(ctx, 10, 10, 300, 200); + vkvg_fill(ctx); + + vkvg_destroy(ctx); +} + -- cgit v1.3.1-4-g156e