Topographer.Renderer.Blend C# (CSharp) Method

Blend() private static method

private static Blend ( Color c1, Color c2 ) : Color
c1 Color
c2 Color
return Color
        private static Color Blend(Color c1, Color c2)
        {
            if (c2.A == 0)
                return c1;
            else if(c1.A == 0)
                return c2;

            double a1 = c1.A / 255.0;
            double a2 = c2.A / 255.0;
            a2 *= (1.0 - a1);
            double a = a1 + a2;

            int r = (int)(c1.R * a1 + c2.R * a2);
            int g = (int)(c1.G * a1 + c2.G * a2);
            int b = (int)(c1.B * a1 + c2.B * a2);
            a *= 255;

            if (c1.A == 255 || c2.A == 255)
                a = 255;
            return Color.FromArgb((int)a, r, g, b);
        }