summaryrefslogtreecommitdiffstatsci
path: root/samples/tests/clip.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/clip.cpp
parent86ff26b3787c09b2e9a321d944af312b49041f08 (diff)
unified samples app in c++, unit testing wip
Diffstat (limited to 'samples/tests/clip.cpp')
-rw-r--r--samples/tests/clip.cpp168
1 files changed, 168 insertions, 0 deletions
diff --git a/samples/tests/clip.cpp b/samples/tests/clip.cpp
new file mode 100644
index 0000000..bbc3b40
--- /dev/null
+++ b/samples/tests/clip.cpp
@@ -0,0 +1,168 @@
+#include "VkvgTest.hpp"
+TEST(clipped_paint_ec) {
+ VkvgContext ctx = vkvg_create(test->surf);
+ vkvg_set_fill_rule(ctx, VKVG_FILL_RULE_NON_ZERO);
+ vkvg_set_source_rgb(ctx, 1, 0, 0);
+ vkvg_paint(ctx);
+ vkvg_set_source_rgb(ctx, 0, 1, 0);
+ vkvg_rectangle(ctx, 100, 100, 300, 200);
+ vkvg_clip(ctx);
+ vkvg_paint(ctx);
+ vkvg_destroy(ctx);
+}
+TEST(clipped_paint_eo) {
+ VkvgContext ctx = vkvg_create(test->surf);
+ vkvg_set_fill_rule(ctx, VKVG_FILL_RULE_EVEN_ODD);
+ vkvg_set_source_rgb(ctx, 1, 0, 0);
+ vkvg_paint(ctx);
+ vkvg_set_source_rgb(ctx, 0, 1, 0);
+ vkvg_rectangle(ctx, 100, 100, 300, 200);
+ vkvg_clip(ctx);
+ vkvg_paint(ctx);
+
+ vkvg_destroy(ctx);
+}
+TEST(clipped_paint2_ec) {
+ VkvgContext ctx = vkvg_create(test->surf);
+ vkvg_set_fill_rule(ctx, VKVG_FILL_RULE_NON_ZERO);
+ vkvg_set_source_rgb(ctx, 1, 0, 0);
+ vkvg_paint(ctx);
+ vkvg_set_source_rgb(ctx, 0, 1, 0);
+ vkvg_rectangle(ctx, 100, 100, 300, 200);
+ vkvg_clip(ctx);
+ vkvg_paint(ctx);
+
+ vkvg_reset_clip(ctx);
+ vkvg_rectangle(ctx, 200, 200, 300, 200);
+ vkvg_set_source_rgb(ctx, 0, 0, 1);
+ vkvg_paint(ctx);
+
+ vkvg_destroy(ctx);
+}
+TEST(clipped_paint2_eo) {
+ VkvgContext ctx = vkvg_create(test->surf);
+ vkvg_set_fill_rule(ctx, VKVG_FILL_RULE_EVEN_ODD);
+ vkvg_set_source_rgb(ctx, 1, 0, 0);
+ vkvg_paint(ctx);
+ vkvg_set_source_rgb(ctx, 0, 1, 0);
+ vkvg_rectangle(ctx, 100, 100, 300, 200);
+ vkvg_clip(ctx);
+ vkvg_paint(ctx);
+ vkvg_reset_clip(ctx);
+ vkvg_rectangle(ctx, 200, 200, 300, 200);
+ vkvg_set_source_rgb(ctx, 0, 0, 1);
+ vkvg_paint(ctx);
+
+ vkvg_destroy(ctx);
+}
+TEST(clipped_transformed_ec) {
+ VkvgContext ctx = vkvg_create(test->surf);
+ vkvg_set_fill_rule(ctx, VKVG_FILL_RULE_NON_ZERO);
+ vkvg_set_source_rgb(ctx, 1, 0, 0);
+ vkvg_paint(ctx);
+ vkvg_rotate(ctx, 0.2f);
+ vkvg_set_source_rgb(ctx, 0, 1, 0);
+ vkvg_rectangle(ctx, 100, 100, 300, 200);
+ vkvg_clip(ctx);
+ vkvg_paint(ctx);
+ vkvg_destroy(ctx);
+}
+TEST(clip_transformed_ec) {
+ VkvgContext ctx = vkvg_create(test->surf);
+ vkvg_set_fill_rule(ctx, VKVG_FILL_RULE_NON_ZERO);
+ vkvg_set_source_rgb(ctx, 1, 0, 0);
+ vkvg_paint(ctx);
+ vkvg_rotate(ctx, 0.1f);
+ vkvg_set_source_rgb(ctx, 0, 1, 0);
+ vkvg_rectangle(ctx, 100, 100, 300, 200);
+ vkvg_clip(ctx);
+ vkvg_paint(ctx);
+ vkvg_translate(ctx, 200, 100);
+ vkvg_set_source_rgb(ctx, 0, 0, 1);
+ vkvg_paint(ctx);
+
+ vkvg_destroy(ctx);
+}
+TEST(clipped_transformed_eo) {
+ VkvgContext ctx = vkvg_create(test->surf);
+ vkvg_set_fill_rule(ctx, VKVG_FILL_RULE_EVEN_ODD);
+ vkvg_set_source_rgb(ctx, 1, 0, 0);
+ vkvg_paint(ctx);
+ vkvg_rotate(ctx, 0.2f);
+ vkvg_set_source_rgb(ctx, 0, 1, 0);
+ vkvg_rectangle(ctx, 100, 100, 300, 200);
+ vkvg_clip(ctx);
+ vkvg_paint(ctx);
+
+ vkvg_destroy(ctx);
+}
+TEST(test_clip) {
+ VkvgContext ctx = vkvg_create(test->surf);
+ vkvg_clear(ctx);
+ vkvg_set_fill_rule(ctx, VKVG_FILL_RULE_EVEN_ODD);
+ vkvg_move_to(ctx, 10, 10);
+ vkvg_line_to(ctx, 400, 150);
+ vkvg_line_to(ctx, 900, 10);
+ vkvg_line_to(ctx, 700, 450);
+ vkvg_line_to(ctx, 900, 750);
+ vkvg_line_to(ctx, 500, 650);
+ vkvg_line_to(ctx, 100, 800);
+ vkvg_line_to(ctx, 150, 400);
+ vkvg_clip_preserve(ctx);
+ vkvg_set_operator(ctx, VKVG_OPERATOR_CLEAR);
+ vkvg_fill_preserve(ctx);
+ vkvg_clip(ctx);
+ vkvg_set_operator(ctx, VKVG_OPERATOR_OVER);
+
+ vkvg_set_source_rgb(ctx, 1, 0, 0);
+ // vkvg_set_line_width(ctx,10);
+ // vkvg_stroke(ctx);
+ vkvg_paint(ctx);
+
+ vkvg_destroy(ctx);
+}
+TEST(test_clip2) {
+ VkvgContext ctx = vkvg_create(test->surf);
+ vkvg_clear(ctx);
+ vkvg_set_fill_rule(ctx, VKVG_FILL_RULE_NON_ZERO);
+ vkvg_rectangle(ctx, 50, 50, 500, 500);
+ vkvg_clip(ctx);
+
+ vkvg_set_source_rgb(ctx, 1, 0, 0);
+ vkvg_paint(ctx);
+
+ vkvg_save(ctx);
+ vkvg_rectangle(ctx, 100, 100, 350, 350);
+ vkvg_clip(ctx);
+ vkvg_save(ctx);
+
+ vkvg_set_source_rgb(ctx, 1, 1, 0);
+ vkvg_paint(ctx);
+
+ vkvg_rectangle(ctx, 200, 200, 200, 200);
+ vkvg_clip(ctx);
+
+ vkvg_set_source_rgb(ctx, 0, 1, 0);
+ vkvg_paint(ctx);
+
+ vkvg_restore(ctx);
+
+ vkvg_rectangle(ctx, 350, 350, 420, 420);
+ vkvg_set_source_rgb(ctx, 0, 0, 1);
+ vkvg_fill(ctx);
+
+ vkvg_restore(ctx);
+
+ // vkvg_clip(ctx);
+ //
+ /*vkvg_clip_preserve(ctx);
+ vkvg_set_operator(ctx, VKVG_OPERATOR_CLEAR);
+ vkvg_fill_preserve(ctx);*/
+ // vkvg_clip(ctx);
+ // vkvg_set_operator(ctx, VKVG_OPERATOR_OVER);
+ /*vkvg_rectangle(ctx, 200,200,220,220);
+ vkvg_set_source_rgb(ctx,1,0,0);
+ vkvg_paint(ctx);*/
+
+ vkvg_destroy(ctx);
+}