/// <summary> /// Returns the properties for the given color code /// </summary> /// <param name="colorCode">The requested color code</param> /// <returns></returns> public static ColorCodeProperty GetColorCodeProperty(ColorCode colorCode) { MemberInfo[] memberInfo = colorCode.GetType().GetMember(colorCode.ToString()); ColorCodeProperty attributes = (ColorCodeProperty)memberInfo[0].GetCustomAttribute(typeof(ColorCodeProperty), false); return(attributes); }
/// <summary> /// Gives the correct Color for a given colorTilde string /// </summary> /// <param name="colorCode">The colorCode string</param> /// <returns>Color or Color.Empty</returns> public static Color ColorTildeToColor(string colorCode) { Color ParseColorCode() { // Get the correct color code from the tilde & return it ColorCodeProperty colorCodeProperty = ColorCodeProperties.FirstOrDefault(cc => cc.Identifier.ToLower() == $"~{colorCode.ToLower()}~"); // Return color code, if not control code if (colorCodeProperty != null) { if (colorCodeProperty.ControlCodeAnsi == null) { return(Color.FromKnownColor(colorCodeProperty.Color)); } } return(Color.Empty); } Color ParseHexColorCode() { if (colorCode.StartsWith("_#")) { colorCode = colorCode.Substring(1); } // If only #fff given, make #ffffff if (colorCode.Length == 4) { colorCode = colorCode + colorCode.Substring(1); } Color returnColor; // Try Get color from Hex String try { returnColor = ColorTranslator.FromHtml(colorCode); } catch (Exception) { returnColor = Color.FromArgb(55, 55, 55); Console.Error.WriteLine($"~w~Invalid Hex code ~o~{colorCode}~w~."); } return(returnColor); } return(colorCode.StartsWith("#") || colorCode.StartsWith("_#") ? ParseHexColorCode() : ParseColorCode()); }