124 lines
		
	
	
	
		
			3 KiB
		
	
	
	
		
			Swift
		
	
	
	
	
	
			
		
		
	
	
			124 lines
		
	
	
	
		
			3 KiB
		
	
	
	
		
			Swift
		
	
	
	
	
	
//
 | 
						|
//  Preferences.swift
 | 
						|
//  Metaballs
 | 
						|
//
 | 
						|
//  Created by Eryn Wells on 8/14/17.
 | 
						|
//  Copyright © 2017 Eryn Wells. All rights reserved.
 | 
						|
//
 | 
						|
 | 
						|
import Cocoa
 | 
						|
 | 
						|
extension UserDefaults {
 | 
						|
    public var target: Float {
 | 
						|
        get {
 | 
						|
            if let obj = object(forKey: "target") as? NSNumber {
 | 
						|
                return obj.floatValue
 | 
						|
            } else {
 | 
						|
                let defaultValue: Float = 1.0
 | 
						|
                set(defaultValue, forKey: "target")
 | 
						|
                return defaultValue
 | 
						|
            }
 | 
						|
        }
 | 
						|
        set {
 | 
						|
            set(newValue, forKey: "target")
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    public var feather: Float {
 | 
						|
        get {
 | 
						|
            if let obj = object(forKey: "feather") as? NSNumber {
 | 
						|
                return obj.floatValue
 | 
						|
            } else {
 | 
						|
                let defaultValue: Float = 0.25
 | 
						|
                set(defaultValue, forKey: "target")
 | 
						|
                return defaultValue
 | 
						|
            }
 | 
						|
        }
 | 
						|
        set {
 | 
						|
            set(newValue, forKey: "feather")
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    public var colorStyle: ColorStyle? {
 | 
						|
        get {
 | 
						|
            let value = integer(forKey: "colorStyle")
 | 
						|
            if let colorStyle = ColorStyle(rawValue: UInt32(value)) {
 | 
						|
                return colorStyle
 | 
						|
            }
 | 
						|
            return nil
 | 
						|
        }
 | 
						|
        set {
 | 
						|
            if let style = newValue {
 | 
						|
                set(style.rawValue, forKey: "colorStyle")
 | 
						|
            } else {
 | 
						|
                set(nil as Any?, forKey: "colorStyle")
 | 
						|
            }
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    public var color0: Float4? {
 | 
						|
        get {
 | 
						|
            return float4(forKey: "color0")
 | 
						|
        }
 | 
						|
        set {
 | 
						|
            set(newValue, forKey: "color0")
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    public var color1: Float4? {
 | 
						|
        get {
 | 
						|
            return float4(forKey: "color1")
 | 
						|
        }
 | 
						|
        set {
 | 
						|
            set(newValue, forKey: "color1")
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    public var color2: Float4? {
 | 
						|
        get {
 | 
						|
            return float4(forKey: "color2")
 | 
						|
        }
 | 
						|
        set {
 | 
						|
            set(newValue, forKey: "color2")
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    public var color3: Float4? {
 | 
						|
        get {
 | 
						|
            return float4(forKey: "color3")
 | 
						|
        }
 | 
						|
        set {
 | 
						|
            set(newValue, forKey: "color3")
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    public var colorRotation: Float {
 | 
						|
        get {
 | 
						|
            if let obj = object(forKey: "colorRotation") as? NSNumber {
 | 
						|
                return obj.floatValue
 | 
						|
            } else {
 | 
						|
                let defaultValue: Float = 0.0
 | 
						|
                set(defaultValue, forKey: "colorRotation")
 | 
						|
                return defaultValue
 | 
						|
            }
 | 
						|
        }
 | 
						|
        set {
 | 
						|
            set(newValue, forKey: "colorRotation")
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    func float4(forKey key: String) -> Float4? {
 | 
						|
        guard let values = array(forKey: key) as? [Float], values.count >= 4 else {
 | 
						|
            return nil
 | 
						|
        }
 | 
						|
        return Float4(values[0], values[1], values[2], values[3])
 | 
						|
    }
 | 
						|
 | 
						|
    func set(_ value: Float4?, forKey key: String) {
 | 
						|
        if let value = value {
 | 
						|
            set([Float](float4: value), forKey: key)
 | 
						|
        } else {
 | 
						|
            set(nil as Any?, forKey: key)
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 |