diff options
Diffstat (limited to 'modules/colorlib.js')
-rw-r--r-- | modules/colorlib.js | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/modules/colorlib.js b/modules/colorlib.js new file mode 100644 index 0000000..ec99d00 --- /dev/null +++ b/modules/colorlib.js @@ -0,0 +1,78 @@ +/* + * MIT License + * + * Copyright (c) 2022- Minteck + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + +/** + * 0 = black + * 1 = white + * 2 = gray + * 3 = red + * 4 = orange + * 5 = yellow + * 6 = green + * 7 = blue + * 8 = purple + * 9 = pink + * 10 = brown + */ + +const Color = require('color'); + +module.exports = (hex, debug) => { + const color = Color(hex); + + const h = color.hsl().color[0]; + const s = color.hsl().color[1]; + const l = color.hsl().color[2]; + + if (s < 20) { // Consider it's grayscale + if (l >= 75) { + return debug ? "white" : 1; // white + } else if (l >= 15) { + return debug ? "gray" : 2; // gray + } else { + return debug ? "black" : 0; // black + } + } else { // Consider it's a color + if (h <= 10 || h > 340) { + return debug ? "red" : 3; // red + } else if (h > 10 && h <= 40) { + if (l > 65) { + return debug ? "orange" : 4; // orange + } else { + return debug ? "brown" : 10; // brown + } + } else if (h > 40 && h <= 67) { + return debug ? "yellow" : 5; // yellow + } else if (h > 67 && h <= 158) { + return debug ? "green" : 6; // green + } else if (h > 158 && h <= 253) { + return debug ? "blue" : 7; // blue + } else if (h > 253 && h <= 289) { + return debug ? "purple" : 8; // purple + } else if (h > 289 && h <= 340) { + return debug ? "pink" : 9; // pink + } + } +}
\ No newline at end of file |