示例#1
0
 /// <summary>
 /// (Метод устарел и не используется)
 /// Передает все фигуры текущего слоя в глобальный слой
 /// </summary>
 /// <param name="globalLayout">Глобальный слой</param>
 public void SetState(ref PointsCollection globalLayout)
 {
     foreach (Shape f in _figures)
     {
         globalLayout.AddRangePoints(f.AllPointsFigure());
     }
 }
示例#2
0
 public Field(Layout l)
 {
     Width         = l.Width;
     Height        = l.Height;
     _globalLayout = new PointsCollection();
     _layouts      = new List <Layout>();
     _layouts.Add(l);
 }
示例#3
0
        /// <summary>
        /// Создает коллекцию точек фигуры из строки
        /// </summary>
        /// <param name="source">Строка описывающая фигуру. Пример: "-x-|1*1|1-1"</param>
        /// <returns>Коллекция точек</returns>
        private PointsCollection Load(string source)
        {
            PointsCollection newCollection = new PointsCollection();
            int x    = this.X;
            int y    = this.Y;
            int maxX = 0;

            for (int i = 0; i < source.Length; i++)
            {
                switch (source[i])
                {
                case '1': {
                    newCollection.AddPoint(new PointShape(x, y));
                    x++;
                    if (maxX < x)
                    {
                        maxX = x;
                    }
                    break;
                }

                case '|': {
                    x = this.X;
                    y++;
                    break;
                }

                case '*': {
                    newCollection.AddPoint(new PointShape(x, y, true));
                    x++;
                    break;
                }

                case 'x': {
                    newCollection.AddPoint(new PointShape(x, y, false, true));
                    x++;
                    break;
                }

                default: {
                    x++;
                    break;
                }
                }
            }

            this.Width  = maxX - X;
            this.Height = y - Y + 1;

            return(newCollection);
        }
示例#4
0
        /// <summary>
        /// Ищет точки по заданному lambda-выражению
        /// </summary>
        /// <param name="func">Lambda-выражение</param>
        /// <param name="maxCount">Максимальное число найденых элементов (-1 = все)</param>
        /// <param name="indexDefault">Если в коллекции по условию не будет найдено ни одного элемента, то вернется элемент с заданым индексом. Если ни чего не нужно вовращать, введите отрицательное значение</param>
        /// <returns>Найденные точки</returns>
        protected PointShape[] FindPoints(Func <PointShape, bool> func, int maxCount = -1, int indexDefault = 0)
        {
            PointsCollection foundPointsCollection = new PointsCollection();

            int counter = 0;

            foreach (PointShape p in AllPointsFigure().Where(func))
            {
                foundPointsCollection.AddPoint(p);
                counter++;
                if (maxCount > 0 && counter == maxCount)
                {
                    return(foundPointsCollection.AllPoints());
                }
            }

            if (foundPointsCollection.AllPoints().Length == 0 && indexDefault >= 0)
            {
                foundPointsCollection.AddPoint(AllPointsFigure()[indexDefault]);
            }

            return(foundPointsCollection.AllPoints());
        }
示例#5
0
 /// <summary>
 /// Загружает новую модель фигуры
 /// </summary>
 /// <param name="source">Строка описывающая модель</param>
 public virtual void LoadNewModel(string source)
 {
     _pointsCollection = Load(source);
     OriginPoint       = FindOriginPoint();
 }