Пример #1
0
        /// <summary>
        /// Creates a new color with the same values as this color
        /// </summary>
        /// <returns>A copy of this color</returns>
        public Color Copy()
        {
            switch (this.Model)
            {
            case ColorModel.CIELab: return(new ColorLab(wp.Copy(), ColorValues[0], ColorValues[1], ColorValues[2]));

            case ColorModel.CIELuv: return(new ColorLuv(wp.Copy(), ColorValues[0], ColorValues[1], ColorValues[2]));

            case ColorModel.CIEXYZ: return(new ColorXYZ(wp.Copy(), ColorValues[0], ColorValues[1], ColorValues[2]));

            case ColorModel.CIEYxy: return(new ColorYxy(wp.Copy(), ColorValues[0], ColorValues[1], ColorValues[2]));

            case ColorModel.CIELCHab: return(new ColorLCHab(wp.Copy(), ColorValues[0], ColorValues[1], ColorValues[2]));

            case ColorModel.CIELCHuv: return(new ColorLCHuv(wp.Copy(), ColorValues[0], ColorValues[1], ColorValues[2]));

            case ColorModel.LCH99: return(new ColorLCH99(ColorValues[0], ColorValues[1], ColorValues[2]));

            case ColorModel.LCH99b: return(new ColorLCH99b(ColorValues[0], ColorValues[1], ColorValues[2]));

            case ColorModel.LCH99c: return(new ColorLCH99c(ColorValues[0], ColorValues[1], ColorValues[2]));

            case ColorModel.LCH99d: return(new ColorLCH99d(ColorValues[0], ColorValues[1], ColorValues[2]));

            case ColorModel.DEF: return(new ColorDEF(ColorValues[0], ColorValues[1], ColorValues[2]));

            case ColorModel.Bef: return(new ColorBef(ColorValues[0], ColorValues[1], ColorValues[2]));

            case ColorModel.BCH: return(new ColorBCH(ColorValues[0], ColorValues[1], ColorValues[2]));

            case ColorModel.Gray:
                if (ICC_Profile == null)
                {
                    return(new ColorGray(ICC_Profile, ColorValues[0]));
                }
                else
                {
                    return(new ColorGray(wp.Copy(), ColorValues[0]));
                }

            case ColorModel.RGB:
                if (ICC_Profile == null)
                {
                    return(new ColorRGB(((ColorRGB)this).Space.Name, ColorValues[0], ColorValues[1], ColorValues[2]));
                }
                else
                {
                    return(new ColorRGB(ICC_Profile, ColorValues[0], ColorValues[1], ColorValues[2]));
                }

            case ColorModel.HSL:
                if (ICC_Profile == null)
                {
                    return(new ColorHSL(((ColorHSL)this).Space.Name, ColorValues[0], ColorValues[1], ColorValues[2]));
                }
                else
                {
                    return(new ColorHSL(ICC_Profile, ColorValues[0], ColorValues[1], ColorValues[2]));
                }

            case ColorModel.HSV:
                if (ICC_Profile == null)
                {
                    return(new ColorHSV(((ColorHSV)this).Space.Name, ColorValues[0], ColorValues[1], ColorValues[2]));
                }
                else
                {
                    return(new ColorHSV(ICC_Profile, ColorValues[0], ColorValues[1], ColorValues[2]));
                }

            case ColorModel.YCbCr:
                if (ICC_Profile == null)
                {
                    return(new ColorYCbCr(((ColorYCbCr)this).Space.Name, ((ColorYCbCr)this).BaseSpace.Name, ColorValues[0], ColorValues[1], ColorValues[2]));
                }
                else
                {
                    return(new ColorYCbCr(ICC_Profile, ColorValues[0], ColorValues[1], ColorValues[2]));
                }

            case ColorModel.CMY: return(new ColorCMY(ICC_Profile, ColorValues[0], ColorValues[1], ColorValues[2]));

            case ColorModel.CMYK: return(new ColorCMYK(ICC_Profile, ColorValues[0], ColorValues[1], ColorValues[2], ColorValues[3]));

            case ColorModel.Color2:
            case ColorModel.Color3:
            case ColorModel.Color4:
            case ColorModel.Color5:
            case ColorModel.Color6:
            case ColorModel.Color7:
            case ColorModel.Color8:
            case ColorModel.Color9:
            case ColorModel.Color10:
            case ColorModel.Color11:
            case ColorModel.Color12:
            case ColorModel.Color13:
            case ColorModel.Color14:
            case ColorModel.Color15: return(new ColorX(ICC_Profile, (double[])ColorArray.Clone()));

            default: throw new NotImplementedException();
            }
        }