openshot-audio  0.1.7
juce_MarkerList.h
Go to the documentation of this file.
1 /*
2  ==============================================================================
3 
4  This file is part of the JUCE library.
5  Copyright (c) 2015 - ROLI Ltd.
6 
7  Permission is granted to use this software under the terms of either:
8  a) the GPL v2 (or any later version)
9  b) the Affero GPL v3
10 
11  Details of these licenses can be found at: www.gnu.org/licenses
12 
13  JUCE is distributed in the hope that it will be useful, but WITHOUT ANY
14  WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
15  A PARTICULAR PURPOSE. See the GNU General Public License for more details.
16 
17  ------------------------------------------------------------------------------
18 
19  To release a closed-source product which uses JUCE, commercial licenses are
20  available: visit www.juce.com for more information.
21 
22  ==============================================================================
23 */
24 
25 #ifndef JUCE_MARKERLIST_H_INCLUDED
26 #define JUCE_MARKERLIST_H_INCLUDED
27 
28 
29 //==============================================================================
37 {
38 public:
39  //==============================================================================
41  MarkerList();
43  MarkerList (const MarkerList&);
45  MarkerList& operator= (const MarkerList&);
47  ~MarkerList();
48 
49  //==============================================================================
52  {
53  public:
55  Marker (const Marker&);
57  Marker (const String& name, const RelativeCoordinate& position);
58 
61 
74 
76  bool operator== (const Marker&) const noexcept;
78  bool operator!= (const Marker&) const noexcept;
79  };
80 
81  //==============================================================================
83  int getNumMarkers() const noexcept;
84 
86  const Marker* getMarker (int index) const noexcept;
87 
91  const Marker* getMarker (const String& name) const noexcept;
92 
97  double getMarkerPosition (const Marker& marker, Component* parentComponent) const;
98 
104  void setMarker (const String& name, const RelativeCoordinate& position);
105 
107  void removeMarker (int index);
108 
110  void removeMarker (const String& name);
111 
113  bool operator== (const MarkerList&) const noexcept;
115  bool operator!= (const MarkerList&) const noexcept;
116 
117  //==============================================================================
127  {
128  public:
130  virtual ~Listener() {}
131 
133  virtual void markersChanged (MarkerList* markerList) = 0;
134 
136  virtual void markerListBeingDeleted (MarkerList* markerList);
137  };
138 
140  void addListener (Listener* listener);
141 
143  void removeListener (Listener* listener);
144 
146  void markersHaveChanged();
147 
148  //==============================================================================
151  {
152  public:
153  ValueTreeWrapper (const ValueTree& state);
154 
155  ValueTree& getState() noexcept { return state; }
156  int getNumMarkers() const;
157  ValueTree getMarkerState (int index) const;
158  ValueTree getMarkerState (const String& name) const;
159  bool containsMarker (const ValueTree& state) const;
160  MarkerList::Marker getMarker (const ValueTree& state) const;
161  void setMarker (const MarkerList::Marker& marker, UndoManager* undoManager);
162  void removeMarker (const ValueTree& state, UndoManager* undoManager);
163 
164  void applyTo (MarkerList& markerList);
165  void readFrom (const MarkerList& markerList, UndoManager* undoManager);
166 
167  static const Identifier markerTag, nameProperty, posProperty;
168 
169  private:
170  ValueTree state;
171  };
172 
173 private:
174  //==============================================================================
175  OwnedArray<Marker> markers;
176  ListenerList<Listener> listeners;
177 
178  Marker* getMarkerByName (const String& name) const noexcept;
179 
181 };
182 
183 
184 #endif // JUCE_MARKERLIST_H_INCLUDED
Definition: juce_MarkerList.h:36
Definition: juce_RelativeCoordinate.h:70
#define noexcept
Definition: juce_CompilerSupport.h:141
Definition: juce_MarkerList.h:150
String name
Definition: juce_MarkerList.h:60
Definition: juce_MarkerList.h:126
Definition: juce_String.h:43
ValueTree & getState() noexcept
Definition: juce_MarkerList.h:155
Definition: juce_MarkerList.h:51
#define JUCE_API
Definition: juce_StandardHeader.h:139
virtual ~Listener()
Definition: juce_MarkerList.h:130
RelativeCoordinate position
Definition: juce_MarkerList.h:73
Definition: juce_ListenerList.h:69
Definition: juce_Component.h:33
bool operator==(const var &v1, const var &v2) noexcept
Definition: juce_Variant.cpp:565
Definition: juce_OwnedArray.h:55
static const Identifier posProperty
Definition: juce_MarkerList.h:167
Definition: juce_ValueTree.h:64
#define JUCE_LEAK_DETECTOR(OwnerClass)
Definition: juce_LeakedObjectDetector.h:141
Definition: juce_UndoManager.h:49
bool operator!=(const var &v1, const var &v2) noexcept
Definition: juce_Variant.cpp:566
Definition: juce_Identifier.h:43