19 TrackFactory (DependenciesProvider dependencies_provider)
20 : dependencies_provider_ (std::move (dependencies_provider))
24 template <
typename TrackT>
class Builder
26 friend class TrackFactory;
30 : track_deps_ (std::move (track_deps))
35 std::unique_ptr<TrackT> build_for_deserialization ()
const
37 return std::make_unique<TrackT> (track_deps_);
43 track_deps_.track_registry_.create_object<TrackT> (track_deps_);
44 auto * track = obj_ref.template get_object_as<TrackT> ();
45 track->set_default_name ();
53 template <
typename TrackT>
auto get_builder ()
const
59 template <FinalTrackSub
class TrackT>
60 TrackUuidReference create_empty_track ()
const
62 auto obj_ref = get_builder<TrackT> ().build ();
66 TrackUuidReference create_empty_track (
Track::Type type)
const
71 return create_empty_track<AudioTrack> ();
73 return create_empty_track<MidiTrack> ();
75 return create_empty_track<MidiGroupTrack> ();
77 return create_empty_track<FolderTrack> ();
79 return create_empty_track<InstrumentTrack> ();
81 return create_empty_track<MasterTrack> ();
83 return create_empty_track<ChordTrack> ();
85 return create_empty_track<MarkerTrack> ();
87 return create_empty_track<ModulatorTrack> ();
89 return create_empty_track<AudioBusTrack> ();
91 return create_empty_track<MidiBusTrack> ();
93 return create_empty_track<AudioGroupTrack> ();
96 throw std::invalid_argument (
"invalid track type");
99 template <
typename TrackT>
100 auto clone_new_object_identity (
const TrackT &other)
const
102 auto track_dependencies = dependencies_provider_ ();
103 return track_dependencies.plugin_registry_.clone_object (
104 other, track_dependencies.plugin_registry_);
107 template <
typename TrackT>
108 auto clone_object_snapshot (
const TrackT &other, QObject &owner)
const
110 auto track_dependencies = dependencies_provider_ ();
113 new_obj = other.clone_qobject (
115 track_dependencies.plugin_registry_);
120 DependenciesProvider dependencies_provider_;