Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches

The color creation and management class.

Introduction

Colors are defined by their red, green and blue components, simply called the RGB components. The colors are also known by the hue, light and saturation components also known as the HLS components. When a new color is created the components of both color systems are computed.

At initialization time, a table of colors is generated. An existing color can be retrieved by its index:

TColor *color = gROOT->GetColor(10);
#define gROOT
Definition TROOT.h:406
The color creation and management class.
Definition TColor.h:21
static Int_t GetColor(const char *hexcolor)
Static method returning color number for color specified by hex color string of form: "#rrggbb",...
Definition TColor.cxx:1920

Then it can be manipulated. For example its RGB components can be modified:

color->SetRGB(0.1, 0.2, 0.3);
virtual void SetRGB(Float_t r, Float_t g, Float_t b)
Initialize this color and its "dark" and "bright" associated colors.
Definition TColor.cxx:1850

A new color can be created the following way:

Int_t ci = 1756; // color index
auto color = new TColor(ci, 0.1, 0.2, 0.3);
TColor()
Default constructor.
Definition TColor.cxx:1061
Since
6.07/07: TColor::GetFreeColorIndex() allows to make sure the new color is created with an unused color index:
auto color = new TColor(ci, 0.1, 0.2, 0.3);
static Int_t GetFreeColorIndex()
Static function: Returns the free color index greater than the highest defined color index.
Definition TColor.cxx:2364

Two sets of colors are initialized;

  • The basic colors: colors with index from 0 to 50.
  • The color wheel: colors with indices from 300 to 1000.

Basic colors

The following image displays the 50 basic colors.

{
auto c = new TCanvas("c","Fill Area colors",0,0,500,200);
c->DrawColorTable();
return c;
}
#define c(i)
Definition RSha256.hxx:101
The Canvas class.
Definition TCanvas.h:23

The color wheel

The wheel contains the recommended 216 colors to be used in web applications.

The colors in the color wheel are created by TColor::CreateColorWheel.

Using this color set for your text, background or graphics will give your application a consistent appearance across different platforms and browsers.

Colors are grouped by hue, the aspect most important in human perception. Touching color chips have the same hue, but with different brightness and vividness.

Colors of slightly different hues clash. If you intend to display colors of the same hue together, you should pick them from the same group.

Each color chip is identified by a mnemonic (e.g. kYellow) and a number. The keywords, kRed, kBlue, kYellow, kPink, etc are defined in the header file Rtypes.h that is included in all ROOT other header files. It is better to use these keywords in user code instead of hardcoded color numbers, e.g.:

myObject.SetFillColor(kRed);
myObject.SetFillColor(kYellow-10);
myLine.SetLineColor(kMagenta+2);
@ kRed
Definition Rtypes.h:66
@ kMagenta
Definition Rtypes.h:66
@ kYellow
Definition Rtypes.h:66
{
auto w = new TColorWheel();
auto cw = new TCanvas("cw","cw",0,0,400,400);
w->SetCanvas(cw);
w->Draw();
}
Draw the ROOT Color Wheel.
Definition TColorWheel.h:23

The complete list of predefined color names is the following:

kWhite = 0, kBlack = 1, kGray = 920, kRed = 632, kGreen = 416,
kBlue = 600, kYellow = 400, kMagenta = 616, kCyan = 432, kOrange = 800,
kSpring = 820, kTeal = 840, kAzure = 860, kViolet = 880, kPink = 900
@ kTeal
Definition Rtypes.h:67
@ kGray
Definition Rtypes.h:65
@ kPink
Definition Rtypes.h:67
@ kOrange
Definition Rtypes.h:67
@ kBlack
Definition Rtypes.h:65
@ kGreen
Definition Rtypes.h:66
@ kWhite
Definition Rtypes.h:65
@ kCyan
Definition Rtypes.h:66
@ kBlue
Definition Rtypes.h:66
@ kAzure
Definition Rtypes.h:67
@ kViolet
Definition Rtypes.h:67
@ kSpring
Definition Rtypes.h:67

Note the special role of color kWhite (color number 0). It is the default background color also. For instance in a PDF or PS files (as paper is usually white) it is simply not painted. To have a white color behaving like the other color the simplest is to define an other white color not attached to the color index 0:

TColor *color = new TColor(ci, 1., 1., 1.);

Bright and dark colors

Dark and bright colors are used to add 3D effects to graphical objects like TWbox, TPave, TPaveText, TPaveLabel, etc. and in colored lego plots.

Two static functions are available that return the bright or dark color number corresponding to a given color index. If these variants don't already exist, they are created as needed:

Int_t dark = TColor::GetColorDark(color_index);
Int_t bright = TColor::GetColorBright(color_index);
static Int_t GetColorBright(Int_t color)
Static function: Returns the bright color number corresponding to n If the TColor object does not exi...
Definition TColor.cxx:2087
static Int_t GetColorDark(Int_t color)
Static function: Returns the dark color number corresponding to n If the TColor object does not exist...
Definition TColor.cxx:2130

Accessible Color Schemes

Choosing an appropriate color scheme is essential for making results easy to understand and interpret. Factors like colorblindness and converting colors to grayscale for publications can impact accessibility. Furthermore, results should be aesthetically pleasing. The following three color schemes, recommended by M. Petroff in arXiv:2107.02270v2 and available on GitHub under the MIT License, meet these criteria.

These three color schemes are available as color sets with 6, 8, and 10 colors, named kP[6, 8, 10]ColorName. For example, kP6Red represents the red color within the P6 color scheme (P for Petroff or Preferred).

The example thstackcolorscheme.C illustrates how to use these color schemes in THStack drawings. It also demonstrates that they are effective in grayscale.

Grayscale view of of canvas with colors

One can toggle between a grayscale preview and the regular colored mode using TCanvas::SetGrayscale(). Note that in grayscale mode, access via RGB will return grayscale values according to ITU standards (and close to b&w printer gray-scales), while access via HLS returns de-saturated gray-scales. The image below shows the ROOT color wheel in grayscale mode.

{
auto w = new TColorWheel();
auto cw = new TCanvas("cw","cw",0,0,400,400);
cw->GetCanvas()->SetGrayscale();
w->SetCanvas(cw);
w->Draw();
}

Color palettes

It is often very useful to represent a variable with a color map. The concept of "color palette" allows to do that. One color palette is active at any time. This "current palette" is set using:

R__EXTERN TStyle * gStyle
Definition TStyle.h:436
void SetPalette(Int_t ncolors=kBird, Int_t *colors=nullptr, Float_t alpha=1.)
See TColor::SetPalette.
Definition TStyle.cxx:1888

This function has two parameters: the number of colors in the palette and an array of containing the indices of colors in the palette. The following small example demonstrates how to define and use the color palette:

{
auto c1 = new TCanvas("c1","c1",0,0,600,400);
TF2 *f1 = new TF2("f1","0.1+(1-(x-2)*(x-2))*(1-(y-2)*(y-2))",1,3,1,3);
Int_t palette[5];
palette[0] = 15;
palette[1] = 20;
palette[2] = 23;
palette[3] = 30;
palette[4] = 32;
gStyle->SetPalette(5,palette);
f1->Draw("colz");
return c1;
}
void Draw(Option_t *option="") override
Draw this function with its current attributes.
Definition TF1.cxx:1333
A 2-Dim function with parameters.
Definition TF2.h:29
return c1
Definition legend1.C:41
TF1 * f1
Definition legend1.C:11

To define more a complex palette with a continuous gradient of color, one should use the static function TColor::CreateGradientColorTable(). The following example demonstrates how to proceed:

{
auto c2 = new TCanvas("c2","c2",0,0,600,400);
auto f2 = new TF2("f2","0.1+(1-(x-2)*(x-2))*(1-(y-2)*(y-2))",1,3,1,3);
const Int_t Number = 3;
Double_t Red[Number] = { 1.00, 0.00, 0.00};
Double_t Green[Number] = { 0.00, 1.00, 0.00};
Double_t Blue[Number] = { 1.00, 0.00, 1.00};
Double_t Length[Number] = { 0.00, 0.50, 1.00 };
Int_t nb=50;
TColor::CreateGradientColorTable(Number,Length,Red,Green,Blue,nb);
f2->SetContour(nb);
f2->SetLineWidth(1);
f2->SetLineColor(kBlack);
f2->Draw("surf1z");
return c2;
}
int Int_t
Definition RtypesCore.h:45
double Double_t
Definition RtypesCore.h:59
static Int_t CreateGradientColorTable(UInt_t Number, Double_t *Stops, Double_t *Red, Double_t *Green, Double_t *Blue, UInt_t NColors, Float_t alpha=1., Bool_t setPalette=kTRUE)
Static function creating a color table with several connected linear gradients.
Definition TColor.cxx:2730
return c2
Definition legend2.C:14

The function TColor::CreateGradientColorTable() automatically calls gStyle->SetPalette(), so there is not need to add one.

After a call to TColor::CreateGradientColorTable() it is sometimes useful to store the newly create palette for further use. In particular, it is recommended to do if one wants to switch between several user define palettes. To store a palette in an array it is enough to do:

Int_t MyPalette[100];
Double_t Red[] = {0., 0.0, 1.0, 1.0, 1.0};
Double_t Green[] = {0., 0.0, 0.0, 1.0, 1.0};
Double_t Blue[] = {0., 1.0, 0.0, 0.0, 1.0};
Double_t Length[] = {0., .25, .50, .75, 1.0};
Int_t FI = TColor::CreateGradientColorTable(5, Length, Red, Green, Blue, 100);
for (int i=0;i<100;i++) MyPalette[i] = FI+i;

Later on to reuse the palette MyPalette it will be enough to do

gStyle->SetPalette(100, MyPalette);

As only one palette is active, one need to use TExec to be able to display plots using different palettes on the same pad. The tutorial multipalette.C illustrates this feature.

#include "TStyle.h"
#include "TColor.h"
#include "TF2.h"
#include "TExec.h"
#include "TCanvas.h"
void Pal1()
{
static Int_t colors[50];
static Bool_t initialized = kFALSE;
Double_t Red[3] = { 1.00, 0.00, 0.00};
Double_t Green[3] = { 0.00, 1.00, 0.00};
Double_t Blue[3] = { 1.00, 0.00, 1.00};
Double_t Length[3] = { 0.00, 0.50, 1.00 };
if(!initialized){
Int_t FI = TColor::CreateGradientColorTable(3,Length,Red,Green,Blue,50);
for (int i=0; i<50; i++) colors[i] = FI+i;
initialized = kTRUE;
return;
}
}
void Pal2()
{
static Int_t colors[50];
static Bool_t initialized = kFALSE;
Double_t Red[3] = { 1.00, 0.50, 0.00};
Double_t Green[3] = { 0.50, 0.00, 1.00};
Double_t Blue[3] = { 1.00, 0.00, 0.50};
Double_t Length[3] = { 0.00, 0.50, 1.00 };
if(!initialized){
Int_t FI = TColor::CreateGradientColorTable(3,Length,Red,Green,Blue,50);
for (int i=0; i<50; i++) colors[i] = FI+i;
initialized = kTRUE;
return;
}
}
void multipalette() {
TCanvas *c3 = new TCanvas("c3","C3",0,0,600,400);
c3->Divide(2,1);
TF2 *f3 = new TF2("f3","0.1+(1-(x-2)*(x-2))*(1-(y-2)*(y-2))",1,3,1,3);
f3->SetLineWidth(1);
c3->cd(1);
f3->Draw("surf1");
TExec *ex1 = new TExec("ex1","Pal1();");
ex1->Draw();
f3->Draw("surf1 same");
c3->cd(2);
f3->Draw("surf1");
TExec *ex2 = new TExec("ex2","Pal2();");
ex2->Draw();
f3->Draw("surf1 same");
}
bool Bool_t
Definition RtypesCore.h:63
constexpr Bool_t kFALSE
Definition RtypesCore.h:94
constexpr Bool_t kTRUE
Definition RtypesCore.h:93
Color * colors
Definition X3DBuffer.c:21
virtual void SetLineWidth(Width_t lwidth)
Set the line width.
Definition TAttLine.h:43
virtual void SetLineColor(Color_t lcolor)
Set the line color.
Definition TAttLine.h:40
TExec is a utility class that can be used to execute a C++ command when some event happens in a pad.
Definition TExec.h:26
void Draw(Option_t *option="") override
Draw this function with its current attributes.
Definition TF2.cxx:259
virtual void Draw(Option_t *option="")
Default Draw method for all objects.
Definition TObject.cxx:280
return c3
Definition legend3.C:15
Since
6.26: The function TColor::CreateColorTableFromFile("filename.txt") allows you to create a color palette based on an input ASCII file. In contrast to TColor::CreateGradientColorTable(), here the length (spacing) is constant and can not be tuned. There is no gradient being interpolated between adjacent colors. The palette will contain the exact colors stored in the file, that comprises one line per color in the format "r g b" as floats.

High quality predefined palettes

Since
6.04: 63 high quality palettes are predefined with 255 colors each.

These palettes can be accessed "by name" with gStyle->SetPalette(num). num can be taken within the following enum:

kBrownCyan=72, kCMYK=73, kCandy=74,
kNeon=90, kPastel=91, kPearl=92,
kPigeon=93, kPlum=94, kRedBlue=95,
kSienna=99, kSolar=100, kSouthWest=101,
kWaterMelon=108, kCool=109, kCopper=110,
@ kFall
Definition TColor.h:125
@ kStarryNight
Definition TColor.h:133
@ kAtlantic
Definition TColor.h:121
@ kIsland
Definition TColor.h:127
@ kBlackBody
Definition TColor.h:122
@ kFruitPunch
Definition TColor.h:125
@ kArmy
Definition TColor.h:120
@ kAurora
Definition TColor.h:121
@ kBrownCyan
Definition TColor.h:123
@ kBeach
Definition TColor.h:122
@ kAquamarine
Definition TColor.h:120
@ kPastel
Definition TColor.h:129
@ kCubehelix
Definition TColor.h:118
@ kAvocado
Definition TColor.h:121
@ kGreenRedViolet
Definition TColor.h:118
@ kAlpine
Definition TColor.h:120
@ kVisibleSpectrum
Definition TColor.h:134
@ kCMYK
Definition TColor.h:123
@ kInvertedDarkBodyRadiator
Definition TColor.h:117
@ kWaterMelon
Definition TColor.h:135
@ kOcean
Definition TColor.h:119
@ kDarkBodyRadiator
Definition TColor.h:116
@ kDarkTerrain
Definition TColor.h:125
@ kLightTemperature
Definition TColor.h:128
@ kRust
Definition TColor.h:131
@ kCopper
Definition TColor.h:135
@ kTemperatureMap
Definition TColor.h:133
@ kSolar
Definition TColor.h:132
@ kRedBlue
Definition TColor.h:130
@ kDeepSea
Definition TColor.h:116
@ kRainBow
Definition TColor.h:117
@ kSouthWest
Definition TColor.h:132
@ kPlum
Definition TColor.h:130
@ kGreenBrownTerrain
Definition TColor.h:126
@ kGreyYellow
Definition TColor.h:126
@ kGreyScale
Definition TColor.h:116
@ kRose
Definition TColor.h:131
@ kSunset
Definition TColor.h:133
@ kCoffee
Definition TColor.h:124
@ kGreenPink
Definition TColor.h:127
@ kColorPrintableOnGrey
Definition TColor.h:119
@ kSienna
Definition TColor.h:132
@ kBlueYellow
Definition TColor.h:117
@ kBlueRedYellow
Definition TColor.h:119
@ kValentine
Definition TColor.h:134
@ kSandyTerrain
Definition TColor.h:131
@ kDarkRainBow
Definition TColor.h:124
@ kViridis
Definition TColor.h:136
@ kCandy
Definition TColor.h:123
@ kCherry
Definition TColor.h:124
@ kNeon
Definition TColor.h:129
@ kBird
Definition TColor.h:118
@ kFuchsia
Definition TColor.h:126
@ kBlueGreenYellow
Definition TColor.h:122
@ kPearl
Definition TColor.h:129
@ kPigeon
Definition TColor.h:130
@ kCividis
Definition TColor.h:136
@ kCool
Definition TColor.h:135
@ kLake
Definition TColor.h:127
@ kMint
Definition TColor.h:128
@ kGistEarth
Definition TColor.h:136
@ kThermometer
Definition TColor.h:134
@ kLightTerrain
Definition TColor.h:128

As explained in Crameri, F., Shephard, G.E. & Heron, P.J. The misuse of colour in science communication. Nat Commun 11, 5444 (2020) some color maps can visually distord data, specially for people with colour-vision deficiencies.

For instance one can immediately see the disadvantages of the Rainbow color map, which is misleading for colour-blinded people in a 2D plot (not so much in a 3D surfaces).

The kCMYK palette, is also not great because it's dark, then lighter, then half-dark again. Some others, like kAquamarine, have almost no contrast therefore it would be almost impossible (for a color blind person) to see something with a such palette.

Therefore the palettes are classified in two categories: those which are Colour Vision Deficiency friendly and those which are not.

An easy way to classify the palettes is to turn them into grayscale using TCanvas::SetGrayscale(). The grayscale version of a palette should be as proportional as possible, and monotonously increasing or decreasing.

Unless it is symmetrical, then it is fine to have white in the borders and black in the centre (for example an axis that goes between -40 degrees and +40 degrees, the 0 has a meaning in the perceptualcolormap.C example).

A full set of colour-vision deficiency friendly and perceptually uniform colour maps can be downloaded and used with ROOT (since 6.26) via: gStyle->SetPalette("filename.txt") or TColor::CreateColorTableFromFile("filename.txt"). Remember to increase the number of contours for a smoother result, e.g.: gStyle->SetNumberContours(99) if you are drawing with "surf1z" or gStyle->SetNumberContours(256) if with "colz".

Colour Vision Deficiency (CVD) friendly palettes

Non Colour Vision Deficiency (CVD) friendly palettes

Palette inversion

Once a palette is defined, it is possible to invert the color order thanks to the method TColor::InvertPalette. The top of the palette becomes the bottom and vice versa.

