You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

77 lines
2.0 KiB

7 months ago
/* exported makeColor */
7 months ago
7 months ago
function makeColor({r=0, g=0, b=0, a=255}) {
const color = {};
color.r = r;
color.g = g;
color.b = b;
color.a = a;
7 months ago
7 months ago
color.fromRgbaArray = function({rgbaArray}) {
color.r = rgbaArray[0];
color.g = rgbaArray[1];
color.b = rgbaArray[2];
color.a = rgbaArray[3];
return color;
7 months ago
}
7 months ago
color.toRgbaArray = function() {
return [color.r, color.g, color.b, color.a];
7 months ago
}
7 months ago
color.fromRgbaString = function({rgbaString}) {
color.r = rgbaString.split(',')[0].split('(')[1];
color.g = rgbaString.split(',')[1];
color.b = rgbaString.split(',')[2];
color.a = rgbaString.split(',')[3].split(')')[0];
return color;
7 months ago
}
7 months ago
color.toRgbaString = function() {
return `rgba(${color.r},${color.g},${color.b},${color.a})`;
7 months ago
}
7 months ago
color.fromRgbString = function(rgbString) {
color.r = rgbString.split(',')[0].split('(')[1];
color.g = rgbString.split(',')[1];
color.b = rgbString.split(',')[2].split(')')[0];
color.a = 255;
return color;
7 months ago
}
7 months ago
color.toRgbString = function() {
return `rgb(${color.r},${color.g},${color.b})`;
7 months ago
}
7 months ago
color.matchRgbArray = function({rgbArray, tolerance = 2}) {
const color1RgbArray = color.toRgbArray();
const color2RgbArray = rgbArray;
return Math.abs(color1RgbArray[0] - color2RgbArray[0]) <= tolerance &&
7 months ago
Math.abs(color1RgbArray[1] - color2RgbArray[1]) <= tolerance &&
Math.abs(color1RgbArray[2] - color2RgbArray[2]) <= tolerance;
}
7 months ago
color.matchColor = function({color}) {
return color.matchRgbArray({rgbArray: color.toRgbArray()});
7 months ago
}
7 months ago
color.mixxRgbArray = function({rgbArray, t}) {
const color1RgbArray = color.toRgbArray();
7 months ago
const color2RgbArray = rgbArray;
var color3RgbArray;
7 months ago
if (color.matchRgbArray({rgbArray: color2RgbArray})) {
7 months ago
color3RgbArray = color2RgbArray;
} else {
7 months ago
color3RgbArray = mixbox.lerp(color1RgbArray, color2RgbArray, t);
7 months ago
}
7 months ago
return color.fromRgbArray(color3RgbArray);
7 months ago
}
7 months ago
color.mixxColor = function({color, t}) {
color.mixxRgbArray({rgbArray: color.toRgbArray(), t});
7 months ago
}
}