1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-06-28 06:08:40 +02:00

Bug1160: Fix scale limits in waveform views

This commit is contained in:
Paul Licameli 2015-08-26 07:24:20 -04:00
parent e8a07c61e2
commit 555aa14e9e
4 changed files with 14 additions and 9 deletions

View File

@ -703,10 +703,11 @@ void TrackArtist::UpdateVRuler(Track *t, wxRect & rect)
float min, max;
wt->GetDisplayBounds(&min, &max);
if (wt->GetLastScaleType() != scaleType)
if (wt->GetLastScaleType() != scaleType &&
wt->GetLastScaleType() != -1)
{
// do a translation into the linear space
wt->SetLastScaleType(scaleType);
wt->SetLastScaleType();
float sign = (min >= 0 ? 1 : -1);
if (min != 0.) {
min = DB_TO_LINEAR(fabs(min) * dBRange - dBRange);
@ -742,10 +743,11 @@ void TrackArtist::UpdateVRuler(Track *t, wxRect & rect)
float min, max;
wt->GetDisplayBounds(&min, &max);
if (wt->GetLastScaleType() != scaleType)
if (wt->GetLastScaleType() != scaleType &&
wt->GetLastScaleType() != -1)
{
// do a translation into the dB space
wt->SetLastScaleType(scaleType);
wt->SetLastScaleType();
float sign = (min >= 0 ? 1 : -1);
if (min != 0.) {
min = (LINEAR_TO_DB(fabs(min)) + dBRange) / dBRange;

View File

@ -9375,6 +9375,7 @@ void TrackPanel::OnSetDisplay(wxCommandEvent & event)
(id == WaveTrack::Waveform &&
wt->GetWaveformSettings().isLinear() != linear);
if (wrongType || wrongScale) {
wt->SetLastScaleType();
wt->SetDisplay(WaveTrack::WaveTrackDisplay(id));
if (wrongScale)
wt->GetIndependentWaveformSettings().scaleType = linear
@ -9383,6 +9384,7 @@ void TrackPanel::OnSetDisplay(wxCommandEvent & event)
WaveTrack *l = static_cast<WaveTrack *>(wt->GetLink());
if (l) {
l->SetLastScaleType();
l->SetDisplay(WaveTrack::WaveTrackDisplay(id));
if (wrongScale)
l->GetIndependentWaveformSettings().scaleType = linear

View File

@ -283,6 +283,11 @@ WaveTrack::ValidateWaveTrackDisplay(WaveTrackDisplay display)
}
}
void WaveTrack::SetLastScaleType()
{
mLastScaleType = GetWaveformSettings().scaleType;
}
void WaveTrack::GetDisplayBounds(float *min, float *max)
{
*min = mDisplayMin;

View File

@ -433,11 +433,7 @@ class AUDACITY_DLL_API WaveTrack : public Track {
static WaveTrackDisplay ValidateWaveTrackDisplay(WaveTrackDisplay display);
int GetLastScaleType() { return mLastScaleType; }
void SetLastScaleType(int scaleType)
{
// remember last display mode for wave and wavedb so vertical ruler can remap
mLastScaleType = scaleType;
}
void SetLastScaleType();
WaveTrackDisplay GetDisplay() const { return mDisplay; }
void SetDisplay(WaveTrackDisplay display) { mDisplay = display; }