#include "drawTestBase.h" class BasicDrawTest : public DrawTestBase { protected: void SetUp() override { surf = vkvg_surface_create(dev, 256, 256); } }; TEST_F(BasicDrawTest, CtxSolidPaintRGB) { VkvgContext ctx = vkvg_create(surf); vkvg_set_source_rgb(ctx,1,0,0); vkvg_paint(ctx); vkvg_destroy(ctx); compareWithRefImage(); } TEST_F(BasicDrawTest, CtxSolidPaintRGBA) { VkvgContext ctx = vkvg_create(surf); vkvg_set_source_rgba(ctx,1,0,0,1); vkvg_paint(ctx); vkvg_destroy(ctx); compareWithRefImage(); } TEST_F(BasicDrawTest, CtxSolidPaintWithActiveTransform) { VkvgContext ctx = vkvg_create(surf); vkvg_translate(ctx,100,100); vkvg_rotate(ctx, 2.f); vkvg_set_source_rgba(ctx,1,0,0,1); vkvg_paint(ctx); vkvg_destroy(ctx); compareWithRefImage(); } TEST_F(BasicDrawTest, CtxSolidPaintOver) { VkvgContext ctx = vkvg_create(surf); vkvg_set_source_rgba(ctx,1,0,0,0.5); vkvg_paint(ctx); vkvg_set_source_rgba(ctx,0,0,1,0.5); vkvg_paint(ctx); vkvg_destroy(ctx); compareWithRefImage(); } TEST_F(BasicDrawTest, CtxSolidPaintRectangle) { VkvgContext ctx = vkvg_create(surf); vkvg_set_source_rgb(ctx,1,0,0); vkvg_rectangle(ctx,50,50,200,150); vkvg_paint(ctx); vkvg_destroy(ctx); compareWithRefImage(); } TEST_F(BasicDrawTest, CtxSolidPaintRectanglesOver) { VkvgContext ctx = vkvg_create(surf); vkvg_set_source_rgba(ctx,1,0,0,0.5f); vkvg_rectangle(ctx,50,50,100,100); vkvg_paint(ctx); vkvg_set_source_rgba(ctx,0,0,1,0.5f); vkvg_rectangle(ctx,100,100,100,100); vkvg_paint(ctx); vkvg_destroy(ctx); compareWithRefImage(); } TEST_F(BasicDrawTest, CtxSolidFillOver) { VkvgContext ctx = vkvg_create(surf); vkvg_set_source_rgba(ctx,1,0,0,0.5); vkvg_rectangle(ctx,50,50,100,100); vkvg_fill(ctx); vkvg_set_source_rgba(ctx,0,0,1,0.5); vkvg_rectangle(ctx,100,100,100,100); vkvg_fill(ctx); vkvg_destroy(ctx); compareWithRefImage(); } TEST_F(BasicDrawTest, CtxSolidPaintRectangleOver) { VkvgContext ctx = vkvg_create(surf); vkvg_set_source_rgba(ctx,1,0,0,0.5f); vkvg_paint(ctx); vkvg_set_source_rgba(ctx,0,0,1,0.5f); vkvg_rectangle(ctx,100,100,100,100); vkvg_paint(ctx); vkvg_destroy(ctx); compareWithRefImage(); } TEST_F(BasicDrawTest, CtxSolidPaintRectangleOverClipped) { VkvgContext ctx = vkvg_create(surf); vkvg_rectangle(ctx,90,90,70,70); vkvg_clip(ctx); vkvg_set_source_rgba(ctx,1,0,0,0.5); vkvg_rectangle(ctx,50,50,100,100); vkvg_fill(ctx); vkvg_set_source_rgba(ctx,0,0,1,0.5); vkvg_rectangle(ctx,100,100,100,100); vkvg_fill(ctx); vkvg_destroy(ctx); compareWithRefImage(); } TEST_F(BasicDrawTest, CtxSolidPaintClipped) { VkvgContext ctx = vkvg_create(surf); vkvg_rectangle(ctx,50,50,200,150); vkvg_clip(ctx); vkvg_set_source_rgba(ctx,1,0,0,0.5f); vkvg_paint(ctx); vkvg_destroy(ctx); compareWithRefImage(); } TEST_F(BasicDrawTest, CtxSolidPaintClippedOver) { VkvgContext ctx = vkvg_create(surf); vkvg_set_source_rgba(ctx,1,0,0,0.5f); vkvg_paint(ctx); vkvg_rectangle(ctx,50,50,200,150); vkvg_clip(ctx); vkvg_set_source_rgba(ctx,0,0,1,0.5f); vkvg_paint(ctx); vkvg_destroy(ctx); compareWithRefImage(); } void drawLineJoin(VkvgContext ctx) { vkvg_move_to(ctx, 20, 70); vkvg_line_to(ctx, 50, 20); vkvg_line_to(ctx, 80, 70); vkvg_stroke(ctx); } TEST_F(BasicDrawTest, CtxStrokeJoins) { VkvgContext ctx = vkvg_create(surf); vkvg_set_source_rgba(ctx,0,0,0,1); vkvg_set_line_width(ctx, 20); vkvg_set_line_join(ctx, VKVG_LINE_JOIN_BEVEL); drawLineJoin(ctx); vkvg_translate(ctx, 0, 80); vkvg_set_line_join(ctx, VKVG_LINE_JOIN_MITER); drawLineJoin(ctx); vkvg_translate(ctx, 0, 80 ); vkvg_set_line_join(ctx, VKVG_LINE_JOIN_ROUND); drawLineJoin(ctx); vkvg_destroy(ctx); compareWithRefImage(); } void drawLineCap(VkvgContext ctx) { vkvg_set_source_rgba(ctx,0,0,0,1); vkvg_set_line_width(ctx, 20); vkvg_move_to(ctx, 50, 50); vkvg_line_to(ctx, 200, 50); vkvg_stroke(ctx); vkvg_set_line_cap(ctx, VKVG_LINE_CAP_BUTT); vkvg_set_source_rgba(ctx,1,0,0,1); vkvg_set_line_width(ctx, 2); vkvg_move_to(ctx, 50, 50); vkvg_line_to(ctx, 200, 50); vkvg_stroke(ctx); } TEST_F(BasicDrawTest, CtxStrokeCaps) { VkvgContext ctx = vkvg_create(surf); vkvg_set_line_cap(ctx, VKVG_LINE_CAP_BUTT); drawLineCap(ctx); vkvg_translate(ctx, 0, 50); vkvg_set_line_cap(ctx, VKVG_LINE_CAP_ROUND); drawLineCap(ctx); vkvg_translate(ctx, 0, 50 ); vkvg_set_line_cap(ctx, VKVG_LINE_CAP_SQUARE); drawLineCap(ctx); vkvg_destroy(ctx); compareWithRefImage(); }