Skip to content

Instantly share code, notes, and snippets.

@rjindael
Last active August 11, 2021 01:45
Show Gist options
  • Save rjindael/76e1f822de97c9384ce54d0b18694dbf to your computer and use it in GitHub Desktop.
Save rjindael/76e1f822de97c9384ce54d0b18694dbf to your computer and use it in GitHub Desktop.
var basePalette = [
{ "r": 107, "g": 50, "b": 124 },
{ "r": 218, "g": 133, "b": 65 },
{ "r": 245, "g": 205, "b": 48 },
{ "r": 232, "g": 186, "b": 200 },
{ "r": 215, "g": 197, "b": 154 }
]
var modernPalette = [
{ "r": 253, "g": 41, "b": 67 },
{ "r": 1, "g": 162, "b": 255 },
{ "r": 2, "g": 184, "b": 87 },
... basePalette
]
var oldPalette = [
{ "r": 196, "g": 40, "b": 28 },
{ "r": 13, "g": 105, "b": 172 },
{ "r": 39, "g": 70, "b": 45 },
... basePalette
]
function mod(a, b) {
return (a - Math.floor(a / b) * b)
}
function computeNameColor(name, modernColors = true) {
let palette = (modernColors ? modernPalette : oldPalette)
let val = 0
for (let i = 0; i < name.length; i++) {
let cv = name.charCodeAt(i)
let ri = name.length - i
if (mod(name.length, 2) == 1) {
ri--
}
if (mod(ri, 4) >= 2) {
cv = -cv
}
val += cv
}
return palette[mod(val, palette.length)]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment