UNPKG

@thi.ng/color

Version:

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

47 lines (46 loc) 1.59 kB
import { clamp01 } from "@thi.ng/math/interval"; import { dotS3, dotS4 } from "@thi.ng/vectors/dots"; import { setC4 } from "@thi.ng/vectors/setc"; import { __ensureAlpha } from "./ensure.js"; const __mulV33 = (out, mat, src, clampOut = false) => { const x = dotS3(mat, src, 0, 0, 3); const y = dotS3(mat, src, 1, 0, 3); const z = dotS3(mat, src, 2, 0, 3); const a = __ensureAlpha(src[3]); return clampOut ? setC4(out || src, clamp01(x), clamp01(y), clamp01(z), a) : setC4(out || src, x, y, z, a); }; const __mulV45 = (out, mat, src, clampOut = true) => { out = setC4(out || src, src[0], src[1], src[2], __ensureAlpha(src[3])); const x = dotS4(out, mat, 0, 0) + mat[4]; const y = dotS4(out, mat, 0, 5) + mat[9]; const z = dotS4(out, mat, 0, 10) + mat[14]; const w = dotS4(out, mat, 0, 15) + mat[19]; return clampOut ? setC4(out, clamp01(x), clamp01(y), clamp01(z), clamp01(w)) : setC4(out, x, y, z, w); }; const __mulM45 = (a, b) => [ dotS4(b, a, 0, 0, 1, 5), dotS4(b, a, 0, 1, 1, 5), dotS4(b, a, 0, 2, 1, 5), dotS4(b, a, 0, 3, 1, 5), dotS4(b, a, 0, 4, 1, 5) + b[4], dotS4(b, a, 5, 0, 1, 5), dotS4(b, a, 5, 1, 1, 5), dotS4(b, a, 5, 2, 1, 5), dotS4(b, a, 5, 3, 1, 5), dotS4(b, a, 5, 4, 1, 5) + b[9], dotS4(b, a, 10, 0, 1, 5), dotS4(b, a, 10, 1, 1, 5), dotS4(b, a, 10, 2, 1, 5), dotS4(b, a, 10, 3, 1, 5), dotS4(b, a, 10, 4, 1, 5) + b[14], dotS4(b, a, 15, 0, 1, 5), dotS4(b, a, 15, 1, 1, 5), dotS4(b, a, 15, 2, 1, 5), dotS4(b, a, 15, 3, 1, 5), dotS4(b, a, 15, 4, 1, 5) + b[19] ]; export { __mulM45, __mulV33, __mulV45 };