Logo ROOT   6.18/05
Reference Guide
List of all members | Public Member Functions | Static Public Member Functions | Protected Attributes | Private Member Functions | Static Private Member Functions | Private Attributes | List of all members

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:414
The color creation and management class.
Definition: TColor.h:19

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 associated colors.
Definition: TColor.cxx:1702

A new color can be created the following way:

Int_t ci = 1756; // color index
TColor *color = new TColor(ci, 0.1, 0.2, 0.3);
int Int_t
Definition: RtypesCore.h:41
TColor()
Default constructor.
Definition: TColor.cxx:983
Since
6.07/07: TColor::GetFreeColorIndex() allows to make sure the new color is created with an unused color index:
TColor *color = new TColor(ci, 0.1, 0.2, 0.3);
static Int_t GetFreeColorIndex()
Static function: Returns a free color index which can be used to define a user custom color.
Definition: TColor.cxx:1992

Two sets of colors are initialized;

Basic colors

The following image displays the 50 basic colors.

{
TCanvas *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:31

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:64
@ kMagenta
Definition: Rtypes.h:64
@ kYellow
Definition: Rtypes.h:64
{
cw = new TCanvas("cw","cw",0,0,400,400);
w->SetCanvas(cw);
w->Draw();
}
Draw the ROOT Color Wheel.
Definition: TColorWheel.h:24
virtual void Draw(Option_t *option="")
Paint the color wheel.
virtual void SetCanvas(TCanvas *can)
Definition: TColorWheel.h:62

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:65
@ kGray
Definition: Rtypes.h:63
@ kPink
Definition: Rtypes.h:65
@ kOrange
Definition: Rtypes.h:65
@ kBlack
Definition: Rtypes.h:63
@ kGreen
Definition: Rtypes.h:64
@ kWhite
Definition: Rtypes.h:63
@ kCyan
Definition: Rtypes.h:64
@ kBlue
Definition: Rtypes.h:64
@ kAzure
Definition: Rtypes.h:65
@ kViolet
Definition: Rtypes.h:65
@ kSpring
Definition: Rtypes.h:65

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

The dark and bright color are used to give 3-D effects when drawing various boxes (see TWbox, TPave, TPaveText, TPaveLabel, etc).

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.

{
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:406
void SetPalette(Int_t ncolors=kBird, Int_t *colors=0, Float_t alpha=1.)
See TColor::SetPalette.
Definition: TStyle.cxx:1637

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:

{
TCanvas *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;
}
virtual void Draw(Option_t *option="")
Draw this function with its current attributes.
Definition: TF1.cxx:1317
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:

{
TCanvas *c2 = new TCanvas("c2","c2",0,0,600,400);
TF2 *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->Draw("surf1z");
return c2;
}
double Double_t
Definition: RtypesCore.h:55
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
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.)
Static function creating a color table with several connected linear gradients.
Definition: TColor.cxx:2215
virtual void SetContour(Int_t nlevels=20, const Double_t *levels=0)
Set the number and values of contour levels.
Definition: TF2.cxx:897
virtual void Draw(Option_t *option="")
Draw this function with its current attributes.
Definition: TF2.cxx:241
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");
}
const Bool_t kFALSE
Definition: RtypesCore.h:88
bool Bool_t
Definition: RtypesCore.h:59
const Bool_t kTRUE
Definition: RtypesCore.h:87
Color * colors
Definition: X3DBuffer.c:21
TExec is a utility class that can be used to execute a C++ command when some event happens in a pad.
Definition: TExec.h:28
virtual void Draw(Option_t *option="")
Default Draw method for all objects.
Definition: TObject.cxx:195
return c3
Definition: legend3.C:15

High quality predefined palettes

Since
6.04: 62 high quality palettes are predefined with 255 colors each. Despite the disadvantages of the Rainbow color map, it was kept in the list of predefined color maps. 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:116
@ kStarryNight
Definition: TColor.h:124
@ kAtlantic
Definition: TColor.h:112
@ kIsland
Definition: TColor.h:118
@ kBlackBody
Definition: TColor.h:113
@ kFruitPunch
Definition: TColor.h:116
@ kArmy
Definition: TColor.h:111
@ kAurora
Definition: TColor.h:112
@ kBrownCyan
Definition: TColor.h:114
@ kBeach
Definition: TColor.h:113
@ kAquamarine
Definition: TColor.h:111
@ kPastel
Definition: TColor.h:120
@ kCubehelix
Definition: TColor.h:109
@ kAvocado
Definition: TColor.h:112
@ kGreenRedViolet
Definition: TColor.h:109
@ kAlpine
Definition: TColor.h:111
@ kVisibleSpectrum
Definition: TColor.h:125
@ kCMYK
Definition: TColor.h:114
@ kInvertedDarkBodyRadiator
Definition: TColor.h:108
@ kWaterMelon
Definition: TColor.h:126
@ kOcean
Definition: TColor.h:110
@ kDarkBodyRadiator
Definition: TColor.h:107
@ kDarkTerrain
Definition: TColor.h:116
@ kLightTemperature
Definition: TColor.h:119
@ kRust
Definition: TColor.h:122
@ kCopper
Definition: TColor.h:126
@ kTemperatureMap
Definition: TColor.h:124
@ kSolar
Definition: TColor.h:123
@ kRedBlue
Definition: TColor.h:121
@ kDeepSea
Definition: TColor.h:107
@ kRainBow
Definition: TColor.h:108
@ kSouthWest
Definition: TColor.h:123
@ kPlum
Definition: TColor.h:121
@ kGreenBrownTerrain
Definition: TColor.h:117
@ kGreyYellow
Definition: TColor.h:117
@ kGreyScale
Definition: TColor.h:107
@ kRose
Definition: TColor.h:122
@ kSunset
Definition: TColor.h:124
@ kCoffee
Definition: TColor.h:115
@ kGreenPink
Definition: TColor.h:118
@ kColorPrintableOnGrey
Definition: TColor.h:110
@ kSienna
Definition: TColor.h:123
@ kBlueYellow
Definition: TColor.h:108
@ kBlueRedYellow
Definition: TColor.h:110
@ kValentine
Definition: TColor.h:125
@ kSandyTerrain
Definition: TColor.h:122
@ kDarkRainBow
Definition: TColor.h:115
@ kViridis
Definition: TColor.h:127
@ kCandy
Definition: TColor.h:114
@ kCherry
Definition: TColor.h:115
@ kNeon
Definition: TColor.h:120
@ kBird
Definition: TColor.h:109
@ kFuchsia
Definition: TColor.h:117
@ kBlueGreenYellow
Definition: TColor.h:113
@ kPearl
Definition: TColor.h:120
@ kPigeon
Definition: TColor.h:121
@ kCividis
Definition: TColor.h:127
@ kCool
Definition: TColor.h:126
@ kLake
Definition: TColor.h:118
@ kMint
Definition: TColor.h:119
@ kGistEarth
Definition: TColor.h:127
@ kThermometer
Definition: TColor.h:125
@ kLightTerrain
Definition: TColor.h:119

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);
TF2 *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->Draw("surf2Z"); f2->SetTitle("kCherry inverted");
}
static void InvertPalette()
Invert the current color palette.
Definition: TColor.cxx:3123
virtual void SetTitle(const char *title="")
Set function title if title has the form "fffffff;xxxx;yyyy", it is assumed that the function title i...
Definition: TF1.cxx:3548

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:67

A new color can be created transparent the following way:

Int_t ci = 1756;
TColor *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% 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:1966

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 a transparency of 35%. The color kBlue itself remains 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. 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.
TEllipse *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
virtual void SetFillColor(Color_t fcolor)
Set the fill area color.
Definition: TAttFill.h:37
virtual void SetFillColorAlpha(Color_t fcolor, Float_t falpha)
Set a transparent fill color.
Definition: TAttFill.cxx:260
virtual void SetLineColorAlpha(Color_t lcolor, Float_t lalpha)
Set a transparent line color.
Definition: TAttLine.cxx:291
Draw Ellipses.
Definition: TEllipse.h:24
virtual void Draw(Option_t *option="")
Draw this ellipse with its current attributes.
Definition: TEllipse.cxx:166
A Graph is a graphics 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:23
Double_t y[n]
Definition: legend1.C:17
Double_t x[n]
Definition: legend1.C:17
Definition: graph.py:1

Definition at line 19 of file TColor.h.

Public Member Functions

 TColor ()
 Default constructor. More...
 
 TColor (const TColor &color)
 Color copy constructor. More...
 
 TColor (Float_t r, Float_t g, Float_t b, Float_t a=1)
 Fast TColor constructor. More...
 
 TColor (Int_t color, Float_t r, Float_t g, Float_t b, const char *name="", Float_t a=1)
 Normal color constructor. More...
 
virtual ~TColor ()
 Color destructor. More...
 
const char * AsHexString () const
 Return color as hexadecimal string. More...
 
void Copy (TObject &color) const
 Copy this color to obj. More...
 
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. More...
 
Float_t GetRed () const
 
virtual void GetRGB (Float_t &r, Float_t &g, Float_t &b) const
 
Float_t GetSaturation () const
 
virtual void ls (Option_t *option="") const
 List this color with its attributes. More...
 
TColoroperator= (const TColor &color)
 
virtual void Print (Option_t *option="") const
 Dump this color with its attributes. More...
 
virtual void SetAlpha (Float_t a)
 
virtual void SetRGB (Float_t r, Float_t g, Float_t b)
 Initialize this color and its associated colors. More...
 
- Public Member Functions inherited from TNamed
 TNamed ()
 
 TNamed (const char *name, const char *title)
 
 TNamed (const TNamed &named)
 TNamed copy ctor. More...
 
 TNamed (const TString &name, const TString &title)
 
virtual ~TNamed ()
 TNamed destructor. More...
 
virtual void Clear (Option_t *option="")
 Set name and title to empty strings (""). More...
 
virtual TObjectClone (const char *newname="") const
 Make a clone of an object using the Streamer facility. More...
 
virtual Int_t Compare (const TObject *obj) const
 Compare two TNamed objects. More...
 
virtual void Copy (TObject &named) const
 Copy this to obj. More...
 
virtual void FillBuffer (char *&buffer)
 Encode TNamed into output buffer. More...
 
virtual const char * GetName () const
 Returns name of object. More...
 
virtual const char * GetTitle () const
 Returns title of object. More...
 
virtual ULong_t Hash () const
 Return hash value for this object. More...
 
virtual Bool_t IsSortable () const
 
virtual void ls (Option_t *option="") const
 List TNamed name and title. More...
 
TNamedoperator= (const TNamed &rhs)
 TNamed assignment operator. More...
 
virtual void Print (Option_t *option="") const
 Print TNamed name and title. More...
 
virtual void SetName (const char *name)
 Set the name of the TNamed. More...
 
virtual void SetNameTitle (const char *name, const char *title)
 Set all the TNamed parameters (name and title). More...
 
virtual void SetTitle (const char *title="")
 Set the title of the TNamed. More...
 
virtual Int_t Sizeof () const
 Return size of the TNamed part of the TObject. More...
 
- Public Member Functions inherited from TObject
 TObject ()
 TObject constructor. More...
 
 TObject (const TObject &object)
 TObject copy ctor. More...
 
virtual ~TObject ()
 TObject destructor. More...
 
void AbstractMethod (const char *method) const
 Use this method to implement an "abstract" method that you don't want to leave purely abstract. More...
 
virtual void AppendPad (Option_t *option="")
 Append graphics object to current pad. More...
 
virtual void Browse (TBrowser *b)
 Browse object. May be overridden for another default action. More...
 
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. More...
 
virtual const char * ClassName () const
 Returns name of class to which the object belongs. More...
 
virtual void Clear (Option_t *="")
 
virtual TObjectClone (const char *newname="") const
 Make a clone of an object using the Streamer facility. More...
 
virtual Int_t Compare (const TObject *obj) const
 Compare abstract method. More...
 
virtual void Copy (TObject &object) const
 Copy this to obj. More...
 
virtual void Delete (Option_t *option="")
 Delete this object. More...
 
