From 039c7e2693eefc18bf4a1f4d0bf7e9d6acdbaf1d Mon Sep 17 00:00:00 2001 From: h7x4 Date: Mon, 4 Aug 2025 23:05:58 +0200 Subject: [PATCH] lib/svg/path: swap out large if-else for switch --- lib/svg/path.dart | 46 +++++++++++++++++++++++++++------------------- 1 file changed, 27 insertions(+), 19 deletions(-) diff --git a/lib/svg/path.dart b/lib/svg/path.dart index a037306..8aea693 100644 --- a/lib/svg/path.dart +++ b/lib/svg/path.dart @@ -572,27 +572,35 @@ class Path extends ListBase { parts.add("M ${coord(segment.start)}"); } - if (segment is Line) { - parts.add("L ${coord(segment.end)}"); - } else if (segment is CubicBezier) { - if (segment.isSmoothFrom(previousSegment)) { - parts.add("S ${coord(segment.control2)} ${coord(segment.end)}"); - } else { + switch (segment) { + case Line _: + parts.add("L ${coord(segment.end)}"); + break; + + 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( - "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)}", ); - } - } 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)}", - ); + break; } currentPos = segment.end;