예제 #1
0
        private static Rgb NormalizeRgb(ColorSpace colorSpace)
        {
            var rgb = colorSpace.ToRgb();

            if (rgb.R < 0 || rgb.R.ApproximatelyEquals(0, 0.001))
            {
                rgb.R = 0;
            }
            else if (rgb.R > 255 || rgb.R.ApproximatelyEquals(255, 0.001))
            {
                rgb.R = 255;
            }
            else
            {
                rgb.R = System.Math.Round(rgb.R);
            }
            if (rgb.G < 0 || rgb.G.ApproximatelyEquals(0, 0.001))
            {
                rgb.G = 0;
            }
            else if (rgb.G > 255 || rgb.G.ApproximatelyEquals(255, 0.001))
            {
                rgb.G = 255;
            }
            else
            {
                rgb.G = System.Math.Round(rgb.G);
            }
            if (rgb.B < 0 || rgb.B.ApproximatelyEquals(0, 0.001))
            {
                rgb.B = 0;
            }
            else if (rgb.B > 255 || rgb.B.ApproximatelyEquals(255, 0.001))
            {
                rgb.B = 255;
            }
            else
            {
                rgb.B = System.Math.Round(rgb.B);
            }

            var rgba = rgb as Rgba;

            if (rgba != null)
            {
                if (rgba.A < 0 || rgba.A.ApproximatelyEquals(0, 0.001))
                {
                    rgba.A = 0;
                }
                else if (rgba.A > 255 || rgba.A.ApproximatelyEquals(255, 0.001))
                {
                    rgba.A = 255;
                }
                else
                {
                    rgba.A = System.Math.Round(rgba.A);
                }
            }

            return(rgb);
        }