Esempio n. 1
0
            internal static void ToColorSpace(IRgb color, ILuv item)
            {
                var xyz   = new Xyz();
                var white = XyzConverter.WhiteReference;

                xyz.Initialize(color);

                var y = xyz.Y / XyzConverter.WhiteReference.Y;

                item.L = y > XyzConverter.Epsilon ? 116.0 * XyzConverter.CubicRoot(y) - 16.0 : XyzConverter.Kappa * y;

                var targetDenominator    = GetDenominator(xyz);
                var referenceDenominator = GetDenominator(white);
                // ReSharper disable CompareOfFloatsByEqualityOperator
                var xTarget = targetDenominator == 0
                    ? 0
                    : ((4.0 * xyz.X / targetDenominator) - (4.0 * white.X / referenceDenominator));
                var yTarget = targetDenominator == 0
                    ? 0
                    : ((9.0 * xyz.Y / targetDenominator) - (9.0 * white.Y / referenceDenominator));

                // ReSharper restore CompareOfFloatsByEqualityOperator

                item.U = 13.0 * item.L * xTarget;
                item.V = 13.0 * item.L * yTarget;
            }
Esempio n. 2
0
 public override IRgb ToRgb()
 {
     return(XyzConverter.ToColor(this));
 }
Esempio n. 3
0
 public override void Initialize(IRgb color)
 {
     XyzConverter.ToColorSpace(color, this);
 }
 public void Initialize(Rgb color)
 {
     XyzConverter.ToColorSpace(color, this);
 }