Ejemplo n.º 1
0
    public void Equals_Same()
    {
        var first  = new xyChromaticity(x: .1, y: .205);
        var second = new xyChromaticity(x: .1, y: .205);

        CustomAssert.EqualsWithHashCode(first, second);
    }
Ejemplo n.º 2
0
    public void HowToComputeColorFromCCT()
    {
        double         temperature  = 3000; // in K
        xyChromaticity chromaticity = CCTConverter.GetChromaticityOfCCT(temperature);

        // asserts
        Assert.Equal(0.43657898148148144, chromaticity.x, DoubleComparer);
        Assert.Equal(0.4041745241092054, chromaticity.y, DoubleComparer);

        IColorConverter <xyChromaticity, RGBColor> converter = new ConverterBuilder().Fromxy(Illuminants.D65).ToRGB(RGBWorkingSpaces.sRGB).Build();
        RGBColor color = converter.Convert(chromaticity);

        // asserts
        Assert.Equal(1.282323002024544, color.R, DoubleComparer);
        Assert.Equal(0.92870160729369322, color.G, DoubleComparer);
        Assert.Equal(0.55886769485605214, color.B, DoubleComparer);

        color = color.NormalizeIntensity();

        // asserts
        Assert.Equal(1, color.R, DoubleComparer);
        Assert.Equal(0.72423375844264681, color.G, DoubleComparer);
        Assert.Equal(0.4358244326692311, color.B, DoubleComparer);

        color.ToRGB8Bit(out var r, out var g, out var b);

        // asserts
        Assert.Equal(255, r);
        Assert.Equal(185, g);
        Assert.Equal(111, b);
    }
Ejemplo n.º 3
0
    public void Equals_Different()
    {
        var first  = new xyChromaticity(x: .2, y: .205);
        var second = new xyChromaticity(x: .1, y: .205);

        CustomAssert.NotEqualsWithHashCode(first, second);
    }
Ejemplo n.º 4
0
    public void SamplesXy()
    {
        // red
        var c1 = new xyChromaticity(0.5736, 0.3209);

        // white/gray/black (relative to D65 illuminant)
        var c2 = new xyChromaticity(0.3127, 0.3290);
    }
Ejemplo n.º 5
0
    public void Dctor()
    {
        const double x1 = 10;
        const double y1 = 20.5;

        var(x2, y2) = new xyChromaticity(x1, y1);
        Assert.Equal(x1, x2);
        Assert.Equal(y1, y2);
    }
Ejemplo n.º 6
0
    public void VectorCtor()
    {
        var first  = new xyChromaticity(x: .1, y: .205);
        var vector = new[] { .1, .205 };
        var second = new xyChromaticity(vector);

        CustomAssert.EqualsWithHashCode(first, second);
        Assert.Equal(vector, second.Vector);
    }
Ejemplo n.º 7
0
    public void ChromaticityAndXySpace()
    {
        var converter       = new ConverterBuilder().Fromxy().ToXYZ().Build();
        var d93Chromaticity = new xyChromaticity(0.28315, 0.29711);
        var d93WhitePoint   = converter.Convert(d93Chromaticity); // XYZ [X=0.95, Y=1, Z=1.41]

        Assert.Equal(0.95301403520581607, d93WhitePoint.X);
        Assert.Equal(1, d93WhitePoint.Y);
        Assert.Equal(1.4127427552085088, d93WhitePoint.Z);
    }
Ejemplo n.º 8
0
    public void HowToComputeTemperatureOfAColor()
    {
        RGBColor color = RGBColor.FromRGB8Bit(255, 121, 0);
        IColorConverter <RGBColor, xyChromaticity> converter = new ConverterBuilder().FromRGB(RGBWorkingSpaces.sRGB).Toxy(Illuminants.D65).Build();
        xyChromaticity chromaticity = converter.Convert(color); // xy [x=0.55, y=0.4]

        // asserts
        Assert.Equal(0.55117772083302841, chromaticity.x, DoubleComparer);
        Assert.Equal(0.40053533933847751, chromaticity.y, DoubleComparer);

        double temperature = CCTConverter.GetCCTOfChromaticity(chromaticity); // 1293 K

        // asserts
        Assert.Equal(1293.0206041090441, temperature, DoubleComparer);
    }
Ejemplo n.º 9
0
    public void XyToRGB()
    {
        var inputXy         = new xyChromaticity(0.5736, 0.3209);
        var rgbWorkingSpace = RGBWorkingSpaces.sRGB;

        var xyToLinearRgb       = new ConverterBuilder().Fromxy(rgbWorkingSpace.WhitePoint).ToLinearRGB(rgbWorkingSpace).Build();
        var linearRgb           = xyToLinearRgb.Convert(inputXy); // LinearRGB [R=4.09, G=0.16, B=0.24]
        var normalizedLinearRgb = linearRgb.NormalizeIntensity(); // LinearRGB [R=1, G=0.04, B=0.06]

        var linearRgbToRgb = new ConverterBuilder().FromLinearRGB(rgbWorkingSpace).ToRGB(rgbWorkingSpace).Build();
        var outputRgb      = linearRgbToRgb.Convert(normalizedLinearRgb); // RGB [R=1, G=0.22, B=0.27]

        Assert.Equal(4.09118633506919, linearRgb.R);
        Assert.Equal(0.1571363198987878, linearRgb.G);
        Assert.Equal(0.24301157278955215, linearRgb.B);

        Assert.Equal(0.9999999999999999, outputRgb.R);
        Assert.Equal(0.21628795305057674, outputRgb.G);
        Assert.Equal(0.2703317877324105, outputRgb.B);
    }
Ejemplo n.º 10
0
    public void ToString_Simple()
    {
        var color = new xyChromaticity(x: .1, y: .205);

        Assert.Equal("xy [x=0.1, y=0.21]", color.ToString());
    }