mirror of
https://github.com/cookiengineer/audacity
synced 2025-06-15 23:59:37 +02:00
Performance improvements
This commit is contained in:
parent
293ebe1ab0
commit
759ff8cd0d
@ -117,6 +117,7 @@ void AboutDialog::CreateCreditsList()
|
||||
AddCredit(wxT("Philip Van Baren"), roleContributor);
|
||||
AddCredit(wxT("Salvo Ventura"), roleContributor);
|
||||
AddCredit(wxT("Jun Wan"), roleContributor);
|
||||
AddCredit(wxT("Daniel Winzen"), roleContributor);
|
||||
AddCredit(wxT("Tom Woodhams"), roleContributor);
|
||||
AddCredit(wxT("Wing Yu"), roleContributor);
|
||||
|
||||
|
@ -427,7 +427,7 @@ wxString BatchCommands::BuildCleanFileName(wxString fileName, wxString extension
|
||||
return cleanedName;
|
||||
}
|
||||
|
||||
bool BatchCommands::WriteMp3File( const wxString Name, int bitrate )
|
||||
bool BatchCommands::WriteMp3File( const wxString & Name, int bitrate )
|
||||
{ //check if current project is mono or stereo
|
||||
int numChannels = 2;
|
||||
if (IsMono()) {
|
||||
@ -471,7 +471,7 @@ bool BatchCommands::WriteMp3File( const wxString Name, int bitrate )
|
||||
// and think again.
|
||||
// ======= IMPORTANT ========
|
||||
// CLEANSPEECH remnant
|
||||
bool BatchCommands::ApplySpecialCommand(int WXUNUSED(iCommand), const wxString command,const wxString params)
|
||||
bool BatchCommands::ApplySpecialCommand(int WXUNUSED(iCommand), const wxString & command,const wxString & params)
|
||||
{
|
||||
if (ReportAndSkip(command, params))
|
||||
return true;
|
||||
@ -555,7 +555,7 @@ bool BatchCommands::ApplySpecialCommand(int WXUNUSED(iCommand), const wxString c
|
||||
}
|
||||
// end CLEANSPEECH remnant
|
||||
|
||||
bool BatchCommands::SetCurrentParametersFor(const wxString command, const wxString params)
|
||||
bool BatchCommands::SetCurrentParametersFor(const wxString & command, const wxString & params)
|
||||
{
|
||||
// transfer the parameters to the effect...
|
||||
if( !params.IsEmpty() )
|
||||
@ -576,7 +576,7 @@ bool BatchCommands::SetCurrentParametersFor(const wxString command, const wxStri
|
||||
return true;
|
||||
}
|
||||
|
||||
bool BatchCommands::ApplyEffectCommand(const PluginID & ID, const wxString command, const wxString params)
|
||||
bool BatchCommands::ApplyEffectCommand(const PluginID & ID, const wxString & command, const wxString & params)
|
||||
{
|
||||
//Possibly end processing here, if in batch-debug
|
||||
if( ReportAndSkip(command, params))
|
||||
@ -597,7 +597,7 @@ bool BatchCommands::ApplyEffectCommand(const PluginID & ID, const wxString comma
|
||||
AudacityProject::OnEffectFlags::kSkipState);
|
||||
}
|
||||
|
||||
bool BatchCommands::ApplyCommand(const wxString command, const wxString params)
|
||||
bool BatchCommands::ApplyCommand(const wxString & command, const wxString & params)
|
||||
{
|
||||
|
||||
unsigned int i;
|
||||
@ -729,7 +729,7 @@ void BatchCommands::ResetChain()
|
||||
|
||||
// ReportAndSkip() is a diagnostic function that avoids actually
|
||||
// applying the requested effect if in batch-debug mode.
|
||||
bool BatchCommands::ReportAndSkip(const wxString command, const wxString params)
|
||||
bool BatchCommands::ReportAndSkip(const wxString & command, const wxString & params)
|
||||
{
|
||||
int bDebug;
|
||||
gPrefs->Read(wxT("/Batch/Debug"), &bDebug, false);
|
||||
|
@ -25,16 +25,16 @@ class BatchCommands {
|
||||
BatchCommands();
|
||||
public:
|
||||
bool ApplyChain(const wxString & filename = wxT(""));
|
||||
bool ApplyCommand( const wxString command, const wxString params );
|
||||
bool ApplyCommand( const wxString & command, const wxString & params );
|
||||
bool ApplyCommandInBatchMode(const wxString & command, const wxString ¶ms);
|
||||
bool ApplySpecialCommand(int iCommand, const wxString command,const wxString params);
|
||||
bool ApplyEffectCommand(const PluginID & ID, const wxString command, const wxString params);
|
||||
bool ReportAndSkip( const wxString command, const wxString params );
|
||||
bool ApplySpecialCommand(int iCommand, const wxString & command,const wxString & params);
|
||||
bool ApplyEffectCommand(const PluginID & ID, const wxString & command, const wxString & params);
|
||||
bool ReportAndSkip( const wxString & command, const wxString & params );
|
||||
void AbortBatch();
|
||||
|
||||
// Utility functions for the special commands.
|
||||
wxString BuildCleanFileName(wxString fileName, wxString extension);
|
||||
bool WriteMp3File( const wxString Name, int bitrate );
|
||||
bool WriteMp3File( const wxString & Name, int bitrate );
|
||||
double GetEndTime();
|
||||
bool IsMono();
|
||||
|
||||
@ -42,7 +42,7 @@ class BatchCommands {
|
||||
wxArrayString GetNames();
|
||||
static bool PromptForParamsFor( wxString command, wxWindow *parent );
|
||||
static wxString GetCurrentParamsFor( wxString command );
|
||||
static bool SetCurrentParametersFor(const wxString command, const wxString params);
|
||||
static bool SetCurrentParametersFor(const wxString & command, const wxString & params);
|
||||
static wxArrayString GetAllCommands();
|
||||
|
||||
// These commands do depend on the command list.
|
||||
|
@ -463,7 +463,7 @@ bool DirManager::SetProject(wxString& newProjPath, wxString& newProjName, const
|
||||
|
||||
progress->Update(count, total);
|
||||
|
||||
iter++;
|
||||
++iter;
|
||||
count++;
|
||||
}
|
||||
|
||||
@ -485,7 +485,7 @@ bool DirManager::SetProject(wxString& newProjPath, wxString& newProjName, const
|
||||
if (count>=0)
|
||||
progress->Update(count, total);
|
||||
|
||||
iter++;
|
||||
++iter;
|
||||
count--;
|
||||
}
|
||||
|
||||
@ -1271,7 +1271,7 @@ bool DirManager::EnsureSafeFilename(wxFileName fName)
|
||||
db->LockRead();
|
||||
}
|
||||
|
||||
iter++;
|
||||
++iter;
|
||||
}
|
||||
|
||||
if (needToRename) {
|
||||
@ -1297,7 +1297,7 @@ bool DirManager::EnsureSafeFilename(wxFileName fName)
|
||||
if (!b->IsDataAvailable() && (db->GetEncodedAudioFilename() == fName))
|
||||
db->UnlockRead();
|
||||
|
||||
iter++;
|
||||
++iter;
|
||||
}
|
||||
|
||||
// Print error message and cancel the export
|
||||
@ -1327,7 +1327,7 @@ bool DirManager::EnsureSafeFilename(wxFileName fName)
|
||||
db->ChangeAudioFile(renamedFileName);
|
||||
db->UnlockRead();
|
||||
}
|
||||
iter++;
|
||||
++iter;
|
||||
}
|
||||
|
||||
}
|
||||
@ -1474,7 +1474,7 @@ _("Project check of \"%s\" folder \
|
||||
b->Recover();
|
||||
nResult = FSCKstatus_CHANGED | FSCKstatus_SAVE_AUP;
|
||||
}
|
||||
iter++;
|
||||
++iter;
|
||||
}
|
||||
if ((action == 2) && bAutoRecoverMode)
|
||||
wxLogWarning(_(" Project check replaced missing aliased file(s) with silence."));
|
||||
@ -1527,7 +1527,7 @@ _("Project check of \"%s\" folder \
|
||||
// Silence error logging for this block in this session.
|
||||
b->SilenceLog();
|
||||
}
|
||||
iter++;
|
||||
++iter;
|
||||
}
|
||||
if ((action == 0) && bAutoRecoverMode)
|
||||
wxLogWarning(_(" Project check regenerated missing alias summary file(s)."));
|
||||
@ -1585,7 +1585,7 @@ _("Project check of \"%s\" folder \
|
||||
}
|
||||
else if (action == 1)
|
||||
b->SilenceLog();
|
||||
iter++;
|
||||
++iter;
|
||||
}
|
||||
if ((action == 2) && bAutoRecoverMode)
|
||||
wxLogWarning(_(" Project check replaced missing audio data block file(s) with silence."));
|
||||
@ -1701,14 +1701,14 @@ void DirManager::FindMissingAliasedFiles(
|
||||
missingAliasedFilePathHash[aliasedFileFullPath] = NULL;
|
||||
}
|
||||
}
|
||||
iter++;
|
||||
++iter;
|
||||
}
|
||||
|
||||
iter = missingAliasedFilePathHash.begin();
|
||||
while (iter != missingAliasedFilePathHash.end())
|
||||
{
|
||||
wxLogWarning(_("Missing aliased audio file: '%s'"), iter->first.c_str());
|
||||
iter++;
|
||||
++iter;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1734,7 +1734,7 @@ void DirManager::FindMissingAUFs(
|
||||
fileName.GetFullPath().c_str());
|
||||
}
|
||||
}
|
||||
iter++;
|
||||
++iter;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1758,7 +1758,7 @@ void DirManager::FindMissingAUs(
|
||||
fileName.GetFullPath().c_str());
|
||||
}
|
||||
}
|
||||
iter++;
|
||||
++iter;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1847,7 +1847,7 @@ void DirManager::FillBlockfilesCache()
|
||||
BlockFile *b = iter->second;
|
||||
if (b->GetNeedFillCache())
|
||||
numNeed++;
|
||||
iter++;
|
||||
++iter;
|
||||
}
|
||||
|
||||
if (numNeed == 0)
|
||||
@ -1867,7 +1867,7 @@ void DirManager::FillBlockfilesCache()
|
||||
|
||||
if (!progress.Update(current, numNeed))
|
||||
break; // user cancelled progress dialog, stop caching
|
||||
iter++;
|
||||
++iter;
|
||||
current++;
|
||||
}
|
||||
#endif // DEPRECATED_AUDIO_CACHE
|
||||
@ -1884,7 +1884,7 @@ void DirManager::WriteCacheToDisk()
|
||||
BlockFile *b = iter->second;
|
||||
if (b->GetNeedWriteCacheToDisk())
|
||||
numNeed++;
|
||||
iter++;
|
||||
++iter;
|
||||
}
|
||||
|
||||
if (numNeed == 0)
|
||||
@ -1903,7 +1903,7 @@ void DirManager::WriteCacheToDisk()
|
||||
b->WriteCacheToDisk();
|
||||
progress.Update(current, numNeed);
|
||||
}
|
||||
iter++;
|
||||
++iter;
|
||||
current++;
|
||||
}
|
||||
}
|
||||
|
@ -19,7 +19,7 @@
|
||||
|
||||
#include "FileIO.h"
|
||||
|
||||
FileIO::FileIO(const wxString name, FileIOMode mode)
|
||||
FileIO::FileIO(const wxString & name, FileIOMode mode)
|
||||
: mName(name),
|
||||
mMode(mode),
|
||||
mInputStream(NULL),
|
||||
|
@ -24,7 +24,7 @@ class FileIO
|
||||
} FileIOMode;
|
||||
|
||||
public:
|
||||
FileIO(const wxString name, FileIOMode mode);
|
||||
FileIO(const wxString & name, FileIOMode mode);
|
||||
~FileIO();
|
||||
|
||||
bool IsOpened();
|
||||
|
@ -3613,7 +3613,6 @@ void AudacityProject::OnSplitCut()
|
||||
Track *dest;
|
||||
|
||||
ClearClipboard();
|
||||
n = iter.First();
|
||||
while (n) {
|
||||
if (n->GetSelected()) {
|
||||
dest = NULL;
|
||||
|
@ -883,7 +883,7 @@ void MixerTrackCluster::OnButton_Solo(wxCommandEvent& WXUNUSED(event))
|
||||
|
||||
// class MusicalInstrument
|
||||
|
||||
MusicalInstrument::MusicalInstrument(wxBitmap* pBitmap, const wxString strXPMfilename)
|
||||
MusicalInstrument::MusicalInstrument(wxBitmap* pBitmap, const wxString & strXPMfilename)
|
||||
{
|
||||
mBitmap = pBitmap;
|
||||
|
||||
@ -1219,7 +1219,7 @@ void MixerBoard::RemoveTrackCluster(const WaveTrack* pTrack)
|
||||
|
||||
|
||||
#ifdef EXPERIMENTAL_MIDI_OUT
|
||||
wxBitmap* MixerBoard::GetMusicalInstrumentBitmap(wxString name)
|
||||
wxBitmap* MixerBoard::GetMusicalInstrumentBitmap(const wxString & name)
|
||||
#else
|
||||
wxBitmap* MixerBoard::GetMusicalInstrumentBitmap(const WaveTrack* pLeftTrack)
|
||||
#endif
|
||||
|
@ -154,7 +154,7 @@ WX_DEFINE_ARRAY(MixerTrackCluster*, MixerTrackClusterArray);
|
||||
class MusicalInstrument
|
||||
{
|
||||
public:
|
||||
MusicalInstrument(wxBitmap* pBitmap, const wxString strXPMfilename);
|
||||
MusicalInstrument(wxBitmap* pBitmap, const wxString & strXPMfilename);
|
||||
virtual ~MusicalInstrument();
|
||||
|
||||
wxBitmap* mBitmap;
|
||||
@ -213,7 +213,7 @@ public:
|
||||
void RemoveTrackCluster(const Track* pTrack);
|
||||
|
||||
|
||||
wxBitmap* GetMusicalInstrumentBitmap(const wxString name);
|
||||
wxBitmap* GetMusicalInstrumentBitmap(const wxString & name);
|
||||
#else
|
||||
void MoveTrackCluster(const WaveTrack* pTrack, bool bUp); // Up in TrackPanel is left in MixerBoard.
|
||||
void RemoveTrackCluster(const WaveTrack* pTrack);
|
||||
|
@ -555,7 +555,7 @@ void PluginRegistrationDialog::PopulateOrExchange(ShuttleGui &S)
|
||||
wxRect iconrect;
|
||||
|
||||
int i = 0;
|
||||
for (ProviderMap::iterator iter = mMap.begin(); iter != mMap.end(); iter++, i++)
|
||||
for (ProviderMap::iterator iter = mMap.begin(); iter != mMap.end(); ++iter, i++)
|
||||
{
|
||||
miState.Add( SHOW_CHECKED );
|
||||
|
||||
@ -1734,7 +1734,7 @@ void PluginManager::Save()
|
||||
void PluginManager::SaveGroup(PluginType type)
|
||||
{
|
||||
wxString group = GetPluginTypeString(type);
|
||||
for (PluginMap::iterator iter = mPlugins.begin(); iter != mPlugins.end(); iter++)
|
||||
for (PluginMap::iterator iter = mPlugins.begin(); iter != mPlugins.end(); ++iter)
|
||||
{
|
||||
PluginDescriptor & plug = iter->second;
|
||||
|
||||
@ -1861,13 +1861,13 @@ void PluginManager::CheckForUpdates()
|
||||
plug.SetValid(mm.IsPluginValid(plug.GetProviderID(), plugPath));
|
||||
}
|
||||
|
||||
iter++;
|
||||
++iter;
|
||||
}
|
||||
|
||||
// If we're only checking for new plugins, then remove all of the known ones
|
||||
if (doCheck && !doRescan)
|
||||
{
|
||||
for (PluginMap::iterator iter = mPlugins.begin(); iter != mPlugins.end(); iter++)
|
||||
for (PluginMap::iterator iter = mPlugins.begin(); iter != mPlugins.end(); ++iter)
|
||||
{
|
||||
PluginDescriptor & plug = iter->second;
|
||||
const wxString & plugPath = plug.GetPath();
|
||||
@ -1898,7 +1898,7 @@ int PluginManager::GetPluginCount(PluginType type)
|
||||
{
|
||||
int num = 0;
|
||||
|
||||
for (PluginMap::iterator iter = mPlugins.begin(); iter != mPlugins.end(); iter++)
|
||||
for (PluginMap::iterator iter = mPlugins.begin(); iter != mPlugins.end(); ++iter)
|
||||
{
|
||||
if (iter->second.GetPluginType() == type)
|
||||
{
|
||||
@ -1921,7 +1921,7 @@ const PluginDescriptor *PluginManager::GetPlugin(const PluginID & ID)
|
||||
|
||||
const PluginDescriptor *PluginManager::GetFirstPlugin(PluginType type)
|
||||
{
|
||||
for (mPluginsIter = mPlugins.begin(); mPluginsIter != mPlugins.end(); mPluginsIter++)
|
||||
for (mPluginsIter = mPlugins.begin(); mPluginsIter != mPlugins.end(); ++mPluginsIter)
|
||||
{
|
||||
PluginDescriptor & plug = mPluginsIter->second;
|
||||
bool familyEnabled = true;
|
||||
@ -1959,7 +1959,7 @@ const PluginDescriptor *PluginManager::GetNextPlugin(PluginType type)
|
||||
|
||||
const PluginDescriptor *PluginManager::GetFirstPluginForEffectType(EffectType type)
|
||||
{
|
||||
for (mPluginsIter = mPlugins.begin(); mPluginsIter != mPlugins.end(); mPluginsIter++)
|
||||
for (mPluginsIter = mPlugins.begin(); mPluginsIter != mPlugins.end(); ++mPluginsIter)
|
||||
{
|
||||
PluginDescriptor & plug = mPluginsIter->second;
|
||||
|
||||
|
@ -2344,7 +2344,7 @@ wxArrayString AudacityProject::ShowOpenDialog(wxString extraformat, wxString ext
|
||||
}
|
||||
|
||||
// static method, can be called outside of a project
|
||||
bool AudacityProject::IsAlreadyOpen(const wxString projPathName)
|
||||
bool AudacityProject::IsAlreadyOpen(const wxString & projPathName)
|
||||
{
|
||||
wxFileName newProjPathName(projPathName);
|
||||
size_t numProjects = gAudacityProjects.Count();
|
||||
@ -3436,7 +3436,7 @@ bool AudacityProject::Save(bool overwrite /* = true */ ,
|
||||
}
|
||||
|
||||
#ifdef USE_LIBVORBIS
|
||||
bool AudacityProject::SaveCompressedWaveTracks(const wxString strProjectPathName) // full path for aup except extension
|
||||
bool AudacityProject::SaveCompressedWaveTracks(const wxString & strProjectPathName) // full path for aup except extension
|
||||
{
|
||||
// Some of this is similar to code in ExportMultiple::ExportMultipleByTrack
|
||||
// but that code is really tied into the dialogs.
|
||||
@ -3661,7 +3661,7 @@ bool AudacityProject::Import(wxString fileName, WaveTrackArray* pTrackArray /*=
|
||||
return true;
|
||||
}
|
||||
|
||||
bool AudacityProject::SaveAs(const wxString newFileName, bool bWantSaveCompressed /*= false*/, bool addToHistory /*= true*/)
|
||||
bool AudacityProject::SaveAs(const wxString & newFileName, bool bWantSaveCompressed /*= false*/, bool addToHistory /*= true*/)
|
||||
{
|
||||
wxString oldFileName = mFileName;
|
||||
|
||||
|
@ -201,7 +201,7 @@ class AUDACITY_DLL_API AudacityProject: public wxFrame,
|
||||
*/
|
||||
static wxArrayString ShowOpenDialog(wxString extraformat = wxEmptyString,
|
||||
wxString extrafilter = wxEmptyString);
|
||||
static bool IsAlreadyOpen(const wxString projPathName);
|
||||
static bool IsAlreadyOpen(const wxString & projPathName);
|
||||
static void OpenFiles(AudacityProject *proj);
|
||||
void OpenFile(wxString fileName, bool addtohistory = true);
|
||||
bool WarnOfLegacyFile( );
|
||||
@ -215,9 +215,9 @@ class AUDACITY_DLL_API AudacityProject: public wxFrame,
|
||||
void UnlockAllBlocks();
|
||||
bool Save(bool overwrite = true, bool fromSaveAs = false, bool bWantSaveCompressed = false);
|
||||
bool SaveAs(bool bWantSaveCompressed = false);
|
||||
bool SaveAs(const wxString newFileName, bool bWantSaveCompressed = false, bool addToHistory = true);
|
||||
bool SaveAs(const wxString & newFileName, bool bWantSaveCompressed = false, bool addToHistory = true);
|
||||
#ifdef USE_LIBVORBIS
|
||||
bool SaveCompressedWaveTracks(const wxString strProjectPathName); // full path for aup except extension
|
||||
bool SaveCompressedWaveTracks(const wxString & strProjectPathName); // full path for aup except extension
|
||||
#endif
|
||||
void Clear();
|
||||
|
||||
|
@ -844,7 +844,7 @@ void ShuttleGuiBase::EndNotebook()
|
||||
}
|
||||
|
||||
|
||||
wxNotebookPage * ShuttleGuiBase::StartNotebookPage( const wxString Name )
|
||||
wxNotebookPage * ShuttleGuiBase::StartNotebookPage( const wxString & Name )
|
||||
{
|
||||
if( mShuttleMode != eIsCreating )
|
||||
return NULL;
|
||||
@ -867,7 +867,7 @@ wxNotebookPage * ShuttleGuiBase::StartNotebookPage( const wxString Name )
|
||||
return pPage;
|
||||
}
|
||||
|
||||
void ShuttleGuiBase::StartNotebookPage( const wxString Name, wxNotebookPage * pPage )
|
||||
void ShuttleGuiBase::StartNotebookPage( const wxString & Name, wxNotebookPage * pPage )
|
||||
{
|
||||
if( mShuttleMode != eIsCreating )
|
||||
return;
|
||||
|
@ -132,8 +132,8 @@ public:
|
||||
|
||||
wxNotebook * StartNotebook();
|
||||
void EndNotebook();
|
||||
wxNotebookPage * StartNotebookPage( const wxString Name );
|
||||
void StartNotebookPage( const wxString Name, wxNotebookPage * pPage );
|
||||
wxNotebookPage * StartNotebookPage( const wxString & Name );
|
||||
void StartNotebookPage( const wxString & Name, wxNotebookPage * pPage );
|
||||
void EndNotebookPage();
|
||||
wxPanel * StartInvisiblePanel();
|
||||
void EndInvisiblePanel();
|
||||
|
@ -409,7 +409,7 @@ bool Tags::GetFirst(wxString & name, wxString & value)
|
||||
|
||||
bool Tags::GetNext(wxString & name, wxString & value)
|
||||
{
|
||||
mIter++;
|
||||
++mIter;
|
||||
if (mIter == mMap.end()) {
|
||||
return false;
|
||||
}
|
||||
|
@ -3751,7 +3751,7 @@ void TrackPanel::ForwardEventToWaveTrackEnvelope(wxMouseEvent & event)
|
||||
// ie one of the Wave displays
|
||||
if (display <= 1) {
|
||||
bool dB = (display == 1);
|
||||
bool needUpdate = false;
|
||||
bool needUpdate;
|
||||
|
||||
// AS: Then forward our mouse event to the envelope.
|
||||
// It'll recalculate and then tell us whether or not to redraw.
|
||||
@ -7195,9 +7195,9 @@ void TrackPanel::DrawTracks(wxDC * dc)
|
||||
/// - Zooming Indicators.
|
||||
/// - Fills in space below the tracks.
|
||||
void TrackPanel::DrawEverythingElse(wxDC * dc,
|
||||
const wxRegion region,
|
||||
const wxRect WXUNUSED(panelRect),
|
||||
const wxRect clip)
|
||||
const wxRegion ®ion,
|
||||
const wxRect & WXUNUSED(panelRect),
|
||||
const wxRect & clip)
|
||||
{
|
||||
// We draw everything else
|
||||
|
||||
@ -7400,7 +7400,7 @@ void TrackPanel::DrawScrubSpeed(wxDC &dc)
|
||||
/// be zoomed into when the user clicks and drags with a
|
||||
/// zoom cursor. Handles both vertical and horizontal
|
||||
/// zooming.
|
||||
void TrackPanel::DrawZooming(wxDC * dc, const wxRect clip)
|
||||
void TrackPanel::DrawZooming(wxDC * dc, const wxRect & clip)
|
||||
{
|
||||
wxRect r;
|
||||
|
||||
@ -7427,8 +7427,8 @@ void TrackPanel::DrawZooming(wxDC * dc, const wxRect clip)
|
||||
}
|
||||
|
||||
|
||||
void TrackPanel::DrawOutside(Track * t, wxDC * dc, const wxRect rec,
|
||||
const wxRect trackRect)
|
||||
void TrackPanel::DrawOutside(Track * t, wxDC * dc, const wxRect & rec,
|
||||
const wxRect & trackRect)
|
||||
{
|
||||
wxRect r = rec;
|
||||
int labelw = GetLabelWidth();
|
||||
@ -7555,7 +7555,7 @@ void TrackPanel::DrawOutside(Track * t, wxDC * dc, const wxRect rec,
|
||||
#endif // USE_MIDI
|
||||
}
|
||||
|
||||
void TrackPanel::DrawOutsideOfTrack(Track * t, wxDC * dc, const wxRect r)
|
||||
void TrackPanel::DrawOutsideOfTrack(Track * t, wxDC * dc, const wxRect & r)
|
||||
{
|
||||
// Fill in area outside of the track
|
||||
AColor::TrackPanelBackground(dc, false);
|
||||
@ -7596,7 +7596,7 @@ void TrackPanel::DrawOutsideOfTrack(Track * t, wxDC * dc, const wxRect r)
|
||||
}
|
||||
|
||||
/// Draw a three-level highlight gradient around the focused track.
|
||||
void TrackPanel::HighlightFocusedTrack(wxDC * dc, const wxRect r)
|
||||
void TrackPanel::HighlightFocusedTrack(wxDC * dc, const wxRect & r)
|
||||
{
|
||||
wxRect rect = r;
|
||||
rect.x += kLeftInset;
|
||||
@ -8605,7 +8605,7 @@ void TrackPanel::EnsureVisible(Track * t)
|
||||
}
|
||||
|
||||
void TrackPanel::DrawBordersAroundTrack(Track * t, wxDC * dc,
|
||||
const wxRect r, const int vrul,
|
||||
const wxRect & r, const int vrul,
|
||||
const int labelw)
|
||||
{
|
||||
// Border around track and label area
|
||||
@ -8632,7 +8632,7 @@ void TrackPanel::DrawBordersAroundTrack(Track * t, wxDC * dc,
|
||||
#endif
|
||||
}
|
||||
|
||||
void TrackPanel::DrawShadow(Track * /* t */ , wxDC * dc, const wxRect r)
|
||||
void TrackPanel::DrawShadow(Track * /* t */ , wxDC * dc, const wxRect & r)
|
||||
{
|
||||
int right = r.x + r.width - 1;
|
||||
int bottom = r.y + r.height - 1;
|
||||
@ -9720,7 +9720,7 @@ int TrackInfo::GetTrackInfoWidth() const
|
||||
return kTrackInfoWidth;
|
||||
}
|
||||
|
||||
void TrackInfo::GetCloseBoxRect(const wxRect r, wxRect & dest) const
|
||||
void TrackInfo::GetCloseBoxRect(const wxRect & r, wxRect & dest) const
|
||||
{
|
||||
dest.x = r.x;
|
||||
dest.y = r.y;
|
||||
@ -9728,7 +9728,7 @@ void TrackInfo::GetCloseBoxRect(const wxRect r, wxRect & dest) const
|
||||
dest.height = kTrackInfoBtnSize;
|
||||
}
|
||||
|
||||
void TrackInfo::GetTitleBarRect(const wxRect r, wxRect & dest) const
|
||||
void TrackInfo::GetTitleBarRect(const wxRect & r, wxRect & dest) const
|
||||
{
|
||||
dest.x = r.x + kTrackInfoBtnSize; // to right of CloseBoxRect
|
||||
dest.y = r.y;
|
||||
@ -9736,7 +9736,7 @@ void TrackInfo::GetTitleBarRect(const wxRect r, wxRect & dest) const
|
||||
dest.height = kTrackInfoBtnSize;
|
||||
}
|
||||
|
||||
void TrackInfo::GetMuteSoloRect(const wxRect r, wxRect & dest, bool solo, bool bHasSoloButton) const
|
||||
void TrackInfo::GetMuteSoloRect(const wxRect & r, wxRect & dest, bool solo, bool bHasSoloButton) const
|
||||
{
|
||||
dest.x = r.x ;
|
||||
dest.y = r.y + 50;
|
||||
@ -9753,7 +9753,7 @@ void TrackInfo::GetMuteSoloRect(const wxRect r, wxRect & dest, bool solo, bool b
|
||||
}
|
||||
}
|
||||
|
||||
void TrackInfo::GetGainRect(const wxRect r, wxRect & dest) const
|
||||
void TrackInfo::GetGainRect(const wxRect & r, wxRect & dest) const
|
||||
{
|
||||
dest.x = r.x + 7;
|
||||
dest.y = r.y + 70;
|
||||
@ -9761,7 +9761,7 @@ void TrackInfo::GetGainRect(const wxRect r, wxRect & dest) const
|
||||
dest.height = 25;
|
||||
}
|
||||
|
||||
void TrackInfo::GetPanRect(const wxRect r, wxRect & dest) const
|
||||
void TrackInfo::GetPanRect(const wxRect & r, wxRect & dest) const
|
||||
{
|
||||
dest.x = r.x + 7;
|
||||
dest.y = r.y + 100;
|
||||
@ -9769,7 +9769,7 @@ void TrackInfo::GetPanRect(const wxRect r, wxRect & dest) const
|
||||
dest.height = 25;
|
||||
}
|
||||
|
||||
void TrackInfo::GetMinimizeRect(const wxRect r, wxRect &dest) const
|
||||
void TrackInfo::GetMinimizeRect(const wxRect & r, wxRect &dest) const
|
||||
{
|
||||
const int kBlankWidth = kTrackInfoBtnSize + 4;
|
||||
dest.x = r.x + kBlankWidth;
|
||||
@ -9779,7 +9779,7 @@ void TrackInfo::GetMinimizeRect(const wxRect r, wxRect &dest) const
|
||||
dest.height = kTrackInfoBtnSize;
|
||||
}
|
||||
|
||||
void TrackInfo::GetSyncLockIconRect(const wxRect r, wxRect &dest) const
|
||||
void TrackInfo::GetSyncLockIconRect(const wxRect & r, wxRect &dest) const
|
||||
{
|
||||
dest.x = r.x + kTrackInfoWidth - kTrackInfoBtnSize - 4; // to right of minimize button
|
||||
dest.y = r.y + r.height - 19;
|
||||
@ -9794,7 +9794,7 @@ void TrackInfo::SetTrackInfoFont(wxDC * dc)
|
||||
dc->SetFont(mFont);
|
||||
}
|
||||
|
||||
void TrackInfo::DrawBordersWithin(wxDC* dc, const wxRect r, bool bHasMuteSolo)
|
||||
void TrackInfo::DrawBordersWithin(wxDC* dc, const wxRect & r, bool bHasMuteSolo)
|
||||
{
|
||||
AColor::Dark(dc, false); // same color as border of toolbars (ToolBar::OnPaint())
|
||||
|
||||
@ -9820,7 +9820,7 @@ void TrackInfo::DrawBordersWithin(wxDC* dc, const wxRect r, bool bHasMuteSolo)
|
||||
minimizeRect.x + minimizeRect.width, minimizeRect.y - 1);
|
||||
}
|
||||
|
||||
void TrackInfo::DrawBackground(wxDC * dc, const wxRect r, bool bSelected,
|
||||
void TrackInfo::DrawBackground(wxDC * dc, const wxRect & r, bool bSelected,
|
||||
bool WXUNUSED(bHasMuteSolo), const int labelw, const int WXUNUSED(vrul))
|
||||
{
|
||||
// fill in label
|
||||
@ -9845,7 +9845,7 @@ void TrackInfo::DrawBackground(wxDC * dc, const wxRect r, bool bSelected,
|
||||
//}
|
||||
}
|
||||
|
||||
void TrackInfo::GetTrackControlsRect(const wxRect r, wxRect & dest) const
|
||||
void TrackInfo::GetTrackControlsRect(const wxRect & r, wxRect & dest) const
|
||||
{
|
||||
wxRect top;
|
||||
wxRect bot;
|
||||
@ -9860,7 +9860,7 @@ void TrackInfo::GetTrackControlsRect(const wxRect r, wxRect & dest) const
|
||||
}
|
||||
|
||||
|
||||
void TrackInfo::DrawCloseBox(wxDC * dc, const wxRect r, bool down)
|
||||
void TrackInfo::DrawCloseBox(wxDC * dc, const wxRect & r, bool down)
|
||||
{
|
||||
wxRect bev;
|
||||
GetCloseBoxRect(r, bev);
|
||||
@ -9889,7 +9889,7 @@ void TrackInfo::DrawCloseBox(wxDC * dc, const wxRect r, bool down)
|
||||
AColor::BevelTrackInfo(*dc, !down, bev);
|
||||
}
|
||||
|
||||
void TrackInfo::DrawTitleBar(wxDC * dc, const wxRect r, Track * t,
|
||||
void TrackInfo::DrawTitleBar(wxDC * dc, const wxRect & r, Track * t,
|
||||
bool down)
|
||||
{
|
||||
wxRect bev;
|
||||
@ -9935,7 +9935,7 @@ void TrackInfo::DrawTitleBar(wxDC * dc, const wxRect r, Track * t,
|
||||
}
|
||||
|
||||
/// Draw the Mute or the Solo button, depending on the value of solo.
|
||||
void TrackInfo::DrawMuteSolo(wxDC * dc, const wxRect r, Track * t,
|
||||
void TrackInfo::DrawMuteSolo(wxDC * dc, const wxRect & r, Track * t,
|
||||
bool down, bool solo, bool bHasSoloButton)
|
||||
{
|
||||
wxRect bev;
|
||||
@ -9988,7 +9988,7 @@ void TrackInfo::DrawMuteSolo(wxDC * dc, const wxRect r, Track * t,
|
||||
}
|
||||
|
||||
// Draw the minimize button *and* the sync-lock track icon, if necessary.
|
||||
void TrackInfo::DrawMinimize(wxDC * dc, const wxRect r, Track * t, bool down)
|
||||
void TrackInfo::DrawMinimize(wxDC * dc, const wxRect & r, Track * t, bool down)
|
||||
{
|
||||
wxRect bev;
|
||||
GetMinimizeRect(r, bev);
|
||||
|
@ -103,28 +103,28 @@ private:
|
||||
void EnsureSufficientSliders(int index);
|
||||
|
||||
void SetTrackInfoFont(wxDC *dc);
|
||||
void DrawBackground(wxDC * dc, const wxRect r, bool bSelected, bool bHasMuteSolo, const int labelw, const int vrul);
|
||||
void DrawBordersWithin(wxDC * dc, const wxRect r, bool bHasMuteSolo );
|
||||
void DrawCloseBox(wxDC * dc, const wxRect r, bool down);
|
||||
void DrawTitleBar(wxDC * dc, const wxRect r, Track * t, bool down);
|
||||
void DrawMuteSolo(wxDC * dc, const wxRect r, Track * t, bool down, bool solo, bool bHasSoloButton);
|
||||
void DrawVRuler(wxDC * dc, const wxRect r, Track * t);
|
||||
void DrawBackground(wxDC * dc, const wxRect & r, bool bSelected, bool bHasMuteSolo, const int labelw, const int vrul);
|
||||
void DrawBordersWithin(wxDC * dc, const wxRect & r, bool bHasMuteSolo );
|
||||
void DrawCloseBox(wxDC * dc, const wxRect & r, bool down);
|
||||
void DrawTitleBar(wxDC * dc, const wxRect & r, Track * t, bool down);
|
||||
void DrawMuteSolo(wxDC * dc, const wxRect & r, Track * t, bool down, bool solo, bool bHasSoloButton);
|
||||
void DrawVRuler(wxDC * dc, const wxRect & r, Track * t);
|
||||
#ifdef EXPERIMENTAL_MIDI_OUT
|
||||
void DrawVelocitySlider(wxDC * dc, NoteTrack *t, wxRect r);
|
||||
#endif
|
||||
void DrawSliders(wxDC * dc, WaveTrack *t, wxRect r);
|
||||
|
||||
// Draw the minimize button *and* the sync-lock track icon, if necessary.
|
||||
void DrawMinimize(wxDC * dc, const wxRect r, Track * t, bool down);
|
||||
void DrawMinimize(wxDC * dc, const wxRect & r, Track * t, bool down);
|
||||
|
||||
void GetTrackControlsRect(const wxRect r, wxRect &dest) const;
|
||||
void GetCloseBoxRect(const wxRect r, wxRect &dest) const;
|
||||
void GetTitleBarRect(const wxRect r, wxRect &dest) const;
|
||||
void GetMuteSoloRect(const wxRect r, wxRect &dest, bool solo, bool bHasSoloButton) const;
|
||||
void GetGainRect(const wxRect r, wxRect &dest) const;
|
||||
void GetPanRect(const wxRect r, wxRect &dest) const;
|
||||
void GetMinimizeRect(const wxRect r, wxRect &dest) const;
|
||||
void GetSyncLockIconRect(const wxRect r, wxRect &dest) const;
|
||||
void GetTrackControlsRect(const wxRect & r, wxRect &dest) const;
|
||||
void GetCloseBoxRect(const wxRect & r, wxRect &dest) const;
|
||||
void GetTitleBarRect(const wxRect & r, wxRect &dest) const;
|
||||
void GetMuteSoloRect(const wxRect & r, wxRect &dest, bool solo, bool bHasSoloButton) const;
|
||||
void GetGainRect(const wxRect & r, wxRect &dest) const;
|
||||
void GetPanRect(const wxRect & r, wxRect &dest) const;
|
||||
void GetMinimizeRect(const wxRect & r, wxRect &dest) const;
|
||||
void GetSyncLockIconRect(const wxRect & r, wxRect &dest) const;
|
||||
|
||||
// These arrays are always kept the same size.
|
||||
LWSliderArray mGains;
|
||||
@ -521,17 +521,17 @@ public:
|
||||
protected:
|
||||
virtual void DrawTracks(wxDC * dc);
|
||||
|
||||
virtual void DrawEverythingElse(wxDC *dc, const wxRegion region,
|
||||
const wxRect panelRect, const wxRect clip);
|
||||
virtual void DrawOutside(Track *t, wxDC *dc, const wxRect rec,
|
||||
const wxRect trackRect);
|
||||
virtual void DrawEverythingElse(wxDC *dc, const wxRegion & region,
|
||||
const wxRect & panelRect, const wxRect & clip);
|
||||
virtual void DrawOutside(Track *t, wxDC *dc, const wxRect & rec,
|
||||
const wxRect &trackRect);
|
||||
void DrawScrubSpeed(wxDC &dc);
|
||||
virtual void DrawZooming(wxDC* dc, const wxRect clip);
|
||||
virtual void DrawZooming(wxDC* dc, const wxRect & clip);
|
||||
|
||||
virtual void HighlightFocusedTrack (wxDC* dc, const wxRect r);
|
||||
virtual void DrawShadow (Track *t, wxDC* dc, const wxRect r);
|
||||
virtual void DrawBordersAroundTrack(Track *t, wxDC* dc, const wxRect r, const int labelw, const int vrul);
|
||||
virtual void DrawOutsideOfTrack (Track *t, wxDC* dc, const wxRect r);
|
||||
virtual void HighlightFocusedTrack (wxDC* dc, const wxRect &r);
|
||||
virtual void DrawShadow (Track *t, wxDC* dc, const wxRect & r);
|
||||
virtual void DrawBordersAroundTrack(Track *t, wxDC* dc, const wxRect & r, const int labelw, const int vrul);
|
||||
virtual void DrawOutsideOfTrack (Track *t, wxDC* dc, const wxRect & r);
|
||||
|
||||
virtual int IdOfRate( int rate );
|
||||
virtual int IdOfFormat( int format );
|
||||
|
@ -59,7 +59,7 @@ EffectManager::~EffectManager()
|
||||
while (iter != mHostEffects.end())
|
||||
{
|
||||
delete iter->second;
|
||||
iter++;
|
||||
++iter;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -160,7 +160,7 @@ wxArrayString VampEffectsModule::FindPlugins(PluginManagerInterface & WXUNUSED(p
|
||||
|
||||
int output = 0;
|
||||
|
||||
for (Plugin::OutputList::iterator j = outputs.begin(); j != outputs.end(); j++)
|
||||
for (Plugin::OutputList::iterator j = outputs.begin(); j != outputs.end(); ++j)
|
||||
{
|
||||
if (j->sampleType == Plugin::OutputDescriptor::FixedSampleRate ||
|
||||
j->sampleType == Plugin::OutputDescriptor::OneSamplePerStep ||
|
||||
@ -294,7 +294,7 @@ Plugin *VampEffectsModule::FindPlugin(const wxString & path,
|
||||
|
||||
hasParameters = !vp->getParameterDescriptors().empty();
|
||||
|
||||
for (Plugin::OutputList::iterator j = outputs.begin(); j != outputs.end(); j++)
|
||||
for (Plugin::OutputList::iterator j = outputs.begin(); j != outputs.end(); ++j)
|
||||
{
|
||||
if (j->sampleType == Plugin::OutputDescriptor::FixedSampleRate ||
|
||||
j->sampleType == Plugin::OutputDescriptor::OneSamplePerStep ||
|
||||
|
@ -405,7 +405,7 @@ bool Exporter::Process(AudacityProject *project, bool selectedOnly, double t0, d
|
||||
}
|
||||
|
||||
bool Exporter::Process(AudacityProject *project, int numChannels,
|
||||
const wxChar *type, const wxString filename,
|
||||
const wxChar *type, const wxString & filename,
|
||||
bool selectedOnly, double t0, double t1)
|
||||
{
|
||||
// Save parms
|
||||
|
@ -147,7 +147,7 @@ public:
|
||||
bool Process(AudacityProject *project, bool selectedOnly,
|
||||
double t0, double t1);
|
||||
bool Process(AudacityProject *project, int numChannels,
|
||||
const wxChar *type, const wxString filename,
|
||||
const wxChar *type, const wxString & filename,
|
||||
bool selectedOnly, double t0, double t1);
|
||||
|
||||
void DisplayOptions(int index);
|
||||
|
@ -327,7 +327,7 @@ public:
|
||||
|
||||
private:
|
||||
|
||||
char *AdjustString(wxString wxStr, int sf_format);
|
||||
char *AdjustString(const wxString & wxStr, int sf_format);
|
||||
bool AddStrings(AudacityProject *project, SNDFILE *sf, Tags *tags, int sf_format);
|
||||
void AddID3Chunk(wxString fName, Tags *tags, int sf_format);
|
||||
|
||||
@ -574,7 +574,7 @@ int ExportPCM::Export(AudacityProject *project,
|
||||
return updateResult;
|
||||
}
|
||||
|
||||
char *ExportPCM::AdjustString(const wxString wxStr, int sf_format)
|
||||
char *ExportPCM::AdjustString(const wxString & wxStr, int sf_format)
|
||||
{
|
||||
bool b_aiff = false;
|
||||
if ((sf_format & SF_FORMAT_TYPEMASK) == SF_FORMAT_AIFF)
|
||||
|
@ -310,7 +310,7 @@ void DeviceToolBar::UpdatePrefs()
|
||||
}
|
||||
}
|
||||
|
||||
long oldChannels = 1, newChannels;
|
||||
long oldChannels, newChannels;
|
||||
oldChannels = mInputChannels->GetSelection() + 1;
|
||||
gPrefs->Read(wxT("/AudioIO/RecordChannels"), &newChannels, 0);
|
||||
if (newChannels > 0 && oldChannels != newChannels)
|
||||
|
@ -867,7 +867,7 @@ void Ruler::TickCustom(int labelIdx, bool major, bool minor)
|
||||
}
|
||||
else {
|
||||
|
||||
strTop =-strH-mLead;
|
||||
//strTop =-strH-mLead;
|
||||
strTop = mTop- mLead+4;// More space was needed...
|
||||
mMaxHeight = max(mMaxHeight, strH + 6);
|
||||
}
|
||||
|
@ -38,7 +38,7 @@
|
||||
#include "../SampleFormat.h"
|
||||
#include "../Track.h"
|
||||
|
||||
bool XMLValueChecker::IsGoodString(const wxString str)
|
||||
bool XMLValueChecker::IsGoodString(const wxString & str)
|
||||
{
|
||||
size_t len = str.Length();
|
||||
int nullIndex = str.Find('\0', false);
|
||||
@ -50,7 +50,7 @@ bool XMLValueChecker::IsGoodString(const wxString str)
|
||||
}
|
||||
|
||||
// "Good" means the name is well-formed and names an existing file or folder.
|
||||
bool XMLValueChecker::IsGoodFileName(const wxString strFileName, const wxString strDirName /* = "" */)
|
||||
bool XMLValueChecker::IsGoodFileName(const wxString & strFileName, const wxString & strDirName /* = "" */)
|
||||
{
|
||||
// Test strFileName.
|
||||
if (!IsGoodFileString(strFileName) ||
|
||||
@ -74,7 +74,7 @@ bool XMLValueChecker::IsGoodFileString(wxString str)
|
||||
(str.Find(wxFileName::GetPathSeparator()) == -1)); // No path separator characters.
|
||||
}
|
||||
|
||||
bool XMLValueChecker::IsGoodSubdirName(const wxString strSubdirName, const wxString strDirName /* = "" */)
|
||||
bool XMLValueChecker::IsGoodSubdirName(const wxString & strSubdirName, const wxString & strDirName /* = "" */)
|
||||
{
|
||||
// Test strSubdirName.
|
||||
// Note this prevents path separators, and relative path to parents (strDirName),
|
||||
@ -90,7 +90,7 @@ bool XMLValueChecker::IsGoodSubdirName(const wxString strSubdirName, const wxStr
|
||||
return (fileName.IsOk() && fileName.DirExists());
|
||||
}
|
||||
|
||||
bool XMLValueChecker::IsGoodPathName(const wxString strPathName)
|
||||
bool XMLValueChecker::IsGoodPathName(const wxString & strPathName)
|
||||
{
|
||||
// Test the corresponding wxFileName.
|
||||
wxFileName fileName(strPathName);
|
||||
@ -105,7 +105,7 @@ bool XMLValueChecker::IsGoodPathString(wxString str)
|
||||
}
|
||||
|
||||
|
||||
bool XMLValueChecker::IsGoodInt(const wxString strInt)
|
||||
bool XMLValueChecker::IsGoodInt(const wxString & strInt)
|
||||
{
|
||||
if (!IsGoodString(strInt))
|
||||
return false;
|
||||
@ -146,7 +146,7 @@ bool XMLValueChecker::IsGoodInt(const wxString strInt)
|
||||
return true;
|
||||
}
|
||||
|
||||
bool XMLValueChecker::IsGoodInt64(const wxString strInt)
|
||||
bool XMLValueChecker::IsGoodInt64(const wxString & strInt)
|
||||
{
|
||||
if (!IsGoodString(strInt))
|
||||
return false;
|
||||
|
@ -29,12 +29,12 @@ public:
|
||||
// "Good" means well-formed and for the file-related functions, names an existing file or folder.
|
||||
// These are used in HandleXMLTag and BuildFomXML methods to check the input for
|
||||
// security vulnerabilites, per the NGS report for UmixIt.
|
||||
static bool IsGoodString(const wxString str);
|
||||
static bool IsGoodString(const wxString & str);
|
||||
|
||||
static bool IsGoodFileName(const wxString strFileName, const wxString strDirName = wxEmptyString);
|
||||
static bool IsGoodFileName(const wxString & strFileName, const wxString & strDirName = wxEmptyString);
|
||||
static bool IsGoodFileString(wxString str);
|
||||
static bool IsGoodSubdirName(const wxString strSubdirName, const wxString strDirName = wxEmptyString);
|
||||
static bool IsGoodPathName(const wxString strPathName);
|
||||
static bool IsGoodSubdirName(const wxString & strSubdirName, const wxString & strDirName = wxEmptyString);
|
||||
static bool IsGoodPathName(const wxString & strPathName);
|
||||
static bool IsGoodPathString(wxString str);
|
||||
|
||||
/** @brief Check that the supplied string can be converted to a long (32bit)
|
||||
@ -46,7 +46,7 @@ public:
|
||||
* @param strInt The string to test
|
||||
* @return true if the string is convertable, false if not
|
||||
*/
|
||||
static bool IsGoodInt(const wxString strInt);
|
||||
static bool IsGoodInt(const wxString & strInt);
|
||||
/** @brief Check that the supplied string can be converted to a 64bit
|
||||
* integer.
|
||||
*
|
||||
@ -56,7 +56,7 @@ public:
|
||||
* @param strInt The string to test
|
||||
* @return true if the string is convertable, false if not
|
||||
*/
|
||||
static bool IsGoodInt64(const wxString strInt);
|
||||
static bool IsGoodInt64(const wxString & strInt);
|
||||
|
||||
static bool IsValidChannel(const int nValue);
|
||||
#ifdef USE_MIDI
|
||||
|
Loading…
x
Reference in New Issue
Block a user