54 ::Warning(
"REveProjectionManager::ImportElements",
55 "'%s' has a transformation, which the client applies to its projected vertices again.", el->
GetCName());
70 if (nm == 0 && nr == 0)
75 for (
int i = 12; i < 15; ++i)
76 scale = std::max({scale, std::abs(wm.
Array()[i]), std::abs(wr.
Array()[i])});
90 for (
int i = 0; i < 16; ++i) {
91 if (std::abs(
d.Array()[i] - unit.
Array()[i]) > 1
e-6 * scale) {
92 ::Warning(
"REveProjectionManager::ImportElements",
93 "'%s' places projected elements in a frame other than that of '%s', in which they are "
94 "projected; the client draws them transformed.",
181 static const REveException eH(
"REveProjectionManager::SetProjection ");
223 throw eH +
"projection type not valid.";
230 throw eH +
"switching between 2D and 3D projections not implemented.";
279 n->AuntChanged(
this);
293 static const REveException eh(
"REveProjectionManager::ImportElementsRecurse ");
319 WarnIfTransformed(new_el);
348 WarnIfFrameDiffers(
this, ext_list ? ext_list :
this);
380 WarnIfFrameDiffers(
this, proj_parent);
408 WarnIfFrameDiffers(
this, proj_parent);
413 new_els.push_back(new_el);
416 if (!new_els.empty())
419 for (
auto &nel: new_els)
425 return (
Int_t) new_els.size();
481 const int n = model->ComposeSceneTrans(t);
486 if (
n == 1 && model->PtrMainTrans(
kFALSE))
487 return model->PtrMainTrans(
kFALSE);
516 el->GetBBoxMin().fX <= el->GetBBoxMax().fX) {
520 for (
auto &
c : el->RefChildren())
void Warning(const char *location, const char *msgfmt,...)
Use this function in warning situations.
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 ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t type
char * Form(const char *fmt,...)
Formats a string in a circular formatting buffer.
REveElement::List_t fNieces
bool HasNieces() const override
virtual void AddNiece(REveElement *el)
virtual Bool_t HasMainTrans() const
TClass * IsA() const
Return class for this element Return REveElement class in case dicitonary is not exisiting.
const char * GetCTitle() const
REveCompound * GetCompound()
void SetCompound(REveCompound *c)
virtual REveTrans & RefMainTrans()
Return reference to main transformation.
void SetPickable(Bool_t p)
void BBoxCheckPoint(const REveVector &v)
const char * GetCName() const
virtual void AddElement(REveElement *el)
Add el to the list of children.
virtual Bool_t GetRnrSelf() const
Int_t ComposeSceneTrans(REveTrans &t) const
Compose into t the matrices of this element and of its mothers up to, not including,...
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.
void AssertBBoxExtents(Float_t epsilon=0.005)
Widen every side of the bounding box shorter than epsilon to epsilon, keeping its centre.
void BBoxZero(Float_t epsilon=0, Float_t x=0, Float_t y=0, Float_t z=0)
Set the bounding box to a cube of half-side epsilon at (x, y, z); with the defaults,...
Bool_t HasChildren() const
const REveVector & GetBBoxMax() const
virtual Bool_t SetRnrSelf(Bool_t rnr)
Set render state of this element, i.e.
virtual Bool_t GetRnrChildren() const
void BBoxInit()
Start filling the bounding box with BBoxCheckPoint(): min at +infinity, max at -infinity,...
Bool_t IsPickable() const
EBBoxState AssertBBox()
Compute the bounding box if it is invalid, and return its state.
const REveVector & GetBBoxMin() const
std::list< REveElement * > List_t
REveElement(const std::string &name="", const std::string &title="")
Default constructor.
void SetName(const std::string &name)
Set name of an element.
REveException Exception-type thrown by Eve classes.
virtual TClass * ProjectedClass(const REveProjection *p) const =0
virtual void SetProjection(REveProjectionManager *mng, REveProjectable *model)
Sets projection manager and reference in the projectable object.
virtual void UpdateProjection()=0
virtual void SetDepth(Float_t d)
Set depth coordinate for the element.
REveProjectionManager Manager class for steering of projections and managing projected objects.
REveProjection * fProjections[REveProjection::kPT_End]
void AddDependent(REveElement *el)
Add el as dependent element.
virtual REveElement * ImportElements(REveElement *el, REveElement *ext_list=nullptr)
Recursively import elements and apply projection to the newly imported objects.
virtual void UpdateDependentElements(REveElement *root)
Update dependent elements' bounding boxes, and tell the nieces, such as an REveProjectionAxis,...
void SetProjection(REveProjection::EPType_e type)
Set projection type and distortion.
virtual REveElement * ImportElementsRecurse(REveElement *el, REveElement *parent)
If el is REveProjectable add projected instance else add plain REveElementList to parent.
~REveProjectionManager() override
Destructor.
void ComputeBBox() override
Fill the bounding box (virtual from REveElement) with the union of the boxes of the projected element...
REveProjection * fProjection
virtual REveElement * SubImportElements(REveElement *el, REveElement *proj_parent)
Recursively import elements and apply projection to the newly imported objects.
virtual void UpdateName()
void RemoveDependent(REveElement *el)
Remove el as dependent element.
void BumpDistortion(Int_t steps)
Updates name to have consistent information with projection.
virtual void ProjectChildren()
Project all children recursively, update bounding-box and notify EveManger about the scenes that have...
virtual void ProjectChildrenRecurse(REveElement *el)
Project el (via REveProjected::UpdateProjection()) and recurse through el's children.
const REveTrans * GetModelTrans(REveElement *model, REveTrans &t)
Return the matrix that takes the coordinates of model into the frame of this manager,...
void SetCenter(Float_t x, Float_t y, Float_t z)
Set projection center and rebuild projected scene.
virtual Bool_t ShouldImport(REveElement *el)
Returns true if element el should be imported.
virtual Int_t SubImportChildren(REveElement *el, REveElement *proj_parent)
Recursively import children elements of el and apply projection to the newly imported objects.
virtual void SetCenter(REveVector &v)
virtual Bool_t Is2D() const =0
void SetDistortion(Float_t d)
Set distortion.
const char * GetName() const
Float_t GetDistortion() const
Double_t Invert()
Invert matrix.
void MultRight(const REveTrans &t)
Multiply from right: this = this * t.
void MultLeft(const REveTrans &t)
Multiply from left: this = t * this.
void Set(const Float_t *v)
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 override
Return kTRUE if this class inherits from a class with name "classname".
Namespace for ROOT features in testing.