public override bool Equals(object obj) { if (obj == null) { return(false); } UColor c = obj as UColor; if ((Object)c == null) { return(false); } return(ColorValues == c.ColorValues && ReferenceWhite == c.ReferenceWhite); }
/// <summary> /// Converts a color to a HSV color /// </summary> /// <param name="InColor">The color to convert</param> /// <param name="colorspace">The colorspace to be used for the converted color</param> /// <returns>The converted color</returns> public UColorHSV ToHSV(UColor InColor, RGBSpaceName colorspace) { varArr = Do(InColor, ColorModel.HSV, colorspace); return new UColorHSV(colorspace, (ushort)(varArr[0] * 182.041667), (ushort)(varArr[1] * 65535), (ushort)(varArr[2] * 65535)); }
/// <summary> /// Converts a color to a HSL color /// </summary> /// <param name="InColor">The color to convert</param> /// <returns>The converted color</returns> public UColorHSL ToHSL(UColor InColor) { varArr = Do(InColor, ColorModel.HSL); return new UColorHSL(RGBSpace, (ushort)(varArr[0] * 182.041667), (ushort)(varArr[1] * 65535), (ushort)(varArr[2] * 65535)); }
/// <summary> /// Converts a color to a gray color /// </summary> /// <param name="InColor">The color to convert</param> /// <param name="ReferenceWhite">The reference white to be used for the converted color</param> /// <returns>The converted color</returns> public UColorGray ToGray(UColor InColor, WhitepointName ReferenceWhite) { varArr = Do(InColor, ColorModel.Gray, ReferenceWhite); return new UColorGray(OutReferenceWhite.Name, (ushort)(varArr[0] * 65535)); }
/// <summary> /// Converts from one colorspace to another /// </summary> /// <param name="inColor">Input color</param> /// <param name="outModel">Output colormodel</param> /// <returns>Returns a color with the converted values from the input</returns> internal double[] Do(UColor inColor, ColorModel outModel) { OutputModel = outModel; RGBSpace = StandardColorspace; YCbCrSpace = StandardYCbCrSpace; OutReferenceWhite = ReferenceWhite; SetInputColor(inColor); return Do(); }
/// <summary> /// Converts from one colorspace to another /// </summary> /// <param name="inColor">Input color</param> /// <param name="outModel">Output colormodel</param> /// <param name="RefWhite">The reference white the output should have</param> /// <returns>Returns a color with the converted values from the input</returns> internal double[] Do(UColor inColor, ColorModel outModel, WhitepointName RefWhite) { if (RefWhite != WhitepointName.Custom) OutReferenceWhite = WhitepointArr[(int)RefWhite]; else OutReferenceWhite = ReferenceWhite; OutputModel = outModel; RGBSpace = StandardColorspace; YCbCrSpace = StandardYCbCrSpace; SetInputColor(inColor); return Do(); }
/// <summary> /// Converts a color to a LCHuv color /// </summary> /// <param name="InColor">The color to convert</param> /// <param name="ReferenceWhite">The reference white to be used for the converted color</param> /// <returns>The converted color</returns> public UColorLCHuv ToLCHuv(UColor InColor, WhitepointName ReferenceWhite) { varArr = Do(InColor, ColorModel.CIELCHuv, ReferenceWhite); return new UColorLCHuv(OutReferenceWhite.Name, (ushort)(varArr[0] * 655.35), (ushort)(varArr[1] * 65535), (ushort)(varArr[2] * 182.041667)); }
/// <summary> /// Converts a color to a LCH99b color /// </summary> /// <param name="InColor">The color to convert</param> /// <returns>The converted color</returns> public UColorLCH99b ToLCH99b(UColor InColor) { varArr = Do(InColor, ColorModel.LCH99b, WhitepointName.D65); return new UColorLCH99b((ushort)(varArr[0] * 65.535), (ushort)(varArr[1] * 65535), (ushort)(varArr[2] * 182.041667)); }
/// <summary> /// Converts a color to a YCbCr color /// </summary> /// <param name="InColor">The color to convert</param> /// <param name="BaseColorspace">The colorspace the converted color will be based on</param> /// <param name="colorspace">The colorspace to be used for the converted color</param> /// <returns>The converted color</returns> public UColorYCbCr ToYCbCr(UColor InColor, RGBSpaceName BaseColorspace, YCbCrSpaceName colorspace) { varArr = Do(InColor, ColorModel.YCbCr, BaseColorspace, colorspace); return new UColorYCbCr(YCbCrSpace, RGBSpace, (ushort)(varArr[0] * 65535), (ushort)(varArr[1] * 65535), (ushort)(varArr[2] * 65535)); }
/// <summary> /// Converts a color to a YCbCr color /// </summary> /// <param name="InColor">The color to convert</param> /// <returns>The converted color</returns> public UColorYCbCr ToYCbCr(UColor InColor) { varArr = Do(InColor, ColorModel.YCbCr); return new UColorYCbCr(YCbCrSpace, RGBSpace, (ushort)(varArr[0] * 65535), (ushort)(varArr[1] * 65535), (ushort)(varArr[2] * 65535)); }
/// <summary> /// Converts a color to a XYZ color /// </summary> /// <param name="InColor">The color to convert</param> /// <param name="ReferenceWhite">The reference white to be used for the converted color</param> /// <returns>The converted color</returns> public UColorXYZ ToXYZ(UColor InColor, WhitepointName ReferenceWhite) { varArr = Do(InColor, ColorModel.CIEXYZ, ReferenceWhite); return new UColorXYZ(OutReferenceWhite.Name, (ushort)(varArr[0] * 65535), (ushort)(varArr[1] * 65535), (ushort)(varArr[2] * 65535)); }
/// <summary> /// Converts a color to an RGB color /// </summary> /// <param name="InColor">The color to convert</param> /// <param name="colorspace">The colorspace to be used for the converted color</param> /// <returns>The converted color</returns> public UColorRGB ToRGB(UColor InColor, RGBSpaceName colorspace) { varArr = Do(InColor, ColorModel.RGB, colorspace); return new UColorRGB(colorspace, (ushort)(varArr[0] * 65535), (ushort)(varArr[1] * 65535), (ushort)(varArr[2] * 65535)); }
/// <summary> /// Converts a color to an RGB color /// </summary> /// <param name="InColor">The color to convert</param> /// <returns>The converted color</returns> public UColorRGB ToRGB(UColor InColor) { varArr = Do(InColor, ColorModel.RGB); return new UColorRGB(RGBSpace, (ushort)(varArr[0] * 65535), (ushort)(varArr[1] * 65535), (ushort)(varArr[2] * 65535)); }
/// <summary> /// Converts a color to a Luv color /// </summary> /// <param name="InColor">The color to convert</param> /// <returns>The converted color</returns> public UColorLuv ToLuv(UColor InColor) { varArr = Do(InColor, ColorModel.CIELuv); return new UColorLuv(OutReferenceWhite.Name, (ushort)(varArr[0] * 655.35), (short)varArr[1], (short)varArr[2]); }
private void SetInputColor(UColor inColor) { InputModel = inColor.Model; DoAdaption = inColor.ReferenceWhite != OutReferenceWhite.Name; if (InputModel != ColorModel.Gray) { ValArr1 = inColor.DoubleColorArray; ValArr2 = inColor.DoubleColorArray; } else { ValArr1 = new double[] { ((UColorGray)inColor).G / 65535d, 0, 0 }; ValArr2 = new double[] { ((UColorGray)inColor).G / 65535d, 0, 0 }; } switch (InputModel) { case ColorModel.CIELab: case ColorModel.CIELCHab: case ColorModel.CIELCHuv: case ColorModel.LCH99: case ColorModel.LCH99b: case ColorModel.LCH99c: case ColorModel.LCH99d: case ColorModel.CIELuv: case ColorModel.CIEXYZ: case ColorModel.CIEYxy: case ColorModel.Gray: case ColorModel.DEF: case ColorModel.Bef: case ColorModel.BCH: if (inColor.ReferenceWhite == WhitepointName.Custom || OutReferenceWhite.Name == WhitepointName.Custom) DoAdaption = true; InputWhitepoint = WhitepointArr[(int)inColor.ReferenceWhite]; break; case ColorModel.HSL: InputRGBSpace = ((UColorHSL)inColor).Space; InputWhitepoint = InputRGBSpace.ReferenceWhite; DoAdaptionRGB(); break; case ColorModel.HSV: InputRGBSpace = ((UColorHSV)inColor).Space; InputWhitepoint = InputRGBSpace.ReferenceWhite; DoAdaptionRGB(); break; case ColorModel.RGB: InputRGBSpace = ((UColorRGB)inColor).Space; IsRGBLinear = ((UColorRGB)inColor).IsLinear; InputWhitepoint = InputRGBSpace.ReferenceWhite; DoAdaptionRGB(); break; case ColorModel.YCbCr: InputRGBSpace = ((UColorYCbCr)inColor).BaseSpace; InputYCbCrSpace = ((UColorYCbCr)inColor).Space; InputWhitepoint = InputRGBSpace.ReferenceWhite; DoAdaptionYCbCr(); break; default: throw new NotImplementedException(); } }
/// <summary> /// Converts a color to a Lab color /// </summary> /// <param name="InColor">The color to convert</param> /// <param name="ReferenceWhite">The reference white to be used for the converted color</param> /// <returns>The converted color</returns> public UColorLab ToLab(UColor InColor, WhitepointName ReferenceWhite) { varArr = Do(InColor, ColorModel.CIELab, ReferenceWhite); return new UColorLab(OutReferenceWhite.Name, (ushort)(varArr[0] * 655.35), (short)varArr[1], (short)varArr[2]); }
/// <summary> /// Converts a color to a Yxy color /// </summary> /// <param name="InColor">The color to convert</param> /// <param name="ReferenceWhite">The reference white to be used for the converted color</param> /// <returns>The converted color</returns> public UColorYxy ToYxy(UColor InColor, WhitepointName ReferenceWhite) { varArr = Do(InColor, ColorModel.CIEYxy, ReferenceWhite); return new UColorYxy(OutReferenceWhite.Name, (ushort)(varArr[0] * 65535), (short)varArr[1], (short)varArr[2]); }
/// <summary> /// Converts from one colorspace to another /// </summary> /// <param name="inColor">Input color</param> /// <param name="outModel">Output colormodel</param> /// <param name="colorspace">The colorspace the output should be in</param> /// <returns>Returns a color with the converted values from the input</returns> internal double[] Do(UColor inColor, ColorModel outModel, RGBSpaceName colorspace) { OutputModel = outModel; RGBSpace = colorspace; YCbCrSpace = StandardYCbCrSpace; OutReferenceWhite = WhitepointArr[(int)RGBColorspace.GetWhitepointName(colorspace)]; SetInputColor(inColor); return Do(); }
/// <summary> /// Converts a color to a LCHab color /// </summary> /// <param name="InColor">The color to convert</param> /// <returns>The converted color</returns> public UColorLCHab ToLCHab(UColor InColor) { varArr = Do(InColor, ColorModel.CIELCHab); return new UColorLCHab(OutReferenceWhite.Name, (ushort)(varArr[0] * 655.35), (ushort)(varArr[1] * 65535), (ushort)(varArr[2] * 182.041667)); }