using System; using System.Collections.Generic; using System.Linq; using System.Text; using Microsoft.Research.DynamicDataDisplay.Filters; using Microsoft.Research.DynamicDataDisplay.Common; using System.Collections.Specialized; using System.Windows; namespace Microsoft.Research.DynamicDataDisplay.Charts { /// /// Represents a collection of point filters of . /// public sealed class FilterCollection : D3Collection { protected override void OnItemAdding(IPointsFilter item) { if (item == null) throw new ArgumentNullException("item"); } protected override void OnItemAdded(IPointsFilter item) { item.Changed += OnItemChanged; } private void OnItemChanged(object sender, EventArgs e) { OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Reset)); } protected override void OnItemRemoving(IPointsFilter item) { item.Changed -= OnItemChanged; } internal List Filter(List points, Rect screenRect) { foreach (var filter in Items) { filter.SetScreenRect(screenRect); points = filter.Filter(points); } return points; } } }