public SubTitle(SubTitle sub) { this.Time = sub.Time; this.Text = sub.Text; this.Color = sub.Color; this.WarningColor = sub.WarningColor; this.WarningTime = sub.WarningTime; }
/// <summary> /// Compare the parameter time to subtitles one by one. /// </summary> /// <param name="actualTime">Stopwatch actuel timer to compare w</param> /// <returns>Return the nearest subtitle</returns> SubTitle findNearestSubtitle(TimeSpan actualTime) { SubTitle nearest = new SubTitle(); foreach (SubTitle subTitle in subTitles) { var time = TimeSpan.Parse(subTitle.Time); int result = TimeSpan.Compare(actualTime, time); // if actual time is greater or equal to the subtitle time, the subtitle is actually the nearest. if (result == 1 || result == 0) { nearest = subTitle; } } return(nearest); }
/// <summary> /// Rebuild subtitles list taking into account warning subtitles /// </summary> void buildWarningSubtitles() { List <SubTitle> newSubTitles = new List <SubTitle>(); for (int i = 0; i < subTitles.Count; i++) { newSubTitles.Add(new SubTitle(subTitles[i])); if (subTitles[i].WarningTime != null && i < subTitles.Count - 1) { var offset = TimeSpan.Parse(subTitles[i].WarningTime); var endTime = TimeSpan.Parse(subTitles[i + 1].Time); var calc = endTime.Duration() - offset.Duration(); SubTitle warning = new SubTitle(subTitles[i]); warning.Color = warning.WarningColor; warning.Time = String.Format("{0:00}:{1:00}:{2:00}", calc.Hours, calc.Minutes, calc.Seconds); newSubTitles.Add(new SubTitle(warning)); } } subTitles = new List <SubTitle>(newSubTitles); }