TM-SGNL-iOS/SignalServiceKit/QRCodes/QRCodeColor.swift
TeleMessage developers dde0620daf initial commit
2025-05-03 12:28:28 -07:00

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
}
}
}