Esempio n. 1
0
 void MoveToNextTick(bool forward)
 {
     if (forward)
     {
         if (Value == Maximum)
         {
             return;
         }
     }
     else
     {
         if (Value == Minimum)
         {
             return;
         }
     }
     if (Ticks != null && Ticks.Count != 0)
     {
         double closest;
         double distance;
         double distance_from_closest;
         if (Ticks.Contains(Value))
         {
             closest = double.NaN;
             distance_from_closest = double.PositiveInfinity;
             for (int tick_index = 0; tick_index < Ticks.Count; tick_index++)
             {
                 double tick = Ticks [tick_index];
                 if (forward)
                 {
                     if (tick > Value)
                     {
                         distance = tick - Value;
                     }
                     else
                     {
                         continue;
                     }
                 }
                 else
                 {
                     if (tick < Value)
                     {
                         distance = Value - tick;
                     }
                     else
                     {
                         continue;
                     }
                 }
                 if (distance < distance_from_closest)
                 {
                     closest = tick;
                     distance_from_closest = distance;
                 }
             }
         }
         else
         {
             closest = Ticks [forward ? 0 : Ticks.Count - 1];
             distance_from_closest = Math.Abs(Value - closest);
             for (int tick_index = 1; tick_index < Ticks.Count; tick_index++)
             {
                 double tick = Ticks [forward ? tick_index : Ticks.Count - tick_index];
                 distance = Math.Abs(Value - tick);
                 if (distance < distance_from_closest)
                 {
                     closest = tick;
                     distance_from_closest = distance;
                 }
             }
         }
         if (!double.IsNaN(closest))
         {
             Value = closest;
         }
     }
     else if (TickFrequency != 0)
     {
         double value = ((int)Math.Floor(Value / TickFrequency) + (forward ? 1 : -1)) * TickFrequency;
         if (value < Minimum)
         {
             value = Minimum;
         }
         if (value > Maximum)
         {
             value = Maximum;
         }
         Value = value;
     }
 }
Esempio n. 2
0
 public bool Contains(TTick item) => Ticks.Contains(item);