UNPKG

@antv/scale

Version:

Toolkit for mapping abstract data into visual representation.

37 lines (31 loc) 939 B
import colorString from 'color-string'; function hue2rgb(p: number, q: number, m: number) { let t = m; if (t < 0) t += 1; if (t > 1) t -= 1; if (t < 1 / 6) return p + (q - p) * 6 * t; if (t < 1 / 2) return q; if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6; return p; } function hsl2rbg(hsl: number[]) { const h = hsl[0] / 360; const s = hsl[1] / 100; const l = hsl[2] / 100; const a = hsl[3]; if (s === 0) return [l * 255, l * 255, l * 255, a]; const q = l < 0.5 ? l * (1 + s) : l + s - l * s; const p = 2 * l - q; const r = hue2rgb(p, q, h + 1 / 3); const g = hue2rgb(p, q, h); const b = hue2rgb(p, q, h - 1 / 3); return [r * 255, g * 255, b * 255, a]; } export function string2rbg(s: string) { const color = colorString.get(s); if (!color) return null; const { model, value } = color; if (model === 'rgb') return value; if (model === 'hsl') return hsl2rbg(value); return null; }