Skip to content

Instantly share code, notes, and snippets.

@zaydek-old
Created August 21, 2019 11:44
Show Gist options
  • Save zaydek-old/aebad993985cc57fd22c5c5e99d4251a to your computer and use it in GitHub Desktop.
Save zaydek-old/aebad993985cc57fd22c5c5e99d4251a to your computer and use it in GitHub Desktop.
// See github.com/google/closure-library/blob/master/closure/goog/color/color.js#L164
// for reference.
function hexToRgb(hexColor) {
// hexColor = goog.color.normalizeHex(hexColor);
var rgb = parseInt(hexColor.substr(1), 16);
var r = rgb >> 16;
var g = (rgb >> 8) & 255;
var b = rgb & 255;
return [r, g, b];
};
// See github.com/google/closure-library/blob/master/closure/goog/color/color.js#L215
// for reference.
function rgbToHsl(r, g, b) {
// First must normalize r, g, b to be between 0 and 1.
var normR = r / 255;
var normG = g / 255;
var normB = b / 255;
var max = Math.max(normR, normG, normB);
var min = Math.min(normR, normG, normB);
var h = 0;
var s = 0;
// Luminosity is the average of the max and min rgb color intensities.
var l = 0.5 * (max + min);
// The hue and saturation are dependent on which color intensity is the max.
// If max and min are equal, the color is gray and h and s should be 0.
if (max != min) {
if (max == normR) {
h = 60 * (normG - normB) / (max - min);
} else if (max == normG) {
h = 60 * (normB - normR) / (max - min) + 120;
} else if (max == normB) {
h = 60 * (normR - normG) / (max - min) + 240;
}
if (0 < l && l <= 0.5) {
s = (max - min) / (2 * l);
} else {
s = (max - min) / (2 - 2 * l);
}
}
// Make sure the hue falls between 0 and 360.
return [Math.round(h + 360) % 360, s, l];
};
function prettyInt(n) {
if (n < 10) {
return " " + n
} else if (n < 100) {
return " " + n
}
return "" + n
}
let ret = ""
function convert(hexColor) {
const [r, g, b] = hexToRgb(hexColor)
const [h, s, l] = rgbToHsl(r, g, b)
ret += `${prettyInt(h)}, ${(s * 1e2).toFixed(4)}, ${(l * 1e2).toFixed(4)}\n`
}
convert("#FFEBEE")
convert("#FFCDD2")
convert("#EF9A9A")
convert("#E57373")
convert("#EF5350")
convert("#F44336")
convert("#E53935")
convert("#D32F2F")
convert("#C62828")
convert("#B71C1C")
convert("#FF8A80")
convert("#FF5252")
convert("#FF1744")
convert("#D50000")
convert("#FCE4EC")
convert("#F8BBD0")
convert("#F48FB1")
convert("#F06292")
convert("#EC407A")
convert("#E91E63")
convert("#D81B60")
convert("#C2185B")
convert("#AD1457")
convert("#880E4F")
convert("#FF80AB")
convert("#FF4081")
convert("#F50057")
convert("#C51162")
convert("#F3E5F5")
convert("#E1BEE7")
convert("#CE93D8")
convert("#BA68C8")
convert("#AB47BC")
convert("#9C27B0")
convert("#8E24AA")
convert("#7B1FA2")
convert("#6A1B9A")
convert("#4A148C")
convert("#EA80FC")
convert("#E040FB")
convert("#D500F9")
convert("#AA00FF")
convert("#EDE7F6")
convert("#D1C4E9")
convert("#B39DDB")
convert("#9575CD")
convert("#7E57C2")
convert("#673AB7")
convert("#5E35B1")
convert("#512DA8")
convert("#4527A0")
convert("#311B92")
convert("#B388FF")
convert("#7C4DFF")
convert("#651FFF")
convert("#6200EA")
convert("#E8EAF6")
convert("#C5CAE9")
convert("#9FA8DA")
convert("#7986CB")
convert("#5C6BC0")
convert("#3F51B5")
convert("#3949AB")
convert("#303F9F")
convert("#283593")
convert("#1A237E")
convert("#8C9EFF")
convert("#536DFE")
convert("#3D5AFE")
convert("#304FFE")
convert("#E3F2FD")
convert("#BBDEFB")
convert("#90CAF9")
convert("#64B5F6")
convert("#42A5F5")
convert("#2196F3")
convert("#1E88E5")
convert("#1976D2")
convert("#1565C0")
convert("#0D47A1")
convert("#82B1FF")
convert("#448AFF")
convert("#2979FF")
convert("#2962FF")
convert("#E1F5FE")
convert("#B3E5FC")
convert("#81D4FA")
convert("#4FC3F7")
convert("#29B6F6")
convert("#03A9F4")
convert("#039BE5")
convert("#0288D1")
convert("#0277BD")
convert("#01579B")
convert("#80D8FF")
convert("#40C4FF")
convert("#00B0FF")
convert("#0091EA")
convert("#E0F7FA")
convert("#B2EBF2")
convert("#80DEEA")
convert("#4DD0E1")
convert("#26C6DA")
convert("#00BCD4")
convert("#00ACC1")
convert("#0097A7")
convert("#00838F")
convert("#006064")
convert("#84FFFF")
convert("#18FFFF")
convert("#00E5FF")
convert("#00B8D4")
convert("#E0F2F1")
convert("#B2DFDB")
convert("#80CBC4")
convert("#4DB6AC")
convert("#26A69A")
convert("#009688")
convert("#00897B")
convert("#00796B")
convert("#00695C")
convert("#004D40")
convert("#A7FFEB")
convert("#64FFDA")
convert("#1DE9B6")
convert("#00BFA5")
convert("#E8F5E9")
convert("#C8E6C9")
convert("#A5D6A7")
convert("#81C784")
convert("#66BB6A")
convert("#4CAF50")
convert("#43A047")
convert("#388E3C")
convert("#2E7D32")
convert("#1B5E20")
convert("#B9F6CA")
convert("#69F0AE")
convert("#00E676")
convert("#00C853")
convert("#F1F8E9")
convert("#DCEDC8")
convert("#C5E1A5")
convert("#AED581")
convert("#9CCC65")
convert("#8BC34A")
convert("#7CB342")
convert("#689F38")
convert("#558B2F")
convert("#33691E")
convert("#CCFF90")
convert("#B2FF59")
convert("#76FF03")
convert("#64DD17")
convert("#F9FBE7")
convert("#F0F4C3")
convert("#E6EE9C")
convert("#DCE775")
convert("#D4E157")
convert("#CDDC39")
convert("#C0CA33")
convert("#AFB42B")
convert("#9E9D24")
convert("#827717")
convert("#F4FF81")
convert("#EEFF41")
convert("#C6FF00")
convert("#AEEA00")
convert("#FFFDE7")
convert("#FFF9C4")
convert("#FFF59D")
convert("#FFF176")
convert("#FFEE58")
convert("#FFEB3B")
convert("#FDD835")
convert("#FBC02D")
convert("#F9A825")
convert("#F57F17")
convert("#FFFF8D")
convert("#FFFF00")
convert("#FFEA00")
convert("#FFD600")
convert("#FFF8E1")
convert("#FFECB3")
convert("#FFE082")
convert("#FFD54F")
convert("#FFCA28")
convert("#FFC107")
convert("#FFB300")
convert("#FFA000")
convert("#FF8F00")
convert("#FF6F00")
convert("#FFE57F")
convert("#FFD740")
convert("#FFC400")
convert("#FFAB00")
convert("#FFF3E0")
convert("#FFE0B2")
convert("#FFCC80")
convert("#FFB74D")
convert("#FFA726")
convert("#FF9800")
convert("#FB8C00")
convert("#F57C00")
convert("#EF6C00")
convert("#E65100")
convert("#FFD180")
convert("#FFAB40")
convert("#FF9100")
convert("#FF6D00")
convert("#FBE9E7")
convert("#FFCCBC")
convert("#FFAB91")
convert("#FF8A65")
convert("#FF7043")
convert("#FF5722")
convert("#F4511E")
convert("#E64A19")
convert("#D84315")
convert("#BF360C")
convert("#FF9E80")
convert("#FF6E40")
convert("#FF3D00")
convert("#DD2C00")
convert("#EFEBE9")
convert("#D7CCC8")
convert("#BCAAA4")
convert("#A1887F")
convert("#8D6E63")
convert("#795548")
convert("#6D4C41")
convert("#5D4037")
convert("#4E342E")
convert("#3E2723")
convert("#FAFAFA")
convert("#F5F5F5")
convert("#EEEEEE")
convert("#E0E0E0")
convert("#BDBDBD")
convert("#9E9E9E")
convert("#757575")
convert("#616161")
convert("#424242")
convert("#212121")
convert("#ECEFF1")
convert("#CFD8DC")
convert("#B0BEC5")
convert("#90A4AE")
convert("#78909C")
convert("#607D8B")
convert("#546E7A")
convert("#455A64")
convert("#37474F")
convert("#263238")
convert("#000000")
convert("#FFFFFF")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment