54 #ifndef ROOT_TVirtualPad_H
55 #include "TVirtualPad.h"
65 Color_t Link::fgDefaultColor = 1;
66 Bool_t Link::fgMovable =
false;
68 Float_t Link::fgDefaultLabelSize = 0.03;
69 Color_t Link::fgDefaultLabelColor = 1;
89 SetFillColor(fgDefaultColor); SetLineColor(fgDefaultColor); SetOption(
"F");
91 fLabel0.SetX(0); fLabel0.SetY(0); fLabel0.SetTextAlign(32); fLabel0.SetBit(TObject::kCannotPick);
92 fLabel1.SetX(0); fLabel1.SetY(0); fLabel1.SetTextAlign(22); fLabel1.SetBit(TObject::kCannotPick);
93 fLabel2.SetX(0); fLabel2.SetY(0); fLabel2.SetTextAlign(12); fLabel2.SetBit(TObject::kCannotPick);
94 fBox1.SetFillColor(0); fBox1.SetLineColor(0);
100 fArrowStyle(link.fArrowStyle),
102 fInitial(link.fInitial),
104 fIsSelected(link.fIsSelected),
105 fStrength(link.fStrength),
113 if (
this == &link)
return *
this;
133 fLabel0.SetTextSize(size);
134 fLabel1.SetTextSize(size);
135 fLabel2.SetTextSize(size);
141 fLabel0.SetTextColor(color);
142 fLabel1.SetTextColor(color);
143 fLabel2.SetTextColor(color);
151 for( Short_t i = 0; i < end; i++ ) {
152 if ( st[i] ==
'0' ) {
168 fLabel0.SetText(fLabel0.GetX(),fLabel0.GetY(),label);
171 fLabel1.SetText(fLabel1.GetX(),fLabel1.GetY(),label);
174 fLabel2.SetText(fLabel2.GetX(),fLabel2.GetY(),label);
182 fLabel0.SetText(fLabel0.GetX(),fLabel0.GetY(),l0);
183 fLabel1.SetText(fLabel1.GetX(),fLabel1.GetY(),l1);
184 fLabel2.SetText(fLabel2.GetX(),fLabel2.GetY(),l2);
198 if ( which <= 0 )
return fLabel0;
200 if ( which == 1 )
return fLabel1;
210 if (
GetIL()->HasExtraLine())
214 else if (
GetFL()->HasExtraLine())
235 Double_t x = 0, y = 0;
236 Double_t offset1, offset2, prop, height, offset3;
245 offset2 = TMath::Min(2.5*offset1,TMath::Abs(
GetIL()->GetX2() -
GetIL()->GetX1())/2.);
247 offset3 = TMath::Abs(
GetIL()->GetX2() -
GetIL()->GetX1())*0.25;
249 height =
GetFL()->GetY1() + TMath::Abs(
GetIL()->GetY1() -
GetFL()->GetY1())*(0.6);
254 x = xi; y =
GetIL()->GetY1();
255 SetPoint(0,x-offset1,y);
257 SetPoint(2,x+offset1,y);
258 SetPoint(8,x-offset1,y);
260 x = xi + prop*(xf-xi); y =
GetIL()->GetY1() - prop*(
GetIL()->GetY1()-
GetFL()->GetY1());
261 SetPoint(3,x+offset1,y);
262 SetPoint(4,x+offset2,y);
263 SetPoint(6,x-offset2,y);
264 SetPoint(7,x-offset1,y);
266 x = xf; y =
GetFL()->GetY1();
274 GetLabel(0).SetX(GetX()[1] - offset3);
276 GetLabel(2).SetX(GetX()[1] + offset3);
306 if(TMath::Abs(xi-xf) < 5)
311 Float_t PadWidth = gPad->GetWw();
312 Float_t PadHeight = gPad->GetWh();
313 Float_t XWidth = gPad->GetX2()-gPad->GetX1();
314 Float_t YWidth = gPad->GetY2()-gPad->GetY1();
316 Float_t MetricFact = YWidth*PadWidth/(PadHeight*XWidth);
321 Double_t yi = GetIL()->GetY1();
322 Double_t yf = GetFL()->GetY1();
324 Double_t ad = (yf-yi)/(xf-xi);
325 if(TMath::Abs(xf-xi)<1e-10)
328 Double_t bd = yi-ad*xi;
330 Float_t StrenghtFact = 1./100*XWidth*0.02;
331 Float_t ArrowFact = XWidth*0.05;
335 Double_t b1 = bd - GetStrength().Get()*StrenghtFact*MetricFact * sqrt(ad*ad + 1);
336 Double_t b2 = bd + GetStrength().Get()*StrenghtFact*MetricFact * sqrt(ad*ad + 1);
338 Double_t x_p1 = (yi-b1)/ad;
340 Double_t x_p2 = (yi-b2)/ad;
343 Float_t ArrowPosFactor = 0.8;
345 Double_t Proj_x = xi + ArrowPosFactor*(xf-xi);
346 Double_t Proj_y = yi + ArrowPosFactor*(yf-yi);
348 Double_t ap0 = -1./ad;
349 Double_t bp0 = Proj_y - ap0*Proj_x;
351 Double_t xp4 = (bp0-b1)/(ad-ap0);
352 Double_t yp4 = ad*xp4+b1;
354 Double_t xp5 = (bp0-b2)/(ad-ap0);
355 Double_t yp5 = ad*xp5+b2;
363 Double_t xp3 = xp4 + ArrowFact*(xp4-Proj_x)*1./(sqrt((Proj_x-xp4)*(Proj_x-xp4)+(Proj_y-yp4)*(Proj_y-yp4)));
364 Double_t yp3 = yp4 + ArrowFact*(yp4-Proj_y)*1./(sqrt((Proj_x-xp4)*(Proj_x-xp4)+(Proj_y-yp4)*(Proj_y-yp4)));
367 Double_t xp6 = xp5 + ArrowFact*(xp5-Proj_x)*1./(sqrt((Proj_x-xp5)*(Proj_x-xp5)+(Proj_y-yp5)*(Proj_y-yp5)));
368 Double_t yp6 = yp5 + ArrowFact*(yp5-Proj_y)*1./(sqrt((Proj_x-xp5)*(Proj_x-xp5)+(Proj_y-yp5)*(Proj_y-yp5)));
370 Double_t height = GetFL()->GetY1() + TMath::Abs(GetIL()->GetY1() - GetFL()->GetY1())*(0.6);
374 SetPoint(0,x_p1/MetricFact,yi);
375 SetPoint(1,xi/MetricFact,yi);
376 SetPoint(2,x_p2/MetricFact,yi);
377 SetPoint(3,xp5/MetricFact,yp5);
378 SetPoint(4,xp6/MetricFact,yp6);
379 SetPoint(5,xf/MetricFact,yf);
380 SetPoint(6,xp3/MetricFact,yp3);
381 SetPoint(7,xp4/MetricFact,yp4);
382 SetPoint(8,x_p1/MetricFact,yi);
385 for (Int_t i = 0; i < fgkMaxLinkLabel; ++i) {
386 GetLabel(i).SetY(height);
389 GetLabel(0).SetX(xi/MetricFact+(xf/MetricFact-xi/MetricFact)/2. - GetStrength().Get());
390 GetLabel(1).SetX(xi/MetricFact+(xf/MetricFact-xi/MetricFact)/2.);
391 GetLabel(2).SetX(xi/MetricFact+(xf/MetricFact-xi/MetricFact)/2. + GetStrength().Get());
403 const Link* link =
static_cast<const Link*
>(obj);
405 if ( GetIL()->GetY1() > link->
GetIL()->GetY1() ) {
407 }
else if ( GetIL()->GetY1() < link->
GetIL()->GetY1() ) {
418 Double_t prop, height;
421 height = GetFL()->GetY1() + TMath::Abs(GetIL()->GetY1() - GetFL()->GetY1())*(0.6);
425 y = GetIL()->GetY1();
426 SetPoint(0,GetX()[0],y);
427 SetPoint(1,GetX()[1],y);
428 SetPoint(2,GetX()[2],y);
429 SetPoint(8,GetX()[8],y);
431 y = GetIL()->GetY1() - prop*(GetIL()->GetY1()-GetFL()->GetY1());
432 SetPoint(3,GetX()[3],y);
433 SetPoint(4,GetX()[4],y);
434 SetPoint(6,GetX()[6],y);
435 SetPoint(7,GetX()[7],y);
437 y = GetFL()->GetY1();
438 SetPoint(5,GetX()[5],y);
441 for (Int_t i = 0; i < fgkMaxLinkLabel; ++i) {
442 GetLabel(i).SetY(height);
449 if ( !IsVisible() )
return;
451 TPolyLine::Paint(option);
453 if ( fVisLabel[0] ==
'1' ) {
454 GetLabel(0).Paint(option);
456 if ( fVisLabel[1] ==
'1' ) {
457 fBox1.SetX1(fLabel1.GetX() - fLabel1.GetXsize()/2.6);
458 fBox1.SetX2(fLabel1.GetX() + fLabel1.GetXsize()/2.5);
459 fBox1.SetY1(fLabel1.GetY() - fLabel1.GetYsize()/1.6);
460 fBox1.SetY2(fLabel1.GetY() + fLabel1.GetYsize()/2.0);
462 GetLabel(1).Paint(option);
464 if ( fVisLabel[2] ==
'1' ) {
465 GetLabel(2).Paint(option);
474 if ( !IsVisible() )
return;
476 TPolyLine::Draw(option);
478 if ( fVisLabel[0] ==
'1' ) {
479 GetLabel(0).Draw(option);
481 if ( fVisLabel[1] ==
'1' ) {
483 GetLabel(1).Draw(option);
485 if ( fVisLabel[2] ==
'1' ) {
486 GetLabel(2).Draw(option);
504 if ( !IsMovable() )
return;
507 Double_t xmin, xmax, ymin, ymax, dxr, dyr;
508 const Int_t kMaxDiff = 30;
509 static Bool_t middle;
510 static Int_t ipoint, pxp, pyp;
511 static Int_t px1,px2;
513 static Int_t dpx, dpy;
514 static Int_t *x=0, *y=0;
515 static Double_t a=0.0,
b=0.0;
516 static Int_t xprime=0,t1=0,t2=0;
518 if (!gPad->IsEditable())
return;
522 Double_t vx0 = fLabel0.GetX() - fLabel1.GetX();
524 Double_t vx2 = fLabel2.GetX() - fLabel1.GetX();
525 Double_t vy = fLabel2.GetY() - GetY()[5];
530 gVirtualX->SetLineColor(-1);
532 px1 = gPad->XtoAbsPixel(gPad->GetX1());
534 px2 = gPad->XtoAbsPixel(gPad->GetX2());
543 pxp = gPad->XtoAbsPixel(gPad->XtoPad(fX[i]));
544 pyp = gPad->YtoAbsPixel(gPad->YtoPad(fY[i]));
547 d = TMath::Abs(pxp-px) + TMath::Abs(pyp-py);
548 if ( (d < kMaxDiff) && ((i==1) || (i==5))) {
549 gVirtualX->DrawLine(pxp-4, pyp-4, pxp+4, pyp-4);
550 gVirtualX->DrawLine(pxp+4, pyp-4, pxp+4, pyp+4);
551 gVirtualX->DrawLine(pxp+4, pyp+4, pxp-4, pyp+4);
552 gVirtualX->DrawLine(pxp-4, pyp+4, pxp-4, pyp-4);
560 if (ipoint < 0)
return;
577 pxold = gPad->XtoAbsPixel(gPad->XtoPad(fX[ipoint]));
587 pxp = gPad->XtoAbsPixel(gPad->XtoPad(fX[i]));
588 pyp = gPad->YtoAbsPixel(gPad->YtoPad(fY[i]));
589 d = TMath::Abs(pxp-px) + TMath::Abs(pyp-py);
590 if ( (d < kMaxDiff) && ((i==1) || (i==5))) middle = kFALSE;
595 if (middle) gPad->SetCursor(kMove);
596 else gPad->SetCursor(kHand);
601 for(i=0;i<np-1;i++) {
602 gVirtualX->DrawLine(x[i]+dpx, y[i]+dpy, x[i+1]+dpx, y[i+1]+dpy);
605 gVirtualX->DrawLine(pxp-4, pyp-4, pxp+4, pyp-4);
606 gVirtualX->DrawLine(pxp+4, pyp-4, pxp+4, pyp+4);
607 gVirtualX->DrawLine(pxp+4, pyp+4, pxp-4, pyp+4);
608 gVirtualX->DrawLine(pxp-4, pyp+4, pxp-4, pyp-4);
612 gVirtualX->DrawLine(pxp-4, pyp-4, pxp+4, pyp-4);
613 gVirtualX->DrawLine(pxp+4, pyp-4, pxp+4, pyp+4);
614 gVirtualX->DrawLine(pxp+4, pyp+4, pxp-4, pyp+4);
615 gVirtualX->DrawLine(pxp-4, pyp+4, pxp-4, pyp-4);
620 for(i=0;i<np-1;i++) {
621 gVirtualX->DrawLine(x[i]+dpx, y[i]+dpy, x[i+1]+dpx, y[i+1]+dpy);
624 gVirtualX->DrawLine(pxp-4, pyp-4, pxp+4, pyp-4);
625 gVirtualX->DrawLine(pxp+4, pyp-4, pxp+4, pyp+4);
626 gVirtualX->DrawLine(pxp+4, pyp+4, pxp-4, pyp+4);
627 gVirtualX->DrawLine(pxp-4, pyp+4, pxp-4, pyp-4);
631 gVirtualX->DrawLine(pxp-4, pyp-4, pxp+4, pyp-4);
632 gVirtualX->DrawLine(pxp+4, pyp-4, pxp+4, pyp+4);
633 gVirtualX->DrawLine(pxp+4, pyp+4, pxp-4, pyp+4);
634 gVirtualX->DrawLine(pxp-4, pyp+4, pxp-4, pyp-4);
637 if ((x[5]-x[1]-dpx != 0) && (y[5]-y[1] != 0)) {
638 a = (y[5]-y[1])/((x[5]-x[1]-dpx)*1.0);
640 xprime = (Int_t)((y[3] -
b) / a);
644 t1 = (x[3] - x[7]) / 2;
645 t2 = (x[4] - x[6]) / 2;
647 gVirtualX->DrawLine(x[0]+dpx, y[0], x[2]+dpx, y[2]);
648 gVirtualX->DrawLine(x[0]+dpx, y[0], xprime-t1, y[7]);
649 gVirtualX->DrawLine(x[2]+dpx, y[2], xprime+t1, y[3]);
650 gVirtualX->DrawLine(xprime-t1, y[7], xprime-t2, y[6]);
651 gVirtualX->DrawLine(xprime+t1, y[3], xprime+t2, y[4]);
652 gVirtualX->DrawLine(xprime-t2, y[6], x[5], y[5]);
653 gVirtualX->DrawLine(xprime+t2, y[4], x[5], y[5]);
656 gVirtualX->DrawLine(pxp-4, pyp-4, pxp+4, pyp-4);
657 gVirtualX->DrawLine(pxp+4, pyp-4, pxp+4, pyp+4);
658 gVirtualX->DrawLine(pxp+4, pyp+4, pxp-4, pyp+4);
659 gVirtualX->DrawLine(pxp-4, pyp+4, pxp-4, pyp-4);
662 Int_t x1IL = gPad->XtoAbsPixel(GetIL()->GetX1());
663 Int_t x2IL = gPad->XtoAbsPixel(GetIL()->GetX2());
665 gVirtualX->DrawLine(x2IL, pyp, pxp, pyp);
666 }
else if (pxp < x1IL) {
667 gVirtualX->DrawLine(pxp, pyp, x1IL, pyp);
672 if ((x[1]-x[5]-dpx != 0) && (y[1]-y[5] != 0)) {
673 a = (y[1]-y[5])/((x[1]-x[5]-dpx)*1.0);
675 xprime = (Int_t)((y[3] -
b) / a);
679 t1 = (x[3] - x[7]) / 2;
680 t2 = (x[4] - x[6]) / 2;
681 gVirtualX->DrawLine(xprime-t1, y[7], x[0], y[0]);
682 gVirtualX->DrawLine(xprime+t1, y[3], x[2], y[2]);
683 gVirtualX->DrawLine(xprime-t1, y[7], xprime-t2, y[6]);
684 gVirtualX->DrawLine(xprime+t2, y[4], xprime+t1, y[3]);
685 gVirtualX->DrawLine(x[5]+dpx, y[5], xprime-t2, y[6]);
686 gVirtualX->DrawLine(x[5]+dpx, y[5], xprime+t2, y[4]);
689 gVirtualX->DrawLine(pxp-4, pyp-4, pxp+4, pyp-4);
690 gVirtualX->DrawLine(pxp+4, pyp-4, pxp+4, pyp+4);
691 gVirtualX->DrawLine(pxp+4, pyp+4, pxp-4, pyp+4);
692 gVirtualX->DrawLine(pxp-4, pyp+4, pxp-4, pyp-4);
695 Int_t x1FL = gPad->XtoAbsPixel(GetFL()->GetX1());
696 Int_t x2FL = gPad->XtoAbsPixel(GetFL()->GetX2());
698 gVirtualX->DrawLine(x2FL, pyp, pxp, pyp);
699 }
else if (pxp < x1FL) {
700 gVirtualX->DrawLine(pxp, pyp, x1FL, pyp);
707 pxold = TMath::Max(pxold, px1);
708 pxold = TMath::Min(pxold, px2);
711 if ((x[5]-x[1]-dpx != 0) && (y[5]-y[1] != 0)) {
712 a = (y[5]-y[1])/((x[5]-x[1]-dpx)*1.0);
714 xprime = (Int_t)((y[3] -
b) / a);
718 t1 = (x[3] - x[7]) / 2;
719 t2 = (x[4] - x[6]) / 2;
721 gVirtualX->DrawLine(x[0]+dpx, y[0], x[2]+dpx, y[2]);
722 gVirtualX->DrawLine(x[0]+dpx, y[0], xprime-t1, y[7]);
723 gVirtualX->DrawLine(x[2]+dpx, y[2], xprime+t1, y[3]);
724 gVirtualX->DrawLine(xprime-t1, y[7], xprime-t2, y[6]);
725 gVirtualX->DrawLine(xprime+t1, y[3], xprime+t2, y[4]);
726 gVirtualX->DrawLine(xprime-t2, y[6], x[5], y[5]);
727 gVirtualX->DrawLine(xprime+t2, y[4], x[5], y[5]);
730 gVirtualX->DrawLine(pxp-4, pyp-4, pxp+4, pyp-4);
731 gVirtualX->DrawLine(pxp+4, pyp-4, pxp+4, pyp+4);
732 gVirtualX->DrawLine(pxp+4, pyp+4, pxp-4, pyp+4);
733 gVirtualX->DrawLine(pxp-4, pyp+4, pxp-4, pyp-4);
737 if ((x[1]-x[5]-dpx != 0) && (y[1]-y[5] != 0)) {
738 a = (y[1]-y[5])/((x[1]-x[5]-dpx)*1.0);
740 xprime = (Int_t)((y[3] -
b) / a);
744 t1 = (x[3] - x[7]) / 2;
745 t2 = (x[4] - x[6]) / 2;
746 gVirtualX->DrawLine(xprime-t1, y[7], x[0], y[0]);
747 gVirtualX->DrawLine(xprime+t1, y[3], x[2], y[2]);
748 gVirtualX->DrawLine(xprime-t1, y[7], xprime-t2, y[6]);
749 gVirtualX->DrawLine(xprime+t2, y[4], xprime+t1, y[3]);
750 gVirtualX->DrawLine(x[5]+dpx, y[5], xprime-t2, y[6]);
751 gVirtualX->DrawLine(x[5]+dpx, y[5], xprime+t2, y[4]);
754 gVirtualX->DrawLine(pxp-4, pyp-4, pxp+4, pyp-4);
755 gVirtualX->DrawLine(pxp+4, pyp-4, pxp+4, pyp+4);
756 gVirtualX->DrawLine(pxp+4, pyp+4, pxp-4, pyp+4);
757 gVirtualX->DrawLine(pxp-4, pyp+4, pxp-4, pyp-4);
766 xmin = gPad->GetUxmin();
767 xmax = gPad->GetUxmax();
768 ymin = gPad->GetUymin();
769 ymax = gPad->GetUymax();
779 gPad->Range(xmin - dxr*gPad->GetLeftMargin(),
780 ymin - dyr*gPad->GetBottomMargin(),
781 xmax + dxr*gPad->GetRightMargin(),
782 ymax + dyr*gPad->GetTopMargin());
783 gPad->RangeAxis(xmin, ymin, xmax, ymax);
787 fX[i] = gPad->PadtoX(gPad->AbsPixeltoX(x[i]+dpx));
792 if ((x[5]-x[1]-dpx != 0) && (y[5]-y[1] != 0)) {
793 a = (y[5]-y[1])/((x[5]-x[1]-dpx)*1.0);
795 xprime = (Int_t)((y[3] -
b) / a);
799 t1 = (x[3] - x[7]) / 2;
800 t2 = (x[4] - x[6]) / 2;
801 fX[1] = gPad->PadtoX(gPad->AbsPixeltoX(x[1]+dpx));
802 fX[0] = gPad->PadtoX(gPad->AbsPixeltoX(x[0]+dpx));
803 fX[2] = gPad->PadtoX(gPad->AbsPixeltoX(x[2]+dpx));
804 fX[8] = gPad->PadtoX(gPad->AbsPixeltoX(x[8]+dpx));
805 fX[3] = gPad->PadtoX(gPad->AbsPixeltoX(xprime+t1));
806 fX[4] = gPad->PadtoX(gPad->AbsPixeltoX(xprime+t2));
807 fX[6] = gPad->PadtoX(gPad->AbsPixeltoX(xprime-t2));
808 fX[7] = gPad->PadtoX(gPad->AbsPixeltoX(xprime-t1));
811 if (fX[1] > GetIL()->GetX2() ) {
812 GetIL()->SetExtraLineX2(fX[1]);
813 }
else if (fX[1] < GetIL()->GetX1()) {
814 GetIL()->SetExtraLineX1(fX[1]);
816 GetIL()->GetExtraLine().SetBit(TObject::kInvalidObject);
820 if ((x[1]-x[5]-dpx != 0) && (y[1]-y[5] != 0)) {
821 a = (y[1]-y[5])/((x[1]-x[5]-dpx)*1.0);
823 xprime = (Int_t)((y[3] -
b) / a);
827 t1 = (x[3] - x[7]) / 2;
828 t2 = (x[4] - x[6]) / 2;
829 fX[5] = gPad->PadtoX(gPad->AbsPixeltoX(x[5]+dpx));
830 fX[3] = gPad->PadtoX(gPad->AbsPixeltoX(xprime+t1));
831 fX[4] = gPad->PadtoX(gPad->AbsPixeltoX(xprime+t2));
832 fX[6] = gPad->PadtoX(gPad->AbsPixeltoX(xprime-t2));
833 fX[7] = gPad->PadtoX(gPad->AbsPixeltoX(xprime-t1));
836 if (fX[5] > GetFL()->GetX2() ) {
837 GetFL()->SetExtraLineX2(fX[5]);
838 }
else if (fX[5] < GetFL()->GetX1()) {
839 GetFL()->SetExtraLineX1(fX[5]);
841 GetFL()->GetExtraLine().SetBit(TObject::kInvalidObject);
848 fLabel0.SetX((GetX()[1] + GetX()[5])/2. + vx0); fLabel0.SetY(fY[5]+vy);
849 fLabel1.SetX((GetX()[1] + GetX()[5])/2. + vx1); fLabel0.SetY(fY[5]+vy);
850 fLabel2.SetX((GetX()[1] + GetX()[5])/2. + vx2); fLabel0.SetY(fY[5]+vy);
854 gPad->Modified(kTRUE);
855 gVirtualX->SetLineColor(-1);
857 SetPoints(GetX()[0]+(GetX()[2]-(GetX()[0]))/2.,GetX()[5]);
863 fIsAmbiguous = isambiguous;
865 #if ROOT_VERSION_CODE >= ROOT_VERSION(5,34,34)
867 SetFillStyle(kFDotted1);
869 SetFillStyle(kFSolid);
virtual const char * GetLabel2()
virtual void Paint(Option_t *option="")
virtual void ExecuteEvent(Int_t event, Int_t px, Int_t py)
to execute an event for this link
virtual void Draw(Option_t *option="")
draw
static Color_t GetDefaultLabelColor()
virtual void SetLabels(const char *l0, const char *l1, const char *l2)
set label titles
virtual void SetLabelsSize(Float_t size)
set all labels size
virtual TLatex & GetLabel(Int_t)
All labels are shifted when moving a level to another position.
virtual Level * GetIL()
to get the initial level
virtual const char * GetLabel1()
virtual void SetAdvancedStylePoints(Double_t xi, Double_t xf)
virtual Level * GetFL()
to get the final level
virtual void SetDefaultLabels()
Set default labels.
virtual void SetPoints()
to set points from the levels and the Strength
A link between two levels.
virtual Data_T Get() const
get the value, can be overloaded
virtual void SetAmbiguous(Bool_t isambiguous=true)
Link & operator=(const Link &)
virtual void SetVisLabel(const char *)
Used to determine which label should be drawn.
virtual void UpdatePoints()
update points respect to a modified level (for future application)
static Float_t GetDefaultLabelSize()
virtual Measure< Float_t > & GetStrength()
to get the strength and modify it if it is needed
virtual void SetLabelsColor(Color_t color)
set all labels color
virtual Int_t Compare(const TObject *obj) const
virtual const char * GetLabel0()
Get labels title.
Level * fInitial
log message
Measure< Float_t > fStrength
virtual void SetBasicStylePoints(Double_t xi, Double_t xf)
virtual void SetLabel(const char *, Int_t)
to set labels
static const Short_t fgkMaxLinkLabel