UNPKG

niram

Version:

A javascript library to convert between various css colour formats.

34 lines (33 loc) 1.11 kB
import { normaliseDegree } from './normalisers.js'; export function rgbToHsl(red, green, blue, alphaFraction = 1) { const red_ = red / 255; const green_ = green / 255; const blue_ = blue / 255; const C_max = Math.max(red_, green_, blue_); const C_min = Math.min(red_, green_, blue_); const C_diff = C_max - C_min; const levelFraction = (C_max + C_min) / 2; const satFraction = C_diff / (1 - Math.abs(2 * levelFraction - 1)); const hueDegree = normaliseDegree(getHueDegreeFromRgbFraction(red_, green_, blue_, C_max, C_diff)); return { hueDegree, satPercent: satFraction * 100, levelPercent: levelFraction * 100, alphaFraction, }; } function getHueDegreeFromRgbFraction(red_, green_, blue_, C_max, C_diff) { if (C_diff == 0) { return 0; } else if (C_max == red_) { return 60 * (((green_ - blue_) / C_diff) % 6); } else if (C_max == green_) { return 60 * ((blue_ - red_) / C_diff + 2); } else if (C_max == blue_) { return 60 * ((red_ - green_) / C_diff + 4); } return 0; }