taler-ios

iOS apps for GNU Taler (wallet)
Log | Files | Refs | README | LICENSE

Shape+style.swift (2181B)


      1 //  MIT License
      2 //  Copyright © John Sundell
      3 //
      4 //  Permission is hereby granted, free of charge, to any person obtaining a copy of this software
      5 //  and associated documentation files (the "Software"), to deal in the Software without restriction,
      6 //  including without limitation the rights to use, copy, modify, merge, publish, distribute,
      7 //  sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
      8 //  furnished to do so, subject to the following conditions:
      9 //
     10 //  The above copyright notice and this permission notice shall be included in all copies or
     11 //  substantial portions of the Software.
     12 //
     13 //  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
     14 //  BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
     15 //  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
     16 //  DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
     17 //  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
     18 //
     19 import SwiftUI
     20 
     21 extension Shape {
     22     func style<S: ShapeStyle, F: ShapeStyle>(
     23         withStroke strokeContent: S,
     24         lineWidth: CGFloat = 1,
     25         fill fillContent: F
     26     ) -> some View {
     27         self.stroke(strokeContent, lineWidth: lineWidth)
     28             .background(fill(fillContent))
     29     }
     30 }
     31 
     32 /// use like this
     33 //        struct CreateAccountButton: View {
     34 //            var action: () -> Void
     35 //
     36 //            var body: some View {
     37 //                Button("Create account", action: action)
     38 //                    .padding()
     39 //                    .foregroundColor(.white)
     40 //                    .background(RoundedRectangle(cornerRadius: 20).style(
     41 //                        withStroke: Color.primary,
     42 //                        lineWidth: 2,
     43 //                        fill: LinearGradient(
     44 //                            gradient: Gradient(colors: [.blue, .black]),
     45 //                            startPoint: .top,
     46 //                            endPoint: .bottom
     47 //                        )
     48 //                    ))
     49 //            }
     50 //        }