#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include "Riostream.h"
#include "TBufferFile.h"
#include "TROOT.h"
#include "TStyle.h"
#include "TPaveText.h"
#include "TPaveLabel.h"
#include "TVirtualPad.h"
#include "TMath.h"
#include "TLatex.h"
#include "TError.h"
#include "TColor.h"
#include "TClass.h"
ClassImp(TPaveText)
/*
<img src="gif/pavetext.gif">
*/
//End_Html
TPaveText::TPaveText(): TPave(), TAttText()
{
fLines = 0;
fMargin = 0.05;
fLongest = 0;
}
TPaveText::TPaveText(Double_t x1, Double_t y1,Double_t x2, Double_t y2, Option_t *option)
:TPave(x1,y1,x2,y2,4,option), TAttText(22,0,gStyle->GetTextColor(),gStyle->GetTextFont(),0)
{
fLines = new TList;
fMargin = 0.05;
fLongest = 0;
}
TPaveText::~TPaveText()
{
if (!TestBit(kNotDeleted)) return;
if (fLines) fLines->Delete();
delete fLines;
fLines = 0;
}
TPaveText::TPaveText(const TPaveText &pavetext) : TPave(), TAttText()
{
TBufferFile b(TBuffer::kWrite);
TPaveText *p = (TPaveText*)(&pavetext);
p->Streamer(b);
b.SetReadMode();
b.SetBufferOffset(0);
fLines = 0;
Streamer(b);
}
TPaveText& TPaveText::operator=(const TPaveText& pt)
{
if(this!=&pt) {
TPave::operator=(pt);
TAttText::operator=(pt);
fLabel=pt.fLabel;
fLongest=pt.fLongest;
fMargin=pt.fMargin;
fLines=pt.fLines;
}
return *this;
}
TBox *TPaveText::AddBox(Double_t x1, Double_t y1, Double_t x2, Double_t y2)
{
if (!gPad->IsEditable()) return 0;
TBox *newbox = new TBox(x1,y1,x2,y2);
if (!fLines) fLines = new TList;
fLines->Add(newbox);
return newbox;
}
TLine *TPaveText::AddLine(Double_t x1, Double_t y1, Double_t x2, Double_t y2)
{
if (!gPad->IsEditable()) return 0;
TLine *newline = new TLine(x1,y1,x2,y2);
if (!fLines) fLines = new TList;
fLines->Add(newline);
return newline;
}
TText *TPaveText::AddText(Double_t x1, Double_t y1, const char *text)
{
TLatex *newtext = new TLatex(x1,y1,text);
newtext->SetTextAlign(0);
newtext->SetTextColor(0);
newtext->SetTextFont(0);
newtext->SetTextSize(0);
Int_t nch = strlen(text);
if (nch > fLongest) fLongest = nch;
if (!fLines) fLines = new TList;
fLines->Add(newtext);
return newtext;
}
TText *TPaveText::AddText(const char *text)
{
return AddText(0,0,text);
}
void TPaveText::Clear(Option_t *)
{
if (!fLines) return;
fLines->Delete();
fLongest = 0;
}
void TPaveText::DeleteText()
{
if (!gPad->IsEditable()) return;
if (!fLines) return;
Double_t ymouse, yobj;
TObject *obj = GetObject(ymouse, yobj);
if (!obj) return;
if (!obj->InheritsFrom(TText::Class())) return;
fLines->Remove(obj);
delete obj;
}
void TPaveText::Draw(Option_t *option)
{
AppendPad(option);
}
void TPaveText::DrawFile(const char *filename, Option_t *option)
{
ReadFile(filename);
AppendPad(option);
}
void TPaveText::EditText()
{
if (!gPad->IsEditable()) return;
Double_t ymouse, yobj;
TObject *obj = GetObject(ymouse, yobj);
if (!obj) return;
if (!obj->InheritsFrom(TText::Class())) return;
TText *text = (TText*)obj;
gROOT->SetSelectedPrimitive(text);
gROOT->ProcessLine(Form("((TCanvas*)0x%lx)->SetSelected((TObject*)0x%lx)",
(ULong_t)gPad->GetCanvas(), (ULong_t)text));
gROOT->ProcessLine(Form("((TCanvas*)0x%lx)->Selected((TVirtualPad*)0x%lx,(TObject*)0x%lx,1)",
(ULong_t)gPad->GetCanvas(), (ULong_t)gPad, (ULong_t)text));
text->SetTextAttributes();
}
TText *TPaveText::GetLine(Int_t number) const
{
TText *line;
TIter next(fLines);
Int_t nlines = 0;
while ((line = (TText*) next())) {
if (nlines == number) return line;
nlines++;
}
return 0;
}
TText *TPaveText::GetLineWith(const char *text) const
{
TText *line;
TIter next(fLines);
while ((line = (TText*) next())) {
if (strstr(line->GetTitle(),text)) return line;
}
return 0;
}
TObject *TPaveText::GetObject(Double_t &ymouse, Double_t &yobj) const
{
if (!fLines) return 0;
Int_t nlines = GetSize();
if (nlines == 0) return 0;
ymouse = gPad->AbsPixeltoY(gPad->GetEventY());
Double_t yspace = (fY2 - fY1)/Double_t(nlines);
Double_t textsize = GetTextSize();
Double_t y1,y,dy;
if (textsize == 0) {
y1 = gPad->GetY1();
}
Double_t ytext = fY2 + 0.5*yspace;
Int_t valign;
dy = fY2 - fY1;
TObject *line;
TText *linet;
TLine *linel;
TBox *lineb;
TIter next(fLines);
while ((line = (TObject*) next())) {
if (line->IsA() == TLine::Class()) {
linel = (TLine*)line;
y1 = linel->GetY1(); if (y1 == 0) y1 = ytext; else y1 = fY1 + y1*dy;
if (TMath::Abs(y1-ymouse) < 0.2*yspace) {yobj = y1; return line;}
continue;
}
if (line->IsA() == TBox::Class()) {
lineb = (TBox*)line;
y1 = lineb->GetY1(); if (y1 == 0) y1 = ytext; else y1 = fY1 + y1*dy;
if (TMath::Abs(y1-ymouse) < 0.4*yspace) {yobj = y1; return line;}
continue;
}
if (line->InheritsFrom(TText::Class())) {
linet = (TText*)line;
ytext -= yspace;
Double_t yl = linet->GetY();
Short_t talign = linet->GetTextAlign();
if (talign == 0) talign = GetTextAlign();
if (yl > 0 && yl <1) {
ytext = fY1 + yl*dy;
}
valign = linet->GetTextAlign()%10;
y = ytext;
if (valign == 1) y = ytext -0.5*yspace;
if (valign == 3) y = ytext +0.5*yspace;
if (TMath::Abs(y-ymouse) < 0.5*yspace) {yobj = y; return line;}
}
}
return 0;
}
Int_t TPaveText::GetSize() const
{
Int_t nlines = 0;
TIter next(fLines);
TObject *line;
while ((line = (TObject*) next())) {
if (line->InheritsFrom(TText::Class())) nlines++;
}
return nlines;
}
void TPaveText::InsertLine()
{
if (!gPad->IsEditable()) return;
Double_t ymouse, yobj;
TObject *obj = GetObject(ymouse, yobj);
Double_t yline = (ymouse-fY1)/(fY2-fY1);
TLine *newline = AddLine(0,yline,0,yline);
if (obj) {
fLines->Remove(newline);
if (yobj < ymouse) fLines->AddBefore(obj,newline);
else fLines->AddAfter(obj,newline);
}
}
void TPaveText::InsertText(const char *text)
{
if (!gPad->IsEditable()) return;
Double_t ymouse, yobj;
TObject *obj = GetObject(ymouse, yobj);
TText *newtext = AddText(0,0,text);
if (obj) {
fLines->Remove(newtext);
if (yobj < ymouse) fLines->AddBefore(obj,newtext);
else fLines->AddAfter(obj,newtext);
}
}
void TPaveText::Paint(Option_t *option)
{
TPave::ConvertNDCtoPad();
TPave::PaintPave(fX1,fY1,fX2,fY2,GetBorderSize(),option);
PaintPrimitives(kPaveText);
}
void TPaveText::PaintPrimitives(Int_t mode)
{
if (!fLines) return;
Double_t dx = fX2 - fX1;
Double_t dy = fY2 - fY1;
Double_t textsize = GetTextSize();
Int_t nlines = GetSize();
if (nlines == 0) nlines = 5;
Double_t x1,y1,x2,y2;
y1 = gPad->GetY1();
y2 = gPad->GetY2();
Float_t margin = fMargin*dx;
Double_t yspace = dy/Double_t(nlines);
Double_t textsave = textsize;
TObject *line;
TText *linet;
TLatex *latex;
TIter next(fLines);
Double_t longest = 0;
Double_t w;
if (textsize == 0) {
textsize = 0.85*yspace/(y2 - y1);
while ((line = (TObject*) next())) {
if (line->IsA() == TLatex::Class()) {
latex = (TLatex*)line;
Float_t tangle = latex->GetTextAngle();
if (latex->GetTextSize() != 0) continue;
Style_t tfont = latex->GetTextFont();
if (tfont == 0) latex->SetTextFont(GetTextFont());
latex->SetTextSize(textsize);
w = latex->GetXsize();
latex->SetTextSize(0);
latex->SetTextAngle(tangle);
if (w > longest) longest = w;
latex->SetTextFont(tfont);
}
}
if (longest > 0.92*dx) textsize *= 0.92*dx/longest;
if (mode == kDiamond) textsize *= 0.66;
SetTextSize(textsize);
}
Double_t yfont;
if (GetTextFont()%10 > 2)
yfont = (gPad->PixeltoY(Int_t(-textsize))-gPad->PixeltoY(0))/(y2-y1)*dy;
else
yfont = textsize*dy;
Double_t ytext = fY2 + 0.5*yspace;
Double_t xtext = 0;
Int_t halign;
TLine *linel;
TBox *lineb;
next.Reset();
while ((line = (TObject*) next())) {
if (line->IsA() == TLine::Class()) {
linel = (TLine*)line;
x1 = linel->GetX1(); if (x1 == 0) x1 = fX1; else x1 = fX1 + x1*dx;
x2 = linel->GetX2(); if (x2 == 0) x2 = fX2; else x2 = fX1 + x2*dx;
y1 = linel->GetY1(); if (y1 == 0) y1 = ytext; else y1 = fY1 + y1*dy;
y2 = linel->GetY2(); if (y2 == 0) y2 = ytext; else y2 = fY1 + y2*dy;
linel->PaintLine(x1,y1,x2,y2);
continue;
}
if (line->IsA() == TBox::Class()) {
lineb = (TBox*)line;
x1 = lineb->GetX1();
if (x1) x1 = fX1 + x1*dx;
else x1 = fX1 + gPad->PixeltoX(1) - gPad->PixeltoX(0);
x2 = lineb->GetX2();
if (x2) x2 = fX1 + x2*dx;
else x2 = fX2;
y1 = lineb->GetY1(); if (y1 == 0) y1 = ytext; else y1 = fY1 + y1*dy;
y2 = lineb->GetY2(); if (y2 == 0) y2 = ytext; else y2 = fY1 + y2*dy;
lineb->PaintBox(x1,y1,x2,y2);
continue;
}
if (line->IsA() == TText::Class()) {
linet = (TText*)line;
ytext -= yspace;
Double_t xl = linet->GetX();
Double_t yl = linet->GetY();
Short_t talign = linet->GetTextAlign();
Color_t tcolor = linet->GetTextColor();
Style_t tfont = linet->GetTextFont();
Size_t tsize = linet->GetTextSize();
if (talign == 0) linet->SetTextAlign(GetTextAlign());
if (tcolor == 0) linet->SetTextColor(GetTextColor());
if (tfont == 0) linet->SetTextFont(GetTextFont());
if (tsize == 0) linet->SetTextSize(GetTextSize());
if (xl > 0 && xl <1) {
xtext = fX1 + xl*dx;
} else {
halign = linet->GetTextAlign()/10;
if (halign == 1) xtext = fX1 + margin;
if (halign == 2) xtext = 0.5*(fX1+fX2);
if (halign == 3) xtext = fX2 - margin;
}
if (yl > 0 && yl <1) ytext = fY1 + yl*dy;
linet->PaintText(xtext,ytext,linet->GetTitle());
linet->SetTextAlign(talign);
linet->SetTextColor(tcolor);
linet->SetTextFont(tfont);
linet->SetTextSize(tsize);
}
if (line->IsA() == TLatex::Class()) {
latex = (TLatex*)line;
ytext -= yspace;
Double_t xl = latex->GetX();
Double_t yl = latex->GetY();
Short_t talign = latex->GetTextAlign();
Color_t tcolor = latex->GetTextColor();
Style_t tfont = latex->GetTextFont();
Size_t tsize = latex->GetTextSize();
if (talign == 0) latex->SetTextAlign(GetTextAlign());
if (tcolor == 0) latex->SetTextColor(GetTextColor());
if (tfont == 0) latex->SetTextFont(GetTextFont());
if (tsize == 0) latex->SetTextSize(GetTextSize());
if (xl > 0 && xl <1) {
xtext = fX1 + xl*dx;
} else {
halign = latex->GetTextAlign()/10;
if (halign == 1) xtext = fX1 + margin;
if (halign == 2) xtext = 0.5*(fX1+fX2);
if (halign == 3) xtext = fX2 - margin;
}
if (yl > 0 && yl <1) ytext = fY1 + yl*dy;
latex->PaintLatex(xtext,ytext,latex->GetTextAngle(),
latex->GetTextSize(),
latex->GetTitle());
latex->SetTextAlign(talign);
latex->SetTextColor(tcolor);
latex->SetTextFont(tfont);
latex->SetTextSize(tsize);
latex->SetX(xl);
latex->SetY(yl);
}
}
SetTextSize(textsave);
if (fLabel.Length() > 0) {
dy = gPad->GetY2() - gPad->GetY1();
x1 = fX1 + 0.25*dx;
x2 = fX2 - 0.25*dx;
y1 = fY2 - 0.02*dy;
y2 = fY2 + 0.02*dy;
TPaveLabel *title = new TPaveLabel(x1,y1,x2,y2,fLabel.Data(),GetDrawOption());
title->SetFillColor(GetFillColor());
title->SetTextColor(GetTextColor());
title->SetTextFont(GetTextFont());
title->Paint();
delete title;
}
}
void TPaveText::Print(Option_t *option) const
{
TPave::Print(option);
if (fLines) fLines->Print();
}
void TPaveText::ReadFile(const char *filename, Option_t *option, Int_t nlines, Int_t fromline)
{
Int_t ival;
Float_t val;
TText *lastline = 0;
TString opt = option;
if (!opt.Contains("+")) {
Clear();
fLongest = 0;
}
SetTextAlign(12);
Int_t nch = strlen(filename);
if (nch == 0) return;
char *fname = StrDup(filename);
if (fname[nch-1] == ';') { nch--; fname[nch]=0;}
ifstream file(fname,ios::in);
if (!file.good()) {
Error("ReadFile", "illegal file name");
delete [] fname;
return;
}
const int linesize = 255;
char currentline[linesize];
char *ss, *sclose, *s= 0;
Int_t kline = 0;
while (1) {
file.getline(currentline,linesize);
if (file.eof())break;
if (kline >= fromline && kline < fromline+nlines) {
s = currentline;
if (strstr(s,"+SetText")) {
ss = s+8;
sclose = strstr(ss,")");
if (!sclose) continue;
*sclose = 0;
lastline = (TText*)fLines->Last();
if (!lastline) continue;
if (strstr(ss,"Color(")) {
sscanf(ss+6,"%d",&ival);
lastline->SetTextColor(ival);
continue;
}
if (strstr(ss,"Align(")) {
sscanf(ss+6,"%d",&ival);
lastline->SetTextAlign(ival);
continue;
}
if (strstr(ss,"Font(")) {
sscanf(ss+5,"%d",&ival);
lastline->SetTextFont(ival);
continue;
}
if (strstr(ss,"Size(")) {
sscanf(ss+5,"%f",&val);
lastline->SetTextSize(val);
continue;
}
if (strstr(ss,"Angle(")) {
sscanf(ss+6,"%f",&val);
lastline->SetTextAngle(val);
continue;
}
}
AddText(s);
}
kline++;
}
file.close();
delete [] fname;
}
void TPaveText::SaveLines(ostream &out, const char *name)
{
if (!fLines) return;
Int_t nlines = GetSize();
if (nlines == 0) return;
char quote = '"';
TObject *line;
TText *linet;
TLatex *latex;
TLine *linel;
TBox *lineb;
TIter next(fLines);
while ((line = (TObject*) next())) {
if (line->IsA() == TLine::Class()) {
linel = (TLine*)line;
if (gROOT->ClassSaved(TLine::Class())) {
out<<" ";
} else {
out<<" TLine *";
}
out<<"line = "<<name<<"->AddLine("
<<linel->GetX1()<<","<<linel->GetY1()<<","<<linel->GetX2()<<","<<linel->GetY2()<<");"<<endl;
if (linel->GetLineColor() != 1) {
if (linel->GetLineColor() > 228) {
TColor::SaveColor(out, linel->GetLineColor());
out<<" line->SetLineColor(ci);" << endl;
} else
out<<" line->SetLineColor("<<linel->GetLineColor()<<");"<<endl;
}
if (linel->GetLineStyle() != 1) {
out<<" line->SetLineStyle("<<linel->GetLineStyle()<<");"<<endl;
}
if (linel->GetLineWidth() != 1) {
out<<" line->SetLineWidth("<<linel->GetLineWidth()<<");"<<endl;
}
continue;
}
if (line->IsA() == TBox::Class()) {
lineb = (TBox*)line;
if (gROOT->ClassSaved(TBox::Class())) {
out<<" ";
} else {
out<<" TBox *";
}
out<<"box = "<<name<<"->AddBox("
<<lineb->GetX1()<<","<<lineb->GetY1()<<","<<lineb->GetX2()<<","<<lineb->GetY2()<<");"<<endl;
if (lineb->GetFillColor() != 18) {
if (lineb->GetFillColor() > 228) {
TColor::SaveColor(out, lineb->GetFillColor());
out<<" box->SetFillColor(ci);" << endl;
} else
out<<" box->SetFillColor("<<lineb->GetFillColor()<<");"<<endl;
}
if (lineb->GetFillStyle() != 1001) {
out<<" box->SetFillStyle("<<lineb->GetFillStyle()<<");"<<endl;
}
if (lineb->GetLineColor() != 1) {
if (lineb->GetLineColor() > 228) {
TColor::SaveColor(out, lineb->GetLineColor());
out<<" box->SetLineColor(ci);" << endl;
} else
out<<" box->SetLineColor("<<lineb->GetLineColor()<<");"<<endl;
}
if (lineb->GetLineStyle() != 1) {
out<<" box->SetLineStyle("<<lineb->GetLineStyle()<<");"<<endl;
}
if (lineb->GetLineWidth() != 1) {
out<<" box->SetLineWidth("<<lineb->GetLineWidth()<<");"<<endl;
}
continue;
}
if (line->IsA() == TText::Class()) {
linet = (TText*)line;
if (gROOT->ClassSaved(TText::Class())) {
out<<" ";
} else {
out<<" TText *";
}
if (!linet->GetX() && !linet->GetY()) {
TString s = linet->GetTitle();
s.ReplaceAll("\"","\\\"");
out<<"text = "<<name<<"->AddText("
<<quote<<s.Data()<<quote<<");"<<endl;
} else {
out<<"text = "<<name<<"->AddText("
<<linet->GetX()<<","<<linet->GetY()<<","<<quote<<linet->GetTitle()<<quote<<");"<<endl;
}
if (linet->GetTextColor()) {
if (linet->GetTextColor() > 228) {
TColor::SaveColor(out, linet->GetTextColor());
out<<" text->SetTextColor(ci);" << endl;
} else
out<<" text->SetTextColor("<<linet->GetTextColor()<<");"<<endl;
}
if (linet->GetTextFont()) {
out<<" text->SetTextFont("<<linet->GetTextFont()<<");"<<endl;
}
if (linet->GetTextSize()) {
out<<" text->SetTextSize("<<linet->GetTextSize()<<");"<<endl;
}
if (linet->GetTextAngle() != GetTextAngle()) {
out<<" text->SetTextAngle("<<linet->GetTextAngle()<<");"<<endl;
}
if (linet->GetTextAlign()) {
out<<" text->SetTextAlign("<<linet->GetTextAlign()<<");"<<endl;
}
}
if (line->IsA() == TLatex::Class()) {
latex = (TLatex*)line;
if (gROOT->ClassSaved(TLatex::Class())) {
out<<" ";
} else {
out<<" TText *";
}
if (!latex->GetX() && !latex->GetY()) {
TString sl = latex->GetTitle();
sl.ReplaceAll("\"","\\\"");
out<<"text = "<<name<<"->AddText("
<<quote<<sl.Data()<<quote<<");"<<endl;
} else {
out<<"text = "<<name<<"->AddText("
<<latex->GetX()<<","<<latex->GetY()<<","<<quote<<latex->GetTitle()<<quote<<");"<<endl;
}
if (latex->GetTextColor()) {
if (latex->GetTextColor() > 228) {
TColor::SaveColor(out, latex->GetTextColor());
out<<" text->SetTextColor(ci);" << endl;
} else
out<<" text->SetTextColor("<<latex->GetTextColor()<<");"<<endl;
}
if (latex->GetTextFont()) {
out<<" text->SetTextFont("<<latex->GetTextFont()<<");"<<endl;
}
if (latex->GetTextSize()) {
out<<" text->SetTextSize("<<latex->GetTextSize()<<");"<<endl;
}
if (latex->GetTextAngle() != GetTextAngle()) {
out<<" text->SetTextAngle("<<latex->GetTextAngle()<<");"<<endl;
}
if (latex->GetTextAlign()) {
out<<" text->SetTextAlign("<<latex->GetTextAlign()<<");"<<endl;
}
}
}
}
void TPaveText::SavePrimitive(ostream &out, Option_t * )
{
char quote = '"';
out<<" "<<endl;
if (gROOT->ClassSaved(TPaveText::Class())) {
out<<" ";
} else {
out<<" "<<ClassName()<<" *";
}
if (fOption.Contains("NDC")) {
out<<"pt = new "<<ClassName()<<"("<<fX1NDC<<","<<fY1NDC<<","<<fX2NDC<<","<<fY2NDC
<<","<<quote<<fOption<<quote<<");"<<endl;
} else {
out<<"pt = new "<<ClassName()<<"("<<gPad->PadtoX(fX1)<<","<<gPad->PadtoY(fY1)<<","<<gPad->PadtoX(fX2)<<","<<gPad->PadtoY(fY2)
<<","<<quote<<fOption<<quote<<");"<<endl;
}
if (strcmp(GetName(),"TPave")) {
out<<" pt->SetName("<<quote<<GetName()<<quote<<");"<<endl;
}
if (fLabel.Length() > 0) {
out<<" pt->SetLabel("<<quote<<fLabel<<quote<<");"<<endl;
}
if (fBorderSize != 4) {
out<<" pt->SetBorderSize("<<fBorderSize<<");"<<endl;
}
SaveFillAttributes(out,"pt",19,1001);
SaveLineAttributes(out,"pt",1,1,1);
SaveTextAttributes(out,"pt",22,0,1,62,0);
SaveLines(out,"pt");
out<<" pt->Draw();"<<endl;
}
void TPaveText::SetAllWith(const char *text, Option_t *option, Double_t value)
{
TString opt=option;
opt.ToLower();
TText *line;
TIter next(fLines);
while ((line = (TText*) next())) {
if (strstr(line->GetTitle(),text)) {
if (opt == "align") line->SetTextAlign(Int_t(value));
if (opt == "color") line->SetTextColor(Int_t(value));
if (opt == "font") line->SetTextFont(Int_t(value));
if (opt == "size") line->SetTextSize(value);
if (opt == "angle") line->SetTextAngle(value);
}
}
}
void TPaveText::Streamer(TBuffer &R__b)
{
if (R__b.IsReading()) {
UInt_t R__s, R__c;
Version_t R__v = R__b.ReadVersion(&R__s, &R__c);
if (R__v > 1) {
R__b.ReadClassBuffer(TPaveText::Class(), this, R__v, R__s, R__c);
return;
}
TPave::Streamer(R__b);
TAttText::Streamer(R__b);
if (R__v > 1) fLabel.Streamer(R__b);
R__b >> fLongest;
R__b >> fMargin;
R__b >> fLines;
R__b.CheckByteCount(R__s, R__c, TPaveText::IsA());
} else {
R__b.WriteClassBuffer(TPaveText::Class(),this);
}
}
void TPaveText::UseCurrentStyle()
{
if (gStyle->IsReading()) {
SetTextFont(gStyle->GetTextFont());
SetTextSize(gStyle->GetTextSize());
SetTextColor(gStyle->GetTextColor());
} else {
gStyle->SetTextColor(GetTextColor());
gStyle->SetTextFont(GetTextFont());
gStyle->SetTextSize(GetTextSize());
}
}