1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-10-13 14:13:32 +02:00

Track factory cleanup (#646)

* Don't need TrackFactory to make LabelTrack

* Don't need TrackFactory to make NoteTrack

* Don't need TrackFactory to make TimeTrack, or ZoomInfo in the factory

* Remove some forward declarations

* Rename TrackFactory as WaveTrackFactory, move it out of Track.cpp
This commit is contained in:
Paul Licameli
2020-08-22 19:44:49 -04:00
committed by GitHub
parent 0f98522b5c
commit 4ca3e7096f
42 changed files with 158 additions and 198 deletions

View File

@@ -455,7 +455,7 @@ std::unique_ptr<ExtImportItem> Importer::CreateDefaultImportItem()
// returns number of tracks imported
bool Importer::Import( AudacityProject &project,
const FilePath &fName,
TrackFactory *trackFactory,
WaveTrackFactory *trackFactory,
TrackHolders &tracks,
Tags *tags,
TranslatableString &errorMessage)

View File

@@ -25,7 +25,7 @@ class wxArrayString;
class wxListBox;
class AudacityProject;
class Tags;
class TrackFactory;
class WaveTrackFactory;
class Track;
class ImportPlugin;
class ImportFileHandle;
@@ -167,7 +167,7 @@ public:
// if false, the import failed and errorMessage will be set.
bool Import( AudacityProject &project,
const FilePath &fName,
TrackFactory *trackFactory,
WaveTrackFactory *trackFactory,
TrackHolders &tracks,
Tags *tags,
TranslatableString &errorMessage);

View File

@@ -91,7 +91,7 @@ public:
ByteCount GetFileUncompressedBytes() override;
ProgressResult Import(TrackFactory *trackFactory,
ProgressResult Import(WaveTrackFactory *trackFactory,
TrackHolders &outTracks,
Tags *tags) override;
@@ -267,7 +267,7 @@ auto AUPImportFileHandle::GetFileUncompressedBytes() -> ByteCount
return 0;
}
ProgressResult AUPImportFileHandle::Import(TrackFactory *WXUNUSED(trackFactory),
ProgressResult AUPImportFileHandle::Import(WaveTrackFactory *WXUNUSED(trackFactory),
TrackHolders &WXUNUSED(outTracks),
Tags *tags)
{
@@ -829,8 +829,7 @@ bool AUPImportFileHandle::HandleProject(XMLTagHandler *&handler)
bool AUPImportFileHandle::HandleLabelTrack(XMLTagHandler *&handler)
{
auto &trackFactory = TrackFactory::Get(mProject);
mTracks.push_back(trackFactory.NewLabelTrack());
mTracks.push_back(std::make_shared<LabelTrack>());
handler = mTracks.back().get();
@@ -840,8 +839,7 @@ bool AUPImportFileHandle::HandleLabelTrack(XMLTagHandler *&handler)
bool AUPImportFileHandle::HandleNoteTrack(XMLTagHandler *&handler)
{
#if defined(USE_MIDI)
auto &trackFactory = TrackFactory::Get(mProject);
mTracks.push_back(trackFactory.NewNoteTrack());
mTracks.push_back( std::make_shared<NoteTrack>());
handler = mTracks.back().get();
@@ -874,8 +872,8 @@ bool AUPImportFileHandle::HandleTimeTrack(XMLTagHandler *&handler)
return true;
}
auto &trackFactory = TrackFactory::Get(mProject);
mTracks.push_back(trackFactory.NewTimeTrack());
auto &viewInfo = ViewInfo::Get( mProject );
mTracks.push_back( std::make_shared<TimeTrack>(&viewInfo) );
handler = mTracks.back().get();
@@ -884,7 +882,7 @@ bool AUPImportFileHandle::HandleTimeTrack(XMLTagHandler *&handler)
bool AUPImportFileHandle::HandleWaveTrack(XMLTagHandler *&handler)
{
auto &trackFactory = TrackFactory::Get(mProject);
auto &trackFactory = WaveTrackFactory::Get(mProject);
mTracks.push_back(trackFactory.NewWaveTrack());
handler = mTracks.back().get();

View File

@@ -200,7 +200,7 @@ public:
///! Imports audio
///\return import status (see Import.cpp)
ProgressResult Import(TrackFactory *trackFactory, TrackHolders &outTracks,
ProgressResult Import(WaveTrackFactory *trackFactory, TrackHolders &outTracks,
Tags *tags) override;
///! Reads next audio frame
@@ -467,7 +467,7 @@ auto FFmpegImportFileHandle::GetFileUncompressedBytes() -> ByteCount
return 0;
}
ProgressResult FFmpegImportFileHandle::Import(TrackFactory *trackFactory,
ProgressResult FFmpegImportFileHandle::Import(WaveTrackFactory *trackFactory,
TrackHolders &outTracks,
Tags *tags)
{

View File

@@ -149,7 +149,7 @@ public:
TranslatableString GetFileDescription() override;
ByteCount GetFileUncompressedBytes() override;
ProgressResult Import(TrackFactory *trackFactory, TrackHolders &outTracks,
ProgressResult Import(WaveTrackFactory *trackFactory, TrackHolders &outTracks,
Tags *tags) override;
wxInt32 GetStreamCount() override { return 1; }
@@ -408,7 +408,7 @@ auto FLACImportFileHandle::GetFileUncompressedBytes() -> ByteCount
}
ProgressResult FLACImportFileHandle::Import(TrackFactory *trackFactory,
ProgressResult FLACImportFileHandle::Import(WaveTrackFactory *trackFactory,
TrackHolders &outTracks,
Tags *tags)
{

View File

@@ -128,7 +128,7 @@ public:
TranslatableString GetFileDescription() override;
ByteCount GetFileUncompressedBytes() override;
ProgressResult Import(TrackFactory *trackFactory, TrackHolders &outTracks,
ProgressResult Import(WaveTrackFactory *trackFactory, TrackHolders &outTracks,
Tags *tags) override;
wxInt32 GetStreamCount() override { return 1; }
@@ -225,7 +225,7 @@ auto LOFImportFileHandle::GetFileUncompressedBytes() -> ByteCount
}
ProgressResult LOFImportFileHandle::Import(
TrackFactory * WXUNUSED(trackFactory), TrackHolders &outTracks,
WaveTrackFactory * WXUNUSED(trackFactory), TrackHolders &outTracks,
Tags * WXUNUSED(tags))
{
// Unlike other ImportFileHandle subclasses, this one never gives any tracks

View File

@@ -36,7 +36,7 @@
bool DoImportMIDI( AudacityProject &project, const FilePath &fileName )
{
auto &tracks = TrackList::Get( project );
auto newTrack = TrackFactory::Get( project ).NewNoteTrack();
auto newTrack = std::make_shared<NoteTrack>();
if (::ImportMIDI(fileName, newTrack.get())) {

View File

@@ -110,7 +110,7 @@ public:
TranslatableString GetFileDescription() override;
ByteCount GetFileUncompressedBytes() override;
ProgressResult Import(TrackFactory *trackFactory, TrackHolders &outTracks, Tags *tags) override;
ProgressResult Import(WaveTrackFactory *trackFactory, TrackHolders &outTracks, Tags *tags) override;
wxInt32 GetStreamCount() override;
const TranslatableStrings &GetStreamInfo() override;
void SetStreamUsage(wxInt32 StreamID, bool Use) override;
@@ -157,7 +157,7 @@ private:
unsigned char mInputBuffer[INPUT_BUFFER_SIZE + MAD_BUFFER_GUARD];
int mInputBufferLen;
TrackFactory *mTrackFactory;
WaveTrackFactory *mTrackFactory;
NewChannelGroup mChannels;
unsigned mNumChannels;
@@ -252,7 +252,7 @@ void MP3ImportFileHandle::SetStreamUsage(wxInt32 WXUNUSED(StreamID), bool WXUNUS
{
}
ProgressResult MP3ImportFileHandle::Import(TrackFactory *trackFactory,
ProgressResult MP3ImportFileHandle::Import(WaveTrackFactory *trackFactory,
TrackHolders &outTracks,
Tags *tags)
{

View File

@@ -126,7 +126,7 @@ public:
TranslatableString GetFileDescription() override;
ByteCount GetFileUncompressedBytes() override;
ProgressResult Import(TrackFactory *trackFactory, TrackHolders &outTracks,
ProgressResult Import(WaveTrackFactory *trackFactory, TrackHolders &outTracks,
Tags *tags) override;
wxInt32 GetStreamCount() override
@@ -231,7 +231,7 @@ auto OggImportFileHandle::GetFileUncompressedBytes() -> ByteCount
}
ProgressResult OggImportFileHandle::Import(
TrackFactory *trackFactory, TrackHolders &outTracks,
WaveTrackFactory *trackFactory, TrackHolders &outTracks,
Tags *tags)
{
outTracks.clear();

View File

@@ -93,7 +93,7 @@ public:
TranslatableString GetFileDescription() override;
ByteCount GetFileUncompressedBytes() override;
ProgressResult Import(TrackFactory *trackFactory, TrackHolders &outTracks,
ProgressResult Import(WaveTrackFactory *trackFactory, TrackHolders &outTracks,
Tags *tags) override;
wxInt32 GetStreamCount() override { return 1; }
@@ -290,7 +290,7 @@ using id3_tag_holder = std::unique_ptr<id3_tag, id3_tag_deleter>;
using NewChannelGroup = std::vector< std::shared_ptr<WaveTrack> >;
ProgressResult PCMImportFileHandle::Import(TrackFactory *trackFactory,
ProgressResult PCMImportFileHandle::Import(WaveTrackFactory *trackFactory,
TrackHolders &outTracks,
Tags *tags)
{

View File

@@ -54,7 +54,7 @@ but little else.
class AudacityProject;
class ProgressDialog;
enum class ProgressResult : unsigned;
class TrackFactory;
class WaveTrackFactory;
class Track;
class Tags;
@@ -133,14 +133,14 @@ public:
virtual ByteCount GetFileUncompressedBytes() = 0;
// do the actual import, creating whatever tracks are necessary with
// the TrackFactory and calling the progress callback every iteration
// the WaveTrackFactory and calling the progress callback every iteration
// through the importing loop
// The given Tags structure may also be modified.
// In case of errors or exceptions, it is not necessary to leave outTracks
// or tags unmodified.
// If resulting outTracks is not empty,
// then each member of it must be a nonempty vector.
virtual ProgressResult Import(TrackFactory *trackFactory, TrackHolders &outTracks,
virtual ProgressResult Import(WaveTrackFactory *trackFactory, TrackHolders &outTracks,
Tags *tags) = 0;
// Return number of elements in stream list

View File

@@ -93,7 +93,7 @@ class ImportRawDialog final : public wxDialogWrapper {
// but may also throw FileException to make use of the application's
// user visible error reporting.
void ImportRaw(wxWindow *parent, const wxString &fileName,
TrackFactory *trackFactory, TrackHolders &outTracks)
WaveTrackFactory *trackFactory, TrackHolders &outTracks)
{
outTracks.clear();
int encoding = 0; // Guess Format

View File

@@ -13,7 +13,7 @@
#include "../MemoryX.h"
class TrackFactory;
class WaveTrackFactory;
class WaveTrack;
class wxString;
class wxWindow;
@@ -27,6 +27,6 @@ using TrackHolders = std::vector< NewChannelGroup >;
void ImportRaw(wxWindow *parent, const wxString &fileName,
TrackFactory *trackFactory, TrackHolders &outTracks);
WaveTrackFactory *trackFactory, TrackHolders &outTracks);
#endif