virtual Int_t DistancetoPrimitive (Int_t px, Int_t py)
 Computes distance from point (px,py) to the object. More...
 
virtual void Draw (Option_t *option="")
 Default Draw method for all objects. More...
 
virtual void DrawClass () const
 Draw class inheritance tree of the class to which this object belongs. More...
 
virtual TObjectDrawClone (Option_t *option="") const
 Draw a clone of this object in the current selected pad for instance with: gROOT->SetSelectedPad(gPad). More...
 
virtual void Dump () const
 Dump contents of object on stdout. More...
 
virtual void Error (const char *method, const char *msgfmt,...) const
 Issue error message. More...
 
virtual void Execute (const char *method, const char *params, Int_t *error=0)
 Execute method on this object with the given parameter string, e.g. More...
 
virtual void Execute (TMethod *method, TObjArray *params, Int_t *error=0)
 Execute method on this object with parameters stored in the TObjArray. More...
 
virtual void ExecuteEvent (Int_t event, Int_t px, Int_t py)
 Execute action corresponding to an event at (px,py). More...
 
virtual void Fatal (const char *method, const char *msgfmt,...) const
 Issue fatal error message. More...
 
virtual TObjectFindObject (const char *name) const
 Must be redefined in derived classes. More...
 
virtual TObjectFindObject (const TObject *obj) const
 Must be redefined in derived classes. More...
 
virtual Option_tGetDrawOption () const
 Get option used by the graphics system to draw this object. More...
 
virtual const char * GetIconName () const
 Returns mime type name of object. More...
 
virtual const char * GetName () const
 Returns name of object. More...
 
virtual char * GetObjectInfo (Int_t px, Int_t py) const
 Returns string containing info about the object at position (px,py). More...
 
virtual Option_tGetOption () const
 
virtual const char * GetTitle () const
 Returns title of object. More...
 
virtual UInt_t GetUniqueID () const
 Return the unique object id. More...
 
virtual Bool_t HandleTimer (TTimer *timer)
 Execute action in response of a timer timing out. More...
 
virtual ULong_t Hash () const
 Return hash value for this object. More...
 
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. More...
 
virtual void Info (const char *method, const char *msgfmt,...) const
 Issue info message. More...
 
virtual Bool_t InheritsFrom (const char *classname) const
 Returns kTRUE if object inherits from class "classname". More...
 
virtual Bool_t InheritsFrom (const TClass *cl) const
 Returns kTRUE if object inherits from TClass cl. More...
 
virtual void Inspect () const
 Dump contents of this object in a graphics canvas. More...
 
void InvertBit (UInt_t f)
 
virtual Bool_t IsEqual (const TObject *obj) const
 Default equal comparison (objects are equal if they have the same address in memory). More...
 
virtual Bool_t IsFolder () const
 Returns kTRUE in case object contains browsable objects (like containers or lists of other objects). More...
 
R__ALWAYS_INLINE Bool_t IsOnHeap () const
 
virtual Bool_t IsSortable () const
 
R__ALWAYS_INLINE Bool_t IsZombie () const
 
virtual void ls (Option_t *option="") const
 The ls function lists the contents of a class on stdout. More...
 
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). More...
 
virtual Bool_t Notify ()
 This method must be overridden to handle object notification. More...
 
void Obsolete (const char *method, const char *asOfVers, const char *removedFromVers) const
 Use this method to declare a method obsolete. More...
 
void operator delete (void *ptr)
 Operator delete. More...
 
void operator delete[] (void *ptr)
 Operator delete []. More...
 
voidoperator new (size_t sz)
 
voidoperator new (size_t sz, void *vp)
 
voidoperator new[] (size_t sz)
 
voidoperator new[] (size_t sz, void *vp)
 
TObjectoperator= (const TObject &rhs)
 TObject assignment operator. More...
 
virtual void Paint (Option_t *option="")
 This method must be overridden if a class wants to paint itself. More...
 
virtual void Pop ()
 Pop on object drawn in a pad to the top of the display list. More...
 
virtual void Print (Option_t *option="") const
 This method must be overridden when a class wants to print itself. More...
 
virtual Int_t Read (const char *name)
 Read contents of object with specified name from the current directory. More...
 
virtual void RecursiveRemove (TObject *obj)
 Recursively remove this object from a list. More...
 
void ResetBit (UInt_t f)
 
virtual void SaveAs (const char *filename="", Option_t *option="") const
 Save this object in the file specified by filename. More...
 
virtual void SavePrimitive (std::ostream &out, Option_t *option="")
 Save a primitive as a C++ statement(s) on output stream "out". More...
 
void SetBit (UInt_t f)
 
void SetBit (UInt_t f, Bool_t set)
 Set or unset the user status bits as specified in f. More...
 
virtual void SetDrawOption (Option_t *option="")
 Set drawing option for object. More...
 
virtual void SetUniqueID (UInt_t uid)
 Set the unique object id. More...
 
virtual void SysError (const char *method, const char *msgfmt,...) const
 Issue system error message. More...
 
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. More...
 
virtual void Warning (const char *method, const char *msgfmt,...) const
 Issue warning message. More...
 
virtual Int_t Write (const char *name=0, Int_t option=0, Int_t bufsize=0)
 Write this object to the current directory. More...
 
virtual Int_t Write (const char *name=0, Int_t option=0, Int_t bufsize=0) const
 Write this object to the current directory. More...
 

Static Public Member Functions

static void CreateColorsCircle (Int_t offset, const char *name, UChar_t *rgb)
 Create the "circle" colors in the color wheel. More...
 
static void CreateColorsGray ()
 Create the Gray scale colors in the Color Wheel. More...
 
static void CreateColorsRectangle (Int_t offset, const char *name, UChar_t *rgb)
 Create the "rectangular" colors in the color wheel. More...
 
static void CreateColorWheel ()
 Static function steering the creation of all colors in the color wheel. More...
 
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.)
 Static function creating a color table with several connected linear gradients. More...
 
static Bool_t DefinedColors ()
 Static function returning kTRUE if some new colors have been defined after initialisation or since the last call to this method. More...
 
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. More...
 
static Int_t GetColor (Float_t r, Float_t g, Float_t b)
 Static method returning color number for color specified by r, g and b. More...
 
static Int_t GetColor (Int_t r, Int_t g, Int_t b)
 Static method returning color number for color specified by r, g and b. More...
 
static Int_t GetColor (ULong_t pixel)
 Static method returning color number for color specified by system dependent pixel value. More...
 
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. More...
 
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. More...
 
static Int_t GetColorPalette (Int_t i)
 Static function returning the color number i in current palette. More...
 
static Int_t GetColorTransparent (Int_t color, Float_t a)
 Static function: Returns the transparent color number corresponding to n. More...
 
static Int_t GetFreeColorIndex ()
 Static function: Returns a free color index which can be used to define a user custom color. More...
 
static Int_t GetNumberOfColors ()
 Static function returning number of colors in the color palette. More...
 
static const TArrayIGetPalette ()
 Static function returning the current active palette. More...
 
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. More...
 
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. More...
 
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: More...
 
static void InitializeColors ()
 Initialize colors used by the TCanvas based graphics (via TColor objects). More...
 
static void InvertPalette ()
 Invert the current color palette. More...
 
static Bool_t IsGrayscale ()
 Return whether all colors return grayscale values. More...
 
static ULong_t Number2Pixel (Int_t ci)
 Static method that given a color index number, returns the corresponding pixel value. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
static ULong_t RGB2Pixel (Float_t r, Float_t g, Float_t b)
 Convert r,g,b to graphics system dependent pixel value. More...
 
static ULong_t RGB2Pixel (Int_t r, Int_t g, Int_t b)
 Convert r,g,b to graphics system dependent pixel value. More...
 
static void RGBtoHLS (Float_t r, Float_t g, Float_t b, Float_t &h, Float_t &l, Float_t &s)
 
static void SaveColor (std::ostream &out, Int_t ci)
 Save a color with index > 228 as a C++ statement(s) on output stream out. More...
 
static void SetColorThreshold (Float_t t)
 This method specifies the color threshold used by GetColor to retrieve a color. More...
 
