Vuo  2.3.2
VuoSubcompositionMessageRouter.hh
Go to the documentation of this file.
1 
10 #pragma once
11 
13 class VuoEditorWindow;
14 class VuoRendererNode;
15 #include "shared_mutex.hh"
16 
21 {
22 public:
25 
26  void addComposition(VuoEditorWindow *window);
27  void removeComposition(VuoEditorWindow *window);
28  void linkSubcompositionToNodeInSupercomposition(VuoEditorComposition *subcompositionInstance, VuoEditorComposition *supercomposition, VuoRendererNode *nodeInSupercomposition);
30  void unlinkNodeInSupercompositionFromSubcomposition(VuoEditorComposition *supercomposition, const string &nodeIdentifier);
31  void relinkNodeInSupercompositionToSubcomposition(VuoEditorComposition *supercomposition, const string &nodeIdentifier);
33 
40  void applyToLinkedCompositionWithIdentifier(VuoEditorComposition *currComposition, string compositionIdentifier, CompositionCallback doForComposition);
42  void applyToAllOtherTopLevelCompositions(VuoEditorComposition *currComposition, CompositionCallback doForComposition);
45 
46 private:
47  class CompositionInfo
48  {
49  public:
50  CompositionInfo(void);
51  CompositionInfo(VuoEditorWindow *window);
52  void reset(void);
53 
54  VuoEditorWindow *window;
55  VuoEditorComposition *topLevelComposition;
56  VuoEditorComposition *supercomposition;
57  string nodeIdentifierInSupercomposition;
58  string compositionIdentifier;
59  };
60 
61  map<VuoEditorComposition *, CompositionInfo> compositionInfos;
62  ting::shared_mutex compositionInfosMutex;
63 
64  map<VuoEditorComposition *, CompositionInfo> unlinkedCompositionInfos;
65 };