Logo ROOT  
Reference Guide
Loading...
Searching...
No Matches
TColor.h
Go to the documentation of this file.
1// @(#)root/base:$Id$
2// Author: Rene Brun 12/12/94
3
4/*************************************************************************
5 * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers. *
6 * All rights reserved. *
7 * *
8 * For the licensing terms see $ROOTSYS/LICENSE. *
9 * For the list of contributors see $ROOTSYS/README/CREDITS. *
10 *************************************************************************/
11
12#ifndef ROOT_TColor
13#define ROOT_TColor
14
15#include "TNamed.h"
16
17#include <array>
18#include <vector>
19
20class TArrayI;
21
22class TColor : public TNamed {
23protected:
24 Int_t fNumber; ///< Color number identifier
25private:
26 Float_t fRed; ///< Fraction of Red
27 Float_t fGreen; ///< Fraction of Green
28 Float_t fBlue; ///< Fraction of Blue
29 Float_t fHue; ///< Hue
30 Float_t fLight; ///< Light
31 Float_t fSaturation; ///< Saturation
32 Float_t fAlpha; ///< Alpha (transparency)
33
34 void Allocate();
35 static Float_t HLStoRGB1(Float_t rn1, Float_t rn2, Float_t huei);
36
37public:
39 TColor(Int_t color, Float_t r, Float_t g, Float_t b, const char *name="", Float_t a = 1);
41 TColor(const TColor &color);
42 TColor &operator=(const TColor &color);
43 virtual ~TColor();
44 const char *AsHexString() const;
45 void Copy(TObject &color) const override;
46 static void CreateColorWheel();
47 static void CreateColorsGray();
48 static void CreateColorsCircle(Int_t offset, const char *name, UChar_t *rgb);
49 static void CreateColorsRectangle(Int_t offset, const char *name, UChar_t *rgb);
50 static Int_t CreateColorTableFromFile(TString fileName, Float_t alpha=1.);
52 Double_t* Red, Double_t* Green, Double_t* Blue, UInt_t NColors, Float_t alpha=1., Bool_t setPalette=kTRUE);
55 virtual void GetRGB(Float_t &r, Float_t &g, Float_t &b) const
56 { r=GetRed(); g=GetGreen(); b=GetBlue(); }
57 virtual void GetHLS(Float_t &h, Float_t &l, Float_t &s) const
58 { h=GetHue(); l=GetLight(); s=GetSaturation(); }
59 Int_t GetNumber() const { return fNumber; }
61 Float_t GetRed() const { return IsGrayscale() ? GetGrayscale() : fRed; }
62 Float_t GetGreen() const { return IsGrayscale() ? GetGrayscale() : fGreen; }
63 Float_t GetBlue() const { return IsGrayscale() ? GetGrayscale() : fBlue; }
64 Float_t GetHue() const { return fHue; }
65 Float_t GetLight() const { return fLight; }
66 Float_t GetSaturation() const { return IsGrayscale() ? 0 : fSaturation; }
67 Float_t GetAlpha() const { return fAlpha; }
68 virtual Float_t GetGrayscale() const { /*ITU*/ return 0.299f*fRed + 0.587f*fGreen + 0.114f*fBlue; }
69 void ls(Option_t *option="") const override;
70 void Print(Option_t *option="") const override;
71 virtual void SetAlpha(Float_t a) { fAlpha = a; }
72 virtual void SetRGB(Float_t r, Float_t g, Float_t b);
73 void SetName(const char* name) override;
74
75 static void InitializeColors();
77 static void HLS2RGB(Int_t h, Int_t l, Int_t s, Int_t &r, Int_t &g, Int_t &b);
79 { TColor::HLS2RGB(h, l, s, r, g, b); } // backward compatible
82 static void RGB2HLS(Int_t r, Int_t g, Int_t b, Int_t &h, Int_t &l, Int_t &s);
84 { TColor::RGB2HLS(r, g, b, h, l, s); } // backward compatible
86 static Int_t GetColor(const char *hexcolor);
89 static Int_t GetColor(ULong_t pixel);
90 static Int_t GetColorBright(Int_t color);
91 static Int_t GetColorDark(Int_t color);
93 static Int_t GetColorByName(const char *colorname);
96 static const TArrayI& GetPalette();
97 static Int_t GetLinearGradient(Double_t angle, const std::vector<Int_t> &colors, const std::vector<Double_t> &positions = {});
98 static Int_t GetRadialGradient(Double_t r, const std::vector<Int_t> &colors, const std::vector<Double_t> &positions = {});
102 static void Pixel2RGB(ULong_t pixel, Int_t &r, Int_t &g, Int_t &b);
103 static void Pixel2RGB(ULong_t pixel, Float_t &r, Float_t &g, Float_t &b);
104 static const char *PixelAsHexString(ULong_t pixel);
106 static Bool_t SaveColor(std::ostream &out, Int_t ci);
107 static void SaveColorsPalette(std::ostream &out);
109 static Bool_t DefinedColors(Int_t set_always_on = 0);
110 static void InvertPalette();
112 static void ListColors(Int_t ci1=0, Int_t ci2 = 0, Bool_t showEmpty = kFALSE);
113 static void SetGrayscale(Bool_t set = kTRUE);
114 static void SetPalette(Int_t ncolors, Int_t *colors, Float_t alpha=1.);
115
116 ClassDefOverride(TColor,2) //Color defined by RGB or HLS
117};
118
141
143public:
144 TColorNumber(Int_t color) : fNumber{color} {}
145 TColorNumber(std::string const &color);
146 // We also require an overload for C-style strings. That's because the
147 // TColorNumber is designed to be constructed implicitly, and C++ won't do
148 // two user-defined conversions in a single implicit conversion chain.
149 inline TColorNumber(const char *color) : TColorNumber{std::string{color}} {}
150 TColorNumber(std::array<Float_t, 3> rgb);
151 Int_t number() const { return fNumber; }
152
153private:
154 Int_t fNumber; ///< Color number identifier
155};
156
157#endif
158
ROOT::R::TRInterface & r
Definition Object.C:4
#define b(i)
Definition RSha256.hxx:100
#define g(i)
Definition RSha256.hxx:105
#define a(i)
Definition RSha256.hxx:99
#define h(i)
Definition RSha256.hxx:106
int Int_t
Signed integer 4 bytes (int).
Definition RtypesCore.h:59
unsigned char UChar_t
Unsigned Character 1 byte (unsigned char).
Definition RtypesCore.h:52
unsigned int UInt_t
Unsigned integer 4 bytes (unsigned int).
Definition RtypesCore.h:60
unsigned long ULong_t
Unsigned long integer 4 bytes (unsigned long). Size depends on architecture.
Definition RtypesCore.h:69
bool Bool_t
Boolean (0=false, 1=true) (bool).
Definition RtypesCore.h:77
constexpr Bool_t kFALSE
Definition RtypesCore.h:108
double Double_t
Double 8 bytes.
Definition RtypesCore.h:73
float Float_t
Float 4 bytes (float).
Definition RtypesCore.h:71
constexpr Bool_t kTRUE
Definition RtypesCore.h:107
const char Option_t
Option string (const char).
Definition RtypesCore.h:80
#define ClassDefOverride(name, id)
Definition Rtypes.h:348
EColorPalette
Definition TColor.h:119
@ kFall
Definition TColor.h:128
@ kStarryNight
Definition TColor.h:136
@ kAtlantic
Definition TColor.h:124
@ kIsland
Definition TColor.h:130
@ kBlackBody
Definition TColor.h:125
@ kFruitPunch
Definition TColor.h:128
@ kArmy
Definition TColor.h:123
@ kAurora
Definition TColor.h:124
@ kBrownCyan
Definition TColor.h:126
@ kBeach
Definition TColor.h:125
@ kAquamarine
Definition TColor.h:123
@ kPastel
Definition TColor.h:132
@ kCubehelix
Definition TColor.h:121
@ kAvocado
Definition TColor.h:124
@ kGreenRedViolet
Definition TColor.h:121
@ kAlpine
Definition TColor.h:123
@ kVisibleSpectrum
Definition TColor.h:137
@ kCMYK
Definition TColor.h:126
@ kInvertedDarkBodyRadiator
Definition TColor.h:120
@ kWaterMelon
Definition TColor.h:138
@ kOcean
Definition TColor.h:122
@ kDarkBodyRadiator
Definition TColor.h:119
@ kDarkTerrain
Definition TColor.h:128
@ kLightTemperature
Definition TColor.h:131
@ kRust
Definition TColor.h:134
@ kCopper
Definition TColor.h:138
@ kTemperatureMap
Definition TColor.h:136
@ kSolar
Definition TColor.h:135
@ kRedBlue
Definition TColor.h:133
@ kDeepSea
Definition TColor.h:119
@ kRainBow
Definition TColor.h:120
@ kSouthWest
Definition TColor.h:135
@ kPlum
Definition TColor.h:133
@ kGreenBrownTerrain
Definition TColor.h:129
@ kGreyYellow
Definition TColor.h:129
@ kGreyScale
Definition TColor.h:119
@ kRose
Definition TColor.h:134
@ kRainbow
Definition TColor.h:140
@ kSunset
Definition TColor.h:136
@ kCoffee
Definition TColor.h:127
@ kGreenPink
Definition TColor.h:130
@ kColorPrintableOnGrey
Definition TColor.h:122
@ kSienna
Definition TColor.h:135
@ kBlueYellow
Definition TColor.h:120
@ kBlueRedYellow
Definition TColor.h:122
@ kValentine
Definition TColor.h:137
@ kDarkRainbow
Definition TColor.h:140
@ kSandyTerrain
Definition TColor.h:134
@ kDarkRainBow
Definition TColor.h:127
@ kViridis
Definition TColor.h:139
@ kCandy
Definition TColor.h:126
@ kCherry
Definition TColor.h:127
@ kNeon
Definition TColor.h:132
@ kBird
Definition TColor.h:121
@ kFuchsia
Definition TColor.h:129
@ kBlueGreenYellow
Definition TColor.h:125
@ kPearl
Definition TColor.h:132
@ kPigeon
Definition TColor.h:133
@ kCividis
Definition TColor.h:139
@ kCool
Definition TColor.h:138
@ kLake
Definition TColor.h:130
@ kMint
Definition TColor.h:131
@ kGistEarth
Definition TColor.h:139
@ kThermometer
Definition TColor.h:137
@ kLightTerrain
Definition TColor.h:131
char name[80]
Definition TGX11.cxx:148
Color * colors
Definition X3DBuffer.c:21
Array of integers (32 bits per element).
Definition TArrayI.h:27
Int_t number() const
Definition TColor.h:151
Int_t fNumber
Color number identifier.
Definition TColor.h:154
TColorNumber(std::string const &color)
TColorNumber(const char *color)
Definition TColor.h:149
TColorNumber(Int_t color)
Definition TColor.h:144
TColorNumber(std::array< Float_t, 3 > rgb)
static Int_t GetColorTransparent(Int_t color, Float_t a)
void Print(Option_t *option="") const override
This method must be overridden when a class wants to print itself.
static void SetPalette(Int_t ncolors, Int_t *colors, Float_t alpha=1.)
Float_t fSaturation
Saturation.
Definition TColor.h:31
static Int_t GetColorDark(Int_t color)
static void RGBtoHLS(Float_t r, Float_t g, Float_t b, Float_t &h, Float_t &l, Float_t &s)
Definition TColor.h:83
static Int_t GetRadialGradient(Double_t r, const std::vector< Int_t > &colors, const std::vector< Double_t > &positions={})
virtual void GetRGB(Float_t &r, Float_t &g, Float_t &b) const
Definition TColor.h:55
Float_t GetRed() const
Definition TColor.h:61
void ls(Option_t *option="") const override
The ls function lists the contents of a class on stdout.
TColor(Float_t r, Float_t g, Float_t b, Float_t a=1)
Float_t fLight
Light.
Definition TColor.h:30
static Bool_t DefinedColors(Int_t set_always_on=0)
static Int_t GetColor(Int_t r, Int_t g, Int_t b, Float_t a=1.)
static Int_t GetColorBright(Int_t color)
static Int_t GetFreeColorIndex()
static Int_t GetLinearGradient(Double_t angle, const std::vector< Int_t > &colors, const std::vector< Double_t > &positions={})
static Int_t GetColor(const char *hexcolor)
static void CreateColorsRectangle(Int_t offset, const char *name, UChar_t *rgb)
static Float_t HLStoRGB1(Float_t rn1, Float_t rn2, Float_t huei)
Float_t fAlpha
Alpha (transparency).
Definition TColor.h:32
void Copy(TObject &color) const override
Copy this to obj.
static Int_t GetFirstFreeColorIndex()
Float_t fHue
Hue.
Definition TColor.h:29
static void SetGrayscale(Bool_t set=kTRUE)
static Int_t GetColor(Float_t r, Float_t g, Float_t b, Float_t a=1.)
static void SaveColorsPalette(std::ostream &out)
static void SetColorThreshold(Float_t t)
virtual void GetHLS(Float_t &h, Float_t &l, Float_t &s) const
Definition TColor.h:57
static void InitializeColors()
void SetName(const char *name) override
Set the name of the TNamed.
static const char * PixelAsHexString(ULong_t pixel)
static void CreateColorWheel()
static Int_t GetColor(ULong_t pixel)
static void HLS2RGB(Int_t h, Int_t l, Int_t s, Int_t &r, Int_t &g, Int_t &b)
const char * AsHexString() const
static void HSV2RGB(Float_t h, Float_t s, Float_t v, Float_t &r, Float_t &g, Float_t &b)
Float_t GetAlpha() const
Definition TColor.h:67
static Int_t GetNumberOfColors()
static void CreateColorsGray()
static ULong_t RGB2Pixel(Float_t r, Float_t g, Float_t b)
void Allocate()
ULong_t GetPixel() const
Float_t GetLight() const
Definition TColor.h:65
Float_t GetHue() const
Definition TColor.h:64
Float_t fGreen
Fraction of Green.
Definition TColor.h:27
Int_t GetNumber() const
Definition TColor.h:59
Float_t GetBlue() const
Definition TColor.h:63
TColor & operator=(const TColor &color)
TColor(const TColor &color)
Float_t GetGreen() const
Definition TColor.h:62
static void HLS2RGB(Float_t h, Float_t l, Float_t s, Float_t &r, Float_t &g, Float_t &b)
Float_t GetSaturation() const
Definition TColor.h:66
static Int_t GetColorPalette(Int_t i)
static void HLStoRGB(Float_t h, Float_t l, Float_t s, Float_t &r, Float_t &g, Float_t &b)
Definition TColor.h:78
Int_t fNumber
Color number identifier.
Definition TColor.h:24
static void RGB2HLS(Int_t r, Int_t g, Int_t b, Int_t &h, Int_t &l, Int_t &s)
static void RGB2HSV(Float_t r, Float_t g, Float_t b, Float_t &h, Float_t &s, Float_t &v)
static void ListColors(Int_t ci1=0, Int_t ci2=0, Bool_t showEmpty=kFALSE)
static void Pixel2RGB(ULong_t pixel, Int_t &r, Int_t &g, Int_t &b)
Float_t fBlue
Fraction of Blue.
Definition TColor.h:28
static void CreateColorsCircle(Int_t offset, const char *name, UChar_t *rgb)
static const TArrayI & GetPalette()
static TString SavePrimitiveColor(Int_t ci)
virtual void SetAlpha(Float_t a)
Definition TColor.h:71
virtual Float_t GetGrayscale() const
Definition TColor.h:68
static ULong_t RGB2Pixel(Int_t r, Int_t g, Int_t b)
static void Pixel2RGB(ULong_t pixel, Float_t &r, Float_t &g, Float_t &b)
Float_t fRed
Fraction of Red.
Definition TColor.h:26
static Int_t CreateColorTableFromFile(TString fileName, Float_t alpha=1.)
static void InvertPalette()
static Bool_t IsGrayscale()
TColor(Int_t color, Float_t r, Float_t g, Float_t b, const char *name="", Float_t a=1)
static Bool_t SaveColor(std::ostream &out, Int_t ci)
static void RGB2HLS(Float_t r, Float_t g, Float_t b, Float_t &h, Float_t &l, Float_t &s)
virtual void SetRGB(Float_t r, Float_t g, Float_t b)
static Int_t GetColorByName(const char *colorname)
static ULong_t Number2Pixel(Int_t ci)
virtual ~TColor()
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)
TNamed()
Definition TNamed.h:38
TObject()
TObject constructor.
Definition TObject.h:259
Basic string class.
Definition TString.h:138
STL class.
STL class.
TLine l
Definition textangle.C:4