public void SetDifference(Run run, Split split, Func<Split, int?> differenceFunction) { int? difference = differenceFunction(split); if (difference == null) { SetNull(); } else { ForeColor = GetDiffColor(run, split, differenceFunction); string diff = TIME_FORMATTER.FormatTicks(Math.Abs((int)difference), run.Category.TicksPerSecond); if (difference < 0) { Text = "-" + diff; } else { Text = "+" + diff; } } }
private Color GetDiffColor(Run run, Split split, Func<Split, int?> differenceFunction) { int splitIndex = run.IndexOf(split); int? diff = differenceFunction(split); if (split.IsBest()) return BEST_TEXT_COLOR; if (diff == 0) return EVEN_TEXT_COLOR; if (splitIndex == 0 || !ADVANCED_COMPARISON) { if (diff <= 0) return AHEAD_GAIN_TEXT_COLOR; else return BEHIND_LOSS_TEXT_COLOR; } else { int? previousDiff = differenceFunction(run[splitIndex - 1]); if (diff > 0) { if (diff >= previousDiff) return BEHIND_LOSS_TEXT_COLOR; if (diff < previousDiff) return BEHIND_GAIN_TEXT_COLOR; } else { if (diff <= previousDiff) return AHEAD_GAIN_TEXT_COLOR; if (diff > previousDiff) return AHEAD_LOSS_TEXT_COLOR; } } throw new Exception(); }
private int? GetDifference(Split split) { return split.LiveTicks - split.Ticks; }
private int? GetRelevantTicks(Split split) { if (split.LiveTicks != null) { return split.LiveTicks; } else { return split.Ticks; } }
private void LoadSplit(int i, Split split) { dynamic s = Splits[i]; s.Split = split; s.NameLabel.Text = split.Name; DifferenceLabel diffLabel = s.DiffLabel; diffLabel.SetDifference(Run, split, GetDifference); s.TimeLabel.Text = TIME_TIME_FORMATTER.FormatTicks(GetRelevantTicks(split), Run.Category.TicksPerSecond); }
private int? DifferenceWithBest(Split split) { return split.LiveSegment - split.BestSegment; }