public ColorLAB(double alpha, double l, double a, double b) { ColorLAB.check_lab(alpha, l, a, b); this._alpha = alpha; this._l = l; this._a = a; this._b = b; }
public void RgbConversionTest() { RGBWorkingSpaces workingSpaces = new RGBWorkingSpaces(); ColorRGB rgb = new ColorRGB(0.741176470588235D, 0.513725490196078D, 0.580392156862745D); ColorLAB lab = new ColorLAB(new ColorXYZ(rgb, workingSpaces.SRGB_D65_Degree2), workingSpaces.SRGB_D65_Degree2); ColorHCL hcl = new ColorHCL(lab); Console.WriteLine(hcl); }
public ColorHCL(ColorLAB labColor) { var tan = Math.Atan2(labColor.B, labColor.A); _h = tan > 0 ? (tan / PI) * 180 : 360 - (Math.Abs(tan) / PI) * 180; _c = Math.Sqrt(labColor.A * labColor.A + labColor.B * labColor.B); _l = labColor.L; _alpha = labColor.Alpha; }
public void ColorToHCLToColor() { var ws = new RGBWorkingSpaces(); ColorRGB rgb = new ColorRGB(1, 0, 0); ColorXYZ xyz = new ColorXYZ(rgb, ws.Adobe_D65_Degree2); ColorLAB lab = new ColorLAB(xyz, ws.Adobe_D65_Degree2); ColorHCL hcl = new ColorHCL(lab); Console.WriteLine(hcl.ToColor()); }
private TestColor TestColorLAB() { var color = ColorLAB.FromColor(testColor); var color2 = (ColorRGB)color.ToRgb();; var nativeValue = string.Format("L:{0:0.0#} A:{1:0.0#} B:{2:0.0#}", color.L, color.A, color.B); return(new TestColor { Name = "LAB", Value = color2.ToHex(), NativeValue = nativeValue }); }
public void LabToHCLToLab() { const double epsilon = 0.0001; var lab = new ColorLAB(1, 50, 10, 10); var hcl = new ColorHCL(lab); var hclToLab = hcl.ToLab(); Assert.Less(lab.Alpha - hclToLab.Alpha, epsilon); Assert.Less(lab.L - hclToLab.L, epsilon); Assert.Less(lab.A - hclToLab.A, epsilon); Assert.Less(lab.B - hclToLab.B, epsilon); }
public void GenerateFromLabTest() { const double epsilon = 0.01; //#4BC8E6 ColorLAB lab = new ColorLAB(1, 75, -25, -25); var hcl = new ColorHCL(lab); Console.WriteLine(lab); Console.WriteLine(hcl); Assert.Less(lab.Alpha - hcl.Alpha, epsilon); Assert.Less(hcl.H - 225, epsilon); Assert.Less(hcl.C - 35.355, epsilon); Assert.Less(hcl.L - 75, epsilon); }
public static MonochromaticColorScheme FromColor(ColorRGB color) { //if (flatten) { // var labColors = ColorScheme.GenerateColors (24, 0, .66, .81); // color = color.NearestFlatColor (labColors); //} var lab = (ColorLAB)ColorLAB.FromColor(color); var dark = new Swatch(DarkColorID, ColorLAB.ToColor(lab.L - 20, lab.A, lab.B)); var darkened = new Swatch(DarkenedColorID, ColorLAB.ToColor(lab.L - 10, lab.A, lab.B)); var primary = new Swatch(PrimaryColorID, color); var lightened = new Swatch(LightenedColorID, ColorLAB.ToColor(lab.L + 10, lab.A, lab.B)); var light = new Swatch(LightColorID, ColorLAB.ToColor(lab.L + 20, lab.A, lab.B)); return(new MonochromaticColorScheme(new Swatch [] { dark, darkened, primary, lightened, light })); }
public ColorXYZ(ColorLAB lab, RGBWorkingSpace ws) { ColorXYZ i = ws.ReferenceWhite.ColorXYZ; double delta = 6.0 / 29.0; double fy = (lab.L + 16) / 116.0; double fx = fy + (lab.A / 500.0); double fz = fy - (lab.B / 200.0); double x = (fx > delta) ? i.X * (fx * fx * fx) : (fx - 16.0 / 116.0) * 3 * (delta * delta) * i.X; double y = (fy > delta) ? i.Y * (fy * fy * fy) : (fy - 16.0 / 116.0) * 3 * (delta * delta) * i.Y; double z = (fz > delta) ? i.Z * (fz * fz * fz) : (fz - 16.0 / 116.0) * 3 * (delta * delta) * i.Z; this._alpha = lab.Alpha; this._x = x; this._y = y; this._z = z; }
public void RGBtoLABConversion() { var rgb = ColorRGB.FromHex("#6653B2"); var lab = (ColorLAB)ColorLAB.FromColor(rgb); var rgbConverted = (ColorRGB)lab.ToRgb(); // LAB var l = Math.Truncate(100 * lab.L) / 100; var a = Math.Truncate(100 * lab.A) / 100; var b = Math.Truncate(100 * lab.B) / 100; Assert.AreEqual(l, 41.57); Assert.AreEqual(a, 31.37); Assert.AreEqual(b, -52.39); // Differs from Colorize.org which shows -48.16 // RGB Converted Assert.AreEqual(rgbConverted.Red, 102); Assert.AreEqual(rgbConverted.Green, 83); Assert.AreEqual(rgbConverted.Blue, 178); }