You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
// @ts-ignore
import kelvinToRgb from "kelvin-to-rgb"; import {ColorValue} from "../models/Colors"; import iro from "@jaames/iro";
export function kelvinToColorValue(rawKelvin: number): ColorValue { const kelvin = normalizeKelvin(rawKelvin);
return kelvinTable[kelvin]; }
export function kelvinToRgbHex(rawKelvin: number): string { const kelvin = normalizeKelvin(rawKelvin);
const c = new iro.Color(); c.kelvin = kelvin;
return c.hexString; }
function normalizeKelvin(kelvin: number): number { if (kelvin < 1000) { return 1000; } else if (kelvin > 10000) { return 10000; } else { return kelvin - (kelvin % 100); } }
const kelvinTable: {[key: number]: ColorValue} = {}; for (let kelvin = 1000; kelvin <= 10000; kelvin += 100) { const c = new iro.Color(); c.kelvin = kelvin;
const [h, s] = [c.hsv.h, (c.hsv.s as number) / 100];
kelvinTable[kelvin] = {h, s, kelvin}; }
|