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:
@@ -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());
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
16
src/Track.h
16
src/Track.h
@@ -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:
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user