diff options
Diffstat (limited to 'samples/tests/line_join.cpp')
| -rw-r--r-- | samples/tests/line_join.cpp | 173 |
1 files changed, 173 insertions, 0 deletions
diff --git a/samples/tests/line_join.cpp b/samples/tests/line_join.cpp new file mode 100644 index 0000000..d6c400a --- /dev/null +++ b/samples/tests/line_join.cpp @@ -0,0 +1,173 @@ +#include "VkvgTest.hpp" + +TEST(line_join0) { + VkvgContext ctx = vkvg_create(test->surf); + + float x = 250, y = 150; + + // vkvg_scale(ctx,2,2); + + vkvg_set_line_width(ctx, 100); + vkvg_set_source_rgba(ctx, 0, 1, 0, 1); + + vkvg_set_line_join(ctx, VKVG_LINE_JOIN_ROUND); + // vkvg_rectangle(ctx,x,y,dx,dy); + + vkvg_move_to(ctx, x, y); + vkvg_rel_line_to(ctx, -50, 30); + vkvg_rel_line_to(ctx, 0, 60); + vkvg_rel_line_to(ctx, 50, 30); + /* + vkvg_rel_line_to(ctx,50,-30); + vkvg_rel_line_to(ctx,50,0); + vkvg_rel_line_to(ctx,50,30); + vkvg_rel_line_to(ctx,0,60); + vkvg_rel_line_to(ctx,-50,70); + vkvg_rel_line_to(ctx,-50,0); + vkvg_rel_line_to(ctx,-50,-70); + vkvg_close_path(ctx); + vkvg_stroke(ctx); + + vkvg_set_source_rgba(ctx,1,0,0,1); + vkvg_move_to(ctx,x+200,y); + vkvg_rel_line_to(ctx,50,70); + vkvg_rel_line_to(ctx,50,0); + vkvg_rel_line_to(ctx,50,-70); + vkvg_rel_line_to(ctx,0,-60); + vkvg_rel_line_to(ctx,-50,-30); + vkvg_rel_line_to(ctx,-50,0); + vkvg_rel_line_to(ctx,-50,30);*/ + vkvg_close_path(ctx); + vkvg_stroke(ctx); + + vkvg_set_source_rgba(ctx, 0, 0, 1, 1); + vkvg_move_to(ctx, x + 250, y); + vkvg_rel_line_to(ctx, 50, -30); + vkvg_rel_line_to(ctx, 50, 0); + vkvg_rel_line_to(ctx, 50, 30); + vkvg_rel_line_to(ctx, 0, 60); + vkvg_rel_line_to(ctx, -50, 70); + vkvg_rel_line_to(ctx, -50, 0); + vkvg_rel_line_to(ctx, -50, -70); + vkvg_close_path(ctx); + vkvg_stroke(ctx); + + // float dx = 150, dy = 140; + // vkvg_rel_line_to(ctx,dx,-dy); + // vkvg_rel_line_to(ctx,dx,dy); + // vkvg_stroke(ctx); + // vkvg_set_line_join(ctx,VKVG_LINE_JOIN_BEVEL); + // vkvg_rel_move_to(ctx,-dx*2,abs(dy*1.5)); + // vkvg_rel_line_to(ctx,dx,-dy); + // vkvg_rel_line_to(ctx,dx,dy); + // vkvg_stroke(ctx); + // vkvg_set_line_join(ctx,VKVG_LINE_JOIN_ROUND); + // vkvg_rel_move_to(ctx,-dx*2,abs(dy*1.5)); + // vkvg_rel_line_to(ctx,dx,-dy); + // vkvg_rel_line_to(ctx,dx,dy); + // vkvg_stroke(ctx); + // vkvg_set_line_join(ctx,VKVG_LINE_JOIN_MITER); + + vkvg_destroy(ctx); +} + +TEST(line_join1) { + VkvgContext ctx = vkvg_create(test->surf); + + vkvg_set_fill_rule(ctx, VKVG_FILL_RULE_EVEN_ODD); + vkvg_set_line_width(ctx, 30); + + vkvg_set_line_join(ctx, VKVG_LINE_JOIN_ROUND); + + // vkvg_arc (ctx, 200, 500, 100, 0, M_PI); + + vkvg_translate(ctx, -50, -50); + + vkvg_set_source_rgb(ctx, 0.5, 0, 0); + + for (int j = 0; j < 2; j++) { + int i = 0; + vkvg_move_to(ctx, 100, 100); + for (i = 0; i < 5; i++) { + vkvg_rel_line_to(ctx, 70, 50); + vkvg_rel_line_to(ctx, -70, 50); + } + vkvg_stroke(ctx); + + vkvg_move_to(ctx, 200, 600); + for (i = 0; i < 5; i++) { + vkvg_rel_line_to(ctx, 70, -50); + vkvg_rel_line_to(ctx, -70, -50); + } + vkvg_stroke(ctx); + + vkvg_move_to(ctx, 400, 100); + for (i = 0; i < 5; i++) { + vkvg_rel_line_to(ctx, -70, 50); + vkvg_rel_line_to(ctx, 70, 50); + } + vkvg_stroke(ctx); + + vkvg_move_to(ctx, 500, 600); + for (i = 0; i < 5; i++) { + vkvg_rel_line_to(ctx, -70, -50); + vkvg_rel_line_to(ctx, 70, -50); + } + vkvg_stroke(ctx); + vkvg_set_line_join(ctx, VKVG_LINE_JOIN_BEVEL); + vkvg_translate(ctx, 500, 0); + } + + vkvg_destroy(ctx); +} + +TEST(line_join2) { + VkvgContext ctx = vkvg_create(test->surf); + + vkvg_set_fill_rule(ctx, VKVG_FILL_RULE_EVEN_ODD); + vkvg_set_line_width(ctx, 30); + + vkvg_set_line_join(ctx, VKVG_LINE_JOIN_ROUND); + + // vkvg_arc (ctx, 200, 500, 100, 0, M_PI); + + vkvg_translate(ctx, -50, -50); + + vkvg_set_source_rgb(ctx, 0.5, 0, 0); + + for (int j = 0; j < 2; j++) { + int i = 0; + vkvg_move_to(ctx, 100, 100); + for (i = 0; i < 4; i++) { + vkvg_rel_line_to(ctx, 50, 70); + vkvg_rel_line_to(ctx, 50, -70); + } + vkvg_stroke(ctx); + + vkvg_move_to(ctx, 500, 200); + for (i = 0; i < 4; i++) { + vkvg_rel_line_to(ctx, -50, 70); + vkvg_rel_line_to(ctx, -50, -70); + } + vkvg_stroke(ctx); + + vkvg_move_to(ctx, 100, 400); + for (i = 0; i < 4; i++) { + vkvg_rel_line_to(ctx, 50, -70); + vkvg_rel_line_to(ctx, 50, 70); + } + vkvg_stroke(ctx); + + vkvg_move_to(ctx, 500, 500); + for (i = 0; i < 4; i++) { + vkvg_rel_line_to(ctx, -50, -70); + vkvg_rel_line_to(ctx, -50, 70); + } + vkvg_stroke(ctx); + vkvg_set_line_join(ctx, VKVG_LINE_JOIN_BEVEL); + vkvg_translate(ctx, 450, 0); + } + + vkvg_destroy(ctx); +} + |