1 contributor
//
// File.swift
// USB Meter
//
// Created by Bogdan Timofte on 08/05/2020.
// Copyright © 2020 Bogdan Timofte. All rights reserved.
//
import SwiftUI
struct RoundedRectangleBackground: ViewModifier {
var cornerRadius: CGFloat
var foregroundColor: Color
var opacity: Double
var blurRadius: CGFloat
func body(content: Content) -> some View {
content.background(
RoundedRectangle(cornerRadius: cornerRadius)
.foregroundColor(foregroundColor)
.opacity(opacity)
.blur(radius: blurRadius)
)
}
}
struct RoundedRectangleBorder: ViewModifier {
var cornerRadius: CGFloat
var foregroundColor: Color
var lineWidth: CGFloat
var blurRadius: CGFloat
func body(content: Content) -> some View {
content.background(
RoundedRectangle(cornerRadius: cornerRadius)
.stroke(lineWidth: lineWidth)
.foregroundColor(foregroundColor)
.blur(radius: blurRadius)
)
}
}
extension View {
func withRoundedRectangleBackground( cornerRadius: CGFloat, foregroundColor: Color, opacity: Double, blurRadius: CGFloat = 0 ) -> some View {
self.modifier(RoundedRectangleBackground(cornerRadius: cornerRadius, foregroundColor: foregroundColor, opacity: opacity, blurRadius: blurRadius))
}
func withRoundedRectangleBorder( cornerRadius: CGFloat, foregroundColor: Color, lineWidth: CGFloat, blurRadius: CGFloat = 0 ) -> some View {
self.modifier(RoundedRectangleBorder(cornerRadius: cornerRadius, foregroundColor: foregroundColor, lineWidth: lineWidth, blurRadius: blurRadius ))
}
}
// MARK: Local
extension Button {
func asEnableFeatureButton(state: Bool) -> some View {
self
.foregroundColor( state ? .primary : .blue )
.padding(5)
.withRoundedRectangleBackground(cornerRadius: 15, foregroundColor: state ? .blue : .clear, opacity: 0.5)
.withRoundedRectangleBorder(cornerRadius: 15, foregroundColor: .blue, lineWidth: 1, blurRadius: 0.1)
}
}