Dear Rooters, The box width of a entry of TLegend is strange for root 3.05/06 and 3.05/07. I think there are some mistakes in the source code of TLegend.cxx (Line445-Line461). The original version of TLegend.cxx and my correction are shown below. Please check the code. Best Regards Hajime //////////////////////////////////////////////////////////////////// //1)CVS version of TLegend.cxx //////////////////////////////////////////////////////////////////// if ( opt.Contains("f") && !opt.Contains("l")) { // box total height is yspace*0.7 Double_t boxwidth = yspace* (gPad->GetX2()-gPad->GetX1())/(gPad->GetY2()-gPad->GetY1()); if ( boxwidth > margin ) boxwidth = margin; entryline.PaintLine( xsym - boxwidth, ysym + yspace*0.35, xsym + boxwidth, ysym + yspace*0.35); entryline.PaintLine( xsym - boxwidth, ysym - yspace*0.35, xsym + boxwidth, ysym - yspace*0.35); entryline.PaintLine( xsym + boxwidth, ysym - yspace*0.35, xsym + boxwidth, ysym + yspace*0.35); entryline.PaintLine( xsym - boxwidth, ysym - yspace*0.35, xsym - boxwidth, ysym + yspace*0.35); } else { entryline.Paint(); } //////////////////////////////////////////////////////////////////// //2)Corrected by me //////////////////////////////////////////////////////////////////// if ( opt.Contains("f") && !opt.Contains("l")) { // box total height is yspace*0.7 Double_t boxwidth = yspace* (gPad->GetX2()-gPad->GetX1())/(gPad->GetY2()-gPad->GetY1()); if ( boxwidth > margin ) boxwidth = margin; entryline.PaintLine( xsym - boxwidth*0.35, ysym + yspace*0.35, xsym + boxwidth*0.35, ysym + yspace*0.35); entryline.PaintLine( xsym - boxwidth*0.35, ysym - yspace*0.35, xsym + boxwidth*0.35, ysym - yspace*0.35); entryline.PaintLine( xsym + boxwidth*0.35, ysym - yspace*0.35, xsym + boxwidth*0.35, ysym + yspace*0.35); entryline.PaintLine( xsym - boxwidth*0.35, ysym - yspace*0.35, xsym - boxwidth*0.35, ysym + yspace*0.35); } else { entryline.Paint(); } //////////////////////////////////////////////////////////////////// //A simple script used for the check was listed below. //////////////////////////////////////////////////////////////////// { gROOT->SetStyle("Plain"); TH1F *h=new TH1F("h"," ",5,0,5); h->SetFillStyle(3004); h->SetFillColor(1); h->Fill(3); h->Draw(); TLegend *leg=new TLegend(0.2,0.2,0.4,0.4); leg->AddEntry(h,"test","f"); leg->Draw(); }
This archive was generated by hypermail 2b29 : Thu Jan 01 2004 - 17:50:14 MET