150   if (dx == 0 || r1 == 0 || r2 == 0) 
return 9999;
 
  158      if (distr > distp) dist = 0;
 
  160      if (
TMath::Abs(distr-distp)/(r1+r2) < 0.01) dist = 0;
 
  206   Double_t angle,dx,dy,dphi,ct,st,fTy,fBy,fLx,fRx;
 
  207   static Int_t px1,py1,npe,r1,r2,sav1,sav2;
 
  208   const Int_t kMinSize = 25;
 
  210   static Bool_t pTop, pL, pR, pBot, pINSIDE;
 
  211   static Int_t pTx,pTy,pLx,pLy,pRx,pRy,pBx,pBy;
 
  213   static Int_t pxold, pyold;
 
  214   static Int_t sig,impair;
 
  216   static Double_t oldX1, oldY1, oldR1, oldR2;
 
  220   if (!
gPad->IsEditable()) 
return;
 
  237            x[i]  = 
gPad->XtoAbsPixel(
fX1 + dx*ct - dy*st);
 
  238            y[i]  = 
gPad->YtoAbsPixel(
fY1 + dx*st + dy*ct);
 
  265         gVirtualX->DrawLine(pRx+4, py1+4, pRx-4, py1+4);
 
  266         gVirtualX->DrawLine(pRx-4, py1+4, pRx-4, py1-4);
 
  267         gVirtualX->DrawLine(pRx-4, py1-4, pRx+4, py1-4);
 
  268         gVirtualX->DrawLine(pRx+4, py1-4, pRx+4, py1+4);
 
  269         gVirtualX->DrawLine(pLx+4, py1+4, pLx-4, py1+4);
 
  270         gVirtualX->DrawLine(pLx-4, py1+4, pLx-4, py1-4);
 
  271         gVirtualX->DrawLine(pLx-4, py1-4, pLx+4, py1-4);
 
  272         gVirtualX->DrawLine(pLx+4, py1-4, pLx+4, py1+4);
 
  273         gVirtualX->DrawLine(px1+4, pBy+4, px1-4, pBy+4);
 
  274         gVirtualX->DrawLine(px1-4, pBy+4, px1-4, pBy-4);
 
  275         gVirtualX->DrawLine(px1-4, pBy-4, px1+4, pBy-4);
 
  276         gVirtualX->DrawLine(px1+4, pBy-4, px1+4, pBy+4);
 
  277         gVirtualX->DrawLine(px1+4, pTy+4, px1-4, pTy+4);
 
  278         gVirtualX->DrawLine(px1-4, pTy+4, px1-4, pTy-4);
 
  279         gVirtualX->DrawLine(px1-4, pTy-4, px1+4, pTy-4);
 
  280         gVirtualX->DrawLine(px1+4, pTy-4, px1+4, pTy+4);
 
  283         sdx = this->
GetX1()-
gPad->AbsPixeltoX(px);
 
  284         sdy = this->
GetY1()-
gPad->AbsPixeltoY(py);
 
  297      pTop = pL = pR = pBot = pINSIDE = 
kFALSE;
 
  322      pxold = px;  pyold = py;
 
  330         gVirtualX->DrawLine(pRx+4, py1+4, pRx-4, py1+4);
 
  331         gVirtualX->DrawLine(pRx-4, py1+4, pRx-4, py1-4);
 
  332         gVirtualX->DrawLine(pRx-4, py1-4, pRx+4, py1-4);
 
  333         gVirtualX->DrawLine(pRx+4, py1-4, pRx+4, py1+4);
 
  334         gVirtualX->DrawLine(pLx+4, py1+4, pLx-4, py1+4);
 
  335         gVirtualX->DrawLine(pLx-4, py1+4, pLx-4, py1-4);
 
  336         gVirtualX->DrawLine(pLx-4, py1-4, pLx+4, py1-4);
 
  337         gVirtualX->DrawLine(pLx+4, py1-4, pLx+4, py1+4);
 
  338         gVirtualX->DrawLine(px1+4, pBy+4, px1-4, pBy+4);
 
  339         gVirtualX->DrawLine(px1-4, pBy+4, px1-4, pBy-4);
 
  340         gVirtualX->DrawLine(px1-4, pBy-4, px1+4, pBy-4);
 
  341         gVirtualX->DrawLine(px1+4, pBy-4, px1+4, pBy+4);
 
  342         gVirtualX->DrawLine(px1+4, pTy+4, px1-4, pTy+4);
 
  343         gVirtualX->DrawLine(px1-4, pTy+4, px1-4, pTy-4);
 
  344         gVirtualX->DrawLine(px1-4, pTy-4, px1+4, pTy-4);
 
  345         gVirtualX->DrawLine(px1+4, pTy-4, px1+4, pTy+4);
 
  346         for (i=0;i<npe;i++) 
