示例#1
0
        public void Invalidate(double x)
        {
            if (Pieces.Count == 0)
            {
                return;
            }

            // Invalidate the piece that contains 'x'
            var idx = Pieces.BinarySearch(p => p.Range.CompareTo(x), find_insert_position: true);

            if (idx != Pieces.Count && Pieces[idx].Range.Contains(x))
            {
                Util.Dispose(Pieces[idx]);
                Pieces.RemoveAt(idx);
            }
        }
示例#2
0
        public void Invalidate(RangeF x_range)
        {
            if (Pieces.Count == 0)
            {
                return;
            }

            if (x_range == RangeF.Invalid)
            {
                Invalidate();
            }
            else
            {
                // Invalidate all pieces that overlap the given range
                var beg = Pieces.BinarySearch(p => p.Range.CompareTo(x_range.Beg), find_insert_position: true);
                var end = Math.Min(Pieces.Count, Pieces.BinarySearch(p => p.Range.CompareTo(x_range.End), find_insert_position: true) + 1);
                Util.DisposeRange(Pieces, beg, end - beg);
                Pieces.RemoveRange(beg, end - beg);
            }
        }