Last active
July 14, 2020 10:18
-
-
Save sturdysturge/85e8b5431e02325c3c7dc3f9fa37f1d9 to your computer and use it in GitHub Desktop.
WheelView Colour Picker Maker
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import SwiftUI | |
struct RGBAWheelView: WheelPickable { | |
typealias DataType = RGBAData | |
let data: DataType | |
@State var thumbOffset = CGPoint() | |
var _$thumbOffset: Binding<CGPoint> { $thumbOffset } | |
let angularGradient: Gradient | |
let radialGradient: Gradient | |
init(data: DataType) { | |
self.data = data | |
angularGradient = Gradient.fromValues(data.values, parameter: data.parameters.0) | |
radialGradient = Gradient.fromValues(data.values, parameter: data.parameters.1) | |
} | |
} | |
struct HSBAWheelView: WheelPickable { | |
typealias DataType = HSBAData | |
let data: DataType | |
@State var thumbOffset = CGPoint() | |
var _$thumbOffset: Binding<CGPoint> { $thumbOffset } | |
let angularGradient: Gradient | |
let radialGradient: Gradient | |
init(data: DataType) { | |
self.data = data | |
angularGradient = Gradient.fromValues(data.values, parameter: data.parameters.0) | |
radialGradient = Gradient.fromValues(data.values, parameter: data.parameters.1) | |
} | |
} | |
struct CMYKAWheelView: WheelPickable { | |
typealias DataType = CMYKAData | |
let data: DataType | |
@State var thumbOffset = CGPoint() | |
var _$thumbOffset: Binding<CGPoint> { $thumbOffset } | |
let angularGradient: Gradient | |
let radialGradient: Gradient | |
init(data: DataType) { | |
self.data = data | |
angularGradient = Gradient.fromValues(data.values, parameter: data.parameters.0) | |
radialGradient = Gradient.fromValues(data.values, parameter: data.parameters.1) | |
} | |
} | |
struct GreyscaleWheelView: WheelPickable { | |
typealias DataType = GreyscaleData | |
let data: DataType | |
@State var thumbOffset = CGPoint() | |
var _$thumbOffset: Binding<CGPoint> { $thumbOffset } | |
let angularGradient: Gradient | |
let radialGradient: Gradient | |
init(data: DataType) { | |
self.data = data | |
angularGradient = Gradient.fromValues(data.values, parameter: data.parameters.0) | |
radialGradient = Gradient.fromValues(data.values, parameter: data.parameters.1) | |
} | |
} | |
struct PreviewWheelView: View { | |
@ObservedObject var data = ColourModel(colourSpace: .HSBA) | |
var body: some View { | |
VStack { | |
PreviewColourView(colour: data.colour, square: true) | |
HSBAWheelView(data: HSBAData(values: $data.valuesInHSBA, parameters: (.hue, .saturation))) | |
} | |
} | |
} | |
struct WheelView_Previews: PreviewProvider { | |
static var previews: some View { | |
PreviewWheelView() | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment