public void CompandedRgbToLinearRgb( float compandedR, float compandedG, float compandedB, out float linearR, out float linearG, out float linearB) { switch (_compandingFunction) { case ColorCompandingFunction.Gamma: linearR = ColorCompandingUtils.ApplyInverseGammaCompanding(compandedR, _gamma); linearG = ColorCompandingUtils.ApplyInverseGammaCompanding(compandedG, _gamma); linearB = ColorCompandingUtils.ApplyInverseGammaCompanding(compandedB, _gamma); break; case ColorCompandingFunction.SRGB: linearR = ColorCompandingUtils.ApplyInverseSRGBCompanding(compandedR); linearG = ColorCompandingUtils.ApplyInverseSRGBCompanding(compandedG); linearB = ColorCompandingUtils.ApplyInverseSRGBCompanding(compandedB); break; case ColorCompandingFunction.LStar: linearR = ColorCompandingUtils.ApplyInverseLStarCompanding(compandedR); linearG = ColorCompandingUtils.ApplyInverseLStarCompanding(compandedG); linearB = ColorCompandingUtils.ApplyInverseLStarCompanding(compandedB); break; default: throw new InternalException("Illegal companding function"); } }
public void ApplyInverseLStarCompanding_is_inverse_of_ApplyLStarCompanding() { for (float x = 0; x <= 1; x += Step) { var a = ColorCompandingUtils.ApplyLStarCompanding(x); Assert.That(ColorCompandingUtils.ApplyInverseLStarCompanding(a), Is.EqualTo(x).Within(Epsilon)); } }
public void ApplyInverseLStarCompanding_is_correct() { Assert.That(ColorCompandingUtils.ApplyInverseLStarCompanding(0), Is.EqualTo(0).Within(Epsilon)); Assert.That(ColorCompandingUtils.ApplyInverseLStarCompanding(1), Is.EqualTo(1).Within(Epsilon)); Assert.That(ColorCompandingUtils.ApplyInverseLStarCompanding(0.01f), Is.EqualTo(0.001107f).Within(Epsilon)); Assert.That(ColorCompandingUtils.ApplyInverseLStarCompanding(0.6f), Is.EqualTo(0.2812333f).Within(Epsilon)); }