150 if (dx == 0 || r1 == 0 || r2 == 0)
return 9999;
158 if (distr > distp)
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);
597 out<<
"ellipse = new TEllipse("<<
fX1<<
","<<
fY1<<
","<<
fR1<<
","<<
fR2
603 if (
GetNoEdges()) out<<
" ellipse->SetNoEdges();"<<std::endl;
605 out<<
" ellipse->Draw();"<<std::endl;
630 void 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);