static void SetGrayscale (Bool_t set=kTRUE)
 Set whether all colors should return grayscale values. More...
 
static void SetPalette (Int_t ncolors, Int_t *colors, Float_t alpha=1.)
 Static function. More...
 
- Static Public Member Functions inherited from TObject
static Long_t GetDtorOnly ()
 Return destructor only flag. More...
 
static Bool_t GetObjectStat ()
 Get status of object stat flag. More...
 
static void SetDtorOnly (void *obj)
 Set destructor only flag. More...
 
static void SetObjectStat (Bool_t stat)
 Turn on/off tracking of objects in the TObjectTable. More...
 

Protected Attributes

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

Private Member Functions

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

Static Private Member Functions

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

Private Attributes

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

Additional Inherited Members

- Public Types inherited from TObject
enum  {
  kIsOnHeap = 0x01000000 , kNotDeleted = 0x02000000 , kZombie = 0x04000000 , kInconsistent = 0x08000000 ,
  kBitMask = 0x00ffffff
}
 
enum  { kSingleKey = BIT(0) , kOverwrite = BIT(1) , kWriteDelete = BIT(2) }
 
enum  EDeprecatedStatusBits { kObjInCanvas = BIT(3) }
 
enum  EStatusBits {
  kCanDelete = BIT(0) , kMustCleanup = BIT(3) , kIsReferenced = BIT(4) , kHasUUID = BIT(5) ,
  kCannotPick = BIT(6) , kNoContextMenu = BIT(8) , kInvalidObject = BIT(13)
}
 
- 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). More...
 
void MakeZombie ()
 

#include <TColor.h>

Inheritance diagram for TColor:
[legend]

Constructor & Destructor Documentation

◆ TColor() [1/4]

TColor::TColor ( )

Default constructor.

Definition at line 983 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.

Definition at line 994 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 1039 of file TColor.cxx.

◆ TColor() [4/4]

TColor::TColor ( const TColor color)

Color copy constructor.

Definition at line 1067 of file TColor.cxx.

◆ ~TColor()

TColor::~TColor ( )
virtual

Color destructor.

Definition at line 1058 of file TColor.cxx.

Member Function Documentation

◆ Allocate()

void TColor::Allocate ( )
private

Make this color known to the graphics system.

Definition at line 1749 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 1209 of file TColor.cxx.

◆ Copy()

void TColor::Copy ( TObject color) const
virtual

Copy this color to obj.

Reimplemented from TNamed.

Definition at line 1230 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 1262 of file TColor.cxx.

◆ CreateColorsGray()

void TColor::CreateColorsGray ( )
static

Create the Gray scale colors in the Color Wheel.

Definition at line 1246 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 1282 of file TColor.cxx.

◆ CreateColorWheel()

void TColor::CreateColorWheel ( )
static

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

Definition at line 1302 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. 
)
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.

Returns a positive value 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 };
unsigned int UInt_t
Definition: RtypesCore.h:42

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 2215 of file TColor.cxx.

◆ DefinedColors()

Bool_t TColor::DefinedColors ( )
static

Static function 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.

Definition at line 1420 of file TColor.cxx.

◆ GetAlpha()

Float_t TColor::GetAlpha ( ) const
inline

Definition at line 63 of file TColor.h.

◆ GetBlue()

Float_t TColor::GetBlue ( ) const
inline

Definition at line 59 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".

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 1764 of file TColor.cxx.

◆ GetColor() [2/4]

Int_t TColor::GetColor ( Float_t  r,
Float_t  g,
Float_t  b 
)
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].

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 1783 of file TColor.cxx.

◆ GetColor() [3/4]

Int_t TColor::GetColor ( Int_t  r,
Int_t  g,
Int_t  b 
)
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].

Definition at line 1843 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.

Definition at line 1798 of file TColor.cxx.

◆ GetColorBright()

Int_t TColor::GetColorBright ( Int_t  n)
static

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

The convention is that the bright color nb = n+150

Definition at line 1903 of file TColor.cxx.

◆ GetColorDark()

Int_t TColor::GetColorDark ( Int_t  n)
static

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

The convention is that the dark color nd = n+100

