UNPKG

@thi.ng/color

Version:

Array-based color types, CSS parsing, conversions, transformations, declarative theme generation, gradients, presets

37 lines (36 loc) 983 B
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 };