12#ifndef ROOT7_REveElement_hxx
13#define ROOT7_REveElement_hxx
35 template<
typename T,
typename SFINAE>
38 template<
template<
typename U,
typename V,
typename... Args>
class ObjectType,
39 template<typename U, typename... Args> class ArrayType,
42 class NumberIntegerType,
43 class NumberUnsignedType,
44 class NumberFloatType,
45 template<typename U> class AllocatorType,
46 template<typename
T, typename SFINAE> class JSONSerializer>
50 bool, std::int64_t, std::uint64_t, double,
55namespace Experimental {
77 typedef std::list<REveElement*>
List_t;
79 typedef std::set<REveElement*>
Set_t;
132 REveElement(
const std::string &
name =
"",
const std::string &title =
"");
150 void SetTitle(
const std::string &title);
432 for (
auto &
n :
fNieces)
n->RemoveAunt(
this);
457 for (
auto &
n :
fNieces)
n->RemoveAunt(
this);
static void update(gsl_integration_workspace *workspace, double a1, double b1, double area1, double error1, double a2, double b2, double area2, double error2)
void RemoveNieces() override
bool HasNiece(REveElement *el) const override
void RemoveNieceInternal(REveElement *el) override
REveElement::List_t fNieces
void AddNieceInternal(REveElement *el) override
bool HasNieces() const override
virtual ~REveAuntAsList()
virtual void RemoveNieceInternal(REveElement *el)=0
virtual bool HasNieces() const =0
virtual bool AcceptNiece(REveElement *)
virtual void RemoveNieces()=0
virtual void AddNieceInternal(REveElement *el)=0
virtual bool HasNiece(REveElement *el) const =0
virtual void AddNiece(REveElement *el)
virtual void RemoveNiece(REveElement *el)
virtual REveElement * CloneElement() const
Clone the element via copy constructor.
virtual Bool_t GetRnrState() const
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.
const AuntList_t & RefAunts() const
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.
virtual Bool_t HasMainTrans() const
void SetMainColorPtr(Color_t *colptr)
void CSCApplyMainTransparencyToMatchingChildren()
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.
const char * GetCTitle() const
void CSCApplyMainColorToMatchingChildren()
REveCompound * GetCompound()
virtual void Destroy()
Destroy this element.
virtual void PropagateVizParamsToChildren(REveElement *el=nullptr)
Propagate visualization parameters from element el (defaulting to this) to all children.
const List_t & RefChildren() const
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.
void SetCompound(REveCompound *c)
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 Bool_t GetRnrAnything() const
virtual Int_t WriteCoreJson(nlohmann::json &cj, Int_t rnr_offset)
Write core json.
virtual Bool_t CanEditMainTransparency() const
virtual Bool_t HasMainColor() const
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 CSCTakeMotherAsMaster()
void VizDB_Apply(const std::string &tag)
Set visual parameters for this object for given tag.
void SetPickable(Bool_t p)
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...
void * GetUserData() const
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.
std::string GetTitle() const
void DisableListElements(Bool_t rnr_self=kFALSE, Bool_t rnr_children=kFALSE)
Disable rendering of children and their list contents.
const TString & GetVizTag() const
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.
std::list< REveAunt * > AuntList_t
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...
void SetEditMainColor(Bool_t x)
REveElement & operator=(const REveElement &)
virtual void RemoveElementsInternal()
Remove all elements.
void IncImpliedSelected()
virtual void InitMainTrans(Bool_t can_edit=kTRUE)
Initialize the main transformation to identity matrix.
Bool_t fDestroyOnZeroRefCnt
Deny-destroy count.
ECompoundSelectionColorBits
@ kCSCBApplyMainColorToMatchingChildren
@ kCSCBTakeMotherAsMaster
@ kCSCBApplyMainColorToAllChildren
@ kCSCBImplySelectAllChildren
@ kCSCBApplyMainTransparencyToAllChildren
@ kCSCBApplyMainTransparencyToMatchingChildren
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
TClass * GetChildClass() const
REveElement * GetMother()
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.
void CSCImplySelectAllChildren()
virtual Bool_t SetRnrState(Bool_t rnr)
Set render state of this element and of its children to the same value.
virtual Bool_t CanEditMainColor() const
virtual void AddStamp(UChar_t bits)
Add (bitwise or) given stamps to fChangeBits.
void assign_scene_recursively(REveScene *s)
void StampObjPropsPreChk()
virtual Bool_t CanEditElement() const
Bool_t TestCSCBits(UChar_t f) const
void SetUserData(void *ud)
ElementId_t get_mother_id() const
Int_t GetDenyDestroy() const
Returns the number of times deny-destroy has been requested on the element.
void SetCSCBits(UChar_t f)
void SetEditMainTransparency(Bool_t x)
void assign_element_id_recurisvely()
void SetSelectionMaster(REveElement *el)
REveElement * fSelectionMaster
UChar_t GetChangeBits() const
virtual Bool_t SetRnrSelfChildren(Bool_t rnr_self, Bool_t rnr_children)
Set state for rendering of this element and its children.
REveElement * GetVizModel() const
void CSCApplyMainTransparencyToAllChildren()
void StampColorSelection()
Color_t * GetMainColorPtr() const
void DecImpliedSelected()
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
Int_t NumChildren() 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
void SetChildClass(TClass *c)
ElementId_t GetElementId() const
Bool_t IsPickable() const
virtual void ClearStamps()
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 CanEditMainTrans() const
virtual Bool_t SingleRnrState() const
virtual void SetMainColor(Color_t color)
Set main color of the element.
void CSCApplyMainColorToAllChildren()
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 std::string GetHighlightTooltip() const
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.
REveRenderData * GetRenderData() const
ElementId_t get_scene_id() const
virtual void PropagateVizParamsToProjecteds()
Propagate visualization parameters to dependent elements.
void ResetCSCBits(UChar_t f)
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' ...
TClass instances represent classes, structs and namespaces in the ROOT type system.
Geometrical transformation package.
static constexpr double s
use temporary solution for forwarding of nlohmann::json after version of 3.1.0 it is included in offi...
#define dest(otri, vertexptr)