{
auto c = new TCanvas("c","c",0,0,600,400);
auto f2 = new TF2("f2","0.1+(1-(x-2)*(x-2))*(1-(y-2)*(y-2))",0.999,3.002,0.999,3.002);
f2->SetContour(99); gStyle->SetPalette(kCherry);
f2->Draw("surf2Z"); f2->SetTitle("kCherry inverted");
}
static void InvertPalette()
Invert the current color palette.
Definition TColor.cxx:3640

Color transparency

To make a graphics object transparent it is enough to set its color to a transparent one. The color transparency is defined via its alpha component. The alpha value varies from 0. (fully transparent) to 1. (fully opaque). To set the alpha value of an existing color it is enough to do:

TColor *col26 = gROOT->GetColor(26);
col26->SetAlpha(0.01);
virtual void SetAlpha(Float_t a)
Definition TColor.h:70

A new color can be created transparent the following way:

Int_t ci = 1756;
auto color = new TColor(ci, 0.1, 0.2, 0.3, "", 0.5); // alpha = 0.5

An example of transparency usage with parallel coordinates can be found in parallelcoordtrans.C.

To ease the creation of a transparent color the static method GetColorTransparent(Int_t color, Float_t a) is provided. In the following example the trans_red color index point to a red color 30% opaque (70% transparent). The alpha value of the color index kRed is not modified.

Int_t trans_red = GetColorTransparent(kRed, 0.3);
static Int_t GetColorTransparent(Int_t color, Float_t a)
Static function: Returns the transparent color number corresponding to n.
Definition TColor.cxx:2174

This function is also used in the methods SetFillColorAlpha(), SetLineColorAlpha(), SetMarkerColorAlpha() and SetTextColorAlpha(). In the following example the fill color of the histogram histo is set to blue with an opacity of 35% (i.e. a transparency of 65%). (The color kBlue itself is internally stored as fully opaque.)

histo->SetFillColorAlpha(kBlue, 0.35);

The transparency is available on all platforms when the flag OpenGL.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, TeX ... but not PostScript.

Alternatively, you can call at the top of your script gSytle->SetCanvasPreferGL();. Or if you prefer to activate GL for a single canvas c, then use c->SetSupportGL(true);.

The following macro gives an example of transparency usage:

void transparency()
{
auto c1 = new TCanvas("c1", "c1",224,330,700,527);
c1->Range(-0.125,-0.125,1.125,1.125);
auto tex = new TLatex(0.06303724,0.0194223,"This text is opaque and this line is transparent");
tex->SetLineWidth(2);
tex->Draw();
auto arrow = new TArrow(0.5555158,0.07171314,0.8939828,0.6195219,0.05,"|>");
arrow->SetLineWidth(4);
arrow->SetAngle(30);
arrow->Draw();
// Draw a transparent graph.
Double_t x[10] = {
0.5232808, 0.8724928, 0.9280086, 0.7059456, 0.7399714,
0.4659742, 0.8241404, 0.4838825, 0.7936963, 0.743553};
Double_t y[10] = {
0.7290837, 0.9631474, 0.4775896, 0.6494024, 0.3555777,
0.622012, 0.7938247, 0.9482072, 0.3904382, 0.2410359};
auto graph = new TGraph(10,x,y);
graph->SetLineColorAlpha(46, 0.1);
graph->SetLineWidth(7);
graph->Draw("l");
// Draw an ellipse with opaque colors.
auto ellipse = new TEllipse(0.1740688,0.8352632,0.1518625,0.1010526,0,360,0);
ellipse->SetFillColor(30);
ellipse->SetLineColor(51);
ellipse->SetLineWidth(3);
ellipse->Draw();
// Draw an ellipse with transparent colors, above the previous one.
ellipse = new TEllipse(0.2985315,0.7092105,0.1566977,0.1868421,0,360,0);
ellipse->SetFillColorAlpha(9, 0.571);
ellipse->SetLineColorAlpha(8, 0.464);
ellipse->SetLineWidth(3);
ellipse->Draw();
// Draw a transparent blue text.
tex = new TLatex(0.04871059,0.1837649,"This text is transparent");
tex->SetTextColorAlpha(9, 0.476);
tex->SetTextSize(0.125);
tex->SetTextAngle(26.0);
tex->Draw();
// Draw two transparent markers
auto marker = new TMarker(0.03080229,0.998008,20);
marker->SetMarkerColorAlpha(2, .3);
marker->SetMarkerStyle(20);
marker->SetMarkerSize(1.7);
marker->Draw();
marker = new TMarker(0.1239255,0.8635458,20);
marker->SetMarkerColorAlpha(2, .2);
marker->SetMarkerStyle(20);
marker->SetMarkerSize(1.7);
marker->Draw();
// Draw an opaque marker
marker = new TMarker(0.3047994,0.6344622,20);
marker->SetMarkerColor(2);
marker->SetMarkerStyle(20);
marker->SetMarkerSize(1.7);
marker->Draw();
}
Draw all kinds of Arrows.
Definition TArrow.h:29
Draw Ellipses.
Definition TEllipse.h:23
A TGraph is an object made of two arrays X and Y with npoints each.
Definition TGraph.h:41
To draw Mathematical Formula.
Definition TLatex.h:18
Manages Markers.
Definition TMarker.h:22
Double_t y[n]
Definition legend1.C:17
Double_t x[n]
Definition legend1.C:17
Definition graph.py:1

Definition at line 21 of file TColor.h.

Public Member Functions

 TColor ()
 Default constructor.
 
 TColor (const TColor &color)
 Color copy constructor.
 
 TColor (Float_t r, Float_t g, Float_t b, Float_t a=1)
 Fast TColor constructor.
 
 TColor (Int_t color, Float_t r, Float_t g, Float_t b, const char *name="", Float_t a=1)
 Normal color constructor.
 
virtual ~TColor ()
 Color destructor.
 
const char * AsHexString () const
 Return color as hexadecimal string.
 
void Copy (TObject &color) const override
 Copy this color to obj.
 
Float_t GetAlpha () const
 
Float_t GetBlue () const
 
virtual Float_t GetGrayscale () const
 
Float_t GetGreen () const
 
virtual void GetHLS (Float_t &h, Float_t &l, Float_t &s) const
 
Float_t GetHue () const
 
Float_t GetLight () const
 
Int_t GetNumber () const
 
ULong_t GetPixel () const
 Return pixel value corresponding to this color.
 
Float_t GetRed () const
 
virtual void GetRGB (Float_t &r, Float_t &g, Float_t &b) const
 
Float_t GetSaturation () const
 
TClassIsA () const override
 
void ls (Option_t *option="") const override
 List this color with its attributes.
 
TColoroperator= (const TColor &color)
 
void Print (Option_t *option="") const override
 Dump this color with its attributes.
 
virtual void SetAlpha (Float_t a)
 
void SetName (const char *name) override
 Set the color name and change also the name of the "dark" and "bright" associated colors if they exist.
 
virtual void SetRGB (Float_t r, Float_t g, Float_t b)
 Initialize this color and its "dark" and "bright" associated colors.
 
void Streamer (TBuffer &) override
 Stream an object of class TObject.
 
void StreamerNVirtual (TBuffer &ClassDef_StreamerNVirtual_b)
 
- Public Member Functions inherited from TNamed
 TNamed ()
 
 TNamed (const char *name, const char *title)
 
 TNamed (const TNamed &named)
 TNamed copy ctor.
 
 TNamed (const TString &name, const TString &title)
 
virtual ~TNamed ()
 TNamed destructor.
 
void Clear (Option_t *option="") override
 Set name and title to empty strings ("").
 
TObjectClone (const char *newname="") const override
 Make a clone of an object using the Streamer facility.
 
Int_t Compare (const TObject *obj) const override
 Compare two TNamed objects.
 
void Copy (TObject &named) const override
 Copy this to obj.
 
virtual void FillBuffer (char *&buffer)
 Encode TNamed into output buffer.
 
const char * GetName () const override
 Returns name of object.
 
const char * GetTitle () const override
 Returns title of object.
 
ULong_t Hash () const override
 Return hash value for this object.
 
TClassIsA () const override
 
Bool_t IsSortable () const override
 
void ls (Option_t *option="") const override
 List TNamed name and title.
 
TNamedoperator= (const TNamed &rhs)
 TNamed assignment operator.
 
void Print (Option_t *option="") const override
 Print TNamed name and title.
 
virtual void SetNameTitle (const char *name, const char *title)
 Set all the TNamed parameters (name and title).
 
virtual void SetTitle (const char *title="")
 Set the title of the TNamed.
 
virtual Int_t Sizeof () const
 Return size of the TNamed part of the TObject.
 
void Streamer (TBuffer &) override
 Stream an object of class TObject.
 
void StreamerNVirtual (TBuffer &ClassDef_StreamerNVirtual_b)
 
- Public Member Functions inherited from TObject
 TObject ()
 TObject constructor.
 
 TObject (const TObject &object)
 TObject copy ctor.
 
virtual ~TObject ()
 TObject destructor.
 
void AbstractMethod (const char *method) const
 Use this method to implement an "abstract" method that you don't want to leave purely abstract.
 
virtual void AppendPad (Option_t *option="")
 Append graphics object to current pad.
 
virtual void Browse (TBrowser *b)
 Browse object. May be overridden for another default action.
 
