The color creation and management class.
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:
Then it can be manipulated. For example its RGB components can be modified:
A new color can be created the following way:
Two sets of colors are initialized;
The following image displays the 50 basic colors.
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.:
The complete list of predefined color names is the following:
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:
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:
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.
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.
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:
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:
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:
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:
Later on to reuse the palette MyPalette
it will be enough to do
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.
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.These palettes can be accessed "by name" with gStyle->SetPalette(num)
. num
can be taken within the following enum:
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".
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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.
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:
A new color can be created transparent the following way:
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.
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.)
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:
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 |
TClass * | IsA () const override |
void | ls (Option_t *option="") const override |
List this color with its attributes. | |
TColor & | operator= (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 (""). | |
TObject * | Clone (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. | |
TClass * | IsA () const override |
Bool_t | IsSortable () const override |
void | ls (Option_t *option="") const override |
List TNamed name and title. | |
TNamed & | operator= (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 TObject * | DrawClone (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 TObject * | FindObject (const char *name) const |
Must be redefined in derived classes. | |
virtual TObject * | FindObject (const TObject *obj) const |
Must be redefined in derived classes. | |
virtual Option_t * | GetDrawOption () 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_t * | GetOption () 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) |
TObject & | operator= (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 TClass * | Class () |
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 TArrayI & | GetPalette () |
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 TClass * | Class () |
static const char * | Class_Name () |
static constexpr Version_t | Class_Version () |
static const char * | DeclFileName () |
Static Public Member Functions inherited from TObject | |
static TClass * | Class () |
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>
TColor::TColor | ( | ) |
Default constructor.
Definition at line 1062 of file TColor.cxx.
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 1074 of file TColor.cxx.
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 1120 of file TColor.cxx.
TColor::TColor | ( | const TColor & | color | ) |
Color copy constructor.
Definition at line 1151 of file TColor.cxx.
|
virtual |
Color destructor.
Definition at line 1139 of file TColor.cxx.
|
private |
Make this color known to the graphics system.
Definition at line 1905 of file TColor.cxx.
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 1326 of file TColor.cxx.
|
static |
|
inlinestaticconstexpr |
|
overridevirtual |
Create the "circle" colors in the color wheel.
Definition at line 1379 of file TColor.cxx.
|
static |
Create the Gray scale colors in the Color Wheel.
Definition at line 1363 of file TColor.cxx.
Create the "rectangular" colors in the color wheel.
Definition at line 1398 of file TColor.cxx.
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.
fileName | Name 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]. |
alpha | the global opacity for all colors within this palette |
Definition at line 2629 of file TColor.cxx.
|
static |
Static function steering the creation of all colors in the color wheel.
Definition at line 1417 of file TColor.cxx.
|
static |
Static function creating a color table with several connected linear gradients.
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:
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 2735 of file TColor.cxx.
|
inlinestatic |
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 1538 of file TColor.cxx.
|
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 1921 of file TColor.cxx.
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 1942 of file TColor.cxx.
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 2002 of file TColor.cxx.
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 1955 of file TColor.cxx.
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 2088 of file TColor.cxx.
|
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 2074 of file TColor.cxx.
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 2131 of file TColor.cxx.
Static function returning the color number i in current palette.
Definition at line 1505 of file TColor.cxx.
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 2175 of file TColor.cxx.
|
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.
Definition at line 2379 of file TColor.cxx.
|
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.
Definition at line 2365 of file TColor.cxx.
|
inlinevirtual |
|
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 2211 of file TColor.cxx.
|
static |
Static function returning number of colors in the color palette.
Definition at line 1525 of file TColor.cxx.
|
static |
Static function returning the current active palette.
Definition at line 1517 of file TColor.cxx.
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 1560 of file TColor.cxx.
|
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 2288 of file TColor.cxx.
|
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 1577 of file TColor.cxx.
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 1617 of file TColor.cxx.
Static method. Auxiliary to HLS2RGB().
Definition at line 1602 of file TColor.cxx.
|
static |
Static method to compute RGB from HSV:
The returned r,g,b triplet is between [0,1].
Definition at line 1643 of file TColor.cxx.
|
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 1168 of file TColor.cxx.
|
static |
Invert the current color palette.
The top of the palette becomes the bottom and vice versa.
Definition at line 3645 of file TColor.cxx.
|
inlineoverridevirtual |
Reimplemented from TObject.
Reimplemented in TColorGradient, TLinearGradient, and TRadialGradient.
|
static |
Return whether all colors return grayscale values.
Definition at line 2589 of file TColor.cxx.
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 2396 of file TColor.cxx.
|
overridevirtual |
List this color with its attributes.
Reimplemented from TObject.
Definition at line 1699 of file TColor.cxx.
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 2438 of file TColor.cxx.
Definition at line 1156 of file TColor.cxx.
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 2499 of file TColor.cxx.
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 2514 of file TColor.cxx.
|
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 2535 of file TColor.cxx.
|
overridevirtual |
Dump this color with its attributes.
Reimplemented from TObject.
Definition at line 1708 of file TColor.cxx.
|
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 1717 of file TColor.cxx.
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 1807 of file TColor.cxx.
|
static |
Static method to compute HSV from RGB.
Definition at line 1772 of file TColor.cxx.
Convert r,g,b to graphics system dependent pixel value.
The r,g,b triplet must be [0,1].
Definition at line 2454 of file TColor.cxx.
Convert r,g,b to graphics system dependent pixel value.
The r,g,b triplet must be [0,255].
Definition at line 2476 of file TColor.cxx.
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 2548 of file TColor.cxx.
|
static |
This method specifies the color threshold used by GetColor to retrieve a color.
[in] | t | Color 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 :
To reset the color threshold to its default value it is enough to do:
Definition at line 1988 of file TColor.cxx.
Set whether all colors should return grayscale values.
Definition at line 2597 of file TColor.cxx.
|
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 1827 of file TColor.cxx.
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.
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:
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 2926 of file TColor.cxx.
Initialize this color and its "dark" and "bright" associated colors.
Definition at line 1851 of file TColor.cxx.
|
overridevirtual |
Stream an object of class TObject.
Reimplemented from TObject.
Reimplemented in TColorGradient, TLinearGradient, and TRadialGradient.
|
inline |