@@ -20,7 +20,9 @@ extension UIImage {
2020 return result
2121 }
2222
23- private static func softwareUpdateProgressFill( progress: CGFloat ) -> UIImage ? {
23+ private static func softwareUpdateProgressFill(
24+ progress: CGFloat , fillColor: UIColor = Constants . progressColor
25+ ) -> UIImage ? {
2426 assert ( progress >= 0 && progress <= 1 )
2527 let progress = progress. clamped ( to: 0 ... 1 )
2628
@@ -32,7 +34,7 @@ extension UIImage {
3234 guard let context = UIGraphicsGetCurrentContext ( ) else {
3335 return nil
3436 }
35- context. setFillColor ( Constants . progressColor . cgColor)
37+ context. setFillColor ( fillColor . cgColor)
3638 context. clip ( to: clippingRect)
3739 context. addEllipse ( in: rect. insetBy ( dx: Constants . borderWidth, dy: Constants . borderWidth) )
3840 context. drawPath ( using: . fill)
@@ -49,6 +51,20 @@ extension UIImage {
4951 symbol
5052 ] . compactMap { $0 } ) ?? . init( )
5153 }
54+
55+ static func posSoftwareUpdateProgress( progress: CGFloat ) -> UIImage {
56+ let symbol : UIImage =
57+ progress == 1 ? . cardReaderUpdateProgressCheckmark : . cardReaderUpdateProgressArrow
58+ let backgroundImage = UIImage . cardReaderUpdateProgressBackground
59+ . withRenderingMode ( . alwaysTemplate)
60+ . withTintColor ( UIColor ( . posSecondary) )
61+ return . composite(
62+ images: [
63+ backgroundImage,
64+ . softwareUpdateProgressFill( progress: progress, fillColor: UIColor ( . posPrimary) ) ,
65+ symbol. withTintColor ( UIColor ( . posOnPrimary) ) ,
66+ ] . compactMap { $0 } ) ?? . init( )
67+ }
5268}
5369
5470private enum Constants {
@@ -63,13 +79,24 @@ struct UpdateProgressImage_Previews: PreviewProvider {
6379
6480 var body : some View {
6581 VStack {
66- Image ( uiImage: UIImage . softwareUpdateProgress ( progress: complete) )
82+ VStack {
83+ Text ( " Default Style " )
84+ . font ( . headline)
85+ Image ( uiImage: UIImage . softwareUpdateProgress ( progress: complete) )
86+ }
87+
88+ VStack {
89+ Text ( " POS Style " )
90+ . font ( . headline)
91+ Image ( uiImage: UIImage . posSoftwareUpdateProgress ( progress: complete) )
92+ }
93+
6794 Slider ( value: $complete, in: 0 ... 1 )
6895 }
96+ . padding ( )
6997 }
7098 }
7199 static var previews : some View {
72100 UpdateProgressImage ( )
73- . padding ( )
74101 }
75102}
0 commit comments