This commit is contained in:
Mira Grudzinska 2025-07-17 00:40:41 +09:00 committed by GitHub
commit 7f9bacd517
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -201,7 +201,13 @@ bool LottieRoundnessModifier::modifyPath(PathCommand* inCmds, uint32_t inCmdsCnt
_roundCorner(path.cmds, path.pts, prev, curr, inPts[iPts + 5], r);
iPts += 3;
break;
} else if (inCmds[iCmds + 1] == PathCommand::Close) {
}
if (inCmds[iCmds + 1] == PathCommand::LineTo) {
_roundCorner(path.cmds, path.pts, prev, curr, inPts[iPts + 3], r);
iPts += 3;
break;
}
if (inCmds[iCmds + 1] == PathCommand::Close) {
_roundCorner(path.cmds, path.pts, prev, curr, inPts[2], r);
path.pts[startIndex] = path.pts.last();
iPts += 3;
@ -214,6 +220,31 @@ bool LottieRoundnessModifier::modifyPath(PathCommand* inCmds, uint32_t inCmdsCnt
path.pts.push(inPts[iPts++]);
break;
}
case PathCommand::LineTo: {
if (iCmds < inCmdsCnt - 1) {
auto& prev = inPts[iPts - 1];
auto& curr = inPts[iPts];
if (inCmds[iCmds + 1] == PathCommand::CubicTo && _colinear(inPts + iPts)) {
_roundCorner(path.cmds, path.pts, prev, curr, inPts[iPts + 3], r);
++iPts;
break;
}
if (inCmds[iCmds + 1] == PathCommand::LineTo) {
_roundCorner(path.cmds, path.pts, prev, curr, inPts[iPts + 1], r);
++iPts;
break;
}
if (inCmds[iCmds + 1] == PathCommand::Close) {
_roundCorner(path.cmds, path.pts, prev, curr, inPts[1], r);
path.pts[startIndex] = path.pts.last();
++iPts;
break;
}
}
path.cmds.push(PathCommand::LineTo);
path.pts.push(inPts[iPts++]);
break;
}
case PathCommand::Close: {
path.cmds.push(PathCommand::Close);
break;