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,9 +572,12 @@ class Path extends ListBase<SvgPath> {
parts.add("M ${coord(segment.start)}");
}
if (segment is Line) {
switch (segment) {
case Line _:
parts.add("L ${coord(segment.end)}");
} else if (segment is CubicBezier) {
break;
case CubicBezier _:
if (segment.isSmoothFrom(previousSegment)) {
parts.add("S ${coord(segment.control2)} ${coord(segment.end)}");
} else {
@@ -582,17 +585,22 @@ class Path extends ListBase<SvgPath> {
"C ${coord(segment.control1)} ${coord(segment.control2)} ${coord(segment.end)}",
);
}
} else if (segment is QuadraticBezier) {
break;
case 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) {
break;
case Arc _:
parts.add(
"A ${coord(segment.radius)} ${formatNumber(segment.rotation)} "
"${segment.arc ? 1 : 0},${segment.sweep ? 1 : 0} ${coord(segment.end)}",
);
break;
}
currentPos = segment.end;