Created
November 1, 2024 11:25
-
-
Save Obbut/7be2e6538c9dabeaffdee9f714bcca39 to your computer and use it in GitHub Desktop.
Unbeatable Logo Shape
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import SwiftUI | |
struct ULogoShape: Shape { | |
func path(in rect: CGRect) -> Path { | |
var path = Path() | |
// Original SVG width and height for normalization | |
let originalWidth: CGFloat = 60 | |
let originalHeight: CGFloat = 70 | |
// Uniform scale factor based on the minimum of the width or height | |
let scale = min(rect.width / originalWidth, rect.height / originalHeight) | |
// Offset to center the shape in the frame | |
let offsetX = (rect.width - originalWidth * scale) / 2 | |
let offsetY = (rect.height - originalHeight * scale) / 2 | |
path.move(to: CGPoint(x: 17.7777799 * scale + offsetX, y: 17.5625016 * scale + offsetY)) | |
path.addLine(to: CGPoint(x: 17.7777799 * scale + offsetX, y: 51.0016934 * scale + offsetY)) | |
path.addLine(to: CGPoint(x: 18.6666683 * scale + offsetX, y: 51.8873248 * scale + offsetY)) | |
path.addLine(to: CGPoint(x: 41.3227332 * scale + offsetX, y: 51.8873248 * scale + offsetY)) | |
path.addCurve( | |
to: CGPoint(x: 42.2222239 * scale + offsetX, y: 50.7865817 * scale + offsetY), | |
control1: CGPoint(x: 41.8560484 * scale + offsetX, y: 51.8873248 * scale + offsetY), | |
control2: CGPoint(x: 42.2222239 * scale + offsetX, y: 51.3179439 * scale + offsetY) | |
) | |
path.addLine(to: CGPoint(x: 42.2222239 * scale + offsetX, y: 9.74353097 * scale + offsetY)) | |
path.addCurve( | |
to: CGPoint(x: 43.7396473 * scale + offsetX, y: 9.11729205 * scale + offsetY), | |
control1: CGPoint(x: 42.2222239 * scale + offsetX, y: 8.95451542 * scale + offsetY), | |
control2: CGPoint(x: 43.1796795 * scale + offsetX, y: 8.55937396 * scale + offsetY) | |
) | |
path.addLine(to: CGPoint(x: 59.218951 * scale + offsetX, y: 24.5399084 * scale + offsetY)) | |
path.addCurve( | |
to: CGPoint(x: 60 * scale + offsetX, y: 26.4186214 * scale + offsetY), | |
control1: CGPoint(x: 59.719048 * scale + offsetX, y: 25.0381743 * scale + offsetY), | |
control2: CGPoint(x: 60 * scale + offsetX, y: 25.7139672 * scale + offsetY) | |
) | |
path.addLine(to: CGPoint(x: 60 * scale + offsetX, y: 67.4616703 * scale + offsetY)) | |
path.addCurve( | |
to: CGPoint(x: 58.4825728 * scale + offsetX, y: 68.087913 * scale + offsetY), | |
control1: CGPoint(x: 60 * scale + offsetX, y: 68.2506849 * scale + offsetY), | |
control2: CGPoint(x: 59.0425416 * scale + offsetX, y: 68.6458263 * scale + offsetY) | |
) | |
path.addLine(to: CGPoint(x: 45.961875 * scale + offsetX, y: 55.6130661 * scale + offsetY)) | |
path.addCurve( | |
to: CGPoint(x: 44.444444 * scale + offsetX, y: 56.239305 * scale + offsetY), | |
control1: CGPoint(x: 45.4019063 * scale + offsetX, y: 55.0551479 * scale + offsetY), | |
control2: CGPoint(x: 44.444444 * scale + offsetX, y: 55.4502896 * scale + offsetY) | |
) | |
path.addLine(to: CGPoint(x: 44.444444 * scale + offsetX, y: 68.7143671 * scale + offsetY)) | |
path.addCurve( | |
to: CGPoint(x: 43.5555575 * scale + offsetX, y: 69.5999985 * scale + offsetY), | |
control1: CGPoint(x: 44.444444 * scale + offsetX, y: 69.2034906 * scale + offsetY), | |
control2: CGPoint(x: 44.0464769 * scale + offsetX, y: 69.5999985 * scale + offsetY) | |
) | |
path.addLine(to: CGPoint(x: 18.145969 * scale + offsetX, y: 69.5999985 * scale + offsetY)) | |
path.addCurve( | |
to: CGPoint(x: 17.5174302 * scale + offsetX, y: 69.3406022 * scale + offsetY), | |
control1: CGPoint(x: 18.145969 * scale + offsetX, y: 69.5999985 * scale + offsetY), | |
control2: CGPoint(x: 17.910221 * scale + offsetX, y: 69.5066907 * scale + offsetY) | |
) | |
path.addLine(to: CGPoint(x: 0.781049029 * scale + offsetX, y: 52.6655136 * scale + offsetY)) | |
path.addCurve( | |
to: CGPoint(x: 0 * scale + offsetX, y: 50.7868006 * scale + offsetY), | |
control1: CGPoint(x: 0.280951852 * scale + offsetX, y: 52.1672478 * scale + offsetY), | |
control2: CGPoint(x: 0 * scale + offsetX, y: 51.4914548 * scale + offsetY) | |
) | |
path.addLine(to: CGPoint(x: 0 * scale + offsetX, y: 0.887409884 * scale + offsetY)) | |
path.addCurve( | |
to: CGPoint(x: 1.51743096 * scale + offsetX, y: 0.261171347 * scale + offsetY), | |
control1: CGPoint(x: 0 * scale + offsetX, y: 0.0983945064 * scale + offsetY), | |
control2: CGPoint(x: 0.957459424 * scale + offsetX, y: -0.29674674 * scale + offsetY) | |
) | |
path.addLine(to: CGPoint(x: 16.9967309 * scale + offsetX, y: 15.6837877 * scale + offsetY)) | |
path.addCurve( | |
to: CGPoint(x: 17.7777799 * scale + offsetX, y: 17.5625016 * scale + offsetY), | |
control1: CGPoint(x: 17.496828 * scale + offsetX, y: 16.1820535 * scale + offsetY), | |
control2: CGPoint(x: 17.7777799 * scale + offsetX, y: 16.8578474 * scale + offsetY) | |
) | |
return path | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment