Audacity  3.0.0
TrackFactory.h
Go to the documentation of this file.
1 /**********************************************************************
2 
3 Audacity: A Digital Audio Editor
4 
5 TrackFactory.h
6 
7 Paul Licameli -- split from Track.h
8 
9 **********************************************************************/
10 
11 #ifndef __AUDACITY_TRACK_FACTORY__
12 #define __AUDACITY_TRACK_FACTORY__
13 
14 #include "ClientData.h" // to inherit
15 
16 class AudacityProject;
17 
18 class AUDACITY_DLL_API TrackFactory final
19  : public ClientData::Base
20 {
21  public:
22  static TrackFactory &Get( AudacityProject &project );
23  static const TrackFactory &Get( const AudacityProject &project );
24  static TrackFactory &Reset( AudacityProject &project );
25  static void Destroy( AudacityProject &project );
26 
28  AudacityProject &project, const ZoomInfo *zoomInfo)
29  : mSettings{ settings }
30  , mProject(project)
31  , mZoomInfo(zoomInfo)
32  {
33  }
36 
37  private:
40  const ZoomInfo *const mZoomInfo;
41  friend class AudacityProject;
42  public:
43  // These methods are defined in WaveTrack.cpp, NoteTrack.cpp,
44  // LabelTrack.cpp, and TimeTrack.cpp respectively
45  std::shared_ptr<WaveTrack> DuplicateWaveTrack(const WaveTrack &orig);
46  std::shared_ptr<WaveTrack> NewWaveTrack(sampleFormat format = (sampleFormat)0,
47  double rate = 0);
48  std::shared_ptr<LabelTrack> NewLabelTrack();
49  std::shared_ptr<TimeTrack> NewTimeTrack();
50 #if defined(USE_MIDI)
51  std::shared_ptr<NoteTrack> NewNoteTrack();
52 #endif
53 };
54 
55 #endif
56 
WaveTrack
A Track that contains audio waveform data.
Definition: WaveTrack.h:68
TrackFactory::mSettings
const ProjectSettings & mSettings
Definition: TrackFactory.h:38
ZoomInfo
Definition: ZoomInfo.h:47
ClientData::Base
A convenient default parameter for class template Site.
Definition: ClientData.h:28
ClientData.h
Utility ClientData::Site to register hooks into a host class that attach client data.
sampleFormat
sampleFormat
Definition: Types.h:725
format
int format
Definition: ExportPCM.cpp:54
TrackFactory::TrackFactory
TrackFactory(const TrackFactory &) PROHIBITED
TrackFactory
Definition: TrackFactory.h:20
TrackFactory::operator=
TrackFactory & operator=(const TrackFactory &) PROHIBITED
AudacityProject
The top-level handle to an Audacity project. It serves as a source of events that other objects can b...
Definition: Project.h:112
TrackFactory::TrackFactory
TrackFactory(const ProjectSettings &settings, AudacityProject &project, const ZoomInfo *zoomInfo)
Definition: TrackFactory.h:27
PROHIBITED
#define PROHIBITED
Definition: Audacity.h:201
TrackFactory::mProject
AudacityProject & mProject
Definition: TrackFactory.h:39
settings
static Settings & settings()
Definition: TrackInfo.cpp:87
TrackFactory::mZoomInfo
const ZoomInfo *const mZoomInfo
Definition: TrackFactory.h:40
ProjectSettings
Holds various per-project settings values, including the sample rate, and sends events to the project...
Definition: ProjectSettings.h:53