Logo ROOT  
Reference Guide
transp_text.C
Go to the documentation of this file.
1/// \file
2/// \ingroup tutorial_gl
3/// This macro is based on labels1.C by Rene Brun.
4/// Updated by Timur Pocheptsov to use transparent text.
5/// The macro requires OpenGL - either enable by
6/// `gStyle->SetCanvasPreferGL(kTRUE);` or by setting
7/// `OpenGL.CanvasPreferGL` to 1 in `$ROOTSYS/etc/system.rootrc`.
8///
9/// \macro_image(nobatch)
10/// \macro_code
11///
12/// \author Timur Pocheptsov
13
14//Includes for ACLiC (cling does not need them).
15#include "TPaveText.h"
16#include "TCanvas.h"
17#include "TRandom.h"
18#include "TError.h"
19#include "TColor.h"
20#include "TStyle.h"
21#include "TH1F.h"
22
23//Aux. functions for tutorials/gl.
24#include "customcolorgl.h"
25
26void transp_text()
27{
28 //1. Try to 'allocate' free indices for our custom colors -
29 //we can use hard-coded indices like 1001, 1002, 1003 ... but
30 //I prefer to find free indices in a ROOT's color table
31 //to avoid possible conflicts with other tutorials.
32 Int_t indices[2] = {};
34 Error("transp_text", "failed to create new custom colors");
35 return;
36 }
37
38 //2. Create special transparent colors for both pavetext fill color and text color.
39 const Int_t grayColorIndex = indices[0], blackColorIndex = indices[1];
40 new TColor(grayColorIndex, 0.8, 0.8, 0.8, "transparent_gray", 0.85);
41 new TColor(blackColorIndex, 0., 0., 0., "transparent_black", 0.5);
42
43 //3. Create a TCanvas.
45
46 TCanvas * const c1 = new TCanvas("transparent text","transparent text demo", 10, 10, 900, 500);
47 if (!c1->UseGL())
48 ::Warning("transp_text", "to use this macro you need OpenGL");
49
50 c1->SetGrid();
51 c1->SetBottomMargin(0.15);
52
53 const Int_t nx = 20;
54 const char *people[nx] = {"Jean","Pierre","Marie","Odile",
55 "Sebastien","Fons","Rene","Nicolas","Xavier","Greg",
56 "Bjarne","Anton","Otto","Eddy","Peter","Pasha",
57 "Philippe","Suzanne","Jeff","Valery"};
58
59 TH1F * const h = new TH1F("h4", "test", nx, 0, nx);
60
61 h->SetFillColor(38);
62 for (Int_t i = 0; i < 5000; ++i)
63 h->Fill(gRandom->Gaus(0.5 * nx, 0.2 * nx));
64
65 h->SetStats(0);
66 for (Int_t i = 1; i <= nx; ++i)
67 h->GetXaxis()->SetBinLabel(i, people[i - 1]);
68
69 h->Draw();
70
71 TPaveText * const pt = new TPaveText(0.3, 0.3, 0.98, 0.98, "brNDC");
72 //Transparent 'rectangle' with transparent text.
73 pt->SetFillColor(grayColorIndex);
74 pt->SetTextColor(blackColorIndex);
75
76 pt->SetTextSize(0.5);
77 pt->SetTextAlign(12);
78
79 pt->AddText("Hello");
80 pt->Draw();
81}
#define h(i)
Definition: RSha256.hxx:106
int Int_t
Definition: RtypesCore.h:41
const Bool_t kTRUE
Definition: RtypesCore.h:87
void Error(const char *location, const char *msgfmt,...)
void Warning(const char *location, const char *msgfmt,...)
R__EXTERN TRandom * gRandom
Definition: TRandom.h:62
R__EXTERN TStyle * gStyle
Definition: TStyle.h:407
virtual void SetFillColor(Color_t fcolor)
Set the fill area color.
Definition: TAttFill.h:37
virtual void SetTextAlign(Short_t align=11)
Set the text alignment.
Definition: TAttText.h:41
virtual void SetTextColor(Color_t tcolor=1)
Set the text color.
Definition: TAttText.h:43
virtual void SetTextSize(Float_t tsize=1)
Set the text size.
Definition: TAttText.h:46
The Canvas class.
Definition: TCanvas.h:31
The color creation and management class.
Definition: TColor.h:19
1-D histogram with a float per channel (see TH1 documentation)}
Definition: TH1.h:571
A Pave (see TPave) with text, lines or/and boxes inside.
Definition: TPaveText.h:21
virtual TText * AddText(Double_t x1, Double_t y1, const char *label)
Add a new Text line to this pavetext at given coordinates.
Definition: TPaveText.cxx:182
virtual void Draw(Option_t *option="")
Draw this pavetext with its current attributes.
Definition: TPaveText.cxx:233
virtual Double_t Gaus(Double_t mean=0, Double_t sigma=1)
Samples a random number from the standard Normal (Gaussian) Distribution with the given mean and sigm...
Definition: TRandom.cxx:263
void SetCanvasPreferGL(Bool_t prefer=kTRUE)
Definition: TStyle.h:320
TPaveText * pt
return c1
Definition: legend1.C:41
unsigned FindFreeCustomColorIndices(T(&indices)[N])
Definition: customcolorgl.h:40