Last active
September 14, 2022 17:29
-
-
Save tomkail/7832d8a3e5e69d6c74bd66e7e0e900d5 to your computer and use it in GitHub Desktop.
Describes a color in english. Crude implementation, but handy for scanning colors when shown in text fields.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System.Collections.Generic; | |
using UnityEngine; | |
[ExecuteAlways] | |
public static class ColorDescriptor { | |
public static string GetNameForColor (Color color) { | |
var bestDist = float.MaxValue; | |
string best = null; | |
foreach(var colorName in colorNames) { | |
var dist = GetColorDistance(color, colorName.Value); | |
if(dist < bestDist) { | |
best = colorName.Key; | |
bestDist = dist; | |
} | |
} | |
return best; | |
} | |
// This is a terrible but basic implementation. Refer to https://stackoverflow.com/questions/9018016/how-to-compare-two-colors-for-similarity-difference | |
public static float GetColorDistance (Color c1, Color c2) { | |
float diffRed = Mathf.Abs(c1.r - c2.r); | |
float diffGreen = Mathf.Abs(c1.g - c2.g); | |
float diffBlue = Mathf.Abs(c1.b - c2.b); | |
float pctDiffRed = diffRed / 255; | |
float pctDiffGreen = diffGreen / 255; | |
float pctDiffBlue = diffBlue / 255; | |
return (pctDiffRed + pctDiffGreen + pctDiffBlue) / 3f * 100; | |
} | |
// From this list: https://docs.microsoft.com/en-us/power-platform/power-fx/reference/function-colors | |
static List<KeyValuePair<string, Color>> colorNames = new List<KeyValuePair<string, Color>>() { | |
new KeyValuePair<string, Color>("Alice Blue", new Color(240, 248, 255, 1)), | |
new KeyValuePair<string, Color>("Antique White", new Color(250, 235, 215, 1)), | |
new KeyValuePair<string, Color>("Aqua", new Color(0, 255, 255, 1)), | |
new KeyValuePair<string, Color>("Aquamarine", new Color(127, 255, 212, 1)), | |
new KeyValuePair<string, Color>("Azure", new Color(240, 255, 255, 1)), | |
new KeyValuePair<string, Color>("Beige", new Color(245, 245, 220, 1)), | |
new KeyValuePair<string, Color>("Bisque", new Color(255, 228, 196, 1)), | |
new KeyValuePair<string, Color>("Black", new Color(0, 0, 0, 1)), | |
new KeyValuePair<string, Color>("Blanched Almond", new Color(255, 235, 205, 1)), | |
new KeyValuePair<string, Color>("Blue", new Color(0, 0, 255, 1)), | |
new KeyValuePair<string, Color>("Blue Violet", new Color(138, 43, 226, 1)), | |
new KeyValuePair<string, Color>("Brown", new Color(165, 42, 42, 1)), | |
new KeyValuePair<string, Color>("Burlywood", new Color(222, 184, 135, 1)), | |
new KeyValuePair<string, Color>("Cadet Blue", new Color(95, 158, 160, 1)), | |
new KeyValuePair<string, Color>("Chartreuse", new Color(127, 255, 0, 1)), | |
new KeyValuePair<string, Color>("Chocolate", new Color(210, 105, 30, 1)), | |
new KeyValuePair<string, Color>("Coral", new Color(255, 127, 80, 1)), | |
new KeyValuePair<string, Color>("Cornflower Blue", new Color(100, 149, 237, 1)), | |
new KeyValuePair<string, Color>("Cornsilk", new Color(255, 248, 220, 1)), | |
new KeyValuePair<string, Color>("Crimson", new Color(220, 20, 60, 1)), | |
new KeyValuePair<string, Color>("Cyan", new Color(0, 255, 255, 1)), | |
new KeyValuePair<string, Color>("Dark Blue", new Color(0, 0, 139, 1)), | |
new KeyValuePair<string, Color>("Dark Cyan", new Color(0, 139, 139, 1)), | |
new KeyValuePair<string, Color>("Dark GoldenRod", new Color(184, 134, 11, 1)), | |
new KeyValuePair<string, Color>("Dark Gray", new Color(169, 169, 169, 1)), | |
new KeyValuePair<string, Color>("Dark Green", new Color(0, 100, 0, 1)), | |
new KeyValuePair<string, Color>("Dark Khaki", new Color(189, 183, 107, 1)), | |
new KeyValuePair<string, Color>("Dark Magenta", new Color(139, 0, 139, 1)), | |
new KeyValuePair<string, Color>("Dark Olive Green", new Color(85, 107, 47, 1)), | |
new KeyValuePair<string, Color>("Dark Orange", new Color(255, 140, 0, 1)), | |
new KeyValuePair<string, Color>("Dark Orchid", new Color(153, 50, 204, 1)), | |
new KeyValuePair<string, Color>("Dark Red", new Color(139, 0, 0, 1)), | |
new KeyValuePair<string, Color>("Dark Salmon", new Color(233, 150, 122, 1)), | |
new KeyValuePair<string, Color>("Dark Sea Green", new Color(143, 188, 143, 1)), | |
new KeyValuePair<string, Color>("Dark Slate Blue", new Color(72, 61, 139, 1)), | |
new KeyValuePair<string, Color>("Dark Slate Gray", new Color(47, 79, 79, 1)), | |
new KeyValuePair<string, Color>("Dark Turquoise", new Color(0, 206, 209, 1)), | |
new KeyValuePair<string, Color>("Dark Violet", new Color(148, 0, 211, 1)), | |
new KeyValuePair<string, Color>("Deep Pink", new Color(255, 20, 147, 1)), | |
new KeyValuePair<string, Color>("Deep Sky Blue", new Color(0, 191, 255, 1)), | |
new KeyValuePair<string, Color>("Dim Gray", new Color(105, 105, 105, 1)), | |
new KeyValuePair<string, Color>("Dodger Blue", new Color(30, 144, 255, 1)), | |
new KeyValuePair<string, Color>("FireBrick", new Color(178, 34, 34, 1)), | |
new KeyValuePair<string, Color>("Floral White", new Color(255, 250, 240, 1)), | |
new KeyValuePair<string, Color>("Forest Green", new Color(34, 139, 34, 1)), | |
new KeyValuePair<string, Color>("Fuchsia", new Color(255, 0, 255, 1)), | |
new KeyValuePair<string, Color>("Gainsboro", new Color(220, 220, 220, 1)), | |
new KeyValuePair<string, Color>("Ghost White", new Color(248, 248, 255, 1)), | |
new KeyValuePair<string, Color>("Gold", new Color(255, 215, 0, 1)), | |
new KeyValuePair<string, Color>("GoldenRod", new Color(218, 165, 32, 1)), | |
new KeyValuePair<string, Color>("Gray", new Color(128, 128, 128, 1)), | |
new KeyValuePair<string, Color>("Green", new Color(0, 128, 0, 1)), | |
new KeyValuePair<string, Color>("Green Yellow", new Color(173, 255, 47, 1)), | |
new KeyValuePair<string, Color>("Honeydew", new Color(240, 255, 240, 1)), | |
new KeyValuePair<string, Color>("Hot Pink", new Color(255, 105, 180, 1)), | |
new KeyValuePair<string, Color>("Indian Red", new Color(205, 92, 92, 1)), | |
new KeyValuePair<string, Color>("Indigo", new Color(75, 0, 130, 1)), | |
new KeyValuePair<string, Color>("Ivory", new Color(255, 255, 240, 1)), | |
new KeyValuePair<string, Color>("Khaki", new Color(240, 230, 140, 1)), | |
new KeyValuePair<string, Color>("Lavender", new Color(230, 230, 250, 1)), | |
new KeyValuePair<string, Color>("Lavender Blush", new Color(255, 240, 245, 1)), | |
new KeyValuePair<string, Color>("Lawn Green", new Color(124, 252, 0, 1)), | |
new KeyValuePair<string, Color>("Lemon Chiffon", new Color(255, 250, 205, 1)), | |
new KeyValuePair<string, Color>("Light Blue", new Color(173, 216, 230, 1)), | |
new KeyValuePair<string, Color>("Light Coral", new Color(240, 128, 128, 1)), | |
new KeyValuePair<string, Color>("Light Cyan", new Color(224, 255, 255, 1)), | |
new KeyValuePair<string, Color>("Light GoldenRod Yellow", new Color(250, 250, 210, 1)), | |
new KeyValuePair<string, Color>("Light Gray", new Color(211, 211, 211, 1)), | |
new KeyValuePair<string, Color>("Light Green", new Color(144, 238, 144, 1)), | |
new KeyValuePair<string, Color>("Light Pink", new Color(255, 182, 193, 1)), | |
new KeyValuePair<string, Color>("Light Salmon", new Color(255, 160, 122, 1)), | |
new KeyValuePair<string, Color>("Light SeaGreen", new Color(32, 178, 170, 1)), | |
new KeyValuePair<string, Color>("Light SkyBlue", new Color(135, 206, 250, 1)), | |
new KeyValuePair<string, Color>("Light SlateGray", new Color(119, 136, 153, 1)), | |
new KeyValuePair<string, Color>("Light SteelBlue", new Color(176, 196, 222, 1)), | |
new KeyValuePair<string, Color>("Light Yellow", new Color(255, 255, 224, 1)), | |
new KeyValuePair<string, Color>("Lime", new Color(0, 255, 0, 1)), | |
new KeyValuePair<string, Color>("Lime Green", new Color(50, 205, 50, 1)), | |
new KeyValuePair<string, Color>("Linen", new Color(250, 240, 230, 1)), | |
new KeyValuePair<string, Color>("Magenta", new Color(255, 0, 255, 1)), | |
new KeyValuePair<string, Color>("Maroon", new Color(128, 0, 0, 1)), | |
new KeyValuePair<string, Color>("Medium Aquamarine", new Color(102, 205, 170, 1)), | |
new KeyValuePair<string, Color>("Medium Blue", new Color(0, 0, 205, 1)), | |
new KeyValuePair<string, Color>("Medium Orchid", new Color(186, 85, 211, 1)), | |
new KeyValuePair<string, Color>("Medium Purple", new Color(147, 112, 219, 1)), | |
new KeyValuePair<string, Color>("Medium SeaGreen", new Color(60, 179, 113, 1)), | |
new KeyValuePair<string, Color>("Medium SlateBlue", new Color(123, 104, 238, 1)), | |
new KeyValuePair<string, Color>("Medium SpringGreen", new Color(0, 250, 154, 1)), | |
new KeyValuePair<string, Color>("Medium Turquoise", new Color(72, 209, 204, 1)), | |
new KeyValuePair<string, Color>("Medium VioletRed", new Color(199, 21, 133, 1)), | |
new KeyValuePair<string, Color>("Midnight Blue", new Color(25, 25, 112, 1)), | |
new KeyValuePair<string, Color>("Mint Cream", new Color(245, 255, 250, 1)), | |
new KeyValuePair<string, Color>("Misty Rose", new Color(255, 228, 225, 1)), | |
new KeyValuePair<string, Color>("Moccasin", new Color(255, 228, 181, 1)), | |
new KeyValuePair<string, Color>("Navajo White", new Color(255, 222, 173, 1)), | |
new KeyValuePair<string, Color>("Navy", new Color(0, 0, 128, 1)), | |
new KeyValuePair<string, Color>("Old Lace", new Color(253, 245, 230, 1)), | |
new KeyValuePair<string, Color>("Olive", new Color(128, 128, 0, 1)), | |
new KeyValuePair<string, Color>("Olive Drab", new Color(107, 142, 35, 1)), | |
new KeyValuePair<string, Color>("Orange", new Color(255, 165, 0, 1)), | |
new KeyValuePair<string, Color>("Orange Red", new Color(255, 69, 0, 1)), | |
new KeyValuePair<string, Color>("Orchid", new Color(218, 112, 214, 1)), | |
new KeyValuePair<string, Color>("Pale GoldenRod", new Color(238, 232, 170, 1)), | |
new KeyValuePair<string, Color>("Pale Green", new Color(152, 251, 152, 1)), | |
new KeyValuePair<string, Color>("Pale Turquoise", new Color(175, 238, 238, 1)), | |
new KeyValuePair<string, Color>("Pale Violet Red", new Color(219, 112, 147, 1)), | |
new KeyValuePair<string, Color>("Papaya Whip", new Color(255, 239, 213, 1)), | |
new KeyValuePair<string, Color>("Peach Puff", new Color(255, 218, 185, 1)), | |
new KeyValuePair<string, Color>("Peru", new Color(205, 133, 63, 1)), | |
new KeyValuePair<string, Color>("Pink", new Color(255, 192, 203, 1)), | |
new KeyValuePair<string, Color>("Plum", new Color(221, 160, 221, 1)), | |
new KeyValuePair<string, Color>("Powder Blue", new Color(176, 224, 230, 1)), | |
new KeyValuePair<string, Color>("Purple", new Color(128, 0, 128, 1)), | |
new KeyValuePair<string, Color>("Red", new Color(255, 0, 0, 1)), | |
new KeyValuePair<string, Color>("Rosy Brown", new Color(188, 143, 143, 1)), | |
new KeyValuePair<string, Color>("Royal Blue", new Color(65, 105, 225, 1)), | |
new KeyValuePair<string, Color>("Saddle Brown", new Color(139, 69, 19, 1)), | |
new KeyValuePair<string, Color>("Salmon", new Color(250, 128, 114, 1)), | |
new KeyValuePair<string, Color>("Sandy Brown", new Color(244, 164, 96, 1)), | |
new KeyValuePair<string, Color>("Sea Green", new Color(46, 139, 87, 1)), | |
new KeyValuePair<string, Color>("Sea Shell", new Color(255, 245, 238, 1)), | |
new KeyValuePair<string, Color>("Sienna", new Color(160, 82, 45, 1)), | |
new KeyValuePair<string, Color>("Silver", new Color(192, 192, 192, 1)), | |
new KeyValuePair<string, Color>("Sky Blue", new Color(135, 206, 235, 1)), | |
new KeyValuePair<string, Color>("Slate Blue", new Color(106, 90, 205, 1)), | |
new KeyValuePair<string, Color>("Slate Gray", new Color(112, 128, 144, 1)), | |
new KeyValuePair<string, Color>("Snow", new Color(255, 250, 250, 1)), | |
new KeyValuePair<string, Color>("Spring Green", new Color(0, 255, 127, 1)), | |
new KeyValuePair<string, Color>("Steel Blue", new Color(70, 130, 180, 1)), | |
new KeyValuePair<string, Color>("Tan", new Color(210, 180, 140, 1)), | |
new KeyValuePair<string, Color>("Teal", new Color(0, 128, 128, 1)), | |
new KeyValuePair<string, Color>("Thistle", new Color(216, 191, 216, 1)), | |
new KeyValuePair<string, Color>("Tomato", new Color(255, 99, 71, 1)), | |
new KeyValuePair<string, Color>("Transparent", new Color(0, 0, 0, 0)), | |
new KeyValuePair<string, Color>("Turquoise", new Color(64, 224, 208, 1)), | |
new KeyValuePair<string, Color>("Violet", new Color(238, 130, 238, 1)), | |
new KeyValuePair<string, Color>("Wheat", new Color(245, 222, 179, 1)), | |
new KeyValuePair<string, Color>("White", new Color(255, 255, 255, 1)), | |
new KeyValuePair<string, Color>("White Smoke", new Color(245, 245, 245, 1)), | |
new KeyValuePair<string, Color>("Yellow", new Color(255, 255, 0, 1)), | |
new KeyValuePair<string, Color>("Yellow Green", new Color(154, 205, 50, 1)), | |
}; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment