public List <Figure> GetBestFigures(Geo.Rectangle searchBox, List <Type> blacklist, List <Type> whitelist) { var hits = QuadTree.Query(searchBox).ToList(); //Figures.Where(f => searchBox.Contains(f.BoundingBox)).ToList(); var toFilterOut = new List <Figure>(); foreach (var type in blacklist) { foreach (var figure in hits) { if (figure.GetType().GetInterfaces().Contains(type)) { toFilterOut.Add(figure); } else if (figure.GetType() == type) { toFilterOut.Add(figure); } } } foreach (var filtered in toFilterOut) { hits.Remove(filtered); } return(hits); }
protected Figure() { BoundingBox = new Geo.Rectangle(X, Y, Width, Height); IsDragable = true; IsSelectable = true; IsVisible = true; ZOrder = 0; SetSnapTargets(SnapTargets.Center | SnapTargets.MidPoints | SnapTargets.Vertices); }
public void ForceSetDimensions(Geo.Rectangle rectangle) { X = rectangle.X; Y = rectangle.Y; Width = rectangle.Width; Height = rectangle.Height; Canvas?.NeedsRepaint(this); }