Logo ROOT   master
Reference Guide
REveElement.hxx
Go to the documentation of this file.
1 // @(#)root/eve7:$Id$
2 // Authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 2007, 2018
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_REveElement_hxx
13 #define ROOT7_REveElement_hxx
14 
15 #include <ROOT/REveTypes.hxx>
16 #include <ROOT/REveVector.hxx>
18 
19 #include <memory>
20 
21 class TGeoMatrix;
22 
23 /// use temporary solution for forwarding of nlohmann::json
24 /// after version of 3.1.0 it is included in official releases
25 /// see https://github.com/nlohmann/json/issues/314
26 
27 #ifndef INCLUDE_NLOHMANN_JSON_FWD_HPP_
28 #define INCLUDE_NLOHMANN_JSON_FWD_HPP_
29 
30 #include <cstdint> // int64_t, uint64_t
31 #include <map> // map
32 #include <memory> // allocator
33 #include <string> // string
34 #include <vector> // vector
35 
36 namespace nlohmann
37 {
38 
39 // see json_fwd.hpp
40 template<typename T = void, typename SFINAE = void>
42 
43 template<template<typename U, typename V, typename... Args> class ObjectType =
44  std::map,
45  template<typename U, typename... Args> class ArrayType = std::vector,
46  class StringType = std::string, class BooleanType = bool,
47  class NumberIntegerType = std::int64_t,
48  class NumberUnsignedType = std::uint64_t,
49  class NumberFloatType = double,
50  template<typename U> class AllocatorType = std::allocator,
51  template<typename T, typename SFINAE = void> class JSONSerializer =
53 class basic_json;
54 
55 template<typename BasicJsonType>
57 
59 } // namespace nlohmann
60 
61 #endif
62 
63 
64 namespace ROOT {
65 namespace Experimental {
66 
67 class REveAunt;
68 class REveScene;
69 class REveCompound;
70 class REveTrans;
71 class REveRenderData;
72 
73 //==============================================================================
74 // REveElement
75 // Base class for ROOT Event Visualization Environment (EVE)
76 // providing hierarchy management and selection and rendering control.
77 //==============================================================================
78 
80 {
81  friend class REveManager;
82  friend class REveScene;
83 
84  REveElement& operator=(const REveElement&) = delete;
85 
86 public:
87  typedef std::list<REveElement*> List_t;
88 
89  typedef std::set<REveElement*> Set_t;
90 
91  typedef std::list<REveAunt*> AuntList_t;
92 
93 private:
94  ElementId_t fElementId{0}; // Unique ID of an element.
95 
96 protected:
97  REveElement *fMother {nullptr};
98  REveScene *fScene {nullptr};
100 
101  ElementId_t get_mother_id() const;
102  ElementId_t get_scene_id() const;
103 
106 
107 protected:
108  std::string fName; // Element name
109  std::string fTitle; // Element title / tooltip
110  AuntList_t fAunts; // List of aunts.
111  List_t fChildren; // List of children.
112  TClass *fChildClass {nullptr}; // Class of acceptable children, others are rejected.
113  REveCompound *fCompound {nullptr}; // Compound this object belongs to.
114  REveElement *fVizModel {nullptr}; //! Element used as model from VizDB.
115  TString fVizTag; // Tag used to query VizDB for model element.
116 
117  Int_t fDenyDestroy{0}; //! Deny-destroy count.
118  Bool_t fDestroyOnZeroRefCnt{kTRUE}; // Auto-destruct when ref-count reaches zero.
119 
120  Bool_t fRnrSelf{kTRUE}; // Render this element.
121  Bool_t fRnrChildren{kTRUE}; // Render children of this element.
122  Bool_t fCanEditMainColor{kFALSE}; // Allow editing of main color.
123  Bool_t fCanEditMainTransparency{kFALSE}; // Allow editing of main transparency.
124  Bool_t fCanEditMainTrans{kFALSE}; // Allow editing of main transformation.
125 
126  Char_t fMainTransparency{0}; // Main-transparency variable.
127  Color_t fDefaultColor{kPink}; // Default color for sub-classes that enable it.
128  Color_t *fMainColorPtr{nullptr};// Pointer to main-color variable.
129  std::unique_ptr<REveTrans> fMainTrans; // Pointer to main transformation matrix.
130 
131  void *fUserData{nullptr}; //! Externally assigned and controlled user data.
132 
133  std::unique_ptr<REveRenderData> fRenderData;//! Vertex / normal / triangle index information for rendering.
134 
135  virtual void PreDeleteElement();
136  virtual void RemoveElementsInternal();
137  virtual void AnnihilateRecursively();
138 
139  static const std::string& ToString(Bool_t b);
140 
141 public:
142  REveElement(const std::string &name = "", const std::string &title = "");
143  REveElement(const REveElement& e);
144  virtual ~REveElement();
145 
146  ElementId_t GetElementId() const { return fElementId; }
147 
148  virtual REveElement* CloneElement() const;
149  virtual REveElement* CloneElementRecurse(Int_t level = 0) const;
150  virtual void CloneChildrenRecurse(REveElement *dest, Int_t level = 0) const;
151 
152  const std::string &GetName() const { return fName; }
153  const char* GetCName() const { return fName.c_str(); }
154  const std::string &GetTitle() const { return fTitle; }
155  const char* GetCTitle() const { return fTitle.c_str(); }
156 
157  virtual std::string GetHighlightTooltip() const { return fTitle; }
158 
159  void SetName (const std::string &name);
160  void SetTitle(const std::string &title);
161  void SetNameTitle(const std::string &name, const std::string &title);
162  virtual void NameTitleChanged();
163 
164  const TString& GetVizTag() const { return fVizTag; }
165  void SetVizTag(const TString& tag) { fVizTag = tag; }
166 
167  REveElement *GetVizModel() const { return fVizModel; }
168  void SetVizModel(REveElement* model);
170 
171  Bool_t ApplyVizTag(const TString& tag, const TString& fallback_tag="");
172 
173  virtual void PropagateVizParamsToProjecteds();
174  virtual void PropagateVizParamsToChildren(REveElement* el = nullptr);
175  virtual void CopyVizParams(const REveElement* el);
176  virtual void CopyVizParamsFromDB();
177  void SaveVizParams (std::ostream &out, const TString &tag, const TString &var);
178  virtual void WriteVizParams(std::ostream &out, const TString &var);
179 
182 
183  bool HasScene() { return fScene != nullptr; }
184  bool HasMother() { return fMother != nullptr; }
185 
186  REveScene* GetScene() { return fScene; }
188 
189  virtual void AddAunt(REveAunt *au);
190  virtual void RemoveAunt(REveAunt *au);
191  virtual void CheckReferenceCount(const std::string &from = "<unknown>");
192 
193  AuntList_t &RefAunts() { return fAunts; }
194  const AuntList_t &RefAunts() const { return fAunts; }
195  Int_t NumAunts() const { return fAunts.size(); }
196  Bool_t HasAunts() const { return !fAunts.empty(); }
197 
198  TClass* GetChildClass() const { return fChildClass; }
200 
201  List_t &RefChildren() { return fChildren; }
202  const List_t &RefChildren() const { return fChildren; }
203  Int_t NumChildren() const { return fChildren.size(); }
204  Bool_t HasChildren() const { return !fChildren.empty(); }
205 
207  REveElement *FindChild(const TString &name, const TClass *cls = nullptr);
208  REveElement *FindChild(TPRegexp &regexp, const TClass *cls = nullptr);
209  Int_t FindChildren(List_t &matches, const TString& name, const TClass *cls = nullptr);
210  Int_t FindChildren(List_t &matches, TPRegexp& regexp, const TClass* cls = nullptr);
211  REveElement *FirstChild() const;
212  REveElement *LastChild () const;
213 
214  void EnableListElements(Bool_t rnr_self = kTRUE, Bool_t rnr_children = kTRUE); // *MENU*
215  void DisableListElements(Bool_t rnr_self = kFALSE, Bool_t rnr_children = kFALSE); // *MENU*
216 
219 
220  Int_t GetDenyDestroy() const;
221  void IncDenyDestroy();
222  void DecDenyDestroy();
223 
224  // --------------------------------
225 
226  TClass *IsA() const;
227 
228  virtual void ExportToCINT(const char *var_name); // *MENU*
229 
230  virtual Bool_t AcceptElement(REveElement *el);
231 
232  virtual void AddElement(REveElement *el);
233  virtual void RemoveElement(REveElement *el);
234  virtual void RemoveElementLocal(REveElement *el);
235  virtual void RemoveElements();
236  virtual void RemoveElementsLocal();
237 
238  virtual void AnnihilateElements();
239  virtual void Annihilate();
240 
241  virtual void ProjectChild(REveElement *el, Bool_t same_depth = kTRUE);
242  virtual void ProjectAllChildren(Bool_t same_depth = kTRUE);
243 
244  virtual void Destroy(); // *MENU*
245  virtual void DestroyOrWarn();
246  virtual void DestroyElements(); // *MENU*
247 
248  virtual Bool_t CanEditElement() const { return kTRUE; }
249  virtual Bool_t SingleRnrState() const { return kFALSE; }
250  virtual Bool_t GetRnrSelf() const { return fRnrSelf; }
251  virtual Bool_t GetRnrChildren() const { return fRnrChildren; }
252  virtual Bool_t GetRnrState() const { return fRnrSelf && fRnrChildren; }
253  virtual Bool_t GetRnrAnything() const { return fRnrSelf || (fRnrChildren && HasChildren()); }
254  virtual Bool_t SetRnrSelf(Bool_t rnr);
255  virtual Bool_t SetRnrChildren(Bool_t rnr);
256  virtual Bool_t SetRnrSelfChildren(Bool_t rnr_self, Bool_t rnr_children);
257  virtual Bool_t SetRnrState(Bool_t rnr);
258  virtual void PropagateRnrStateToProjecteds();
259 
260  void SetupDefaultColorAndTransparency(Color_t col, Bool_t can_edit_color, Bool_t can_edit_transparency);
261 
262  virtual Bool_t CanEditMainColor() const { return fCanEditMainColor; }
264  Color_t *GetMainColorPtr() const { return fMainColorPtr; }
265  void SetMainColorPtr(Color_t *colptr) { fMainColorPtr = colptr; }
266 
267  virtual Bool_t HasMainColor() const { return fMainColorPtr != nullptr; }
268  virtual Color_t GetMainColor() const { return fMainColorPtr ? *fMainColorPtr : 0; }
269  virtual void SetMainColor(Color_t color);
270  void SetMainColorPixel(Pixel_t pixel);
273  virtual void PropagateMainColorToProjecteds(Color_t color, Color_t old_color);
274 
277  virtual Char_t GetMainTransparency() const { return fMainTransparency; }
278  virtual void SetMainTransparency(Char_t t);
279  void SetMainAlpha(Float_t alpha);
280  virtual void PropagateMainTransparencyToProjecteds(Char_t t, Char_t old_t);
281 
282  virtual Bool_t CanEditMainTrans() const { return fCanEditMainTrans; }
283  virtual Bool_t HasMainTrans() const { return fMainTrans.get() != nullptr; }
284  virtual REveTrans* PtrMainTrans(Bool_t create=kTRUE);
285  virtual REveTrans& RefMainTrans();
286  virtual void InitMainTrans(Bool_t can_edit=kTRUE);
287  virtual void DestroyMainTrans();
288 
289  virtual void SetTransMatrix(Double_t *carr);
290  virtual void SetTransMatrix(const TGeoMatrix &mat);
291 
292  virtual Int_t WriteCoreJson(nlohmann::json &cj, Int_t rnr_offset);
293  virtual void BuildRenderData();
294 
295  void* GetUserData() const { return fUserData; }
296  void SetUserData(void* ud) { fUserData = ud; }
297 
298  REveRenderData *GetRenderData() const { return fRenderData.get(); }
299 
300 
301  // Selection state and management
302  //--------------------------------
303 
304 protected:
305 
307  {
308  kCSCBImplySelectAllChildren = BIT(0), // compound will select all children
309  kCSCBTakeMotherAsMaster = BIT(1), // element will take its mother as master
310  kCSCBApplyMainColorToAllChildren = BIT(2), // compound will apply color change to all children
311  kCSCBApplyMainColorToMatchingChildren = BIT(3), // compound will apply color change to all children with matching color
312  kCSCBApplyMainTransparencyToAllChildren = BIT(4), // compound will apply transparency change to all children
313  kCSCBApplyMainTransparencyToMatchingChildren = BIT(5) // compound will apply transparency change to all children with matching color
314  };
315 
317  {
321  };
322 
323  Short_t fImpliedSelected{0}; // How many times the element is implied selected -- needed during destruction.
324  Bool_t fPickable{0}; // Can element be selected.
325  UChar_t fCSCBits{0}; // Compound Selection Color flags.
326 
327 public:
328  Bool_t IsPickable() const { return fPickable; }
329  void SetPickable(Bool_t p) { fPickable = p; }
331 
334 
335  virtual void FillImpliedSelectedSet(Set_t& impSelSet);
336 
340 
342 
343  void SetCSCBits(UChar_t f) { fCSCBits |= f; }
344  void ResetCSCBits(UChar_t f) { fCSCBits &= ~f; }
345  Bool_t TestCSCBits(UChar_t f) const { return (fCSCBits & f) != 0; }
346 
347  void ResetAllCSCBits() { fCSCBits = 0; }
354 
355 
356  // Change-stamping and change bits
357  //---------------------------------
358 
360  {
361  kCBColorSelection = BIT(0), // Main color or select/hilite state changed.
362  kCBTransBBox = BIT(1), // Transformation matrix or bounding-box changed.
363  kCBObjProps = BIT(2), // Object changed, requires dropping its display-lists.
364  kCBVisibility = BIT(3), // Rendering of self/children changed.
365  kCBElementAdded = BIT(4) // Element was added to a new parent.
366  // kCBElementRemoved = BIT() // Element was removed from a parent.
367 
368  // Deletions are handled in a special way in REveManager::PreDeleteElement().
369  };
370 
371 protected:
374 
375 public:
382  // void StampElementRemoved() { AddStamp(kCBElementRemoved); }
383  virtual void AddStamp(UChar_t bits);
384  virtual void ClearStamps() { fChangeBits = 0; }
385 
386  UChar_t GetChangeBits() const { return fChangeBits; }
387 
388  // Menu entries for VizDB communication (here so they are last in the menu).
389 
390  void VizDB_Apply(const std::string& tag); // *MENU*
391  void VizDB_Reapply(); // *MENU*
392  void VizDB_UpdateModel(Bool_t update=kTRUE); // *MENU*
393  void VizDB_Insert(const std::string& tag, Bool_t replace=kTRUE, Bool_t update=kTRUE); // *MENU*
394 };
395 
396 
397 //==============================================================================
398 // REveAunt
399 //==============================================================================
400 
401 class REveAunt
402 {
403 public:
404  virtual ~REveAunt() {}
405 
406  virtual bool HasNiece(REveElement *el) const = 0;
407  virtual bool HasNieces() const = 0;
408 
409  virtual bool AcceptNiece(REveElement *) { return true; }
410 
411  virtual void AddNiece(REveElement *el)
412  {
413  // XXXX Check AcceptNiece() -- throw if not !!!!
414  el->AddAunt(this);
415  AddNieceInternal(el);
416  }
417  virtual void AddNieceInternal(REveElement *el) = 0;
418 
419  virtual void RemoveNiece(REveElement *el)
420  {
422  el->RemoveAunt(this);
423  }
424  virtual void RemoveNieceInternal(REveElement *el) = 0;
425 
426  virtual void RemoveNieces() = 0;
427 };
428 
429 
430 //==============================================================================
431 // REveAuntAsList
432 //==============================================================================
433 
434 class REveAuntAsList : public REveAunt
435 {
436 protected:
438 
439 public:
440  virtual ~REveAuntAsList()
441  {
442  for (auto &n : fNieces) n->RemoveAunt(this);
443  }
444 
445  bool HasNiece(REveElement *el) const override
446  {
447  return std::find(fNieces.begin(), fNieces.end(), el) != fNieces.end();
448  }
449 
450  bool HasNieces() const override
451  {
452  return ! fNieces.empty();
453  }
454 
455  void AddNieceInternal(REveElement *el) override
456  {
457  fNieces.push_back(el);
458  }
459 
460  void RemoveNieceInternal(REveElement *el) override
461  {
462  fNieces.remove(el);
463  }
464 
465  void RemoveNieces() override
466  {
467  for (auto &n : fNieces) n->RemoveAunt(this);
468  fNieces.clear();
469  }
470 };
471 
472 } // namespace Experimental
473 } // namespace ROOT
474 
475 #endif
virtual void Annihilate()
Optimized destruction without check of reference-count.
ElementId_t get_mother_id() const
virtual void PreDeleteElement()
Vertex / normal / triangle index information for rendering.
virtual Bool_t SingleRnrState() const
virtual void SetMainTransparency(Char_t t)
Set main-transparency.
virtual void BuildRenderData()
Write transformation Matrix to render data.
void SetName(const std::string &name)
Set name of an element.
Bool_t HasChild(REveElement *el)
Check if element el is a child of this element.
void SetEditMainTransparency(Bool_t x)
virtual void PropagateRnrStateToProjecteds()
Propagate render state to the projected replicas of this element.
Returns the available number of logical cores.
Definition: StringConv.hxx:21
virtual void SetTransMatrix(Double_t *carr)
Set transformation matrix from column-major array.
virtual void InitMainTrans(Bool_t can_edit=kTRUE)
Initialize the main transformation to identity matrix.
virtual void AnnihilateRecursively()
Protected member function called from REveElement::Annihilate().
virtual void DestroyOrWarn()
Destroy this element. Prints a warning if deny-destroy is in force.
float Float_t
Definition: RtypesCore.h:53
virtual void RemoveElementsLocal()
Perform additional local removal of all elements.
virtual void RemoveAunt(REveAunt *au)
Remove el from the list of aunts.
std::unique_ptr< REveTrans > fMainTrans
Geometrical transformation package.
Definition: TGeoMatrix.h:40
TClass * IsA() const
Return class for this element.
virtual Bool_t SetRnrChildren(Bool_t rnr)
Set render state of this element&#39;s children, i.e.
#define g(i)
Definition: RSha256.hxx:105
virtual Bool_t GetRnrState() const
void DisableListElements(Bool_t rnr_self=kFALSE, Bool_t rnr_children=kFALSE)
Disable rendering of children and their list contents.
#define BIT(n)
Definition: Rtypes.h:83
virtual void CopyVizParams(const REveElement *el)
Copy visualization parameters from element el.
TString fVizTag
Element used as model from VizDB.
const char * GetCTitle() const
virtual void FillImpliedSelectedSet(Set_t &impSelSet)
Populate set impSelSet with derived / dependant elements.
virtual Char_t GetMainTransparency() const
virtual void AnnihilateElements()
Annihilate elements.
virtual REveTrans & RefMainTrans()
Return reference to main transformation.
virtual Bool_t GetRnrSelf() const
Basic string class.
Definition: TString.h:131
REveElement * FirstChild() const
Returns the first child element or 0 if the list is empty.
virtual void ExportToCINT(const char *var_name)
Export render-element to CINT with variable name var_name.
#define f(i)
Definition: RSha256.hxx:104
virtual void Destroy()
Destroy this element.
int Int_t
Definition: RtypesCore.h:41
bool Bool_t
Definition: RtypesCore.h:59
void SetupDefaultColorAndTransparency(Color_t col, Bool_t can_edit_color, Bool_t can_edit_transparency)
Set up element to use built-in main color and set flags allowing editing of main color and transparen...
virtual void CheckReferenceCount(const std::string &from="<unknown>")
Check external references to this and eventually auto-destruct the render-element.
virtual void PropagateVizParamsToChildren(REveElement *el=nullptr)
Propagate visualization parameters from element el (defaulting to this) to all children.
void VizDB_UpdateModel(Bool_t update=kTRUE)
Copy visual parameters from this element to viz-db model.
virtual void RemoveNiece(REveElement *el)
const List_t & RefChildren() const
std::unique_ptr< REveRenderData > fRenderData
Externally assigned and controlled user data.
void SetMainColorRGB(UChar_t r, UChar_t g, UChar_t b)
Convert RGB values to Color_t and call SetMainColor.
virtual bool HasNieces() const =0
const char * GetCName() const
virtual REveElement * CloneElement() const
Clone the element via copy constructor.
virtual void RemoveNieceInternal(REveElement *el)=0
virtual void DestroyMainTrans()
Destroy the main transformation matrix, it will always be taken as identity.
Bool_t TestCSCBits(UChar_t f) const
virtual REveElement * CloneElementRecurse(Int_t level=0) const
Clone elements and recurse &#39;level&#39; deep over children.
Bool_t SetVizModelByTag()
Find model element in VizDB that corresponds to previously assigned fVizTag and set fVizModel accordi...
bool HasNieces() const override
virtual Bool_t AcceptElement(REveElement *el)
Check if el can be added to this element.
void SetTitle(const std::string &title)
Set title of an element.
void RemoveNieceInternal(REveElement *el) override
Double_t x[n]
Definition: legend1.C:17
ULong_t Pixel_t
Definition: GuiTypes.h:39
virtual void RemoveElementLocal(REveElement *el)
Perform additional local removal of el.
Definition: Rtypes.h:65
REveElement * FindChild(const TString &name, const TClass *cls=nullptr)
Find the first child with given name.
virtual void AddStamp(UChar_t bits)
Add (bitwise or) given stamps to fChangeBits.
ElementId_t GetElementId() const
const TString & GetVizTag() const
virtual Bool_t SetRnrSelfChildren(Bool_t rnr_self, Bool_t rnr_children)
Set state for rendering of this element and its children.
virtual void NameTitleChanged()
Virtual function called when a name or title of the element has been changed.
virtual void CloneChildrenRecurse(REveElement *dest, Int_t level=0) const
Clone children and attach them to the dest element.
static constexpr double s
virtual void AddElement(REveElement *el)
Add el to the list of children.
void SetMainAlpha(Float_t alpha)
Set main-transparency via float alpha variable.
virtual void AddAunt(REveAunt *au)
Add el into the list aunts.
short Color_t
Definition: RtypesCore.h:79
void VizDB_Insert(const std::string &tag, Bool_t replace=kTRUE, Bool_t update=kTRUE)
Create a replica of element and insert it into VizDB with given tag.
Int_t GetDenyDestroy() const
Returns the number of times deny-destroy has been requested on the element.
virtual void ProjectAllChildren(Bool_t same_depth=kTRUE)
If this is a projectable, loop over all projected replicas and add the projected image of all childre...
virtual Bool_t GetRnrChildren() const
const std::string & GetName() const
virtual void CopyVizParamsFromDB()
Copy visualization parameters from the model-element fVizModel.
virtual void PropagateMainColorToProjecteds(Color_t color, Color_t old_color)
Propagate color to projected elements.
virtual void PropagateVizParamsToProjecteds()
Propagate visualization parameters to dependent elements.
void assign_scene_recursively(REveScene *s)
void SetCompound(REveCompound *c)
void RecheckImpliedSelections()
Call this if it is possible that implied-selection or highlight has changed for this element or for i...
std::list< REveElement * > List_t
Definition: REveElement.hxx:87
void AddNieceInternal(REveElement *el) override
void SetVizTag(const TString &tag)
ROOT::R::TRInterface & r
Definition: Object.C:4
virtual void SetMainColor(Color_t color)
Set main color of the element.
virtual std::string GetHighlightTooltip() const
static void update(gsl_integration_workspace *workspace, double a1, double b1, double area1, double error1, double a2, double b2, double area2, double error2)
REveElement(const std::string &name="", const std::string &title="")
Default constructor.
Definition: REveElement.cxx:51
short Short_t
Definition: RtypesCore.h:35
TClass instances represent classes, structs and namespaces in the ROOT type system.
Definition: TClass.h:75
virtual void ProjectChild(REveElement *el, Bool_t same_depth=kTRUE)
If this is a projectable, loop over all projected replicas and add the projected image of child &#39;el&#39; ...
void SetSelectionMaster(REveElement *el)
void SetDestroyOnZeroRefCnt(Bool_t d)
Sets the state of flag determining if the element will be destroyed when reference count reaches zero...
std::list< REveAunt * > AuntList_t
Definition: REveElement.hxx:91
unsigned int ElementId_t
Definition: REveTypes.hxx:25
const Bool_t kFALSE
Definition: RtypesCore.h:88
ElementId_t get_scene_id() const
virtual REveTrans * PtrMainTrans(Bool_t create=kTRUE)
Return pointer to main transformation.
void SetMainColorPixel(Pixel_t pixel)
Convert pixel to Color_t and call SetMainColor().
#define d(i)
Definition: RSha256.hxx:102
void SetPickableRecursively(Bool_t p)
Set pickable state on the element and all its children.
void VizDB_Reapply()
Reset visual parameters for this object from VizDB.
void VizDB_Apply(const std::string &tag)
Set visual parameters for this object for given tag.
void IncDenyDestroy()
Increases the deny-destroy count of the element.
std::set< REveElement * > Set_t
Definition: REveElement.hxx:89
virtual Int_t WriteCoreJson(nlohmann::json &cj, Int_t rnr_offset)
Write core json.
void DecDenyDestroy()
Decreases the deny-destroy count of the element.
virtual ~REveElement()
Destructor.
Definition: REveElement.cxx:98
you should not use this method at all Int_t Int_t Double_t Double_t Double_t e
Definition: TRolke.cxx:630
virtual bool AcceptNiece(REveElement *)
Color_t * GetMainColorPtr() const
Bool_t GetDestroyOnZeroRefCnt() const
Returns state of flag determining if the element will be destroyed when reference count reaches zero...
Int_t FindChildren(List_t &matches, const TString &name, const TClass *cls=nullptr)
Find all children with given name and append them to matches list.
void EnableListElements(Bool_t rnr_self=kTRUE, Bool_t rnr_children=kTRUE)
Enable rendering of children and their list contents.
virtual Bool_t CanEditMainColor() const
virtual Bool_t SetRnrSelf(Bool_t rnr)
Set render state of this element, i.e.
char Char_t
Definition: RtypesCore.h:29
virtual void WriteVizParams(std::ostream &out, const TString &var)
Write-out visual parameters for this object.
virtual Bool_t CanEditElement() const
virtual void RemoveElement(REveElement *el)
Remove el from the list of children.
virtual void PropagateMainTransparencyToProjecteds(Char_t t, Char_t old_t)
Propagate transparency to projected elements.
const AuntList_t & RefAunts() const
#define dest(otri, vertexptr)
Definition: triangle.c:1040
basic_json<> json
Definition: REveElement.hxx:58
you should not use this method at all Int_t Int_t Double_t Double_t Double_t Int_t Double_t Double_t Double_t Double_t b
Definition: TRolke.cxx:630
virtual void DestroyElements()
Destroy all children of this element.
virtual void AddNiece(REveElement *el)
#define c(i)
Definition: RSha256.hxx:101
virtual Bool_t GetRnrAnything() const
virtual void AddNieceInternal(REveElement *el)=0
REveElement * GetSelectionMaster()
Returns the master element - that is:
static const std::string & ToString(Bool_t b)
Convert Bool_t to string - kTRUE or kFALSE.
REveElement & operator=(const REveElement &)=delete
virtual void RemoveElements()
Remove all elements.
unsigned char UChar_t
Definition: RtypesCore.h:34
virtual Bool_t SetRnrState(Bool_t rnr)
Set render state of this element and of its children to the same value.
const std::string & GetTitle() const
void SetMainColorPtr(Color_t *colptr)
virtual Color_t GetMainColor() const
virtual Bool_t HasMainTrans() const
void SetVizModel(REveElement *model)
Set visualization-parameter model element.
bool HasNiece(REveElement *el) const override
Bool_t fDestroyOnZeroRefCnt
Deny-destroy count.
virtual void RemoveElementsInternal()
Remove all elements.
virtual void RemoveNieces()=0
virtual Bool_t CanEditMainTransparency() const
const Bool_t kTRUE
Definition: RtypesCore.h:87
virtual Bool_t HasMainColor() const
void SaveVizParams(std::ostream &out, const TString &tag, const TString &var)
Save visualization parameters for this element with given tag.
void SetNameTitle(const std::string &name, const std::string &title)
Set name and title of an element.
const Int_t n
Definition: legend1.C:16
REveElement * GetVizModel() const
virtual Bool_t CanEditMainTrans() const
REveRenderData * GetRenderData() const
Bool_t ApplyVizTag(const TString &tag, const TString &fallback_tag="")
Set the VizTag, find model-element from the VizDB and copy visualization-parameters from it...
char name[80]
Definition: TGX11.cxx:109
REveElement * LastChild() const
Returns the last child element or 0 if the list is empty.
virtual bool HasNiece(REveElement *el) const =0