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).
This commit is contained in:
Mira Grudzinska 2025-06-12 23:09:07 +02:00
parent fef0be9f72
commit 2901d30cbd

View file

@ -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);