private void annoList_SelectionChanged(object sender, SelectionChangedEventArgs e) { ListView grid = (ListView)sender; if (grid.SelectedIndex >= 0 && grid.SelectedIndex < grid.Items.Count) { AnnoListItem item = (AnnoListItem)grid.SelectedItem; control.annoListControl.editComboBox.SelectedItem = item.Label; double samplerate = MainHandler.getMaxVideoSampleRate(); double offset = (1.0f / samplerate); Time.CurrentPlayPosition = item.Start; mediaList.Move(item.Start + offset); moveSignalCursor(item.Start); if (item.Start >= timeline.SelectionStop) { float factor = (float)(((item.Start - Time.SelectionStart) / (Time.SelectionStop - Time.SelectionStart))); control.timeLineControl.rangeSlider.MoveAndUpdate(true, factor); } else if (item.Stop <= timeline.SelectionStart) { float factor = (float)(((Time.SelectionStart - item.Start)) / (Time.SelectionStop - Time.SelectionStart)); control.timeLineControl.rangeSlider.MoveAndUpdate(false, factor); } foreach (AnnoListItem a in AnnoTierStatic.Selected.AnnoList) { if (a.Start == item.Start && a.Stop == item.Stop && item.Label == a.Label) { AnnoTierStatic.SelectLabel(AnnoTierStatic.Selected.GetSegment(a)); control.annoListControl.editComboBox.SelectedItem = item.Label; break; } } if (item.isGeometric) { int position = (int)(Time.CurrentPlayPosition * AnnoTierStatic.Selected.AnnoList.Scheme.SampleRate); geometricSelectItem(item, position); } } }
private void PlayTimer_Tick(object sender, EventArgs e) { int elapsed = (int)((Environment.TickCount - playLastTick) * PlayerSpeed); Time.CurrentPlayPosition += elapsed / 1000.0; playLastTick = Environment.TickCount; if (Time.CurrentPlayPosition >= timeline.TotalDuration) { Stop(); } else { if (Time.CurrentPlayPosition >= Time.SelectionStop && control.navigator.autoScrollCheckBox.IsChecked == true) { double factor = (((Time.CurrentPlayPosition - Time.SelectionStart) / (Time.SelectionStop - Time.SelectionStart))); control.timeLineControl.rangeSlider.followmedia = true; control.timeLineControl.rangeSlider.MoveAndUpdate(true, factor); } else if (Time.CurrentPlayPosition >= Time.SelectionStop && control.navigator.autoScrollCheckBox.IsChecked == false) { control.timeLineControl.rangeSlider.followmedia = false; if (AnnoTierStatic.Label != null) { AnnoTierStatic.Label.select(true); } Stop(); } } double samplerate = MainHandler.getMaxVideoSampleRate(); double offset = 1.0f / samplerate; foreach (IMedia media in mediaList) { if (media.GetMediaType() != MediaType.AUDIO && media.GetMediaType() != MediaType.VIDEO) { media.Move(Time.CurrentPlayPosition); } } updatePositionLabels(Time.CurrentPlayPosition); signalCursor.X = Time.PixelFromTime(Time.CurrentPlayPosition + (offset * 2.5)); if (AnnoTierStatic.Selected != null && AnnoTierStatic.Selected.IsGeometric) { control.annoListControl.annoDataGrid.SelectedItems.Clear(); int position = (int)((Time.CurrentPlayPosition + 0.04) * AnnoTierStatic.Selected.AnnoList.Scheme.SampleRate); if (position < control.annoListControl.annoDataGrid.Items.Count) { AnnoListItem ali = (AnnoListItem)control.annoListControl.annoDataGrid.Items[position]; if (ali.Points.Count > 0) { geometricOverlayUpdate(ali, AnnoScheme.TYPE.POINT, position); } } } }