|
ROOT
Reference Guide |
|
Go to the documentation of this file.
224 const char *header,
Option_t *option)
225 :
TPave(
x1,y1,
x2,y2,4,option),
TAttText(12,0,1,
gStyle->GetLegendFont(),0)
228 if ( header && strlen(header) > 0) {
258 :
TPave(w,
h,w,
h,4,option),
TAttText(12,0,1,
gStyle->GetLegendFont(),0)
261 if ( header && strlen(header) > 0) {
289 ((
TLegend&)legend).Copy(*
this);
332 const char *lab = label;
334 if (obj && (!label || strlen(label)==0)) lab = obj->
GetTitle();
356 Error(
"AddEntry",
"need to create a canvas first");
365 TList *lop =
gPad->GetListOfPrimitives();
369 while( (o=next()) ) {
384 return AddEntry( obj, label, option );
415 if ( !entry )
return;
434 if ( !entry )
return;
435 gROOT->SetSelectedPrimitive( entry );
445 if ( !entry )
return;
446 gROOT->SetSelectedPrimitive( entry );
456 if ( !entry )
return;
457 gROOT->SetSelectedPrimitive( entry );
467 if ( !entry )
return;
468 gROOT->SetSelectedPrimitive( entry );
479 Error(
"GetEntry",
"need to create a canvas first");
484 if ( nRows == 0 )
return 0;
492 if (nColumns > 0) xspace = (
fX2 -
fX1)/nColumns;
495 if (xspace > 0.) ix = (
Int_t)(xmouse/xspace)+1;
496 if (ix > nColumns) ix = nColumns;
500 if (iy > nRows) iy = nRows;
536 Error(
"InsertEntry",
"need to create a canvas first");
566 Warning(
"Paint",
"Legend too large to be automatically placed; a default position is used");
587 if ( nEntries == 0 )
return 0;
606 Warning(
"TLegend::SetNColumns",
"illegal value nColumns = %d; keeping fNColumns = %d", nColumns,
fNColumns);
618 if ( nRows == 0 )
return;
643 if ( textsize == 0 ) {
648 Double_t maxentrywidth = 0, maxentryheight = 0;
657 if (tfont%10 == 3) --tfont;
660 if ( entrytex.
GetYsize() > maxentryheight ) {
661 maxentryheight = entrytex.
GetYsize();
666 if ( entrytex.
GetXsize() > maxentrywidth ) {
667 maxentrywidth = entrytex.
GetXsize();
670 if ( entrytex.
GetXsize() > columnWidths[iColumn] ) {
671 columnWidths[iColumn] = entrytex.
GetXsize();
677 for(
int i=0; i<
fNColumns; i++) tmpMaxWidth += columnWidths[i];
678 if ( tmpMaxWidth > maxentrywidth) maxentrywidth = tmpMaxWidth;
702 if (autosize && tfont%10 == 3) --tfont;
708 if ( entrytex.
GetXsize() > columnWidths[iColumn] ) {
709 columnWidths[iColumn] = entrytex.
GetXsize();
715 double totalWidth = 0.0;
716 for(
int i=0; i<
fNColumns; i++) totalWidth += columnWidths[i];
718 else totalWidth /= (1.0 -
fMargin);
720 columnWidths[i] = columnWidths[i]/totalWidth*(
x2-
x1) + margin;
731 if(iColumn == 0) ytext -= yspace;
746 if (autosize && tfont%10 == 3) --tfont;
759 if ( opt.
Contains(
"h") ) entrymargin = margin/10.;
762 x2 =
x1 + columnWidths[iColumn];
766 if (halign == 1)
x =
x1 + entrymargin;
767 if (halign == 2)
x = 0.5*( (
x1+entrymargin) +
x2 );
768 if (halign == 3)
x =
x2 - entrymargin/10.;
778 if (tfont%10 == 3) tsizepad = (
gPad->AbsPixeltoY(0) -
gPad->AbsPixeltoY(textsize))/(
gPad->GetY2() -
gPad->GetY1());
779 if (yspace2 < tsizepad) {
789 entry->TAttText::Copy(entrytex);
814 if (eobjopt.
Contains(
"z")) endcaps = 0;
815 if (eobjopt.
Contains(
">")) endcaps = 2;
816 if (eobjopt.
Contains(
"|>")) endcaps = 3;
828 entry->TAttFill::Modify();
831 yf[0] = ysym - yspace*0.35;
835 yf[2] = ysym + yspace*0.35;
838 for (
Int_t i=0;i<4;i++) {
839 xf[i] =
gPad->GetX1() + xf[i]*(
gPad->GetX2()-
gPad->GetX1());
840 yf[i] =
gPad->GetY1() + yf[i]*(
gPad->GetY2()-
gPad->GetY1());
842 gPad->PaintFillArea(4,xf,yf);
848 TMarker entrymarker( xsym, ysym, 0 );
855 entry->TAttMarker::Copy(entrymarker);
867 TLine entryline( xsym - boxw, ysym, xsym + boxw, ysym );
869 entry->TAttLine::Copy(entryline);
872 entryline.
PaintLineNDC( xsym - boxw, ysym + yspace*0.35,
873 xsym + boxw, ysym + yspace*0.35);
874 entryline.
PaintLineNDC( xsym - boxw, ysym - yspace*0.35,
875 xsym + boxw, ysym - yspace*0.35);
876 entryline.
PaintLineNDC( xsym + boxw, ysym - yspace*0.35,
877 xsym + boxw, ysym + yspace*0.35);
878 entryline.
PaintLineNDC( xsym - boxw, ysym - yspace*0.35,
879 xsym - boxw, ysym + yspace*0.35);
885 xsym, ysym + yspace*0.30);
888 TLine entryline1(xsym, ysym + sy, xsym, ysym + yspace*0.30);
890 entry->TAttLine::Copy(entryline1);
892 TLine entryline2(xsym, ysym - sy, xsym, ysym - yspace*0.30);
894 entry->TAttLine::Copy(entryline2);
899 TLine entrytop1(xsym-barw, ysym + yspace*0.30, xsym+barw, ysym + yspace*0.30);
901 entry->TAttLine::Copy(entrytop1);
903 TLine entrytop2(xsym-barw, ysym - yspace*0.30, xsym+barw, ysym - yspace*0.30);
905 entry->TAttLine::Copy(entrytop2);
907 }
else if (endcaps == 2) {
908 Double_t xe1[3] = {xsym-barw, xsym ,xsym+barw};
909 Double_t ye1[3] = {ysym+yspace*0.20, ysym + yspace*0.30 ,ysym+yspace*0.20};
912 entry->TAttLine::Copy(ple1);
914 Double_t xe2[3] = {xsym-barw, xsym ,xsym+barw};
915 Double_t ye2[3] = {ysym-yspace*0.20, ysym - yspace*0.30 ,ysym-yspace*0.20};
918 entry->TAttLine::Copy(ple2);
919 }
else if (endcaps == 3) {
920 Double_t xe1[3] = {xsym-barw, xsym ,xsym+barw};
921 Double_t ye1[3] = {ysym+yspace*0.20, ysym + yspace*0.30 ,ysym+yspace*0.20};
922 Double_t xe2[3] = {xsym-barw, xsym ,xsym+barw};
923 Double_t ye2[3] = {ysym-yspace*0.20, ysym - yspace*0.30 ,ysym-yspace*0.20};
924 for (
Int_t i=0;i<3;i++) {
925 xe1[i] =
gPad->GetX1() + xe1[i]*(
gPad->GetX2()-
gPad->GetX1());
926 ye1[i] =
gPad->GetY1() + ye1[i]*(
gPad->GetY2()-
gPad->GetY1());
927 xe2[i] =
gPad->GetX1() + xe2[i]*(
gPad->GetX2()-
gPad->GetX1());
928 ye2[i] =
gPad->GetY1() + ye2[i]*(
gPad->GetY2()-
gPad->GetY1());
950 TLine entryline(xsym, ysym - yspace*0.30,
951 xsym, ysym + yspace*0.30);
953 entry->TAttLine::Copy(entryline);
957 TLine entryline1(xsym, ysym + sy, xsym, ysym + yspace*0.30);
959 entry->TAttLine::Copy(entryline1);
961 TLine entryline2(xsym, ysym - sy, xsym, ysym - yspace*0.30);
963 entry->TAttLine::Copy(entryline2);
968 TLine entrytop1(xsym-barw, ysym + yspace*0.30, xsym+barw, ysym + yspace*0.30);
970 entry->TAttLine::Copy(entrytop1);
972 TLine entrytop2(xsym-barw, ysym - yspace*0.30, xsym+barw, ysym - yspace*0.30);
974 entry->TAttLine::Copy(entrytop2);
976 }
else if (endcaps == 2) {
977 Double_t xe1[3] = {xsym-barw, xsym ,xsym+barw};
978 Double_t ye1[3] = {ysym+yspace*0.20, ysym + yspace*0.30 ,ysym+yspace*0.20};
981 entry->TAttLine::Copy(ple1);
983 Double_t xe2[3] = {xsym-barw, xsym ,xsym+barw};
984 Double_t ye2[3] = {ysym-yspace*0.20, ysym - yspace*0.30 ,ysym-yspace*0.20};
987 entry->TAttLine::Copy(ple2);
989 }
else if (endcaps == 3) {
990 Double_t xe1[3] = {xsym-barw, xsym ,xsym+barw};
991 Double_t ye1[3] = {ysym+yspace*0.20, ysym + yspace*0.30 ,ysym+yspace*0.20};
992 Double_t xe2[3] = {xsym-barw, xsym ,xsym+barw};
993 Double_t ye2[3] = {ysym-yspace*0.20, ysym - yspace*0.30 ,ysym-yspace*0.20};
994 for (
Int_t i=0;i<3;i++) {
995 xe1[i] =
gPad->GetX1() + xe1[i]*(
gPad->GetX2()-
gPad->GetX1());
996 ye1[i] =
gPad->GetY1() + ye1[i]*(
gPad->GetY2()-
gPad->GetY1());
997 xe2[i] =
gPad->GetX1() + xe2[i]*(
gPad->GetX2()-
gPad->GetX1());
998 ye2[i] =
gPad->GetY1() + ye2[i]*(
gPad->GetY2()-
gPad->GetY1());
1015 delete [] columnWidths;
1046 out <<
" " << std::endl;
1051 out <<
" TLegend *";
1056 <<
"NULL" <<
"," <<quote<<
fOption <<quote<<
");" << std::endl;
1058 out<<
" leg->SetBorderSize("<<
fBorderSize<<
");"<<std::endl;
1068 out <<
" leg->Draw();"<<std::endl;
1077 if ( entry ) entry->
SetLabel( label );
1086 if ( entry ) entry->
SetOption( option );
1101 opt =
first->GetOption();
1104 first->SetLabel(header);
1108 else first->SetTextAlign(0);
1116 else first->SetTextAlign(0);
1117 first->SetTextAngle(0);
1118 first->SetTextColor(0);
1120 first->SetTextSize(0);
virtual void Print(Option_t *option="") const
Dump this pave with its attributes.
virtual void SavePrimitive(std::ostream &out, Option_t *option="")
Save this legend as C++ statements on output stream out to be used with the SaveAs ....
Defined by an array on N points in a 2-D space.
virtual void SetBorderSize(Int_t bordersize=4)
TPave & operator=(const TPave &src)
Assignment operator.
Float_t GetEndErrorSize() const
Double_t fY1NDC
Y1 point in NDC coordinates.
virtual Option_t * GetOption() const
Float_t fEntrySeparation
Separation between entries, as a fraction of The space allocated to one entry.
Int_t GetBorderSize() const
void Copy(TObject &pave) const
Copy this pave to pave.
virtual void Print(Option_t *option="") const
Default print for collections, calls Print(option, 1).
virtual void AddFirst(TObject *obj)
Add object at the beginning of the list.
virtual void SetFillStyle(Style_t fstyle)
Set the fill area style.
virtual void PaintPrimitives()
Paint the entries (list of primitives) for this legend.
virtual void SaveEntry(std::ostream &out, const char *name)
Save this TLegendEntry as C++ statements on output stream out to be used with the SaveAs ....
virtual TObject * FindObject(const char *name) const
Find an object in this list using its name.
virtual void Delete(Option_t *option="")
Remove all objects from the list AND delete all heap based objects.
TLegend & operator=(const TLegend &)
Assignment operator.
void SetNColumns(Int_t nColumns)
Set the number of columns for the legend.
The Histogram stack class.
virtual Color_t GetTextColor() const
Return the text color.
virtual void ConvertNDCtoPad()
Convert pave coordinates from NDC to Pad coordinates.
virtual Size_t GetMarkerSize() const
Return the marker size.
Style_t GetLegendFont() const
virtual void SetTextColor(Color_t tcolor=1)
Set the text color.
@ kLineNDC
Use NDC coordinates.
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
virtual void SaveTextAttributes(std::ostream &out, const char *name, Int_t alidef=12, Float_t angdef=0, Int_t coldef=1, Int_t fondef=61, Float_t sizdef=1)
Save text attributes as C++ statement(s) on output stream out.
virtual void Paint(Option_t *option="")
Paint.
Binding & operator=(OUT(*fun)(void))
Double_t fX2
X of 2nd point.
virtual void PaintLineNDC(Double_t u1, Double_t v1, Double_t u2, Double_t v2)
Draw this line with new coordinates in NDC.
virtual void SetEntryOption(Option_t *option)
Edit the option of the entry pointed to by the mouse.
void Copy(TAttText &atttext) const
Copy this text attributes to a new TAttText.
virtual const char * GetLabel() const
virtual void Paint(Option_t *option="")
Paint this marker with its current attributes.
virtual void AppendPad(Option_t *option="")
Append graphics object to current pad.
Double_t fX1
X of 1st point.
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
virtual void SetTextSize(Float_t tsize=1)
Set the text size.
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 SetObject(TObject *obj)
(re)set the obj pointed to by this entry
virtual Style_t GetMarkerStyle() const
Return the marker style.
To draw Mathematical Formula.
virtual void EditEntryAttLine()
Edit the line attributes for the entry pointed by the mouse.
virtual void SetHeader(const char *header="", Option_t *option="")
Sets the header, which is the "title" that appears at the top of the legend.
virtual Float_t GetTextSize() const
Return the text size.
Double_t GetXsize()
Return size of the formula along X in pad coordinates.
virtual const char * GetTitle() const
Returns title of object.
virtual void SetNDC(Bool_t isNDC=kTRUE)
Set NDC mode on if isNDC = kTRUE, off otherwise.
Float_t fMargin
Fraction of total width used for symbol.
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 Bool_t InheritsFrom(const char *classname) const
Returns kTRUE if object inherits from class "classname".
virtual ~TLegend()
Default destructor.
static const double x1[5]
Width_t GetLegendBorderSize() const
virtual Float_t GetTextAngle() const
Return the text angle.
TObject * Next()
Return next object in the list. Returns 0 when no more objects in list.
virtual void SetLineAttributes()
Invoke the DialogCanvas Line attributes.
virtual void Paint(Option_t *option="")
Paint this line with its current attributes.
Double_t GetX1NDC() const
Double_t GetY1NDC() const
virtual void SetNDC(Bool_t isNDC=kTRUE)
Set NDC mode on if isNDC = kTRUE, off otherwise.
virtual void Clear(Option_t *option="")
Clear all entries in this legend, including the header.
Double_t GetYsize()
Return size of the formula along Y in pad coordinates.
R__EXTERN TStyle * gStyle
virtual Font_t GetTextFont() const
Return the text font.
virtual void SetOption(Option_t *option="lpf")
Double_t fX1NDC
X1 point in NDC coordinates.
virtual Color_t GetLineColor() const
Return the line color.
void SetBit(UInt_t f, Bool_t set)
Set or unset the user status bits as specified in f.
virtual Option_t * GetDrawOption() const
Get option used by the graphics system to draw this object.
virtual void DeleteEntry()
Delete entry at the mouse position.
Int_t GetNRows() const
Get the number of rows.
virtual void AddBefore(const TObject *before, TObject *obj)
Insert object before object before in the list.
virtual void SetFillAttributes()
Invoke the DialogCanvas Fill attributes.
Double_t fY2NDC
Y2 point in NDC coordinates.
virtual void SetMarkerAttributes()
Invoke the DialogCanvas Marker attributes.
TLegendEntry * AddEntry(const TObject *obj, const char *label="", Option_t *option="lpf")
Add a new entry to this legend.
Storage class for one entry of a TLegend.
virtual void EditEntryAttMarker()
Edit the marker attributes for the entry pointed by the mouse.
Double_t GetY2NDC() const
virtual void SetEntryLabel(const char *label)
Edit the label of the entry pointed to by the mouse.
A TBox with a bordersize and a shadow option.
virtual Short_t GetTextAlign() const
Return the text alignment.
TLegend()
Default constructor.
virtual const char * GetHeader() const
Returns the header, which is the title that appears at the top of the legend.
virtual void Copy(TObject &obj) const
Copy this legend into "obj".
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message.
Double_t fY1
Y of 1st point.
TList * fPrimitives
List of TLegendEntries.
Short_t Min(Short_t a, Short_t b)
virtual void EditEntryAttText()
Edit the text attributes for the entry pointed by the mouse.
A TMultiGraph is a collection of TGraph (or derived) objects.
Int_t fBorderSize
window box bordersize in pixels
virtual void EditEntryAttFill()
Edit the fill attributes for the entry pointed by the mouse.
Double_t fX2NDC
X2 point in NDC coordinates.
virtual void SetTextAlign(Short_t align=11)
Set the text alignment.
virtual TObject * Remove(TObject *obj)
Remove object from the list.
Int_t fNColumns
Number of columns in the legend.
TString fOption
Pave style.
virtual Int_t GetSize() const
Return the capacity of the collection, i.e.
virtual void Paint(Option_t *option="")
Paint this polyline with its current attributes.
Double_t GetLegendTextSize() const
virtual void SetFillColor(Color_t fcolor)
Set the fill area color.
virtual void Add(TObject *obj)
Mother of all ROOT objects.
Double_t fY2
Y of 2nd point.
virtual void SetLabel(const char *label="")
Float_t fColumnSeparation
Separation between columns, as a fraction of The space allowed to one column.
virtual TObject * GetObject() const
virtual void Print(Option_t *option="") const
Dump this TLegend and its contents.
virtual void Paint(Option_t *option="")
Paint this legend with its current attributes.
static const double x2[5]
virtual void Draw(Option_t *option="")
Draw this legend with its current attributes.
Fill Area Attributes class.
This class displays a legend box (TPaveText) containing several legend entries.
Double_t GetX2NDC() const
void ToLower()
Change string to lower-case.
virtual void RecursiveRemove(TObject *obj)
Reset the legend entries pointing to "obj".
virtual void SetTextAngle(Float_t tangle=0)
Set the text angle.
Int_t GetNColumns() const
virtual void SetTextFont(Font_t tfont=62)
Set the text font.
virtual void SetTextAttributes()
Invoke the DialogCanvas Text attributes.
virtual void InsertEntry(const char *objectName="", const char *label="", Option_t *option="lpf")
Add a new entry before the entry at the mouse position.
Color_t GetLegendFillColor() const
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.
Double_t Ceil(Double_t x)
TLegendEntry * GetEntry() const
Get entry pointed to by the mouse.