Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
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#include "TString.h"
19
20#include <algorithm>
21#include <memory>
22#include <list>
23#include <ostream>
24#include <set>
25#include <string>
26
27#include <nlohmann/json.hpp>
28
29class TGeoMatrix;
30
31namespace ROOT {
32namespace Experimental {
33
34class REveAunt;
35class REveScene;
36class REveCompound;
37class REveTrans;
38class REveRenderData;
39
40//==============================================================================
41// REveElement
42// Base class for ROOT Event Visualization Environment (EVE)
43// providing hierarchy management and selection and rendering control.
44//==============================================================================
45
47{
48 friend class REveManager;
49 friend class REveScene;
50
52
53public:
54 typedef std::list<REveElement*> List_t;
55
56 typedef std::set<REveElement*> Set_t;
57
58 typedef std::list<REveAunt*> AuntList_t;
59
60private:
61 ElementId_t fElementId{0}; // Unique ID of an element.
62
63protected:
64 REveElement *fMother {nullptr};
65 REveScene *fScene {nullptr};
67
70
73
74protected:
75 std::string fName; // Element name
76 std::string fTitle; // Element title / tooltip
77 AuntList_t fAunts; // List of aunts.
78 List_t fChildren; // List of children.
79 TClass *fChildClass {nullptr}; // Class of acceptable children, others are rejected.
80 REveCompound *fCompound {nullptr}; // Compound this object belongs to.
81 REveElement *fVizModel {nullptr}; ///<! Element used as model from VizDB.
82 TString fVizTag; // Tag used to query VizDB for model element.
83
84 Int_t fDenyDestroy{0}; ///<! Deny-destroy count.
85 Bool_t fDestroyOnZeroRefCnt{kTRUE}; // Auto-destruct when ref-count reaches zero.
86
87 Bool_t fRnrSelf{kTRUE}; // Render this element.
88 Bool_t fRnrChildren{kTRUE}; // Render children of this element.
89 Bool_t fCanEditMainColor{kFALSE}; // Allow editing of main color.
90 Bool_t fCanEditMainTransparency{kFALSE}; // Allow editing of main transparency.
91 Bool_t fCanEditMainTrans{kFALSE}; // Allow editing of main transformation.
92
93 Char_t fMainTransparency{0}; // Main-transparency variable.
94 Color_t fDefaultColor{kPink}; // Default color for sub-classes that enable it.
95 Color_t *fMainColorPtr{nullptr};// Pointer to main-color variable.
96
97 std::unique_ptr<REveTrans> fMainTrans; // Pointer to main transformation matrix.
98
99 void *fUserData{nullptr}; ///<! Externally assigned and controlled user data.
100
101 std::unique_ptr<REveRenderData> fRenderData;///<! Vertex / normal / triangle index information for rendering.
102
103public:
105 kBBoxInvalid, // Not computed since the last change.
106 kBBoxNone, // No geometry of its own.
107 kBBoxSet, // fBBoxMin and fBBoxMax hold the box.
108 kBBoxNotInWorld // Screen-space or overlay content: not bounded, not culled.
109 };
110
111protected:
112 REveVector fBBoxMin; ///<! Bounding box in the element's own frame.
115
116 void BBoxInit();
117 void BBoxZero(Float_t epsilon = 0, Float_t x = 0, Float_t y = 0, Float_t z = 0);
121 {
124 }
126 void BBoxCheckPoint(const Float_t *p) { BBoxCheckPoint(p[0], p[1], p[2]); }
127 /// Grow the box to hold the axis-aligned box with centre `c` and half sizes `h`.
128 void BBoxCheckBox(const REveVector &c, const REveVector &h)
129 {
130 BBoxCheckPoint(c - h);
131 BBoxCheckPoint(c + h);
132 }
133 void AssertBBoxExtents(Float_t epsilon = 0.005);
134
135 virtual void PreDeleteElement();
136 virtual void RemoveElementsInternal();
137 virtual void AnnihilateRecursively();
138
139 static const std::string& ToString(Bool_t b);
140
141public:
142 REveElement(const std::string &name = "", const std::string &title = "");
143 REveElement(const REveElement& e);
144 virtual ~REveElement();
145
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 std::set<int>&) const;
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 /// Called by an aunt that holds this element when the aunt has changed.
192 virtual void AuntChanged(REveAunt * /*au*/) {}
193 virtual void CheckReferenceCount(const std::string &from = "<unknown>");
194
196 const AuntList_t &RefAunts() const { return fAunts; }
197 Int_t NumAunts() const { return fAunts.size(); }
198 Bool_t HasAunts() const { return !fAunts.empty(); }
199
200 TClass* GetChildClass() const { return fChildClass; }
202
204 const List_t &RefChildren() const { return fChildren; }
205 Int_t NumChildren() const { return fChildren.size(); }
206 Bool_t HasChildren() const { return !fChildren.empty(); }
207
209 REveElement *FindChild(const TString &name, const TClass *cls = nullptr);
210 REveElement *FindChild(TPRegexp &regexp, const TClass *cls = nullptr);
211 Int_t FindChildren(List_t &matches, const TString& name, const TClass *cls = nullptr);
212 Int_t FindChildren(List_t &matches, TPRegexp& regexp, const TClass* cls = nullptr);
213 REveElement *FirstChild() const;
214 REveElement *LastChild () const;
215
216 void EnableListElements(Bool_t rnr_self = kTRUE, Bool_t rnr_children = kTRUE); // *MENU*
217 void DisableListElements(Bool_t rnr_self = kFALSE, Bool_t rnr_children = kFALSE); // *MENU*
218
221
222 Int_t GetDenyDestroy() const;
223 void IncDenyDestroy();
224 void DecDenyDestroy();
225
226 // --------------------------------
227
228 TClass *IsA() const;
229
230 virtual void ExportToInterpreter(const char *var_name); // *MENU*
231
232 virtual Bool_t AcceptElement(REveElement *el);
233
234 virtual void AddElement(REveElement *el);
235 virtual void RemoveElement(REveElement *el);
236 virtual void RemoveElementLocal(REveElement *el);
237 virtual void RemoveElements();
238 virtual void RemoveElementsLocal();
239
240 virtual void AnnihilateElements();
241 virtual void Annihilate();
242
243 virtual void ProjectChild(REveElement *el, Bool_t same_depth = kTRUE);
244 virtual void ProjectAllChildren(Bool_t same_depth = kTRUE);
245
246 virtual void Destroy(); // *MENU*
247 virtual void DestroyOrWarn();
248 virtual void DestroyElements(); // *MENU*
249
250 virtual Bool_t CanEditElement() const { return kTRUE; }
251 virtual Bool_t SingleRnrState() const { return kFALSE; }
252 virtual Bool_t GetRnrSelf() const { return fRnrSelf; }
253 virtual Bool_t GetRnrChildren() const { return fRnrChildren; }
254 virtual Bool_t GetRnrState() const { return fRnrSelf && fRnrChildren; }
255 virtual Bool_t GetRnrAnything() const { return fRnrSelf || (fRnrChildren && HasChildren()); }
256 virtual Bool_t SetRnrSelf(Bool_t rnr);
257 virtual Bool_t SetRnrChildren(Bool_t rnr);
258 virtual Bool_t SetRnrSelfChildren(Bool_t rnr_self, Bool_t rnr_children);
259 virtual Bool_t SetRnrState(Bool_t rnr);
260 virtual void PropagateRnrStateToProjecteds();
261
262 void SetupDefaultColorAndTransparency(Color_t col, Bool_t can_edit_color, Bool_t can_edit_transparency);
263
264 virtual Bool_t CanEditMainColor() const { return fCanEditMainColor; }
267 void SetMainColorPtr(Color_t *colptr) { fMainColorPtr = colptr; }
268
269 virtual Bool_t HasMainColor() const { return fMainColorPtr != nullptr; }
270 virtual Color_t GetMainColor() const { return fMainColorPtr ? *fMainColorPtr : 0; }
271 virtual void SetMainColor(Color_t color);
275 virtual void PropagateMainColorToProjecteds(Color_t color, Color_t old_color);
276
279 virtual Char_t GetMainTransparency() const { return fMainTransparency; }
280 virtual void SetMainTransparency(Char_t t);
281 void SetMainAlpha(Float_t alpha);
283
284 virtual Bool_t CanEditMainTrans() const { return fCanEditMainTrans; }
285 virtual Bool_t HasMainTrans() const { return fMainTrans.get() != nullptr; }
286 virtual REveTrans* PtrMainTrans(Bool_t create=kTRUE);
287 virtual REveTrans& RefMainTrans();
288 virtual void InitMainTrans(Bool_t can_edit=kTRUE);
289 virtual void DestroyMainTrans();
290
291 virtual void SetTransMatrix(Double_t *carr);
292 virtual void SetTransMatrix(const TGeoMatrix &mat);
294
295 // clang-format off
296 virtual Int_t WriteCoreJson(nlohmann::json &cj, Int_t rnr_offset);
297 virtual void WriteTransJson(nlohmann::json &cj);
298 virtual void BuildRenderData();
299 // clang-format on
300
301 virtual void ComputeBBox();
302 EBBoxState AssertBBox();
305 const REveVector &GetBBoxMin() const { return fBBoxMin; }
306 const REveVector &GetBBoxMax() const { return fBBoxMax; }
307
308 void* GetUserData() const { return fUserData; }
309 void SetUserData(void* ud) { fUserData = ud; }
310
311 REveRenderData *GetRenderData() const { return fRenderData.get(); }
312
313
314 // Selection state and management
315 //--------------------------------
316
317protected:
318
320 {
321 kCSCBImplySelectAllChildren = BIT(0), // compound will select all children
322 kCSCBTakeMotherAsMaster = BIT(1), // element will take its mother as master
323 kCSCBApplyMainColorToAllChildren = BIT(2), // compound will apply color change to all children
324 kCSCBApplyMainColorToMatchingChildren = BIT(3), // compound will apply color change to all children with matching color
325 kCSCBApplyMainTransparencyToAllChildren = BIT(4), // compound will apply transparency change to all children
326 kCSCBApplyMainTransparencyToMatchingChildren = BIT(5) // compound will apply transparency change to all children with matching color
327 };
328
335
336 Short_t fImpliedSelected{0}; // How many times the element is implied selected -- needed during destruction.
337 Bool_t fPickable{false}; // Can element be selected.
338 UChar_t fCSCBits{0}; // Compound Selection Color flags.
339
340public:
341 Bool_t IsPickable() const { return fPickable; }
344
347
348 virtual void FillImpliedSelectedSet(Set_t& impSelSet, const std::set<int>&);
349
353
355
358 Bool_t TestCSCBits(UChar_t f) const { return (fCSCBits & f) != 0; }
359
360 void ResetAllCSCBits() { fCSCBits = 0; }
367
368 virtual bool RequiresExtraSelectionData() const { return false; }
369 virtual void FillExtraSelectionData(nlohmann::json&, const std::set<int>&) const {}
370
371 // Change-stamping and change bits
372 //---------------------------------
373 // A change that invalidates geometry must stamp kCBObjProps, which also
374 // invalidates the bounding box. kCBCoreJson and kCBTrans send no render data.
375
376 // clang-format off
378 {
379 kCBCoreJson = BIT(0), // Core JSON changed (colour, name, ...); render data did not.
380 kCBTrans = BIT(1), // Transformation changed; cheap update, no rebuild.
381 kCBObjProps = BIT(2), // Full rebuild: render data and the full state, transformation included.
383 kCBVisibility = BIT(3), // Rendering of self/children changed.
384 kCBElementAdded = BIT(4) // Element was added to a new parent.
385 // kCBElementRemoved = BIT() // Element was removed from a parent.
386
387 // Deletions are handled in a special way in REveManager::PreDeleteElement().
388 };
389 // clang-format on
390
391protected:
394
395 static thread_local REveElement *stlMirAlpha;
396 static thread_local int stlMirError;
397 static thread_local std::string stlMirErrorString;
398 static void ClearMirContext();
399 static void SetMirContext(REveElement *el);
400 static void SetMirError(int error, std::string_view err_str="");
401 static void AppendMirErrorString(std::string_view err_str);
402
403public:
407 {
409 if (!(fChangeBits & kCBObjProps))
411 }
414 // void StampElementRemoved() { AddStamp(kCBElementRemoved); }
415 virtual void AddStamp(UChar_t bits);
416 virtual void ClearStamps() { fChangeBits = 0; }
417 // Default stamp for object properties -- the most common case.
418 void Stamp() { StampObjProps(); }
419
421
422 // Menu entries for VizDB communication (here so they are last in the menu).
423
424 void VizDB_Apply(const std::string& tag); // *MENU*
425 void VizDB_Reapply(); // *MENU*
426 void VizDB_UpdateModel(Bool_t update=kTRUE); // *MENU*
427 void VizDB_Insert(const std::string& tag, Bool_t replace=kTRUE, Bool_t update=kTRUE); // *MENU*
428};
429
430
431//==============================================================================
432// REveAunt
433//==============================================================================
434
436{
437public:
438 virtual ~REveAunt() {}
439
440 virtual bool HasNiece(REveElement *el) const = 0;
441 virtual bool HasNieces() const = 0;
442
443 virtual bool AcceptNiece(REveElement *) { return true; }
444
445 virtual void AddNiece(REveElement *el)
446 {
447 // XXXX Check AcceptNiece() -- throw if not !!!!
448 el->AddAunt(this);
450 }
451 virtual void AddNieceInternal(REveElement *el) = 0;
452
453 virtual void RemoveNiece(REveElement *el)
454 {
456 el->RemoveAunt(this);
457 }
458 virtual void RemoveNieceInternal(REveElement *el) = 0;
459
460 virtual void RemoveNieces() = 0;
461};
462
463
464//==============================================================================
465// REveAuntAsList
466//==============================================================================
467
469{
470protected:
472
473public:
475 {
476 for (auto &n : fNieces) n->RemoveAunt(this);
477 }
478
479 bool HasNiece(REveElement *el) const override
480 {
481 return std::find(fNieces.begin(), fNieces.end(), el) != fNieces.end();
482 }
483
484 bool HasNieces() const override
485 {
486 return ! fNieces.empty();
487 }
488
489 void AddNieceInternal(REveElement *el) override
490 {
491 fNieces.push_back(el);
492 }
493
495 {
496 fNieces.remove(el);
497 }
498
499 void RemoveNieces() override
500 {
501 for (auto &n : fNieces) n->RemoveAunt(this);
502 fNieces.clear();
503 }
504};
505
506} // namespace Experimental
507} // namespace ROOT
508
509#endif
ULong_t Pixel_t
Pixel value.
Definition GuiTypes.h:41
#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 h(i)
Definition RSha256.hxx:106
#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)
bool Bool_t
Boolean (0=false, 1=true) (bool)
Definition RtypesCore.h:78
short Color_t
Color number (short)
Definition RtypesCore.h:100
unsigned char UChar_t
Unsigned Character 1 byte (unsigned char)
Definition RtypesCore.h:53
char Char_t
Character 1 byte (char)
Definition RtypesCore.h:52
float Float_t
Float 4 bytes (float)
Definition RtypesCore.h:72
short Short_t
Signed Short integer 2 bytes (short)
Definition RtypesCore.h:54
constexpr Bool_t kFALSE
Definition RtypesCore.h:109
constexpr Bool_t kTRUE
Definition RtypesCore.h:108
#define BIT(n)
Definition Rtypes.h:90
@ kPink
Definition Rtypes.h:67
winID h TVirtualViewer3D TVirtualGLPainter p
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t dest
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void pixel
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t r
char name[80]
Definition TGX11.cxx:142
Description of REveCompound.
Eve representation of TGLScene.
REveTrans is a 4x4 transformation matrix for homogeneous coordinates stored internally in a column-ma...
bool HasNiece(REveElement *el) const override
void RemoveNieceInternal(REveElement *el) override
void AddNieceInternal(REveElement *el) 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.
static thread_local REveElement * stlMirAlpha
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 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.
virtual void ExportToInterpreter(const char *var_name)
Export render-element to Cling with variable name var_name.
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 Return REveElement class in case dicitonary is not exisiting.
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.
virtual 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 WriteTransJson(nlohmann::json &cj)
Write the main transformation and its motion for a kCBTrans update.
virtual std::string GetHighlightTooltip(const std::set< int > &) const
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.
virtual bool RequiresExtraSelectionData() const
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...
void * fUserData
! Externally assigned and controlled user data.
void BBoxCheckPoint(const REveVector &v)
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.
Int_t fDenyDestroy
! Deny-destroy count.
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 DestroyMainTrans()
Destroy the main transformation matrix, it will always be taken as identity.
Int_t ComposeSceneTrans(REveTrans &t) const
Compose into t the matrices of this element and of its mothers up to, not including,...
static thread_local int stlMirError
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...
void AssertBBoxExtents(Float_t epsilon=0.005)
Widen every side of the bounding box shorter than epsilon to epsilon, keeping its centre.
virtual void RemoveElementsInternal()
Remove all elements.
virtual void InitMainTrans(Bool_t can_edit=kTRUE)
Initialize the main transformation to identity matrix, without motion.
std::unique_ptr< REveRenderData > fRenderData
! Vertex / normal / triangle index information for rendering.
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 BBoxZero(Float_t epsilon=0, Float_t x=0, Float_t y=0, Float_t z=0)
Set the bounding box to a cube of half-side epsilon at (x, y, z); with the defaults,...
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
const REveVector & GetBBoxMax() 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
static void SetMirContext(REveElement *el)
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 SetSelectionMaster(REveElement *el)
REveElement * fVizModel
! Element used as model from VizDB.
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
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.
virtual void FillExtraSelectionData(nlohmann::json &, const std::set< int > &) const
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
static thread_local std::string stlMirErrorString
virtual void CopyVizParams(const REveElement *el)
Copy visualization parameters from element el.
void BBoxCheckPoint(const Float_t *p)
void BBoxCheckPoint(Float_t x, Float_t y, Float_t z)
virtual void PreDeleteElement()
Called before the element is deleted, thus offering the last chance to detach from acquired resources...
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 BBoxInit()
Start filling the bounding box with BBoxCheckPoint(): min at +infinity, max at -infinity,...
void SetVizModel(REveElement *model)
Set visualization-parameter model element.
std::set< REveElement * > Set_t
ElementId_t GetElementId() const
EBBoxState AssertBBox()
Compute the bounding box if it is invalid, and return its state.
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.
static void AppendMirErrorString(std::string_view err_str)
void BBoxCheckBox(const REveVector &c, const REveVector &h)
Grow the box to hold the axis-aligned box with centre c and half sizes h.
virtual void FillImpliedSelectedSet(Set_t &impSelSet, const std::set< int > &)
Populate set impSelSet with derived / dependant elements.
virtual ~REveElement()
Destructor.
const REveVector & GetBBoxMin() const
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 void ComputeBBox()
Compute the bounding box in the element's own frame, before fMainTrans.
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.
static void SetMirError(int error, std::string_view err_str="")
REveElement(const std::string &name="", const std::string &title="")
Default constructor.
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.
REveVector fBBoxMin
! Bounding box in the element's own frame.
REveRenderData * GetRenderData() const
ElementId_t get_scene_id() const
virtual void PropagateVizParamsToProjecteds()
Propagate visualization parameters to dependent elements.
virtual void AuntChanged(REveAunt *)
Called by an aunt that holds this element when the aunt has changed.
virtual void BuildRenderData()
Build fRenderData, what the client draws.
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' ...
REveVectorT & SetMin(const REveVectorT &v)
Set each component to the smaller of its own and that of v.
REveVectorT & SetMax(const REveVectorT &v)
Set each component to the larger of its own and that of v.
TClass instances represent classes, structs and namespaces in the ROOT type system.
Definition TClass.h:84
Geometrical transformation package.
Definition TGeoMatrix.h:39
Basic string class.
Definition TString.h:137
Double_t y[n]
Definition legend1.C:17
Double_t x[n]
Definition legend1.C:17
const Int_t n
Definition legend1.C:16
unsigned int ElementId_t
Definition REveTypes.hxx:28
REveVectorT< Float_t > REveVector