Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Package.swift
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// swift-tools-version:5.1
// swift-tools-version:5.3
// The swift-tools-version declares the minimum version of Swift required to build this package.

import PackageDescription
Expand Down
15 changes: 3 additions & 12 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,8 @@ Collection of custom shapes
</center>

```swift
Pentagon()
Hexagon()
RegularPolygon(sides: 32)
RoundedRegularPolygon(sides: 6, radius: 20)
```

## Lines and Curves
Expand Down Expand Up @@ -42,18 +41,10 @@ GridPattern(horizontalLines: 20, verticalLines: 40)

## How to use

Add this swift package to your project
Add this swift package to your project with SPM
```
git@github.com:swift-extensions/swiftui-shapes.git
git@github.com:spacenation/swiftui-shapes.git
```

For more examples open `/Examples/ShapesExamples.xcodeproj`

## Roadmap
- Rounded regular polygons

## Code Contributions
Feel free to contribute via fork/pull request to master branch. If you want to request a feature or report a bug please start a new issue.

## Coffee Contributions
If you find this project useful please consider becoming my GitHub sponsor.
37 changes: 0 additions & 37 deletions Sources/Shapes/RegularPolygons/Decagon.swift

This file was deleted.

37 changes: 0 additions & 37 deletions Sources/Shapes/RegularPolygons/Heptagon.swift

This file was deleted.

37 changes: 0 additions & 37 deletions Sources/Shapes/RegularPolygons/Hexagon.swift

This file was deleted.

37 changes: 0 additions & 37 deletions Sources/Shapes/RegularPolygons/Nonagon.swift

This file was deleted.

37 changes: 0 additions & 37 deletions Sources/Shapes/RegularPolygons/Octagon.swift

This file was deleted.

37 changes: 0 additions & 37 deletions Sources/Shapes/RegularPolygons/Pentagon.swift

This file was deleted.

57 changes: 18 additions & 39 deletions Sources/Shapes/RegularPolygons/RegularPolygon.swift
Original file line number Diff line number Diff line change
@@ -1,64 +1,43 @@
import SwiftUI

public struct RegularPolygon: InsettableShape {
let sides: Int
let inset: CGFloat
let radius: CGFloat

public func inset(by amount: CGFloat) -> RegularPolygon {
RegularPolygon(sides: self.sides, inset: self.inset + amount, radius: radius)
public struct RegularPolygon: Shape {
let sides: UInt
private let inset: CGFloat

public func path(in rect: CGRect) -> Path {
Path.regularPolygon(sides: self.sides, in: rect, inset: inset)
}

public func path(in rect: CGRect) -> Path {
Path.regularPolygon(sides: self.sides, in: rect, inset: inset, radius: radius)
public init(sides: UInt) {
self.init(sides: sides, inset: 0)
}

public init(sides: Int, radius: CGFloat = 0) {
init(sides: UInt, inset: CGFloat) {
self.sides = sides
self.inset = 0
self.radius = radius
}

public init(sides: Double, radius: CGFloat = 0) {
self.sides = Int(sides.rounded(.down))
self.inset = 0
self.radius = radius
self.inset = inset
}
}

extension RegularPolygon {
init(sides: Int, inset: CGFloat, radius: CGFloat = 0) {
self.sides = sides
self.inset = inset
self.radius = radius
extension RegularPolygon: InsettableShape {
public func inset(by amount: CGFloat) -> RegularPolygon {
RegularPolygon(sides: self.sides, inset: self.inset + amount)
}
}

struct RegularPolygon_Previews: PreviewProvider {
static var previews: some View {
Group {
RegularPolygon(sides: 4, radius: 5)
RegularPolygon(sides: 4)
.strokeBorder(lineWidth: 20)
.foregroundColor(.blue)

Pentagon(radius: 5)
RegularPolygon(sides: 6)
.strokeBorder(lineWidth: 20)
.foregroundColor(.yellow)

Hexagon()
.foregroundColor(.orange)

Heptagon(radius: 5)
.foregroundColor(.blue)

Octagon()
.foregroundColor(.pink)

Nonagon()
.foregroundColor(.red)

Decagon()
.foregroundColor(.green)
RegularPolygon(sides: 16)
.strokeBorder(lineWidth: 10)
.foregroundColor(.purple)
}
}
}
Loading