]> git.r.bdr.sh - rbdr/patterns/commitdiff
Add explicit initializers
authorRuben Beltran del Rio <redacted>
Wed, 26 Apr 2023 16:20:34 +0000 (18:20 +0200)
committerRuben Beltran del Rio <redacted>
Wed, 26 Apr 2023 16:20:34 +0000 (18:20 +0200)
Package.swift
Sources/Patterns/PatternPicker.swift
Sources/Patterns/PatternView.swift [moved from Sources/Patterns/Pattern.swift with 52% similarity]
Sources/Patterns/Tile.swift

index fb1b488f4509bdee119003fb1ecfd6c228a4bbdd..2fa3f216d51d00a1c3b5a3efec290595d5fc157b 100644 (file)
@@ -9,7 +9,7 @@ let package = Package(
       .macOS(.v12),
       .iOS(.v15),
       .macCatalyst(.v15),
-      .tvOS(.v15),
+      .tvOS(.v16),
       .watchOS(.v8)
     ],
     products: [
index 3f550e528371fb7ad605c66867e1c4416030c677..32c9f3992f615af32b9e5a8345d311743cbf8b03 100644 (file)
@@ -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 {
similarity index 52%
rename from Sources/Patterns/Pattern.swift
rename to Sources/Patterns/PatternView.swift
index 6c63870fa7e077394181da79730ef97500ca7d09..be78bde419843940ce503c92c9a969ad6cb12dbf 100644 (file)
@@ -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)
       }
     }
 }
index 816ebc5a87926eef37f4dfaa89b5f6da4cd8546a..9c39640b8ab4dbfdae2ab29988ac9851a8310079 100644 (file)
@@ -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