Beispiel #1
0
        /// <summary>
        /// Chromatic adaptation
        /// The adaptation can be also performed alone (e.g. from CIELAB D50 to CIELAB D65).
        /// </summary>
        private void ChromaticAdaptation()
        {
            LabColor input = new LabColor(10, 20, 30, Illuminants.D50);

            var converter = new ColourfulConverter {
                TargetLabWhitePoint = Illuminants.D65
            };

            LabColor output = converter.Adapt(input);
        } // end ChromaticAdaptation
        public void Adapt_Lab_D65_To_D50(double l1, double a1, double b1, double l2, double a2, double b2)
        {
            // arrange
            var input          = new LabColor(l1, a1, b1, Illuminants.D65);
            var expectedOutput = new LabColor(l2, a2, b2);
            var converter      = new ColourfulConverter {
                TargetLabWhitePoint = Illuminants.D50
            };

            // action
            LabColor output = converter.Adapt(input);

            // assert
            Assert.That(output.L, Is.EqualTo(expectedOutput.L).Using(DoublePrecisionComparer));
            Assert.That(output.a, Is.EqualTo(expectedOutput.a).Using(DoublePrecisionComparer));
            Assert.That(output.b, Is.EqualTo(expectedOutput.b).Using(DoublePrecisionComparer));
        }
        public void Adapt_LChab_D50_To_D65(double l1, double c1, double h1, double l2, double c2, double h2)
        {
            // arrange
            var input          = new LChabColor(l1, c1, h1, Illuminants.D50);
            var expectedOutput = new LChabColor(l2, c2, h2);
            var converter      = new ColourfulConverter {
                TargetLabWhitePoint = Illuminants.D65
            };

            // action
            LChabColor output = converter.Adapt(input);

            // assert
            Assert.That(output.L, Is.EqualTo(expectedOutput.L).Using(DoubleRoundingComparer));
            Assert.That(output.C, Is.EqualTo(expectedOutput.C).Using(DoubleRoundingComparer));
            Assert.That(output.h, Is.EqualTo(expectedOutput.h).Using(DoubleRoundingComparer));
        }
        public void Adapt_RGB_sRGB_To_WideGamutRGB(double r1, double g1, double b1, double r2, double g2, double b2)
        {
            // arrange
            var input          = new RGBColor(r1, g1, b1, RGBWorkingSpaces.sRGB);
            var expectedOutput = new RGBColor(r2, g2, b2, RGBWorkingSpaces.WideGamutRGB);
            var converter      = new ColourfulConverter {
                TargetRGBWorkingSpace = RGBWorkingSpaces.WideGamutRGB
            };

            // action
            RGBColor output = converter.Adapt(input);

            // assert
            Assert.AreEqual(expectedOutput.WorkingSpace, output.WorkingSpace);
            Assert.That(output.R, Is.EqualTo(expectedOutput.R).Using(DoubleRoundingComparer));
            Assert.That(output.G, Is.EqualTo(expectedOutput.G).Using(DoubleRoundingComparer));
            Assert.That(output.B, Is.EqualTo(expectedOutput.B).Using(DoubleRoundingComparer));
        }
        public void Adapt_XYZ_D65_To_D50_Bradford(double x1, double y1, double z1, double x2, double y2, double z2)
        {
            // arrange
            var input          = new XYZColor(x1, y1, z1);
            var expectedOutput = new XYZColor(x2, y2, z2);
            var converter      = new ColourfulConverter
            {
                WhitePoint = Illuminants.D50
            };

            // action
            XYZColor output = converter.Adapt(input, Illuminants.D65);

            // assert
            Assert.That(output.X, Is.EqualTo(expectedOutput.X).Using(DoubleRoundingComparer));
            Assert.That(output.Y, Is.EqualTo(expectedOutput.Y).Using(DoubleRoundingComparer));
            Assert.That(output.Z, Is.EqualTo(expectedOutput.Z).Using(DoubleRoundingComparer));
        }
        public void Adapt_XYZ_D65_To_D50_XYZScaling(double x1, double y1, double z1, double x2, double y2, double z2)
        {
            // arrange
            var input          = new XYZColor(x1, y1, z1);
            var expectedOutput = new XYZColor(x2, y2, z2);
            var converter      = new ColourfulConverter
            {
                ChromaticAdaptation = new VonKriesChromaticAdaptation(LMSTransformationMatrix.XYZScaling),
                WhitePoint          = Illuminants.D50
            };

            // action
            XYZColor output = converter.Adapt(input, Illuminants.D65);

            // assert
            Assert.That(output.X, Is.EqualTo(expectedOutput.X).Using(DoubleRoundingComparer));
            Assert.That(output.Y, Is.EqualTo(expectedOutput.Y).Using(DoubleRoundingComparer));
            Assert.That(output.Z, Is.EqualTo(expectedOutput.Z).Using(DoubleRoundingComparer));
        }
        public void Adapt_XYZ_D65_To_D50_VonKries(double x1, double y1, double z1, double x2, double y2, double z2)
        {
            // arrange
            var input          = new XYZColor(x1, y1, z1);
            var expectedOutput = new XYZColor(x2, y2, z2);
            var converter      = new ColourfulConverter
            {
                ChromaticAdaptation = new VonKriesChromaticAdaptation(LMSTransformationMatrix.VonKriesHPEAdjusted),
                WhitePoint          = Illuminants.D50
            };

            // action
            var output = converter.Adapt(input, Illuminants.D65);

            // assert
            Assert.Equal(output.X, expectedOutput.X, DoubleRoundingComparer);
            Assert.Equal(output.Y, expectedOutput.Y, DoubleRoundingComparer);
            Assert.Equal(output.Z, expectedOutput.Z, DoubleRoundingComparer);
        }
Beispiel #8
0
 public RGBColor ColourfulConvert()
 {
     return(ColourfulConverter.Adapt(RGBColor));
 }
Beispiel #9
0
 public void Issue48_NullReferenceExceptionOnDefault()
 {
     var defaultColor = default(LinearRGBColor);
     var converter    = new ColourfulConverter();
     var actual       = converter.Adapt(defaultColor);
 }