blob: 289c7c4dd3a480ccc883b7adab0e89232683e916 [file] [log] [blame]
/**
* helper functions for color conversions
*
*/
function componentToHex(c: number): string {
c = Math.round(c);
const hex = c.toString(16);
return hex.length === 1 ? `0${hex}` : hex;
}
function rgbToHex(r: number, g: number, b: number): string {
return `#${componentToHex(r)}${componentToHex(g)}${componentToHex(b)}`;
}
function hexToRgb(hex: string): number[] {
const result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
return result
? [parseInt(result[1], 16), parseInt(result[2], 16), parseInt(result[3], 16)]
: [0, 0, 0];
}
function hexToColor(value: string): number[] {
const rgb = hexToRgb(value);
return [rgb[0] / 255, rgb[1] / 255, rgb[2] / 255];
}
function colorToHex(color: number[]): string {
if (color.length > 2) {
return rgbToHex(color[0] * 255, color[1] * 255, color[2] * 255);
}
return '#FF0000';
}
export { hexToColor, colorToHex };