예제 #1
0
        public static void ToColorSpace(IRgb color, ICmyk item)
        {
            var cmy = new Cmy();
            cmy.Initialize(color);

            var k = 1.0;
            if (cmy.C < k)
                k = cmy.C;
            if (cmy.M < k)
                k = cmy.M;
            if (cmy.Y < k)
                k = cmy.Y;
            item.K = k;

            if (k.BasicallyEqualTo(1))
            {
                item.C = 0;
                item.M = 0;
                item.Y = 0;
            }
            else
            {
                item.C = (cmy.C - k) / (1 - k);
                item.M = (cmy.M - k) / (1 - k);
                item.Y = (cmy.Y - k) / (1 - k);
            }
        }
예제 #2
0
        internal static void ToColorSpace(IRgb color, ICmyk item)
        {
            var cmy = new Cmy();

            cmy.Initialize(color);

            var k = 1.0;

            if (cmy.C < k)
            {
                k = cmy.C;
            }
            if (cmy.M < k)
            {
                k = cmy.M;
            }
            if (cmy.Y < k)
            {
                k = cmy.Y;
            }
            item.K = k;

            if (k.BasicallyEqualTo(1))
            {
                item.C = 0;
                item.M = 0;
                item.Y = 0;
            }
            else
            {
                item.C = (cmy.C - k) / (1 - k);
                item.M = (cmy.M - k) / (1 - k);
                item.Y = (cmy.Y - k) / (1 - k);
            }
        }
            public void SteelBlueCmyToHex()
            {
                var knownColor = new Cmy {
                    C = .72549, M = .49020, Y = .29412,
                };
                var expectedColor = new Hex("#4682B4");

                ExpectedValuesForKnownColor(knownColor, expectedColor);
            }
            public void SteelBlueMunsellToCmy()
            {
                var knownColor    = new Munsell("2.5PB 5/8");
                var expectedColor = new Cmy {
                    C = .72549, M = .49020, Y = .29412,
                };

                ExpectedValuesForKnownColor(knownColor, expectedColor);
            }
예제 #5
0
            public void SteelBlueCmyToLuv()
            {
                var knownColor = new Cmy {
                    C = .72549, M = .49020, Y = .29412,
                };
                var expectedColor = new Luv {
                    L = 52.467, U = -25.107, V = -48.374,
                };

                ExpectedValuesForKnownColor(knownColor, expectedColor);
            }
예제 #6
0
            public void SteelBlueCmyToYxy()
            {
                var knownColor = new Cmy {
                    C = .72549, M = .49020, Y = .29412,
                };
                var expectedColor = new Yxy {
                    Y1 = 20.562, X = .21934, Y2 = .24058,
                };

                ExpectedValuesForKnownColor(knownColor, expectedColor);
            }
예제 #7
0
            public void SteelBlueCmyToXyz()
            {
                var knownColor = new Cmy {
                    C = .72549, M = .49020, Y = .29412,
                };
                var expectedColor = new Xyz {
                    X = 18.746, Y = 20.562, Z = 46.161,
                };

                ExpectedValuesForKnownColor(knownColor, expectedColor);
            }
예제 #8
0
            public void SteelBlueCmyToRgb()
            {
                var knownColor = new Cmy {
                    C = .72549, M = .49020, Y = .29412,
                };
                var expectedColor = new Rgb {
                    R = 70, G = 130, B = 180,
                };

                ExpectedValuesForKnownColor(knownColor, expectedColor);
            }
예제 #9
0
            public void MaroonLchToCmy()
            {
                var knownColor = new Lch {
                    L = 24.829, C = 60.093, H = 38.180,
                };
                var expectedColor = new Cmy {
                    C = .509804, M = .99986, Y = 1,
                };

                ExpectedValuesForKnownColor(knownColor, expectedColor);
            }
예제 #10
0
            public void RedLabToCmy()
            {
                var knownColor = new Lab {
                    L = 53.233, A = 80.109, B = 67.220,
                };
                var expectedColor = new Cmy {
                    C = 0.0000035, M = .99970, Y = 1,
                };

                ExpectedValuesForKnownColor(knownColor, expectedColor);
            }
예제 #11
0
            public void GoldenrodRgbToCmy()
            {
                var knownColor = new Rgb {
                    R = 218, G = 165, B = 32,
                };
                var expectedColor = new Cmy {
                    C = .14510, M = .35294, Y = .87451,
                };

                ExpectedValuesForKnownColor(knownColor, expectedColor);
            }
예제 #12
0
            public void SteelBlueCmyToCmyk()
            {
                var knownColor = new Cmy {
                    C = .72549, M = .49020, Y = .29412,
                };
                var expectedColor = new Cmyk {
                    C = .61111, M = .27778, Y = 0, K = .29412,
                };

                ExpectedValuesForKnownColor(knownColor, expectedColor);
            }
