Пример #1
0
        /// <summary>
        /// Retrieves a sequence of adjacent horizontal same-color segments
        /// </summary>
        /// <param name="field">from this field</param>
        /// <param name="y"></param>
        /// <returns></returns>
        static SpanList GetSpansFromLine(Field field, int y)
        {
            SpanList result         = new SpanList();
            Color    currentElement = field[0, y];
            Span     current        = new Span()
            {
                StartX = 0, Y = y, Color = currentElement
            };

            for (int x = 1; x < field.Size.Width; x++)
            {
                if (field[x, y] != currentElement)
                {
                    currentElement = field[x, y];
                    current.EndX   = x - 1;
                    result.Add(current);
                    current = new Span()
                    {
                        StartX = x, Y = y, Color = currentElement
                    };
                }
            }

            current.EndX = field.Size.Width - 1;
            result.Add(current);
            return(result);
        }