mirror of
https://github.com/SubtitleEdit/subtitleedit.git
synced 2024-10-28 06:52:35 +01:00
Fix for zoom in audio visualizer with multi-select
git-svn-id: https://subtitleedit.googlecode.com/svn/trunk@1365 99eadd0c-20b8-1223-b5c4-2a2b2df33de2
This commit is contained in:
parent
f72f4e2d72
commit
fdc263b135
@ -306,21 +306,28 @@ namespace Nikse.SubtitleEdit.Controls
|
||||
int result = (int)Math.Round((percentage * imageHeight) + (imageHeight / 2.0));
|
||||
return imageHeight - result;
|
||||
}
|
||||
|
||||
private bool IsSelectedIndex(int pos)
|
||||
|
||||
private bool IsSelectedIndex(int pos, ref int lastCurrentEnd)
|
||||
{
|
||||
if (_selectedIndices == null)
|
||||
return false;
|
||||
|
||||
if (pos < lastCurrentEnd)
|
||||
return true;
|
||||
|
||||
foreach (int index in _selectedIndices)
|
||||
{
|
||||
var p = _subtitle.Paragraphs[index];
|
||||
|
||||
int start = SecondsToXPosition(p.StartTime.TotalSeconds);
|
||||
int end = SecondsToXPosition(p.EndTime.TotalSeconds);
|
||||
int start = (int)Math.Round(p.StartTime.TotalSeconds * _wavePeaks.Header.SampleRate * _zoomFactor);
|
||||
int end = (int)Math.Round(p.EndTime.TotalSeconds * _wavePeaks.Header.SampleRate * _zoomFactor);
|
||||
|
||||
if (pos >= start && pos <= end)
|
||||
{
|
||||
lastCurrentEnd = end;
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
return false;
|
||||
}
|
||||
@ -366,6 +373,7 @@ namespace Nikse.SubtitleEdit.Controls
|
||||
|
||||
var penNormal = new Pen(Color);
|
||||
var penSelected = new Pen(SelectedColor); // selected paragraph
|
||||
int lastCurrentEnd = -1;
|
||||
|
||||
if (ShowWaveform)
|
||||
{
|
||||
@ -384,7 +392,7 @@ namespace Nikse.SubtitleEdit.Controls
|
||||
int n = begin + i;
|
||||
if (n <= end && n >= start)
|
||||
pen = penSelected;
|
||||
else if (IsSelectedIndex(n))
|
||||
else if (IsSelectedIndex(n, ref lastCurrentEnd))
|
||||
pen = penSelected;
|
||||
else
|
||||
pen = penNormal;
|
||||
@ -405,10 +413,10 @@ namespace Nikse.SubtitleEdit.Controls
|
||||
graphics.DrawLine(pen, x2, y, x3, newY);
|
||||
x2 = x3;
|
||||
y = newY;
|
||||
int n = begin + i;
|
||||
int n = (int)(begin + x3);
|
||||
if (n <= end && n >= start)
|
||||
pen = penSelected;
|
||||
else if (IsSelectedIndex(n))
|
||||
else if (IsSelectedIndex(n, ref lastCurrentEnd))
|
||||
pen = penSelected;
|
||||
else
|
||||
pen = penNormal;
|
||||
|
Loading…
Reference in New Issue
Block a user