Working on waveform/spectrogram

git-svn-id: https://subtitleedit.googlecode.com/svn/trunk@469 99eadd0c-20b8-1223-b5c4-2a2b2df33de2
This commit is contained in:
niksedk 2011-06-07 14:57:34 +00:00
parent 69f5f6a63e
commit c9dfa5eaef
4 changed files with 176 additions and 168 deletions

View File

@ -163,6 +163,11 @@ namespace Nikse.SubtitleEdit.Controls
public void ResetSpectrogram()
{
if (_spectrogramBitmaps != null)
{
foreach (Bitmap bmp in _spectrogramBitmaps)
bmp.Dispose();
}
_spectrogramBitmaps = new List<Bitmap>();
}

View File

@ -223,7 +223,7 @@
this.toolStripMenuItemPlayRateNormal = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripMenuItemPlayRateFast = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripMenuItemPlayRateVeryFast = new System.Windows.Forms.ToolStripMenuItem();
this.AudioWaveForm = new Nikse.SubtitleEdit.Controls.AudioVisualizer();
this.audioVisualizer = new Nikse.SubtitleEdit.Controls.AudioVisualizer();
this.tabControlButtons = new System.Windows.Forms.TabControl();
this.tabPageTranslate = new System.Windows.Forms.TabPage();
this.labelTranslateTip = new System.Windows.Forms.Label();
@ -1840,7 +1840,7 @@
this.groupBoxVideo.Controls.Add(this.labelVideoInfo);
this.groupBoxVideo.Controls.Add(this.trackBarWaveFormPosition);
this.groupBoxVideo.Controls.Add(this.panelWaveFormControls);
this.groupBoxVideo.Controls.Add(this.AudioWaveForm);
this.groupBoxVideo.Controls.Add(this.audioVisualizer);
this.groupBoxVideo.Controls.Add(this.tabControlButtons);
this.groupBoxVideo.Dock = System.Windows.Forms.DockStyle.Fill;
this.groupBoxVideo.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
@ -2025,33 +2025,33 @@
//
// AudioWaveForm
//
this.AudioWaveForm.AllowDrop = true;
this.AudioWaveForm.AllowNewSelection = true;
this.AudioWaveForm.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
this.audioVisualizer.AllowDrop = true;
this.audioVisualizer.AllowNewSelection = true;
this.audioVisualizer.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.AudioWaveForm.BackColor = System.Drawing.Color.Black;
this.AudioWaveForm.BackgroundColor = System.Drawing.Color.Black;
this.AudioWaveForm.Color = System.Drawing.Color.GreenYellow;
this.AudioWaveForm.DrawGridLines = true;
this.AudioWaveForm.GridColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(18)))));
this.AudioWaveForm.Location = new System.Drawing.Point(472, 32);
this.AudioWaveForm.Margin = new System.Windows.Forms.Padding(0);
this.AudioWaveForm.Name = "AudioWaveForm";
this.AudioWaveForm.NewSelectionParagraph = null;
this.AudioWaveForm.SelectedColor = System.Drawing.Color.Red;
this.AudioWaveForm.ShowSpectrogram = false;
this.AudioWaveForm.ShowWaveform = true;
this.AudioWaveForm.Size = new System.Drawing.Size(768, 229);
this.AudioWaveForm.StartPositionSeconds = 0D;
this.AudioWaveForm.TabIndex = 6;
this.AudioWaveForm.TextColor = System.Drawing.Color.Gray;
this.AudioWaveForm.WaveFormNotLoadedText = "Click to add wave form";
this.AudioWaveForm.WavePeaks = null;
this.AudioWaveForm.ZoomFactor = 1D;
this.AudioWaveForm.Click += new System.EventHandler(this.AudioWaveForm_Click);
this.AudioWaveForm.DragDrop += new System.Windows.Forms.DragEventHandler(this.AudioWaveForm_DragDrop);
this.AudioWaveForm.DragEnter += new System.Windows.Forms.DragEventHandler(this.AudioWaveForm_DragEnter);
this.audioVisualizer.BackColor = System.Drawing.Color.Black;
this.audioVisualizer.BackgroundColor = System.Drawing.Color.Black;
this.audioVisualizer.Color = System.Drawing.Color.GreenYellow;
this.audioVisualizer.DrawGridLines = true;
this.audioVisualizer.GridColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(18)))));
this.audioVisualizer.Location = new System.Drawing.Point(472, 32);
this.audioVisualizer.Margin = new System.Windows.Forms.Padding(0);
this.audioVisualizer.Name = "AudioWaveForm";
this.audioVisualizer.NewSelectionParagraph = null;
this.audioVisualizer.SelectedColor = System.Drawing.Color.Red;
this.audioVisualizer.ShowSpectrogram = false;
this.audioVisualizer.ShowWaveform = true;
this.audioVisualizer.Size = new System.Drawing.Size(768, 229);
this.audioVisualizer.StartPositionSeconds = 0D;
this.audioVisualizer.TabIndex = 6;
this.audioVisualizer.TextColor = System.Drawing.Color.Gray;
this.audioVisualizer.WaveFormNotLoadedText = "Click to add wave form";
this.audioVisualizer.WavePeaks = null;
this.audioVisualizer.ZoomFactor = 1D;
this.audioVisualizer.Click += new System.EventHandler(this.AudioWaveForm_Click);
this.audioVisualizer.DragDrop += new System.Windows.Forms.DragEventHandler(this.AudioWaveForm_DragDrop);
this.audioVisualizer.DragEnter += new System.Windows.Forms.DragEventHandler(this.AudioWaveForm_DragEnter);
//
// tabControlButtons
//
@ -3475,7 +3475,9 @@
this.mediaPlayer.Size = new System.Drawing.Size(281, 278);
this.mediaPlayer.SubtitleText = "";
this.mediaPlayer.TabIndex = 5;
this.mediaPlayer.VideoHeight = 0;
this.mediaPlayer.VideoPlayer = null;
this.mediaPlayer.VideoWidth = 0;
this.mediaPlayer.Volume = 0D;
this.mediaPlayer.DragDrop += new System.Windows.Forms.DragEventHandler(this.mediaPlayer_DragDrop);
this.mediaPlayer.DragEnter += new System.Windows.Forms.DragEventHandler(this.mediaPlayer_DragEnter);
@ -3807,7 +3809,7 @@
private System.Windows.Forms.ToolStripButton toolStripButtonToggleWaveForm;
private Controls.VideoPlayerContainer mediaPlayer;
private System.Windows.Forms.Panel panelVideoPlayer;
private Controls.AudioVisualizer AudioWaveForm;
private Controls.AudioVisualizer audioVisualizer;
private System.Windows.Forms.Timer timerWaveForm;
private System.Windows.Forms.ContextMenuStrip contextMenuStripWaveForm;
private System.Windows.Forms.ToolStripMenuItem addParagraphHereToolStripMenuItem;

