Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #3
0
        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);
        }
Example #4
0
        public bool Contains(GridSpan gridSpan)
        {
            Debug.Assert(StartTrack.Owner == gridSpan.StartTrack.Owner);

            return(gridSpan.StartTrack.Ordinal >= StartTrack.Ordinal && gridSpan.EndTrack.Ordinal <= EndTrack.Ordinal);
        }
Example #5
0
 private IConcatList <T> Filter(Func <T, bool> predict, Action <T> action = null)
 {
     return(Filter(GridSpan <T> .From(this), predict, action));
 }