@chayns/colors
Version:
JavaScript utility functions for the calculation of colors for chayns
60 lines (47 loc) • 1.63 kB
JavaScript
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