blob: e95b4dff5416d2303eb21b102e2d18f3565f1c4d (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
import SwiftUI
public struct PatternView: View {
public var design: TileDesign
public var pixelSize: CGFloat
public var foregroundColor: Color
public var backgroundColor: Color
private let image: CGImage
private var patternSize: CGFloat {
pixelSize * 8.0;
}
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
#if os(iOS) || os(watchOS) || os(tvOS)
let foregroundCGColor = UIColor(foregroundColor).cgColor
let backgroundCGColor = UIColor(backgroundColor).cgColor
#else
let foregroundCGColor = NSColor(foregroundColor).cgColor
let backgroundCGColor = NSColor(backgroundColor).cgColor
#endif
self.image = TileImage.image(design, pixelSize: pixelSize, foregroundColor: foregroundCGColor, backgroundColor: backgroundCGColor)
}
public var body: some View {
Image(image, scale: 1, label: Text("Test")).resizable(resizingMode: .tile).drawingGroup()
}
}
struct Pattern_Previews: PreviewProvider {
static var previews: some View {
VStack {
Text("Default")
PatternView(design: TileDesign.grid)
Text("Color override")
PatternView(design: TileDesign.balls, foregroundColor: .pink, backgroundColor: .cyan)
Text("Pixel size override")
PatternView(design: TileDesign.shingles, pixelSize: 8.0)
}
}
}
|