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:
parent
e8a07c61e2
commit
555aa14e9e
@ -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;
|
||||
|
@ -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
|
||||
|
@ -283,6 +283,11 @@ WaveTrack::ValidateWaveTrackDisplay(WaveTrackDisplay display)
|
||||
}
|
||||
}
|
||||
|
||||
void WaveTrack::SetLastScaleType()
|
||||
{
|
||||
mLastScaleType = GetWaveformSettings().scaleType;
|
||||
}
|
||||
|
||||
void WaveTrack::GetDisplayBounds(float *min, float *max)
|
||||
{
|
||||
*min = mDisplayMin;
|
||||
|
@ -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; }
|
||||
|
Loading…
x
Reference in New Issue
Block a user