gVirtualX->DrawLine(
x[i], 
y[i], 
x[i+1], 
y[i+1]);
 
  351         py1 += (py - pyold)/2;
 
  352         r2 -= (py - pyold)/2;
 
  354         if (py-pyold>0) sig=+1;
 
  356         if (impair==2) { impair = 0; py1 += sig; r2 -= sig;}
 
  357         if (py1 > pBy-kMinSize) {py1 = sav1; r2 = sav2; py = pyold;}
 
  362         py1 += (py - pyold)/2;
 
  363         r2 += (py - pyold)/2;
 
  365         if (py-pyold>0) sig=+1;
 
  367         if (impair==2) { impair = 0; py1 += sig; r2 += sig;}
 
  368         if (py1 < pTy+kMinSize) {py1 = sav1; r2 = sav2; py = pyold;}
 
  373         px1 += (px - pxold)/2;
 
  374         r1 -= (px - pxold)/2;
 
  376         if (px-pxold>0) sig=+1;
 
  378         if (impair==2) { impair = 0; px1 += sig; r1 -= sig;}
 
  379         if (px1 > pRx-kMinSize) {px1 = sav1; r1 = sav2; px = pxold;}
 
  384         px1 += (px - pxold)/2;
 
  385         r1 += (px - pxold)/2;
 
  387         if (px-pxold>0) sig=+1;
 
  389         if (impair==2) { impair = 0; px1 += sig; r1 += sig;}
 
  390         if (px1 < pLx+kMinSize) {px1 = sav1; r1 = sav2; px = pxold;}
 
  392      if (pTop || pBot || pL || pR) {
 
  401               x[i]  = px1 + 
Int_t(dx*ct - dy*st);
 
  402               y[i]  = py1 + 
Int_t(dx*st + dy*ct);
 
  426            if (pTop) 
gPad->ShowGuidelines(
this, event, 
't', 
true);
 
  427            if (pBot) 
gPad->ShowGuidelines(
this, event, 
'b', 
true);
 
  428            if (pL) 
gPad->ShowGuidelines(
this, event, 
'l', 
true);
 
  429            if (pR) 
gPad->ShowGuidelines(
this, event, 
'r', 
true);
 
  436            dpx  = px-pxold;  dpy = py-pyold;
 
  437            px1 += dpx; py1 += dpy;
 
  438            for (i=0;i<=npe;i++) { 
x[i] += dpx; 
y[i] += dpy;}
 
  439            for (i=0;i<npe;i++) 
gVirtualX->DrawLine(
x[i], 
y[i], 
x[i+1], 
y[i+1]);
 
  444            gPad->ShowGuidelines(
this, event, 
'i', 
true);
 
  456         gVirtualX->DrawLine(pRx+4, py1+4, pRx-4, py1+4);
 
  457         gVirtualX->DrawLine(pRx-4, py1+4, pRx-4, py1-4);
 
  458         gVirtualX->DrawLine(pRx-4, py1-4, pRx+4, py1-4);
 
  459         gVirtualX->DrawLine(pRx+4, py1-4, pRx+4, py1+4);
 
  460         gVirtualX->DrawLine(pLx+4, py1+4, pLx-4, py1+4);
 
  461         gVirtualX->DrawLine(pLx-4, py1+4, pLx-4, py1-4);
 
  462         gVirtualX->DrawLine(pLx-4, py1-4, pLx+4, py1-4);
 
  463         gVirtualX->DrawLine(pLx+4, py1-4, pLx+4, py1+4);
 
  464         gVirtualX->DrawLine(px1+4, pBy+4, px1-4, pBy+4);
 
  465         gVirtualX->DrawLine(px1-4, pBy+4, px1-4, pBy-4);
 
  466         gVirtualX->DrawLine(px1-4, pBy-4, px1+4, pBy-4);
 
  467         gVirtualX->DrawLine(px1+4, pBy-4, px1+4, pBy+4);
 
  468         gVirtualX->DrawLine(px1+4, pTy+4, px1-4, pTy+4);
 
  469         gVirtualX->DrawLine(px1-4, pTy+4, px1-4, pTy-4);
 
  470         gVirtualX->DrawLine(px1-4, pTy-4, px1+4, pTy-4);
 
  471         gVirtualX->DrawLine(px1+4, pTy-4, px1+4, pTy+4);
 
  478      if (
gROOT->IsEscaped()) {
 
  492         gPad->ShowGuidelines(
this, event);
 
  496         fBy = 
gPad->AbsPixeltoY(py1+r2);
 
  497         fTy = 
gPad->AbsPixeltoY(py1-r2);
 
  498         fLx = 
gPad->AbsPixeltoX(px1+r1);
 
  499         fRx = 
gPad->AbsPixeltoX(px1-r1);
 
  532   const Int_t np = 200;
 
  549   for (
Int_t i=0;i<=
n;i++) {
 
  553      x[i]  = 
gPad->XtoPad(
x1 + dx*ct - dy*st);
 
  554      y[i]  = 
gPad->YtoPad(y1 + dx*st + dy*ct);
 
  558   if (phi2-phi1 >= 360 ) {
 
  563      y[
n+1] = 
gPad->YtoPad(y1);
 
  569         else                                           gPad->PaintPolyLine(
n+3,
x,
y);
 
  579   printf(
"Ellipse:  X1=%f Y1=%f R1=%f R2=%f",
fX1,
fY1,
fR1,
fR2);
 
  592   if (
gROOT->ClassSaved(TEllipse::Class())) {
 
  597   out<<
"ellipse = new TEllipse("<<
fX1<<
","<<
fY1<<
","<<
fR1<<
","<<
fR2 
  603   if (
GetNoEdges()) out<<
"   ellipse->SetNoEdges();"<<std::endl;
 
  605   out<<
"   ellipse->Draw();"<<std::endl;
 
  630void TEllipse::Streamer(
TBuffer &R__b)
 
  640      TObject::Streamer(R__b);
 
  641      TAttLine::Streamer(R__b);
 
  642      TAttFill::Streamer(R__b);
 
  645      R__b >> y1;     
fY1 = y1;
 
  646      R__b >> r1;     
fR1 = r1;
 
  647      R__b >> r2;     
fR2 = r2;
 
  648      R__b >> phimin; 
fPhimin = phimin;
 
  649      R__b >> phimax; 
fPhimax = phimax;
 
  650      R__b >> theta;  
fTheta  = theta;
 
  666   if (!
gPad) 
return (BBox);
 
  680   if (!
gPad) 
return (p);
 
static const double x2[5]
 
static const double x1[5]
 
Abstract base class for elements drawn in the editor.
 
Fill Area Attributes class.
 
virtual Color_t GetFillColor() const
Return the fill area color.
 
void Copy(TAttFill &attfill) const
Copy this fill attributes to a new TAttFill.
 
virtual Style_t GetFillStyle() const
Return the fill area style.
 
virtual void Modify()
Change current fill area attributes if necessary.
 
virtual void SaveFillAttributes(std::ostream &out, const char *name, Int_t coldef=1, Int_t stydef=1001)
Save fill attributes as C++ statement(s) on output stream out.
 
virtual Color_t GetLineColor() const
Return the line color.
 
virtual Width_t GetLineWidth() const
Return the line width.
 
virtual Style_t GetLineStyle() const
Return the line style.
 
virtual void Modify()
Change current line attributes if necessary.
 
void Copy(TAttLine &attline) const
Copy this line attributes to a new TAttLine.
 
virtual void SaveLineAttributes(std::ostream &out, const char *name, Int_t coldef=1, Int_t stydef=1, Int_t widdef=1)
Save line attributes as C++ statement(s) on output stream out.
 
Buffer base class used for serializing objects.
 
virtual Int_t ReadClassBuffer(const TClass *cl, void *pointer, const TClass *onfile_class=0)=0
 
virtual Version_t ReadVersion(UInt_t *start=0, UInt_t *bcnt=0, const TClass *cl=0)=0
 
virtual Int_t CheckByteCount(UInt_t startpos, UInt_t bcnt, const TClass *clss)=0
 
virtual Int_t WriteClassBuffer(const TClass *cl, void *pointer)=0
 
virtual void SetBBoxX1(const Int_t x)
Set left hand side of BoundingBox to a value (resize in x direction on left)
 
virtual void SetR1(Double_t r1)
 
virtual void ls(Option_t *option="") const
List this ellipse with its attributes.
 
virtual void SetX1(Double_t x1)
 
virtual void SavePrimitive(std::ostream &out, Option_t *option="")
Save primitive as a C++ statement(s) on output stream out.
 
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="")
Draw this ellipse with new coordinates.
 
virtual void SetBBoxY1(const Int_t y)
Set top of BoundingBox to a value (resize in y direction on top)
 
virtual void Draw(Option_t *option="")
Draw this ellipse with its current attributes.
 
Double_t GetTheta() const
 
virtual void SetBBoxCenterY(const Int_t y)
Set Y coordinate of the center of the Ellipse.
 
void Copy(TObject &ellipse) const
Copy this ellipse to ellipse.
 
virtual ~TEllipse()
Ellipse default destructor.
 
Double_t fPhimax
Maximum angle (degrees)
 
virtual Rectangle_t GetBBox()
Return the bounding Box of the Ellipse, currently not taking into account the rotating angle.
 
Double_t fX1
X coordinate of centre.
 
virtual void SetBBoxCenter(const TPoint &p)
Set center of the Ellipse.
 
Bool_t GetNoEdges() const
Return kTRUE if kNoEdges bit is set, kFALSE otherwise.
 
Double_t fY1
Y coordinate of centre.
 
Double_t fTheta
Rotation angle (degrees)
 
virtual void Print(Option_t *option="") const
Dump this ellipse with its attributes.
 
virtual void SetY1(Double_t y1)
 
virtual TPoint GetBBoxCenter()
Return the center of the Ellipse as TPoint in pixels.
 
Double_t fR2
second radius
 
virtual Int_t DistancetoPrimitive(Int_t px, Int_t py)
Compute distance from point px,py to an ellipse.
 
virtual void SetBBoxCenterX(const Int_t x)
Set X coordinate of the center of the Ellipse.
 
virtual void SetNoEdges(Bool_t noEdges=kTRUE)
if noEdges = kTRUE the lines connecting the center to the edges will not be drawn.
 
virtual void 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="")
Draw this ellipse with new coordinates.
 
virtual void SetBBoxY2(const Int_t y)
Set bottom of BoundingBox to a value (resize in y direction on bottom)
 
Double_t fPhimin
Minimum angle (degrees)
 
virtual void ExecuteEvent(Int_t event, Int_t px, Int_t py)
Execute action corresponding to one event.
 
TEllipse()
Ellipse default constructor.
 
virtual void Paint(Option_t *option="")
Paint this ellipse with its current attributes.
 
virtual void SetBBoxX2(const Int_t x)
Set right hand side of BoundingBox to a value (resize in x direction on right)
 
virtual void SetR2(Double_t r2)
 
Mother of all ROOT objects.
 
virtual const char * GetName() const
Returns name of object.
 
R__ALWAYS_INLINE Bool_t TestBit(UInt_t f) const
 
virtual void AppendPad(Option_t *option="")
Append graphics object to current pad.
 
void SetBit(UInt_t f, Bool_t set)
Set or unset the user status bits as specified in f.
 
virtual void Copy(TObject &object) const
Copy this to obj.
 
@ kCanDelete
if object in a list can be deleted
 
static void IndentLevel()
Functions used by ls() to indent an object hierarchy.
 
void ToLower()
Change string to lower-case.
 
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
 
Short_t Max(Short_t a, Short_t b)
 
Double_t Sqrt(Double_t x)
 
Short_t Min(Short_t a, Short_t b)
 
Rectangle structure (maps to the X11 XRectangle structure)