commit
6945ba8a9d
1 changed files with 443 additions and 0 deletions
443
src/utils/colorutil.ts
Normal file
443
src/utils/colorutil.ts
Normal file
|
@ -0,0 +1,443 @@
|
|||
export interface Colors {
|
||||
|
||||
// Custom list
|
||||
DEFAULT: number;
|
||||
WHITE: number;
|
||||
AQUA: number;
|
||||
GREEN: number;
|
||||
BLUE: number;
|
||||
YELLOW: number;
|
||||
PURPLE: number;
|
||||
LUMINOUS_VIVID_PINK: number;
|
||||
GOLD: number;
|
||||
ORANGE: number;
|
||||
RED: number;
|
||||
GREY: number;
|
||||
NAVY: number;
|
||||
DARK_AQUA: number;
|
||||
DARK_GREEN: number;
|
||||
DARK_BLUE: number;
|
||||
DARK_PURPLE: number;
|
||||
DARK_VIVID_PINK: number;
|
||||
DARK_GOLD: number;
|
||||
DARK_ORANGE: number;
|
||||
DARK_RED: number;
|
||||
DARK_GREY: number;
|
||||
DARKER_GREY: number;
|
||||
LIGHT_GREY: number;
|
||||
DARK_NAVY: number;
|
||||
BLURPLE: number;
|
||||
DARK_BLURPLE: number;
|
||||
GREYPLE: number;
|
||||
DARK_BUT_NOT_BLACK: number;
|
||||
NOT_QUITE_BLACK: number;
|
||||
|
||||
// css color list
|
||||
aliceblue: number;
|
||||
antiquewhite: number;
|
||||
aqua: number;
|
||||
aquamarine: number;
|
||||
azure: number;
|
||||
beige: number;
|
||||
bisque: number;
|
||||
black: number;
|
||||
blanchedalmond: number;
|
||||
blue: number;
|
||||
blueviolet: number;
|
||||
brown: number;
|
||||
burlywood: number;
|
||||
cadetblue: number;
|
||||
chartreuse: number;
|
||||
chocolate: number;
|
||||
coral: number;
|
||||
cornflowerblue: number;
|
||||
cornsilk: number;
|
||||
crimson: number;
|
||||
cyan: number;
|
||||
darkblue: number;
|
||||
darkcyan: number;
|
||||
darkgoldenrod: number;
|
||||
darkgray: number;
|
||||
darkgreen: number;
|
||||
darkgrey: number;
|
||||
darkkhaki: number;
|
||||
darkmagenta: number;
|
||||
darkolivegreen: number;
|
||||
darkorange: number;
|
||||
darkorchid: number;
|
||||
darkred: number;
|
||||
darksalmon: number;
|
||||
darkseagreen: number;
|
||||
darkslateblue: number;
|
||||
darkslategray: number;
|
||||
darkslategrey: number;
|
||||
darkturquoise: number;
|
||||
darkviolet: number;
|
||||
deeppink: number;
|
||||
deepskyblue: number;
|
||||
dimgray: number;
|
||||
dimgrey: number;
|
||||
dodgerblue: number;
|
||||
firebrick: number;
|
||||
floralwhite: number;
|
||||
forestgreen: number;
|
||||
fuchsia: number;
|
||||
gainsboro: number;
|
||||
ghostwhite: number;
|
||||
goldenrod: number;
|
||||
gold: number;
|
||||
gray: number;
|
||||
green: number;
|
||||
greenyellow: number;
|
||||
grey: number;
|
||||
honeydew: number;
|
||||
hotpink: number;
|
||||
indianred: number;
|
||||
indigo: number;
|
||||
ivory: number;
|
||||
khaki: number;
|
||||
lavenderblush: number;
|
||||
lavender: number;
|
||||
lawngreen: number;
|
||||
lemonchiffon: number;
|
||||
lightblue: number;
|
||||
lightcoral: number;
|
||||
lightcyan: number;
|
||||
lightgoldenrodyellow: number;
|
||||
lightgray: number;
|
||||
lightgreen: number;
|
||||
lightgrey: number;
|
||||
lightpink: number;
|
||||
lightsalmon: number;
|
||||
lightseagreen: number;
|
||||
lightskyblue: number;
|
||||
lightslategray: number;
|
||||
lightslategrey: number;
|
||||
lightsteelblue: number;
|
||||
lightyellow: number;
|
||||
lime: number;
|
||||
limegreen: number;
|
||||
linen: number;
|
||||
magenta: number;
|
||||
maroon: number;
|
||||
mediumaquamarine: number;
|
||||
mediumblue: number;
|
||||
mediumorchid: number;
|
||||
mediumpurple: number;
|
||||
mediumseagreen: number;
|
||||
mediumslateblue: number;
|
||||
mediumspringgreen: number;
|
||||
mediumturquoise: number;
|
||||
mediumvioletred: number;
|
||||
midnightblue: number;
|
||||
mintcream: number;
|
||||
mistyrose: number;
|
||||
moccasin: number;
|
||||
navajowhite: number;
|
||||
navy: number;
|
||||
oldlace: number;
|
||||
olive: number;
|
||||
olivedrab: number;
|
||||
orange: number;
|
||||
orangered: number;
|
||||
orchid: number;
|
||||
palegoldenrod: number;
|
||||
palegreen: number;
|
||||
paleturquoise: number;
|
||||
palevioletred: number;
|
||||
papayawhip: number;
|
||||
peachpuff: number;
|
||||
peru: number;
|
||||
pink: number;
|
||||
plum: number;
|
||||
powderblue: number;
|
||||
purple: number;
|
||||
rebeccapurple: number;
|
||||
red: number;
|
||||
rosybrown: number;
|
||||
royalblue: number;
|
||||
saddlebrown: number;
|
||||
salmon: number;
|
||||
sandybrown: number;
|
||||
seagreen: number;
|
||||
seashell: number;
|
||||
sienna: number;
|
||||
silver: number;
|
||||
skyblue: number;
|
||||
slateblue: number;
|
||||
slategray: number;
|
||||
slategrey: number;
|
||||
snow: number;
|
||||
springgreen: number;
|
||||
steelblue: number;
|
||||
tan: number;
|
||||
teal: number;
|
||||
thistle: number;
|
||||
tomato: number;
|
||||
turquoise: number;
|
||||
violet: number;
|
||||
wheat: number;
|
||||
white: number;
|
||||
whitesmoke: number;
|
||||
yellow: number;
|
||||
yellowgreen: number
|
||||
|
||||
}
|
||||
|
||||
// eslint-disable-next-line
|
||||
export class ColorUtil {
|
||||
constructor() {
|
||||
throw new Error(`The ${this.constructor.name} class may not be instantiated!`)
|
||||
}
|
||||
|
||||
/**
|
||||
* Encodes color int into hex code
|
||||
* @param color The color as int
|
||||
*/
|
||||
static intToHex(color: number): string {
|
||||
if (!ColorUtil.validateColor(color)) throw new Error('Invalid color')
|
||||
return `#${color.toString(16)}`
|
||||
}
|
||||
|
||||
/**
|
||||
* Validates hex color
|
||||
* @param color The color to validate
|
||||
*/
|
||||
static validateColor(color: number): boolean {
|
||||
if (color < 0 || color > 0xffffff) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Resolves RGB color array
|
||||
* @param color RGB color array
|
||||
*/
|
||||
static resolveRGB(color: [number, number, number]): number {
|
||||
return (color[0] << 16) + (color[1] << 8) + color[2]
|
||||
}
|
||||
|
||||
/**
|
||||
* Resolves hex code
|
||||
* @param hexcode The hex code
|
||||
*/
|
||||
static resolveHex(hexcode: string): number {
|
||||
if (!ColorUtil.isHex(hexcode)) throw new Error('Invalid hex code')
|
||||
return parseInt(hexcode.replace('#', ''), 16)
|
||||
}
|
||||
|
||||
/**
|
||||
* Validates hex code
|
||||
* @param hexcode The hex code
|
||||
*/
|
||||
static isHex(hexcode: string): boolean {
|
||||
return /^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/.test(hexcode)
|
||||
}
|
||||
|
||||
/** Returns random hex code */
|
||||
static randomHex(): string {
|
||||
const code = `#${Math.floor(Math.random() * (0xffffff + 1)).toString(16)}`
|
||||
if (!ColorUtil.isHex(code)) return '#000000'
|
||||
return code
|
||||
}
|
||||
|
||||
/**
|
||||
* Resolves color by name
|
||||
* @param color The color name
|
||||
*/
|
||||
static resolveColor(color?: keyof Colors | 'RANDOM'): number {
|
||||
if (!color) return 0 // eslint-disable-line
|
||||
if (color === 'RANDOM') return Math.floor(Math.random() * (0xffffff + 1))
|
||||
return ColorUtil.colorList[color]
|
||||
}
|
||||
|
||||
/** Color list */
|
||||
static get colorList(): Colors {
|
||||
return {
|
||||
// custom list
|
||||
DEFAULT: 0x000000,
|
||||
WHITE: 0xffffff,
|
||||
AQUA: 0x1abc9c,
|
||||
GREEN: 0x2ecc71,
|
||||
BLUE: 0x3498db,
|
||||
YELLOW: 0xffff00,
|
||||
PURPLE: 0x9b59b6,
|
||||
LUMINOUS_VIVID_PINK: 0xe91e63,
|
||||
GOLD: 0xf1c40f,
|
||||
ORANGE: 0xe67e22,
|
||||
RED: 0xe74c3c,
|
||||
GREY: 0x95a5a6,
|
||||
NAVY: 0x34495e,
|
||||
DARK_AQUA: 0x11806a,
|
||||
DARK_GREEN: 0x1f8b4c,
|
||||
DARK_BLUE: 0x206694,
|
||||
DARK_PURPLE: 0x71368a,
|
||||
DARK_VIVID_PINK: 0xad1457,
|
||||
DARK_GOLD: 0xc27c0e,
|
||||
DARK_ORANGE: 0xa84300,
|
||||
DARK_RED: 0x992d22,
|
||||
DARK_GREY: 0x979c9f,
|
||||
DARKER_GREY: 0x7f8c8d,
|
||||
LIGHT_GREY: 0xbcc0c0,
|
||||
DARK_NAVY: 0x2c3e50,
|
||||
BLURPLE: 0x7289da,
|
||||
DARK_BLURPLE: 0x4d5e94,
|
||||
GREYPLE: 0x99aab5,
|
||||
DARK_BUT_NOT_BLACK: 0x2c2f33,
|
||||
NOT_QUITE_BLACK: 0x23272a,
|
||||
|
||||
// css color list
|
||||
aliceblue: 0xf0f8ff,
|
||||
antiquewhite: 0xfaebd7,
|
||||
aqua: 0x00ffff,
|
||||
aquamarine: 0x7fffd4,
|
||||
azure: 0xf0ffff,
|
||||
beige: 0xf5f5dc,
|
||||
bisque: 0xffe4c4,
|
||||
black: 0x000000,
|
||||
blanchedalmond: 0xffebcd,
|
||||
blue: 0x0000ff,
|
||||
blueviolet: 0x8a2be2,
|
||||
brown: 0xa52a2a,
|
||||
burlywood: 0xdeb887,
|
||||
cadetblue: 0x5f9ea0,
|
||||
chartreuse: 0x7fff00,
|
||||
chocolate: 0xd2691e,
|
||||
coral: 0xff7f50,
|
||||
cornflowerblue: 0x6495ed,
|
||||
cornsilk: 0xfff8dc,
|
||||
crimson: 0xdc143c,
|
||||
cyan: 0x00ffff,
|
||||
darkblue: 0x00008b,
|
||||
darkcyan: 0x008b8b,
|
||||
darkgoldenrod: 0xb8860b,
|
||||
darkgray: 0xa9a9a9,
|
||||
darkgreen: 0x006400,
|
||||
darkgrey: 0xa9a9a9,
|
||||
darkkhaki: 0xbdb76b,
|
||||
darkmagenta: 0x8b008b,
|
||||
darkolivegreen: 0x556b2f,
|
||||
darkorange: 0xff8c00,
|
||||
darkorchid: 0x9932cc,
|
||||
darkred: 0x8b0000,
|
||||
darksalmon: 0xe9967a,
|
||||
darkseagreen: 0x8fbc8f,
|
||||
darkslateblue: 0x483d8b,
|
||||
darkslategray: 0x2f4f4f,
|
||||
darkslategrey: 0x2f4f4f,
|
||||
darkturquoise: 0x00ced1,
|
||||
darkviolet: 0x9400d3,
|
||||
deeppink: 0xff1493,
|
||||
deepskyblue: 0x00bfff,
|
||||
dimgray: 0x696969,
|
||||
dimgrey: 0x696969,
|
||||
dodgerblue: 0x1e90ff,
|
||||
firebrick: 0xb22222,
|
||||
floralwhite: 0xfffaf0,
|
||||
forestgreen: 0x228b22,
|
||||
fuchsia: 0xff00ff,
|
||||
gainsboro: 0xdcdcdc,
|
||||
ghostwhite: 0xf8f8ff,
|
||||
goldenrod: 0xdaa520,
|
||||
gold: 0xffd700,
|
||||
gray: 0x808080,
|
||||
green: 0x008000,
|
||||
greenyellow: 0xadff2f,
|
||||
grey: 0x808080,
|
||||
honeydew: 0xf0fff0,
|
||||
hotpink: 0xff69b4,
|
||||
indianred: 0xcd5c5c,
|
||||
indigo: 0x4b0082,
|
||||
ivory: 0xfffff0,
|
||||
khaki: 0xf0e68c,
|
||||
lavenderblush: 0xfff0f5,
|
||||
lavender: 0xe6e6fa,
|
||||
lawngreen: 0x7cfc00,
|
||||
lemonchiffon: 0xfffacd,
|
||||
lightblue: 0xadd8e6,
|
||||
lightcoral: 0xf08080,
|
||||
lightcyan: 0xe0ffff,
|
||||
lightgoldenrodyellow: 0xfafad2,
|
||||
lightgray: 0xd3d3d3,
|
||||
lightgreen: 0x90ee90,
|
||||
lightgrey: 0xd3d3d3,
|
||||
lightpink: 0xffb6c1,
|
||||
lightsalmon: 0xffa07a,
|
||||
lightseagreen: 0x20b2aa,
|
||||
lightskyblue: 0x87cefa,
|
||||
lightslategray: 0x778899,
|
||||
lightslategrey: 0x778899,
|
||||
lightsteelblue: 0xb0c4de,
|
||||
lightyellow: 0xffffe0,
|
||||
lime: 0x00ff00,
|
||||
limegreen: 0x32cd32,
|
||||
linen: 0xfaf0e6,
|
||||
magenta: 0xff00ff,
|
||||
maroon: 0x800000,
|
||||
mediumaquamarine: 0x66cdaa,
|
||||
mediumblue: 0x0000cd,
|
||||
mediumorchid: 0xba55d3,
|
||||
mediumpurple: 0x9370db,
|
||||
mediumseagreen: 0x3cb371,
|
||||
mediumslateblue: 0x7b68ee,
|
||||
mediumspringgreen: 0x00fa9a,
|
||||
mediumturquoise: 0x48d1cc,
|
||||
mediumvioletred: 0xc71585,
|
||||
midnightblue: 0x191970,
|
||||
mintcream: 0xf5fffa,
|
||||
mistyrose: 0xffe4e1,
|
||||
moccasin: 0xffe4b5,
|
||||
navajowhite: 0xffdead,
|
||||
navy: 0x000080,
|
||||
oldlace: 0xfdf5e6,
|
||||
olive: 0x808000,
|
||||
olivedrab: 0x6b8e23,
|
||||
orange: 0xffa500,
|
||||
orangered: 0xff4500,
|
||||
orchid: 0xda70d6,
|
||||
palegoldenrod: 0xeee8aa,
|
||||
palegreen: 0x98fb98,
|
||||
paleturquoise: 0xafeeee,
|
||||
palevioletred: 0xdb7093,
|
||||
papayawhip: 0xffefd5,
|
||||
peachpuff: 0xffdab9,
|
||||
peru: 0xcd853f,
|
||||
pink: 0xffc0cb,
|
||||
plum: 0xdda0dd,
|
||||
powderblue: 0xb0e0e6,
|
||||
purple: 0x800080,
|
||||
rebeccapurple: 0x663399,
|
||||
red: 0xff0000,
|
||||
rosybrown: 0xbc8f8f,
|
||||
royalblue: 0x4169e1,
|
||||
saddlebrown: 0x8b4513,
|
||||
salmon: 0xfa8072,
|
||||
sandybrown: 0xf4a460,
|
||||
seagreen: 0x2e8b57,
|
||||
seashell: 0xfff5ee,
|
||||
sienna: 0xa0522d,
|
||||
silver: 0xc0c0c0,
|
||||
skyblue: 0x87ceeb,
|
||||
slateblue: 0x6a5acd,
|
||||
slategray: 0x708090,
|
||||
slategrey: 0x708090,
|
||||
snow: 0xfffafa,
|
||||
springgreen: 0x00ff7f,
|
||||
steelblue: 0x4682b4,
|
||||
tan: 0xd2b48c,
|
||||
teal: 0x008080,
|
||||
thistle: 0xd8bfd8,
|
||||
tomato: 0xff6347,
|
||||
turquoise: 0x40e0d0,
|
||||
violet: 0xee82ee,
|
||||
wheat: 0xf5deb3,
|
||||
white: 0xffffff,
|
||||
whitesmoke: 0xf5f5f5,
|
||||
yellow: 0xffff00,
|
||||
yellowgreen: 0x9acd32
|
||||
}
|
||||
}
|
||||
|
||||
static toJSON(): Colors {
|
||||
return ColorUtil.colorList
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue