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
18namespace ROOT {
19namespace Experimental {
20
21////////////////////////////////////////////////////////////////////////////////
22/// REveProjectionManager
23/// Manager class for steering of projections and managing projected objects.
24////////////////////////////////////////////////////////////////////////////////
25
27private:
30
31protected:
33
34 REveProjection *fProjection{nullptr}; // current projection
35 REveVector fCenter; // center of distortion
36 Float_t fCurrentDepth{0.}; // z depth of object being projected
37
38 List_t fDependentEls; // elements that depend on manager and need to be destroyed with it
39
40 Bool_t fImportEmpty{kFALSE}; // import sub-trees with no projectable elements
41
42 virtual Bool_t ShouldImport(REveElement *el);
43 virtual void UpdateDependentElements(REveElement *root);
44
45public:
47 ~REveProjectionManager() override;
48
49 void AddDependent(REveElement *el);
51
54
55 virtual void UpdateName();
56
57 void BumpDistortion(Int_t steps);
58
61
64
67
69 virtual REveElement *ImportElements(REveElement *el, REveElement *ext_list = nullptr);
70
71 virtual REveElement *SubImportElements(REveElement *el, REveElement *proj_parent);
72 virtual Int_t SubImportChildren(REveElement *el, REveElement *proj_parent);
73
74 virtual void ProjectChildren();
75 virtual void ProjectChildrenRecurse(REveElement *el);
76
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
Boolean (0=false, 1=true) (bool)
Definition RtypesCore.h:78
float Float_t
Float 4 bytes (float)
Definition RtypesCore.h:72
constexpr Bool_t kFALSE
Definition RtypesCore.h:109
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, and tell the nieces, such as an REveProjectionAxis,...
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
Fill the bounding box (virtual from REveElement) with the union of the boxes of the projected element...
REveProjectionManager(const REveProjectionManager &)=delete
virtual REveElement * SubImportElements(REveElement *el, REveElement *proj_parent)
Recursively import elements and apply projection to the newly imported objects.
void RemoveDependent(REveElement *el)
Remove el as dependent element.
REveProjectionManager & operator=(const REveProjectionManager &)=delete
void BumpDistortion(Int_t steps)
Updates name to have consistent information with projection.
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.
const REveTrans * GetModelTrans(REveElement *model, REveTrans &t)
Return the matrix that takes the coordinates of model into the frame of this manager,...
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.
Double_t y[n]
Definition legend1.C:17
Double_t x[n]
Definition legend1.C:17