ULong_t CheckedHash ()
 Check and record whether this class has a consistent Hash/RecursiveRemove setup (*) and then return the regular Hash value for this object.
 
virtual const char * ClassName () const
 Returns name of class to which the object belongs.
 
virtual void Delete (Option_t *option="")
 Delete this object.
 
virtual Int_t DistancetoPrimitive (Int_t px, Int_t py)
 Computes distance from point (px,py) to the object.
 
virtual void Draw (Option_t *option="")
 Default Draw method for all objects.
 
virtual void DrawClass () const
 Draw class inheritance tree of the class to which this object belongs.
 
virtual TObjectDrawClone (Option_t *option="") const
 Draw a clone of this object in the current selected pad with: gROOT->SetSelectedPad(c1).
 
virtual void Dump () const
 Dump contents of object on stdout.
 
virtual void Error (const char *method, const char *msgfmt,...) const
 Issue error message.
 
virtual void Execute (const char *method, const char *params, Int_t *error=nullptr)
 Execute method on this object with the given parameter string, e.g.
 
virtual void Execute (TMethod *method, TObjArray *params, Int_t *error=nullptr)
 Execute method on this object with parameters stored in the TObjArray.
 
virtual void ExecuteEvent (Int_t event, Int_t px, Int_t py)
 Execute action corresponding to an event at (px,py).
 
virtual void Fatal (const char *method, const char *msgfmt,...) const
 Issue fatal error message.
 
virtual TObjectFindObject (const char *name) const
 Must be redefined in derived classes.
 
virtual TObjectFindObject (const TObject *obj) const
 Must be redefined in derived classes.
 
virtual Option_tGetDrawOption () const
 Get option used by the graphics system to draw this object.
 
virtual const char * GetIconName () const
 Returns mime type name of object.
 
virtual char * GetObjectInfo (Int_t px, Int_t py) const
 Returns string containing info about the object at position (px,py).
 
virtual Option_tGetOption () const
 
virtual UInt_t GetUniqueID () const
 Return the unique object id.
 
virtual Bool_t HandleTimer (TTimer *timer)
 Execute action in response of a timer timing out.
 
