12 #ifndef ROOT7_REveScene
13 #define ROOT7_REveScene
23 namespace Experimental {
33 class REveScene :
public REveElement
35 friend class REveManager;
38 REveScene(
const REveScene &);
39 REveScene &operator=(
const REveScene &);
46 std::string fElementClass;
48 ElementId_t fElementId;
50 SceneCommand(
const std::string& name,
const std::string& icon,
51 const REveElement* element,
const std::string& action) :
54 fElementClass(element->IsA()->GetName()),
56 fElementId(element->GetElementId())
60 Bool_t fSmartRefresh{kTRUE};
61 Bool_t fHierarchical{kFALSE};
63 Bool_t fAcceptingChanges{kFALSE};
64 Bool_t fChanged{kFALSE};
67 List_t fChangedElements;
72 std::vector<ElementId_t> fRemovedElements;
74 std::vector<std::unique_ptr<REveClient>> fSubscribers;
76 List_t fElsWithBinaryData;
77 std::string fOutputJson;
78 std::vector<char> fOutputBinary;
79 Int_t fTotalBinarySize;
81 std::vector<SceneCommand> fCommands;
86 REveScene(
const std::string &n =
"REveScene",
const std::string &t =
"");
89 Bool_t SingleRnrState()
const override {
return kTRUE; }
91 void SetHierarchical(Bool_t h) { fHierarchical = h; }
92 Bool_t GetHierarchical()
const {
return fHierarchical; }
94 void Changed() { fChanged = kTRUE; }
95 Bool_t IsChanged()
const;
97 Bool_t IsAcceptingChanges()
const {
return fAcceptingChanges; }
98 void BeginAcceptingChanges();
99 void SceneElementChanged(REveElement *element);
100 void SceneElementRemoved(ElementId_t
id);
101 void EndAcceptingChanges();
102 void ProcessChanges();
104 void StreamElements();
105 void StreamJsonRecurse(REveElement *el, nlohmann::json &jobj);
114 void StreamRepresentationChanges();
115 void SendChangesToSubscribers();
117 Bool_t HasSubscribers()
const {
return !fSubscribers.empty(); }
118 void AddSubscriber(std::unique_ptr<REveClient> &&sub);
119 void RemoveSubscriber(
unsigned int);
121 void AddCommand(
const std::string &name,
const std::string &icon,
const REveElement *element,
const std::string &action)
122 { fCommands.emplace_back(name, icon, element, action); }
130 class REveSceneList :
public REveElement
133 REveSceneList(
const REveSceneList &);
134 REveSceneList &operator=(
const REveSceneList &);
138 REveSceneList(
const std::string& n =
"REveSceneList",
const std::string& t =
"");
139 virtual ~REveSceneList() {}
141 void DestroyScenes();
147 void AcceptChanges(
bool);
149 void ProcessSceneChanges();