Swiftgram/submodules/SettingsUI/Sources/Themes/GenerateThemeName.swift
2019-11-19 05:25:56 +04:00

323 lines
5.8 KiB
Swift

import UIKit
import Display
private let colors: [UInt32: String] = [
0x8e0000: "Berry",
0xdec196: "Brandy",
0x800b47: "Cherry",
0xff7f50: "Coral",
0xdb5079: "Cranberry",
0xdc143c: "Crimson",
0xe0b0ff: "Mauve",
0xffc0cb: "Pink",
0xff0000: "Red",
0xff007f: "Rose",
0x80461b: "Russet",
0xff2400: "Scarlet",
0xf1f1f1: "Seashell",
0xff3399: "Strawberry",
0xffbf00: "Amber",
0xeb9373: "Apricot",
0xfbe7b2: "Banana",
0xa1c50a: "Citrus",
0xb06500: "Ginger",
0xffd700: "Gold",
0xfde910: "Lemon",
0xffa500: "Orange",
0xffe5b4: "Peach",
0xff6b53: "Persimmon",
0xe4d422: "Sunflower",
0xf28500: "Tangerine",
0xffc87c: "Topaz",
0xffff00: "Yellow",
0x384910: "Clover",
0x83aa5d: "Cucumber",
0x50c878: "Emerald",
0xb5b35c: "Olive",
0x00ff00: "Green",
0x00a86b: "Jade",
0x29ab87: "Jungle",
0xbfff00: "Lime",
0x0bda51: "Malachite",
0x98ff98: "Mint",
0xaddfad: "Moss",
0x315ba1: "Azure",
0x0000ff: "Blue",
0x0047ab: "Cobalt",
0x4f69c6: "Indigo",
0x017987: "Lagoon",
0x71d9e2: "Aquamarine",
0x120a8f: "Ultramarine",
0x000080: "Navy",
0x2f519e: "Sapphire",
0x76d7ea: "Sky",
0x008080: "Teal",
0x40e0d0: "Turquoise",
0x9966cc: "Amethyst",
0x4d0135: "Blackberry",
0x614051: "Eggplant",
0xc8a2c8: "Lilac",
0xb57edc: "Lavender",
0xccccff: "Periwinkle",
0x843179: "Plum",
0x660099: "Purple",
0xd8bfd8: "Thistle",
0xda70d6: "Orchid",
0x240a40: "Violet",
0x3f2109: "Bronze",
0x370202: "Chocolate",
0x7b3f00: "Cinnamon",
0x301f1e: "Cocoa",
0x706555: "Coffee",
0x796989: "Rum",
0x4e0606: "Mahogany",
0x782d19: "Mocha",
0xc2b280: "Sand",
0x882d17: "Sienna",
0x780109: "Maple",
0xf0e68c: "Khaki",
0xb87333: "Copper",
0xb94e48: "Chestnut",
0xeed9c4: "Almond",
0xfffdd0: "Cream",
0xb9f2ff: "Diamond",
0xa98307: "Honey",
0xfffff0: "Ivory",
0xeae0c8: "Pearl",
0xeff2f3: "Porcelain",
0xd1bea8: "Vanilla",
0xffffff: "White",
0x808080: "Gray",
0x000000: "Black",
0xe8f1d4: "Chrome",
0x36454f: "Charcoal",
0x0c0b1d: "Ebony",
0xc0c0c0: "Silver",
0xf5f5f5: "Smoke",
0x262335: "Steel",
0x4fa83d: "Apple",
0x80b3c4: "Glacier",
0xfebaad: "Melon",
0xc54b8c: "Mulberry",
0xa9c6c2: "Opal",
0x54a5f8: "Blue"
]
private let adjectives: [String] = [
"Ancient",
"Antique",
"Autumn",
"Baby",
"Barely",
"Baroque",
"Blazing",
"Blushing",
"Bohemian",
"Bubbly",
"Burning",
"Buttered",
"Classic",
"Clear",
"Cool",
"Cosmic",
"Cotton",
"Cozy",
"Crystal",
"Dark",
"Daring",
"Darling",
"Dawn",
"Dazzling",
"Deep",
"Deepest",
"Delicate",
"Delightful",
"Divine",
"Double",
"Downtown",
"Dreamy",
"Dusky",
"Dusty",
"Electric",
"Enchanted",
"Endless",
"Evening",
"Fantastic",
"Flirty",
"Forever",
"Frigid",
"Frosty",
"Frozen",
"Gentle",
"Heavenly",
"Hyper",
"Icy",
"Infinite",
"Innocent",
"Instant",
"Luscious",
"Lunar",
"Lustrous",
"Magic",
"Majestic",
"Mambo",
"Midnight",
"Millenium",
"Morning",
"Mystic",
"Natural",
"Neon",
"Night",
"Opaque",
"Paradise",
"Perfect",
"Perky",
"Polished",
"Powerful",
"Rich",
"Royal",
"Sheer",
"Simply",
"Sizzling",
"Solar",
"Sparkling",
"Splendid",
"Spicy",
"Spring",
"Stellar",
"Sugared",
"Summer",
"Sunny",
"Super",
"Sweet",
"Tender",
"Tenacious",
"Tidal",
"Toasted",
"Totally",
"Tranquil",
"Tropical",
"True",
"Twilight",
"Twinkling",
"Ultimate",
"Ultra",
"Velvety",
"Vibrant",
"Vintage",
"Virtual",
"Warm",
"Warmest",
"Whipped",
"Wild",
"Winsome"
]
private let subjectives: [String] = [
"Ambrosia",
"Attack",
"Avalanche",
"Blast",
"Bliss",
"Blossom",
"Blush",
"Burst",
"Butter",
"Candy",
"Carnival",
"Charm",
"Chiffon",
"Cloud",
"Comet",
"Delight",
"Dream",
"Dust",
"Fantasy",
"Flame",
"Flash",
"Fire",
"Freeze",
"Frost",
"Glade",
"Glaze",
"Gleam",
"Glimmer",
"Glitter",
"Glow",
"Grande",
"Haze",
"Highlight",
"Ice",
"Illusion",
"Intrigue",
"Jewel",
"Jubilee",
"Kiss",
"Lights",
"Lollypop",
"Love",
"Luster",
"Madness",
"Matte",
"Mirage",
"Mist",
"Moon",
"Muse",
"Myth",
"Nectar",
"Nova",
"Parfait",
"Passion",
"Pop",
"Rain",
"Reflection",
"Rhapsody",
"Romance",
"Satin",
"Sensation",
"Silk",
"Shine",
"Shadow",
"Shimmer",
"Sky",
"Spice",
"Star",
"Sugar",
"Sunrise",
"Sunset",
"Sun",
"Twist",
"Unbound",
"Velvet",
"Vibrant",
"Waters",
"Wine",
"Wink",
"Wonder",
"Zone"
]
func generateThemeName(accentColor: UIColor) -> String {
var nearest: (color: UInt32, distance: Int32)?
for (color, _) in colors {
let distance = accentColor.distance(to: UIColor(rgb: color))
if let currentNearest = nearest {
if distance < currentNearest.distance {
nearest = (color, distance)
}
} else {
nearest = (color, distance)
}
}
if let color = nearest?.color, let colorName = colors[color]?.capitalized {
if arc4random() % 2 == 0 {
return "\((adjectives.randomElement() ?? "").capitalized) \(colorName)"
} else {
return "\(colorName) \((subjectives.randomElement() ?? "").capitalized)"
}
} else {
return ""
}
}