From 27e78095ff61041cb82a518d4c8ae374b2ec9a0b Mon Sep 17 00:00:00 2001 From: Mira Grudzinska Date: Thu, 12 Jun 2025 23:09:07 +0200 Subject: [PATCH] lottie: fix offset with miter join One point was skipped during the creation of the offset corner. The error was not visible because the point lies on the line, but it will become apparent if further modifiers are applied to the object (not supported now). --- src/loaders/lottie/tvgLottieModifier.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/loaders/lottie/tvgLottieModifier.cpp b/src/loaders/lottie/tvgLottieModifier.cpp index ecbfa67a..ed14d062 100644 --- a/src/loaders/lottie/tvgLottieModifier.cpp +++ b/src/loaders/lottie/tvgLottieModifier.cpp @@ -121,9 +121,12 @@ void LottieOffsetModifier::corner(RenderPath& out, Line& line, Line& nextLine, u auto norm = normal(line.pt1, line.pt2); auto nextNorm = normal(nextLine.pt1, nextLine.pt2); auto miterDirection = (norm + nextNorm) / length(norm + nextNorm); + if (1.0f <= miterLimit * fabsf(miterDirection.x * norm.x + miterDirection.y * norm.y)) { + out.cmds.push(PathCommand::LineTo); + out.pts.push(intersect); + } out.cmds.push(PathCommand::LineTo); - if (1.0f <= miterLimit * fabsf(miterDirection.x * norm.x + miterDirection.y * norm.y)) out.pts.push(intersect); - else out.pts.push(nextLine.pt1); + out.pts.push(nextLine.pt1); } else { out.cmds.push(PathCommand::LineTo); out.pts.push(nextLine.pt1);