UNPKG

@thi.ng/color

Version:

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

20 lines (19 loc) 549 B
import { atan2Abs } from "@thi.ng/math/angle"; import { SQRT3, TAU, THIRD } from "@thi.ng/math/api"; import { setC3 } from "@thi.ng/vectors/setc"; import { clamp } from "../clamp.js"; const SQRT32 = SQRT3 / 2; const rgbHsi = (out, src) => { out = clamp(out || src, src); const { 0: r, 1: g, 2: b } = out; const i = THIRD * (r + g + b); return i < 1e-6 || r === g && r === b ? setC3(out, 0, 0, i) : setC3( out, atan2Abs(SQRT32 * (g - b), 0.5 * (2 * r - g - b)) / TAU, 1 - Math.min(r, g, b) / i, i ); }; export { rgbHsi };