VixenModules.Editor.TimedSequenceEditor.MarkManager.buttonEvenlySpaceMarks_Click C# (CSharp) Method

buttonEvenlySpaceMarks_Click() private method

private buttonEvenlySpaceMarks_Click ( object sender, EventArgs e ) : void
sender object
e System.EventArgs
return void
        private void buttonEvenlySpaceMarks_Click(object sender, EventArgs e)
        {
            if (listViewMarks.SelectedItems.Count < 3) {
                MessageBox.Show("Select at least three marks to space evenly.", "Need more marks");
                return;
            }

            List<TimeSpan> spacingTimes = new List<TimeSpan>();
            List<TimeSpan> newTimes = new List<TimeSpan>();

            foreach (ListViewItem item in listViewMarks.Items) {
                if (item.Selected)
                    spacingTimes.Add((TimeSpan)item.Tag);
                else
                    newTimes.Add((TimeSpan)item.Tag);
            }

            spacingTimes.Sort();

            TimeSpan totalInterval = spacingTimes.Last() - spacingTimes.First();
            TimeSpan integralInterval = TimeSpan.FromTicks(totalInterval.Ticks / (spacingTimes.Count - 1));
            for (int i = 0; i < spacingTimes.Count; i++) {
                TimeSpan newTime = TimeSpan.FromTicks(spacingTimes.First().Ticks + (i * integralInterval.Ticks));
                if (!newTimes.Contains(newTime))
                    newTimes.Add(newTime);
            }

            newTimes.Sort();
            _displayedCollection.Marks = newTimes;
            PopulateMarkListFromMarkCollection(_displayedCollection);
        }