private static IClock CreateClock(IClock baseClock, Timeline timeline) { if (timeline.Duration.HasTimeSpan) { baseClock = new DurationClock(baseClock, timeline.Duration.TimeSpan); } if (timeline.AutoReverse) { baseClock = new ReverseClock(baseClock); } if (timeline.RepeatBehavior != RepeatBehavior.OneTime) { double iterationsCount = timeline.RepeatBehavior.Count.DefaultIfNaN((double)timeline.RepeatBehavior.Duration.Ticks / baseClock.Duration.Ticks); baseClock = new RepeatClock(baseClock, iterationsCount); } if (timeline.BeginTime != TimeSpan.Zero) { baseClock = new OffsetClock(baseClock, timeline.BeginTime); } return(baseClock); }
private static IClock CreateClock(IClock baseClock, Timeline timeline) { if (timeline.Duration.HasTimeSpan) { baseClock = new DurationClock(baseClock, timeline.Duration.TimeSpan); } if (timeline.AutoReverse) { baseClock = new ReverseClock(baseClock); } if (timeline.RepeatBehavior != RepeatBehavior.OneTime) { double iterationsCount = timeline.RepeatBehavior.Count.DefaultIfNaN((double)timeline.RepeatBehavior.Duration.Ticks / baseClock.Duration.Ticks); baseClock = new RepeatClock(baseClock, iterationsCount); } if (timeline.BeginTime != TimeSpan.Zero) { baseClock = new OffsetClock(baseClock, timeline.BeginTime); } return baseClock; }