Пример #1
0
        public static GradientStopCollection FillGradients(GradientStopCollection stops)
        {
            GradientStopCollection result = new GradientStopCollection();

            result.Add(stops[0]);

            for (int i = 1; i < stops.Count; i++)
            {
                GradientStop stop     = stops[i];
                GradientStop previous = stops[i - 1];

                double progress = 0.5;
                double offset   = previous.Offset + (stop.Offset - previous.Offset) * progress;
                Color  color    = HslConversion.Blend(previous.Color, stop.Color, progress);

                result.Add(new GradientStop(color, offset));

                //if (Math.Abs(previous.Offset - stop.Offset) > float.Epsilon)
                //{
                //    for (int j = 1; j < 10; j++)
                //    {
                //        double progress = j / 10.0;
                //        double offset = previous.Offset + (stop.Offset - previous.Offset) * progress;
                //        Color color = HslConversion.Blend(previous.Color, stop.Color, progress);

                //        result.Add(new GradientStop(color, offset));
                //    }
                //}

                result.Add(stop);
            }
            return(result);
        }
Пример #2
0
        public double GetSampleScoreRaw(byte[] rgbPixels)
        {
            Color c   = GetAverageColor(rgbPixels);
            var   hsl = HslConversion.FromRgb(c.R, c.G, c.B);

            return(hsl.Item2);
        }
Пример #3
0
        private void UpdateColors()
        {
            rectColor.Fill = new SolidColorBrush(Color);
            txtR.Text      = "R: " + Color.R.ToString("D");
            txtG.Text      = "G: " + Color.G.ToString("D");
            txtB.Text      = "B: " + Color.B.ToString("D");

            var hsl = HslConversion.FromRgb(Color.R, Color.G, Color.B);

            txtH.Text = "H: " + hsl.Item1.ToString("f0");
            txtS.Text = "S: " + hsl.Item2.ToString("f0");
            txtL.Text = "L: " + hsl.Item3.ToString("f0");
        }
Пример #4
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);
        }
Пример #5
0
        public static GradientStopCollection FillGradients(List <HeatMapEntry> stops)
        {
            GradientStopCollection result = new GradientStopCollection();

            result.Add(stops[0].ToGradientStop());

            for (int i = 1; i < stops.Count; i++)
            {
                GradientStop stop     = stops[i].ToGradientStop();
                GradientStop previous = stops[i - 1].ToGradientStop();

                double progress = 0.5;
                double offset   = previous.Offset + (stop.Offset - previous.Offset) * progress;
                Color  color    = HslConversion.Blend(previous.Color, stop.Color, progress);

                result.Add(new GradientStop(color, offset));
                result.Add(stop);
            }
            return(result);
        }
Пример #6
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);
        }