using System; using System.Globalization; namespace Maki { public class DiscordColour { public DiscordColour(int raw) { Raw = raw; } public DiscordColour(byte red, byte green, byte blue) { Raw = (red << 16) + (green << 8) + blue; } public DiscordColour(string hex) { hex = hex.ToUpper(); if (hex.Length == 3) hex = new string(hex[0], 2) + new string(hex[1], 2) + new string(hex[2], 2); if (hex.Length != 6) throw new FormatException("Invalid hex colour format!"); Red = byte.Parse(hex.Substring(0, 2), NumberStyles.HexNumber); Green = byte.Parse(hex.Substring(2, 2), NumberStyles.HexNumber); Blue = byte.Parse(hex.Substring(4, 2), NumberStyles.HexNumber); } public int Raw = int.MinValue; public byte Red { get => (byte)(Raw >> 16 & 0xFF); set => Raw = (value << 16) + (Green << 8) + Blue; } public byte Green { get => (byte)(Raw >> 8 & 0xFF); set => Raw = (Red << 16) + (value << 8) + Blue; } public byte Blue { get => (byte)(Raw & 0xFF); set => Raw = (Red << 16) + (Green << 8) + value; } public string Hex => $"{Red:X2}{Green:X2}{Blue:X2}"; } }