1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-11-28 08:10:11 +01:00

Define AudioTrack and PlayableTrack as common bases for Wave and Note

This commit is contained in:
Paul Licameli
2017-01-08 03:36:12 -05:00
parent 80984c9f1d
commit c391a8f884
5 changed files with 34 additions and 8 deletions

View File

@@ -103,8 +103,8 @@ NoteTrack::Holder TrackFactory::NewNoteTrack()
return std::make_unique<NoteTrack>(mDirManager);
}
NoteTrack::NoteTrack(const std::shared_ptr<DirManager> &projDirManager):
Track(projDirManager)
NoteTrack::NoteTrack(const std::shared_ptr<DirManager> &projDirManager)
: NoteTrackBase(projDirManager)
{
SetDefaultName(_("Note Track"));
SetName(GetDefaultName());

View File

@@ -50,7 +50,17 @@ class wxRect;
class DirManager;
class Alg_seq; // from "allegro.h"
class AUDACITY_DLL_API NoteTrack final : public Track {
using NoteTrackBase =
#ifdef EXPERIMENTAL_MIDI_OUT
PlayableTrack
#else
AudioTrack
#endif
;
class AUDACITY_DLL_API NoteTrack final
: public NoteTrackBase
{
public:
friend class TrackArtist;

View File

@@ -251,6 +251,22 @@ class AUDACITY_DLL_API Track /* not final */ : public XMLTagHandler
bool IsSyncLockSelected() const;
};
class AudioTrack /* not final */ : public Track
{
public:
AudioTrack(const std::shared_ptr<DirManager> &projDirManager)
: Track{ projDirManager } {}
AudioTrack(const Track &orig) : Track{ orig } {}
};
class PlayableTrack /* not final */ : public AudioTrack
{
public:
PlayableTrack(const std::shared_ptr<DirManager> &projDirManager)
: AudioTrack{ projDirManager } {}
PlayableTrack(const Track &orig) : AudioTrack{ orig } {}
};
class AUDACITY_DLL_API TrackListIterator /* not final */
{
public:

View File

@@ -79,7 +79,7 @@ WaveTrack::Holder TrackFactory::NewWaveTrack(sampleFormat format, double rate)
}
WaveTrack::WaveTrack(const std::shared_ptr<DirManager> &projDirManager, sampleFormat format, double rate) :
Track(projDirManager)
PlayableTrack(projDirManager)
{
if (format == (sampleFormat)0)
{
@@ -116,7 +116,7 @@ WaveTrack::WaveTrack(const std::shared_ptr<DirManager> &projDirManager, sampleFo
}
WaveTrack::WaveTrack(const WaveTrack &orig):
Track(orig)
PlayableTrack(orig)
, mpSpectrumSettings(orig.mpSpectrumSettings
? std::make_unique<SpectrogramSettings>(*orig.mpSpectrumSettings)
: nullptr
@@ -141,7 +141,7 @@ WaveTrack::WaveTrack(const WaveTrack &orig):
// Copy the track metadata but not the contents.
void WaveTrack::Init(const WaveTrack &orig)
{
Track::Init(orig);
PlayableTrack::Init(orig);
mFormat = orig.mFormat;
mRate = orig.mRate;
mGain = orig.mGain;
@@ -171,7 +171,7 @@ void WaveTrack::Merge(const Track &orig)
SetWaveformSettings
(wt.mpWaveformSettings ? std::make_unique<WaveformSettings>(*wt.mpWaveformSettings) : nullptr);
}
Track::Merge(orig);
PlayableTrack::Merge(orig);
}
WaveTrack::~WaveTrack()

View File

@@ -69,7 +69,7 @@ class Regions : public std::vector < Region > {};
class Envelope;
class AUDACITY_DLL_API WaveTrack final : public Track {
class AUDACITY_DLL_API WaveTrack final : public PlayableTrack {
private: