18 : track_deps_ (std::move (track_deps))
22 template <
typename TrackT>
class Builder
24 friend class TrackFactory;
28 : track_deps_ (std::move (track_deps))
33 std::unique_ptr<TrackT> build_for_deserialization ()
const
35 return std::make_unique<TrackT> (track_deps_);
41 track_deps_.track_registry_.create_object<TrackT> (track_deps_);
42 auto * track = obj_ref.template get_object_as<TrackT> ();
43 track->setName (format_qstr (QObject::tr (
"{} Track"), track->type ()));
51 template <
typename TrackT>
auto get_builder ()
const
57 template <FinalTrackSub
class TrackT>
58 TrackUuidReference create_empty_track ()
const
60 auto obj_ref = get_builder<TrackT> ().build ();
64 TrackUuidReference create_empty_track (
Track::Type type)
const
69 return create_empty_track<AudioTrack> ();
71 return create_empty_track<MidiTrack> ();
73 return create_empty_track<MidiGroupTrack> ();
75 return create_empty_track<FolderTrack> ();
77 return create_empty_track<InstrumentTrack> ();
79 return create_empty_track<MasterTrack> ();
81 return create_empty_track<ChordTrack> ();
83 return create_empty_track<MarkerTrack> ();
85 return create_empty_track<ModulatorTrack> ();
87 return create_empty_track<AudioBusTrack> ();
89 return create_empty_track<MidiBusTrack> ();
91 return create_empty_track<AudioGroupTrack> ();
94 throw std::invalid_argument (
"invalid track type");
97 template <
typename TrackT>
98 auto clone_new_object_identity (
const TrackT &other)
const
100 return track_deps_.plugin_registry_.clone_object (
101 other, track_deps_.plugin_registry_);
104 template <
typename TrackT>
105 auto clone_object_snapshot (
const TrackT &other, QObject &owner)
const
109 new_obj = other.clone_qobject (
115 FinalTrackDependencies track_deps_;