UNPKG

rykit-v3

Version:

A powerful Node.js utility library for Minecraft server status, color manipulation, encryption, file operations, and more

115 lines (97 loc) 2.49 kB
class ColorUtils { // RGB to HSL conversion rgbToHsl(r, g, b) { r /= 255; g /= 255; b /= 255; const max = Math.max(r, g, b); const min = Math.min(r, g, b); let h, s, l = (max + min) / 2; if (max === min) { h = s = 0; } else { const d = max - min; s = l > 0.5 ? d / (2 - max - min) : d / (max + min); switch (max) { case r: h = (g - b) / d + (g < b ? 6 : 0); break; case g: h = (b - r) / d + 2; break; case b: h = (r - g) / d + 4; break; } h /= 6; } return { h: Math.round(h * 360), s: Math.round(s * 100), l: Math.round(l * 100), }; } // HSL to RGB conversion hslToRgb(h, s, l) { h /= 360; s /= 100; l /= 100; let r, g, b; if (s === 0) { r = g = b = l; } else { const hue2rgb = (p, q, t) => { 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; }; const q = l < 0.5 ? l * (1 + s) : l + s - l * s; const p = 2 * l - q; r = hue2rgb(p, q, h + 1 / 3); g = hue2rgb(p, q, h); b = hue2rgb(p, q, h - 1 / 3); } return { r: Math.round(r * 255), g: Math.round(g * 255), b: Math.round(b * 255), }; } // Color brightness getBrightness(r, g, b) { return Math.round((r * 299 + g * 587 + b * 114) / 1000); } // Check if color is light or dark isLight(r, g, b) { return this.getBrightness(r, g, b) > 128; } // Generate random color getRandomColor() { const r = Math.floor(Math.random() * 256); const g = Math.floor(Math.random() * 256); const b = Math.floor(Math.random() * 256); return { r, g, b }; } // Generate complementary color getComplementaryColor(r, g, b) { return { r: 255 - r, g: 255 - g, b: 255 - b, }; } // Color blending blendColors(color1, color2, ratio = 0.5) { return { r: Math.round(color1.r * (1 - ratio) + color2.r * ratio), g: Math.round(color1.g * (1 - ratio) + color2.g * ratio), b: Math.round(color1.b * (1 - ratio) + color2.b * ratio), }; } } export default ColorUtils;