From: Ruben Beltran del Rio Date: Wed, 26 Apr 2023 16:20:34 +0000 (+0200) Subject: Add explicit initializers X-Git-Tag: 1.0.0~1 X-Git-Url: https://git.r.bdr.sh/rbdr/patterns/commitdiff_plain/bf2790fca182f504255df877beff0ac0334cb2ca?ds=sidebyside Add explicit initializers --- diff --git a/Package.swift b/Package.swift index fb1b488..2fa3f21 100644 --- a/Package.swift +++ b/Package.swift @@ -9,7 +9,7 @@ let package = Package( .macOS(.v12), .iOS(.v15), .macCatalyst(.v15), - .tvOS(.v15), + .tvOS(.v16), .watchOS(.v8) ], products: [ 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, 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 similarity index 52% rename from Sources/Patterns/Pattern.swift rename to 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, 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