Esempio n. 1
0
        private bool CheckSample(byte r1, byte g1, byte b1, byte r2, byte g2, byte b2)
        {
            if (Red == null)
            {
                return(false);
            }

            if (!Red.IsAcceptableValue(Math.Abs(r1 - r2)))
            {
                return(false);
            }
            if (!Green.IsAcceptableValue(Math.Abs(g1 - g2)))
            {
                return(false);
            }
            if (!Blue.IsAcceptableValue(Math.Abs(b1 - b2)))
            {
                return(false);
            }

            if (Hue.State != ConditionState.NotUsed || Saturation.State != ConditionState.NotUsed ||
                Luminosity.State != ConditionState.NotUsed)
            {
                var hsl1 = HslConversion.FromRgb(r1, g1, b1);
                var hsl2 = HslConversion.FromRgb(r2, g2, b2);

                var hsl = new Tuple <double, double, double>(Math.Abs(hsl1.Item1 - hsl2.Item1),
                                                             Math.Abs(hsl1.Item2 - hsl2.Item2), Math.Abs(hsl1.Item3 - hsl2.Item3));

                if (hsl.Item3 > 180)
                {
                    hsl = new Tuple <double, double, double>(hsl.Item1, hsl.Item2, 360 - hsl.Item3);
                }

                if (!Hue.IsAcceptableValue((int)Math.Round(hsl.Item1)))
                {
                    return(false);
                }
                if (!Saturation.IsAcceptableValue((int)Math.Round(hsl.Item2)))
                {
                    return(false);
                }
                if (!Luminosity.IsAcceptableValue((int)Math.Round(hsl.Item3)))
                {
                    return(false);
                }
            }

            return(true);
        }
Esempio n. 2
0
        private bool CheckSample(byte r, byte g, byte b)
        {
            if (Red == null)
            {
                return(false);
            }

            if (!Red.IsAcceptableValue(r))
            {
                return(false);
            }
            if (!Green.IsAcceptableValue(g))
            {
                return(false);
            }
            if (!Blue.IsAcceptableValue(b))
            {
                return(false);
            }

            if (Hue.State != ConditionState.NotUsed || Saturation.State != ConditionState.NotUsed ||
                Luminosity.State != ConditionState.NotUsed)
            {
                var hsl = HslConversion.FromRgb(r, g, b);

                if (!Hue.IsAcceptableValue((int)Math.Round(hsl.Item1)))
                {
                    return(false);
                }
                if (!Saturation.IsAcceptableValue((int)Math.Round(hsl.Item2)))
                {
                    return(false);
                }
                if (!Luminosity.IsAcceptableValue((int)Math.Round(hsl.Item3)))
                {
                    return(false);
                }
            }

            return(true);
        }