/// <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(); } }