ROOT  6.07/01
Reference Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
TPavesText.cxx
Go to the documentation of this file.
1 // @(#)root/graf:$Id$
2 // Author: Rene Brun 19/11/95
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 "Riostream.h"
13 #include "TROOT.h"
14 #include "TPavesText.h"
15 #include "TVirtualPad.h"
16 #include "TBufferFile.h"
17 #include "TError.h"
18 
20 
21 
22 /** \class TPavesText
23 \ingroup BasicGraphics
24 
25 A PaveText (see TPaveText) with several stacked paves.
26 
27 \image html graf_pavestext.png
28 */
29 
30 ////////////////////////////////////////////////////////////////////////////////
31 /// Pavestext default constructor.
32 
34 {
35  fNpaves = 5;
36 }
37 
38 ////////////////////////////////////////////////////////////////////////////////
39 /// Pavestext normal constructor.
40 ///
41 /// The PavesText is by default defined both bordersize=1 and option ="br".
42 /// - option = "T" Top frame
43 /// - option = "B" Bottom frame
44 /// - option = "R" Right frame
45 /// - option = "L" Left frame
46 /// - option = "NDC" x1,y1,x2,y2 are given in NDC
47 /// - option = "ARC" corners are rounded
48 
50  :TPaveText(x1,y1,x2,y2,option)
51 {
52  fNpaves = npaves;
53  SetBorderSize(1);
54 }
55 
56 ////////////////////////////////////////////////////////////////////////////////
57 /// Pavestext default destructor.
58 
60 {
61 }
62 
63 ////////////////////////////////////////////////////////////////////////////////
64 /// Pavestext copy constructor.
65 
67 {
69  TPavesText *p = (TPavesText*)(&pavestext);
70  p->Streamer(b);
71  b.SetReadMode();
72  b.SetBufferOffset(0);
73  Streamer(b);
74 }
75 
76 ////////////////////////////////////////////////////////////////////////////////
77 /// Draw this pavestext with its current attributes.
78 
80 {
81  AppendPad(option);
82 }
83 
84 ////////////////////////////////////////////////////////////////////////////////
85 /// Paint this pavestext with its current attributes.
86 
88 {
89  // Draw the fNpaves-1 stacked paves
90  // The spacing between paves is set to 3 times the bordersize
91  Int_t bordersize = GetBorderSize();
92  const char *opt = GetOption();
93  Double_t signx, signy;
94  if (strstr(opt,"l")) signx = -1;
95  else signx = 1;
96  if (strstr(opt,"b")) signy = -1;
97  else signy = 1;
98  Double_t dx = 3*signx*(gPad->PixeltoX(bordersize) - gPad->PixeltoX(0));
99  Double_t dy = 3*signy*(gPad->PixeltoY(bordersize) - gPad->PixeltoY(0));
100 
102 
103  for (Int_t ipave=fNpaves;ipave>1;ipave--) {
104  Double_t x1 = fX1 + dx*Double_t(ipave-1);
105  Double_t y1 = fY1 - dy*Double_t(ipave-1);
106  Double_t x2 = fX2 + dx*Double_t(ipave-1);
107  Double_t y2 = fY2 - dy*Double_t(ipave-1);
108  TPave::PaintPave(x1,y1,x2,y2,bordersize,option);
109  }
110 
111  // Draw the top pavetext
112  TPaveText::Paint(option);
113 }
114 
115 ////////////////////////////////////////////////////////////////////////////////
116 /// Save primitive as a C++ statement(s) on output stream out
117 
118 void TPavesText::SavePrimitive(std::ostream &out, Option_t * /*= ""*/)
119 {
120  if (!strcmp(GetName(),"stats")) return;
121  if (!strcmp(GetName(),"title")) return;
122  char quote = '"';
123  out<<" "<<std::endl;
124  if (gROOT->ClassSaved(TPavesText::Class())) {
125  out<<" ";
126  } else {
127  out<<" TPavesText *";
128  }
129  out<<"pst = new TPavesText("<<fX1<<","<<fY1<<","<<fX2<<","<<fY2
130  <<","<<fNpaves<<","<<quote<<fOption<<quote<<");"<<std::endl;
131 
132  if (strcmp(GetName(),"TPave")) {
133  out<<" pst->SetName("<<quote<<GetName()<<quote<<");"<<std::endl;
134  }
135  if (fLabel.Length() > 0) {
136  out<<" pst->SetLabel("<<quote<<fLabel<<quote<<");"<<std::endl;
137  }
138  if (fBorderSize != 4) {
139  out<<" pst->SetBorderSize("<<fBorderSize<<");"<<std::endl;
140  }
141  SaveFillAttributes(out,"pst",0,1001);
142  SaveLineAttributes(out,"pst",1,1,1);
143  SaveTextAttributes(out,"pst",22,0,1,62,0);
144  TPaveText::SaveLines(out,"pst");
145  out<<" pst->Draw();"<<std::endl;
146 }
void SetBufferOffset(Int_t offset=0)
Definition: TBuffer.h:90
The concrete implementation of TBuffer for writing/reading to/from a ROOT file or socket...
Definition: TBufferFile.h:51
Ssiz_t Length() const
Definition: TString.h:390
const char Option_t
Definition: RtypesCore.h:62
Int_t GetBorderSize() const
Definition: TPave.h:63
Double_t fY2
Definition: TBox.h:53
#define gROOT
Definition: TROOT.h:344
int Int_t
Definition: RtypesCore.h:41
virtual void Draw(Option_t *option="")
Draw this pavestext with its current attributes.
Definition: TPavesText.cxx:79
virtual void AppendPad(Option_t *option="")
Append graphics object to current pad.
Definition: TObject.cxx:164
virtual void ConvertNDCtoPad()
Convert pave coordinates from NDC to Pad coordinates.
Definition: TPave.cxx:121
Double_t fY1
Definition: TBox.h:51
static const double x2[5]
virtual void Paint(Option_t *option="")
Paint this pavetext with its current attributes.
Definition: TPaveText.cxx:392
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:257
void Class()
Definition: Class.C:29
TString fLabel
Definition: TPaveText.h:38
char * out
Definition: TBase64.cxx:29
Option_t * GetOption() const
Definition: TPave.h:66
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:344
Double_t fX2
Definition: TBox.h:52
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:229
Double_t fX1
tool tip associated with box
Definition: TBox.h:50
void SetReadMode()
Set buffer in read mode.
Definition: TBuffer.cxx:269
virtual void Paint(Option_t *option="")
Paint this pavestext with its current attributes.
Definition: TPavesText.cxx:87
Option_t * GetName() const
Returns name of object.
Definition: TPave.h:65
Int_t fBorderSize
Definition: TPave.h:38
virtual ~TPavesText()
Pavestext default destructor.
Definition: TPavesText.cxx:59
static const double x1[5]
A Pave (see TPave) with text, lines or/and boxes inside.
Definition: TPaveText.h:35
#define ClassImp(name)
Definition: Rtypes.h:279
double Double_t
Definition: RtypesCore.h:55
Int_t fNpaves
Definition: TPavesText.h:31
virtual void SavePrimitive(std::ostream &out, Option_t *option="")
Save primitive as a C++ statement(s) on output stream out.
Definition: TPavesText.cxx:118
#define gPad
Definition: TVirtualPad.h:288
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.
Definition: TPave.cxx:294
TString fOption
Definition: TPave.h:42
A PaveText (see TPaveText) with several stacked paves.
Definition: TPavesText.h:28
virtual void SetBorderSize(Int_t bordersize=4)
Definition: TPave.h:82
virtual void SaveLines(std::ostream &out, const char *name)
Save lines of this pavetext as C++ statements on output stream out.
Definition: TPaveText.cxx:658