Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
TLegendEntry.cxx
Go to the documentation of this file.
1// @(#)root/graf:$Id$
2// Author: Matthew.Adam.Dobbs 06/09/99
3
4/*************************************************************************
5 * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers. *
6 * All rights reserved. *
7 * *
8 * For the licensing terms see $ROOTSYS/LICENSE. *
9 * For the list of contributors see $ROOTSYS/README/CREDITS. *
10 *************************************************************************/
11
12#include <cstdio>
13
14#include "TLegendEntry.h"
15#include "TVirtualPad.h"
16#include "TROOT.h"
17#include <iostream>
18
20
21/** \class TLegendEntry
22\ingroup BasicGraphics
23
24Storage class for one entry of a TLegend.
25*/
26
27////////////////////////////////////////////////////////////////////////////////
28/// TLegendEntry do-nothing default constructor
29
34
35////////////////////////////////////////////////////////////////////////////////
36/// TLegendEntry normal constructor for one entry in a TLegend.
37///
38/// obj is the object this entry will represent. If obj has
39/// line/fill/marker attributes, then the TLegendEntry will display
40/// these attributes.
41///
42/// label is the text that will describe the entry, it is displayed using
43/// TLatex, so may have a complex format.
44///
45/// option may have values
46/// - L draw line associated w/ TAttLine if obj inherits from TAttLine
47/// - P draw polymarker assoc. w/ TAttMarker if obj inherits from TAttMarker
48/// - F draw a box with fill associated w/ TAttFill if obj inherits TAttFill
49/// default is object = "LPF"
50
51TLegendEntry::TLegendEntry(const TObject* obj, const char* label, Option_t* option )
52 :TAttText(0,0,0,0,0), TAttLine(1,1,1), TAttFill(0,0), TAttMarker(1,21,1)
53{
54 fObject = nullptr;
55 if ( !label && obj ) fLabel = obj->GetTitle();
56 else fLabel = label;
58 if (obj) SetObject((TObject*)obj);
59}
60
61////////////////////////////////////////////////////////////////////////////////
62/// TLegendEntry copy constructor
63
68
69////////////////////////////////////////////////////////////////////////////////
70/// TLegendEntry default destructor
71
73{
74 fObject = nullptr;
75}
76
77////////////////////////////////////////////////////////////////////////////////
78/// copy this TLegendEntry into obj
79
80void TLegendEntry::Copy( TObject &obj ) const
81{
82 TObject::Copy(obj);
87 ((TLegendEntry&)obj).fObject = fObject;
88 ((TLegendEntry&)obj).fLabel = fLabel;
89 ((TLegendEntry&)obj).fOption = fOption;
90}
91
92////////////////////////////////////////////////////////////////////////////////
93/// dump this TLegendEntry to std::cout
94
96{
98 std::cout << "TLegendEntry: Object ";
99 if ( fObject ) output = fObject->GetName();
100 else output = "NULL";
101 std::cout << output << " Label ";
102 if ( fLabel ) output = fLabel.Data();
103 else output = "NULL";
104 std::cout << output << " Option ";
105 if (fOption ) output = fOption.Data();
106 else output = "NULL";
107 std::cout << output << std::endl;
108}
109
110////////////////////////////////////////////////////////////////////////////////
111/// Save this TLegendEntry as C++ statements on output stream out
112/// to be used with the SaveAs .C option
113
114void TLegendEntry::SaveEntry(std::ostream &out, const char* name)
115{
116 if (gROOT->ClassSaved(TLegendEntry::Class()))
117 out << " legentry = ";
118 else
119 out << " TLegendEntry *legentry = ";
120
121 TString objname = fObject ? fObject->GetName() : "NULL";
122 out << name << "->AddEntry(\"" << objname << "\",\"" << TString(fLabel).ReplaceSpecialCppChars() << "\",\""
123 << TString(fOption).ReplaceSpecialCppChars() << "\");\n";
124 // if default style is detected - copy attributes from object
125 // it can happen when legend was not paint before writing into the file
126 if (fObject && GetFillStyle() == 0 && GetFillColor() == 0 && GetLineStyle() == 1 && GetLineColor() == 1 && GetLineWidth() == 1) {
127 TString opt = fOption;
128 opt.ToLower();
129 if (opt.Contains("f") && fObject->InheritsFrom(TAttFill::Class()))
130 dynamic_cast<TAttFill*>(fObject)->Copy(*this);
132 dynamic_cast<TAttMarker*>(fObject)->Copy(*this);
133 if ((opt.Contains("l") || opt.Contains("f")) && fObject->InheritsFrom(TAttLine::Class()))
134 dynamic_cast<TAttLine*>(fObject)->Copy(*this);
135 }
136
137 SaveFillAttributes(out, "legentry", 0, 0);
138 SaveLineAttributes(out, "legentry", 1, 1, 1);
139 SaveMarkerAttributes(out, "legentry", 1, 21, 1);
140 SaveTextAttributes(out, "legentry", 0, 0, 0, 0, 0);
141}
142
143////////////////////////////////////////////////////////////////////////////////
144/// (re)set the obj pointed to by this entry
145
147{
148 if ( ( fObject && fLabel == fObject->GetTitle() ) || !fLabel ) {
149 if (obj) fLabel = obj->GetTitle();
150 }
151 fObject = obj;
152}
153
154////////////////////////////////////////////////////////////////////////////////
155/// (re)set the obj pointed to by this entry
156
157void TLegendEntry::SetObject(const char* objectName)
158{
159 TList *padprimitives = gPad ? gPad->GetListOfPrimitives() : nullptr;
160 TObject *obj = padprimitives ? padprimitives->FindObject(objectName) : nullptr;
161 if (obj) SetObject(obj);
162}
const char Option_t
Definition RtypesCore.h:66
#define ClassImp(name)
Definition Rtypes.h:376
Option_t Option_t option
char name[80]
Definition TGX11.cxx:110
#define gROOT
Definition TROOT.h:414
#define gPad
Fill Area Attributes class.
Definition TAttFill.h:20
virtual Color_t GetFillColor() const
Return the fill area color.
Definition TAttFill.h:31
void Copy(TAttFill &attfill) const
Copy this fill attributes to a new TAttFill.
Definition TAttFill.cxx:207
virtual Style_t GetFillStyle() const
Return the fill area style.
Definition TAttFill.h:32
static TClass * Class()
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.
Definition TAttFill.cxx:239
Line Attributes class.
Definition TAttLine.h:20
virtual Color_t GetLineColor() const
Return the line color.
Definition TAttLine.h:35
virtual Width_t GetLineWidth() const
Return the line width.
Definition TAttLine.h:37
static TClass * Class()
virtual Style_t GetLineStyle() const
Return the line style.
Definition TAttLine.h:36
void Copy(TAttLine &attline) const
Copy this line attributes to a new TAttLine.
Definition TAttLine.cxx:177
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.
Definition TAttLine.cxx:275
Marker Attributes class.
Definition TAttMarker.h:20
virtual void SaveMarkerAttributes(std::ostream &out, const char *name, Int_t coldef=1, Int_t stydef=1, Int_t sizdef=1)
Save line attributes as C++ statement(s) on output stream out.
void Copy(TAttMarker &attmarker) const
Copy this marker attributes to a new TAttMarker.
static TClass * Class()
Text Attributes class.
Definition TAttText.h:20
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.
Definition TAttText.cxx:373
void Copy(TAttText &atttext) const
Copy this text attributes to a new TAttText.
Definition TAttText.cxx:294
Storage class for one entry of a TLegend.
TObject * fObject
pointer to object being represented by this entry
TLegendEntry()
TLegendEntry do-nothing default constructor.
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 ....
static TClass * Class()
~TLegendEntry() override
TLegendEntry default destructor.
TString fLabel
Text associated with the entry, will become latex.
virtual void SetObject(TObject *obj)
(re)set the obj pointed to by this entry
void Copy(TObject &obj) const override
copy this TLegendEntry into obj
void Print(Option_t *option="") const override
dump this TLegendEntry to std::cout
TString fOption
Options associated with this entry.
A doubly linked list.
Definition TList.h:38
Mother of all ROOT objects.
Definition TObject.h:41
virtual const char * GetName() const
Returns name of object.
Definition TObject.cxx:457
virtual Bool_t InheritsFrom(const char *classname) const
Returns kTRUE if object inherits from class "classname".
Definition TObject.cxx:543
virtual void Copy(TObject &object) const
Copy this to obj.
Definition TObject.cxx:159
virtual const char * GetTitle() const
Returns title of object.
Definition TObject.cxx:501
Basic string class.
Definition TString.h:139
void ToLower()
Change string to lower-case.
Definition TString.cxx:1182
TString & ReplaceSpecialCppChars()
Find special characters which are typically used in printf() calls and replace them by appropriate es...
Definition TString.cxx:1114
const char * Data() const
Definition TString.h:376
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
Definition TString.h:632
static void output()