From e94483510ec3ff63f4e941657109ee32844c038d Mon Sep 17 00:00:00 2001 From: Sebastian Kuzminsky Date: Fri, 5 May 2023 00:35:22 -0600 Subject: [PATCH] path.transform: Arc sweep is reversed by negative scale When transforming an Arc, negative scale reverses the sweep. --- svgpathtools/path.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/svgpathtools/path.py b/svgpathtools/path.py index 5903efe..b65d11b 100644 --- a/svgpathtools/path.py +++ b/svgpathtools/path.py @@ -338,9 +338,13 @@ def transform(curve, tf): if new_radius.real == 0 or new_radius.imag == 0 : return Line(new_start, new_end) - else : + else: + if tf[0][0] * tf[1][1] >= 0.0: + new_sweep = curve.sweep + else: + new_sweep = not curve.sweep return Arc(new_start, radius=new_radius, rotation=curve.rotation + rot, - large_arc=curve.large_arc, sweep=curve.sweep, end=new_end, + large_arc=curve.large_arc, sweep=new_sweep, end=new_end, autoscale_radius=True) else: