@libgranite/contrast-color
Version:
Contrast color calculator
47 lines (39 loc) • 1.07 kB
JavaScript
/**
* Granite Framework Contrast Color
*
* This package calculates the best color (white or black) to have the highest
* contrast against a specified color.
*/
function hex_to_rgb(color_hex) {
var buffer = new ArrayBuffer(4);
var data_view = new DataView(buffer);
data_view.setUint32(0,parseInt(color_hex, 16),false);
var color_bytes = new Uint8Array(buffer);
return {
red: color_bytes[0],
green: color_bytes[1],
blue: color_bytes[2]
};
}
function rgb_to_hex(red, green, blue) {
return "#" + (1 << 24 | red << 16 | green << 8 | blue).toString(16).slice(1);
}
export function get_contrast_color_rgb(color) {
var red = color.red;
red = red * red * .299;
var green = color.green;
green = green * green * .587;
var blue = color.blue;
blue = blue * blue * .114;
var luminance = red + blue + green;
if (luminance > 16900) {
return 'black';
}
else {
return 'white';
}
}
export function get_contrast_color_hex(color) {
var rgb_color = hex_to_rgb(color);
return get_contrast_color_rgb(rgb_color);
}