UNPKG

@libgranite/contrast-color

Version:
47 lines (39 loc) 1.07 kB
/** * 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); }