18 using namespace ROOT::Experimental;
19 namespace REX = ROOT::Experimental;
38 REveProjectable::REveProjectable()
45 REveProjectable::REveProjectable(
const REveProjectable &)
53 REveProjectable::~REveProjectable()
57 while ( ! fProjectedList.empty())
59 REveProjected* p = fProjectedList.front();
61 p->UnRefProjectable(
this);
62 REveElement* el = p->GetProjectedAsElement();
66 REX::gEve->PreDeleteElement(el);
77 void REveProjectable::AnnihilateProjecteds()
79 for (
auto &&proj : fProjectedList) {
80 proj->UnRefProjectable(
this, kFALSE);
81 proj->GetProjectedAsElement()->Annihilate();
83 fProjectedList.clear();
88 void REveProjectable::ClearProjectedList()
90 fProjectedList.clear();
97 void REveProjectable::AddProjectedsToSet(std::set<REveElement*> &set)
99 for (
auto &proj : fProjectedList)
100 set.insert(proj->GetProjectedAsElement());
108 void REveProjectable::PropagateVizParams(REveElement *el)
111 el =
dynamic_cast<REveElement*
>(
this);
113 for (
auto &proj : fProjectedList)
114 proj->GetProjectedAsElement()->CopyVizParams(el);
120 void REveProjectable::PropagateRenderState(Bool_t rnr_self, Bool_t rnr_children)
122 for (
auto &&proj : fProjectedList) {
123 if (proj->GetProjectedAsElement()->SetRnrSelfChildren(rnr_self, rnr_children))
124 proj->GetProjectedAsElement()->StampVisibility();
131 void REveProjectable::PropagateMainColor(Color_t color, Color_t old_color)
133 for (
auto &&proj : fProjectedList) {
134 auto p_as_el = proj->GetProjectedAsElement();
135 if (p_as_el->GetMainColor() == old_color) {
136 p_as_el->SetMainColor(color);
137 p_as_el->StampColorSelection();
146 void REveProjectable::PropagateMainTransparency(Char_t t, Char_t old_t)
148 for (
auto &&proj : fProjectedList) {
149 auto p_as_el = proj->GetProjectedAsElement();
150 if (p_as_el->GetMainTransparency() == old_t) {
151 p_as_el->SetMainTransparency(t);
152 p_as_el->StampColorSelection();
171 REveProjected::~REveProjected()
173 if (fProjectable) fProjectable->RemoveProjected(
this);
181 REveElement* REveProjected::GetProjectedAsElement()
183 return dynamic_cast<REveElement*
>(
this);
191 void REveProjected::SetProjection(REveProjectionManager* mng, REveProjectable* model)
194 if (fProjectable) fProjectable->RemoveProjected(
this);
195 fProjectable = model;
196 if (fProjectable) fProjectable->AddProjected(
this);
202 void REveProjected::UnRefProjectable(REveProjectable* assumed_parent,
bool notifyParent)
204 static const REveException eH(
"REveProjected::UnRefProjectable ");
206 R__ASSERT(fProjectable == assumed_parent);
208 if (notifyParent) fProjectable->RemoveProjected(
this);
209 fProjectable =
nullptr;
217 void REveProjected::SetDepth(Float_t d)
219 if (fManager->GetProjection()->Is2D()) {
231 void REveProjected::SetDepthCommon(Float_t d, REveElement* el, Float_t* bbox)
233 Float_t delta = d - fDepth;
238 el->StampTransBBox();
245 void REveProjected::SetDepthLocal(Float_t d)