From 7ec969be29ff5b3ce63608a8a7185a9519c7e711 Mon Sep 17 00:00:00 2001 From: Hermet Park Date: Wed, 20 Sep 2023 18:29:19 +0900 Subject: [PATCH] lottie/builder: Fix incorrect stroke width scaling propagation. The transform (scale) should be applied to the following drawing elements, not the previous stroke. --- src/loaders/lottie/tvgLottieBuilder.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/loaders/lottie/tvgLottieBuilder.cpp b/src/loaders/lottie/tvgLottieBuilder.cpp index b85efccd..af1637ae 100644 --- a/src/loaders/lottie/tvgLottieBuilder.cpp +++ b/src/loaders/lottie/tvgLottieBuilder.cpp @@ -170,6 +170,11 @@ static void _updateTransform(LottieTransform* transform, int32_t frameNo, Render auto pmatrix = PP(ctx.propagator)->transform(); ctx.propagator->transform(pmatrix ? mathMultiply(pmatrix, &matrix) : matrix); ctx.propagator->opacity(MULTIPLY(opacity, PP(ctx.propagator)->opacity)); + + //FIXME: preserve the stroke width. too workaround, need a better design. + if (P(ctx.propagator)->rs.strokeWidth() > 0.0f) { + ctx.propagator->stroke(P(ctx.propagator)->rs.strokeWidth() / sqrt(matrix.e11 * matrix.e11 + matrix.e12 * matrix.e12)); + } }