@thi.ng/color
Version:
Array-based color types, CSS parsing, conversions, transformations, declarative theme generation, gradients, presets
37 lines (36 loc) • 983 B
JavaScript
import { tween } from "@thi.ng/transducers/tween";
import { setS4 } from "@thi.ng/vectors/sets";
import { intArgb32Abgr32 } from "./int/int-int.js";
import { argb32 } from "./int/int.js";
import { mix as $mix } from "./mix.js";
function multiColorGradient(opts, isABGR) {
const cols = [...__gradient(opts)];
if (isABGR === void 0) return cols;
const rgba = cols.map((x) => argb32(x)[0]);
return isABGR ? rgba.map(intArgb32Abgr32) : rgba;
}
const multiColorGradientBuffer = (opts, buffer = [], offset = 0, cstride = 1, estride = 4) => {
for (const col of __gradient(opts)) {
setS4(buffer, col, offset, 0, cstride);
offset += estride;
}
return buffer;
};
const __gradient = ({
num,
stops,
easing,
mix
}) => tween({
num: num - 1,
stops,
easing,
min: 0,
max: 1,
init: (a, b) => [a, b],
mix: mix ? ([a, b], t) => mix(a.empty(), a, b, t) : ([a, b], t) => $mix(a.empty(), a, b, t)
});
export {
multiColorGradient,
multiColorGradientBuffer
};