/// <summary> /// (Метод устарел и не используется) /// Передает все фигуры текущего слоя в глобальный слой /// </summary> /// <param name="globalLayout">Глобальный слой</param> public void SetState(ref PointsCollection globalLayout) { foreach (Shape f in _figures) { globalLayout.AddRangePoints(f.AllPointsFigure()); } }
public Field(Layout l) { Width = l.Width; Height = l.Height; _globalLayout = new PointsCollection(); _layouts = new List <Layout>(); _layouts.Add(l); }
/// <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); }
/// <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()); }
/// <summary> /// Загружает новую модель фигуры /// </summary> /// <param name="source">Строка описывающая модель</param> public virtual void LoadNewModel(string source) { _pointsCollection = Load(source); OriginPoint = FindOriginPoint(); }