31 static Bool_t& TColor__GrayScaleMode() {
32 static Bool_t grayScaleMode;
35 static TArrayI& TColor__Palette() {
36 static TArrayI globalPalette(0);
39 static TArrayD& TColor__PalettesList() {
40 static TArrayD globalPalettesList(0);
41 return globalPalettesList;
50#define fgGrayscaleMode TColor__GrayScaleMode()
51#define fgPalette TColor__Palette()
52#define fgPalettesList TColor__PalettesList()
1063 Warning(
"TColor",
"color %d already defined", color);
1081 snprintf(aname,32,
"Color%d", color);
1121 gROOT->GetListOfColors()->Remove(
this);
1122 if (
gROOT->GetListOfColors()->IsEmpty()) {
1133 color.TColor::Copy(*
this);
1139 color.TColor::Copy(*
this);
1152 if (initDone)
return;
1155 if (
gROOT->GetListOfColors()->First() ==
nullptr) {
1159 new TColor(2,1,0,0,
"red");
1160 new TColor(3,0,1,0,
"green");
1161 new TColor(4,0,0,1,
"blue");
1162 new TColor(5,1,1,0,
"yellow");
1163 new TColor(6,1,0,1,
"magenta");
1164 new TColor(7,0,1,1,
"cyan");
1165 new TColor(10,0.999,0.999,0.999,
"white");
1166 new TColor(11,0.754,0.715,0.676,
"editcol");
1172 if (c110) c110->
SetRGB(0.999,0.999,.999);
1175 new TColor(20,0.8,0.78,0.67);
1176 new TColor(31,0.54,0.66,0.63);
1177 new TColor(41,0.83,0.81,0.53);
1178 new TColor(30,0.52,0.76,0.64);
1179 new TColor(32,0.51,0.62,0.55);
1180 new TColor(24,0.70,0.65,0.59);
1181 new TColor(21,0.8,0.78,0.67);
1182 new TColor(47,0.67,0.56,0.58);
1183 new TColor(35,0.46,0.54,0.57);
1184 new TColor(33,0.68,0.74,0.78);
1185 new TColor(39,0.5,0.5,0.61);
1186 new TColor(37,0.43,0.48,0.52);
1187 new TColor(38,0.49,0.6,0.82);
1188 new TColor(36,0.41,0.51,0.59);
1189 new TColor(49,0.58,0.41,0.44);
1190 new TColor(43,0.74,0.62,0.51);
1191 new TColor(22,0.76,0.75,0.66);
1192 new TColor(45,0.75,0.51,0.47);
1193 new TColor(44,0.78,0.6,0.49);
1194 new TColor(26,0.68,0.6,0.55);
1195 new TColor(28,0.53,0.4,0.34);
1196 new TColor(25,0.72,0.64,0.61);
1197 new TColor(27,0.61,0.56,0.51);
1198 new TColor(23,0.73,0.71,0.64);
1199 new TColor(42,0.87,0.73,0.53);
1200 new TColor(46,0.81,0.37,0.38);
1201 new TColor(48,0.65,0.47,0.48);
1202 new TColor(34,0.48,0.56,0.6);
1203 new TColor(40,0.67,0.65,0.75);
1204 new TColor(29,0.69,0.81,0.78);
1207 new TColor(8, 0.35,0.83,0.33);
1208 new TColor(9, 0.35,0.33,0.85);
1209 new TColor(12,.3,.3,.3,
"grey12");
1210 new TColor(13,.4,.4,.4,
"grey13");
1211 new TColor(14,.5,.5,.5,
"grey14");
1212 new TColor(15,.6,.6,.6,
"grey15");
1213 new TColor(16,.7,.7,.7,
"grey16");
1214 new TColor(17,.8,.8,.8,
"grey17");
1215 new TColor(18,.9,.9,.9,
"grey18");
1216 new TColor(19,.95,.95,.95,
"grey19");
1217 new TColor(50, 0.83,0.35,0.33);
1230 Int_t maxPretty = 50;
1234 for (i=0 ; i<maxPretty-1 ; i++) {
1235 hue = maxHue-(i+1)*((maxHue-minHue)/maxPretty);
1242 for (i = 1; i < 8; i++) {
1245 if (i == 1) {
r = 0.6;
g = 0.6;
b = 0.6; }
1246 if (
r == 1)
r = 0.9;
else if (
r == 0)
r = 0.1;
1247 if (
g == 1)
g = 0.9;
else if (
g == 0)
g = 0.1;
1248 if (
b == 1)
b = 0.9;
else if (
b == 0)
b = 0.1;
1285 tempbuf.
Form(
"#%02x%02x%02x%02x",
a,
r,
g,
b);
1287 tempbuf.
Form(
"#%02x%02x%02x",
r,
g,
b);
1334 color =
new TColor(colorn,rgb[3*
n]/255.,rgb[3*
n+1]/255.,rgb[3*
n+2]/255.);
1337 else if (
n<10) colorname.
Form(
"%s-%d",
name,10-
n);
1354 color =
new TColor(colorn,rgb[3*
n]/255.,rgb[3*
n+1]/255.,rgb[3*
n+2]/255.);
1357 else if (
n<9) colorname.
Form(
"%s-%d",
name,9-
n);
1369 UChar_t magenta[46]= {255,204,255
1370 ,255,153,255, 204,153,204
1371 ,255,102,255, 204,102,204, 153,102,153
1372 ,255, 51,255, 204, 51,204, 153, 51,153, 102, 51,102
1373 ,255, 0,255, 204, 0,204, 153, 0,153, 102, 0,102, 51, 0, 51};
1375 UChar_t red[46] = {255,204,204
1376 ,255,153,153, 204,153,153
1377 ,255,102,102, 204,102,102, 153,102,102
1378 ,255, 51, 51, 204, 51, 51, 153, 51, 51, 102, 51, 51
1379 ,255, 0, 0, 204, 0, 0, 153, 0, 0, 102, 0, 0, 51, 0, 0};
1381 UChar_t yellow[46] = {255,255,204
1382 ,255,255,153, 204,204,153
1383 ,255,255,102, 204,204,102, 153,153,102
1384 ,255,255, 51, 204,204, 51, 153,153, 51, 102,102, 51
1385 ,255,255, 0, 204,204, 0, 153,153, 0, 102,102, 0, 51, 51, 0};
1387 UChar_t green[46] = {204,255,204
1388 ,153,255,153, 153,204,153
1389 ,102,255,102, 102,204,102, 102,153,102
1390 , 51,255, 51, 51,204, 51, 51,153, 51, 51,102, 51
1391 , 0,255, 0, 0,204, 0, 0,153, 0, 0,102, 0, 0, 51, 0};
1393 UChar_t cyan[46] = {204,255,255
1394 ,153,255,255, 153,204,204
1395 ,102,255,255, 102,204,204, 102,153,153
1396 , 51,255,255, 51,204,204, 51,153,153, 51,102,102
1397 , 0,255,255, 0,204,204, 0,153,153, 0,102,102, 0, 51, 51};
1399 UChar_t blue[46] = {204,204,255
1400 ,153,153,255, 153,153,204
1401 ,102,102,255, 102,102,204, 102,102,153
1402 , 51, 51,255, 51, 51,204, 51, 51,153, 51, 51,102
1403 , 0, 0,255, 0, 0,204, 0, 0,153, 0, 0,102, 0, 0, 51};
1405 UChar_t pink[60] = {255, 51,153, 204, 0,102, 102, 0, 51, 153, 0, 51, 204, 51,102
1406 ,255,102,153, 255, 0,102, 255, 51,102, 204, 0, 51, 255, 0, 51
1407 ,255,153,204, 204,102,153, 153, 51,102, 153, 0,102, 204, 51,153
1408 ,255,102,204, 255, 0,153, 204, 0,153, 255, 51,204, 255, 0,153};
1410 UChar_t orange[60]={255,204,153, 204,153,102, 153,102, 51, 153,102, 0, 204,153, 51
1411 ,255,204,102, 255,153, 0, 255,204, 51, 204,153, 0, 255,204, 0
1412 ,255,153, 51, 204,102, 0, 102, 51, 0, 153, 51, 0, 204,102, 51
1413 ,255,153,102, 255,102, 0, 255,102, 51, 204, 51, 0, 255, 51, 0};
1415 UChar_t spring[60]={153,255, 51, 102,204, 0, 51,102, 0, 51,153, 0, 102,204, 51
1416 ,153,255,102, 102,255, 0, 102,255, 51, 51,204, 0, 51,255, 0
1417 ,204,255,153, 153,204,102, 102,153, 51, 102,153, 0, 153,204, 51
1418 ,204,255,102, 153,255, 0, 204,255, 51, 153,204, 0, 204,255, 0};
1420 UChar_t teal[60] = {153,255,204, 102,204,153, 51,153,102, 0,153,102, 51,204,153
1421 ,102,255,204, 0,255,102, 51,255,204, 0,204,153, 0,255,204
1422 , 51,255,153, 0,204,102, 0,102, 51, 0,153, 51, 51,204,102
1423 ,102,255,153, 0,255,153, 51,255,102, 0,204, 51, 0,255, 51};
1425 UChar_t azure[60] ={153,204,255, 102,153,204, 51,102,153, 0, 51,153, 51,102,204
1426 ,102,153,255, 0,102,255, 51,102,255, 0, 51,204, 0, 51,255
1427 , 51,153,255, 0,102,204, 0, 51,102, 0,102,153, 51,153,204
1428 ,102,204,255, 0,153,255, 51,204,255, 0,153,204, 0,204,255};
1430 UChar_t violet[60]={204,153,255, 153,102,204, 102, 51,153, 102, 0,153, 153, 51,204
1431 ,204,102,255, 153, 0,255, 204, 51,255, 153, 0,204, 204, 0,255
1432 ,153, 51,255, 102, 0,204, 51, 0,102, 51, 0,153, 102, 51,204
1433 ,153,102,255, 102, 0,255, 102, 51,255, 51, 0,204, 51, 0,255};
1458 if (ncolors == 0)
return 0;
1459 Int_t icol = i%ncolors;
1460 if (icol < 0) icol = 0;
1490 if (set_always_on > 0)
1492 else if (set_always_on < 0)
1533 if (hue > 0) { rh = hue;
if (rh > 360) rh = 360; }
1534 if (light > 0) { rl = light;
if (rl > 1) rl = 1; }
1535 if (satur > 0) { rs = satur;
if (rs > 1) rs = 1; }
1538 rm2 = rl*(1.0f + rs);
1540 rm2 = rl + rs - rl*rs;
1541 rm1 = 2.0f*rl - rm2;
1543 if (!rs) {
r = rl;
g = rl;
b = rl;
return; }
1555 if (hue > 360) hue = hue - 360.0f;
1556 if (hue < 0) hue = hue + 360.0f;
1557 if (hue < 60 )
return rn1 + (rn2-rn1)*hue/60.0f;
1558 if (hue < 180)
return rn2;
1559 if (hue < 240)
return rn1 + (rn2-rn1)*(240.0f-hue)/60.0f;
1569 Float_t hh, ll, ss, rr, gg, bb;
1577 r = (
Int_t) (rr * 255.0f);
1578 g = (
Int_t) (gg * 255.0f);
1579 b = (
Int_t) (bb * 255.0f);
1606 i = (
Int_t)floor(hue);
1610 t =
value*(1-satur*(1-
f));
1651 printf(
"Color:%d Red=%f Green=%f Blue=%f Alpha=%f Name=%s\n",
1671 if (rr > 0) {
r = rr;
if (
r > 1)
r = 1; }
1672 if (gg > 0) {
g = gg;
if (
g > 1)
g = 1; }
1673 if (bb > 0) {
b = bb;
if (
b > 1)
b = 1; }
1676 if (
g < minval) minval =
g;
1677 if (
b < minval) minval =
b;
1678 if (
g > maxval) maxval =
g;
1679 if (
b > maxval) maxval =
b;
1682 Float_t mdiff = maxval - minval;
1683 Float_t msum = maxval + minval;
1684 light = 0.5f * msum;
1685 if (maxval != minval) {
1686 rnorm = (maxval -
r)/mdiff;
1687 gnorm = (maxval -
g)/mdiff;
1688 bnorm = (maxval -
b)/mdiff;
1697 satur = mdiff/(2.0f - msum);
1700 hue = 60.0f * (6.0f + bnorm - gnorm);
1701 else if (
g == maxval)
1702 hue = 60.0f * (2.0f + rnorm - bnorm);
1704 hue = 60.0f * (4.0f + gnorm - rnorm);
1743 }
else if (
g == max) {
1744 hue = 2.0f+(
b-
r)/delta;
1746 hue = 4.0f+(
r-
g)/delta;
1750 if (hue < 0.0f) hue += 360.0f;
1759 Float_t rr, gg, bb, hue, light, satur;
1767 h = (
Int_t) (hue/360.0f * 255.0f);
1768 l = (
Int_t) (light * 255.0f);
1769 s = (
Int_t) (satur * 255.0f);
1782 if (
fRed < 0)
return;
1788 if (nplanes == 0) nplanes = 16;
1799 Float_t dr, dg, db, lr, lg, lb;
1805 if (nplanes > 8) dark->
SetRGB(dr, dg, db);
1806 else dark->
SetRGB(0.3f,0.3f,0.3f);
1813 if (nplanes > 8) light->
SetRGB(lr, lg, lb);
1814 else light->
SetRGB(0.8f,0.8f,0.8f);
1841 if (hexcolor && *hexcolor ==
'#') {
1843 if (sscanf(hexcolor+1,
"%02x%02x%02x", &
r, &
g, &
b) == 3)
1846 ::Error(
"TColor::GetColor(const char*)",
"incorrect color string");
1950 return color->GetNumber();
1964 thres = 1.0f/255.0f;
1966 if ((nplanes > 0) && (nplanes <= 16)) thres = 1.0f/31.0f;
1970 while (
auto color =
static_cast<TColor *
>(next())) {
1971 if (
TMath::Abs(color->GetRed() - rr) > thres)
continue;
1972 if (
TMath::Abs(color->GetGreen() - gg) > thres)
continue;
1973 if (
TMath::Abs(color->GetBlue() - bb) > thres)
continue;
1974 if (
TMath::Abs(color->GetAlpha() -
a) > thres)
continue;
1976 return color->GetNumber();
1984 return color->GetNumber();
1999 for (
Int_t i = 0; i<ncolors; i++) {
2003 if (!colname.
CompareTo(colorname))
return i;
2017 if (
n < 0)
return -1;
2025 if (!color)
return -1;
2033 TColor *colorb =
nullptr;
2035 if (colorb)
return nb;
2038 colors->AddAtAndExpand(colorb,nb);
2049 if (
n < 0)
return -1;
2057 if (!color)
return -1;
2065 TColor *colord =
nullptr;
2067 if (colord)
return nd;
2070 colors->AddAtAndExpand(colord,nd);
2081 if (
n < 0)
return -1;
2088 for (
Int_t i = 0; i < ncolors; i++) {
2102 ::Error(
"TColor::GetColorTransparent",
"color with index %d not defined",
n);
2118 ::Error(
"TColor::GetLinearGradient",
"number of specified colors %d not enough to create gradients", (
int)
colors.size());
2122 std::vector<Double_t> raw_colors(
colors.size()*4);
2123 std::vector<Double_t> raw_positions(
colors.size());
2124 for (
unsigned indx = 0; indx <
colors.size(); indx++) {
2127 ::Error(
"TColor::GetLinearGradient",
"Not able to get %d color", (
int)
colors.size());
2130 raw_colors[indx*4] = color->
GetRed();
2131 raw_colors[indx*4+1] = color->
GetGreen();
2132 raw_colors[indx*4+2] = color->
GetBlue();
2133 raw_colors[indx*4+3] = color->
GetAlpha();
2135 raw_positions[indx] = indx < positions.size() ? positions[indx] : indx / (
colors.size() - 1.);
2138 Double_t _cos = std::cos(
angle / 180. * 3.1415), _sin = std::sin(
angle / 180. * 3.1415);
2139 Double_t x0 = (_cos >= 0. ? 0. : 1.), y0 = (_sin >= 0. ? 0. : 1.);
2147 TIter iter(root_colors);
2149 while (
auto col =
static_cast<TColor *
>(iter())) {
2155 if (grad->GetNumberOfSteps() !=
colors.size())
2159 for (
unsigned n = 0;
n < raw_colors.size(); ++
n)
2160 if (
TMath::Abs(raw_colors[
n] - grad->GetColors()[
n]) > 1
e-3)
2163 for (
unsigned n = 0;
n < raw_positions.size(); ++
n)
2164 if (
TMath::Abs(raw_positions[
n] - grad->GetColorPositions()[
n]) > 1
e-2)
2167 if (
TMath::Abs(grad->GetStart().fX - start.fX) > 1
e-2 ||
2168 TMath::Abs(grad->GetStart().fY - start.fY) > 1
e-2 ||
2174 return col->GetNumber();
2179 grad->SetStartEnd(start, end);
2181 return grad->GetNumber();
2195 ::Error(
"TColor::GetRadialGradient",
"number of specified colors %d not enough to create gradients", (
int)
colors.size());
2199 std::vector<Double_t> raw_colors(
colors.size()*4);
2200 std::vector<Double_t> raw_positions(
colors.size());
2201 for (
unsigned indx = 0; indx <
colors.size(); indx++) {
2204 ::Error(
"TColor::GetRadialGradient",
"Not able to get %d color", (
int)
colors.size());
2207 raw_colors[indx*4] = color->
GetRed();
2208 raw_colors[indx*4+1] = color->
GetGreen();
2209 raw_colors[indx*4+2] = color->
GetBlue();
2210 raw_colors[indx*4+3] = color->
GetAlpha();
2212 raw_positions[indx] = indx < positions.size() ? positions[indx] : indx / (
colors.size() - 1.);
2219 TIter iter(root_colors);
2221 while (
auto col =
static_cast<TColor *
>(iter())) {
2227 if (grad->GetNumberOfSteps() !=
colors.size())
2234 for (
unsigned n = 0;
n < raw_colors.size(); ++
n)
2235 if (
TMath::Abs(raw_colors[
n] - grad->GetColors()[
n]) > 1
e-3)
2238 for (
unsigned n = 0;
n < raw_positions.size(); ++
n)
2239 if (
TMath::Abs(raw_positions[
n] - grad->GetColorPositions()[
n]) > 1
e-2)
2242 if (
TMath::Abs(grad->GetStart().fX - start.fX) > 1
e-2 ||
2243 TMath::Abs(grad->GetStart().fY - start.fY) > 1
e-2 ||
2248 return col->GetNumber();
2253 grad->SetRadialGradient(start, radius);
2255 return grad->GetNumber();
2283 if (nb==0 || last>=ncolors) last = ncolors;
2287 printf(
" +------+-------+-------+-------+-------+--------------------+--------------------+\n");
2288 printf(
" | Idx | Red | Green | Blue | Alpha | Color Name | Color Title |\n");
2289 printf(
" +------+-------+-------+-------+-------+--------------------+--------------------+\n");
2291 for (
Int_t i = ci; i<last; i++) {
2294 printf(
" | %4d | %5.3f | %5.3f | %5.3f | %5.3f | %18s | %18s |\n", i,
2302 }
else if (showEmpty) {
2303 printf(
" | %4d | ? | ? | ? | ? | ? | ? |\n",i);
2306 printf(
" +------+-------+-------+-------+-------+--------------------+--------------------+\n");
2307 printf(
" | Number of possible colors = %4d |\n",ncolors);
2308 printf(
" | Number of defined colors between %4d and %4d = %4d |\n",ci,last,nc);
2309 printf(
" | Number of free indeces between %4d and %4d = %4d |\n",ci,last,last-ci-nc);
2310 printf(
" +--------------------------------------------------------------------------------+\n\n");
2327 ::Warning(
"TColor::Number2Pixel",
"color with index %d not defined", ci);
2363 if (
r > 255)
r = 255;
2364 if (
g > 255)
g = 255;
2365 if (
b > 255)
b = 255;
2401 r = color.
fRed / 257;
2418 tempbuf.
Form(
"#%02x%02x%02x",
r,
g,
b);
2441 out <<
" Int_t ci; // for color index setting" << std::endl;
2442 out <<
" TColor *color; // for color definition with alpha" << std::endl;
2451 out<<
" ci = "<<ci<<
";"<<std::endl;
2452 out<<
" color = new TColor(ci, "<<
r<<
", "<<
g<<
", "<<
b<<
", "
2453 <<
"\" \", "<<
a<<
");"<<std::endl;
2459 out<<
" ci = TColor::GetColor("<<quote<<
cname.Data()<<quote<<
");"<<std::endl;
2486 while ((color = (
TColor*) iColor()))
2509 std::ifstream
f(fileName.
Data());
2511 ::Error(
"TColor::CreateColorPalette(const TString)",
"%s does not exist or cannot be opened", fileName.
Data());
2517 std::vector<Float_t> reds, greens, blues;
2518 while (
f >>
r >>
g >>
b) {
2520 if (r < 0. || r > 1.) {
2521 ::Error(
"TColor::CreateColorPalette(const TString)",
"Red value %f outside [0,1] on line %d of %s ",
r,
2522 nLines, fileName.
Data());
2526 if (g < 0. || g > 1.) {
2527 ::Error(
"TColor::CreateColorPalette(const TString)",
"Green value %f outside [0,1] on line %d of %s ",
g,
2528 nLines, fileName.
Data());
2532 if (b < 0. || b > 1.) {
2533 ::Error(
"TColor::CreateColorPalette(const TString)",
"Blue value %f outside [0,1] on line %d of %s ",
b,
2534 nLines, fileName.
Data());
2538 reds.emplace_back(
r);
2539 greens.emplace_back(
g);
2540 blues.emplace_back(
b);
2544 ::Error(
"TColor::CreateColorPalette(const TString)",
"Found insufficient color lines (%d) on %s", nLines,
2552 for (
Int_t i = 0; i < nLines; ++i) {
2553 new TColor(reds.at(i), greens.at(i), blues.at(i), alpha);
2625 if(Number < 2 || NColors < 1){
2632 for (
c = 0;
c < Number;
c++) {
2633 if (Red[
c] < 0 || Red[
c] > 1.0 ||
2634 Green[
c] < 0 || Green[
c] > 1.0 ||
2635 Blue[
c] < 0 || Blue[
c] > 1.0 ||
2636 Stops[
c] < 0 || Stops[
c] > 1.0) {
2641 if (Stops[
c-1] > Stops[
c]) {
2651 for (
g = 1;
g < Number;
g++) {
2653 nColorsGradient = (
Int_t) (floor(NColors*Stops[
g]) - floor(NColors*Stops[
g-1]));
2654 for (
c = 0;
c < nColorsGradient;
c++) {
2656 Float_t(Green[
g-1] +
c * (Green[
g] - Green[
g-1])/ nColorsGradient),
2657 Float_t(Blue[
g-1] +
c * (Blue[
g] - Blue[
g-1]) / nColorsGradient),
2808 static Int_t paletteType = 0;
2810 Int_t palette[50] = {19,18,17,16,15,14,13,12,11,20,
2811 21,22,23,24,25,26,27,28,29,30, 8,
2812 31,32,33,34,35,36,37,38,39,40, 9,
2813 41,42,43,44,45,47,48,49,46,50, 2,
2814 7, 6, 5, 4, 3, 2,1};
2820 for (i=0;i<ncolors;i++)
fgPalette.fArray[i] = palette[i];
2826 if (ncolors == 1 &&
colors ==
nullptr) {
2829 for (i=0;i<ncolors-1;i++)
fgPalette.fArray[i] = 51+i;
2836 if (
colors ==
nullptr && ncolors>50) {
2845 if (paletteType == ncolors && same_alpha)
return;
2847 for (i=0;i<255;i++)
fgPalette.fArray[i] = Idx+i;
2848 paletteType = ncolors;
2851 if (alphas>0 && !same_alpha) {
2853 for (i=0;i<255;i++) {
2863 Double_t stops[9] = { 0.0000, 0.1250, 0.2500, 0.3750, 0.5000, 0.6250, 0.7500, 0.8750, 1.0000};
2869 Double_t red[9] = { 0./255., 9./255., 13./255., 17./255., 24./255., 32./255., 27./255., 25./255., 29./255.};
2870 Double_t green[9] = { 0./255., 0./255., 0./255., 2./255., 37./255., 74./255., 113./255., 160./255., 221./255.};
2871 Double_t blue[9] = { 28./255., 42./255., 59./255., 78./255., 98./255., 129./255., 154./255., 184./255., 221./255.};
2879 Double_t red[9] = { 0./255., 32./255., 64./255., 96./255., 128./255., 160./255., 192./255., 224./255., 255./255.};
2880 Double_t green[9] = { 0./255., 32./255., 64./255., 96./255., 128./255., 160./255., 192./255., 224./255., 255./255.};
2881 Double_t blue[9] = { 0./255., 32./255., 64./255., 96./255., 128./255., 160./255., 192./255., 224./255., 255./255.};
2889 Double_t red[9] = { 0./255., 45./255., 99./255., 156./255., 212./255., 230./255., 237./255., 234./255., 242./255.};
2890 Double_t green[9] = { 0./255., 0./255., 0./255., 45./255., 101./255., 168./255., 238./255., 238./255., 243./255.};
2891 Double_t blue[9] = { 0./255., 1./255., 1./255., 3./255., 9./255., 8./255., 11./255., 95./255., 230./255.};
2899 Double_t red[9] = { 0./255., 22./255., 44./255., 68./255., 93./255., 124./255., 160./255., 192./255., 237./255.};
2900 Double_t green[9] = { 0./255., 16./255., 41./255., 67./255., 93./255., 125./255., 162./255., 194./255., 241./255.};
2901 Double_t blue[9] = { 97./255., 100./255., 99./255., 99./255., 93./255., 68./255., 44./255., 26./255., 74./255.};
2909 Double_t red[9] = { 0./255., 5./255., 15./255., 35./255., 102./255., 196./255., 208./255., 199./255., 110./255.};
2910 Double_t green[9] = { 0./255., 48./255., 124./255., 192./255., 206./255., 226./255., 97./255., 16./255., 0./255.};
2911 Double_t blue[9] = { 99./255., 142./255., 198./255., 201./255., 90./255., 22./255., 13./255., 8./255., 2./255.};
2919 Double_t red[9] = { 242./255., 234./255., 237./255., 230./255., 212./255., 156./255., 99./255., 45./255., 0./255.};
2920 Double_t green[9] = { 243./255., 238./255., 238./255., 168./255., 101./255., 45./255., 0./255., 0./255., 0./255.};
2921 Double_t blue[9] = { 230./255., 95./255., 11./255., 8./255., 9./255., 3./255., 1./255., 1./255., 0./255.};
2929 Double_t red[9] = { 0.2082, 0.0592, 0.0780, 0.0232, 0.1802, 0.5301, 0.8186, 0.9956, 0.9764};
2930 Double_t green[9] = { 0.1664, 0.3599, 0.5041, 0.6419, 0.7178, 0.7492, 0.7328, 0.7862, 0.9832};
2931 Double_t blue[9] = { 0.5293, 0.8684, 0.8385, 0.7914, 0.6425, 0.4662, 0.3499, 0.1968, 0.0539};
2939 Double_t red[9] = { 0.0000, 0.0956, 0.0098, 0.2124, 0.6905, 0.9242, 0.7914, 0.7596, 1.0000};
2940 Double_t green[9] = { 0.0000, 0.1147, 0.3616, 0.5041, 0.4577, 0.4691, 0.6905, 0.9237, 1.0000};
2941 Double_t blue[9] = { 0.0000, 0.2669, 0.3121, 0.1318, 0.2236, 0.6741, 0.9882, 0.9593, 1.0000};
2949 Double_t red[9] = {13./255., 23./255., 25./255., 63./255., 76./255., 104./255., 137./255., 161./255., 206./255.};
2950 Double_t green[9] = {95./255., 67./255., 37./255., 21./255., 0./255., 12./255., 35./255., 52./255., 79./255.};
2951 Double_t blue[9] = { 4./255., 3./255., 2./255., 6./255., 11./255., 22./255., 49./255., 98./255., 208./255.};
2959 Double_t red[9] = {0./255., 61./255., 89./255., 122./255., 143./255., 160./255., 185./255., 204./255., 231./255.};
2960 Double_t green[9] = {0./255., 0./255., 0./255., 0./255., 14./255., 37./255., 72./255., 132./255., 235./255.};
2961 Double_t blue[9] = {0./255., 140./255., 224./255., 144./255., 4./255., 5./255., 6./255., 9./255., 13./255.};
2969 Double_t red[9] = { 14./255., 7./255., 2./255., 0./255., 5./255., 11./255., 55./255., 131./255., 229./255.};
2970 Double_t green[9] = {105./255., 56./255., 26./255., 1./255., 42./255., 74./255., 131./255., 171./255., 229./255.};
2971 Double_t blue[9] = { 2./255., 21./255., 35./255., 60./255., 92./255., 113./255., 160./255., 185./255., 229./255.};
2979 Double_t red[9] = { 0./255., 0./255., 0./255., 70./255., 148./255., 231./255., 235./255., 237./255., 244./255.};
2980 Double_t green[9] = { 0./255., 0./255., 0./255., 0./255., 0./255., 69./255., 67./255., 216./255., 244./255.};
2981 Double_t blue[9] = { 0./255., 102./255., 228./255., 231./255., 177./255., 124./255., 137./255., 20./255., 244./255.};
2989 Double_t red[9] = { 50./255., 56./255., 63./255., 68./255., 93./255., 121./255., 165./255., 192./255., 241./255.};
2990 Double_t green[9] = { 66./255., 81./255., 91./255., 96./255., 111./255., 128./255., 155./255., 189./255., 241./255.};
2991 Double_t blue[9] = { 97./255., 91./255., 75./255., 65./255., 77./255., 103./255., 143./255., 167./255., 217./255.};
2999 Double_t red[9] = { 145./255., 166./255., 167./255., 156./255., 131./255., 114./255., 101./255., 112./255., 132./255.};
3000 Double_t green[9] = { 158./255., 178./255., 179./255., 181./255., 163./255., 154./255., 144./255., 152./255., 159./255.};
3001 Double_t blue[9] = { 190./255., 199./255., 201./255., 192./255., 176./255., 169./255., 160./255., 166./255., 190./255.};
3009 Double_t red[9] = { 93./255., 91./255., 99./255., 108./255., 130./255., 125./255., 132./255., 155./255., 174./255.};
3010 Double_t green[9] = { 126./255., 124./255., 128./255., 129./255., 131./255., 121./255., 119./255., 153./255., 173./255.};
3011 Double_t blue[9] = { 103./255., 94./255., 87./255., 85./255., 80./255., 85./255., 107./255., 120./255., 146./255.};
3019 Double_t red[9] = { 24./255., 40./255., 69./255., 90./255., 104./255., 114./255., 120./255., 132./255., 103./255.};
3020 Double_t green[9] = { 29./255., 52./255., 94./255., 127./255., 150./255., 162./255., 159./255., 151./255., 101./255.};
3021 Double_t blue[9] = { 29./255., 52./255., 96./255., 132./255., 162./255., 181./255., 184./255., 186./255., 131./255.};
3029 Double_t red[9] = { 46./255., 38./255., 61./255., 92./255., 113./255., 121./255., 132./255., 150./255., 191./255.};
3030 Double_t green[9] = { 46./255., 36./255., 40./255., 69./255., 110./255., 135./255., 131./255., 92./255., 34./255.};
3031 Double_t blue[9] = { 46./255., 80./255., 74./255., 70./255., 81./255., 105./255., 165./255., 211./255., 225./255.};
3039 Double_t red[9] = { 0./255., 4./255., 12./255., 30./255., 52./255., 101./255., 142./255., 190./255., 237./255.};
3040 Double_t green[9] = { 0./255., 40./255., 86./255., 121./255., 140./255., 172./255., 187./255., 213./255., 240./255.};
3041 Double_t blue[9] = { 0./255., 9./255., 14./255., 18./255., 21./255., 23./255., 27./255., 35./255., 101./255.};
3049 Double_t red[9] = { 198./255., 206./255., 206./255., 211./255., 198./255., 181./255., 161./255., 171./255., 244./255.};
3050 Double_t green[9] = { 103./255., 133./255., 150./255., 172./255., 178./255., 174./255., 163./255., 175./255., 244./255.};
3051 Double_t blue[9] = { 49./255., 54./255., 55./255., 66./255., 91./255., 130./255., 184./255., 224./255., 244./255.};
3059 Double_t red[9] = { 243./255., 243./255., 240./255., 240./255., 241./255., 239./255., 186./255., 151./255., 129./255.};
3060 Double_t green[9] = { 0./255., 46./255., 99./255., 149./255., 194./255., 220./255., 183./255., 166./255., 147./255.};
3061 Double_t blue[9] = { 6./255., 8./255., 36./255., 91./255., 169./255., 235./255., 246./255., 240./255., 233./255.};
3069 Double_t red[9] = { 22./255., 19./255., 19./255., 25./255., 35./255., 53./255., 88./255., 139./255., 210./255.};
3070 Double_t green[9] = { 0./255., 32./255., 69./255., 108./255., 135./255., 159./255., 183./255., 198./255., 215./255.};
3071 Double_t blue[9] = { 77./255., 96./255., 110./255., 116./255., 110./255., 100./255., 90./255., 78./255., 70./255.};
3079 Double_t red[9] = { 68./255., 116./255., 165./255., 182./255., 189./255., 180./255., 145./255., 111./255., 71./255.};
3080 Double_t green[9] = { 37./255., 82./255., 135./255., 178./255., 204./255., 225./255., 221./255., 202./255., 147./255.};
3081 Double_t blue[9] = { 16./255., 55./255., 105./255., 147./255., 196./255., 226./255., 232./255., 224./255., 178./255.};
3089 Double_t red[9] = { 61./255., 99./255., 136./255., 181./255., 213./255., 225./255., 198./255., 136./255., 24./255.};
3090 Double_t green[9] = { 149./255., 140./255., 96./255., 83./255., 132./255., 178./255., 190./255., 135./255., 22./255.};
3091 Double_t blue[9] = { 214./255., 203./255., 168./255., 135./255., 110./255., 100./255., 111./255., 113./255., 22./255.};
3099 Double_t red[9] = { 76./255., 120./255., 156./255., 183./255., 197./255., 180./255., 162./255., 154./255., 140./255.};
3100 Double_t green[9] = { 34./255., 35./255., 42./255., 69./255., 102./255., 137./255., 164./255., 188./255., 197./255.};
3101 Double_t blue[9] = { 64./255., 69./255., 78./255., 105./255., 142./255., 177./255., 205./255., 217./255., 198./255.};
3109 Double_t red[9] = { 37./255., 102./255., 157./255., 188./255., 196./255., 214./255., 223./255., 235./255., 251./255.};
3110 Double_t green[9] = { 37./255., 29./255., 25./255., 37./255., 67./255., 91./255., 132./255., 185./255., 251./255.};
3111 Double_t blue[9] = { 37./255., 32./255., 33./255., 45./255., 66./255., 98./255., 137./255., 187./255., 251./255.};
3119 Double_t red[9] = { 79./255., 100./255., 119./255., 137./255., 153./255., 172./255., 192./255., 205./255., 250./255.};
3120 Double_t green[9] = { 63./255., 79./255., 93./255., 103./255., 115./255., 135./255., 167./255., 196./255., 250./255.};
3121 Double_t blue[9] = { 51./255., 59./255., 66./255., 61./255., 62./255., 70./255., 110./255., 160./255., 250./255.};
3129 Double_t red[9] = { 43./255., 44./255., 50./255., 66./255., 125./255., 172./255., 178./255., 155./255., 157./255.};
3130 Double_t green[9] = { 63./255., 63./255., 85./255., 101./255., 138./255., 163./255., 122./255., 51./255., 39./255.};
3131 Double_t blue[9] = { 121./255., 101./255., 58./255., 44./255., 47./255., 55./255., 57./255., 44./255., 43./255.};
3139 Double_t red[9] = { 0./255., 41./255., 62./255., 79./255., 90./255., 87./255., 99./255., 140./255., 228./255.};
3140 Double_t green[9] = { 0./255., 57./255., 81./255., 93./255., 85./255., 70./255., 71./255., 125./255., 228./255.};
3141 Double_t blue[9] = { 95./255., 91./255., 91./255., 82./255., 60./255., 43./255., 44./255., 112./255., 228./255.};
3149 Double_t red[9] = { 49./255., 59./255., 72./255., 88./255., 114./255., 141./255., 176./255., 205./255., 222./255.};
3150 Double_t green[9] = { 78./255., 72./255., 66./255., 57./255., 59./255., 75./255., 106./255., 142./255., 173./255.};
3151 Double_t blue[9] = { 78./255., 55./255., 46./255., 40./255., 39./255., 39./255., 40./255., 41./255., 47./255.};
3159 Double_t red[9] = { 243./255., 222./255., 201./255., 185./255., 165./255., 158./255., 166./255., 187./255., 219./255.};
3160 Double_t green[9] = { 94./255., 108./255., 132./255., 135./255., 125./255., 96./255., 68./255., 51./255., 61./255.};
3161 Double_t blue[9] = { 7./255., 9./255., 12./255., 19./255., 45./255., 89./255., 118./255., 146./255., 118./255.};
3169 Double_t red[9] = { 19./255., 44./255., 74./255., 105./255., 137./255., 166./255., 194./255., 206./255., 220./255.};
3170 Double_t green[9] = { 19./255., 28./255., 40./255., 55./255., 82./255., 110./255., 159./255., 181./255., 220./255.};
3171 Double_t blue[9] = { 19./255., 42./255., 68./255., 96./255., 129./255., 157./255., 188./255., 203./255., 220./255.};
3179 Double_t red[9] = { 33./255., 44./255., 70./255., 99./255., 140./255., 165./255., 199./255., 211./255., 216./255.};
3180 Double_t green[9] = { 38./255., 50./255., 76./255., 105./255., 140./255., 165./255., 191./255., 189./255., 167./255.};
3181 Double_t blue[9] = { 55./255., 67./255., 97./255., 124./255., 140./255., 166./255., 163./255., 129./255., 52./255.};
3189 Double_t red[9] = { 0./255., 33./255., 73./255., 124./255., 136./255., 152./255., 159./255., 171./255., 223./255.};
3190 Double_t green[9] = { 0./255., 43./255., 92./255., 124./255., 134./255., 126./255., 121./255., 144./255., 223./255.};
3191 Double_t blue[9] = { 0./255., 43./255., 68./255., 76./255., 73./255., 64./255., 72./255., 114./255., 223./255.};
3199 Double_t red[9] = { 5./255., 18./255., 45./255., 124./255., 193./255., 223./255., 205./255., 128./255., 49./255.};
3200 Double_t green[9] = { 48./255., 134./255., 207./255., 230./255., 193./255., 113./255., 28./255., 0./255., 7./255.};
3201 Double_t blue[9] = { 6./255., 15./255., 41./255., 121./255., 193./255., 226./255., 208./255., 130./255., 49./255.};
3209 Double_t red[9] = { 180./255., 106./255., 104./255., 135./255., 164./255., 188./255., 189./255., 165./255., 144./255.};
3210 Double_t green[9] = { 72./255., 126./255., 154./255., 184./255., 198./255., 207./255., 205./255., 190./255., 179./255.};
3211 Double_t blue[9] = { 41./255., 120./255., 158./255., 188./255., 194./255., 181./255., 145./255., 100./255., 62./255.};
3219 Double_t red[9] = { 57./255., 72./255., 94./255., 117./255., 136./255., 154./255., 174./255., 192./255., 215./255.};
3220 Double_t green[9] = { 0./255., 33./255., 68./255., 109./255., 140./255., 171./255., 192./255., 196./255., 209./255.};
3221 Double_t blue[9] = { 116./255., 137./255., 173./255., 201./255., 200./255., 201./255., 203./255., 190./255., 187./255.};
3229 Double_t red[9] = { 31./255., 71./255., 123./255., 160./255., 210./255., 222./255., 214./255., 199./255., 183./255.};
3230 Double_t green[9] = { 40./255., 117./255., 171./255., 211./255., 231./255., 220./255., 190./255., 132./255., 65./255.};
3231 Double_t blue[9] = { 234./255., 214./255., 228./255., 222./255., 210./255., 160./255., 105./255., 60./255., 34./255.};
3239 Double_t red[9] = { 123./255., 108./255., 109./255., 126./255., 154./255., 172./255., 188./255., 196./255., 218./255.};
3240 Double_t green[9] = { 184./255., 138./255., 130./255., 133./255., 154./255., 175./255., 188./255., 196./255., 218./255.};
3241 Double_t blue[9] = { 208./255., 130./255., 109./255., 99./255., 110./255., 122./255., 150./255., 171./255., 218./255.};
3249 Double_t red[9] = { 105./255., 106./255., 122./255., 143./255., 159./255., 172./255., 176./255., 181./255., 207./255.};
3250 Double_t green[9] = { 252./255., 197./255., 194./255., 187./255., 174./255., 162./255., 153./255., 136./255., 125./255.};
3251 Double_t blue[9] = { 146./255., 133./255., 144./255., 155./255., 163./255., 167./255., 166./255., 162./255., 174./255.};
3259 Double_t red[9] = { 171./255., 141./255., 145./255., 152./255., 154./255., 159./255., 163./255., 158./255., 177./255.};
3260 Double_t green[9] = { 236./255., 143./255., 100./255., 63./255., 53./255., 55./255., 44./255., 31./255., 6./255.};
3261 Double_t blue[9] = { 59./255., 48./255., 46./255., 44./255., 42./255., 54./255., 82./255., 112./255., 179./255.};
3269 Double_t red[9] = { 180./255., 190./255., 209./255., 223./255., 204./255., 228./255., 205./255., 152./255., 91./255.};
3270 Double_t green[9] = { 93./255., 125./255., 147./255., 172./255., 181./255., 224./255., 233./255., 198./255., 158./255.};
3271 Double_t blue[9] = { 236./255., 218./255., 160./255., 133./255., 114./255., 132./255., 162./255., 220./255., 218./255.};
3279 Double_t red[9] = { 225./255., 183./255., 162./255., 135./255., 115./255., 111./255., 119./255., 145./255., 211./255.};
3280 Double_t green[9] = { 205./255., 177./255., 166./255., 135./255., 124./255., 117./255., 117./255., 132./255., 172./255.};
3281 Double_t blue[9] = { 186./255., 165./255., 155./255., 135./255., 126./255., 130./255., 150./255., 178./255., 226./255.};
3289 Double_t red[9] = { 39./255., 43./255., 59./255., 63./255., 80./255., 116./255., 153./255., 177./255., 223./255.};
3290 Double_t green[9] = { 39./255., 43./255., 59./255., 74./255., 91./255., 114./255., 139./255., 165./255., 223./255.};
3291 Double_t blue[9] = { 39./255., 50./255., 59./255., 70./255., 85./255., 115./255., 151./255., 176./255., 223./255.};
3299 Double_t red[9] = { 0./255., 38./255., 60./255., 76./255., 84./255., 89./255., 101./255., 128./255., 204./255.};
3300 Double_t green[9] = { 0./255., 10./255., 15./255., 23./255., 35./255., 57./255., 83./255., 123./255., 199./255.};
3301 Double_t blue[9] = { 0./255., 11./255., 22./255., 40./255., 63./255., 86./255., 97./255., 94./255., 85./255.};
3309 Double_t red[9] = { 94./255., 112./255., 141./255., 165./255., 167./255., 140./255., 91./255., 49./255., 27./255.};
3310 Double_t green[9] = { 27./255., 46./255., 88./255., 135./255., 166./255., 161./255., 135./255., 97./255., 58./255.};
3311 Double_t blue[9] = { 42./255., 52./255., 81./255., 106./255., 139./255., 158./255., 155./255., 137./255., 116./255.};
3319 Double_t red[9] = { 30./255., 49./255., 79./255., 117./255., 135./255., 151./255., 146./255., 138./255., 147./255.};
3320 Double_t green[9] = { 63./255., 60./255., 72./255., 90./255., 94./255., 94./255., 68./255., 46./255., 16./255.};
3321 Double_t blue[9] = { 18./255., 28./255., 41./255., 56./255., 62./255., 63./255., 50./255., 36./255., 21./255.};
3329 Double_t red[9] = { 0./255., 30./255., 63./255., 101./255., 143./255., 152./255., 169./255., 187./255., 230./255.};
3330 Double_t green[9] = { 0./255., 14./255., 28./255., 42./255., 58./255., 61./255., 67./255., 74./255., 91./255.};
3331 Double_t blue[9] = { 39./255., 26./255., 21./255., 18./255., 15./255., 14./255., 14./255., 13./255., 13./255.};
3339 Double_t red[9] = { 149./255., 140./255., 164./255., 179./255., 182./255., 181./255., 131./255., 87./255., 61./255.};
3340 Double_t green[9] = { 62./255., 70./255., 107./255., 136./255., 144./255., 138./255., 117./255., 87./255., 74./255.};
3341 Double_t blue[9] = { 40./255., 38./255., 45./255., 49./255., 49./255., 49./255., 38./255., 32./255., 34./255.};
3349 Double_t red[9] = { 99./255., 112./255., 148./255., 165./255., 179./255., 182./255., 183./255., 183./255., 208./255.};
3350 Double_t green[9] = { 39./255., 40./255., 57./255., 79./255., 104./255., 127./255., 148./255., 161./255., 198./255.};
3351 Double_t blue[9] = { 15./255., 16./255., 18./255., 33./255., 51./255., 79./255., 103./255., 129./255., 177./255.};
3359 Double_t red[9] = { 99./255., 116./255., 154./255., 174./255., 200./255., 196./255., 201./255., 201./255., 230./255.};
3360 Double_t green[9] = { 0./255., 0./255., 8./255., 32./255., 58./255., 83./255., 119./255., 136./255., 173./255.};
3361 Double_t blue[9] = { 5./255., 6./255., 7./255., 9./255., 9./255., 14./255., 17./255., 19./255., 24./255.};
3369 Double_t red[9] = { 82./255., 106./255., 126./255., 141./255., 155./255., 163./255., 142./255., 107./255., 66./255.};
3370 Double_t green[9] = { 62./255., 44./255., 69./255., 107./255., 135./255., 152./255., 149./255., 132./255., 119./255.};
3371 Double_t blue[9] = { 39./255., 25./255., 31./255., 60./255., 73./255., 68./255., 49./255., 72./255., 188./255.};
3379 Double_t red[9] = { 18./255., 29./255., 44./255., 72./255., 116./255., 158./255., 184./255., 208./255., 221./255.};
3380 Double_t green[9] = { 27./255., 46./255., 71./255., 105./255., 146./255., 177./255., 189./255., 190./255., 183./255.};
3381 Double_t blue[9] = { 39./255., 55./255., 80./255., 108./255., 130./255., 133./255., 124./255., 100./255., 76./255.};
3389 Double_t red[9] = { 0./255., 48./255., 119./255., 173./255., 212./255., 224./255., 228./255., 228./255., 245./255.};
3390 Double_t green[9] = { 0./255., 13./255., 30./255., 47./255., 79./255., 127./255., 167./255., 205./255., 245./255.};
3391 Double_t blue[9] = { 0./255., 68./255., 75./255., 43./255., 16./255., 22./255., 55./255., 128./255., 245./255.};
3399 Double_t red[9] = { 34./255., 70./255., 129./255., 187./255., 225./255., 226./255., 216./255., 193./255., 179./255.};
3400 Double_t green[9] = { 48./255., 91./255., 147./255., 194./255., 226./255., 229./255., 196./255., 110./255., 12./255.};
3401 Double_t blue[9] = { 234./255., 212./255., 216./255., 224./255., 206./255., 110./255., 53./255., 40./255., 29./255.};
3409 Double_t red[9] = { 30./255., 55./255., 103./255., 147./255., 174./255., 203./255., 188./255., 151./255., 105./255.};
3410 Double_t green[9] = { 0./255., 65./255., 138./255., 182./255., 187./255., 175./255., 121./255., 53./255., 9./255.};
3411 Double_t blue[9] = { 191./255., 202./255., 212./255., 208./255., 171./255., 140./255., 97./255., 57./255., 30./255.};
3419 Double_t red[9] = { 112./255., 97./255., 113./255., 125./255., 138./255., 159./255., 178./255., 188./255., 225./255.};
3420 Double_t green[9] = { 16./255., 17./255., 24./255., 37./255., 56./255., 81./255., 110./255., 136./255., 189./255.};
3421 Double_t blue[9] = { 38./255., 35./255., 46./255., 59./255., 78./255., 103./255., 130./255., 152./255., 201./255.};
3429 Double_t red[9] = { 18./255., 72./255., 5./255., 23./255., 29./255., 201./255., 200./255., 98./255., 29./255.};
3430 Double_t green[9] = { 0./255., 0./255., 43./255., 167./255., 211./255., 117./255., 0./255., 0./255., 0./255.};
3431 Double_t blue[9] = { 51./255., 203./255., 177./255., 26./255., 10./255., 9./255., 8./255., 3./255., 0./255.};
3439 Double_t red[9] = { 19./255., 42./255., 64./255., 88./255., 118./255., 147./255., 175./255., 187./255., 205./255.};
3440 Double_t green[9] = { 19./255., 55./255., 89./255., 125./255., 154./255., 169./255., 161./255., 129./255., 70./255.};
3441 Double_t blue[9] = { 19./255., 32./255., 47./255., 70./255., 100./255., 128./255., 145./255., 130./255., 75./255.};
3449 Double_t red[9] = { 33./255., 31./255., 42./255., 68./255., 86./255., 111./255., 141./255., 172./255., 227./255.};
3450 Double_t green[9] = { 255./255., 175./255., 145./255., 106./255., 88./255., 55./255., 15./255., 0./255., 0./255.};
3451 Double_t blue[9] = { 255./255., 205./255., 202./255., 203./255., 208./255., 205./255., 203./255., 206./255., 231./255.};
3459 Double_t red[9] = { 0./255., 25./255., 50./255., 79./255., 110./255., 145./255., 181./255., 201./255., 254./255.};
3460 Double_t green[9] = { 0./255., 16./255., 30./255., 46./255., 63./255., 82./255., 101./255., 124./255., 179./255.};
3461 Double_t blue[9] = { 0./255., 12./255., 21./255., 29./255., 39./255., 49./255., 61./255., 74./255., 103./255.};
3469 Double_t red[9] = { 0./255., 13./255., 30./255., 44./255., 72./255., 120./255., 156./255., 200./255., 247./255.};
3470 Double_t green[9] = { 0./255., 36./255., 84./255., 117./255., 141./255., 153./255., 151./255., 158./255., 247./255.};
3471 Double_t blue[9] = { 0./255., 94./255., 100./255., 82./255., 56./255., 66./255., 76./255., 131./255., 247./255.};
3479 Double_t red[9] = { 26./255., 51./255., 43./255., 33./255., 28./255., 35./255., 74./255., 144./255., 246./255.};
3480 Double_t green[9] = { 9./255., 24./255., 55./255., 87./255., 118./255., 150./255., 180./255., 200./255., 222./255.};
3481 Double_t blue[9] = { 30./255., 96./255., 112./255., 114./255., 112./255., 101./255., 72./255., 35./255., 0./255.};
3489 Double_t red[9] = { 0./255., 5./255., 65./255., 97./255., 124./255., 156./255., 189./255., 224./255., 255./255.};
3490 Double_t green[9] = { 32./255., 54./255., 77./255., 100./255., 123./255., 148./255., 175./255., 203./255., 234./255.};
3491 Double_t blue[9] = { 77./255., 110./255., 107./255., 111./255., 120./255., 119./255., 111./255., 94./255., 70./255.};
3497 ::Error(
"SetPalette",
"Unknown palette number %d", ncolors);
3500 paletteType = ncolors;
3503 if (alpha > 0.)
fgPalettesList.fArray[paletteType-51] += alpha/10.0f;
R__EXTERN TApplication * gApplication
static Int_t gDefinedColors
Number of defined colors.
static Float_t gColorThreshold
Color threshold used by GetColor.
static Int_t gLastDefinedColors
Previous number of defined colors.
static Int_t gHighestColorIndex
Highest color index defined.
winID h TVirtualViewer3D TVirtualGLPainter p
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void pixel
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h offset
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t r
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char cname
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void value
Option_t Option_t TPoint TPoint angle
void InitializeGraphics(Bool_t only_web=kFALSE)
Initialize the graphics environment.
static void NeedGraphicsLibs()
Static method.
Array of doubles (64 bits per element).
Array of integers (32 bits per element).
The color creation and management class.
void Print(Option_t *option="") const override
Dump this color with its attributes.
Float_t fSaturation
Saturation.
static void SetPalette(Int_t ncolors, Int_t *colors, Float_t alpha=1.)
Static function.
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 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.
virtual void SetRGB(Float_t r, Float_t g, Float_t b)
Initialize this color and its associated colors.
static void RGBtoHLS(Float_t r, Float_t g, Float_t b, Float_t &h, Float_t &l, Float_t &s)
static Float_t HLStoRGB1(Float_t rn1, Float_t rn2, Float_t huei)
Static method. Auxiliary to HLS2RGB().
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 Int_t GetColorPalette(Int_t i)
Static function returning the color number i in current palette.
static const TArrayI & GetPalette()
Static function returning the current active palette.
void ls(Option_t *option="") const override
List this color with its attributes.
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 ULong_t RGB2Pixel(Int_t r, Int_t g, Int_t b)
Convert r,g,b to graphics system dependent pixel value.
static ULong_t Number2Pixel(Int_t ci)
Static method that given a color index number, returns the corresponding pixel value.
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 Int_t GetColor(const char *hexcolor)
Static method returning color number for color specified by hex color string of form: "#rrggbb",...
static void InitializeColors()
Initialize colors used by the TCanvas based graphics (via TColor objects).
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:
Float_t fAlpha
Alpha (transparency)
void Copy(TObject &color) const override
Copy this color to obj.
static void InvertPalette()
Invert the current color palette.
static void CreateColorWheel()
Static function steering the creation of all colors in the color wheel.
static Int_t GetColorByName(const char *colorname)
Static method returning color index for a color specified by name.
static Int_t GetColorBright(Int_t color)
Static function: Returns the bright color number corresponding to n If the TColor object does not exi...
static Bool_t IsGrayscale()
Return whether all colors return grayscale values.
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::Ge...
const char * AsHexString() const
Return color as hexadecimal string.
static Int_t GetColorDark(Int_t color)
Static function: Returns the dark color number corresponding to n If the TColor object does not exist...
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 * PixelAsHexString(ULong_t pixel)
Convert machine dependent pixel value (obtained via RGB2Pixel or via Number2Pixel() or via TColor::Ge...
void Allocate()
Make this color known to the graphics system.
ULong_t GetPixel() const
Return pixel value corresponding to this color.
static Int_t CreateColorTableFromFile(TString fileName, Float_t alpha=1.)
Static function creating a color palette based on an input text file.
static void SetColorThreshold(Float_t t)
This method specifies the color threshold used by GetColor to retrieve a color.
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 ...
Float_t fGreen
Fraction of Green.
static void CreateColorsCircle(Int_t offset, const char *name, UChar_t *rgb)
Create the "circle" colors in the color wheel.
TColor & operator=(const TColor &color)
static Int_t GetNumberOfColors()
Static function returning number of colors in the color palette.
static Int_t GetFreeColorIndex()
Static function: Returns a free color index which can be used to define a user custom color.
Float_t GetSaturation() const
static void HLStoRGB(Float_t h, Float_t l, Float_t s, Float_t &r, Float_t &g, Float_t &b)
static void ListColors(Int_t ci1=0, Int_t ci2=0, Bool_t showEmpty=kFALSE)
List nb colors from the color index ci.
TColor()
Default constructor.
Int_t fNumber
Color number identifier.
static void CreateColorsRectangle(Int_t offset, const char *name, UChar_t *rgb)
Create the "rectangular" colors in the color wheel.
Float_t fBlue
Fraction of Blue.
static void CreateColorsGray()
Create the Gray scale colors in the Color Wheel.
virtual void SetAlpha(Float_t a)
virtual ~TColor()
Color destructor.
Float_t fRed
Fraction of Red.
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 Int_t GetColorTransparent(Int_t color, Float_t a)
Static function: Returns the transparent color number corresponding to n.
static void SetGrayscale(Bool_t set=kTRUE)
Set whether all colors should return grayscale values.
The TNamed class is the base class for all named ROOT classes.
void Copy(TObject &named) const override
Copy this to obj.
virtual void SetTitle(const char *title="")
Set the title of the TNamed.
const char * GetName() const override
Returns name of object.
const char * GetTitle() const override
Returns title of object.
virtual void SetName(const char *name)
Set the name of the TNamed.
virtual void AddAtAndExpand(TObject *obj, Int_t idx)
Add object at position idx.
Int_t GetLast() const override
Return index of last object in array.
Mother of all ROOT objects.
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message.
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
int CompareTo(const char *cs, ECaseCompare cmp=kExact) const
Compare a string to char *cs2.
const char * Data() const
static TString Format(const char *fmt,...)
Static method which formats a string using a printf style format descriptor and return a TString.
void Form(const char *fmt,...)
Formats a string using a printf style format descriptor.
Short_t Max(Short_t a, Short_t b)
Returns the largest of a and b.
Short_t Min(Short_t a, Short_t b)
Returns the smallest of a and b.
Short_t Abs(Short_t d)
Returns the absolute value of parameter Short_t d.
ULong_t fPixel
color pixel value (index in color table)
UShort_t fRed
red component (0..65535)
UShort_t fGreen
green component (0..65535)
UShort_t fBlue
blue component (0..65535)
UShort_t fMask
mask telling which color components are valid