openshot-audio  0.1.2
juce_ComponentBuilder.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_COMPONENTBUILDER_H_INCLUDED
26 #define JUCE_COMPONENTBUILDER_H_INCLUDED
27 
28 
29 //==============================================================================
46 {
47 public:
53  explicit ComponentBuilder (const ValueTree& state);
54 
57 
60 
63 
64  //==============================================================================
80  Component* getManagedComponent();
81 
86  Component* createComponent();
87 
88  //==============================================================================
99  {
100  public:
101  //==============================================================================
105  explicit TypeHandler (const Identifier& valueTreeType);
106 
108  virtual ~TypeHandler();
109 
112 
114  ComponentBuilder* getBuilder() const noexcept;
115 
116  //==============================================================================
126  virtual Component* addNewComponentFromState (const ValueTree& state, Component* parent) = 0;
127 
138  virtual void updateComponentFromState (Component* component, const ValueTree& state) = 0;
139 
140  private:
141  //==============================================================================
142  friend class ComponentBuilder;
143  ComponentBuilder* builder;
144 
146  };
147 
148  //==============================================================================
152  void registerTypeHandler (TypeHandler* type);
153 
155  TypeHandler* getHandlerForState (const ValueTree& state) const;
156 
160  int getNumHandlers() const noexcept;
161 
165  TypeHandler* getHandler (int index) const noexcept;
166 
168  void registerStandardComponentTypes();
169 
170  //=============================================================================
184  {
185  public:
187  virtual ~ImageProvider() {}
188 
195  virtual Image getImageForIdentifier (const var& imageIdentifier) = 0;
196 
200  virtual var getIdentifierForImage (const Image& image) = 0;
201  };
202 
203  //==============================================================================
211  void setImageProvider (ImageProvider* newImageProvider) noexcept;
212 
214  ImageProvider* getImageProvider() const noexcept;
215 
216  //=============================================================================
220  void updateChildComponents (Component& parent, const ValueTree& children);
221 
225  static const Identifier idProperty;
226 
227 private:
228  //=============================================================================
230  ScopedPointer<Component> component;
231  ImageProvider* imageProvider;
232  #if JUCE_DEBUG
233  WeakReference<Component> componentRef;
234  #endif
235 
236  void valueTreePropertyChanged (ValueTree&, const Identifier&) override;
237  void valueTreeChildAdded (ValueTree&, ValueTree&) override;
238  void valueTreeChildRemoved (ValueTree&, ValueTree&, int) override;
239  void valueTreeChildOrderChanged (ValueTree&, int, int) override;
240  void valueTreeParentChanged (ValueTree&) override;
241 
243 };
244 
245 #endif // JUCE_COMPONENTBUILDER_H_INCLUDED
Definition: juce_Variant.h:46
#define noexcept
Definition: juce_CompilerSupport.h:141
ValueTree state
Definition: juce_ComponentBuilder.h:62
Definition: juce_ValueTree.h:368
Definition: juce_ComponentBuilder.h:98
#define JUCE_API
Definition: juce_StandardHeader.h:139
virtual ~ImageProvider()
Definition: juce_ComponentBuilder.h:187
const Identifier type
Definition: juce_ComponentBuilder.h:111
Definition: juce_Component.h:33
Definition: juce_ComponentBuilder.h:45
Definition: juce_OwnedArray.h:55
#define JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(className)
Definition: juce_PlatformDefs.h:198
Definition: juce_Image.h:54
static const Identifier idProperty
Definition: juce_ComponentBuilder.h:225
Definition: juce_ValueTree.h:64
Definition: juce_Identifier.h:43
ImageProvider()
Definition: juce_ComponentBuilder.h:186
Definition: juce_ComponentBuilder.h:183