Exemple #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;
            }
Exemple #2
0
            internal static IRgb ToColor(ILuv item)
            {
                var          white  = XyzConverter.WhiteReference;
                const double c      = -1.0 / 3.0;
                var          uPrime = (4.0 * white.X) / GetDenominator(white);
                var          vPrime = (9.0 * white.Y) / GetDenominator(white);
                var          a      = (1.0 / 3.0) * ((52.0 * item.L) / (item.U + 13 * item.L * uPrime) - 1.0);
// ReSharper disable once InconsistentNaming
                var imteL_16_116 = (item.L + 16.0) / 116.0;
                var y            = item.L > XyzConverter.Kappa * XyzConverter.Epsilon
                    ? imteL_16_116 * imteL_16_116 * imteL_16_116
                    : item.L / XyzConverter.Kappa;
                var b   = -5.0 * y;
                var d   = y * ((39.0 * item.L) / (item.V + 13.0 * item.L * vPrime) - 5.0);
                var x   = (d - b) / (a - c);
                var z   = x * a + b;
                var xyz = new Xyz
                {
                    X = 100 * x,
                    Y = 100 * y,
                    Z = 100 * z
                };

                return(xyz.ToRgb());
            }
        protected static void ExpectedValuesForKnownColor(IColorSpace knownColor, ILuv expectedColor)
        {
            var target = knownColor.To <Luv>();

            Assert.IsTrue(CloseEnough(expectedColor.L, target.L), "(L)" + expectedColor.L + " != " + target.L);
            Assert.IsTrue(CloseEnough(expectedColor.U, target.U), "(U)" + expectedColor.U + " != " + target.U);
            Assert.IsTrue(CloseEnough(expectedColor.V, target.V), "(V)" + expectedColor.V + " != " + target.V);
        }
        protected static void ExpectedValuesForKnownColor(IColorSpace knownColor, ILuv expectedColor)
        {
            var target = knownColor.To <Luv>();

            Assert.AreEqual(expectedColor.L, target.L, 0.5, "(L)" + expectedColor.L + " != " + target.L);
            Assert.AreEqual(expectedColor.U, target.U, 1.12, "(U)" + expectedColor.U + " != " + target.U);
            Assert.AreEqual(expectedColor.V, target.V, 0.61, "(V)" + expectedColor.V + " != " + target.V);
        }
        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;
        }
 internal static IRgb ToColor(ILuv item)
 {
     var white = XyzConverter.WhiteReference;
     const double c = -1.0 / 3.0;
     var uPrime = (4.0 * white.X) / GetDenominator(white);
     var vPrime = (9.0 * white.Y) / GetDenominator(white);
     var a = (1.0 / 3.0) * ((52.0 * item.L) / (item.U + 13 * item.L * uPrime) - 1.0);
     var imteL_16_116 = (item.L + 16.0) / 116.0;
     var y = item.L > XyzConverter.Kappa * XyzConverter.Epsilon
                 ? imteL_16_116 * imteL_16_116 * imteL_16_116
                 : item.L / XyzConverter.Kappa;
     var b = -5.0 * y;
     var d = y * ((39.0 * item.L) / (item.V + 13.0 * item.L * vPrime) - 5.0);
     var x = (d - b) / (a - c);
     var z = x * a + b;
     var xyz = new Xyz
         {
             X = 100 * x,
             Y = 100 * y,
             Z = 100 * z
         };
     return xyz.ToRgb();
 }
        internal static IRgb ToColor(ILuv item)
        {
            var          white      = XyzConverter.WhiteReference;
            const double c          = -1.0 / 3.0;
            var          uPrime     = 4.0 * white.X / GetDenominator(white);
            var          vPrime     = 9.0 * white.Y / GetDenominator(white);
            var          a          = 1.0 / 3.0 * (52.0 * item.L / (item.U + 13 * item.L * uPrime) - 1.0);
            var          imteL16116 = (item.L + 16.0) / 116.0;
            var          y          = item.L > XyzConverter.Kappa * XyzConverter.Epsilon
                ? imteL16116 * imteL16116 * imteL16116
                : item.L / XyzConverter.Kappa;
            var b   = -5.0 * y;
            var d   = y * (39.0 * item.L / (item.V + 13.0 * item.L * vPrime) - 5.0);
            var x   = (d - b) / (a - c);
            var z   = x * a + b;
            var xyz = new Xyz
            {
                X = 100 * x,
                Y = 100 * y,
                Z = 100 * z
            };

            return(xyz.ToRgb());
        }
Exemple #8
0
        protected static void ExpectedValuesForKnownColor(IColorSpace knownColor, ILuv expectedColor)
        {
            var target = knownColor.To<Luv>();

            Assert.IsTrue(CloseEnough(expectedColor.L,target.L),"(L)" + expectedColor.L + " != " + target.L);
            Assert.IsTrue(CloseEnough(expectedColor.U,target.U),"(U)" + expectedColor.U + " != " + target.U);
            Assert.IsTrue(CloseEnough(expectedColor.V,target.V),"(V)" + expectedColor.V + " != " + target.V);
        }
Exemple #9
0
 public CmyColor(ILuv luv)
 {
     Initialize(luv.ToRgb());
 }
Exemple #10
0
 public LuvColor(ILuv luv)
 {
     Ordinals = luv.Ordinals;
 }
Exemple #11
0
 public HunterLabColor(ILuv luv)
 {
     Initialize(luv.ToRgb());
 }