summaryrefslogtreecommitdiffstatsci
path: root/samples/tests/gradient.cpp
diff options
context:
space:
mode:
authorJean-Philippe Bruyère <jp_bruyere@hotmail.com>2025-06-22 12:06:15 +0200
committerJean-Philippe Bruyère <jp_bruyere@hotmail.com>2025-06-22 12:06:15 +0200
commit0ca30a2d019ec31459a571dd82a36dad140df49b (patch)
tree3bb6aad41a6d518f04b72e09b98f0ff7c7abfef0 /samples/tests/gradient.cpp
parent86ff26b3787c09b2e9a321d944af312b49041f08 (diff)
unified samples app in c++, unit testing wip
Diffstat (limited to 'samples/tests/gradient.cpp')
-rw-r--r--samples/tests/gradient.cpp161
1 files changed, 161 insertions, 0 deletions
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);
+}
+