33#include <nlohmann/json.hpp> 
   50REveElement::REveElement(
const std::string& 
name, 
const std::string& title) :
 
 
   72   fChildClass          (
e.fChildClass),
 
   74   fDestroyOnZeroRefCnt (
e.fDestroyOnZeroRefCnt),
 
   75   fRnrSelf             (
e.fRnrSelf),
 
   76   fRnrChildren         (
e.fRnrChildren),
 
   77   fCanEditMainColor    (
e.fCanEditMainColor),
 
   78   fCanEditMainTransparency(
e.fCanEditMainTransparency),
 
   79   fCanEditMainTrans    (
e.fCanEditMainTrans),
 
   80   fMainTransparency    (
e.fMainTransparency),
 
   81   fPickable            (
e.fPickable),
 
   89      fMainTrans = std::make_unique<REveTrans>(*
e.fMainTrans.get());
 
 
  115         au->RemoveNieceInternal(
this);
 
 
  136      c->assign_element_id_recurisvely();
 
 
 
  164      c->assign_scene_recursively(s);
 
 
  213      dest->AddElement(
c->CloneElementRecurse(level));
 
 
  304   if ((model = 
REX::gEve->FindVizDBEntry(tag)) != 
nullptr)
 
  319   Warning(
"REveElement::ApplyVizTag", 
"entry for tag '%s' not found in VizDB.", tag.
Data());
 
 
  337      pable->PropagateVizParams();
 
 
  354      c->CopyVizParams(
el);
 
 
  385      Warning(
"REveElement::CopyVizParamsFromDB", 
"VizModel has not been set.");
 
 
  406   out << 
"   //" << 
intro << 
"\n";
 
  408   out << t << 
cls << 
"* " << var <<
" = new " << 
cls << 
";\n";
 
  412   out << t << 
"REX::gEve->InsertVizDBEntry(\"" << tag << 
"\", "<< var <<
");\n";
 
 
  427   out << t << 
"SetElementName(\""  << 
fName  << 
"\");\n";
 
  428   out << t << 
"SetElementTitle(\"" << 
fTitle << 
"\");\n";
 
 
  474         Error(
"VizDB_UpdateModel", 
"update from vizdb -> elements not implemented.");
 
  480      Warning(
"VizDB_UpdateModel", 
"VizModel has not been set.");
 
 
  496      Error(
"VizDB_Insert", 
"Creation of replica failed.");
 
  499   el->CopyVizParams(
this);
 
 
  542         Info(
"REveElement::CheckReferenceCount", 
"(called from %s) auto-destructing '%s' on zero reference count.",
 
 
  736   if (t > 100) t = 100;
 
 
  749   if (alpha < 0) alpha = 0;
 
  750   if (alpha > 1) alpha = 1;
 
 
  852   if (!
el)                  
throw eh + 
"called with nullptr argument.";
 
  854   if (
el->fElementId)       
throw eh + 
"element already has an id.";
 
  856   if (
el->fMother)          
throw eh + 
"element already has a Mother.";
 
 
  885   if (!
el)                 
throw eh + 
"called with nullptr argument.";
 
  886   if (
el->fMother != 
this) 
throw eh + 
"this element is not mother of el.";
 
  891   el->fMother = 
nullptr;
 
  892   el->fScene  = 
nullptr;
 
  894   el->CheckReferenceCount();
 
 
  930      c->fScene->SceneElementRemoved(
c->fElementId);
 
  931      c->fMother = 
nullptr;
 
  934      c->CheckReferenceCount();
 
 
  979      for (
auto &pp: 
pable->RefProjecteds())
 
  981         auto pmgr = pp->GetManager();
 
  985         pmgr->SubImportElements(
el, pp->GetProjectedAsElement());
 
 
 1009      for (
auto &pp: 
pable->RefProjecteds())
 
 1015         pmgr->SubImportChildren(
this, pp->GetProjectedAsElement());
 
 
 1040      if (
name.CompareTo(
c->GetCName()) == 0)
 
 1042         if (!
cls || 
c->IsA()->InheritsFrom(
cls))
 
 
 1059      if (regexp.
MatchB(
c->GetName()))
 
 1061         if (!
cls || 
c->IsA()->InheritsFrom(
cls))
 
 
 1080      if (
name.CompareTo(
c->GetCName()) == 0)
 
 1082         if (!
cls || 
c->IsA()->InheritsFrom(
cls))
 
 1084            matches.push_back(
c);
 
 
 1104      if (regexp.
MatchB(
c->GetCName()))
 
 1106         if (!
cls || 
c->IsA()->InheritsFrom(
cls))
 
 1108            matches.push_back(
c);
 
 
 1163      pable->ClearProjectedList();
 
 1168      c->AnnihilateRecursively();
 
 
 1194      pable->AnnihilateProjecteds();
 
 
 1233      throw eh + 
TString::Format(
"element '%s' (%s*) %p is protected against destruction.",
 
 
 1251      ::Warning(
"REveElement::DestroyOrWarn", 
"Error while destroy element %p : %s", 
this, 
exc.what());
 
 
 1263      if (
c->fDenyDestroy <= 0)
 
 1269            ::Warning(
"REveElement::DestroyElements", 
"element destruction failed: '%s'.", 
exc.what());
 
 1276           ::Info(
"REveElement::DestroyElements", 
"element '%s' is protected against destruction, removing locally.", 
c->GetCName());
 
 
 1337      c->SetPickableRecursively(
p);
 
 
 
 1451   static const std::string 
true_str (
"kTRUE");
 
 1452   static const std::string 
false_str(
"kFALSE");
 
 
 1485         nlohmann::json 
rd = {};
 
 1494         j[
"render_data"] = 
rd;
 
 
 
ULong_t Pixel_t
Pixel value.
 
virtual RooAbsTestStatistic * create(const char *name, const char *title, RooAbsReal &real, RooAbsData &data, const RooArgSet &projDeps, Configuration const &cfg)=0
 
static void update(gsl_integration_workspace *workspace, double a1, double b1, double area1, double error1, double a2, double b2, double area2, double error2)
 
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
 
void Info(const char *location, const char *msgfmt,...)
Use this function for informational messages.
 
void Error(const char *location, const char *msgfmt,...)
Use this function in case an error occurred.
 
void Warning(const char *location, const char *msgfmt,...)
Use this function in warning situations.
 
winID h TVirtualViewer3D TVirtualGLPainter p
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t dest
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void pixel
 
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 r
 
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 cname
 
char * Form(const char *fmt,...)
Formats a string in a circular formatting buffer.
 
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.
 
const std::string & GetName() const
 
void SetNameTitle(const std::string &name, const std::string &title)
Set name and title of an element.
 
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.
 
virtual 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 std::string GetHighlightTooltip(const std::set< int > &) const
 
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 void FillImpliedSelectedSet(Set_t &impSelSet, const std::set< int > &)
Populate set impSelSet with derived / dependant elements.
 
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.
 
void PreDeleteElement(REveElement *element)
Called from REveElement prior to its destruction so the framework components (like object editor) can...
 
void AssignElementId(REveElement *element)
Assign a unique ElementId to given element.
 
REveElement * FindVizDBEntry(const TString &tag)
Find a visualization-parameter database entry corresponding to tag.
 
Bool_t InsertVizDBEntry(const TString &tag, REveElement *model, Bool_t replace, Bool_t update)
Insert a new visualization-parameter database entry.
 
REveProjectionManager Manager class for steering of projections and managing projected objects.
 
Bool_t IsAcceptingChanges() const
 
void SceneElementRemoved(ElementId_t id)
 
void SceneElementChanged(REveElement *element)
 
const_iterator begin() const
 
TClass instances represent classes, structs and namespaces in the ROOT type system.
 
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",...
 
Geometrical transformation package.
 
const char * GetName() const override
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.
 
R__EXTERN REveManager * gEve