private IConcatList <T> Filter(GridSpan <T> gridSpan, Func <T, bool> predict, Action <T> action = null) { var result = ConcatList <T> .Empty; if (gridSpan.IsEmpty) { return(result); } var startIndex = gridSpan.StartTrack.Ordinal; var endIndex = gridSpan.EndTrack.Ordinal; for (int i = startIndex; i <= endIndex; i++) { var track = this[i]; if (predict(track)) { result = result.Concat(track); } if (action != null) { action(track); } } return(result); }
internal double GetMeasuredLength(GridSpan <T> gridSpan) { if (gridSpan.IsEmpty) { return(0); } var startOrdinal = gridSpan.StartTrack.Ordinal; var endOrdinal = gridSpan.EndTrack.Ordinal; Debug.Assert(startOrdinal >= 0 && startOrdinal <= endOrdinal && endOrdinal < Count); return(this[endOrdinal].EndOffset - this[startOrdinal].StartOffset); }
internal double GetMeasuredLength(GridSpan <T> gridSpan, Func <T, bool> predict) { if (gridSpan.IsEmpty) { return(0); } var startOrdinal = gridSpan.StartTrack.Ordinal; var endOrdinal = gridSpan.EndTrack.Ordinal; Debug.Assert(startOrdinal >= 0 && startOrdinal <= endOrdinal && endOrdinal < Count); double result = 0d; for (int i = startOrdinal; i <= endOrdinal; i++) { var track = this[i]; if (predict == null || predict(track)) { result += track.MeasuredLength; } } return(result); }
public bool Contains(GridSpan gridSpan) { Debug.Assert(StartTrack.Owner == gridSpan.StartTrack.Owner); return(gridSpan.StartTrack.Ordinal >= StartTrack.Ordinal && gridSpan.EndTrack.Ordinal <= EndTrack.Ordinal); }
private IConcatList <T> Filter(Func <T, bool> predict, Action <T> action = null) { return(Filter(GridSpan <T> .From(this), predict, action)); }