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/paint_surf.cpp | |
| parent | 0199cfcb86b384e888ddf01642b63f4a32e15894 (diff) | |
unified samples app in c++, unit testing wip
Diffstat (limited to 'samples/tests/paint_surf.cpp')
| -rw-r--r-- | samples/tests/paint_surf.cpp | 103 |
1 files changed, 103 insertions, 0 deletions
diff --git a/samples/tests/paint_surf.cpp b/samples/tests/paint_surf.cpp new file mode 100644 index 0000000..5d42f66 --- /dev/null +++ b/samples/tests/paint_surf.cpp @@ -0,0 +1,103 @@ +#include "VkvgTest.hpp" + +float lineWidth = 10.f; + +VkvgSurface createSurf(VkvgDevice dev, uint32_t width, uint32_t height) { + VkvgSurface s = vkvg_surface_create(dev, width, height); + VkvgContext ctx = vkvg_create(s); + vkvg_set_line_width(ctx, lineWidth); + float hlw = lineWidth / 2.f; + /* + vkvg_set_source_rgba(ctx,0,1,0,0.5); + vkvg_fill_preserve(ctx);*/ + vkvg_set_source_rgba(ctx, 1, 0, 0, 0.5); + vkvg_paint(ctx); + vkvg_set_source_rgba(ctx, 0, 0, 1, 0.5); + vkvg_rectangle(ctx, hlw, hlw, (float)width - lineWidth, (float)height - lineWidth); + vkvg_stroke(ctx); + vkvg_destroy(ctx); + return s; +} + +TEST(paint_surf) { + VkvgContext ctx = vkvg_create(test->surf); + vkvg_clear(ctx); + VkvgSurface src = createSurf(test->device, 256, 256); + vkvg_set_source_surface(ctx, src, 0, 0); + vkvg_paint(ctx); + vkvg_destroy(ctx); + vkvg_surface_destroy(src); +} + +TEST(paint_surf_with_offset) { + VkvgContext ctx = vkvg_create(test->surf); + vkvg_clear(ctx); + VkvgSurface src = createSurf(test->device, 256, 256); + vkvg_set_source_rgba(ctx, 0, 1, 0, 0.5); + vkvg_paint(ctx); + vkvg_set_source_surface(ctx, src, 100, 100); + vkvg_paint(ctx); + vkvg_destroy(ctx); + vkvg_surface_destroy(src); +} +TEST(paint_surf_multiple) { + VkvgContext ctx = vkvg_create(test->surf); + vkvg_clear(ctx); + + VkvgSurface src = createSurf(test->device, 256, 256); + for (int i = 0; i < 10; i++) { + vkvg_set_source_surface(ctx, src, i * 20, i * 20); + vkvg_paint(ctx); + } + vkvg_destroy(ctx); + vkvg_surface_destroy(src); +} +TEST(paint_surf_with_rotation) { + VkvgContext ctx = vkvg_create(test->surf); + vkvg_clear(ctx); + VkvgSurface src = createSurf(test->device, 256, 256); + vkvg_set_source_surface(ctx, src, 0, 0); + vkvg_rotate(ctx, 45); + vkvg_paint(ctx); + vkvg_destroy(ctx); + vkvg_surface_destroy(src); +} +TEST(paint_surf_with_scale) { + VkvgContext ctx = vkvg_create(test->surf); + vkvg_clear(ctx); + VkvgSurface src = createSurf(test->device, 256, 256); + vkvg_set_source_surface(ctx, src, 0, 0); + vkvg_scale(ctx, 0.2f, 0.2f); + vkvg_paint(ctx); + vkvg_destroy(ctx); + vkvg_surface_destroy(src); +} +TEST(paint_rect) { + VkvgContext ctx = vkvg_create(test->surf); + vkvg_clear(ctx); + VkvgSurface src = createSurf(test->device, 256, 256); + vkvg_set_source_surface(ctx, src, 0, 0); + vkvg_rectangle(ctx, 100, 100, 300, 200); + vkvg_paint(ctx); + vkvg_destroy(ctx); + vkvg_surface_destroy(src); +} +// TODO:test failed: full screen paint instead of rotated rect +TEST(paint_rect_with_rotation) { + VkvgContext ctx = vkvg_create(test->surf); + vkvg_clear(ctx); + vkvg_rotate(ctx, 45); + vkvg_set_source_rgba(ctx, 1, 0, 0, 1); + vkvg_rectangle(ctx, 100, 100, 300, 200); + vkvg_paint(ctx); + vkvg_destroy(ctx); +} +TEST(paint_rect_with_scale) { + VkvgContext ctx = vkvg_create(test->surf); + vkvg_clear(ctx); + vkvg_scale(ctx, 0.2f, 0.2f); + vkvg_set_source_rgba(ctx, 1, 0, 0, 1); + vkvg_rectangle(ctx, 100, 100, 300, 200); + vkvg_paint(ctx); + vkvg_destroy(ctx); +} |