12 #ifndef ROOT7_REveProjectionBases
13 #define ROOT7_REveProjectionBases
22 namespace Experimental {
27 class REveProjectionManager;
40 REveProjectable &operator=(
const REveProjectable &);
43 typedef std::list<REveProjected *> ProjList_t;
46 ProjList_t fProjectedList;
50 REveProjectable(
const REveProjectable &);
51 virtual ~REveProjectable();
53 virtual TClass *ProjectedClass(
const REveProjection *p)
const = 0;
55 virtual Bool_t HasProjecteds()
const {
return !fProjectedList.empty(); }
57 ProjList_t &RefProjecteds() {
return fProjectedList; }
59 virtual void AddProjected(REveProjected *p) { fProjectedList.emplace_back(p); }
60 virtual void RemoveProjected(REveProjected *p) { fProjectedList.remove(p); }
62 virtual void AnnihilateProjecteds();
63 virtual void ClearProjectedList();
65 virtual void AddProjectedsToSet(std::set<REveElement *> &set);
67 virtual void PropagateVizParams(REveElement *el =
nullptr);
68 virtual void PropagateRenderState(Bool_t rnr_self, Bool_t rnr_children);
69 virtual void PropagateMainColor(Color_t color, Color_t old_color);
70 virtual void PropagateMainTransparency(Char_t t, Char_t old_t);
83 REveProjected(
const REveProjected &);
84 REveProjected &operator=(
const REveProjected &);
87 REveProjectionManager *fManager{
nullptr};
88 REveProjectable *fProjectable{
nullptr};
91 void SetDepthCommon(Float_t d, REveElement *el, Float_t *bbox);
92 virtual void SetDepthLocal(Float_t d);
95 REveProjected() =
default;
96 virtual ~REveProjected();
98 REveProjectionManager *GetManager()
const {
return fManager; }
99 REveProjectable *GetProjectable()
const {
return fProjectable; }
100 Float_t GetDepth()
const {
return fDepth; }
102 virtual void SetProjection(REveProjectionManager *mng, REveProjectable *model);
103 virtual void UnRefProjectable(REveProjectable *assumed_parent,
bool notifyParent =
true);
105 virtual void UpdateProjection() = 0;
106 virtual REveElement *GetProjectedAsElement();
108 virtual void SetDepth(Float_t d);