lib/svg/path: swap out large if-else for switch
Some checks failed
Test / test (push) Failing after 2m30s

This commit is contained in:
2025-08-04 23:05:58 +02:00
parent 417db6ab0c
commit 039c7e2693

View File

@@ -572,27 +572,35 @@ class Path extends ListBase<SvgPath> {
parts.add("M ${coord(segment.start)}"); parts.add("M ${coord(segment.start)}");
} }
if (segment is Line) { switch (segment) {
parts.add("L ${coord(segment.end)}"); case Line _:
} else if (segment is CubicBezier) { parts.add("L ${coord(segment.end)}");
if (segment.isSmoothFrom(previousSegment)) { break;
parts.add("S ${coord(segment.control2)} ${coord(segment.end)}");
} else { case CubicBezier _:
if (segment.isSmoothFrom(previousSegment)) {
parts.add("S ${coord(segment.control2)} ${coord(segment.end)}");
} else {
parts.add(
"C ${coord(segment.control1)} ${coord(segment.control2)} ${coord(segment.end)}",
);
}
break;
case QuadraticBezier _:
if (segment.isSmoothFrom(previousSegment)) {
parts.add("T ${coord(segment.end)}");
} else {
parts.add("Q ${coord(segment.control)} ${coord(segment.end)}");
}
break;
case Arc _:
parts.add( parts.add(
"C ${coord(segment.control1)} ${coord(segment.control2)} ${coord(segment.end)}", "A ${coord(segment.radius)} ${formatNumber(segment.rotation)} "
"${segment.arc ? 1 : 0},${segment.sweep ? 1 : 0} ${coord(segment.end)}",
); );
} break;
} else if (segment is QuadraticBezier) {
if (segment.isSmoothFrom(previousSegment)) {
parts.add("T ${coord(segment.end)}");
} else {
parts.add("Q ${coord(segment.control)} ${coord(segment.end)}");
}
} else if (segment is Arc) {
parts.add(
"A ${coord(segment.radius)} ${formatNumber(segment.rotation)} "
"${segment.arc ? 1 : 0},${segment.sweep ? 1 : 0} ${coord(segment.end)}",
);
} }
currentPos = segment.end; currentPos = segment.end;