/// <summary>
        /// Populates the General Palette. GreyScale, Other and GamGreenPlus (all non-GAM Standard)
        /// Assigns them to groups.
        /// </summary>
        private static void LoadGeneralPalette()
        {
            var palette = new GamPalette();

            colourPalettes.Add(ColourPaletteType.GeneralPalette, palette);

            AppendColour(palette, Color.FromRgb(255, 0, 0), ColourGroup.Others);           // Red
            AppendColour(palette, Color.FromRgb(0, 255, 0), ColourGroup.Others);           // Green
            AppendColour(palette, Color.FromRgb(0, 0, 255), ColourGroup.Others);           // Blue

            AppendColour(palette, Color.FromRgb(0, 0, 0), ColourGroup.GreyScale);          // Black
            AppendColour(palette, Color.FromRgb(51, 51, 51), ColourGroup.GreyScale);
            AppendColour(palette, Color.FromRgb(102, 102, 102), ColourGroup.GreyScale);
            AppendColour(palette, Color.FromRgb(140, 140, 140), ColourGroup.GreyScale);
            AppendColour(palette, Color.FromRgb(178, 178, 178), ColourGroup.GreyScale);
            AppendColour(palette, Color.FromRgb(216, 216, 216), ColourGroup.GreyScale);
            AppendColour(palette, Color.FromRgb(255, 255, 255), ColourGroup.GreyScale);    // White

            AppendColour(palette, Color.FromRgb(0, 102, 102), ColourGroup.GamGreenPlus);   // GAM Green 100%
            AppendColour(palette, Color.FromRgb(51, 132, 132), ColourGroup.GamGreenPlus);
            AppendColour(palette, Color.FromRgb(102, 163, 163), ColourGroup.GamGreenPlus); // GAM Green 60%
            AppendColour(palette, Color.FromRgb(140, 186, 186), ColourGroup.GamGreenPlus);
            AppendColour(palette, Color.FromRgb(178, 209, 209), ColourGroup.GamGreenPlus); // GAM Green 30%
            AppendColour(palette, Color.FromRgb(216, 232, 232), ColourGroup.GamGreenPlus);
            AppendColour(palette, Color.FromRgb(242, 247, 247), ColourGroup.GamGreenPlus); // GAM Green 5%

            AppendColour(palette, Color.FromRgb(255, 255, 255), ColourGroup.GamGreenPlus); // White
        }
        /// <summary>
        /// Append the colour to the appropriate group and to the main list of colours in the supplied <see cref="gamPalette" />
        /// </summary>
        /// <param name="gamPalette">The gam palette.</param>
        /// <param name="colour">The colour.</param>
        /// <param name="gamColourGroup">The gam colour group.</param>
        internal static void AppendColour(GamPalette gamPalette, Color colour, ColourGroup gamColourGroup)
        {
            // Append to supplied palette.
            AppendToPalette(gamPalette, colour, gamColourGroup);

            // Add to 'All Colours' palette.
            AppendToPalette(colourPalettes[ColourPaletteType.AllPalette], colour, gamColourGroup);
        }
        /// <summary>
        /// Populates the GAM Brand colour palette (Gam Greens)
        /// Assigns them to groups.
        /// </summary>
        private static void LoadBrandPalette()
        {
            var palette = new GamPalette();

            colourPalettes.Add(ColourPaletteType.GamBrandPalette, palette);

            AppendColour(palette, Color.FromRgb(0, 102, 102), ColourGroup.GamGreen);
            AppendColour(palette, Color.FromRgb(102, 163, 163), ColourGroup.GamGreen);
            AppendColour(palette, Color.FromRgb(178, 209, 209), ColourGroup.GamGreen);
            AppendColour(palette, Color.FromRgb(242, 247, 247), ColourGroup.GamGreen);
        }
        /// <summary>
        /// Populates the GAM Product colour palette (Products)
        /// Assigns them to groups.
        /// </summary>
        private static void LoadProductPalette()
        {
            var palette = new GamPalette();

            colourPalettes.Add(ColourPaletteType.GamProductPalette, palette);

            AppendColour(palette, Color.FromRgb(54, 183, 229), ColourGroup.GamPPLightBlue);
            AppendColour(palette, Color.FromRgb(151, 197, 36), ColourGroup.GamPPLime);
            AppendColour(palette, Color.FromRgb(255, 103, 109), ColourGroup.GamPPRed);
            AppendColour(palette, Color.FromRgb(245, 140, 66), ColourGroup.GamPPTangerine);
            AppendColour(palette, Color.FromRgb(171, 128, 203), ColourGroup.GamPPViolet);
            AppendColour(palette, Color.FromRgb(110, 119, 200), ColourGroup.GamPPPlum);
        }
        /// <summary>
        /// Populates a GreyScale - non-GAM palette.
        /// Assigns them to groups.
        /// </summary>
        private static void LoadGreyScalePalette()
        {
            var palette = new GamPalette();

            colourPalettes.Add(ColourPaletteType.GreyScalePalette, palette);

            AppendColour(palette, Color.FromRgb(0, 0, 0), ColourGroup.GreyScale);          // Black
            AppendColour(palette, Color.FromRgb(51, 51, 51), ColourGroup.GreyScale);
            AppendColour(palette, Color.FromRgb(102, 102, 102), ColourGroup.GreyScale);
            AppendColour(palette, Color.FromRgb(140, 140, 140), ColourGroup.GreyScale);
            AppendColour(palette, Color.FromRgb(178, 178, 178), ColourGroup.GreyScale);
            AppendColour(palette, Color.FromRgb(216, 216, 216), ColourGroup.GreyScale);
            AppendColour(palette, Color.FromRgb(247, 247, 247), ColourGroup.GreyScale);
            AppendColour(palette, Color.FromRgb(255, 255, 255), ColourGroup.GreyScale);    // White
        }
        /// <summary>
        /// fred
        /// </summary>
        static ColourPalette()
        {
            var allColoursPalette = new GamPalette();

            colourPalettes.Add(ColourPaletteType.AllPalette, allColoursPalette);

            // Loads with GAM Standard Colours
            LoadChartPalette();
            LoadBrandPalette();
            LoadProductPalette();
            LoadTechnicalPalette();
            LoadGeneralPalette();
            LoadGreyScalePalette();
            LoadTechnicalChartPalette();

            // Populates the chartBrushList (CHART COLOUR PALETTE ONLY for backward compatibility).
            PopulateBrushList(ref chartBrushList, colourPalettes[ColourPaletteType.ChartPalette].ColorList);
        }
        /// <summary>
        /// Appends to palette.
        /// </summary>
        /// <param name="gamPalette">The gam palette.</param>
        /// <param name="colour">The colour.</param>
        /// <param name="gamColourGroup">The gam colour group.</param>
        private static void AppendToPalette(GamPalette gamPalette, Color colour, ColourGroup gamColourGroup)
        {
            // Check if colour group exists, if not then create
            if (!gamPalette.ColourGroups.ContainsKey(gamColourGroup))
            {
                gamPalette.ColourGroups.Add(gamColourGroup, new List <Color>());
            }

            gamPalette.ColourGroups[gamColourGroup].Add(colour);

            // Add to full list if not already there.
            if (!gamPalette.ColorList.Exists(c => c.Equals(colour)))
            {
                gamPalette.ColorList.Add(colour);
            }
            else
            {
            }
        }
        /// <summary>
        /// Populates the offical GAM technical palette (Includes GAM Greens).
        /// Assigns them to groups.
        /// </summary>
        private static void LoadTechnicalPalette()
        {
            var palette = new GamPalette();

            colourPalettes.Add(ColourPaletteType.GamTechnicalPalette, palette);

            // 1 to 10
            AppendColour(palette, Color.FromRgb(0, 102, 102), ColourGroup.GamGreen);
            AppendColour(palette, Color.FromRgb(94, 146, 216), ColourGroup.GamTPBlue);
            AppendColour(palette, Color.FromRgb(141, 134, 130), ColourGroup.GamTPGrey);
            AppendColour(palette, Color.FromRgb(190, 144, 69), ColourGroup.GamTPMustard);
            AppendColour(palette, Color.FromRgb(113, 130, 70), ColourGroup.GamTPOlive);
            AppendColour(palette, Color.FromRgb(188, 82, 155), ColourGroup.GamTPRubine);
            AppendColour(palette, Color.FromRgb(208, 99, 81), ColourGroup.GamTPOrange);
            AppendColour(palette, Color.FromRgb(188, 172, 72), ColourGroup.GamTPGold);
            AppendColour(palette, Color.FromRgb(121, 88, 148), ColourGroup.GamTPPurple);
            AppendColour(palette, Color.FromRgb(0, 167, 139), ColourGroup.GamTPAqua);

            // 11 to 20
            AppendColour(palette, Color.FromRgb(102, 163, 163), ColourGroup.GamGreen);
            AppendColour(palette, Color.FromRgb(158, 190, 232), ColourGroup.GamTPBlue);
            AppendColour(palette, Color.FromRgb(187, 182, 180), ColourGroup.GamTPGrey);
            AppendColour(palette, Color.FromRgb(216, 188, 143), ColourGroup.GamTPMustard);
            AppendColour(palette, Color.FromRgb(170, 180, 144), ColourGroup.GamTPOlive);
            AppendColour(palette, Color.FromRgb(215, 151, 195), ColourGroup.GamTPRubine);
            AppendColour(palette, Color.FromRgb(227, 161, 151), ColourGroup.GamTPOrange);
            AppendColour(palette, Color.FromRgb(215, 205, 145), ColourGroup.GamTPGold);
            AppendColour(palette, Color.FromRgb(175, 155, 191), ColourGroup.GamTPPurple);
            AppendColour(palette, Color.FromRgb(102, 202, 185), ColourGroup.GamTPAqua);

            // 21 to 30 - a bit wishy washy
            AppendColour(palette, Color.FromRgb(178, 209, 209), ColourGroup.GamGreen);
            AppendColour(palette, Color.FromRgb(207, 222, 243), ColourGroup.GamTPBlue);
            AppendColour(palette, Color.FromRgb(221, 219, 217), ColourGroup.GamTPGrey);
            AppendColour(palette, Color.FromRgb(235, 222, 199), ColourGroup.GamTPMustard);
            AppendColour(palette, Color.FromRgb(212, 217, 199), ColourGroup.GamTPOlive);
            AppendColour(palette, Color.FromRgb(235, 203, 225), ColourGroup.GamTPRubine);
            AppendColour(palette, Color.FromRgb(241, 208, 203), ColourGroup.GamTPOrange);
            AppendColour(palette, Color.FromRgb(235, 230, 200), ColourGroup.GamTPGold);
            AppendColour(palette, Color.FromRgb(215, 205, 223), ColourGroup.GamTPPurple);
            AppendColour(palette, Color.FromRgb(178, 229, 220), ColourGroup.GamTPAqua);
        }
        /// <summary>
        /// Populates the offical technical palette which should really be used for charts (but some colours are 'wishy-washy').
        /// Assigns them to groups.
        /// </summary>
        private static void LoadTechnicalChartPalette()
        {
            var palette = new GamPalette();

            colourPalettes.Add(ColourPaletteType.GamTechnicalChartPalette, palette);

            // 60% tinted colours first
            AppendColour(palette, Color.FromRgb(158, 190, 232), ColourGroup.GamTPBlue);
            AppendColour(palette, Color.FromRgb(187, 182, 180), ColourGroup.GamTPGrey);
            AppendColour(palette, Color.FromRgb(216, 188, 143), ColourGroup.GamTPMustard);
            AppendColour(palette, Color.FromRgb(170, 180, 144), ColourGroup.GamTPOlive);
            AppendColour(palette, Color.FromRgb(215, 151, 195), ColourGroup.GamTPRubine);
            AppendColour(palette, Color.FromRgb(227, 161, 151), ColourGroup.GamTPOrange);
            AppendColour(palette, Color.FromRgb(215, 205, 145), ColourGroup.GamTPGold);
            AppendColour(palette, Color.FromRgb(175, 155, 191), ColourGroup.GamTPPurple);
            AppendColour(palette, Color.FromRgb(102, 202, 185), ColourGroup.GamTPAqua);

            // 30% tinted colours second
            AppendColour(palette, Color.FromRgb(207, 222, 243), ColourGroup.GamTPBlue);
            AppendColour(palette, Color.FromRgb(221, 219, 217), ColourGroup.GamTPGrey);
            AppendColour(palette, Color.FromRgb(235, 222, 199), ColourGroup.GamTPMustard);
            AppendColour(palette, Color.FromRgb(212, 217, 199), ColourGroup.GamTPOlive);
            AppendColour(palette, Color.FromRgb(235, 203, 225), ColourGroup.GamTPRubine);
            AppendColour(palette, Color.FromRgb(241, 208, 203), ColourGroup.GamTPOrange);
            AppendColour(palette, Color.FromRgb(235, 230, 200), ColourGroup.GamTPGold);
            AppendColour(palette, Color.FromRgb(215, 205, 223), ColourGroup.GamTPPurple);
            AppendColour(palette, Color.FromRgb(178, 229, 220), ColourGroup.GamTPAqua);

            // 100% solid colours third
            AppendColour(palette, Color.FromRgb(94, 146, 216), ColourGroup.GamTPBlue);
            AppendColour(palette, Color.FromRgb(141, 134, 130), ColourGroup.GamTPGrey);
            AppendColour(palette, Color.FromRgb(190, 144, 69), ColourGroup.GamTPMustard);
            AppendColour(palette, Color.FromRgb(113, 130, 70), ColourGroup.GamTPOlive);
            AppendColour(palette, Color.FromRgb(188, 82, 155), ColourGroup.GamTPRubine);
            AppendColour(palette, Color.FromRgb(208, 99, 81), ColourGroup.GamTPOrange);
            AppendColour(palette, Color.FromRgb(188, 172, 72), ColourGroup.GamTPGold);
            AppendColour(palette, Color.FromRgb(121, 88, 148), ColourGroup.GamTPPurple);
            AppendColour(palette, Color.FromRgb(0, 167, 139), ColourGroup.GamTPAqua);
        }