Zrythm v2.0.0-DEV
a highly automated and intuitive digital audio workstation
Loading...
Searching...
No Matches
marker_track.h
1// SPDX-FileCopyrightText: © 2019-2020, 2024-2025 Alexandros Theodotou <alex@zrythm.org>
2// SPDX-License-Identifier: LicenseRef-ZrythmLicense
3
4#pragma once
5
6#include "structure/arrangement/arranger_object_owner.h"
7#include "structure/arrangement/marker.h"
8#include "structure/tracks/track.h"
9
10namespace zrythm::structure::tracks
11{
12class MarkerTrack
13 : public Track,
14 public arrangement::ArrangerObjectOwner<arrangement::Marker>
15{
16 Q_OBJECT
17 QML_ELEMENT
18 QML_UNCREATABLE ("")
19 DEFINE_ARRANGER_OBJECT_OWNER_QML_PROPERTIES (
20 MarkerTrack,
21 markers,
23
24public:
26
27 MarkerTrack (FinalTrackDependencies dependencies);
28
29 auto get_marker_at (size_t index) const
30 {
31 return get_children_view ()[index];
32 }
33
34 bool validate_marker_name (const utils::Utf8String &name)
35 {
36 /* valid if no other marker with the same name exists*/
37 return !std::ranges::contains (
38 get_children_view (), name,
39 [] (const auto &marker) { return marker->name ()->get_name (); });
40 }
41
45 Marker * get_start_marker () const;
46
50 Marker * get_end_marker () const;
51
52 friend void init_from (
53 MarkerTrack &obj,
54 const MarkerTrack &other,
55 utils::ObjectCloneType clone_type);
56
57 std::string get_field_name_for_serialization (const Marker *) const override
58 {
59 return "markers";
60 }
61
62private:
63 friend void to_json (nlohmann::json &j, const MarkerTrack &track)
64 {
65 to_json (j, static_cast<const Track &> (track));
66 to_json (j, static_cast<const ArrangerObjectOwner &> (track));
67 }
68 friend void from_json (const nlohmann::json &j, MarkerTrack &track)
69 {
70 from_json (j, static_cast<Track &> (track));
71 from_json (j, static_cast<ArrangerObjectOwner &> (track));
72 }
73};
74
75}
Marker for the MarkerTrack.
Definition marker.h:16
@ Marker
Marker Track's contain named markers at specific Position's in the song.
Definition track.h:115
Track(Type type, PortType in_signal_type, PortType out_signal_type, TrackFeatures enabled_features, BaseTrackDependencies dependencies)
Constructor to be used by subclasses.
Lightweight UTF-8 string wrapper with safe conversions.
Definition utf8_string.h:38