Logo ROOT  
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
21class 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/*!
37@brief namespace for Niels Lohmann
38@see https://github.com/nlohmann
39@since version 1.0.0
40*/
41namespace nlohmann
42{
43/*!
44@brief default JSONSerializer template argument
45
46This serializer ignores the template arguments and uses ADL
47([argument-dependent lookup](https://en.cppreference.com/w/cpp/language/adl))
48for serialization.
49*/
50template<typename T = void, typename SFINAE = void>
52
53template<template<typename U, typename V, typename... Args> class ObjectType =
54 std::map,
55 template<typename U, typename... Args> class ArrayType = std::vector,
56 class StringType = std::string, class BooleanType = bool,
57 class NumberIntegerType = std::int64_t,
58 class NumberUnsignedType = std::uint64_t,
59 class NumberFloatType = double,
60 template<typename U> class AllocatorType = std::allocator,
61 template<typename T, typename SFINAE = void> class JSONSerializer =
63 class BinaryType = std::vector<std::uint8_t>>
65
66/*!
67@brief JSON Pointer
68
69A JSON pointer defines a string syntax for identifying a specific value
70within a JSON document. It can be used with functions `at` and
71`operator[]`. Furthermore, JSON pointers are the base for JSON patches.
72
73@sa [RFC 6901](https://tools.ietf.org/html/rfc6901)
74
75@since version 2.0.0
76*/
77template<typename BasicJsonType>
79
80/*!
81@brief default JSON class
82
83This type is the default specialization of the @ref basic_json class which
84uses the standard template types.
85
86@since version 1.0.0
87*/
89
90template<class Key, class T, class IgnoredLess, class Allocator>
92
93/*!
94@brief ordered JSON class
95
96This type preserves the insertion order of object keys.
97
98@since version 3.9.0
99*/
101
102} // namespace nlohmann
103
104#endif // INCLUDE_NLOHMANN_JSON_FWD_HPP_
105
106
107namespace ROOT {
108namespace Experimental {
109
110class REveAunt;
111class REveScene;
112class REveCompound;
113class REveTrans;
114class REveRenderData;
115
116//==============================================================================
117// REveElement
118// Base class for ROOT Event Visualization Environment (EVE)
119// providing hierarchy management and selection and rendering control.
120//==============================================================================
121
123{
124 friend class REveManager;
125 friend class REveScene;
126
128
129public:
130 typedef std::list<REveElement*> List_t;
131
132 typedef std::set<REveElement*> Set_t;
133
134 typedef std::list<REveAunt*> AuntList_t;
135
136private:
137 ElementId_t fElementId{0}; // Unique ID of an element.
138
139protected:
141 REveScene *fScene {nullptr};
143
146
149
150protected:
151 std::string fName; // Element name
152 std::string fTitle; // Element title / tooltip
153 AuntList_t fAunts; // List of aunts.
154 List_t fChildren; // List of children.
155 TClass *fChildClass {nullptr}; // Class of acceptable children, others are rejected.
156 REveCompound *fCompound {nullptr}; // Compound this object belongs to.
157 REveElement *fVizModel {nullptr}; //! Element used as model from VizDB.
158 TString fVizTag; // Tag used to query VizDB for model element.
159
160 Int_t fDenyDestroy{0}; //! Deny-destroy count.
161 Bool_t fDestroyOnZeroRefCnt{kTRUE}; // Auto-destruct when ref-count reaches zero.
162
163 Bool_t fRnrSelf{kTRUE}; // Render this element.
164 Bool_t fRnrChildren{kTRUE}; // Render children of this element.
165 Bool_t fCanEditMainColor{kFALSE}; // Allow editing of main color.
166 Bool_t fCanEditMainTransparency{kFALSE}; // Allow editing of main transparency.
167 Bool_t fCanEditMainTrans{kFALSE}; // Allow editing of main transformation.
168
169 Char_t fMainTransparency{0}; // Main-transparency variable.
170 Color_t fDefaultColor{kPink}; // Default color for sub-classes that enable it.
171 Color_t *fMainColorPtr{nullptr};// Pointer to main-color variable.
172 std::unique_ptr<REveTrans> fMainTrans; // Pointer to main transformation matrix.
173
174 void *fUserData{nullptr}; //! Externally assigned and controlled user data.
175
176 std::unique_ptr<REveRenderData> fRenderData;//! Vertex / normal / triangle index information for rendering.
177
178 virtual void PreDeleteElement();
179 virtual void RemoveElementsInternal();
180 virtual void AnnihilateRecursively();
181
182 static const std::string& ToString(Bool_t b);
183
184public:
185 REveElement(const std::string &name = "", const std::string &title = "");
186 REveElement(const REveElement& e);
187 virtual ~REveElement();
188
190
191 virtual REveElement* CloneElement() const;
192 virtual REveElement* CloneElementRecurse(Int_t level = 0) const;
193 virtual void CloneChildrenRecurse(REveElement *dest, Int_t level = 0) const;
194
195 const std::string &GetName() const { return fName; }
196 const char* GetCName() const { return fName.c_str(); }
197 const std::string &GetTitle() const { return fTitle; }
198 const char* GetCTitle() const { return fTitle.c_str(); }
199
200 virtual std::string GetHighlightTooltip() const { return fTitle; }
201
202 void SetName (const std::string &name);
203 void SetTitle(const std::string &title);
204 void SetNameTitle(const std::string &name, const std::string &title);
205 virtual void NameTitleChanged();
206
207 const TString& GetVizTag() const { return fVizTag; }
208 void SetVizTag(const TString& tag) { fVizTag = tag; }
209
210 REveElement *GetVizModel() const { return fVizModel; }
211 void SetVizModel(REveElement* model);
213
214 Bool_t ApplyVizTag(const TString& tag, const TString& fallback_tag="");
215
216 virtual void PropagateVizParamsToProjecteds();
217 virtual void PropagateVizParamsToChildren(REveElement* el = nullptr);
218 virtual void CopyVizParams(const REveElement* el);
219 virtual void CopyVizParamsFromDB();
220 void SaveVizParams (std::ostream &out, const TString &tag, const TString &var);
221 virtual void WriteVizParams(std::ostream &out, const TString &var);
222
225
226 bool HasScene() { return fScene != nullptr; }
227 bool HasMother() { return fMother != nullptr; }
228
229 REveScene* GetScene() { return fScene; }
231
232 virtual void AddAunt(REveAunt *au);
233 virtual void RemoveAunt(REveAunt *au);
234 virtual void CheckReferenceCount(const std::string &from = "<unknown>");
235
237 const AuntList_t &RefAunts() const { return fAunts; }
238 Int_t NumAunts() const { return fAunts.size(); }
239 Bool_t HasAunts() const { return !fAunts.empty(); }
240
241 TClass* GetChildClass() const { return fChildClass; }
243
245 const List_t &RefChildren() const { return fChildren; }
246 Int_t NumChildren() const { return fChildren.size(); }
247 Bool_t HasChildren() const { return !fChildren.empty(); }
248
250 REveElement *FindChild(const TString &name, const TClass *cls = nullptr);
251 REveElement *FindChild(TPRegexp &regexp, const TClass *cls = nullptr);
252 Int_t FindChildren(List_t &matches, const TString& name, const TClass *cls = nullptr);
253 Int_t FindChildren(List_t &matches, TPRegexp& regexp, const TClass* cls = nullptr);
254 REveElement *FirstChild() const;
255 REveElement *LastChild () const;
256
257 void EnableListElements(Bool_t rnr_self = kTRUE, Bool_t rnr_children = kTRUE); // *MENU*
258 void DisableListElements(Bool_t rnr_self = kFALSE, Bool_t rnr_children = kFALSE); // *MENU*
259
262
263 Int_t GetDenyDestroy() const;
264 void IncDenyDestroy();
265 void DecDenyDestroy();
266
267 // --------------------------------
268
269 TClass *IsA() const;
270
271 virtual void ExportToCINT(const char *var_name); // *MENU*
272
273 virtual Bool_t AcceptElement(REveElement *el);
274
275 virtual void AddElement(REveElement *el);
276 virtual void RemoveElement(REveElement *el);
277 virtual void RemoveElementLocal(REveElement *el);
278 virtual void RemoveElements();
279 virtual void RemoveElementsLocal();
280
281 virtual void AnnihilateElements();
282 virtual void Annihilate();
283
284 virtual void ProjectChild(REveElement *el, Bool_t same_depth = kTRUE);
285 virtual void ProjectAllChildren(Bool_t same_depth = kTRUE);
286
287 virtual void Destroy(); // *MENU*
288 virtual void DestroyOrWarn();
289 virtual void DestroyElements(); // *MENU*
290
291 virtual Bool_t CanEditElement() const { return kTRUE; }
292 virtual Bool_t SingleRnrState() const { return kFALSE; }
293 virtual Bool_t GetRnrSelf() const { return fRnrSelf; }
294 virtual Bool_t GetRnrChildren() const { return fRnrChildren; }
295 virtual Bool_t GetRnrState() const { return fRnrSelf && fRnrChildren; }
296 virtual Bool_t GetRnrAnything() const { return fRnrSelf || (fRnrChildren && HasChildren()); }
297 virtual Bool_t SetRnrSelf(Bool_t rnr);
298 virtual Bool_t SetRnrChildren(Bool_t rnr);
299 virtual Bool_t SetRnrSelfChildren(Bool_t rnr_self, Bool_t rnr_children);
300 virtual Bool_t SetRnrState(Bool_t rnr);
301 virtual void PropagateRnrStateToProjecteds();
302
303 void SetupDefaultColorAndTransparency(Color_t col, Bool_t can_edit_color, Bool_t can_edit_transparency);
304
305 virtual Bool_t CanEditMainColor() const { return fCanEditMainColor; }
308 void SetMainColorPtr(Color_t *colptr) { fMainColorPtr = colptr; }
309
310 virtual Bool_t HasMainColor() const { return fMainColorPtr != nullptr; }
311 virtual Color_t GetMainColor() const { return fMainColorPtr ? *fMainColorPtr : 0; }
312 virtual void SetMainColor(Color_t color);
313 void SetMainColorPixel(Pixel_t pixel);
316 virtual void PropagateMainColorToProjecteds(Color_t color, Color_t old_color);
317
320 virtual Char_t GetMainTransparency() const { return fMainTransparency; }
321 virtual void SetMainTransparency(Char_t t);
322 void SetMainAlpha(Float_t alpha);
324
325 virtual Bool_t CanEditMainTrans() const { return fCanEditMainTrans; }
326 virtual Bool_t HasMainTrans() const { return fMainTrans.get() != nullptr; }
327 virtual REveTrans* PtrMainTrans(Bool_t create=kTRUE);
328 virtual REveTrans& RefMainTrans();
329 virtual void InitMainTrans(Bool_t can_edit=kTRUE);
330 virtual void DestroyMainTrans();
331
332 virtual void SetTransMatrix(Double_t *carr);
333 virtual void SetTransMatrix(const TGeoMatrix &mat);
334
335 virtual Int_t WriteCoreJson(nlohmann::json &cj, Int_t rnr_offset);
336 virtual void BuildRenderData();
337
338 void* GetUserData() const { return fUserData; }
339 void SetUserData(void* ud) { fUserData = ud; }
340
341 REveRenderData *GetRenderData() const { return fRenderData.get(); }
342
343
344 // Selection state and management
345 //--------------------------------
346
347protected:
348
350 {
351 kCSCBImplySelectAllChildren = BIT(0), // compound will select all children
352 kCSCBTakeMotherAsMaster = BIT(1), // element will take its mother as master
353 kCSCBApplyMainColorToAllChildren = BIT(2), // compound will apply color change to all children
354 kCSCBApplyMainColorToMatchingChildren = BIT(3), // compound will apply color change to all children with matching color
355 kCSCBApplyMainTransparencyToAllChildren = BIT(4), // compound will apply transparency change to all children
356 kCSCBApplyMainTransparencyToMatchingChildren = BIT(5) // compound will apply transparency change to all children with matching color
357 };
358
360 {
364 };
365
366 Short_t fImpliedSelected{0}; // How many times the element is implied selected -- needed during destruction.
367 Bool_t fPickable{0}; // Can element be selected.
368 UChar_t fCSCBits{0}; // Compound Selection Color flags.
369
370public:
371 Bool_t IsPickable() const { return fPickable; }
372 void SetPickable(Bool_t p) { fPickable = p; }
374
377
378 virtual void FillImpliedSelectedSet(Set_t& impSelSet);
379
383
385
388 Bool_t TestCSCBits(UChar_t f) const { return (fCSCBits & f) != 0; }
389
390 void ResetAllCSCBits() { fCSCBits = 0; }
397
398
399 // Change-stamping and change bits
400 //---------------------------------
401
403 {
404 kCBColorSelection = BIT(0), // Main color or select/hilite state changed.
405 kCBTransBBox = BIT(1), // Transformation matrix or bounding-box changed.
406 kCBObjProps = BIT(2), // Object changed, requires dropping its display-lists.
407 kCBVisibility = BIT(3), // Rendering of self/children changed.
408 kCBElementAdded = BIT(4) // Element was added to a new parent.
409 // kCBElementRemoved = BIT() // Element was removed from a parent.
410
411 // Deletions are handled in a special way in REveManager::PreDeleteElement().
412 };
413
414protected:
417
418public:
425 // void StampElementRemoved() { AddStamp(kCBElementRemoved); }
426 virtual void AddStamp(UChar_t bits);
427 virtual void ClearStamps() { fChangeBits = 0; }
428
430
431 // Menu entries for VizDB communication (here so they are last in the menu).
432
433 void VizDB_Apply(const std::string& tag); // *MENU*
434 void VizDB_Reapply(); // *MENU*
435 void VizDB_UpdateModel(Bool_t update=kTRUE); // *MENU*
436 void VizDB_Insert(const std::string& tag, Bool_t replace=kTRUE, Bool_t update=kTRUE); // *MENU*
437};
438
439
440//==============================================================================
441// REveAunt
442//==============================================================================
443
445{
446public:
447 virtual ~REveAunt() {}
448
449 virtual bool HasNiece(REveElement *el) const = 0;
450 virtual bool HasNieces() const = 0;
451
452 virtual bool AcceptNiece(REveElement *) { return true; }
453
454 virtual void AddNiece(REveElement *el)
455 {
456 // XXXX Check AcceptNiece() -- throw if not !!!!
457 el->AddAunt(this);
459 }
460 virtual void AddNieceInternal(REveElement *el) = 0;
461
462 virtual void RemoveNiece(REveElement *el)
463 {
465 el->RemoveAunt(this);
466 }
467 virtual void RemoveNieceInternal(REveElement *el) = 0;
468
469 virtual void RemoveNieces() = 0;
470};
471
472
473//==============================================================================
474// REveAuntAsList
475//==============================================================================
476
478{
479protected:
481
482public:
484 {
485 for (auto &n : fNieces) n->RemoveAunt(this);
486 }
487
488 bool HasNiece(REveElement *el) const override
489 {
490 return std::find(fNieces.begin(), fNieces.end(), el) != fNieces.end();
491 }
492
493 bool HasNieces() const override
494 {
495 return ! fNieces.empty();
496 }
497
498 void AddNieceInternal(REveElement *el) override
499 {
500 fNieces.push_back(el);
501 }
502
504 {
505 fNieces.remove(el);
506 }
507
508 void RemoveNieces() override
509 {
510 for (auto &n : fNieces) n->RemoveAunt(this);
511 fNieces.clear();
512 }
513};
514
515} // namespace Experimental
516} // namespace ROOT
517
518#endif
double
Definition: Converters.cxx:921
ULong_t Pixel_t
Definition: GuiTypes.h:39
ROOT::R::TRInterface & r
Definition: Object.C:4
#define d(i)
Definition: RSha256.hxx:102
#define b(i)
Definition: RSha256.hxx:100
#define f(i)
Definition: RSha256.hxx:104
#define c(i)
Definition: RSha256.hxx:101
#define g(i)
Definition: RSha256.hxx:105
#define e(i)
Definition: RSha256.hxx:103
static void update(gsl_integration_workspace *workspace, double a1, double b1, double area1, double error1, double a2, double b2, double area2, double error2)
int Int_t
Definition: RtypesCore.h:43
unsigned char UChar_t
Definition: RtypesCore.h:36
char Char_t
Definition: RtypesCore.h:31
const Bool_t kFALSE
Definition: RtypesCore.h:90
bool Bool_t
Definition: RtypesCore.h:61
short Short_t
Definition: RtypesCore.h:37
double Double_t
Definition: RtypesCore.h:57
short Color_t
Definition: RtypesCore.h:81
float Float_t
Definition: RtypesCore.h:55
const Bool_t kTRUE
Definition: RtypesCore.h:89
#define BIT(n)
Definition: Rtypes.h:83
@ kPink
Definition: Rtypes.h:65
char name[80]
Definition: TGX11.cxx:109
bool HasNiece(REveElement *el) const override
void RemoveNieceInternal(REveElement *el) override
void AddNieceInternal(REveElement *el) override
bool HasNieces() const override
virtual void RemoveNieceInternal(REveElement *el)=0
virtual bool HasNieces() const =0
virtual bool AcceptNiece(REveElement *)
virtual void RemoveNieces()=0
virtual void AddNieceInternal(REveElement *el)=0
virtual bool HasNiece(REveElement *el) const =0
virtual void AddNiece(REveElement *el)
virtual void RemoveNiece(REveElement *el)
virtual REveElement * CloneElement() const
Clone the element via copy constructor.
virtual Bool_t GetRnrState() 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.
void DecDenyDestroy()
Decreases the deny-destroy count of the element.
const AuntList_t & RefAunts() const
virtual void DestroyOrWarn()
Destroy this element. Prints a warning if deny-destroy is in force.
virtual void FillImpliedSelectedSet(Set_t &impSelSet)
Populate set impSelSet with derived / dependant elements.
virtual Bool_t HasMainTrans() const
const std::string & GetName() const
void SetMainColorPtr(Color_t *colptr)
void SetNameTitle(const std::string &name, const std::string &title)
Set name and title of an element.
virtual void RemoveAunt(REveAunt *au)
Remove el from the list of aunts.
TString fVizTag
Element used as model from VizDB.
void SaveVizParams(std::ostream &out, const TString &tag, const TString &var)
Save visualization parameters for this element with given tag.
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.
REveElement * FindChild(const TString &name, const TClass *cls=nullptr)
Find the first child with given name.
TClass * IsA() const
Return class for this element.
const char * GetCTitle() const
virtual void Destroy()
Destroy this element.
virtual void PropagateVizParamsToChildren(REveElement *el=nullptr)
Propagate visualization parameters from element el (defaulting to this) to all children.
const List_t & RefChildren() const
REveElement * LastChild() const
Returns the last child element or 0 if the list is empty.
REveElement * GetSelectionMaster()
Returns the master element - that is:
virtual void RemoveElementsLocal()
Perform additional local removal of all elements.
void SetCompound(REveCompound *c)
virtual void AnnihilateElements()
Annihilate elements.
virtual REveTrans & RefMainTrans()
Return reference to main transformation.
void SetMainColorRGB(UChar_t r, UChar_t g, UChar_t b)
Convert RGB values to Color_t and call SetMainColor.
virtual void SetMainTransparency(Char_t t)
Set main-transparency.
virtual Bool_t GetRnrAnything() const
virtual Int_t WriteCoreJson(nlohmann::json &cj, Int_t rnr_offset)
Write core json.
virtual Bool_t CanEditMainTransparency() const
virtual Bool_t HasMainColor() const
void SetVizTag(const TString &tag)
virtual void SetTransMatrix(Double_t *carr)
Set transformation matrix from column-major array.
virtual void CopyVizParamsFromDB()
Copy visualization parameters from the model-element fVizModel.
void SetDestroyOnZeroRefCnt(Bool_t d)
Sets the state of flag determining if the element will be destroyed when reference count reaches zero...
void SetMainAlpha(Float_t alpha)
Set main-transparency via float alpha variable.
virtual void Annihilate()
Optimized destruction without check of reference-count.
virtual void PropagateMainColorToProjecteds(Color_t color, Color_t old_color)
Propagate color to projected elements.
void VizDB_Apply(const std::string &tag)
Set visual parameters for this object for given tag.
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...
const char * GetCName() const
virtual void AddElement(REveElement *el)
Add el to the list of children.
virtual void WriteVizParams(std::ostream &out, const TString &var)
Write-out visual parameters for this object.
virtual void RemoveElementLocal(REveElement *el)
Perform additional local removal of el.
void DisableListElements(Bool_t rnr_self=kFALSE, Bool_t rnr_children=kFALSE)
Disable rendering of children and their list contents.
const TString & GetVizTag() const
virtual Bool_t GetRnrSelf() const
virtual void ExportToCINT(const char *var_name)
Export render-element to CINT with variable name var_name.
virtual void DestroyMainTrans()
Destroy the main transformation matrix, it will always be taken as identity.
virtual Bool_t SetRnrChildren(Bool_t rnr)
Set render state of this element's children, i.e.
void SetTitle(const std::string &title)
Set title of an element.
std::list< REveAunt * > AuntList_t
virtual void AnnihilateRecursively()
Protected member function called from REveElement::Annihilate().
void SetMainColorPixel(Pixel_t pixel)
Convert pixel to Color_t and call SetMainColor().
Bool_t SetVizModelByTag()
Find model element in VizDB that corresponds to previously assigned fVizTag and set fVizModel accordi...
virtual void RemoveElementsInternal()
Remove all elements.
virtual void InitMainTrans(Bool_t can_edit=kTRUE)
Initialize the main transformation to identity matrix.
Bool_t fDestroyOnZeroRefCnt
Deny-destroy count.
std::unique_ptr< REveRenderData > fRenderData
Externally assigned and controlled user data.
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.
virtual void DestroyElements()
Destroy all children of this element.
REveElement * FirstChild() const
Returns the first child element or 0 if the list is empty.
void EnableListElements(Bool_t rnr_self=kTRUE, Bool_t rnr_children=kTRUE)
Enable rendering of children and their list contents.
virtual REveTrans * PtrMainTrans(Bool_t create=kTRUE)
Return pointer to main transformation.
virtual Bool_t AcceptElement(REveElement *el)
Check if el can be added to this element.
virtual Char_t GetMainTransparency() const
static const std::string & ToString(Bool_t b)
Convert Bool_t to string - kTRUE or kFALSE.
virtual Bool_t SetRnrSelf(Bool_t rnr)
Set render state of this element, i.e.
const std::string & GetTitle() const
virtual void AddAunt(REveAunt *au)
Add el into the list aunts.
virtual void PropagateMainTransparencyToProjecteds(Char_t t, Char_t old_t)
Propagate transparency to projected elements.
virtual Bool_t SetRnrState(Bool_t rnr)
Set render state of this element and of its children to the same value.
virtual Bool_t CanEditMainColor() const
virtual void AddStamp(UChar_t bits)
Add (bitwise or) given stamps to fChangeBits.
void assign_scene_recursively(REveScene *s)
virtual Bool_t CanEditElement() const
Bool_t TestCSCBits(UChar_t f) const
ElementId_t get_mother_id() const
Int_t GetDenyDestroy() const
Returns the number of times deny-destroy has been requested on the element.
void SetEditMainTransparency(Bool_t x)
void SetSelectionMaster(REveElement *el)
virtual Bool_t SetRnrSelfChildren(Bool_t rnr_self, Bool_t rnr_children)
Set state for rendering of this element and its children.
REveElement * GetVizModel() const
Color_t * GetMainColorPtr() const
void SetPickableRecursively(Bool_t p)
Set pickable state on the element and all its children.
virtual void PropagateRnrStateToProjecteds()
Propagate render state to the projected replicas of this element.
void IncDenyDestroy()
Increases the deny-destroy count of the element.
void VizDB_Reapply()
Reset visual parameters for this object from VizDB.
virtual Bool_t GetRnrChildren() const
virtual void CopyVizParams(const REveElement *el)
Copy visualization parameters from element el.
virtual void PreDeleteElement()
Vertex / normal / triangle index information for rendering.
virtual void CheckReferenceCount(const std::string &from="<unknown>")
Check external references to this and eventually auto-destruct the render-element.
virtual void CloneChildrenRecurse(REveElement *dest, Int_t level=0) const
Clone children and attach them to the dest element.
void SetVizModel(REveElement *model)
Set visualization-parameter model element.
std::set< REveElement * > Set_t
ElementId_t GetElementId() const
virtual void RemoveElements()
Remove all elements.
Bool_t GetDestroyOnZeroRefCnt() const
Returns state of flag determining if the element will be destroyed when reference count reaches zero.
virtual Bool_t CanEditMainTrans() const
virtual Bool_t SingleRnrState() const
virtual void SetMainColor(Color_t color)
Set main color of the element.
virtual ~REveElement()
Destructor.
Definition: REveElement.cxx:98
void VizDB_UpdateModel(Bool_t update=kTRUE)
Copy visual parameters from this element to viz-db model.
virtual REveElement * CloneElementRecurse(Int_t level=0) const
Clone elements and recurse 'level' deep over children.
std::list< REveElement * > List_t
virtual std::string GetHighlightTooltip() const
REveElement & operator=(const REveElement &)=delete
virtual void NameTitleChanged()
Virtual function called when a name or title of the element has been changed.
std::unique_ptr< REveTrans > fMainTrans
Bool_t HasChild(REveElement *el)
Check if element el is a child of this element.
REveElement(const std::string &name="", const std::string &title="")
Default constructor.
Definition: REveElement.cxx:51
virtual Color_t GetMainColor() const
void RecheckImpliedSelections()
Call this if it is possible that implied-selection or highlight has changed for this element or for i...
void SetName(const std::string &name)
Set name of an element.
virtual void RemoveElement(REveElement *el)
Remove el from the list of children.
REveRenderData * GetRenderData() const
ElementId_t get_scene_id() const
virtual void PropagateVizParamsToProjecteds()
Propagate visualization parameters to dependent elements.
virtual void BuildRenderData()
Write transformation Matrix to render data.
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 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 'el' ...
TClass instances represent classes, structs and namespaces in the ROOT type system.
Definition: TClass.h:80
Geometrical transformation package.
Definition: TGeoMatrix.h:41
Basic string class.
Definition: TString.h:131
Double_t x[n]
Definition: legend1.C:17
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
static constexpr double s
namespace for Niels Lohmann
Definition: REveElement.hxx:42
basic_json<> json
default JSON class
Definition: REveElement.hxx:88
default JSONSerializer template argument
Definition: REveElement.hxx:51
#define dest(otri, vertexptr)
Definition: triangle.c:1040