104 lines
2.7 KiB
Swift
104 lines
2.7 KiB
Swift
//
|
|
// Copyright 2023 Signal Messenger, LLC
|
|
// SPDX-License-Identifier: AGPL-3.0-only
|
|
//
|
|
|
|
/// Preset color options for styled QR codes.
|
|
public enum QRCodeColor: String, UnknownEnumCodable, CaseIterable {
|
|
case blue
|
|
case white
|
|
case grey
|
|
case olive
|
|
case green
|
|
case orange
|
|
case pink
|
|
case purple
|
|
|
|
public static var unknown: QRCodeColor { .blue }
|
|
|
|
/// Background color for the QR code.
|
|
public var background: UIColor {
|
|
switch self {
|
|
case .blue:
|
|
return UIColor(rgbHex: 0x506ECD)
|
|
case .white:
|
|
return .white
|
|
case .grey:
|
|
return UIColor(rgbHex: 0x6A6C74)
|
|
case .olive:
|
|
return UIColor(rgbHex: 0xA89D7F)
|
|
case .green:
|
|
return UIColor(rgbHex: 0x829A6E)
|
|
case .orange:
|
|
return UIColor(rgbHex: 0xDE7134)
|
|
case .pink:
|
|
return UIColor(rgbHex: 0xE67899)
|
|
case .purple:
|
|
return UIColor(rgbHex: 0x9C84CF)
|
|
}
|
|
}
|
|
|
|
/// Foreground color for the QR code.
|
|
public var foreground: UIColor {
|
|
switch self {
|
|
case .blue:
|
|
return UIColor(rgbHex: 0x2449C0)
|
|
case .white:
|
|
return .black
|
|
case .grey:
|
|
return UIColor(rgbHex: 0x464852)
|
|
case .olive:
|
|
return UIColor(rgbHex: 0x73694F)
|
|
case .green:
|
|
return UIColor(rgbHex: 0x55733F)
|
|
case .orange:
|
|
return UIColor(rgbHex: 0xD96B2D)
|
|
case .pink:
|
|
return UIColor(rgbHex: 0xBB617B)
|
|
case .purple:
|
|
return UIColor(rgbHex: 0x7651C5)
|
|
}
|
|
}
|
|
|
|
/// Background color for the QR code share image.
|
|
public var canvas: UIColor {
|
|
switch self {
|
|
case .blue:
|
|
return UIColor(rgbHex: 0xEDF0FA)
|
|
case .white:
|
|
return UIColor(rgbHex: 0xF5F5F5)
|
|
case .grey:
|
|
return UIColor(rgbHex: 0xF0F0F1)
|
|
case .olive:
|
|
return UIColor(rgbHex: 0xF6F5F2)
|
|
case .green:
|
|
return UIColor(rgbHex: 0xF2F5F0)
|
|
case .orange:
|
|
return UIColor(rgbHex: 0xFCF1EB)
|
|
case .pink:
|
|
return UIColor(rgbHex: 0xFCF1F5)
|
|
case .purple:
|
|
return UIColor(rgbHex: 0xF5F3FA)
|
|
}
|
|
}
|
|
|
|
/// Border color for the padding around the QR code.
|
|
public var paddingBorder: UIColor {
|
|
switch self {
|
|
case .white:
|
|
return UIColor(rgbHex: 0xE9E9E9)
|
|
default:
|
|
return .clear
|
|
}
|
|
}
|
|
|
|
/// Color for the username displayed alongside the QR code.
|
|
public var username: UIColor {
|
|
switch self {
|
|
case .white:
|
|
return .black
|
|
default:
|
|
return .white
|
|
}
|
|
}
|
|
}
|