public static bool TryParse()

in src/Avalonia.Base/Media/Color.cs [144:200]


        public static bool TryParse(string? s, out Color color)
        {
            color = default;

            if (string.IsNullOrEmpty(s))
            {
                return false;
            }

            if (s[0] == '#' &&
                TryParseHexFormat(s.AsSpan(), out color))
            {
                return true;
            }

            // Note: The length checks are also an important optimization.
            // The shortest possible CSS format is "rbg(0,0,0)", Length = 10.

            if (s.Length >= 10 &&
                (s[0] == 'r' || s[0] == 'R') &&
                (s[1] == 'g' || s[1] == 'G') &&
                (s[2] == 'b' || s[2] == 'B') &&
                TryParseCssFormat(s, out color))
            {
                return true;
            }

            if (s.Length >= 10 &&
                (s[0] == 'h' || s[0] == 'H') &&
                (s[1] == 's' || s[1] == 'S') &&
                (s[2] == 'l' || s[2] == 'L') &&
                HslColor.TryParse(s, out HslColor hslColor))
            {
                color = hslColor.ToRgb();
                return true;
            }

            if (s.Length >= 10 &&
                (s[0] == 'h' || s[0] == 'H') &&
                (s[1] == 's' || s[1] == 'S') &&
                (s[2] == 'v' || s[2] == 'V') &&
                HsvColor.TryParse(s, out HsvColor hsvColor))
            {
                color = hsvColor.ToRgb();
                return true;
            }

            var knownColor = KnownColors.GetKnownColor(s);

            if (knownColor != KnownColor.None)
            {
                color = knownColor.ToColor();
                return true;
            }

            return false;
        }