Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
REveProjectionManager.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_REveProjectionManager
13#define ROOT7_REveProjectionManager
14
15#include <ROOT/REveElement.hxx>
17#include <TAttBBox.h>
18
19namespace ROOT {
20namespace Experimental {
21
22////////////////////////////////////////////////////////////////////////////////
23/// REveProjectionManager
24/// Manager class for steering of projections and managing projected objects.
25////////////////////////////////////////////////////////////////////////////////
26
28 public REveAuntAsList,
29 public TAttBBox
30{
31private:
34
35protected:
37
38 REveProjection *fProjection{nullptr}; // current projection
39 REveVector fCenter; // center of distortion
40 Float_t fCurrentDepth{0.}; // z depth of object being projected
41
42 List_t fDependentEls; // elements that depend on manager and need to be destroyed with it
43
44 Bool_t fImportEmpty{kFALSE}; // import sub-trees with no projectable elements
45
46 virtual Bool_t ShouldImport(REveElement *el);
47 virtual void UpdateDependentElements(REveElement *root);
48
49public:
51 ~REveProjectionManager() override;
52
53 void AddDependent(REveElement *el);
55
58
59 virtual void UpdateName();
60
63
66
69
71 virtual REveElement *ImportElements(REveElement *el, REveElement *ext_list = nullptr);
72
73 virtual REveElement *SubImportElements(REveElement *el, REveElement *proj_parent);
74 virtual Int_t SubImportChildren(REveElement *el, REveElement *proj_parent);
75
76 virtual void ProjectChildren();
77 virtual void ProjectChildrenRecurse(REveElement *el);
78
79 void ComputeBBox() override;
80};
81
82} // namespace Experimental
83} // namespace ROOT
84
85#endif
#define d(i)
Definition RSha256.hxx:102
bool Bool_t
Definition RtypesCore.h:63
float Float_t
Definition RtypesCore.h:57
constexpr Bool_t kFALSE
Definition RtypesCore.h:94
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 Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t type
std::list< REveElement * > List_t
REveProjectionManager Manager class for steering of projections and managing projected objects.
REveProjection * fProjections[REveProjection::kPT_End]
void AddDependent(REveElement *el)
Add el as dependent element.
virtual REveElement * ImportElements(REveElement *el, REveElement *ext_list=nullptr)
Recursively import elements and apply projection to the newly imported objects.
virtual void UpdateDependentElements(REveElement *root)
Update dependent elements' bounding boxes.
void SetProjection(REveProjection::EPType_e type)
Set projection type and distortion.
virtual REveElement * ImportElementsRecurse(REveElement *el, REveElement *parent)
If el is REveProjectable add projected instance else add plain REveElementList to parent.
void ComputeBBox() override
Virtual from TAttBBox; fill bounding-box information.
REveProjectionManager(const REveProjectionManager &)=delete
virtual REveElement * SubImportElements(REveElement *el, REveElement *proj_parent)
Recursively import elements and apply projection to the newly imported objects.
virtual void UpdateName()
Updates name to have consistent information with projection.
void RemoveDependent(REveElement *el)
Remove el as dependent element.
REveProjectionManager & operator=(const REveProjectionManager &)=delete
virtual void ProjectChildren()
Project all children recursively, update bounding-box and notify EveManger about the scenes that have...
virtual void ProjectChildrenRecurse(REveElement *el)
Project el (via REveProjected::UpdateProjection()) and recurse through el's children.
void SetCenter(Float_t x, Float_t y, Float_t z)
Set projection center and rebuild projected scene.
virtual Bool_t ShouldImport(REveElement *el)
Returns true if element el should be imported.
virtual Int_t SubImportChildren(REveElement *el, REveElement *proj_parent)
Recursively import children elements of el and apply projection to the newly imported objects.
REveProjection Base for specific classes that implement non-linear projections.
Helper for management of bounding-box information.
Definition TAttBBox.h:18
Double_t y[n]
Definition legend1.C:17
Double_t x[n]
Definition legend1.C:17
tbb::task_arena is an alias of tbb::interface7::task_arena, which doesn't allow to forward declare tb...