diff options
| author | Jean-Philippe Bruyère <jp_bruyere@hotmail.com> | 2025-06-22 12:06:15 +0200 |
|---|---|---|
| committer | Jean-Philippe Bruyère <jp_bruyere@hotmail.com> | 2026-09-04 11:03:52 +0200 |
| commit | db328d2a861f5aedec900e44fbe1fd542b307afb (patch) | |
| tree | 2997dcaad33d99b9cd79b6681ca0c679f2c34a1b /samples/tests/fill.cpp | |
| parent | 0199cfcb86b384e888ddf01642b63f4a32e15894 (diff) | |
unified samples app in c++, unit testing wip
Diffstat (limited to 'samples/tests/fill.cpp')
| -rw-r--r-- | samples/tests/fill.cpp | 119 |
1 files changed, 119 insertions, 0 deletions
diff --git a/samples/tests/fill.cpp b/samples/tests/fill.cpp new file mode 100644 index 0000000..6e46275 --- /dev/null +++ b/samples/tests/fill.cpp @@ -0,0 +1,119 @@ +#include "VkvgTest.hpp" + +void draw(VkvgContext ctx) { + vkvg_set_source_rgba(ctx, 0, 0, 1, 0.5); + vkvg_rectangle(ctx, 100, 100, 200, 200); + vkvg_fill(ctx); + + vkvg_rectangle(ctx, 200, 200, 200, 200); + vkvg_set_source_rgba(ctx, 1, 0, 0, 0.5); + vkvg_fill(ctx); +} +TEST(rect_fill_nz) { + VkvgContext ctx = vkvg_create(test->surf); + vkvg_clear(ctx); + + vkvg_set_fill_rule(ctx, VKVG_FILL_RULE_NON_ZERO); + + draw(ctx); + + vkvg_destroy(ctx); +} +TEST(rect_fill_eo) { + VkvgContext ctx = vkvg_create(test->surf); + vkvg_clear(ctx); + + vkvg_set_fill_rule(ctx, VKVG_FILL_RULE_EVEN_ODD); + + draw(ctx); + + vkvg_destroy(ctx); +} + +TEST(fill_nz) { + VkvgContext ctx = vkvg_create(test->surf); + vkvg_clear(ctx); + vkvg_set_fill_rule(ctx, VKVG_FILL_RULE_NON_ZERO); + + vkvg_set_source_rgba(ctx, 0.1f, 0.9f, 0.1f, 1.0f); + vkvg_move_to(ctx, 100, 100); + vkvg_rel_line_to(ctx, 50, 200); + vkvg_rel_line_to(ctx, 150, -100); + vkvg_rel_line_to(ctx, 100, 200); + vkvg_rel_line_to(ctx, -100, 100); + vkvg_rel_line_to(ctx, -10, -100); + vkvg_rel_line_to(ctx, -190, -50); + vkvg_close_path(ctx); + + vkvg_fill(ctx); + + vkvg_destroy(ctx); +} +TEST(fill_eo) { + VkvgContext ctx = vkvg_create(test->surf); + vkvg_clear(ctx); + vkvg_set_fill_rule(ctx, VKVG_FILL_RULE_EVEN_ODD); + + vkvg_set_source_rgba(ctx, 0.1f, 0.9f, 0.1f, 1.0f); + vkvg_move_to(ctx, 100, 100); + vkvg_rel_line_to(ctx, 50, 200); + vkvg_rel_line_to(ctx, 150, -100); + vkvg_rel_line_to(ctx, 100, 200); + vkvg_rel_line_to(ctx, -100, 100); + vkvg_rel_line_to(ctx, -10, -100); + vkvg_rel_line_to(ctx, -190, -50); + vkvg_close_path(ctx); + + vkvg_fill(ctx); + + vkvg_destroy(ctx); +} + +TEST(fill_with_hole_nz) { + VkvgContext ctx = vkvg_create(test->surf); + vkvg_clear(ctx); + + vkvg_set_line_width(ctx, 30); + vkvg_set_fill_rule(ctx, VKVG_FILL_RULE_NON_ZERO); + + vkvg_set_source_rgba(ctx, 0.1f, 0.9f, 0.1f, 1.0f); + vkvg_move_to(ctx, 100, 100); + vkvg_rel_line_to(ctx, 200, 0); + vkvg_rel_line_to(ctx, 0, 150); + vkvg_rel_line_to(ctx, -200, 0); + vkvg_close_path(ctx); + + vkvg_move_to(ctx, 150, 150); + vkvg_rel_line_to(ctx, 0, 50); + vkvg_rel_line_to(ctx, 100, 0); + vkvg_rel_line_to(ctx, 0, -50); + vkvg_close_path(ctx); + + vkvg_fill(ctx); + + vkvg_destroy(ctx); +} +TEST(fill_with_hole_eo) { + VkvgContext ctx = vkvg_create(test->surf); + vkvg_clear(ctx); + + vkvg_set_line_width(ctx, 30); + vkvg_set_fill_rule(ctx, VKVG_FILL_RULE_EVEN_ODD); + + vkvg_set_source_rgba(ctx, 0.1f, 0.9f, 0.1f, 1.0f); + vkvg_move_to(ctx, 100, 100); + vkvg_rel_line_to(ctx, 200, 0); + vkvg_rel_line_to(ctx, 0, 150); + vkvg_rel_line_to(ctx, -200, 0); + vkvg_close_path(ctx); + + vkvg_move_to(ctx, 150, 150); + vkvg_rel_line_to(ctx, 0, 50); + vkvg_rel_line_to(ctx, 100, 0); + vkvg_rel_line_to(ctx, 0, -50); + vkvg_close_path(ctx); + + vkvg_fill(ctx); + + vkvg_destroy(ctx); +} |