From b1618fe92a514fe57c062c678b8f769d9db72935 Mon Sep 17 00:00:00 2001 From: Mira Grudzinska Date: Tue, 2 Jul 2024 16:30:45 +0200 Subject: [PATCH] sw_engine: fix aa For shapes with a stroke that has opacity, anti-aliasing should be applied to a fill. The use of a transparent gradient stroke will also be handled correctly. --- src/renderer/sw_engine/tvgSwRenderer.cpp | 2 +- src/renderer/tvgShape.h | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/renderer/sw_engine/tvgSwRenderer.cpp b/src/renderer/sw_engine/tvgSwRenderer.cpp index 0a3f5ef7..3181cf34 100644 --- a/src/renderer/sw_engine/tvgSwRenderer.cpp +++ b/src/renderer/sw_engine/tvgSwRenderer.cpp @@ -86,7 +86,7 @@ struct SwShapeTask : SwTask Additionally, the stroke style should not be dashed. */ bool antialiasing(float strokeWidth) { - return strokeWidth < 2.0f || rshape->stroke->dashCnt > 0 || rshape->stroke->strokeFirst || rshape->strokeTrim(); + return strokeWidth < 2.0f || rshape->stroke->dashCnt > 0 || rshape->stroke->strokeFirst || rshape->strokeTrim() || rshape->stroke->color[3] < 255;; } float validStrokeWidth() diff --git a/src/renderer/tvgShape.h b/src/renderer/tvgShape.h index c45995a6..ecc58b6c 100644 --- a/src/renderer/tvgShape.h +++ b/src/renderer/tvgShape.h @@ -296,6 +296,7 @@ struct Shape::Impl if (!rs.stroke) rs.stroke = new RenderStroke(); if (rs.stroke->fill && rs.stroke->fill != p) delete(rs.stroke->fill); rs.stroke->fill = p; + rs.stroke->color[3] = 0; flag |= RenderUpdateFlag::Stroke; flag |= RenderUpdateFlag::GradientStroke;