コード例 #1
0
        IEnumerable <CycledDuratedItem <T> > Intersecting_compter(Time point)
        {
            var cycles = point / Length;
            var offset = Length * cycles;

            point %= Length;

            foreach (var item in field1.Intersecting(point))
            {
                yield return(new CycledDuratedItem <T>(
                                 item.Value,
                                 new Duration {
                    Start = offset + item.Duration.Start,
                    Length = item.Duration.Length
                },
                                 cycles
                                 ));
            }

            foreach (var item in field2.Intersecting(point))
            {
                yield return(new CycledDuratedItem <T>(
                                 item.Value,
                                 new Duration {
                    Start = offset + Length + item.Duration.Start,
                    Length = item.Duration.Length
                },
                                 cycles - 1
                                 ));
            }
        }
コード例 #2
0
 public IEnumerable <Note> NotesInTime(Duration duration) =>
 notes_field
 .Intersecting(duration)
 .Select(
     noteID_item =>
     notes_lookup[noteID_item.Value]
     );
コード例 #3
0
ファイル: Extensions.cs プロジェクト: nawalgupta/MusicWriter
        public static void DeleteTime <T>(
            this DurationField <T> field,
            Duration eraser
            )
        {
            var throughandbeyond =
                new Duration {
                Start = eraser.Start,
                End   = field.GeneralDuration.Value.End
            };

            foreach (var item in field.Intersecting(throughandbeyond).ToArray())
            {
                var subtractedtime =
                    item.Duration.Subtract_Time(eraser);

                if (subtractedtime != null)
                {
                    field.Move(item, subtractedtime);
                }
                else
                {
                    field.Remove(item);
                }
            }
        }
コード例 #4
0
 public virtual void Forget(Duration duration)
 {
     foreach (var item in knowledge.Intersecting(duration).ToArray())
     {
         knowledge.Remove(item);
     }
 }
コード例 #5
0
ファイル: Extensions.cs プロジェクト: nawalgupta/MusicWriter
 public static void OverwriteEverythingToRight <T>(
     this DurationField <T> field,
     T item,
     Time start
     ) =>
 ScootAndOverwrite(
     field,
     item,
     new Duration {
     Start = start,
     End   =
         field
         .Intersecting(start)
         .Max(item2 => item2.Duration.End)
 }
     );
コード例 #6
0
ファイル: Extensions.cs プロジェクト: nawalgupta/MusicWriter
        public static void ScootAndOverwrite <T>(
            this DurationField <T> field,
            T item,
            Duration duration
            )
        {
            foreach (var oldstaff in field.Intersecting(duration).ToArray())
            {
                field.Remove(oldstaff);

                foreach (var cutduration in oldstaff.Duration.Subtract(duration))
                {
                    field.Add(oldstaff.Value, cutduration);
                }
            }

            field.Add(item, duration);
        }