UNPKG

ws2801-alexa

Version:

An alexa connector for the WS2801-Pi module.

81 lines (80 loc) 2.43 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ColorConverter = void 0; class ColorConverter { static convertHueToRgb(hueColor) { const c = hueColor.brightness * hueColor.saturation; const x = c * (1 - Math.abs((hueColor.hue / 60) % 2 - 1)); const m = hueColor.brightness - c; let red1; let green1; let blue1; if (hueColor.hue >= 0 && hueColor.hue < 60) { red1 = c; green1 = x; blue1 = 0; } else if (hueColor.hue >= 60 && hueColor.hue < 120) { red1 = x; green1 = c; blue1 = 0; } else if (hueColor.hue >= 120 && hueColor.hue < 180) { red1 = 0; green1 = c; blue1 = x; } else if (hueColor.hue >= 180 && hueColor.hue < 240) { red1 = 0; green1 = x; blue1 = c; } else if (hueColor.hue >= 240 && hueColor.hue < 300) { red1 = x; green1 = 0; blue1 = c; } else if (hueColor.hue >= 300 && hueColor.hue < 360) { red1 = c; green1 = 0; blue1 = x; } else { throw new Error(`Hue value ${hueColor.hue} is not supported!`); } return { red: (red1 + m) * 255, green: (green1 + m) * 255, blue: (blue1 + m) * 255, }; } static convertRgbToHue(rgbColor) { const red1 = rgbColor.red / 255; const green1 = rgbColor.green / 255; const blue1 = rgbColor.blue / 255; const cMax = Math.max(red1, green1, blue1); const cMin = Math.min(red1, green1, blue1); const delta = cMax - cMin; let hue; if (delta === 0) { hue = 0; } else if (cMax === red1) { hue = 60 * (((green1 - blue1) / delta) % 6); } else if (cMax === green1) { hue = 60 * ((blue1 - red1) / delta + 2); } else if (cMax === blue1) { hue = 60 * ((red1 - green1) / delta + 4); } const saturation = cMax === 0 ? 0 : delta / cMax; const brightness = cMax; return { hue: hue, saturation: saturation, brightness: brightness, }; } } exports.ColorConverter = ColorConverter;