73 fChildClass (
e.fChildClass),
75 fDestroyOnZeroRefCnt (
e.fDestroyOnZeroRefCnt),
76 fRnrSelf (
e.fRnrSelf),
77 fRnrChildren (
e.fRnrChildren),
78 fCanEditMainColor (
e.fCanEditMainColor),
79 fCanEditMainTransparency(
e.fCanEditMainTransparency),
80 fCanEditMainTrans (
e.fCanEditMainTrans),
81 fMainTransparency (
e.fMainTransparency),
82 fPickable (
e.fPickable),
90 fMainTrans = std::make_unique<REveTrans>(*
e.fMainTrans.get());
116 au->RemoveNieceInternal(
this);
137 c->assign_element_id_recurisvely();
142 assert(
fScene ==
nullptr);
153 c->assign_scene_recursively(
s);
202 dest->AddElement(
c->CloneElementRecurse(level));
293 if ((model =
REX::gEve->FindVizDBEntry(tag)) !=
nullptr)
308 Warning(
"REveElement::ApplyVizTag",
"entry for tag '%s' not found in VizDB.", tag.
Data());
343 c->CopyVizParams(el);
374 Warning(
"REveElement::CopyVizParamsFromDB",
"VizModel has not been set.");
394 TString intro =
" TAG='" + tag +
"', CLASS='" + cls +
"'";
395 out <<
" //" << intro <<
"\n";
397 out << t << cls <<
"* " << var <<
" = new " << cls <<
";\n";
401 out << t <<
"REX::gEve->InsertVizDBEntry(\"" << tag <<
"\", "<< var <<
");\n";
416 out << t <<
"SetElementName(\"" <<
fName <<
"\");\n";
417 out << t <<
"SetElementTitle(\"" <<
fTitle <<
"\");\n";
465 Error(
"VizDB_UpdateModel",
"update from vizdb -> elements not implemented.");
472 Warning(
"VizDB_UpdateModel",
"VizModel has not been set.");
488 Error(
"VizDB_Insert",
"Creation of replica failed.");
505 assert(au !=
nullptr);
517 assert(au !=
nullptr);
536 Info(
"REveElement::CheckReferenceCount",
"(called from %s) auto-destructing '%s' on zero reference count.",
730 if (t > 100) t = 100;
743 if (alpha < 0) alpha = 0;
744 if (alpha > 1) alpha = 1;
846 if (!el)
throw eh +
"called with nullptr argument.";
848 if (el->
fElementId)
throw eh +
"element already has an id.";
850 if (el->
fMother)
throw eh +
"element already has a Mother.";
877 static const REveException eh(
"REveElement::RemoveElement ");
879 if (!el)
throw eh +
"called with nullptr argument.";
880 if (el->
fMother !=
this)
throw eh +
"this element is not mother of el.";
924 c->fScene->SceneElementRemoved(
c->fElementId);
925 c->fMother =
nullptr;
928 c->CheckReferenceCount();
975 auto pmgr = pp->GetManager();
976 Float_t cd = pmgr->GetCurrentDepth();
977 if (same_depth) pmgr->SetCurrentDepth(pp->GetDepth());
979 pmgr->SubImportElements(el, pp->GetProjectedAsElement());
981 if (same_depth) pmgr->SetCurrentDepth(cd);
1034 if (
name.CompareTo(
c->GetCName()) == 0)
1036 if (!cls ||
c->IsA()->InheritsFrom(cls))
1053 if (regexp.
MatchB(
c->GetName()))
1055 if (!cls ||
c->IsA()->InheritsFrom(cls))
1074 if (
name.CompareTo(
c->GetCName()) == 0)
1076 if (!cls ||
c->IsA()->InheritsFrom(cls))
1078 matches.push_back(
c);
1098 if (regexp.
MatchB(
c->GetCName()))
1100 if (!cls ||
c->IsA()->InheritsFrom(cls))
1102 matches.push_back(
c);
1133 c->SetRnrSelfChildren(rnr_self, rnr_children);
1146 c->SetRnrSelfChildren(rnr_self, rnr_children);
1162 c->AnnihilateRecursively();
1228 throw eh +
TString::Format(
"element '%s' (%s*) %p is protected against destruction.",
1247 ::Warning(
"REveElement::DestroyOrWarn",
"Error while destroy element %p : %s",
this, exc.
what());
1259 if (
c->fDenyDestroy <= 0)
1265 ::Warning(
"REveElement::DestroyElements",
"element destruction failed: '%s'.", exc.
what());
1272 ::Info(
"REveElement::DestroyElements",
"element '%s' is protected against destruction, removing locally.",
c->GetCName());
1335 c->SetPickableRecursively(p);
1449 static const std::string true_str (
"kTRUE");
1450 static const std::string false_str(
"kFALSE");
1452 return b ? true_str : false_str;
1479 if (rnr_offset >= 0) {
1485 rd[
"rnr_offset"] = rnr_offset;
1492 j[
"render_data"] = rd;
static void update(gsl_integration_workspace *workspace, double a1, double b1, double area1, double error1, double a2, double b2, double area2, double error2)
void Info(const char *location, const char *msgfmt,...)
void Error(const char *location, const char *msgfmt,...)
void Warning(const char *location, const char *msgfmt,...)
R__EXTERN TEveManager * gEve
char * Form(const char *fmt,...)
virtual REveElement * CloneElement() const
Clone the element via copy constructor.
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.
virtual void DestroyOrWarn()
Destroy this element. Prints a warning if deny-destroy is in force.
virtual void FillImpliedSelectedSet(Set_t &impSelSet)
Populate set impSelSet with derived / dependant elements.
void SetNameTitle(const std::string &name, const std::string &title)
Set name and title of an element.
std::string GetName() const
virtual void RemoveAunt(REveAunt *au)
Remove el from the list of aunts.
TString fVizTag
Element used as model from VizDB.
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.
virtual void Destroy()
Destroy this element.
virtual void PropagateVizParamsToChildren(REveElement *el=nullptr)
Propagate visualization parameters from element el (defaulting to this) to all children.
REveElement * LastChild() const
Returns the last child element or 0 if the list is empty.
REveElement * GetSelectionMaster()
Returns the master element - that is:
Bool_t fCanEditMainTransparency
virtual void RemoveElementsLocal()
Perform additional local removal of all elements.
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 SetMainTransparency(Char_t t)
Set main-transparency.
virtual Int_t WriteCoreJson(nlohmann::json &cj, Int_t rnr_offset)
Write core json.
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.
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...
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.
void DisableListElements(Bool_t rnr_self=kFALSE, Bool_t rnr_children=kFALSE)
Disable rendering of children and their list contents.
virtual Bool_t GetRnrSelf() const
virtual void ExportToCINT(const char *var_name)
Export render-element to CINT with variable name var_name.
virtual void DestroyMainTrans()
Destroy the main transformation matrix, it will always be taken as identity.
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.
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...
virtual void RemoveElementsInternal()
Remove all elements.
virtual void InitMainTrans(Bool_t can_edit=kTRUE)
Initialize the main transformation to identity matrix.
Bool_t fDestroyOnZeroRefCnt
Deny-destroy count.
@ kCSCBTakeMotherAsMaster
std::unique_ptr< REveRenderData > fRenderData
Externally assigned and controlled user data.
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 EnableListElements(Bool_t rnr_self=kTRUE, Bool_t rnr_children=kTRUE)
Enable rendering of children and their list contents.
Bool_t HasChildren() const
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
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.
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 void AddStamp(UChar_t bits)
Add (bitwise or) given stamps to fChangeBits.
void assign_scene_recursively(REveScene *s)
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 assign_element_id_recurisvely()
REveElement * fSelectionMaster
virtual Bool_t SetRnrSelfChildren(Bool_t rnr_self, Bool_t rnr_children)
Set state for rendering of this element and its children.
void StampColorSelection()
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.
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
virtual void CopyVizParams(const REveElement *el)
Copy visualization parameters from element el.
virtual void PreDeleteElement()
Vertex / normal / triangle index information for rendering.
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 SetVizModel(REveElement *model)
Set visualization-parameter model element.
std::set< REveElement * > Set_t
ElementId_t GetElementId() const
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 SingleRnrState() const
virtual void SetMainColor(Color_t color)
Set main color of the element.
virtual ~REveElement()
Destructor.
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 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.
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.
ElementId_t get_scene_id() const
virtual void PropagateVizParamsToProjecteds()
Propagate visualization parameters to dependent elements.
virtual void BuildRenderData()
Write transformation Matrix to render data.
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' ...
REveException Exception-type thrown by Eve classes.
const char * what() const noexcept override
virtual Bool_t HasProjecteds() const
virtual void AddProjectedsToSet(std::set< REveElement * > &set)
Add the projected elements to the set, dyn-casting them to REveElement.
virtual void PropagateVizParams(REveElement *el=nullptr)
Set visualization parameters of projecteds.
virtual void PropagateMainColor(Color_t color, Color_t old_color)
Set main color of projecteds if their color is the same as old_color.
virtual void AnnihilateProjecteds()
Optimized destroy of projected elements with condition there is only one parent for projected element...
virtual void ClearProjectedList()
ProjList_t & RefProjecteds()
virtual void PropagateRenderState(Bool_t rnr_self, Bool_t rnr_children)
Set render state of projecteds.
virtual void PropagateMainTransparency(Char_t t, Char_t old_t)
Set main transparency of projecteds if their transparency is the same as the old one.
REveProjectable * GetProjectable() const
REveProjectionManager Manager class for steering of projections and managing projected objects.
Float_t GetCurrentDepth() const
void SetCurrentDepth(Float_t d)
virtual Int_t SubImportChildren(REveElement *el, REveElement *proj_parent)
Recursively import children elements of el and apply projection to the newly imported objects.
Bool_t IsAcceptingChanges() const
void SceneElementRemoved(ElementId_t id)
void SceneElementChanged(REveElement *element)
void SetFrom(Double_t *carr)
TClass instances represent classes, structs and namespaces in the ROOT type system.
void * New(ENewType defConstructor=kClassNew, Bool_t quiet=kFALSE) const
Return a pointer to a newly allocated object of this class.
Bool_t InheritsFrom(const char *cl) const
Return kTRUE if this class inherits from a class with name "classname".
static TClass * GetClass(const char *name, Bool_t load=kTRUE, Bool_t silent=kFALSE)
Static method returning pointer to TClass of the specified class name.
static Int_t GetColor(const char *hexcolor)
Static method returning color number for color specified by hex color string of form: "#rrggbb",...
void PreDeleteElement(TEveElement *element)
Called from TEveElement prior to its destruction so the framework components (like object editor) can...
Bool_t InsertVizDBEntry(const TString &tag, TEveElement *model, Bool_t replace, Bool_t update)
Insert a new visualization-parameter database entry.
TEveElement * FindVizDBEntry(const TString &tag)
Find a visualization-parameter database entry corresponding to tag.
void Redraw3D(Bool_t resetCameras=kFALSE, Bool_t dropLogicals=kFALSE)
Geometrical transformation package.
virtual const char * GetName() const
Returns name of object.
Bool_t MatchB(const TString &s, const TString &mods="", Int_t start=0, Int_t nMaxMatch=10)
const char * Data() const
static TString Format(const char *fmt,...)
Static method which formats a string using a printf style format descriptor and return a TString.
static constexpr double s
#define dest(otri, vertexptr)