Logo ROOT  
Reference Guide
REveScene.hxx
Go to the documentation of this file.
1// @(#)root/eve7:$Id$
2// Authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 2007
3
4/*************************************************************************
5 * Copyright (C) 1995-2019, Rene Brun and Fons Rademakers. *
6 * All rights reserved. *
7 * *
8 * For the licensing terms see $ROOTSYS/LICENSE. *
9 * For the list of contributors see $ROOTSYS/README/CREDITS. *
10 *************************************************************************/
11
12#ifndef ROOT7_REveScene
13#define ROOT7_REveScene
14
15#include <ROOT/REveElement.hxx>
16
17#include "TClass.h"
18
19#include <vector>
20#include <memory>
21
22namespace ROOT {
23namespace Experimental {
24
25class REveClient;
26class REveManager;
27
28/******************************************************************************/
29// REveScene
30// REve representation of TGLScene.
31/******************************************************************************/
32
33class REveScene : public REveElement
34{
35 friend class REveManager;
36
37private:
38 REveScene(const REveScene &) = delete;
39 REveScene &operator=(const REveScene &) = delete;
40
41protected:
43 {
44 std::string fName;
45 std::string fIcon;
46 std::string fElementClass;
47 std::string fAction;
49
50 SceneCommand(const std::string& name, const std::string& icon,
51 const REveElement* element, const std::string& action) :
52 fName(name),
53 fIcon(icon),
54 fElementClass(element->IsA()->GetName()),
55 fAction(action),
56 fElementId(element->GetElementId())
57 {}
58 };
59
62
65 // Changed or/and added.
66 // XXXX can change to vector (element checks if already registered now).
68 // For the following two have to re-think how the hierarchy will be handled.
69 // If I remove a parent, i have to remove all the children.
70 // So this has to be done right on both sides (on eve element and here).
71 // I might need a set, so i can easily check if parent is in the removed / added list already.
72 std::vector<ElementId_t> fRemovedElements; ///<!
73
74 std::vector<std::unique_ptr<REveClient>> fSubscribers; ///<!
75
77 std::string fOutputJson; ///<!
78 std::vector<char> fOutputBinary; ///<!
80
81 std::vector<SceneCommand> fCommands; ///<!
82
83 // void RetransHierarchicallyRecurse(REveElement* el, const REveTrans& tp);
84
85public:
86 REveScene(const std::string &n = "REveScene", const std::string &t = "");
87 virtual ~REveScene();
88
89 Bool_t SingleRnrState() const override { return kTRUE; }
90
93
94 void Changed() { fChanged = kTRUE; } // AMT ??? depricated
95 Bool_t IsChanged() const;
96
99 void SceneElementChanged(REveElement *element);
101 void EndAcceptingChanges();
102 void ProcessChanges();
103
104 void StreamElements();
106
107 // void Repaint(Bool_t dropLogicals=kFALSE);
108 // void RetransHierarchically();
109
110 // virtual void Paint(Option_t* option = "");
111
112 // void DestroyElementRenderers(REveElement* element);
113 // void DestroyElementRenderers(TObject* rnrObj);
116
117 Bool_t HasSubscribers() const { return !fSubscribers.empty(); }
118 void AddSubscriber(std::unique_ptr<REveClient> &&sub);
119 void RemoveSubscriber(unsigned int);
120
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); }
123};
124
125/******************************************************************************/
126// REveSceneList
127// List of Scenes providing common operations on REveScene collections.
128/******************************************************************************/
129
131{
132private:
133 REveSceneList(const REveSceneList &) = delete;
135
136protected:
137public:
138 REveSceneList(const std::string &n = "REveSceneList", const std::string &t = "");
139 virtual ~REveSceneList() {}
140
141 void DestroyScenes();
142
143 // void RepaintChangedScenes(Bool_t dropLogicals);
144 // void RepaintAllScenes(Bool_t dropLogicals);
145
146 // void DestroyElementRenderers(REveElement* element);
147 void AcceptChanges(bool);
148
149 void ProcessSceneChanges();
150};
151
152} // namespace Experimental
153} // namespace ROOT
154
155#endif
#define h(i)
Definition: RSha256.hxx:106
const Bool_t kFALSE
Definition: RtypesCore.h:90
bool Bool_t
Definition: RtypesCore.h:61
const Bool_t kTRUE
Definition: RtypesCore.h:89
char name[80]
Definition: TGX11.cxx:109
const std::string & GetName() const
TClass * IsA() const
Return class for this element.
ElementId_t GetElementId() const
std::list< REveElement * > List_t
REveSceneList(const REveSceneList &)=delete
REveSceneList & operator=(const REveSceneList &)=delete
void DestroyScenes()
Destroy all scenes and their contents.
Definition: REveScene.cxx:471
void AcceptChanges(bool)
Set accept changes flag on all scenes.
Definition: REveScene.cxx:485
std::vector< std::unique_ptr< REveClient > > fSubscribers
!
Definition: REveScene.hxx:74
REveScene(const REveScene &)=delete
void SetHierarchical(Bool_t h)
Definition: REveScene.hxx:91
void AddSubscriber(std::unique_ptr< REveClient > &&sub)
Definition: REveScene.cxx:61
virtual ~REveScene()
Destructor.
Definition: REveScene.cxx:51
std::vector< char > fOutputBinary
!
Definition: REveScene.hxx:78
Bool_t IsAcceptingChanges() const
Definition: REveScene.hxx:97
void SceneElementRemoved(ElementId_t id)
Definition: REveScene.cxx:97
void StreamRepresentationChanges()
Prepare data for sending element changes.
Definition: REveScene.cxx:218
void AddCommand(const std::string &name, const std::string &icon, const REveElement *element, const std::string &action)
Definition: REveScene.hxx:121
void StreamJsonRecurse(REveElement *el, nlohmann::json &jobj)
Definition: REveScene.cxx:168
std::vector< SceneCommand > fCommands
!
Definition: REveScene.hxx:81
Bool_t GetHierarchical() const
Definition: REveScene.hxx:92
REveScene & operator=(const REveScene &)=delete
std::vector< ElementId_t > fRemovedElements
!
Definition: REveScene.hxx:72
void SceneElementChanged(REveElement *element)
Definition: REveScene.cxx:90
Bool_t SingleRnrState() const override
Definition: REveScene.hxx:89
void RemoveSubscriber(unsigned int)
Definition: REveScene.cxx:72
const Int_t n
Definition: legend1.C:16
unsigned int ElementId_t
Definition: REveTypes.hxx:25
tbb::task_arena is an alias of tbb::interface7::task_arena, which doesn't allow to forward declare tb...
Definition: StringConv.hxx:21
basic_json<> json
default JSON class
Definition: REveElement.hxx:88
SceneCommand(const std::string &name, const std::string &icon, const REveElement *element, const std::string &action)
Definition: REveScene.hxx:50