UNPKG

@chayns/colors

Version:

JavaScript utility functions for the calculation of colors for chayns

60 lines (47 loc) 1.63 kB
import { checkTransparency, hexToRgb255, rgb255ToHex, rgb1ToHsv, rgb1ToHsl, hslToRgb1, hsvToRgb1 } from '../converter'; import roundValues from '../utils/roundValues'; function mixRgb(color1, color2) { var weightPercent = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 100; var weight = weightPercent / 100; var weightColor2 = 1 - weight; var r = weight * color1.r + weightColor2 * color2.r; var g = weight * color1.g + weightColor2 * color2.g; var b = weight * color1.b + weightColor2 * color2.b; var a; if ('a' in color1 || 'a' in color2) { a = weight * ('a' in color1 ? color1.a : 0) + weightColor2 * ('a' in color2 ? color2.a : 0); } var color = checkTransparency({ r: r, g: g, b: b, a: a }); return roundValues(color); } function mixHex(color1, color2, weight) { var color1Rgb255 = hexToRgb255(color1); var color2Rgb255 = hexToRgb255(color2); if (!color1Rgb255 || !color2Rgb255) { return null; } return rgb255ToHex(mixRgb(color1Rgb255, color2Rgb255, weight)); } function mixHsv(color1, color2, weight) { var color1Rgb255 = hsvToRgb1(color1); var color2Rgb255 = hsvToRgb1(color2); if (!color1Rgb255 || !color2Rgb255) { return null; } return rgb1ToHsv(mixRgb(color1Rgb255, color2Rgb255, weight)); } function mixHsl(color1, color2, weight) { var color1Rgb255 = hslToRgb1(color1); var color2Rgb255 = hslToRgb1(color2); if (!color1Rgb255 || !color2Rgb255) { return null; } return rgb1ToHsl(mixRgb(color1Rgb255, color2Rgb255, weight)); } export { mixRgb, mixHex, mixHsl, mixHsv }; //# sourceMappingURL=mix.js.map