Text Attributes class.
This class is used (in general by secondary inheritance) by many other classes (graphics, histograms). It holds all the text attributes.
Text attributes
Text attributes are:
Text Alignment
The text alignment is an integer number (align
) allowing to control the horizontal and vertical position of the text string with respect to the text position. The text alignment of any class inheriting from TAttText
can be changed using the method SetTextAlign
and retrieved using the method GetTextAlign
.
align = 10*HorizontalAlign + VerticalAlign
For horizontal alignment the following convention applies:
1=left adjusted, 2=centered, 3=right adjusted
For vertical alignment the following convention applies:
1=bottom adjusted, 2=centered, 3=top adjusted
For example:
align = 11 = left adjusted and bottom adjusted
align = 32 = right adjusted and vertically centered
{
auto *Ta =
new TCanvas(
"Ta",
"Ta",0,0,500,200);
Ta->Range(0,0,1,1);
lv->SetLineStyle(3);
lv->SetLineColor(
kBlue);
lv->DrawLine(0.33,0.0,0.33,1.0);
lv->DrawLine(0.6,0.165,1.,0.165);
lv->DrawLine(0.6,0.493,1.,0.493);
lv->DrawLine(0.6,0.823,1.,0.823);
auto *
th1 =
new TText(0.33,0.165,
"Left adjusted");
th1->SetTextAlign(11);
th1->SetTextSize(0.12);
auto *
th2 =
new TText(0.33,0.493,
"Center adjusted");
th2->SetTextAlign(21);
th2->SetTextSize(0.12);
auto *
th3 =
new TText(0.33,0.823,
"Right adjusted");
th3->SetTextAlign(31);
th3->SetTextSize(0.12);
auto *
tv1 =
new TText(0.66,0.165,
"Bottom adjusted");
tv1->SetTextAlign(11);
tv1->SetTextSize(0.12);
auto *
tv2 =
new TText(0.66,0.493,
"Center adjusted");
tv2->SetTextAlign(12);
tv2->SetTextSize(0.12);
auto *
tv3 =
new TText(0.66,0.823,
"Top adjusted");
tv3->SetTextAlign(13);
tv3->SetTextSize(0.12);
}
Base class for several text objects.
Mnemonic constants are available:
They allow to write:
Text Angle
Text angle in degrees. The text angle of any class inheriting from TAttText
can be changed using the method SetTextAngle
and retrieved using the method GetTextAngle
. The following picture shows the text angle:
{
auto *Ta =
new TCanvas(
"Ta",
"Text angle",0,0,300,326);
Ta->Range(0,0,1,1);
l->DrawLine(0.1,0.1,0.9,0.1);
l->DrawLine(0.1,0.1,0.9,0.9);
a->SetLineColor(
kBlue);
a->SetLineStyle(3);
a->DrawArc(0.1, 0.1, 0.2, 0.,45.,
"only");
auto *
tt =
new TText(0.1,0.1,
"Text angle is 45 degrees");
tt->SetTextAlign(11);
tt->SetTextSize(0.1);
auto *
t1 =
new TLatex(0.3,0.18,
"45^{o}");
}
To draw Mathematical Formula.
Text Color
The text color is a color index (integer) pointing in the ROOT color table. The text color of any class inheriting from TAttText
can be changed using the method SetTextColor
and retrieved using the method GetTextColor
. The following table shows the first 50 default colors.
Color transparency
SetTextColorAlpha()
, allows to set a transparent color. In the following example the text color of the text text
is set to blue with a transparency of 35%. The color kBlue
itself remains fully opaque.
virtual void SetTextColorAlpha(Color_t tcolor, Float_t talpha)
Set a transparent marker color.
The transparency is available on all platforms when the flagOpenGL.CanvasPreferGL
is set to 1
in $ROOTSYS/etc/system.rootrc
, or on Mac with the Cocoa backend. On the file output it is visible with PDF, PNG, Gif, JPEG, SVG ... but not PostScript.
Text Size
If the text precision (see next paragraph) is smaller than 3, the text size (textsize
) is a fraction of the current pad size. Therefore the same textsize
value can generate text outputs with different absolute sizes in two different pads. The text size in pixels (charheight
) is computed the following way:
pad_width =
gPad->XtoPixel(
gPad->GetX2());
pad_height =
gPad->YtoPixel(
gPad->GetY1());
if (pad_width < pad_height) charheight = textsize*pad_width;
else charheight = textsize*pad_height;
If the text precision is equal to 3, the text size doesn't depend on the pad's dimensions. A given textsize
value always generates the same absolute size. The text size (charheight
) is given in pixels:
Note that to scale fonts to the same size as the old True Type package a scale factor of 0.93376068
is apply to the text size before drawing.
The text size of any class inheriting from TAttText
can be changed using the method SetTextSize
and retrieved using the method GetTextSize
.
Text Font and Precision
The text font code is combination of the font number and the precision.
Text font code = 10*fontnumber + precision
Font numbers must be between 1 and 14.
The precision can be:
precision = 0
fast hardware fonts (steps in the size)
precision = 1
scalable and rotatable hardware fonts (see below)
precision = 2
scalable and rotatable hardware fonts
precision = 3
scalable and rotatable hardware fonts. Text size is given in pixels.
The text font and precision of any class inheriting from TAttText
can be changed using the method SetTextFont
and retrieved using the method GetTextFont
.
Font quality and speed
When precision 0 is used, only the original non-scaled system fonts are used. The fonts have a minimum (4) and maximum (37) size in pixels. These fonts are fast and are of good quality. Their size varies with large steps and they cannot be rotated. Precision 1 and 2 fonts have a different behaviour depending if the True Type Fonts (TTF) are used or not. If TTF are used, you always get very good quality scalable and rotatable fonts. However TTF are slow.
How to use True Type Fonts
One can activate the TTF by adding (or activating) the following line in the .rootrc
file:
Unix.*.Root.UseTTFonts: true
It is possible to check the TTF are in use in a Root session with the command:
virtual void Print(Option_t *option="") const
Print all resources or the global, user or local resources separately.
If the TTF are in use the following line will appear at the beginning of the printout given by this command:
Unix.*.Root.UseTTFonts: true [Global]
List of the currently supported fonts
Font number
X11 Names Win32/
TTF Names
1 : times-medium-i-normal "Times New Roman"
2 : times-bold-
r-normal
"Times New Roman"
3 : times-bold-i-normal "Times New Roman"
4 : helvetica-medium-
r-normal
"Arial"
5 : helvetica-medium-o-normal "Arial"
6 : helvetica-bold-
r-normal
"Arial"
7 : helvetica-bold-o-normal "Arial"
8 : courier-medium-
r-normal
"Courier New"
9 : courier-medium-o-normal "Courier New"
10 : courier-bold-
r-normal
"Courier New"
11 : courier-bold-o-normal "Courier New"
12 : symbol-medium-
r-normal
"Symbol"
13 : times-medium-
r-normal
"Times New Roman"
14 : "Wingdings"
15 : Symbol italic (derived from Symbol)
Interface to the freetype 2 library.
The following picture shows how each font looks. The number on the left is the "text font code". In this picture precision 2 was selected.
Definition at line 18 of file TAttText.h.