Skip to content

Commit

Permalink
Smooth Curves (#13)
Browse files Browse the repository at this point in the history
  • Loading branch information
richardpiazza committed Jun 20, 2023
1 parent 625c28c commit 7238a60
Showing 1 changed file with 12 additions and 4 deletions.
16 changes: 12 additions & 4 deletions Sources/SwiftSVG/Path.ComponentParser.swift
Original file line number Diff line number Diff line change
Expand Up @@ -79,11 +79,19 @@ public extension Path {
command = .cubicBezierCurve(cp1: currentPoint, cp2: currentPoint, point: currentPoint)
coordinates = .relative
case .smoothCubicBezierCurve:
command = .cubicBezierCurve(cp1: currentPoint, cp2: .nan, point: .nan)
if case .cubicBezierCurve(_, let cp, _) = lastCommand {
command = .cubicBezierCurve(cp1: cp.reflection(using: currentPoint), cp2: .nan, point: .nan)
} else {
command = .cubicBezierCurve(cp1: currentPoint, cp2: .nan, point: .nan)
}
coordinates = .absolute
position = 2
case .relativeSmoothCubicBezierCurve:
command = .cubicBezierCurve(cp1: currentPoint, cp2: currentPoint, point: currentPoint)
if case .cubicBezierCurve(_, let cp, _) = lastCommand {
command = .cubicBezierCurve(cp1: cp.reflection(using: cp.reflection(using: currentPoint)), cp2: currentPoint, point: currentPoint)
} else {
command = .cubicBezierCurve(cp1: currentPoint, cp2: currentPoint, point: currentPoint)
}
coordinates = .relative
position = 2
case .quadraticBezierCurve:
Expand All @@ -102,9 +110,9 @@ public extension Path {
position = 2
case .relativeSmoothQuadraticBezierCurve:
if case .quadraticBezierCurve(let cp, _) = lastCommand {
command = .quadraticBezierCurve(cp: cp.reflection(using: currentPoint), point: .nan)
command = .quadraticBezierCurve(cp: cp.reflection(using: currentPoint), point: currentPoint)
} else {
command = .quadraticBezierCurve(cp: currentPoint, point: .nan)
command = .quadraticBezierCurve(cp: currentPoint, point: currentPoint)
}
coordinates = .relative
position = 2
Expand Down

0 comments on commit 7238a60

Please sign in to comment.