public Color[] GetColors(ColoringMode coloringMode, MapColorPalette colorPalette, Color startColor, Color middleColor, Color endColor, int colorCount)
        {
            if (colorCount == 0)
            {
                return(null);
            }
            if (coloringMode == ColoringMode.DistinctColors)
            {
                ColorGenerator colorGenerator = new ColorGenerator();
                return(colorGenerator.GenerateColors(colorPalette, colorCount));
            }
            switch (colorCount)
            {
            case 1:
                return(new Color[1]
                {
                    startColor
                });

            case 2:
                return(new Color[2]
                {
                    startColor,
                    endColor
                });

            default:
            {
                bool flag = middleColor.A == 0;
                byte a    = startColor.A;
                byte a3   = middleColor.A;
                byte a2   = endColor.A;
                startColor  = Color.FromArgb(255, startColor);
                middleColor = Color.FromArgb(255, middleColor);
                endColor    = Color.FromArgb(255, endColor);
                Color[] array = new Color[colorCount];
                array[0] = startColor;
                array[colorCount - 1] = endColor;
                Rectangle rect = new Rectangle(0, 0, colorCount, 1);
                if (colorCount % 2 == 1)
                {
                    rect.Width--;
                }
                Bitmap bitmap = new Bitmap(colorCount, 1);
                using (LinearGradientBrush linearGradientBrush = new LinearGradientBrush(rect, startColor, endColor, 0f, false))
                {
                    ColorBlend colorBlend = new ColorBlend();
                    if (flag)
                    {
                        colorBlend.Positions = new float[2]
                        {
                            0f,
                            1f
                        };
                        colorBlend.Colors = new Color[2]
                        {
                            startColor,
                            endColor
                        };
                    }
                    else
                    {
                        colorBlend.Positions = new float[3]
                        {
                            0f,
                            0.5f,
                            1f
                        };
                        colorBlend.Colors = new Color[3]
                        {
                            startColor,
                            middleColor,
                            endColor
                        };
                    }
                    linearGradientBrush.InterpolationColors = colorBlend;
                    using (Graphics graphics = Graphics.FromImage(bitmap))
                    {
                        graphics.FillRectangle(linearGradientBrush, rect);
                    }
                }
                float num  = (float)((a2 - a) / (colorCount - 1));
                float num2 = (float)(int)a;
                for (int i = 1; i < colorCount - 1; i++)
                {
                    num2 += num;
                    Color pixel = bitmap.GetPixel(i, 0);
                    array[i] = Color.FromArgb((int)num2, pixel);
                }
                return(array);
            }
            }
        }