public void RecalculateDisplayTimes(double maxCharactersPerSecond, System.Windows.Forms.ListView.SelectedIndexCollection selectedIndexes) { for (int i = 0; i < _paragraphs.Count; i++) { if (selectedIndexes == null || selectedIndexes.Contains(i)) { Paragraph p = _paragraphs[i]; double duration = Utilities.GetOptimalDisplayMilliseconds(p.Text); p.EndTime.TotalMilliseconds = p.StartTime.TotalMilliseconds + duration; while (Utilities.GetCharactersPerSecond(p) > maxCharactersPerSecond) { duration++; p.EndTime.TotalMilliseconds = p.StartTime.TotalMilliseconds + duration; } Paragraph next = GetParagraphOrDefault(i + 1); if (next != null && p.StartTime.TotalMilliseconds + duration + Configuration.Settings.General.MininumMillisecondsBetweenLines > next.StartTime.TotalMilliseconds) { p.EndTime.TotalMilliseconds = next.StartTime.TotalMilliseconds - Configuration.Settings.General.MininumMillisecondsBetweenLines; if (p.Duration.TotalMilliseconds <= 0) { p.EndTime.TotalMilliseconds = p.StartTime.TotalMilliseconds + 1; } } } } }
internal void AdjustDisplayTimeUsingPercent(double percent, System.Windows.Forms.ListView.SelectedIndexCollection selectedIndexes) { for (int i = 0; i < _paragraphs.Count; i++) { if (selectedIndexes == null || selectedIndexes.Contains(i)) { double nextStartMilliseconds = _paragraphs[_paragraphs.Count - 1].EndTime.TotalMilliseconds + 100000; if (i + 1 < _paragraphs.Count) { nextStartMilliseconds = _paragraphs[i + 1].StartTime.TotalMilliseconds; } double newEndMilliseconds = _paragraphs[i].EndTime.TotalMilliseconds; newEndMilliseconds = _paragraphs[i].StartTime.TotalMilliseconds + (((newEndMilliseconds - _paragraphs[i].StartTime.TotalMilliseconds) * percent) / 100); if (newEndMilliseconds > nextStartMilliseconds) { newEndMilliseconds = nextStartMilliseconds - 1; } _paragraphs[i].EndTime.TotalMilliseconds = newEndMilliseconds; } } }
internal void AdjustDisplayTimeUsingSeconds(double seconds, System.Windows.Forms.ListView.SelectedIndexCollection selectedIndexes) { for (int i = 0; i < _paragraphs.Count; i++) { if (selectedIndexes == null || selectedIndexes.Contains(i)) { double nextStartMilliseconds = _paragraphs[_paragraphs.Count - 1].EndTime.TotalMilliseconds + 100000; if (i + 1 < _paragraphs.Count) { nextStartMilliseconds = _paragraphs[i + 1].StartTime.TotalMilliseconds; } double newEndMilliseconds = _paragraphs[i].EndTime.TotalMilliseconds + (seconds * 1000.0); if (newEndMilliseconds > nextStartMilliseconds) { newEndMilliseconds = nextStartMilliseconds - 1; } if (seconds < 0) { if (_paragraphs[i].StartTime.TotalMilliseconds + 100 > newEndMilliseconds) { _paragraphs[i].EndTime.TotalMilliseconds = _paragraphs[i].StartTime.TotalMilliseconds + 100; } else { _paragraphs[i].EndTime.TotalMilliseconds = newEndMilliseconds; } } else { _paragraphs[i].EndTime.TotalMilliseconds = newEndMilliseconds; } } } }