allc
Version:
A small typescript package for color conversion.
37 lines (36 loc) • 1.61 kB
JavaScript
import { clamp01 } from "../../internal";
/**
* Calculates the specified RGB color components to an integer representation of the format `0xAARRGGBB`.
* If no alpha value is specified, a default of `0` is used. **All channels (including alpha)
* will be clamped to [0, 1] before processing.**
*
* @param r - The red component, range [0, 1].
* @param g - The green component, range [0, 1].
* @param b - The blue component, range [0, 1].
* @param withAlpha - An optional alpha component, range [0, 1], defaults to 0.
*
* @returns The integer representation of the color.
*/
export const toIntegerFromRGB = (r, g, b, withAlpha = 0) => Math.round(clamp01(withAlpha) * 255) << 24
| Math.round(clamp01(r) * 255) << 16
| Math.round(clamp01(g) * 255) << 8
| Math.round(clamp01(b) * 255);
/**
* Calculates the hexadecimal representation of the specified RGB color in the format `"RRGGBB"`.
* If an alpha value is specified, the format is `"RRGGBBAA"`. **No '#' is prepended,
* and all channels (including alpha) will be clamped to [0, 1] before processing.**
*
* @param r - The red component, range [0, 1].
* @param g - The green component, range [0, 1].
* @param b - The blue component, range [0, 1].
* @param withAlpha - An optional alpha component, range [0, 1].
*
* @returns The hexadecimal representation of the color.
*/
export const toHexStringFromRGB = (r, g, b, withAlpha) => withAlpha === undefined
? toIntegerFromRGB(r, g, b)
.toString(16)
.padStart(6, "0")
: toIntegerFromRGB(r, g, b, withAlpha)
.toString(16)
.padStart(8, "0");