View File

@ -217,7 +217,7 @@ namespace Nikse.SubtitleEdit.Forms
tabControlSubtitle.SelectTab(TabControlSourceView);
AudioWaveForm.Visible = Configuration.Settings.General.ShowWaveForm;
audioVisualizer.Visible = Configuration.Settings.General.ShowWaveForm;
panelWaveFormControls.Visible = Configuration.Settings.General.ShowWaveForm;
trackBarWaveFormPosition.Visible = Configuration.Settings.General.ShowWaveForm;
toolStripButtonToggleWaveForm.Checked = Configuration.Settings.General.ShowWaveForm;
@ -280,23 +280,23 @@ namespace Nikse.SubtitleEdit.Forms
buttonCustomUrl.Enabled = Configuration.Settings.VideoControls.CustomSearchUrl.Length > 1;
// Initialize events etc. for audio wave form
AudioWaveForm.OnDoubleClickNonParagraph += AudioWaveForm_OnDoubleClickNonParagraph;
AudioWaveForm.OnPositionSelected += AudioWaveForm_OnPositionSelected;
AudioWaveForm.OnTimeChanged += AudioWaveForm_OnTimeChanged;
AudioWaveForm.OnNewSelectionRightClicked += AudioWaveForm_OnNewSelectionRightClicked;
AudioWaveForm.OnParagraphRightClicked += AudioWaveForm_OnParagraphRightClicked;
AudioWaveForm.OnNonParagraphRightClicked += new AudioVisualizer.PositionChangedEventHandler(AudioWaveForm_OnNonParagraphRightClicked);
AudioWaveForm.OnSingleClick += AudioWaveForm_OnSingleClick;
AudioWaveForm.OnPause += AudioWaveForm_OnPause;
AudioWaveForm.OnTimeChangedAndOffsetRest += AudioWaveForm_OnTimeChangedAndOffsetRest;
AudioWaveForm.OnZoomedChanged += AudioWaveForm_OnZoomedChanged;
AudioWaveForm.DrawGridLines = Configuration.Settings.VideoControls.WaveFormDrawGrid;
AudioWaveForm.GridColor = Configuration.Settings.VideoControls.WaveFormGridColor;
AudioWaveForm.SelectedColor = Configuration.Settings.VideoControls.WaveFormSelectedColor;
AudioWaveForm.Color = Configuration.Settings.VideoControls.WaveFormColor;
AudioWaveForm.BackgroundColor = Configuration.Settings.VideoControls.WaveFormBackgroundColor;
AudioWaveForm.TextColor = Configuration.Settings.VideoControls.WaveFormTextColor;
AudioWaveForm.MouseWheelScrollUpIsForward = Configuration.Settings.VideoControls.WaveFormMouseWheelScrollUpIsForward;
audioVisualizer.OnDoubleClickNonParagraph += AudioWaveForm_OnDoubleClickNonParagraph;
audioVisualizer.OnPositionSelected += AudioWaveForm_OnPositionSelected;
audioVisualizer.OnTimeChanged += AudioWaveForm_OnTimeChanged;
audioVisualizer.OnNewSelectionRightClicked += AudioWaveForm_OnNewSelectionRightClicked;
audioVisualizer.OnParagraphRightClicked += AudioWaveForm_OnParagraphRightClicked;
audioVisualizer.OnNonParagraphRightClicked += new AudioVisualizer.PositionChangedEventHandler(AudioWaveForm_OnNonParagraphRightClicked);
audioVisualizer.OnSingleClick += AudioWaveForm_OnSingleClick;
audioVisualizer.OnPause += AudioWaveForm_OnPause;
audioVisualizer.OnTimeChangedAndOffsetRest += AudioWaveForm_OnTimeChangedAndOffsetRest;
audioVisualizer.OnZoomedChanged += AudioWaveForm_OnZoomedChanged;
audioVisualizer.DrawGridLines = Configuration.Settings.VideoControls.WaveFormDrawGrid;
audioVisualizer.GridColor = Configuration.Settings.VideoControls.WaveFormGridColor;
audioVisualizer.SelectedColor = Configuration.Settings.VideoControls.WaveFormSelectedColor;
audioVisualizer.Color = Configuration.Settings.VideoControls.WaveFormColor;
audioVisualizer.BackgroundColor = Configuration.Settings.VideoControls.WaveFormBackgroundColor;
audioVisualizer.TextColor = Configuration.Settings.VideoControls.WaveFormTextColor;
audioVisualizer.MouseWheelScrollUpIsForward = Configuration.Settings.VideoControls.WaveFormMouseWheelScrollUpIsForward;
for (double zoomCounter = AudioVisualizer.ZoomMininum; zoomCounter <= AudioVisualizer.ZoomMaxinum + (0.001); zoomCounter += 0.1)
{
@ -541,7 +541,7 @@ namespace Nikse.SubtitleEdit.Forms
SubtitleListview1.SelectIndexAndEnsureVisible(index);
mediaPlayer.CurrentPosition = seconds;
ButtonSetStartAndOffsetRestClick(null, null);
AudioWaveForm.Invalidate();
audioVisualizer.Invalidate();
}
}
@ -965,7 +965,7 @@ namespace Nikse.SubtitleEdit.Forms
toolStripButtonWaveFormZoomOut.ToolTipText = Configuration.Settings.Language.WaveForm.ZoomOut;
toolStripButtonWaveFormZoomIn.ToolTipText = Configuration.Settings.Language.WaveForm.ZoomIn;
AudioWaveForm.WaveFormNotLoadedText = Configuration.Settings.Language.WaveForm.ClickToAddWaveForm;
audioVisualizer.WaveFormNotLoadedText = Configuration.Settings.Language.WaveForm.ClickToAddWaveForm;
}
private void SetFormatToSubRip()
@ -1354,9 +1354,9 @@ namespace Nikse.SubtitleEdit.Forms
_videoFileName = null;
_videoAudioTrackNumber = -1;
labelVideoInfo.Text = Configuration.Settings.Language.General.NoVideoLoaded;
AudioWaveForm.WavePeaks = null;
AudioWaveForm.ResetSpectrogram();
AudioWaveForm.Invalidate();
audioVisualizer.WavePeaks = null;
audioVisualizer.ResetSpectrogram();
audioVisualizer.Invalidate();
if (Configuration.Settings.General.ShowVideoPlayer || Configuration.Settings.General.ShowWaveForm)
{
@ -1421,9 +1421,9 @@ namespace Nikse.SubtitleEdit.Forms
_videoFileName = null;
_videoAudioTrackNumber = -1;
labelVideoInfo.Text = Configuration.Settings.Language.General.NoVideoLoaded;
AudioWaveForm.WavePeaks = null;
AudioWaveForm.ResetSpectrogram();
AudioWaveForm.Invalidate();
audioVisualizer.WavePeaks = null;
audioVisualizer.ResetSpectrogram();
audioVisualizer.Invalidate();
Configuration.Settings.RecentFiles.Add(fileName, FirstVisibleIndex, FirstSelectedIndex, _videoFileName, _subtitleAlternateFileName);
Configuration.Settings.Save();
@ -1886,9 +1886,9 @@ namespace Nikse.SubtitleEdit.Forms
_videoFileName = null;
_videoAudioTrackNumber = -1;
labelVideoInfo.Text = Configuration.Settings.Language.General.NoVideoLoaded;
AudioWaveForm.WavePeaks = null;
AudioWaveForm.ResetSpectrogram();
AudioWaveForm.Invalidate();
audioVisualizer.WavePeaks = null;
audioVisualizer.ResetSpectrogram();
audioVisualizer.Invalidate();
ShowStatus(_language.New);
_sourceViewChange = false;
@ -2011,12 +2011,12 @@ namespace Nikse.SubtitleEdit.Forms
buttonCustomUrl.Text = Configuration.Settings.VideoControls.CustomSearchText;
buttonCustomUrl.Enabled = Configuration.Settings.VideoControls.CustomSearchUrl.Length > 1;
AudioWaveForm.DrawGridLines = Configuration.Settings.VideoControls.WaveFormDrawGrid;
AudioWaveForm.GridColor = Configuration.Settings.VideoControls.WaveFormGridColor;
AudioWaveForm.SelectedColor = Configuration.Settings.VideoControls.WaveFormSelectedColor;
AudioWaveForm.Color = Configuration.Settings.VideoControls.WaveFormColor;
AudioWaveForm.BackgroundColor = Configuration.Settings.VideoControls.WaveFormBackgroundColor;
AudioWaveForm.TextColor = Configuration.Settings.VideoControls.WaveFormTextColor;
audioVisualizer.DrawGridLines = Configuration.Settings.VideoControls.WaveFormDrawGrid;
audioVisualizer.GridColor = Configuration.Settings.VideoControls.WaveFormGridColor;
audioVisualizer.SelectedColor = Configuration.Settings.VideoControls.WaveFormSelectedColor;
audioVisualizer.Color = Configuration.Settings.VideoControls.WaveFormColor;
audioVisualizer.BackgroundColor = Configuration.Settings.VideoControls.WaveFormBackgroundColor;
audioVisualizer.TextColor = Configuration.Settings.VideoControls.WaveFormTextColor;
if (oldSubtitleFontSettings != Configuration.Settings.General.SubtitleFontName +
Configuration.Settings.General.SubtitleFontBold +
@ -7013,12 +7013,12 @@ namespace Nikse.SubtitleEdit.Forms
string spectrogramFolder = GetSpectrogramFolder(fileName);
if (File.Exists(peakWaveFileName))
{
AudioWaveForm.WavePeaks = new WavePeakGenerator(peakWaveFileName);
AudioWaveForm.ResetSpectrogram();
AudioWaveForm.InitializeSpectrogram(spectrogramFolder);
audioVisualizer.WavePeaks = new WavePeakGenerator(peakWaveFileName);
audioVisualizer.ResetSpectrogram();
audioVisualizer.InitializeSpectrogram(spectrogramFolder);
toolStripComboBoxWaveForm_SelectedIndexChanged(null, null);
AudioWaveForm.WavePeaks.GenerateAllSamples();
AudioWaveForm.WavePeaks.Close();
audioVisualizer.WavePeaks.GenerateAllSamples();
audioVisualizer.WavePeaks.Close();
SetWaveFormPosition(0, 0, 0);
timerWaveForm.Start();
}
@ -7031,9 +7031,9 @@ namespace Nikse.SubtitleEdit.Forms
private void SetWaveFormPosition(double startPositionSeconds, double currentVideoPositionSeconds, int subtitleIndex)
{
if (SubtitleListview1.IsAlternateTextColumnVisible && Configuration.Settings.General.ShowOriginalAsPreviewIfAvailable)
AudioWaveForm.SetPosition(startPositionSeconds, _subtitleAlternate, currentVideoPositionSeconds, -1);
audioVisualizer.SetPosition(startPositionSeconds, _subtitleAlternate, currentVideoPositionSeconds, -1);
else
AudioWaveForm.SetPosition(startPositionSeconds, _subtitle, currentVideoPositionSeconds, subtitleIndex);
audioVisualizer.SetPosition(startPositionSeconds, _subtitle, currentVideoPositionSeconds, subtitleIndex);
}
void VideoLoaded(object sender, EventArgs e)
@ -7180,25 +7180,25 @@ namespace Nikse.SubtitleEdit.Forms
splitContainerMain.Panel2Collapsed = false;
if (toolStripButtonToggleVideo.Checked)
{
if (AudioWaveForm.Visible)
if (audioVisualizer.Visible)
{
AudioWaveForm.Left = tabControlButtons.Left + tabControlButtons.Width + 5;
audioVisualizer.Left = tabControlButtons.Left + tabControlButtons.Width + 5;
}
else
{
panelVideoPlayer.Left = tabControlButtons.Left + tabControlButtons.Width + 5;
}
}
else if (AudioWaveForm.Visible)
else if (audioVisualizer.Visible)
{
AudioWaveForm.Left = tabControlButtons.Left + tabControlButtons.Width + 5;
audioVisualizer.Left = tabControlButtons.Left + tabControlButtons.Width + 5;
}
AudioWaveForm.Width = groupBoxVideo.Width - (AudioWaveForm.Left + 10);
audioVisualizer.Width = groupBoxVideo.Width - (audioVisualizer.Left + 10);
checkBoxSyncListViewWithVideoWhilePlaying.Left = tabControlButtons.Left + tabControlButtons.Width + 5;
panelWaveFormControls.Left = AudioWaveForm.Left;
panelWaveFormControls.Left = audioVisualizer.Left;
trackBarWaveFormPosition.Left = panelWaveFormControls.Left + panelWaveFormControls.Width + 5;
trackBarWaveFormPosition.Width = AudioWaveForm.Left + AudioWaveForm.Width - trackBarWaveFormPosition.Left + 5;
trackBarWaveFormPosition.Width = audioVisualizer.Left + audioVisualizer.Width - trackBarWaveFormPosition.Left + 5;
}
if (mediaPlayer.VideoPlayer == null && !string.IsNullOrEmpty(_fileName))
@ -7647,7 +7647,7 @@ namespace Nikse.SubtitleEdit.Forms
private void toolStripButtonToggleWaveForm_Click(object sender, EventArgs e)
{
toolStripButtonToggleWaveForm.Checked = !toolStripButtonToggleWaveForm.Checked;
AudioWaveForm.Visible = toolStripButtonToggleWaveForm.Checked;
audioVisualizer.Visible = toolStripButtonToggleWaveForm.Checked;
trackBarWaveFormPosition.Visible = toolStripButtonToggleWaveForm.Checked;
panelWaveFormControls.Visible = toolStripButtonToggleWaveForm.Checked;
if (!toolStripButtonToggleWaveForm.Checked && !toolStripButtonToggleVideo.Checked)
@ -7975,15 +7975,15 @@ namespace Nikse.SubtitleEdit.Forms
if (!_isVideoControlsUnDocked)
{
if (toolStripButtonToggleWaveForm.Checked)
AudioWaveForm.Left = tabControlButtons.Left + tabControlButtons.Width + 5;
audioVisualizer.Left = tabControlButtons.Left + tabControlButtons.Width + 5;
if (!toolStripButtonToggleWaveForm.Checked && toolStripButtonToggleVideo.Checked)
{
panelVideoPlayer.Left = tabControlButtons.Left + tabControlButtons.Width + 5;
panelVideoPlayer.Width = groupBoxVideo.Width - (panelVideoPlayer.Left + 10);
}
AudioWaveForm.Width = groupBoxVideo.Width - (AudioWaveForm.Left + 10);
panelWaveFormControls.Left = AudioWaveForm.Left;
audioVisualizer.Width = groupBoxVideo.Width - (audioVisualizer.Left + 10);
panelWaveFormControls.Left = audioVisualizer.Left;
trackBarWaveFormPosition.Left = panelWaveFormControls.Left + panelWaveFormControls.Width + 5;
trackBarWaveFormPosition.Width = groupBoxVideo.Width - (trackBarWaveFormPosition.Left + 10);
this.Main_Resize(null, null);
@ -8110,7 +8110,7 @@ namespace Nikse.SubtitleEdit.Forms
}
toolStripButtonLockCenter.Checked = Configuration.Settings.General.WaveFormCenter;
AudioWaveForm.Locked = toolStripButtonLockCenter.Checked;
audioVisualizer.Locked = toolStripButtonLockCenter.Checked;
numericUpDownSec1.Value = (decimal) (Configuration.Settings.General.SmallDelayMilliseconds / 1000.0);
numericUpDownSec2.Value = (decimal) (Configuration.Settings.General.LargeDelayMilliseconds / 1000.0);
@ -8425,7 +8425,7 @@ namespace Nikse.SubtitleEdit.Forms
private void AudioWaveForm_Click(object sender, EventArgs e)
{
if (AudioWaveForm.WavePeaks == null)
if (audioVisualizer.WavePeaks == null)
{
if (string.IsNullOrEmpty(_videoFileName))
{
@ -8443,9 +8443,9 @@ namespace Nikse.SubtitleEdit.Forms
addWaveForm.WavePeak.WritePeakSamples(peakWaveFileName);
var audioPeakWave = new WavePeakGenerator(peakWaveFileName);
audioPeakWave.GenerateAllSamples();
AudioWaveForm.WavePeaks = audioPeakWave;
audioVisualizer.WavePeaks = audioPeakWave;
if (addWaveForm.SpectrogramBitmaps != null)
AudioWaveForm.InitializeSpectrogram(addWaveForm.SpectrogramBitmaps, spectrogramFolder);
audioVisualizer.InitializeSpectrogram(addWaveForm.SpectrogramBitmaps, spectrogramFolder);
timerWaveForm.Start();
}
}
@ -8453,30 +8453,30 @@ namespace Nikse.SubtitleEdit.Forms
private void timerWaveForm_Tick(object sender, EventArgs e)
{
if (AudioWaveForm.Visible && mediaPlayer.VideoPlayer != null && AudioWaveForm.WavePeaks != null)
if (audioVisualizer.Visible && mediaPlayer.VideoPlayer != null && audioVisualizer.WavePeaks != null)
{
int index = -1;
if (SubtitleListview1.SelectedItems.Count > 0)
index = SubtitleListview1.SelectedItems[0].Index;
if (AudioWaveForm.Locked)
if (audioVisualizer.Locked)
{
double startPos = mediaPlayer.CurrentPosition - ((AudioWaveForm.EndPositionSeconds - AudioWaveForm.StartPositionSeconds) / 2.0);
double startPos = mediaPlayer.CurrentPosition - ((audioVisualizer.EndPositionSeconds - audioVisualizer.StartPositionSeconds) / 2.0);
if (startPos < 0)
startPos = 0;
SetWaveFormPosition(startPos, mediaPlayer.CurrentPosition, index);
}
else if (mediaPlayer.CurrentPosition > AudioWaveForm.EndPositionSeconds || mediaPlayer.CurrentPosition < AudioWaveForm.StartPositionSeconds)
else if (mediaPlayer.CurrentPosition > audioVisualizer.EndPositionSeconds || mediaPlayer.CurrentPosition < audioVisualizer.StartPositionSeconds)
{
double startPos = mediaPlayer.CurrentPosition - 0.01;
if (startPos < 0)
startPos = 0;
AudioWaveForm.ClearSelection();
audioVisualizer.ClearSelection();
SetWaveFormPosition(startPos, mediaPlayer.CurrentPosition, index);
}
else
{
SetWaveFormPosition(AudioWaveForm.StartPositionSeconds, mediaPlayer.CurrentPosition, index);
SetWaveFormPosition(audioVisualizer.StartPositionSeconds, mediaPlayer.CurrentPosition, index);
}
bool paused = mediaPlayer.IsPaused;
@ -8492,8 +8492,8 @@ namespace Nikse.SubtitleEdit.Forms
private void addParagraphHereToolStripMenuItem_Click(object sender, EventArgs e)
{
AudioWaveForm.ClearSelection();
Paragraph newParagraph = new Paragraph(AudioWaveForm.NewSelectionParagraph);
audioVisualizer.ClearSelection();
Paragraph newParagraph = new Paragraph(audioVisualizer.NewSelectionParagraph);
if (newParagraph == null)
return;
@ -8527,14 +8527,14 @@ namespace Nikse.SubtitleEdit.Forms
SubtitleListview1.SelectIndexAndEnsureVisible(index);
textBoxListViewText.Focus();
AudioWaveForm.NewSelectionParagraph = null;
audioVisualizer.NewSelectionParagraph = null;
ShowStatus(string.Format(_language.VideoControls.NewTextInsertAtX, newParagraph.StartTime.ToShortString()));
}
private void mergeWithPreviousToolStripMenuItem_Click(object sender, EventArgs e)
{
int index = _subtitle.GetIndex(AudioWaveForm.RightClickedParagraph);
int index = _subtitle.GetIndex(audioVisualizer.RightClickedParagraph);
if (index >= 0)
{
SubtitleListview1.SelectIndexAndEnsureVisible(index);
@ -8544,7 +8544,7 @@ namespace Nikse.SubtitleEdit.Forms
private void deleteParagraphToolStripMenuItem_Click(object sender, EventArgs e)
{
int index = _subtitle.GetIndex(AudioWaveForm.RightClickedParagraph);
int index = _subtitle.GetIndex(audioVisualizer.RightClickedParagraph);
if (index >= 0)
{
SubtitleListview1.SelectIndexAndEnsureVisible(index);
@ -8554,7 +8554,7 @@ namespace Nikse.SubtitleEdit.Forms
private void splitToolStripMenuItem1_Click(object sender, EventArgs e)
{
int index = _subtitle.GetIndex(AudioWaveForm.RightClickedParagraph);
int index = _subtitle.GetIndex(audioVisualizer.RightClickedParagraph);
if (index >= 0)
{
SubtitleListview1.SelectIndexAndEnsureVisible(index);
@ -8564,7 +8564,7 @@ namespace Nikse.SubtitleEdit.Forms
private void mergeWithNextToolStripMenuItem_Click(object sender, EventArgs e)
{
int index = _subtitle.GetIndex(AudioWaveForm.RightClickedParagraph);
int index = _subtitle.GetIndex(audioVisualizer.RightClickedParagraph);
if (index >= 0)
{
SubtitleListview1.SelectIndexAndEnsureVisible(index);
@ -8574,25 +8574,25 @@ namespace Nikse.SubtitleEdit.Forms
private void buttonWaveFormZoomIn_Click(object sender, EventArgs e)
{
if (AudioWaveForm.WavePeaks != null && AudioWaveForm.Visible)
if (audioVisualizer.WavePeaks != null && audioVisualizer.Visible)
{
AudioWaveForm.ZoomFactor += 0.1;
audioVisualizer.ZoomFactor += 0.1;
}
}
private void buttonWaveFormZoomOut_Click(object sender, EventArgs e)
{
if (AudioWaveForm.WavePeaks != null && AudioWaveForm.Visible)
if (audioVisualizer.WavePeaks != null && audioVisualizer.Visible)
{
AudioWaveForm.ZoomFactor -= 0.1;
audioVisualizer.ZoomFactor -= 0.1;
}
}
private void buttonWaveFormZoomReset_Click(object sender, EventArgs e)
{
if (AudioWaveForm.WavePeaks != null && AudioWaveForm.Visible)
if (audioVisualizer.WavePeaks != null && audioVisualizer.Visible)
{
AudioWaveForm.ZoomFactor = 1.0;
audioVisualizer.ZoomFactor = 1.0;
}
}
@ -8600,9 +8600,9 @@ namespace Nikse.SubtitleEdit.Forms
{
if (mediaPlayer != null && mediaPlayer.VideoPlayer != null)
{
Paragraph p = AudioWaveForm.NewSelectionParagraph;
Paragraph p = audioVisualizer.NewSelectionParagraph;
if (p == null)
p = AudioWaveForm.RightClickedParagraph;
p = audioVisualizer.RightClickedParagraph;
if (p != null)
{
@ -8616,18 +8616,18 @@ namespace Nikse.SubtitleEdit.Forms
private void toolStripButtonWaveFormZoomIn_Click(object sender, EventArgs e)
{
if (AudioWaveForm.WavePeaks != null && AudioWaveForm.Visible)
if (audioVisualizer.WavePeaks != null && audioVisualizer.Visible)
{
AudioWaveForm.ZoomFactor += 0.1;
audioVisualizer.ZoomFactor += 0.1;
SelectZoomTextInComboBox();
}
}
private void toolStripButtonWaveFormZoomOut_Click(object sender, EventArgs e)
{
if (AudioWaveForm.WavePeaks != null && AudioWaveForm.Visible)
if (audioVisualizer.WavePeaks != null && audioVisualizer.Visible)
{
AudioWaveForm.ZoomFactor -= 0.1;
audioVisualizer.ZoomFactor -= 0.1;
SelectZoomTextInComboBox();
}
}
@ -8637,7 +8637,7 @@ namespace Nikse.SubtitleEdit.Forms
ComboBoxZoomItem item = toolStripComboBoxWaveForm.SelectedItem as ComboBoxZoomItem;
if (item != null)
{
AudioWaveForm.ZoomFactor = item.ZoomFactor;
audioVisualizer.ZoomFactor = item.ZoomFactor;
}
}
@ -8647,7 +8647,7 @@ namespace Nikse.SubtitleEdit.Forms
foreach (object obj in toolStripComboBoxWaveForm.Items)
{
ComboBoxZoomItem item = obj as ComboBoxZoomItem;
if (Math.Abs(AudioWaveForm.ZoomFactor - item.ZoomFactor) < 0.001)
if (Math.Abs(audioVisualizer.ZoomFactor - item.ZoomFactor) < 0.001)
{
toolStripComboBoxWaveForm.SelectedIndex = i;
return;
@ -8669,8 +8669,8 @@ namespace Nikse.SubtitleEdit.Forms
private void toolStripButtonLockCenter_Click(object sender, EventArgs e)
{
toolStripButtonLockCenter.Checked = !toolStripButtonLockCenter.Checked;
AudioWaveForm.Locked = toolStripButtonLockCenter.Checked;
Configuration.Settings.General.WaveFormCenter = AudioWaveForm.Locked;
audioVisualizer.Locked = toolStripButtonLockCenter.Checked;
Configuration.Settings.General.WaveFormCenter = audioVisualizer.Locked;
}
private void trackBarWaveFormPosition_ValueChanged(object sender, EventArgs e)
@ -8729,7 +8729,7 @@ namespace Nikse.SubtitleEdit.Forms
addWaveForm.WavePeak.WritePeakSamples(peakWaveFileName);
var audioPeakWave = new WavePeakGenerator(peakWaveFileName);
audioPeakWave.GenerateAllSamples();
AudioWaveForm.WavePeaks = audioPeakWave;
audioVisualizer.WavePeaks = audioPeakWave;
timerWaveForm.Start();
}
}
@ -9473,7 +9473,7 @@ namespace Nikse.SubtitleEdit.Forms
_waveFormUnDocked = new WaveFormUnDocked(this, _formPositionsAndSizes);
_formPositionsAndSizes.SetPositionAndSize(_waveFormUnDocked);
var control = AudioWaveForm;
var control = audioVisualizer;
groupBoxVideo.Controls.Remove(control);
control.Top = 0;
control.Left = 0;
@ -9638,7 +9638,7 @@ namespace Nikse.SubtitleEdit.Forms
_videoControlsUnDocked = null;
ShowVideoPlayer();
AudioWaveForm.Visible = toolStripButtonToggleWaveForm.Checked;
audioVisualizer.Visible = toolStripButtonToggleWaveForm.Checked;
trackBarWaveFormPosition.Visible = toolStripButtonToggleWaveForm.Checked;
panelWaveFormControls.Visible = toolStripButtonToggleWaveForm.Checked;
if (!toolStripButtonToggleVideo.Checked)
@ -9751,8 +9751,9 @@ namespace Nikse.SubtitleEdit.Forms
_videoFileName = null;
_videoAudioTrackNumber = -1;
labelVideoInfo.Text = Configuration.Settings.Language.General.NoVideoLoaded;
AudioWaveForm.WavePeaks = null;
AudioWaveForm.Invalidate();
audioVisualizer.WavePeaks = null;
audioVisualizer.ResetSpectrogram();
audioVisualizer.Invalidate();
}
private void toolStripMenuItemVideo_DropDownOpening(object sender, EventArgs e)
@ -10275,15 +10276,15 @@ namespace Nikse.SubtitleEdit.Forms
private void contextMenuStripWaveForm_Opening(object sender, System.ComponentModel.CancelEventArgs e)
{
if (AudioWaveForm.IsSpectrogramAvailable)
if (audioVisualizer.IsSpectrogramAvailable)
{
if (AudioWaveForm.ShowSpectrogram && AudioWaveForm.ShowWaveform)
if (audioVisualizer.ShowSpectrogram && audioVisualizer.ShowWaveform)
{
showWaveformAndSpectrogramToolStripMenuItem.Visible = false;
showOnlyWaveformToolStripMenuItem.Visible = true;
showOnlySpectrogramToolStripMenuItem.Visible = true;
}
else if (AudioWaveForm.ShowSpectrogram)
else if (audioVisualizer.ShowSpectrogram)
{
showWaveformAndSpectrogramToolStripMenuItem.Visible = true;
showOnlyWaveformToolStripMenuItem.Visible = true;
@ -10307,20 +10308,20 @@ namespace Nikse.SubtitleEdit.Forms
private void showWaveformAndSpectrogramToolStripMenuItem_Click(object sender, EventArgs e)
{
AudioWaveForm.ShowSpectrogram = true;
AudioWaveForm.ShowWaveform = true;
audioVisualizer.ShowSpectrogram = true;
audioVisualizer.ShowWaveform = true;
}
private void showOnlyWaveformToolStripMenuItem_Click(object sender, EventArgs e)
{
AudioWaveForm.ShowSpectrogram = false;
AudioWaveForm.ShowWaveform = true;
audioVisualizer.ShowSpectrogram = false;
audioVisualizer.ShowWaveform = true;
}
private void showOnlySpectrogramToolStripMenuItem_Click(object sender, EventArgs e)
{
AudioWaveForm.ShowSpectrogram = true;
AudioWaveForm.ShowWaveform = false;
audioVisualizer.ShowSpectrogram = true;
audioVisualizer.ShowWaveform = false;
}
}

View File

@ -683,46 +683,46 @@
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAD2
CAAAAk1TRnQBSQFMAgEBAgEAAfgBBgH4AQYBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
AwABQAMAARADAAEBAQABCAYAAQQYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA
AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5
AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA
AWYDAAGZAwABzAIAATMDAAIzAgABMwFmAgABMwGZAgABMwHMAgABMwH/AgABZgMAAWYBMwIAAmYCAAFm
AZkCAAFmAcwCAAFmAf8CAAGZAwABmQEzAgABmQFmAgACmQIAAZkBzAIAAZkB/wIAAcwDAAHMATMCAAHM
AWYCAAHMAZkCAALMAgABzAH/AgAB/wFmAgAB/wGZAgAB/wHMAQABMwH/AgAB/wEAATMBAAEzAQABZgEA
ATMBAAGZAQABMwEAAcwBAAEzAQAB/wEAAf8BMwIAAzMBAAIzAWYBAAIzAZkBAAIzAcwBAAIzAf8BAAEz
AWYCAAEzAWYBMwEAATMCZgEAATMBZgGZAQABMwFmAcwBAAEzAWYB/wEAATMBmQIAATMBmQEzAQABMwGZ
AWYBAAEzApkBAAEzAZkBzAEAATMBmQH/AQABMwHMAgABMwHMATMBAAEzAcwBZgEAATMBzAGZAQABMwLM
AQABMwHMAf8BAAEzAf8BMwEAATMB/wFmAQABMwH/AZkBAAEzAf8BzAEAATMC/wEAAWYDAAFmAQABMwEA
AWYBAAFmAQABZgEAAZkBAAFmAQABzAEAAWYBAAH/AQABZgEzAgABZgIzAQABZgEzAWYBAAFmATMBmQEA
AWYBMwHMAQABZgEzAf8BAAJmAgACZgEzAQADZgEAAmYBmQEAAmYBzAEAAWYBmQIAAWYBmQEzAQABZgGZ
AWYBAAFmApkBAAFmAZkBzAEAAWYBmQH/AQABZgHMAgABZgHMATMBAAFmAcwBmQEAAWYCzAEAAWYBzAH/
AQABZgH/AgABZgH/ATMBAAFmAf8BmQEAAWYB/wHMAQABzAEAAf8BAAH/AQABzAEAApkCAAGZATMBmQEA
AZkBAAGZAQABmQEAAcwBAAGZAwABmQIzAQABmQEAAWYBAAGZATMBzAEAAZkBAAH/AQABmQFmAgABmQFm
ATMBAAGZATMBZgEAAZkBZgGZAQABmQFmAcwBAAGZATMB/wEAApkBMwEAApkBZgEAA5kBAAKZAcwBAAKZ
Af8BAAGZAcwCAAGZAcwBMwEAAWYBzAFmAQABmQHMAZkBAAGZAswBAAGZAcwB/wEAAZkB/wIAAZkB/wEz
AQABmQHMAWYBAAGZAf8BmQEAAZkB/wHMAQABmQL/AQABzAMAAZkBAAEzAQABzAEAAWYBAAHMAQABmQEA
AcwBAAHMAQABmQEzAgABzAIzAQABzAEzAWYBAAHMATMBmQEAAcwBMwHMAQABzAEzAf8BAAHMAWYCAAHM
AWYBMwEAAZkCZgEAAcwBZgGZAQABzAFmAcwBAAGZAWYB/wEAAcwBmQIAAcwBmQEzAQABzAGZAWYBAAHM
ApkBAAHMAZkBzAEAAcwBmQH/AQACzAIAAswBMwEAAswBZgEAAswBmQEAA8wBAALMAf8BAAHMAf8CAAHM
Af8BMwEAAZkB/wFmAQABzAH/AZkBAAHMAf8BzAEAAcwC/wEAAcwBAAEzAQAB/wEAAWYBAAH/AQABmQEA
AcwBMwIAAf8CMwEAAf8BMwFmAQAB/wEzAZkBAAH/ATMBzAEAAf8BMwH/AQAB/wFmAgAB/wFmATMBAAHM
AmYBAAH/AWYBmQEAAf8BZgHMAQABzAFmAf8BAAH/AZkCAAH/AZkBMwEAAf8BmQFmAQAB/wKZAQAB/wGZ
AcwBAAH/AZkB/wEAAf8BzAIAAf8BzAEzAQAB/wHMAWYBAAH/AcwBmQEAAf8CzAEAAf8BzAH/AQAC/wEz
AQABzAH/AWYBAAL/AZkBAAL/AcwBAAJmAf8BAAFmAf8BZgEAAWYC/wEAAf8CZgEAAf8BZgH/AQAC/wFm
AQABIQEAAaUBAANfAQADdwEAA4YBAAOWAQADywEAA7IBAAPXAQAD3QEAA+MBAAPqAQAD8QEAA/gBAAHw
AfsB/wEAAaQCoAEAA4ADAAH/AgAB/wMAAv8BAAH/AwAB/wEAAf8BAAL/AgAD/xEAEHUwABB1MAAQdSQA
AewB9AQAAewB9AQABHUB7AV1AewFdSQAAewBDwHyAwAB7AEPAfIDAAR1AewBDwR1AewBDwR1JAAB7AFJ
AQ8B8gIAAewBSQEPAfICAAR1AewBSQEPA3UB7AFJAQ8DdSAAAewBEQFDARUBFAFyAUkBDwEHAesBFAFy
AUkBDwHyAQAB7AERAUMBFQEUAXIBSQEPAQcB6wEUAXIBSQEPAnUgAAHtAQgBeARyAUkBDwRyAUkBDwHy
Ae0BCAF4BHIBSQEPBHIBSQEPAXUgAAGSAQgDmAJ4AnIBbQGYAngCcgFtAZIBCAOYAngCcgFtAZgCeAJy
AW0gAAEcAcIECAJ4AewBmQIIAngB7AHzARwBwgQIAngB7AGZAggCeAHsAXUgAAGYARwBkgHtAewBCAGY
AewB8AHvAewBCAGYAewB8wEAAZgBHAGSAe0B7AEIAZgB7AHwAe8B7AEIAZgB7AJ1JAAB7QEIAewB8wIA
Ae0BCAHsAfMCAAR1Ae0BCAHsA3UB7QEIAewDdSQAAZIB7AHzAwABkgHsAfMDAAR1AZIB7AR1AZIB7AR1
JAABHAH0BAABHAH0BAAEdQEcBXUBHAV1MAAQdTAAEHUgAAFCAU0BPgcAAT4DAAEoAwABQAMAARADAAEB
AQABAQUAAYAXAAP/AQAC/wYAAv8GAAL/BgAB8wHPBgAB8QHHBgAB8AHDBwABAR8AAQEGAAHwAcMGAAHx
AccGAAHzAc8GAAL/BgAC/wYACw==
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAD0
CAAAAk1TRnQBSQFMAgEBAgIAAQcBAAEHARABAAEQAQAE/wEJAQAI/wFCAU0BNgEEBgABNgEEAgABKAMA
AUADAAEQAwABAQEAAQgGAAEEGAABgAIAAYADAAKAAQABgAMAAYABAAGAAQACgAIAA8ABAAHAAdwBwAEA
AfABygGmAQABMwUAATMBAAEzAQABMwEAAjMCAAMWAQADHAEAAyIBAAMpAQADVQEAA00BAANCAQADOQEA
AYABfAH/AQACUAH/AQABkwEAAdYBAAH/AewBzAEAAcYB1gHvAQAB1gLnAQABkAGpAa0CAAH/ATMDAAFm
AwABmQMAAcwCAAEzAwACMwIAATMBZgIAATMBmQIAATMBzAIAATMB/wIAAWYDAAFmATMCAAJmAgABZgGZ
AgABZgHMAgABZgH/AgABmQMAAZkBMwIAAZkBZgIAApkCAAGZAcwCAAGZAf8CAAHMAwABzAEzAgABzAFm
AgABzAGZAgACzAIAAcwB/wIAAf8BZgIAAf8BmQIAAf8BzAEAATMB/wIAAf8BAAEzAQABMwEAAWYBAAEz
AQABmQEAATMBAAHMAQABMwEAAf8BAAH/ATMCAAMzAQACMwFmAQACMwGZAQACMwHMAQACMwH/AQABMwFm
AgABMwFmATMBAAEzAmYBAAEzAWYBmQEAATMBZgHMAQABMwFmAf8BAAEzAZkCAAEzAZkBMwEAATMBmQFm
AQABMwKZAQABMwGZAcwBAAEzAZkB/wEAATMBzAIAATMBzAEzAQABMwHMAWYBAAEzAcwBmQEAATMCzAEA
ATMBzAH/AQABMwH/ATMBAAEzAf8BZgEAATMB/wGZAQABMwH/AcwBAAEzAv8BAAFmAwABZgEAATMBAAFm
AQABZgEAAWYBAAGZAQABZgEAAcwBAAFmAQAB/wEAAWYBMwIAAWYCMwEAAWYBMwFmAQABZgEzAZkBAAFm
ATMBzAEAAWYBMwH/AQACZgIAAmYBMwEAA2YBAAJmAZkBAAJmAcwBAAFmAZkCAAFmAZkBMwEAAWYBmQFm
AQABZgKZAQABZgGZAcwBAAFmAZkB/wEAAWYBzAIAAWYBzAEzAQABZgHMAZkBAAFmAswBAAFmAcwB/wEA
AWYB/wIAAWYB/wEzAQABZgH/AZkBAAFmAf8BzAEAAcwBAAH/AQAB/wEAAcwBAAKZAgABmQEzAZkBAAGZ
AQABmQEAAZkBAAHMAQABmQMAAZkCMwEAAZkBAAFmAQABmQEzAcwBAAGZAQAB/wEAAZkBZgIAAZkBZgEz
AQABmQEzAWYBAAGZAWYBmQEAAZkBZgHMAQABmQEzAf8BAAKZATMBAAKZAWYBAAOZAQACmQHMAQACmQH/
AQABmQHMAgABmQHMATMBAAFmAcwBZgEAAZkBzAGZAQABmQLMAQABmQHMAf8BAAGZAf8CAAGZAf8BMwEA
AZkBzAFmAQABmQH/AZkBAAGZAf8BzAEAAZkC/wEAAcwDAAGZAQABMwEAAcwBAAFmAQABzAEAAZkBAAHM
AQABzAEAAZkBMwIAAcwCMwEAAcwBMwFmAQABzAEzAZkBAAHMATMBzAEAAcwBMwH/AQABzAFmAgABzAFm
ATMBAAGZAmYBAAHMAWYBmQEAAcwBZgHMAQABmQFmAf8BAAHMAZkCAAHMAZkBMwEAAcwBmQFmAQABzAKZ
AQABzAGZAcwBAAHMAZkB/wEAAswCAALMATMBAALMAWYBAALMAZkBAAPMAQACzAH/AQABzAH/AgABzAH/
ATMBAAGZAf8BZgEAAcwB/wGZAQABzAH/AcwBAAHMAv8BAAHMAQABMwEAAf8BAAFmAQAB/wEAAZkBAAHM
ATMCAAH/AjMBAAH/ATMBZgEAAf8BMwGZAQAB/wEzAcwBAAH/ATMB/wEAAf8BZgIAAf8BZgEzAQABzAJm
AQAB/wFmAZkBAAH/AWYBzAEAAcwBZgH/AQAB/wGZAgAB/wGZATMBAAH/AZkBZgEAAf8CmQEAAf8BmQHM
AQAB/wGZAf8BAAH/AcwCAAH/AcwBMwEAAf8BzAFmAQAB/wHMAZkBAAH/AswBAAH/AcwB/wEAAv8BMwEA
AcwB/wFmAQAC/wGZAQAC/wHMAQACZgH/AQABZgH/AWYBAAFmAv8BAAH/AmYBAAH/AWYB/wEAAv8BZgEA
ASEBAAGlAQADXwEAA3cBAAOGAQADlgEAA8sBAAOyAQAD1wEAA90BAAPjAQAD6gEAA/EBAAP4AQAB8AH7
Af8BAAGkAqABAAOAAwAB/wIAAf8DAAL/AQAB/wMAAf8BAAH/AQAC/wIAA/8RABB1MAAQdTAAEHUkAAHs
AfQEAAHsAfQEAAR1AewFdQHsBXUkAAHsAQ8B8gMAAewBDwHyAwAEdQHsAQ8EdQHsAQ8EdSQAAewBSQEP
AfICAAHsAUkBDwHyAgAEdQHsAUkBDwN1AewBSQEPA3UgAAHsAREBQwEVARQBcgFJAQ8BBwHrARQBcgFJ
AQ8B8gEAAewBEQFDARUBFAFyAUkBDwEHAesBFAFyAUkBDwJ1IAAB7QEIAXgEcgFJAQ8EcgFJAQ8B8gHt
AQgBeARyAUkBDwRyAUkBDwF1IAABkgEIA5gCeAJyAW0BmAJ4AnIBbQGSAQgDmAJ4AnIBbQGYAngCcgFt
IAABHAHCBAgCeAHsAZkCCAJ4AewB8wEcAcIECAJ4AewBmQIIAngB7AF1IAABmAEcAZIB7QHsAQgBmAHs
AfAB7wHsAQgBmAHsAfMBAAGYARwBkgHtAewBCAGYAewB8AHvAewBCAGYAewCdSQAAe0BCAHsAfMCAAHt
AQgB7AHzAgAEdQHtAQgB7AN1Ae0BCAHsA3UkAAGSAewB8wMAAZIB7AHzAwAEdQGSAewEdQGSAewEdSQA
ARwB9AQAARwB9AQABHUBHAV1ARwFdTAAEHUwABB1IAABQgFNAT4HAAE+AwABKAMAAUADAAEQAwABAQEA
AQEFAAGAFwAD/wEAAv8GAAL/BgAC/wYAAfMBzwYAAfEBxwYAAfABwwcAAQEfAAEBBgAB8AHDBgAB8QHH
BgAB8wHPBgAC/wYAAv8GAAs=
</value>
</data>
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">