// @(#)root/graf:$Id$ // Author: Rene Brun 16/10/95 /************************************************************************* * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers. * * All rights reserved. * * * * For the licensing terms see $ROOTSYS/LICENSE. * * For the list of contributors see $ROOTSYS/README/CREDITS. * *************************************************************************/ #ifndef ROOT_TEllipse #define ROOT_TEllipse #include "TObject.h" #include "TAttLine.h" #include "TAttFill.h" #include "TAttBBox2D.h" class TPoint; class TEllipse : public TObject, public TAttLine, public TAttFill, public TAttBBox2D { protected: Double_t fX1; ///< X coordinate of centre Double_t fY1; ///< Y coordinate of centre Double_t fR1; ///< first radius Double_t fR2; ///< second radius Double_t fPhimin; ///< Minimum angle (degrees) Double_t fPhimax; ///< Maximum angle (degrees) Double_t fTheta; ///< Rotation angle (degrees) public: // TEllipse status bits enum { kNoEdges = BIT(9) // don't draw lines connecting center to edges }; TEllipse(); TEllipse(Double_t x1, Double_t y1,Double_t r1,Double_t r2=0,Double_t phimin=0, Double_t phimax=360,Double_t theta=0); TEllipse(const TEllipse &ellipse); ~TEllipse() override; void Copy(TObject &ellipse) const override; Int_t DistancetoPrimitive(Int_t px, Int_t py) override; void Draw(Option_t *option="") override; virtual TEllipse *DrawEllipse(Double_t x1, Double_t y1, Double_t r1,Double_t r2,Double_t phimin, Double_t phimax,Double_t theta,Option_t *option=""); void ExecuteEvent(Int_t event, Int_t px, Int_t py) override; Double_t GetX1() const {return fX1;} Double_t GetY1() const {return fY1;} Double_t GetR1() const {return fR1;} Double_t GetR2() const {return fR2;} Double_t GetPhimin() const {return fPhimin;} Double_t GetPhimax() const {return fPhimax;} Double_t GetTheta() const {return fTheta;} Bool_t GetNoEdges() const; void ls(Option_t *option="") const override; void Paint(Option_t *option="") override; virtual void PaintEllipse(Double_t x1, Double_t y1, Double_t r1,Double_t r2,Double_t phimin, Double_t phimax,Double_t theta,Option_t *option=""); void Print(Option_t *option="") const override; void SavePrimitive(std::ostream &out, Option_t *option = "") override; virtual void SetNoEdges(Bool_t noEdges=kTRUE); // *TOGGLE* *GETTER=GetNoEdges virtual void SetPhimin(Double_t phi=0) {fPhimin=phi;} // *MENU* virtual void SetPhimax(Double_t phi=360) {fPhimax=phi;} // *MENU* virtual void SetR1(Double_t r1) {fR1=r1;} // *MENU* virtual void SetR2(Double_t r2) {fR2=r2;} // *MENU* virtual void SetTheta(Double_t theta=0) {fTheta=theta;} // *MENU* virtual void SetX1(Double_t x1) {fX1=x1;} // *MENU* virtual void SetY1(Double_t y1) {fY1=y1;} // *MENU* Rectangle_t GetBBox() override; TPoint GetBBoxCenter() override; void SetBBoxCenter(const TPoint &p) override; void SetBBoxCenterX(const Int_t x) override; void SetBBoxCenterY(const Int_t y) override; void SetBBoxX1(const Int_t x) override; void SetBBoxX2(const Int_t x) override; void SetBBoxY1(const Int_t y) override; void SetBBoxY2(const Int_t y) override; ClassDefOverride(TEllipse,3) //An ellipse }; #endif