// swiftlint:disable all // Generated using SwiftGen — https://github.com/SwiftGen/SwiftGen {% if palettes %} {% set colorAlias %}{{param.colorAliasName|default:"Color"}}{% endset %} {% set accessModifier %}{% if param.publicAccess %}public{% else %}internal{% endif %}{% endset %} #if os(OSX) import AppKit.NSColor {{accessModifier}} typealias {{colorAlias}} = NSColor #elseif os(iOS) || os(tvOS) || os(watchOS) import UIKit.UIColor {{accessModifier}} typealias {{colorAlias}} = UIColor #endif // swiftlint:disable superfluous_disable_command file_length implicit_return // MARK: - Colors // swiftlint:disable identifier_name line_length type_body_length {% set enumName %}{{param.enumName|default:"ColorName"}}{% endset %} {{accessModifier}} struct {{enumName}} { {{accessModifier}} let rgbaValue: UInt32 {{accessModifier}} var color: {{colorAlias}} { return {{colorAlias}}(named: self) } {% macro rgbaValue color %}0x{{color.red}}{{color.green}}{{color.blue}}{{color.alpha}}{% endmacro %} {% macro enumBlock colors %} {% for color in colors %} /// /// Alpha: {{color.alpha|hexToInt|int255toFloat|percent}}
(0x{{color.red}}{{color.green}}{{color.blue}}{{color.alpha}}) {{accessModifier}} static let {{color.name|swiftIdentifier:"pretty"|lowerFirstWord|escapeReservedKeywords}} = {{enumName}}(rgbaValue: {% call rgbaValue color %}) {% endfor %} {% endmacro %} {% if palettes.count > 1 or param.forceFileNameEnum %} {% for palette in palettes %} {{accessModifier}} enum {{palette.name|swiftIdentifier:"pretty"|escapeReservedKeywords}} { {% filter indent:2 %}{% call enumBlock palette.colors %}{% endfilter %} } {% endfor %} {% else %} {% call enumBlock palettes.first.colors %} {% endif %} } // swiftlint:enable identifier_name line_length type_body_length // MARK: - Implementation Details internal extension {{colorAlias}} { convenience init(rgbaValue: UInt32) { let components = RGBAComponents(rgbaValue: rgbaValue).normalized self.init(red: components[0], green: components[1], blue: components[2], alpha: components[3]) } } private struct RGBAComponents { let rgbaValue: UInt32 private var shifts: [UInt32] { [ rgbaValue >> 24, // red rgbaValue >> 16, // green rgbaValue >> 8, // blue rgbaValue // alpha ] } private var components: [CGFloat] { shifts.map { CGFloat($0 & 0xff) } } var normalized: [CGFloat] { components.map { $0 / 255.0 } } } {{accessModifier}} extension {{colorAlias}} { convenience init(named color: {{enumName}}) { self.init(rgbaValue: color.rgbaValue) } } {% else %} // No color found {% endif %}