Definition at line 1935 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 1390 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 transparency level is given by the alpha value a.

Definition at line 1966 of file TColor.cxx.

◆ GetFreeColorIndex()

Int_t TColor::GetFreeColorIndex ( )
static

Static function: Returns a free color index which can be used to define a user custom color.

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

Definition at line 1992 of file TColor.cxx.

◆ GetGrayscale()

virtual Float_t TColor::GetGrayscale ( ) const
inlinevirtual

Definition at line 64 of file TColor.h.

◆ GetGreen()

Float_t TColor::GetGreen ( ) const
inline

Definition at line 58 of file TColor.h.

◆ GetHLS()

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

Definition at line 53 of file TColor.h.

◆ GetHue()

Float_t TColor::GetHue ( ) const
inline

Definition at line 60 of file TColor.h.

◆ GetLight()

Float_t TColor::GetLight ( ) const
inline

Definition at line 61 of file TColor.h.

◆ GetNumber()

Int_t TColor::GetNumber ( ) const
inline

Definition at line 55 of file TColor.h.

◆ GetNumberOfColors()

Int_t TColor::GetNumberOfColors ( )
static

Static function returning number of colors in the color palette.

Definition at line 1410 of file TColor.cxx.

◆ GetPalette()

const TArrayI & TColor::GetPalette ( )
static

Static function returning the current active palette.

Definition at line 1402 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 1434 of file TColor.cxx.

◆ GetRed()

Float_t TColor::GetRed ( ) const
inline

Definition at line 57 of file TColor.h.

◆ GetRGB()

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

Definition at line 51 of file TColor.h.

◆ GetSaturation()

Float_t TColor::GetSaturation ( ) const
inline

Definition at line 62 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 1451 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 1491 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 73 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 1476 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 1517 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 1083 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 3123 of file TColor.cxx.

◆ IsGrayscale()

Bool_t TColor::IsGrayscale ( )
static

Return whether all colors return grayscale values.

Definition at line 2146 of file TColor.cxx.

◆ ls()

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

List this color with its attributes.

Reimplemented from TNamed.

Definition at line 1573 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 2003 of file TColor.cxx.

◆ operator=()

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

Definition at line 1072 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 2064 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 2079 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 2096 of file TColor.cxx.

◆ Print()

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

Dump this color with its attributes.

Reimplemented from TNamed.

Definition at line 1582 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 1591 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 1684 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 1649 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 2019 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 2041 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 78 of file TColor.h.

◆ SaveColor()

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

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

Definition at line 2108 of file TColor.cxx.

◆ SetAlpha()

virtual void TColor::SetAlpha ( Float_t  a)
inlinevirtual

Definition at line 67 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:1831

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

Definition at line 1831 of file TColor.cxx.

◆ SetGrayscale()

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

Set whether all colors should return grayscale values.

Definition at line 2154 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

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.
RooCmdArg Color(Color_t color)
static constexpr double gray
static constexpr double L
auto * a
Definition: textangle.C:12

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 2404 of file TColor.cxx.

◆ SetRGB()

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

Initialize this color and its associated colors.

Definition at line 1702 of file TColor.cxx.

Member Data Documentation

◆ fAlpha

Float_t TColor::fAlpha
private

Alpha (transparency)

Definition at line 29 of file TColor.h.

◆ fBlue

Float_t TColor::fBlue
private

Fraction of Blue.

Definition at line 25 of file TColor.h.

◆ fGreen

Float_t TColor::fGreen
private

Fraction of Green.

Definition at line 24 of file TColor.h.

◆ fHue

Float_t TColor::fHue
private

Hue.

Definition at line 26 of file TColor.h.

◆ fLight

Float_t TColor::fLight
private

Light.

Definition at line 27 of file TColor.h.

◆ fNumber

Int_t TColor::fNumber
protected

Color number identifier.

Definition at line 21 of file TColor.h.

◆ fRed

Float_t TColor::fRed
private

Fraction of Red.

Definition at line 23 of file TColor.h.

◆ fSaturation

Float_t TColor::fSaturation
private

Saturation.

Definition at line 28 of file TColor.h.

Libraries for TColor:
[legend]

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