예제 #13
0
            public void AquamarineHsvToCmy()
            {
                var knownColor = new Hsv {
                    H = 160, S = .5, V = 1,
                };
                var expectedColor = new Cmy {
                    C = .50196, M = 0, Y = .16666,
                };

                ExpectedValuesForKnownColor(knownColor, expectedColor);
            }
예제 #14
0
            public void BlackRgbToCmy()
            {
                var knownColor = new Rgb {
                    R = 0, G = 0, B = 0,
                };
                var expectedColor = new Cmy {
                    C = 1, M = 1, Y = 1,
                };

                ExpectedValuesForKnownColor(knownColor, expectedColor);
            }
예제 #15
0
            public void SilverLuvToCmy()
            {
                var knownColor = new Luv {
                    L = 77.704, U = .001, V = -.013,
                };
                var expectedColor = new Cmy {
                    C = .24706, M = .24704, Y = .24706,
                };

                ExpectedValuesForKnownColor(knownColor, expectedColor);
            }
예제 #16
0
            public void RivergumXyzToCmy()
            {
                var knownColor = new Xyz {
                    X = 13.123, Y = 15.372, Z = 13.174,
                };
                var expectedColor = new Cmy {
                    C = .614, M = .55494, Y = .62627,
                };

                ExpectedValuesForKnownColor(knownColor, expectedColor);
            }
예제 #17
0
            public void WhiteRgbToCmy()
            {
                var knownColor = new Rgb {
                    R = 255, G = 255, B = 255,
                };
                var expectedColor = new Cmy {
                    C = 0, M = 0, Y = 0,
                };

                ExpectedValuesForKnownColor(knownColor, expectedColor);
            }
예제 #18
0
            public void DarkVioletCmykToCmy()
            {
                var knownColor = new Cmyk {
                    C = .29858, M = 1, Y = 0, K = .17255,
                };
                var expectedColor = new Cmy {
                    C = .41961, M = 1, Y = .17255,
                };

                ExpectedValuesForKnownColor(knownColor, expectedColor);
            }
예제 #19
0
            public void SteelBlueCmyToHsb()
            {
                var knownColor = new Cmy {
                    C = .72549, M = .49020, Y = .29412,
                };
                var expectedColor = new Hsb {
                    H = 207, S = 44, B = 49,
                };

                ExpectedValuesForKnownColor(knownColor, expectedColor);
            }
예제 #20
0
            public void AliceBlueHsbToCmy()
            {
                var knownColor = new Hsb {
                    H = 208, S = 100, B = 97,
                };
                var expectedColor = new Cmy {
                    C = .06, M = .028, Y = 0,
                };

                ExpectedValuesForKnownColor(knownColor, expectedColor);
            }
예제 #21
0
            public void SteelBlueCmyToLch()
            {
                var knownColor = new Cmy {
                    C = .72549, M = .49020, Y = .29412,
                };
                var expectedColor = new Lch {
                    L = 52.467, C = 32.454, H = 262.796,
                };

                ExpectedValuesForKnownColor(knownColor, expectedColor);
            }
예제 #22
0
            public void SteelBlueCmyToLab()
            {
                var knownColor = new Cmy {
                    C = .72549, M = .49020, Y = .29412,
                };
                var expectedColor = new Lab {
                    L = 52.467, A = -4.070, B = -32.198,
                };

                ExpectedValuesForKnownColor(knownColor, expectedColor);
            }
예제 #23
0
        public static IRgb ToColor(ICmyk item)
        {
            var cmy = new Cmy
                {
                    C = (item.C * (1 - item.K) + item.K),
                    M = (item.M * (1 - item.K) + item.K),
                    Y = (item.Y * (1 - item.K) + item.K)
                };

            return cmy.ToRgb();
        }
예제 #24
0
        internal static IRgb ToColor(ICmyk item)
        {
            var cmy = new Cmy
            {
                C = (item.C * (1 - item.K) + item.K),
                M = (item.M * (1 - item.K) + item.K),
                Y = (item.Y * (1 - item.K) + item.K)
            };

            return(cmy.ToRgb());
        }
예제 #25
0
 protected override Rgb ToRgb()
 {
     var cmy = new Cmy
     {
         C = C * (1 - K) + K,
         M = M * (1 - K) + K,
         Y = Y * (1 - K) + K
     };
     return cmy.ToColorSpace<Rgb>();
 }
예제 #26
0
            protected override void FromRgb(Rgb color)
            {
                var cmy = new Cmy(color);
                var k = 1.0;

                if (cmy.C < k)
                    k = cmy.C;
                if (cmy.M < k)
                    k = cmy.M;
                if (cmy.Y < k)
                    k = cmy.Y;
                K = k;

                if (k.ApproximatelyEquals(1.0))
                {
                    C = 0;
                    M = 0;
                    Y = 0;
                }
                else
                {
                    C = (cmy.C - k) / (1 - k);
                    M = (cmy.M - k) / (1 - k);
                    Y = (cmy.Y - k) / (1 - k);
                }
            }