mirror of
https://github.com/cookiengineer/audacity
synced 2026-02-05 03:03:10 +01:00
Patch by Maarten Baert for compatibility with project files from previous versions of Audacity, by re-scaling on load. Opening newer project files in older builds works but the time track gets messed up. This needs to be release noted.
This commit is contained in:
@@ -23,6 +23,10 @@
|
||||
#include "Internat.h"
|
||||
#include "Resample.h"
|
||||
|
||||
//TODO-MB: are these sensible values?
|
||||
#define TIMETRACK_MIN 0.1
|
||||
#define TIMETRACK_MAX 10.0
|
||||
|
||||
TimeTrack *TrackFactory::NewTimeTrack()
|
||||
{
|
||||
return new TimeTrack(mDirManager);
|
||||
@@ -43,7 +47,7 @@ TimeTrack::TimeTrack(DirManager *projDirManager):
|
||||
mEnvelope->Flatten(1.0);
|
||||
mEnvelope->Mirror(false);
|
||||
mEnvelope->SetOffset(0);
|
||||
mEnvelope->SetRange(0.1, 10.0); //TODO-MB: are these sensible values?
|
||||
mEnvelope->SetRange(TIMETRACK_MIN, TIMETRACK_MAX);
|
||||
|
||||
SetDefaultName(_("Time Track"));
|
||||
SetName(GetDefaultName());
|
||||
@@ -158,7 +162,7 @@ bool TimeTrack::HandleXMLTag(const wxChar *tag, const wxChar **attrs)
|
||||
else if (!wxStrcmp(attr, wxT("rangeupper")))
|
||||
{
|
||||
mRangeUpper = Internat::CompatibleToDouble(value);
|
||||
mRescaleXMLValues = false; //TODO-MB: figure out how to rescale after loading
|
||||
mRescaleXMLValues = false;
|
||||
}
|
||||
else if (!wxStrcmp(attr, wxT("displaylog")) &&
|
||||
XMLValueChecker::IsGoodInt(strValue) && strValue.ToLong(&nValue))
|
||||
@@ -174,12 +178,24 @@ bool TimeTrack::HandleXMLTag(const wxChar *tag, const wxChar **attrs)
|
||||
}
|
||||
|
||||
} // while
|
||||
if(mRescaleXMLValues)
|
||||
mEnvelope->SetRange(0.0, 1.0); // this will be restored to the actual range later
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void TimeTrack::HandleXMLEndTag(const wxChar *tag)
|
||||
{
|
||||
if(mRescaleXMLValues)
|
||||
{
|
||||
mRescaleXMLValues = false;
|
||||
mEnvelope->Rescale(mRangeLower, mRangeUpper);
|
||||
mEnvelope->SetRange(TIMETRACK_MIN, TIMETRACK_MAX);
|
||||
}
|
||||
}
|
||||
|
||||
XMLTagHandler *TimeTrack::HandleXMLChild(const wxChar *tag)
|
||||
{
|
||||
if (!wxStrcmp(tag, wxT("envelope")))
|
||||
|
||||
Reference in New Issue
Block a user