Bool_t HasInconsistentHash () const
 Return true is the type of this object is known to have an inconsistent setup for Hash and RecursiveRemove (i.e.
 
virtual void Info (const char *method, const char *msgfmt,...) const
 Issue info message.
 
virtual Bool_t InheritsFrom (const char *classname) const
 Returns kTRUE if object inherits from class "classname".
 
virtual Bool_t InheritsFrom (const TClass *cl) const
 Returns kTRUE if object inherits from TClass cl.
 
virtual void Inspect () const
 Dump contents of this object in a graphics canvas.
 
void InvertBit (UInt_t f)
 
Bool_t IsDestructed () const
 IsDestructed.
 
virtual Bool_t IsEqual (const TObject *obj) const
 Default equal comparison (objects are equal if they have the same address in memory).
 
virtual Bool_t IsFolder () const
 Returns kTRUE in case object contains browsable objects (like containers or lists of other objects).
 
R__ALWAYS_INLINE Bool_t IsOnHeap () const
 
R__ALWAYS_INLINE Bool_t IsZombie () const
 
void MayNotUse (const char *method) const
 Use this method to signal that a method (defined in a base class) may not be called in a derived class (in principle against good design since a child class should not provide less functionality than its parent, however, sometimes it is necessary).
 
virtual Bool_t Notify ()
 This method must be overridden to handle object notification (the base implementation is no-op).
 
void Obsolete (const char *method, const char *asOfVers, const char *removedFromVers) const
 Use this method to declare a method obsolete.
 
void operator delete (void *ptr)
 Operator delete.
 
void operator delete (void *ptr, void *vp)
 Only called by placement new when throwing an exception.
 
void operator delete[] (void *ptr)
 Operator delete [].
 
void operator delete[] (void *ptr, void *vp)
 Only called by placement new[] when throwing an exception.
 
void * operator new (size_t sz)
 
void * operator new (size_t sz, void *vp)
 
void * operator new[] (size_t sz)
 
void * operator new[] (size_t sz, void *vp)
 
TObjectoperator= (const TObject &rhs)
 TObject assignment operator.
 
virtual void Paint (Option_t *option="")
 This method must be overridden if a class wants to paint itself.
 
virtual void Pop ()
 Pop on object drawn in a pad to the top of the display list.
 
virtual Int_t Read (const char *name)
 Read contents of object with specified name from the current directory.
 
virtual void RecursiveRemove (TObject *obj)
 Recursively remove this object from a list.
 
void ResetBit (UInt_t f)
 
virtual void SaveAs (const char *filename="", Option_t *option="") const
 Save this object in the file specified by filename.
 
virtual void SavePrimitive (std::ostream &out, Option_t *option="")
 Save a primitive as a C++ statement(s) on output stream "out".
 
void SetBit (UInt_t f)
 
void SetBit (UInt_t f, Bool_t set)
 Set or unset the user status bits as specified in f.
 
virtual void SetDrawOption (Option_t *option="")
 Set drawing option for object.
 
virtual void SetUniqueID (UInt_t uid)
 Set the unique object id.
 
void StreamerNVirtual (TBuffer &ClassDef_StreamerNVirtual_b)
 
virtual void SysError (const char *method, const char *msgfmt,...) const
 Issue system error message.
 
R__ALWAYS_INLINE Bool_t TestBit (UInt_t f) const
 
Int_t TestBits (UInt_t f) const
 
virtual void UseCurrentStyle ()
 Set current style settings in this object This function is called when either TCanvas::UseCurrentStyle or TROOT::ForceStyle have been invoked.
 
virtual void Warning (const char *method, const char *msgfmt,...) const
 Issue warning message.
 
virtual Int_t Write (const char *name=nullptr, Int_t option=0, Int_t bufsize=0)
 Write this object to the current directory.
 
virtual Int_t Write (const char *name=nullptr, Int_t option=0, Int_t bufsize=0) const
 Write this object to the current directory.
 

Static Public Member Functions

static TClassClass ()
 
static const char * Class_Name ()
 
static constexpr Version_t Class_Version ()
 
static void CreateColorsCircle (Int_t offset, const char *name, UChar_t *rgb)
 Create the "circle" colors in the color wheel.
 
static void CreateColorsGray ()
 Create the Gray scale colors in the Color Wheel.
 
static void CreateColorsRectangle (Int_t offset, const char *name, UChar_t *rgb)
 Create the "rectangular" colors in the color wheel.
 
static Int_t CreateColorTableFromFile (TString fileName, Float_t alpha=1.)
 Static function creating a color palette based on an input text file.
 
static void CreateColorWheel ()
 Static function steering the creation of all colors in the color wheel.
 
static Int_t CreateGradientColorTable (UInt_t Number, Double_t *Stops, Double_t *Red, Double_t *Green, Double_t *Blue, UInt_t NColors, Float_t alpha=1., Bool_t setPalette=kTRUE)
 Static function creating a color table with several connected linear gradients.
 
static const char * DeclFileName ()
 
static Bool_t DefinedColors (Int_t set_always_on=0)
 Static method returning kTRUE if some new colors have been defined after initialisation or since the last call to this method.
 
static Int_t GetColor (const char *hexcolor)
 Static method returning color number for color specified by hex color string of form: "#rrggbb", where rr, gg and bb are in hex between [0,FF], e.g.
 
static Int_t GetColor (Float_t r, Float_t g, Float_t b, Float_t a=1.)
 Static method returning color number for color specified by r, g and b.
 
static Int_t GetColor (Int_t r, Int_t g, Int_t b, Float_t a=1.)
 Static method returning color number for color specified by r, g and b.
 
static Int_t GetColor (ULong_t pixel)
 Static method returning color number for color specified by system dependent pixel value.
 
static Int_t GetColorBright (Int_t color)
 Static function: Returns the bright color number corresponding to n If the TColor object does not exist, it is created at a free color index.
 
static Int_t GetColorByName (const char *colorname)
 Static method returning color index for a color specified by name.
 
static Int_t GetColorDark (Int_t color)
 Static function: Returns the dark color number corresponding to n If the TColor object does not exist, it is created at a free color index.
 
static Int_t GetColorPalette (Int_t i)
 Static function returning the color number i in current palette.
 
static Int_t GetColorTransparent (Int_t color, Float_t a)
 Static function: Returns the transparent color number corresponding to n.
 
static Int_t GetFirstFreeColorIndex ()
 Static function: Returns the first free color greater in the list of colors.
 
static Int_t GetFreeColorIndex ()
 Static function: Returns the free color index greater than the highest defined color index.
 
static Int_t GetLinearGradient (Double_t angle, const std::vector< Int_t > &colors, const std::vector< Double_t > &positions={})
 Static function: Returns the linear gradient color number corresponding to specified parameters.
 
static Int_t GetNumberOfColors ()
 Static function returning number of colors in the color palette.
 
static const TArrayIGetPalette ()
 Static function returning the current active palette.
 
static Int_t GetRadialGradient (Double_t r, const std::vector< Int_t > &colors, const std::vector< Double_t > &positions={})
 Static function: Returns the radial gradient color number corresponding to specified parameters.
 
static void HLS2RGB (Float_t h, Float_t l, Float_t s, Float_t &r, Float_t &g, Float_t &b)
 Static method to compute RGB from HLS.
 
static void HLS2RGB (Int_t h, Int_t l, Int_t s, Int_t &r, Int_t &g, Int_t &b)
 Static method to compute RGB from HLS.
 
static void HLStoRGB (Float_t h, Float_t l, Float_t s, Float_t &r, Float_t &g, Float_t &b)
 
static void HSV2RGB (Float_t h, Float_t s, Float_t v, Float_t &r, Float_t &g, Float_t &b)
 Static method to compute RGB from HSV:
 
static void InitializeColors ()
 Initialize colors used by the TCanvas based graphics (via TColor objects).
 
static void InvertPalette ()
 Invert the current color palette.
 
static Bool_t IsGrayscale ()
 Return whether all colors return grayscale values.
 
static void ListColors (Int_t ci1=0, Int_t ci2=0, Bool_t showEmpty=kFALSE)
 List nb colors from the color index ci.
 
static ULong_t Number2Pixel (Int_t ci)
 Static method that given a color index number, returns the corresponding pixel value.
 
static void Pixel2RGB (ULong_t pixel, Float_t &r, Float_t &g, Float_t &b)
 Convert machine dependent pixel value (obtained via RGB2Pixel or via Number2Pixel() or via TColor::GetPixel()) to r,g,b triplet.
 
static void Pixel2RGB (ULong_t pixel, Int_t &r, Int_t &g, Int_t &b)
 Convert machine dependent pixel value (obtained via RGB2Pixel or via Number2Pixel() or via TColor::GetPixel()) to r,g,b triplet.
 
static const char * PixelAsHexString (ULong_t pixel)
 Convert machine dependent pixel value (obtained via RGB2Pixel or via Number2Pixel() or via TColor::GetPixel()) to a hexadecimal string.
 
static void RGB2HLS (Float_t r, Float_t g, Float_t b, Float_t &h, Float_t &l, Float_t &s)
 Static method to compute HLS from RGB.
 
static void RGB2HLS (Int_t r, Int_t g, Int_t b, Int_t &h, Int_t &l, Int_t &s)
 Static method to compute HLS from RGB.
 
static void RGB2HSV (Float_t r, Float_t g, Float_t b, Float_t &h, Float_t &s, Float_t &v)
 Static method to compute HSV from RGB.
 
static ULong_t RGB2Pixel (Float_t r, Float_t g, Float_t b)
 Convert r,g,b to graphics system dependent pixel value.
 
static ULong_t RGB2Pixel (Int_t r, Int_t g, Int_t b)
 Convert r,g,b to graphics system dependent pixel value.
 
static void RGBtoHLS (Float_t r, Float_t g, Float_t b, Float_t &h, Float_t &l, Float_t &s)
 
static Bool_t SaveColor (std::ostream &out, Int_t ci)
 Save a color with index > 228 as a C++ statement(s) on output stream out.
 
static void SetColorThreshold (Float_t t)
 This method specifies the color threshold used by GetColor to retrieve a color.
 
static void SetGrayscale (Bool_t set=kTRUE)
 Set whether all colors should return grayscale values.
 
static void SetPalette (Int_t ncolors, Int_t *colors, Float_t alpha=1.)
 Static function.
 
- Static Public Member Functions inherited from TNamed
static TClassClass ()
 
static const char * Class_Name ()
 
static constexpr Version_t Class_Version ()
 
static const char * DeclFileName ()
 
- Static Public Member Functions inherited from TObject
static TClassClass ()
 
static const char * Class_Name ()
 
static constexpr Version_t Class_Version ()
 
static const char * DeclFileName ()
 
static Longptr_t GetDtorOnly ()
 Return destructor only flag.
 
static Bool_t GetObjectStat ()
 Get status of object stat flag.
 
static void SetDtorOnly (void *obj)
 Set destructor only flag.
 
static void SetObjectStat (Bool_t stat)
 Turn on/off tracking of objects in the TObjectTable.
 

Protected Attributes

Int_t fNumber
 Color number identifier.
 
- Protected Attributes inherited from TNamed
TString fName
 
TString fTitle
 

Private Member Functions

void Allocate ()
 Make this color known to the graphics system.
 

Static Private Member Functions

static Float_t HLStoRGB1 (Float_t rn1, Float_t rn2, Float_t huei)
 Static method. Auxiliary to HLS2RGB().
 

Private Attributes

Float_t fAlpha
 Alpha (transparency)
 
Float_t fBlue
 Fraction of Blue.
 
Float_t fGreen
 Fraction of Green.
 
Float_t fHue
 Hue.
 
Float_t fLight
 Light.
 
Float_t fRed
 Fraction of Red.
 
Float_t fSaturation
 Saturation.
 

Additional Inherited Members

- Public Types inherited from TObject
enum  {
  kIsOnHeap = 0x01000000 , kNotDeleted = 0x02000000 , kZombie = 0x04000000 , kInconsistent = 0x08000000 ,
  kBitMask = 0x00ffffff
}
 
enum  { kSingleKey = (1ULL << ( 0 )) , kOverwrite = (1ULL << ( 1 )) , kWriteDelete = (1ULL << ( 2 )) }
 
enum  EDeprecatedStatusBits { kObjInCanvas = (1ULL << ( 3 )) }
 
enum  EStatusBits {
  kCanDelete = (1ULL << ( 0 )) , kMustCleanup = (1ULL << ( 3 )) , kIsReferenced = (1ULL << ( 4 )) , kHasUUID = (1ULL << ( 5 )) ,
  kCannotPick = (1ULL << ( 6 )) , kNoContextMenu = (1ULL << ( 8 )) , kInvalidObject = (1ULL << ( 13 ))
}
 
- Protected Types inherited from TObject
enum  { kOnlyPrepStep = (1ULL << ( 3 )) }
 
- Protected Member Functions inherited from TObject
virtual void DoError (int level, const char *location, const char *fmt, va_list va) const
 Interface to ErrorHandler (protected).
 
void MakeZombie ()
 

#include <TColor.h>

Inheritance diagram for TColor:
[legend]

Constructor & Destructor Documentation

◆ TColor() [1/4]

TColor::TColor ( )

Default constructor.

Definition at line 1061 of file TColor.cxx.

◆ TColor() [2/4]

TColor::TColor ( Int_t  color,
Float_t  r,
Float_t  g,
Float_t  b,
const char *  name = "",
Float_t  a = 1 
)

Normal color constructor.

Initialize a color structure. Compute the RGB and HLS color components. The color title is set to its hexadecimal value.

Definition at line 1073 of file TColor.cxx.

◆ TColor() [3/4]

TColor::TColor ( Float_t  r,
Float_t  g,
Float_t  b,
Float_t  a = 1 
)

Fast TColor constructor.

It creates a color with an index just above the current highest one. It does not name the color. This is useful to create palettes.

Definition at line 1119 of file TColor.cxx.

◆ TColor() [4/4]

TColor::TColor ( const TColor color)

Color copy constructor.

Definition at line 1150 of file TColor.cxx.

◆ ~TColor()

TColor::~TColor ( )
virtual

Color destructor.

Definition at line 1138 of file TColor.cxx.

Member Function Documentation

◆ Allocate()

void TColor::Allocate ( )
private

Make this color known to the graphics system.

Definition at line 1904 of file TColor.cxx.

◆ AsHexString()

const char * TColor::AsHexString ( ) const

Return color as hexadecimal string.

This string can be directly passed to, for example, TGClient::GetColorByName(). String will be reused so copy immediately if needed.

Definition at line 1325 of file TColor.cxx.

◆ Class()

static TClass * TColor::Class ( )
static
Returns
TClass describing this class

◆ Class_Name()

static const char * TColor::Class_Name ( )
static
Returns
Name of this class

◆ Class_Version()

static constexpr Version_t TColor::Class_Version ( )
inlinestaticconstexpr
Returns
Version of this class

Definition at line 113 of file TColor.h.

◆ Copy()

void TColor::Copy ( TObject color) const
overridevirtual

Copy this color to obj.

Reimplemented from TObject.

Definition at line 1346 of file TColor.cxx.

◆ CreateColorsCircle()

void TColor::CreateColorsCircle ( Int_t  offset,
const char *  name,
UChar_t rgb 
)
static

Create the "circle" colors in the color wheel.

Definition at line 1378 of file TColor.cxx.

◆ CreateColorsGray()

void TColor::CreateColorsGray ( )
static

Create the Gray scale colors in the Color Wheel.

Definition at line 1362 of file TColor.cxx.

◆ CreateColorsRectangle()

void TColor::CreateColorsRectangle ( Int_t  offset,
const char *  name,
UChar_t rgb 
)
static

Create the "rectangular" colors in the color wheel.

Definition at line 1397 of file TColor.cxx.

◆ CreateColorTableFromFile()

Int_t TColor::CreateColorTableFromFile ( TString  fileName,
Float_t  alpha = 1. 
)
static

Static function creating a color palette based on an input text file.

Every color in the file will take the same amount of space in the palette.

See also
https://doi.org/10.1038/s41467-020-19160-7
Note
This function is designed to load into ROOT the colour-vision deficiency friendly and perceptually uniform colour maps specially designed in https://doi.org/10.5281/zenodo.4491293, namely the .txt files stored in the subfolders of ScientificColourMaps7.zip, e.g. batlow/batlow.txt
Parameters
fileNameName of a .txt file (ASCII) containing three floats per line, separated by spaces, namely the r g b fractions of the color, each value being in the range [0,1].
alphathe global opacity for all colors within this palette
Returns
a positive value on success and -1 on error.
Author
Fernando Hueso-González

Definition at line 2624 of file TColor.cxx.

◆ CreateColorWheel()

void TColor::CreateColorWheel ( )
static

Static function steering the creation of all colors in the color wheel.

Definition at line 1416 of file TColor.cxx.

◆ CreateGradientColorTable()

Int_t TColor::CreateGradientColorTable ( UInt_t  Number,
Double_t Stops,
Double_t Red,
Double_t Green,
Double_t Blue,
UInt_t  NColors,
Float_t  alpha = 1.,
Bool_t  setPalette = kTRUE 
)
static

Static function creating a color table with several connected linear gradients.

  • Number: The number of end point colors that will form the gradients. Must be at least 2.
  • Stops: Where in the whole table the end point colors should lie. Each entry must be on [0, 1], each entry must be greater than the previous entry.
  • Red, Green, Blue: The end point color values. Each entry must be on [0, 1]
  • NColors: Total number of colors in the table. Must be at least 1.
  • alpha: the opacity factor, between 0 and 1. Default is no transparency (1).
  • setPalette: activate the newly created palette (true by default). If false, the caller is in charge of calling TColor::SetPalette using the return value of the function (first palette color index) and reconstructing the Int_t palette[NColors+1] array.

Returns a positive value (the index of the first color of the palette) on success and -1 on error.

The table is constructed by tracing lines between the given points in RGB space. Each color value may have a value between 0 and 1. The difference between consecutive "Stops" values gives the fraction of space in the whole table that should be used for the interval between the corresponding color values.

Normally the first element of Stops should be 0 and the last should be 1. If this is not true, fewer than NColors will be used in proportion with the total interval between the first and last elements of Stops.

This definition is similar to the povray-definition of gradient color tables.

For instance:

UInt_t Number = 3;
Double_t Red[3] = { 0.0, 1.0, 1.0 };
Double_t Green[3] = { 0.0, 0.0, 1.0 };
Double_t Blue[3] = { 1.0, 0.0, 1.0 };
Double_t Stops[3] = { 0.0, 0.4, 1.0 };

This defines a table in which there are three color end points: RGB = {0, 0, 1}, {1, 0, 0}, and {1, 1, 1} = blue, red, white The first 40% of the table is used to go linearly from blue to red. The remaining 60% of the table is used to go linearly from red to white.

If you define a very short interval such that less than one color fits in it, no colors at all will be allocated. If this occurs for all intervals, ROOT will revert to the default palette.

Original code by Andreas Zoglauer (zog@m.nosp@m.pe.m.nosp@m.pg.de)

Definition at line 2730 of file TColor.cxx.

◆ DeclFileName()

static const char * TColor::DeclFileName ( )
inlinestatic
Returns
Name of the file containing the class declaration

Definition at line 113 of file TColor.h.

◆ DefinedColors()

Bool_t TColor::DefinedColors ( Int_t  set_always_on = 0)
static

Static method returning kTRUE if some new colors have been defined after initialisation or since the last call to this method.

This allows to avoid the colors and palette streaming in TCanvas::Streamer if not needed. If method called once with set_always_on = 1, all next canvases will be To reset such mode, just call methoid once with set_always_on = -1

Definition at line 1537 of file TColor.cxx.

◆ GetAlpha()

Float_t TColor::GetAlpha ( ) const
inline

Definition at line 66 of file TColor.h.

◆ GetBlue()

Float_t TColor::GetBlue ( ) const
inline

Definition at line 62 of file TColor.h.

◆ GetColor() [1/4]

Int_t TColor::GetColor ( const char *  hexcolor)
static

Static method returning color number for color specified by hex color string of form: "#rrggbb", where rr, gg and bb are in hex between [0,FF], e.g.

"#c0c0c0".

The color retrieval is done using a threshold defined by SetColorThreshold.

If specified color does not exist it will be created with as name "#rrggbb" with rr, gg and bb in hex between [0,FF].

Definition at line 1920 of file TColor.cxx.

◆ GetColor() [2/4]

Int_t TColor::GetColor ( Float_t  r,
Float_t  g,
Float_t  b,
Float_t  a = 1. 
)
static

Static method returning color number for color specified by r, g and b.

The r,g,b should be in the range [0,1].

The color retrieval is done using a threshold defined by SetColorThreshold.

If specified color does not exist it will be created with as name "#rrggbb" with rr, gg and bb in hex between [0,FF].

Definition at line 1941 of file TColor.cxx.

◆ GetColor() [3/4]

Int_t TColor::GetColor ( Int_t  r,
Int_t  g,
Int_t  b,
Float_t  a = 1. 
)
static

Static method returning color number for color specified by r, g and b.

The r,g,b should be in the range [0,255]. If the specified color does not exist it will be created with as name "#rrggbb" with rr, gg and bb in hex between [0,FF].

The color retrieval is done using a threshold defined by SetColorThreshold.

Definition at line 2001 of file TColor.cxx.

◆ GetColor() [4/4]

Int_t TColor::GetColor ( ULong_t  pixel)
static

Static method returning color number for color specified by system dependent pixel value.

Pixel values can be obtained, e.g., from the GUI color picker.

The color retrieval is done using a threshold defined by SetColorThreshold.

Definition at line 1954 of file TColor.cxx.

◆ GetColorBright()

Int_t TColor::GetColorBright ( Int_t  color)
static

Static function: Returns the bright color number corresponding to n If the TColor object does not exist, it is created at a free color index.

Definition at line 2087 of file TColor.cxx.

◆ GetColorByName()

Int_t TColor::GetColorByName ( const char *  colorname)
static

Static method returning color index for a color specified by name.

The list of defined colors and their names is given by TColor::ListColors. If the specified color name does not exist -1 is returned.

Definition at line 2073 of file TColor.cxx.

◆ GetColorDark()

Int_t TColor::GetColorDark ( Int_t  color)
static

Static function: Returns the dark color number corresponding to n If the TColor object does not exist, it is created at a free color index.

Definition at line 2130 of file TColor.cxx.

◆ GetColorPalette()

Int_t TColor::GetColorPalette ( Int_t  i)
static

Static function returning the color number i in current palette.

Definition at line 1504 of file TColor.cxx.

◆ GetColorTransparent()

Int_t TColor::GetColorTransparent ( Int_t  n,
Float_t  a 
)
static

Static function: Returns the transparent color number corresponding to n.

The opacity level is given by the alpha value a. If a color with the same RGBa values already exists it is returned.

Definition at line 2174 of file TColor.cxx.

◆ GetFirstFreeColorIndex()

Int_t TColor::GetFirstFreeColorIndex ( )
static

Static function: Returns the first free color greater in the list of colors.

index. It can be used to define a user custom color.

auto color = new TColor(ci, 0.1, 0.2, 0.3);
static Int_t GetFirstFreeColorIndex()
Static function: Returns the first free color greater in the list of colors.
Definition TColor.cxx:2378

Definition at line 2378 of file TColor.cxx.

◆ GetFreeColorIndex()

Int_t TColor::GetFreeColorIndex ( )
static

Static function: Returns the free color index greater than the highest defined color index.

All the color indices after this index are also free. It can be used to define a user custom color.

auto color = new TColor(ci, 0.1, 0.2, 0.3);

Definition at line 2364 of file TColor.cxx.

◆ GetGrayscale()

virtual Float_t TColor::GetGrayscale ( ) const
inlinevirtual

Definition at line 67 of file TColor.h.

◆ GetGreen()

Float_t TColor::GetGreen ( ) const
inline

Definition at line 61 of file TColor.h.

◆ GetHLS()

virtual void TColor::GetHLS ( Float_t h,
Float_t l,
Float_t s 
) const
inlinevirtual

Definition at line 56 of file TColor.h.

◆ GetHue()

Float_t TColor::GetHue ( ) const
inline

Definition at line 63 of file TColor.h.

◆ GetLight()

Float_t TColor::GetLight ( ) const
inline

Definition at line 64 of file TColor.h.

◆ GetLinearGradient()

Int_t TColor::GetLinearGradient ( Double_t  angle,
const std::vector< Int_t > &  colors,
const std::vector< Double_t > &  positions = {} 
)
static

Static function: Returns the linear gradient color number corresponding to specified parameters.

First parameter set direction as angle in grad. Value 0 is horizontal direction, 90 - vertical List of colors defines interpolation colors for the gradient Optional positions can define relative color positions and must be sorted array of values between 0 and 1. If such gradient not exists - it will be created new Returns -1 if wrong parameters where specified

Definition at line 2210 of file TColor.cxx.

◆ GetNumber()

Int_t TColor::GetNumber ( ) const
inline

Definition at line 58 of file TColor.h.

◆ GetNumberOfColors()

Int_t TColor::GetNumberOfColors ( )
static

Static function returning number of colors in the color palette.

Definition at line 1524 of file TColor.cxx.

◆ GetPalette()

const TArrayI & TColor::GetPalette ( )
static

Static function returning the current active palette.

Definition at line 1516 of file TColor.cxx.

◆ GetPixel()

ULong_t TColor::GetPixel ( ) const

Return pixel value corresponding to this color.

This pixel value can be used in the GUI classes. This call does not work in batch mode since it needs to communicate with the graphics system.

Definition at line 1559 of file TColor.cxx.

◆ GetRadialGradient()

Int_t TColor::GetRadialGradient ( Double_t  radius,
const std::vector< Int_t > &  colors,
const std::vector< Double_t > &  positions = {} 
)
static

Static function: Returns the radial gradient color number corresponding to specified parameters.

First parameter set direction as angle in grad. Value 0 is horizontal direction, 90 - vertical List of colors defines interpolation colors for the gradient Optional positions can define relative color positions and must be sorted array of values between 0 and 1. If such gradient not exists - it will be created new Returns -1 if wrong parameter where specified

Definition at line 2287 of file TColor.cxx.

◆ GetRed()

Float_t TColor::GetRed ( ) const
inline

Definition at line 60 of file TColor.h.

◆ GetRGB()

virtual void TColor::GetRGB ( Float_t r,
Float_t g,
Float_t b 
) const
inlinevirtual

Definition at line 54 of file TColor.h.

◆ GetSaturation()

Float_t TColor::GetSaturation ( ) const
inline

Definition at line 65 of file TColor.h.

◆ HLS2RGB() [1/2]

void TColor::HLS2RGB ( Float_t  hue,
Float_t  light,
Float_t  satur,
Float_t r,
Float_t g,
Float_t b 
)
static

Static method to compute RGB from HLS.

The l and s are between [0,1] and h is between [0,360]. The returned r,g,b triplet is between [0,1].

Definition at line 1576 of file TColor.cxx.

◆ HLS2RGB() [2/2]

void TColor::HLS2RGB ( Int_t  h,
Int_t  l,
Int_t  s,
Int_t r,
Int_t g,
Int_t b 
)
static

Static method to compute RGB from HLS.

The h,l,s are between [0,255]. The returned r,g,b triplet is between [0,255].

Definition at line 1616 of file TColor.cxx.

◆ HLStoRGB()

static void TColor::HLStoRGB ( Float_t  h,
Float_t  l,
Float_t  s,
Float_t r,
Float_t g,
Float_t b 
)
inlinestatic

Definition at line 77 of file TColor.h.

◆ HLStoRGB1()

Float_t TColor::HLStoRGB1 ( Float_t  rn1,
Float_t  rn2,
Float_t  huei 
)
staticprivate

Static method. Auxiliary to HLS2RGB().

Definition at line 1601 of file TColor.cxx.

◆ HSV2RGB()

void TColor::HSV2RGB ( Float_t  hue,
Float_t  satur,
Float_t  value,
Float_t r,
Float_t g,
Float_t b 
)
static

Static method to compute RGB from HSV:

  • The hue value runs from 0 to 360.
  • The saturation is the degree of strength or purity and is from 0 to 1. Purity is how much white is added to the color, so S=1 makes the purest color (no white).
  • Brightness value also ranges from 0 to 1, where 0 is the black.

The returned r,g,b triplet is between [0,1].

Definition at line 1642 of file TColor.cxx.

◆ InitializeColors()

void TColor::InitializeColors ( )
static

Initialize colors used by the TCanvas based graphics (via TColor objects).

This method should be called before the ApplicationImp is created (which initializes the GUI colors).

Definition at line 1167 of file TColor.cxx.

◆ InvertPalette()

void TColor::InvertPalette ( )
static

Invert the current color palette.

The top of the palette becomes the bottom and vice versa.

Definition at line 3640 of file TColor.cxx.

◆ IsA()

TClass * TColor::IsA ( ) const
inlineoverridevirtual
Returns
TClass describing current object

Reimplemented from TObject.

Reimplemented in TColorGradient, TLinearGradient, and TRadialGradient.

Definition at line 113 of file TColor.h.

◆ IsGrayscale()

Bool_t TColor::IsGrayscale ( )
static

Return whether all colors return grayscale values.

Definition at line 2584 of file TColor.cxx.

◆ ListColors()

void TColor::ListColors ( Int_t  ci = 0,
Int_t  nb = 0,
Bool_t  showEmpty = kFALSE 
)
static

List nb colors from the color index ci.

If nb=0 all the colors are printed. If showEmpty is set to kTRUE, empty color indices are also printed

Definition at line 2395 of file TColor.cxx.

◆ ls()

void TColor::ls ( Option_t option = "") const
overridevirtual

List this color with its attributes.

Reimplemented from TObject.

Definition at line 1698 of file TColor.cxx.

◆ Number2Pixel()

ULong_t TColor::Number2Pixel ( Int_t  ci)
static

Static method that given a color index number, returns the corresponding pixel value.

This pixel value can be used in the GUI classes. This call does not work in batch mode since it needs to communicate with the graphics system.

Definition at line 2437 of file TColor.cxx.

◆ operator=()

TColor & TColor::operator= ( const TColor color)

Definition at line 1155 of file TColor.cxx.

◆ Pixel2RGB() [1/2]

void TColor::Pixel2RGB ( ULong_t  pixel,
Float_t r,
Float_t g,
Float_t b 
)
static

Convert machine dependent pixel value (obtained via RGB2Pixel or via Number2Pixel() or via TColor::GetPixel()) to r,g,b triplet.

The r,g,b triplet will be [0,1].

Definition at line 2498 of file TColor.cxx.

◆ Pixel2RGB() [2/2]

void TColor::Pixel2RGB ( ULong_t  pixel,
Int_t r,
Int_t g,
Int_t b 
)
static

Convert machine dependent pixel value (obtained via RGB2Pixel or via Number2Pixel() or via TColor::GetPixel()) to r,g,b triplet.

The r,g,b triplet will be [0,255].

Definition at line 2513 of file TColor.cxx.

◆ PixelAsHexString()

const char * TColor::PixelAsHexString ( ULong_t  pixel)
static

Convert machine dependent pixel value (obtained via RGB2Pixel or via Number2Pixel() or via TColor::GetPixel()) to a hexadecimal string.

This string can be directly passed to, for example, TGClient::GetColorByName(). String will be reused so copy immediately if needed.

Definition at line 2530 of file TColor.cxx.

◆ Print()

void TColor::Print ( Option_t option = "") const
overridevirtual

Dump this color with its attributes.

Reimplemented from TObject.

Definition at line 1707 of file TColor.cxx.

◆ RGB2HLS() [1/2]

void TColor::RGB2HLS ( Float_t  rr,
Float_t  gg,
Float_t  bb,
Float_t hue,
Float_t light,
Float_t satur 
)
static

Static method to compute HLS from RGB.

The r,g,b triplet is between [0,1], hue is between [0,360], light and satur are [0,1].

Definition at line 1716 of file TColor.cxx.

◆ RGB2HLS() [2/2]

void TColor::RGB2HLS ( Int_t  r,
Int_t  g,
Int_t  b,
Int_t h,
Int_t l,
Int_t s 
)
static

Static method to compute HLS from RGB.

The r,g,b triplet is between [0,255], hue, light and satur are between [0,255].

Definition at line 1806 of file TColor.cxx.

◆ RGB2HSV()

void TColor::RGB2HSV ( Float_t  r,
Float_t  g,
Float_t  b,
Float_t hue,
Float_t satur,
Float_t value 
)
static

Static method to compute HSV from RGB.

  • The input values:
    • r,g,b triplet is between [0,1].
  • The returned values:
    • The hue value runs from 0 to 360.
    • The saturation is the degree of strength or purity and is from 0 to 1. Purity is how much white is added to the color, so S=1 makes the purest color (no white).
    • Brightness value also ranges from 0 to 1, where 0 is the black.

Definition at line 1771 of file TColor.cxx.

◆ RGB2Pixel() [1/2]

ULong_t TColor::RGB2Pixel ( Float_t  r,
Float_t  g,
Float_t  b 
)
static

Convert r,g,b to graphics system dependent pixel value.

The r,g,b triplet must be [0,1].

Definition at line 2453 of file TColor.cxx.

◆ RGB2Pixel() [2/2]

ULong_t TColor::RGB2Pixel ( Int_t  r,
Int_t  g,
Int_t  b 
)
static

Convert r,g,b to graphics system dependent pixel value.

The r,g,b triplet must be [0,255].

Definition at line 2475 of file TColor.cxx.

◆ RGBtoHLS()

static void TColor::RGBtoHLS ( Float_t  r,
Float_t  g,
Float_t  b,
Float_t h,
Float_t l,
Float_t s 
)
inlinestatic

Definition at line 82 of file TColor.h.

◆ SaveColor()

Bool_t TColor::SaveColor ( std::ostream &  out,
Int_t  ci 
)
static

Save a color with index > 228 as a C++ statement(s) on output stream out.

Return kFALSE if color not saved in the output stream

Definition at line 2543 of file TColor.cxx.

◆ SetAlpha()

virtual void TColor::SetAlpha ( Float_t  a)
inlinevirtual

Definition at line 70 of file TColor.h.

◆ SetColorThreshold()

void TColor::SetColorThreshold ( Float_t  t)
static

This method specifies the color threshold used by GetColor to retrieve a color.

Parameters
[in]tColor threshold. By default is equal to 1./31. or 1./255. depending on the number of available color planes.

When GetColor is called, it scans the defined colors and compare them to the requested color. If the Red Green and Blue values passed to GetColor are Rr Gr Br and Rd Gd Bd the values of a defined color. These two colors are considered equal if (abs(Rr-Rd) < t & abs(Br-Bd) < t & abs(Br-Bd) < t). If this test passes, the color defined by Rd Gd Bd is returned by GetColor.

To make sure GetColor will return a color having exactly the requested R G B values it is enough to specify a nul :

static void SetColorThreshold(Float_t t)
This method specifies the color threshold used by GetColor to retrieve a color.
Definition TColor.cxx:1987

To reset the color threshold to its default value it is enough to do:

Definition at line 1987 of file TColor.cxx.

◆ SetGrayscale()

void TColor::SetGrayscale ( Bool_t  set = kTRUE)
static

Set whether all colors should return grayscale values.

Definition at line 2592 of file TColor.cxx.

◆ SetName()

void TColor::SetName ( const char *  name)
overridevirtual

Set the color name and change also the name of the "dark" and "bright" associated colors if they exist.

Reimplemented from TNamed.

Definition at line 1826 of file TColor.cxx.

◆ SetPalette()

void TColor::SetPalette ( Int_t  ncolors,
Int_t colors,
Float_t  alpha = 1. 
)
static

Static function.

The color palette is used by the histogram classes (see TH1::Draw options). For example TH1::Draw("col") draws a 2-D histogram with cells represented by a box filled with a color CI function of the cell content. if the cell content is N, the color CI used will be the color number in colors[N],etc. If the maximum cell content is > ncolors, all cell contents are scaled to ncolors.

if ncolors <= 0 a default palette (see below) of 50 colors is defined. The colors defined in this palette are OK for coloring pads, labels.

index 0->9 : grey colors from light to dark grey
index 10->19 : "brown" colors
index 20->29 : "blueish" colors
index 30->39 : "redish" colors
index 40->49 : basic colors
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t index

if ncolors == 1 && colors == 0, a Rainbow Color map is created with 50 colors. It is kept for backward compatibility. Better palettes like kBird are recommended.

High quality predefined palettes with 255 colors are available when colors == 0. The following value of ncolors give access to:

if ncolors = 51 and colors=0, a Deep Sea palette is used.
if ncolors = 52 and colors=0, a Grey Scale palette is used.
if ncolors = 53 and colors=0, a Dark Body Radiator palette is used.
if ncolors = 54 and colors=0, a Two-Color Hue palette is used.(dark blue through neutral gray to bright yellow)
if ncolors = 55 and colors=0, a Rain Bow palette is used.
if ncolors = 56 and colors=0, an Inverted Dark Body Radiator palette is used.
if ncolors = 57 and colors=0, a monotonically increasing L value palette is used.
if ncolors = 58 and colors=0, a Cubehelix palette is used
(Cf. Dave Green's "cubehelix" colour scheme at http://www.mrao.cam.ac.uk/~dag/CUBEHELIX/)
if ncolors = 59 and colors=0, a Green Red Violet palette is used.
if ncolors = 60 and colors=0, a Blue Red Yellow palette is used.
if ncolors = 61 and colors=0, an Ocean palette is used.
if ncolors = 62 and colors=0, a Color Printable On Grey palette is used.
if ncolors = 63 and colors=0, an Alpine palette is used.
if ncolors = 64 and colors=0, an Aquamarine palette is used.
if ncolors = 65 and colors=0, an Army palette is used.
if ncolors = 66 and colors=0, an Atlantic palette is used.
if ncolors = 67 and colors=0, an Aurora palette is used.
if ncolors = 68 and colors=0, an Avocado palette is used.
if ncolors = 69 and colors=0, a Beach palette is used.
if ncolors = 70 and colors=0, a Black Body palette is used.
if ncolors = 71 and colors=0, a Blue Green Yellow palette is used.
if ncolors = 72 and colors=0, a Brown Cyan palette is used.
if ncolors = 73 and colors=0, a CMYK palette is used.
if ncolors = 74 and colors=0, a Candy palette is used.
if ncolors = 75 and colors=0, a Cherry palette is used.
if ncolors = 76 and colors=0, a Coffee palette is used.
if ncolors = 77 and colors=0, a Dark Rain Bow palette is used.
if ncolors = 78 and colors=0, a Dark Terrain palette is used.
if ncolors = 79 and colors=0, a Fall palette is used.
if ncolors = 80 and colors=0, a Fruit Punch palette is used.
if ncolors = 81 and colors=0, a Fuchsia palette is used.
if ncolors = 82 and colors=0, a Grey Yellow palette is used.
if ncolors = 83 and colors=0, a Green Brown Terrain palette is used.
if ncolors = 84 and colors=0, a Green Pink palette is used.
if ncolors = 85 and colors=0, an Island palette is used.
if ncolors = 86 and colors=0, a Lake palette is used.
if ncolors = 87 and colors=0, a Light Temperature palette is used.
if ncolors = 88 and colors=0, a Light Terrain palette is used.
if ncolors = 89 and colors=0, a Mint palette is used.
if ncolors = 90 and colors=0, a Neon palette is used.
if ncolors = 91 and colors=0, a Pastel palette is used.
if ncolors = 92 and colors=0, a Pearl palette is used.
if ncolors = 93 and colors=0, a Pigeon palette is used.
if ncolors = 94 and colors=0, a Plum palette is used.
if ncolors = 95 and colors=0, a Red Blue palette is used.
if ncolors = 96 and colors=0, a Rose palette is used.
if ncolors = 97 and colors=0, a Rust palette is used.
if ncolors = 98 and colors=0, a Sandy Terrain palette is used.
if ncolors = 99 and colors=0, a Sienna palette is used.
if ncolors = 100 and colors=0, a Solar palette is used.
if ncolors = 101 and colors=0, a South West palette is used.
if ncolors = 102 and colors=0, a Starry Night palette is used.
if ncolors = 103 and colors=0, a Sunset palette is used.
if ncolors = 104 and colors=0, a Temperature Map palette is used.
if ncolors = 105 and colors=0, a Thermometer palette is used.
if ncolors = 106 and colors=0, a Valentine palette is used.
if ncolors = 107 and colors=0, a Visible Spectrum palette is used.
if ncolors = 108 and colors=0, a Water Melon palette is used.
if ncolors = 109 and colors=0, a Cool palette is used.
if ncolors = 110 and colors=0, a Copper palette is used.
if ncolors = 111 and colors=0, a Gist Earth palette is used.
if ncolors = 112 and colors=0, a Viridis palette is used.
if ncolors = 113 and colors=0, a Cividis palette is used.
#define a(i)
Definition RSha256.hxx:99
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void value

These palettes can also be accessed by names:

For example:

Set the current palette as "Bird" (number 57).

The color numbers specified in the palette can be viewed by selecting the item "colors" in the "VIEW" menu of the canvas toolbar. The color parameters can be changed via TColor::SetRGB.

Note that when drawing a 2D histogram h2 with the option "COL" or "COLZ" or with any "CONT" options using the color map, the number of colors used is defined by the number of contours n specified with: h2->SetContour(n)

Definition at line 2921 of file TColor.cxx.

◆ SetRGB()

void TColor::SetRGB ( Float_t  r,
Float_t  g,
Float_t  b 
)
virtual

Initialize this color and its "dark" and "bright" associated colors.

Definition at line 1850 of file TColor.cxx.

◆ Streamer()

void TColor::Streamer ( TBuffer R__b)
overridevirtual

Stream an object of class TObject.

Reimplemented from TObject.

Reimplemented in TColorGradient, TLinearGradient, and TRadialGradient.

◆ StreamerNVirtual()

void TColor::StreamerNVirtual ( TBuffer ClassDef_StreamerNVirtual_b)
inline

Definition at line 113 of file TColor.h.

Member Data Documentation

◆ fAlpha

Float_t TColor::fAlpha
private

Alpha (transparency)

Definition at line 31 of file TColor.h.

◆ fBlue

Float_t TColor::fBlue
private

Fraction of Blue.

Definition at line 27 of file TColor.h.

◆ fGreen

Float_t TColor::fGreen
private

Fraction of Green.

Definition at line 26 of file TColor.h.

◆ fHue

Float_t TColor::fHue
private

Hue.

Definition at line 28 of file TColor.h.

◆ fLight

Float_t TColor::fLight
private

Light.

Definition at line 29 of file TColor.h.

◆ fNumber

Int_t TColor::fNumber
protected

Color number identifier.

Definition at line 23 of file TColor.h.

◆ fRed

Float_t TColor::fRed
private

Fraction of Red.

Definition at line 25 of file TColor.h.

◆ fSaturation

Float_t TColor::fSaturation
private

Saturation.

Definition at line 30 of file TColor.h.

Libraries for TColor:

The documentation for this class was generated from the following files: