示例#1
0
 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);
        }
示例#3
0
        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);
        }
示例#8
0
        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 }));
        }
示例#9
0
        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);
        }