@chayns/colors
Version:
JavaScript utility functions for the calculation of colors for chayns
71 lines (55 loc) • 2 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.mixRgb = mixRgb;
exports.mixHex = mixHex;
exports.mixHsl = mixHsl;
exports.mixHsv = mixHsv;
var _converter = require("../converter");
var _roundValues = _interopRequireDefault(require("../utils/roundValues"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
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 = (0, _converter.checkTransparency)({
r: r,
g: g,
b: b,
a: a
});
return (0, _roundValues["default"])(color);
}
function mixHex(color1, color2, weight) {
var color1Rgb255 = (0, _converter.hexToRgb255)(color1);
var color2Rgb255 = (0, _converter.hexToRgb255)(color2);
if (!color1Rgb255 || !color2Rgb255) {
return null;
}
return (0, _converter.rgb255ToHex)(mixRgb(color1Rgb255, color2Rgb255, weight));
}
function mixHsv(color1, color2, weight) {
var color1Rgb255 = (0, _converter.hsvToRgb1)(color1);
var color2Rgb255 = (0, _converter.hsvToRgb1)(color2);
if (!color1Rgb255 || !color2Rgb255) {
return null;
}
return (0, _converter.rgb1ToHsv)(mixRgb(color1Rgb255, color2Rgb255, weight));
}
function mixHsl(color1, color2, weight) {
var color1Rgb255 = (0, _converter.hslToRgb1)(color1);
var color2Rgb255 = (0, _converter.hslToRgb1)(color2);
if (!color1Rgb255 || !color2Rgb255) {
return null;
}
return (0, _converter.rgb1ToHsl)(mixRgb(color1Rgb255, color2Rgb255, weight));
}
//# sourceMappingURL=mix.js.map