TailBlazer.Views.Formatting.ColourProvider.ColourProvider C# (CSharp) Method

ColourProvider() public method

public ColourProvider ( ) : System
return System
        public ColourProvider()
        {
            var swatches = new SwatchesProvider().Swatches.AsArray();

            Swatches = swatches.ToDictionary(s => s.Name);

            var accents = swatches.Where(s => s.IsAccented).ToArray();
            var orders = new Dictionary<string, int>(StringComparer.OrdinalIgnoreCase);

            ThemeConstants.Themes.Select((str,idx)=>new {str,idx})
                .ForEach(x=> orders[x.str] = x.idx);

            var greys = swatches//.Where(s => !s.IsAccented)
                .Where(s => s.Name == "bluegrey")
                .SelectMany(swatch =>
                {
                    var hues = swatch.PrimaryHues
                            .Where(hue=> hue.Name=="Primary200"
                            || hue.Name == "Primary300"
                            || hue.Name == "Primary400"
                            || hue.Name == "Primary500")
                            .Select(hue =>  new Hue(swatch.Name, hue.Name, hue.Foreground, hue.Color));

                    var withNumber= hues.Select(h =>
                    {
                        var num = GetNumber(h.Name);
                        return new {hue=h, Num = num};
                    }).OrderBy(h=>h.Num)
                    .Take(8)
                    .Select(x=>x.hue);

                    return withNumber;
                });
            Hues = accents
                        .OrderBy(x => orders.Lookup(x.Name).ValueOr(() => 100))
                        .SelectMany(swatch =>
                        {
                            return swatch.AccentHues.Select(hue => new Hue(swatch.Name, hue.Name, hue.Foreground, hue.Color));
                        })
                        .Union(greys)
                        .ToArray();

            HueCache = Hues.ToDictionary(h => h.Key);
        }