/// <summary> /// Finds out items that overlap a text range /// </summary> /// <param name="range">Text range</param> /// <returns>List of items that overlap the range</returns> public virtual IList <T> ItemsInRange(ITextRange range) { var list = _emptyList; var first = GetItemContaining(range.Start); if (first < 0) { first = GetFirstItemAfterPosition(range.Start); } if (first >= 0) { for (var i = first; i < this.Count; i++) { if (this._items[i].Start >= range.End) { break; } if (TextRange.Intersect(this._items[i], range)) { if (list == _emptyList) { list = new List <T>(); } list.Add(this._items[i]); } } } return(list); }
/// <summary> /// Finds out of range intersects another range /// </summary> /// <param name="start">Start of another range</param> /// <param name="length">Length of another range</param> /// <returns>True if ranges intersect</returns> public virtual bool Intersect(int start, int length) { return(TextRange.Intersect(this, start, length)); }
/// <summary> /// Finds out of range intersects another range /// </summary> /// <param name="start">Text range</param> /// <returns>True if ranges intersect</returns> public virtual bool Intersect(ITextRange range) { return(TextRange.Intersect(this, range.Start, range.Length)); }