diff options
| author | Ruben Beltran del Rio <ruben@unlimited.pizza> | 2023-04-26 18:20:34 +0200 |
|---|---|---|
| committer | Ruben Beltran del Rio <ruben@unlimited.pizza> | 2023-04-26 18:20:34 +0200 |
| commit | bf2790fca182f504255df877beff0ac0334cb2ca (patch) | |
| tree | f7be6c0a2b2d7f3f5c172277a4de6403588dc9c5 /Sources/Patterns | |
| parent | 68ce43557c7bb7bffc33e3c3f161d3a93f89e200 (diff) | |
Add explicit initializers
Diffstat (limited to 'Sources/Patterns')
| -rw-r--r-- | Sources/Patterns/PatternPicker.swift | 51 | ||||
| -rw-r--r-- | Sources/Patterns/PatternView.swift (renamed from Sources/Patterns/Pattern.swift) | 23 | ||||
| -rw-r--r-- | Sources/Patterns/Tile.swift | 7 |
3 files changed, 51 insertions, 30 deletions
diff --git a/Sources/Patterns/PatternPicker.swift b/Sources/Patterns/PatternPicker.swift index 3f550e5..32c9f39 100644 --- a/Sources/Patterns/PatternPicker.swift +++ b/Sources/Patterns/PatternPicker.swift @@ -4,33 +4,40 @@ public struct PatternPicker: View { @Binding public var selectedDesign: TileDesign; - public var selectedColor: Color = .accentColor - public var pixelSize: CGFloat = 2.0; - public var foregroundColor: Color = .black - public var backgroundColor: Color = .white + public var selectedColor: Color + public var pixelSize: CGFloat + public var foregroundColor: Color + public var backgroundColor: Color - let patterns = TileDesign.allCases - - let verticalTileCount = Int(ceil(Double(TileDesign.allCases.count) / 5.0)) + public init(selectedDesign: Binding<TileDesign>, selectedColor: Color = .accentColor, pixelSize: CGFloat = 2.0, foregroundColor: Color = .black, backgroundColor: Color = .white) { + self._selectedDesign = selectedDesign + self.selectedColor = selectedColor + self.pixelSize = pixelSize + self.foregroundColor = foregroundColor + self.backgroundColor = backgroundColor + } + + private let patterns = TileDesign.allCases + private let verticalTileCount = Int(ceil(Double(TileDesign.allCases.count) / 5.0)) - public var body: some View { - VStack(alignment: .leading, spacing: 0) { - ForEach(0 ..< verticalTileCount, id: \.self) { i in - HStack(alignment: .top, spacing: 0) { - ForEach(0 ..< 5) { j in - if i * 5 + j < patterns.count { - Pattern(design: .constant(patterns[i * 5 + j]), pixelSize: pixelSize, foregroundColor: foregroundColor, backgroundColor: backgroundColor) - .frame(width: pixelSize * 16, height: pixelSize * 12) - .border(selectedDesign == patterns[i * 5 + j] ? selectedColor : foregroundColor, width: pixelSize / 2.0) - .onTapGesture(perform: { - selectedDesign = patterns[i * 5 + j] - }) - } + public var body: some View { + VStack(alignment: .leading, spacing: 0) { + ForEach(0 ..< verticalTileCount, id: \.self) { i in + HStack(alignment: .top, spacing: 0) { + ForEach(0 ..< 5) { j in + if i * 5 + j < patterns.count { + PatternView(design: .constant(patterns[i * 5 + j]), pixelSize: pixelSize, foregroundColor: foregroundColor, backgroundColor: backgroundColor) + .frame(width: pixelSize * 16, height: pixelSize * 12) + .border(selectedDesign == patterns[i * 5 + j] ? selectedColor : foregroundColor, width: pixelSize / 2.0) + .onTapGesture(perform: { + selectedDesign = patterns[i * 5 + j] + }) } } } - }.background(foregroundColor) - } + } + }.background(foregroundColor) + } } struct PatternPicker_Previews: PreviewProvider { diff --git a/Sources/Patterns/Pattern.swift b/Sources/Patterns/PatternView.swift index 6c63870..be78bde 100644 --- a/Sources/Patterns/Pattern.swift +++ b/Sources/Patterns/PatternView.swift @@ -1,16 +1,23 @@ import SwiftUI -public struct Pattern: View { +public struct PatternView: View { - @Binding public var design: TileDesign; - public var pixelSize: CGFloat = 2.0; - public var foregroundColor: Color = .black - public var backgroundColor: Color = .white + @Binding public var design: TileDesign + public var pixelSize: CGFloat + public var foregroundColor: Color + public var backgroundColor: Color private var patternSize: CGFloat { pixelSize * 8.0; } + public init(design: Binding<TileDesign>, pixelSize: CGFloat = 2.0, foregroundColor: Color = .black, backgroundColor: Color = .white) { + self._design = design + self.pixelSize = pixelSize + self.foregroundColor = foregroundColor + self.backgroundColor = backgroundColor + } + public var body: some View { GeometryReader { gr in VStack(spacing: 0) { @@ -30,11 +37,11 @@ struct Pattern_Previews: PreviewProvider { static var previews: some View { VStack { Text("Default") - Pattern(design: .constant(TileDesign.grid)) + PatternView(design: .constant(TileDesign.grid)) Text("Color override") - Pattern(design: .constant(TileDesign.balls), foregroundColor: .pink, backgroundColor: .cyan) + PatternView(design: .constant(TileDesign.balls), foregroundColor: .pink, backgroundColor: .cyan) Text("Pixel size override") - Pattern(design: .constant(TileDesign.shingles), pixelSize: 8.0) + PatternView(design: .constant(TileDesign.shingles), pixelSize: 8.0) } } } diff --git a/Sources/Patterns/Tile.swift b/Sources/Patterns/Tile.swift index 816ebc5..9c39640 100644 --- a/Sources/Patterns/Tile.swift +++ b/Sources/Patterns/Tile.swift @@ -11,6 +11,13 @@ public struct Tile: View { design.pixels() } + public init(design: TileDesign, pixelSize: CGFloat = 2.0, foregroundColor: Color = .black, backgroundColor: Color = .white) { + self.design = design + self.pixelSize = pixelSize + self.foregroundColor = foregroundColor + self.backgroundColor = backgroundColor + } + public var body: some View { VStack(spacing: 0) { ForEach(0 ..< 8) { i in |