public IEnumerable <LocalInterval> GetIntervals(LocalInterval interval = null) { if (layers.Count == 0) { return(GetLocalIntervals(interval)); } List <LocalInterval> currIntervals = GetLocalIntervals(interval).ToList(); var currTimeline = new TimelineMask(Timezone, currIntervals); foreach (var layer in layers) { var nextIntervals = layer.Value.GetIntervals(interval, Timezone).ToList(); var flat = layer.Key(currIntervals, nextIntervals).ToList(); currTimeline = new TimelineMask(Timezone, flat); currIntervals = currTimeline.GetIntervals(interval, Timezone).ToList(); } return(currTimeline.GetIntervals(interval)); }
public Timeline(TimelineMask mask = null, TimelinePayload payload = null) { this.mask = mask ?? new TimelineMask(); this.payload = payload ?? new TimelinePayload(); }
public Timeline(TimelineMask mask) : this(mask, null) { }
private TimelineMask Add(Func <List <LocalInterval>, List <LocalInterval>, IEnumerable <LocalInterval> > op, TimelineMask timeline) { Timezone = Timezone ?? timeline.Timezone; layers.Add(new KeyValuePair <Func <List <LocalInterval>, List <LocalInterval>, IEnumerable <LocalInterval> >, TimelineMask>(op, timeline)); return(this); }
public TimelineMask Complement(TimelineMask timeline) { return(Add(TimeMathOld.Complement, timeline)); }
public TimelineMask Union(TimelineMask timeline) { return(Add(TimeMathOld.Union, timeline)); }
public TimelineMask Intersection(TimelineMask timeline) { return(Add(TimeMathOld.Intersection, timeline)); }