From 2901d30cbdcf361f3c4838e472c7f6180d7c3f44 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 33dab786..0fa00aa3 100644 --- a/src/loaders/lottie/tvgLottieModifier.cpp +++ b/src/loaders/lottie/tvgLottieModifier.cpp @@ -115,9 +115,12 @@ void LottieOffsetModifier::corner(const Line& line, const Line& nextLine, uint32 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)) { + outCmds.push(PathCommand::LineTo); + outPts.push(intersect); + } outCmds.push(PathCommand::LineTo); - if (1.0f <= miterLimit * fabsf(miterDirection.x * norm.x + miterDirection.y * norm.y)) outPts.push(intersect); - else outPts.push(nextLine.pt1); + outPts.push(nextLine.pt1); } else { outCmds.push(PathCommand::LineTo); outPts.push(nextLine.pt1);