tracktion-engine 3.0-10-g034fdde4aa5
Tracktion Engine — High level data model for audio applications

« « « Anklang Documentation
Loading...
Searching...
No Matches
tracktion_MarkerClip.cpp
Go to the documentation of this file.
1 /*
2 ,--. ,--. ,--. ,--.
3 ,-' '-.,--.--.,--,--.,---.| |,-.,-' '-.`--' ,---. ,--,--, Copyright 2024
4 '-. .-'| .--' ,-. | .--'| /'-. .-',--.| .-. || \ Tracktion Software
5 | | | | \ '-' \ `--.| \ \ | | | |' '-' '| || | Corporation
6 `---' `--' `--`--'`---'`--'`--' `---' `--' `---' `--''--' www.tracktion.com
7
8 Tracktion Engine uses a GPL/commercial licence - see LICENCE.md for details.
9*/
10
11namespace tracktion { inline namespace engine
12{
13
14MarkerClip::MarkerClip (const juce::ValueTree& v, EditItemID id, ClipOwner& targetParent)
15 : Clip (v, targetParent, id, Type::marker)
16{
17}
18
19MarkerClip::~MarkerClip()
20{
21 notifyListenersOfDeletion();
22}
23
24void MarkerClip::initialise()
25{
26 Clip::initialise();
27
28 markerID.referTo (state, IDs::markerID, &edit.getUndoManager());
29
30 if (! state.hasProperty (IDs::markerID))
31 markerID = edit.getMarkerManager().getNextUniqueID();
32
33 if (clipName == TRANS("New Marker"))
34 clipName = TRANS("Marker") + " " + juce::String (markerID);
35
36 speedRatio = 1.0; // not used
37}
38
39juce::String MarkerClip::getSelectableDescription()
40{
41 return TRANS("Marker Clip") + " - \"" + getName() + "\"";
42}
43
44juce::Colour MarkerClip::getDefaultColour() const
45{
46 return juce::Colours::red.withHue (1.0f / 9.0f);
47}
48
49void MarkerClip::setMarkerID (int newID)
50{
51 if (getName() == (TRANS("Marker") + " " + juce::String (markerID)))
52 setName (TRANS("Marker") + " " + juce::String (newID));
53
54 markerID = newID;
55}
56
57//==============================================================================
58bool MarkerClip::canBeAddedTo (ClipOwner& co)
59{
60 return isMarkerTrack (co);
61}
62
63void MarkerClip::valueTreePropertyChanged (juce::ValueTree& v, const juce::Identifier& i)
64{
65 if (v == state)
66 {
67 if (i == IDs::markerID)
68 {
69 markerID.forceUpdateOfCachedValue();
70 changed();
71 }
72 else if (i == IDs::sync)
73 {
74 SelectionManager::refreshAllPropertyPanels();
75 changed();
76 }
77 }
78
79 Clip::valueTreePropertyChanged (v, i);
80}
81
82juce::Colour MarkerClip::getColour() const
83{
84 if (Clip::getColour() == getDefaultColour())
85 {
86 if (isSyncAbsolute()) return juce::Colours::red.withHue (0.0f);
87 if (isSyncBarsBeats()) return juce::Colours::red.withHue (1.0f / 9.0f);
88 }
89
90 return Clip::getColour();
91}
92
93}} // namespace tracktion { inline namespace engine
Colour withHue(float newHue) const noexcept
Base class for items that can contain clips.
#define TRANS(stringLiteral)
juce::String getName(LaunchQType t)
Retuns the name of a LaunchQType for display purposes.
bool isMarkerTrack(const Track &t)
Returns true if this is a MarkerTrack.