Esempio n. 1
0
        /// <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);
        }
Esempio n. 2
0
        /// <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());
        }