50 fShadowColor = GetLineColor();
120 ((
TPave&)pave).TPave::Copy(*
this);
148 if (
gPad->GetLogx()) {
152 if (
gPad->GetLogy()) {
196 Int_t pxl, pyl, pxt, pyt;
201 if (px1 < px2) {pxl = px1; pxt = px2;}
202 else {pxl = px2; pxt = px1;}
203 if (py1 < py2) {pyl = py1; pyt = py2;}
204 else {pyl = py2; pyt = py1;}
207 if ( (px >= pxl && px <= pxt) && (py >= pyl && py <= pyt) )
return 0;
217 if (option && strlen(option)) opt = option;
229 TPave *newpave =
new TPave(x1,y1,x2,y2,bordersize,option);
243 if (!
gPad->IsEditable())
return;
312 if (opt.
Length() == 0) opt =
"br";
322 gPad->PaintLine(x1,y1,x2,y1);
323 gPad->PaintLine(x2,y1,x2,y2);
324 gPad->PaintLine(x2,y2,x1,y2);
325 gPad->PaintLine(x1,y2,x1,y1);
335 x[0] = x1 + 1.5*wx; y[0] = y2;
336 x[1] = x[0]; y[1] = y2 + wy;
337 x[2] = x2 + wx; y[2] = y[1];
338 x[3] = x[2]; y[3] = y1 + 1.5*wy;
339 x[4] =
x2; y[4] = y[3];
340 x[5] = x[4]; y[5] = y2;
345 x[0] = x1 - wx; y[0] = y1 + 1.5*wy;
346 x[1] = x[0]; y[1] = y2 + wy;
347 x[2] = x2 - 1.5*wx; y[2] = y[1];
348 x[3] = x[2]; y[3] = y2;
349 x[4] =
x1; y[4] = y[3];
350 x[5] =
x1; y[5] = y[0];
355 x[0] = x1 + 1.5*wx; y[0] = y1;
356 x[1] = x[0]; y[1] = y1 - wy;
357 x[2] = x2 + wx; y[2] = y[1];
358 x[3] = x[2]; y[3] = y2 - 1.5*wy;
359 x[4] =
x2; y[4] = y[3];
360 x[5] = x[4]; y[5] = y1;
365 x[0] = x1 - wx; y[0] = y2 - 1.5*wy;
366 x[1] = x[0]; y[1] = y1 - wy;
367 x[2] = x2 - 1.5*wx; y[2] = y[1];
368 x[3] = x[2]; y[3] = y1;
369 x[4] =
x1; y[4] = y[3];
370 x[5] = x[4]; y[5] = y[0];
373 for (
Int_t i=0;i<6;i++) {
374 if (x[i] <
gPad->GetX1()) x[i] =
gPad->GetX1();
375 if (x[i] >
gPad->GetX2()) x[i] =
gPad->GetX2();
376 if (y[i] <
gPad->GetY1()) y[i] =
gPad->GetY1();
377 if (y[i] >
gPad->GetY2()) y[i] =
gPad->GetY2();
379 x[6] = x[0]; y[6] = y[0];
383 gPad->PaintFillArea(6,x,y);
384 x[0] =
x1; y[0] = y1;
385 x[1] =
x1; y[1] = y2;
386 x[2] =
x2; y[2] = y2;
387 x[3] =
x2; y[3] = y1;
388 x[4] =
x1; y[4] = y1;
389 gPad->PaintPolyLine(5,x,y);
400 const Int_t kNPARC = 10;
402 Double_t px[4*kNPARC+10], py[4*kNPARC+10];
406 if (opt.
Length() == 0) opt =
"br";
411 static Double_t cosa[kNPARC], sina[kNPARC];
415 Double_t dtheta = 0.5*3.141592/(kNPARC+1);
417 for (i=0;i<kNPARC;i++) {
432 if (r > 0.5*TMath::Abs(px2-px1)) r = 0.5*
TMath::Abs(px2-px1);
436 px[0] = px2; py[0] = py1 -
r;
437 px[1] = px2; py[1] = py2 +
r;
439 for (i=0;i<kNPARC;i++) {
440 px[np] = px2 - r + r*cosa[i];
441 py[np] = py2 + r - r*sina[i];
444 px[np] = px2 -
r; py[np] = py2;
445 px[np+1] = px1 +
r; py[np+1] = py2;
447 for (i=kNPARC-1;i>=0;i--) {
448 px[np] = px1 + r - r*cosa[i];
449 py[np] = py2 + r - r*sina[i];
452 px[np] = px1; py[np] = py2 +
r;
453 px[np+1] = px1; py[np+1] = py1 -
r;
455 for (i=0;i<kNPARC;i++) {
456 px[np] = px1 + r - r*cosa[i];
457 py[np] = py1 - r + r*sina[i];
460 px[np] = px1 +
r; py[np] = py1;
461 px[np+1] = px2 -
r; py[np+1] = py1;
463 for (i=kNPARC-1;i>=0;i--) {
464 px[np] = px2 - r + r*cosa[i];
465 py[np] = py1 - r + r*sina[i];
468 px[np] = px[0]; py[np] =py[0];
471 for (i=0;i<=np;i++) {
475 gPad->PaintFillArea(np , x, y);
476 gPad->PaintPolyLine(np+1, x, y);
485 px[0] = px2; py[0] = py1 -
r;
486 px[1] = px2; py[1] = py2 +
r;
488 for (i=0;i<kNPARC;i++) {
489 px[np] = px2 - r + r*cosa[i];
490 py[np] = py2 + r - r*sina[i];
493 px[np] = px2 -
r; py[np] = py2;
494 px[np+1] = px1 +
r; py[np+1] = py2;
495 px[np+2] = px1 +
r; py[np+2] = py2 - wy;
496 px[np+3] = px2 -
r; py[np+3] = py2 - wy;
498 for (i=kNPARC-1;i>=0;i--) {
499 px[np] = px2 - r + r*cosa[i]*(1+wx/
r);
500 py[np] = py2 + r - r*sina[i]*(1+wy/
r);
503 px[np] = px2 + wx; py[np] = py2 +
r;
504 px[np+1] = px2 + wx; py[np+1] = py1 -
r;
505 px[np+2] = px[0]; py[np+2] = py[0];
510 px[0] = px2 -
r; py[0] = py2;
511 px[1] = px1 +
r; py[1] = py2;
513 for (i=kNPARC-1;i>=0;i--) {
514 px[np] = px1 + r - r*cosa[i];
515 py[np] = py2 + r - r*sina[i];
518 px[np] = px1; py[np] = py2 +
r;
519 px[np+1] = px1; py[np+1] = py1 -
r;
520 px[np+2] = px1 - wx; py[np+2] = py1 -
r;
521 px[np+3] = px1 - wx; py[np+3] = py2 +
r;
523 for (i=0;i<kNPARC;i++) {
524 px[np] = px1 + r - r*cosa[i]*(1+wx/
r);
525 py[np] = py2 + r - r*sina[i]*(1+wy/
r);
528 px[np] = px1 +
r; py[np] = py2 - wy;
529 px[np+1] = px2 -
r; py[np+1] = py2 - wy;
530 px[np+2] = px[0]; py[np+2] = y[0];
535 px[0] = px1 +
r; py[0] = py1;
536 px[1] = px2 -
r; py[1] = py1;
538 for (i=kNPARC-1;i>=0;i--) {
539 px[np] = px2 - r + r*cosa[i];
540 py[np] = py1 - r + r*sina[i];
543 px[np] = px2; py[np] = py1 -
r;
544 px[np+1] = px2; py[np+1] = py2 +
r;
545 px[np+2] = px2 + wx; py[np+2] = py2 +
r;
546 px[np+3] = px2 + wx; py[np+3] = py1 -
r;
548 for (i=0;i<kNPARC;i++) {
549 px[np] = px2 - r + r*cosa[i]*(1+wx/
r);
550 py[np] = py1 - r + r*sina[i]*(1+wy/
r);
553 px[np] = px2 -
r; py[np] = py1 + wy;
554 px[np+1] = px[0]; py[np+1] = py[0] + wy;
555 px[np+2] = px[0]; py[np+2] = py[0];
560 px[0] = px1; py[0] = py2 +
r;
561 px[1] = px1; py[1] = py1 -
r;
563 for (i=0;i<kNPARC;i++) {
564 px[np] = px1 + r - r*cosa[i];
565 py[np] = py1 + r - r*sina[i];
568 px[np] = px1 +
r; py[np] = py1;
569 px[np+1] = px2 -
r; py[np+1] = py1;
570 px[np+2] = px2 -
r; py[np+2] = py1 + wy;
571 px[np+3] = px1 +
r; py[np+3] = py1 + wy;
573 for (i=kNPARC-1;i>=0;i--) {
574 px[np] = px1 + r - r*cosa[i]*(1+wx/
r);
575 py[np] = py1 - r + r*sina[i]*(1+wy/
r);
578 px[np] = px1 - wx; py[np] = py1 -
r;
579 px[np+1] = px1 - wx; py[np+1] = py[0];
580 px[np+2] = px[0]; py[np+2] = py[0];
586 for (i=0;i<=np;i++) {
590 gPad->PaintFillArea(np,x,y);
618 out<<
"pave = new TPave("<<
fX1<<
","<<
fY1<<
","<<
fX2<<
","<<
fY2 621 if (strcmp(
GetName(),
"TPave")) {
622 out<<
" pave->SetName("<<quote<<
GetName()<<quote<<
");"<<std::endl;
625 out<<
" pave->SetCornerRadius("<<
fCornerRadius<<
");"<<std::endl;
629 out<<
" pave->Draw();"<<std::endl;
687 void TPave::Streamer(
TBuffer &R__b)
697 TBox::Streamer(R__b);
698 Float_t x1ndc,y1ndc,x2ndc,y2ndc,rad;
699 R__b >> x1ndc;
fX1NDC = x1ndc;
700 R__b >> y1ndc;
fY1NDC = y1ndc;
701 R__b >> x2ndc;
fX2NDC = x2ndc;
702 R__b >> y2ndc;
fY2NDC = y2ndc;
707 fName.Streamer(R__b);
void Copy(TObject &box) const
Copy a Box.
Option_t * GetOption() const
virtual Int_t WriteClassBuffer(const TClass *cl, void *pointer)=0
virtual void SetName(const char *name="")
virtual void Print(Option_t *option="") const
Dump this pave with its attributes.
double clicking on TPave will execute action
virtual void ExecuteEvent(Int_t event, Int_t px, Int_t py)
Execute action corresponding to one event.
R__EXTERN TStyle * gStyle
Bool_t TestBit(UInt_t f) const
Double_t fY2
Y of 2nd point.
Buffer base class used for serializing objects.
virtual Int_t CheckByteCount(UInt_t startpos, UInt_t bcnt, const TClass *clss)=0
void Copy(TObject &pave) const
Copy this pave to pave.
void ToLower()
Change string to lower-case.
virtual void SetFillStyle(Style_t fstyle)
Set the fill area style.
virtual void Modify()
Change current line attributes if necessary.
void SetBit(UInt_t f, Bool_t set)
Set or unset the user status bits as specified in f.
if object in a list can be deleted
virtual void AppendPad(Option_t *option="")
Append graphics object to current pad.
A TBox with a bordersize and a shadow option.
virtual void ConvertNDCtoPad()
Convert pave coordinates from NDC to Pad coordinates.
Double_t fY1
Y of 1st point.
virtual Style_t GetLineStyle() const
Return the line style.
virtual void SetY2(Double_t y2)
Set the Y2 value.
static const double x2[5]
virtual const char * ClassName() const
Returns name of class to which the object belongs.
Double_t fX1NDC
X1 point in NDC coordinates.
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.
virtual void Modify()
Change current fill area attributes if necessary.
Double_t Log10(Double_t x)
virtual ~TPave()
Pave default destructor.
virtual void PaintPaveArc(Double_t x1, Double_t y1, Double_t x2, Double_t y2, Int_t bordersize=4, Option_t *option="br")
Draw this pave with rounded corners.
virtual void SetLineColor(Color_t lcolor)
Set the line color.
virtual void SetFillColor(Color_t fcolor)
Set the fill area color.
Double_t fX2
X of 2nd point.
virtual void SetX1(Double_t x1)
Set the X1 value.
virtual void Print(Option_t *option="") const
Dump this box with its attributes.
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.
Double_t fX1
X of 1st point.
static void IndentLevel()
Functions used by ls() to indent an object hierarchy.
virtual void Paint(Option_t *option="")
Paint this pave with its current attributes.
Option_t * GetName() const
Returns name of object.
Int_t fBorderSize
window box bordersize in pixels
virtual void PaintBox(Double_t x1, Double_t y1, Double_t x2, Double_t y2, Option_t *option="")
Draw this box with new coordinates.
Double_t fCornerRadius
Corner radius in case of option arc.
virtual Color_t GetLineColor() const
Return the line color.
Int_t GetShadowColor() const
virtual void Draw(Option_t *option="")
Draw this pave with its current attributes.
virtual Int_t ReadClassBuffer(const TClass *cl, void *pointer, const TClass *onfile_class=0)=0
virtual void SetY1(Double_t y1)
Set the Y1 value.
Double_t fY2NDC
Y2 point in NDC coordinates.
static const double x1[5]
Int_t fShadowColor
Color of the pave's shadow.
virtual void ExecuteEvent(Int_t event, Int_t px, Int_t py)
Execute action corresponding to one event.
virtual Int_t DistancetoPrimitive(Int_t px, Int_t py)
Compute distance from point px,py to a pave.
virtual Color_t GetFillColor() const
Return the fill area color.
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
Double_t fX2NDC
X2 point in NDC coordinates.
virtual void SetLineStyle(Style_t lstyle)
Set the line style.
virtual void SetX2(Double_t x2)
Set the X2 value.
Mother of all ROOT objects.
virtual void DrawPave(Double_t x1, Double_t y1, Double_t x2, Double_t y2, Int_t bordersize=4, Option_t *option="br")
Draw this pave with new coordinates.
TPave()
Pave default constructor.
virtual void ls(Option_t *option="") const
List this pave with its attributes.
Int_t fInit
(=0 if transformation to NDC not yet done)
Double_t fY1NDC
Y1 point in NDC coordinates.
virtual void PaintPave(Double_t x1, Double_t y1, Double_t x2, Double_t y2, Int_t bordersize=4, Option_t *option="br")
Draw this pave with new coordinates.
virtual Style_t GetFillStyle() const
Return the fill area style.
virtual void SavePrimitive(std::ostream &out, Option_t *option="")
Save primitive as a C++ statement(s) on output stream out.
TString fOption
Pave style.
virtual Version_t ReadVersion(UInt_t *start=0, UInt_t *bcnt=0, const TClass *cl=0)=0