// @(#)root/base:$Id$
// Author: Rene Brun   12/12/94

/*************************************************************************
 * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers.               *
 * All rights reserved.                                                  *
 *                                                                       *
 * For the licensing terms see $ROOTSYS/LICENSE.                         *
 * For the list of contributors see $ROOTSYS/README/CREDITS.             *
 *************************************************************************/

#include "Riostream.h"
#include "TROOT.h"
#include "TColor.h"
#include "TObjArray.h"
#include "TVirtualPad.h"
#include "TVirtualX.h"
#include "TError.h"
#include "TMathBase.h"
#include "TApplication.h"
#include <cmath>

ClassImp(TColor)

Bool_t  TColor::fgGrayscaleMode = kFALSE;
Bool_t  TColor::fgInitDone = kFALSE;
TArrayI TColor::fgPalette(0);

using std::floor;

//______________________________________________________________________________
/* Begin_Html
<center><h2>The color creation and management class</h2></center>

<ul>
<li><a href="#C00">Introduction</li></a>
<li><a href="#C01">Basic colors</li></a>
<li><a href="#C02">The color wheel</li></a>
<li><a href="#C03">Bright and dark colors</li></a>
<li><a href="#C04">Gray scale view of of canvas with colors</li></a>
<li><a href="#C05">Color palettes</li></a>
<li><a href="#C06">Color transparency</li></a>
</ul>

<a name="C00"></a><h3>Introduction</h3>

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.
<p>
At initialization time, a table of colors is generated. An existing color can
be retrieved by its index:
<br><pre>
   TColor *color = gROOT->GetColor(10);
</pre>
<br>Then it can be manipulated. For example its RGB components can be modified:
<p>
<pre>
   color->SetRGB(0.1, 0.2, 0.3);
</pre>
<br>A new color can be created the following way:
<p>
<pre>
   Int_t ci = 1756; // color index
   TColor *color = new TColor(ci, 0.1, 0.2, 0.3);
</pre>
<p>
Two sets of colors are initialized;
<ul>
<li> The basic colors: colors with index from 0 to 50.
<li> The color wheel: colors with indices from 300 to 1000.
</ul>

<a name="C01"></a><h3>Basic colors</h3>
The following image displays the 50 basic colors.
End_Html
Begin_Macro(source)
{
   TCanvas *c = new TCanvas("c","Fill Area colors",0,0,500,200);
   c->DrawColorTable();
   return c;
}
End_Macro
Begin_Html

<a name="C02"></a><h3>The color wheel</h3>
The wheel contains the recommended 216 colors to be used in web applications.

The colors in the color wheel are created by <tt>TColor::CreateColorWheel</tt>.
<p>
Using this color set for your text, background or graphics will give your
application a consistent appearance across different platforms and browsers.
<p>
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.
<p>
Colors of slightly different hues <b>clash</b>. If you intend to display
colors of the same hue together, you should pick them from the same group.
<p>
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
<b>Rtypes.h</b> 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.:
<pre>
   myObject.SetFillColor(kRed);
   myObject.SetFillColor(kYellow-10);
   myLine.SetLineColor(kMagenta+2);
</pre>

End_Html
Begin_Macro(source)
{
   TColorWheel *w = new TColorWheel();
   w->Draw();
   return w->GetCanvas();
}
End_Macro
Begin_Html

<a name="C03"></a><h3>Bright and dark colors</h3>
The dark and bright color are used to give 3-D effects when drawing various
boxes (see TWbox, TPave, TPaveText, TPaveLabel, etc).
<ul>
   <li>The dark colors have an index = color_index+100
   <li>The bright colors have an index = color_index+150
   <li>Two static functions return the bright and dark color number
       corresponding to a color index. If the bright or dark color does not
       exist, they are created:
   <pre>
      Int_t dark   = TColor::GetColorDark(color_index);
      Int_t bright = TColor::GetColorBright(color_index);
   </pre>
</ul>

<a name="C04"></a><h3>Grayscale view of of canvas with colors</h3>
One can toggle between a grayscale preview and the regular colored mode using
<tt>TCanvas::SetGrayscale()</tt>. Note that in grayscale mode, access via RGB
will return grayscale values according to ITU standards (and close to b&w
printer grayscales), while access via HLS returns de-saturated grayscales. The
image below shows the ROOT color wheel in grayscale mode.

End_Html
Begin_Macro(source)
{
   TColorWheel *w = new TColorWheel();
   w->Draw();
   w->GetCanvas()->SetGrayscale();
   w->GetCanvas()->Modified();
   w->GetCanvas()->Update();
   return w->GetCanvas();
}
End_Macro
Begin_Html

<a name="C05"></a><h3>Color palettes</h3>
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:
<p>
<pre>
gStyle->SetPalette(...);
</pre>
<p>
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:

End_Html
Begin_Macro(source)
{
   TCanvas *c1  = new TCanvas("c1","c1",0,0,600,400);
   TF2 *f1 = new TF2("f1","0.1+(1-(x-2)*(x-2))*(1-(y-2)*(y-2))",1,3,1,3);
   Int_t palette[5];
   palette[0] = 15;
   palette[1] = 20;
   palette[2] = 23;
   palette[3] = 30;
   palette[4] = 32;
   gStyle->SetPalette(5,palette);
   f1->Draw("colz");
   return c1;
}
End_Macro
Begin_Html

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

End_Html
Begin_Macro(source)
{
   TCanvas *c2  = new TCanvas("c2","c2",0,0,600,400);
   TF2 *f2 = new TF2("f2","0.1+(1-(x-2)*(x-2))*(1-(y-2)*(y-2))",1,3,1,3);
   const Int_t Number = 3;
   Double_t Red[Number]    = { 1.00, 0.00, 0.00};
   Double_t Green[Number]  = { 0.00, 1.00, 0.00};
   Double_t Blue[Number]   = { 1.00, 0.00, 1.00};
   Double_t Length[Number] = { 0.00, 0.50, 1.00 };
   Int_t nb=50;
   TColor::CreateGradientColorTable(Number,Length,Red,Green,Blue,nb);
   f2->SetContour(nb);
   f2->SetLineWidth(1);
   f2->SetLineColor(kBlack);
   f2->Draw("surf1z");
   return c2;
}
End_Macro
Begin_Html

<p>The function <tt>TColor::CreateGradientColorTable()</tt> automatically
calls </tt>gStyle->SetPalette()</tt>, so there is not need to add one.
<p>
After a call to <tt>TColor::CreateGradientColorTable()</tt> 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:
<br>
<pre>
   Int_t MyPalette[100];
   Double_t r[]    = {0., 0.0, 1.0, 1.0, 1.0};
   Double_t g[]    = {0., 0.0, 0.0, 1.0, 1.0};
   Double_t b[]    = {0., 1.0, 0.0, 0.0, 1.0};
   Double_t stop[] = {0., .25, .50, .75, 1.0};
   Int_t FI = TColor::CreateGradientColorTable(5, stop, r, g, b, 100);
   for (int i=0;i<100;i++) MyPalette[i] = FI+i;
</pre>
<p>
Later on to reuse the palette <tt>MyPalette</tt> it will be enough to do
<p>
<pre>
   gStyle->SetPalette(100, MyPalette);
</pre>
<p>
As only one palette is active, one need to use <tt>TExec</tt> to be able to
display plots using different palettes on the same pad.
The following macro illustrate this feature.
End_Html
Begin_Macro(source)
../../../tutorials/graphs/multipalette.C
End_Macro
Begin_Html

<a name="C06"></a><h3>Color transparency</h3>
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 <tt>0.</tt> (fully transparent) to <tt>1.</tt> (fully
opaque). To set the alpha value of an existing color it is enough to do:
<p>
<pre>
   TColor *col26 = gROOT->GetColor(26);
   col26->SetAlpha(0.01);
</pre>
<p>
A new color can be created transparent the following way:
<p>
<pre>
   Int_t ci = 1756;
   TColor *color = new TColor(ci, 0.1, 0.2, 0.3, "", 0.5); // alpha = 0.5
</pre>
<p>
An example of tranparency usage with parallel coordinates can be found
in <tt>$ROOTSYS/tutorials/tree/parallelcoordtrans.C</tt>.
<p>
To ease the creation of a transparent color the static method 
<tt>GetColorTransparent(Int_t color, Float_t a)</tt> is provided.
In the following example the <tt>trans_red</tt> color index point to
a red color 30% transparent. The alpha value of the color index
<tt>kRed</tt> is not modified.
<p>
<pre>
   Int_t trans_red = GetColorTransparent(kRed, 0.3);
</pre>
<p>
This function is also used in the methods 
<tt>SetFillColorAlpha()</tt>, <tt>SetLineColorAlpha()</tt>,
<tt>SetMarkerColorAlpha()</tt> and <tt>SetTextColorAlpha()</tt>.
In the following example the fill color of the histogram <tt>histo</tt>
is set to blue with a transparency of 35%. The color <tt>kBlue</tt>
itself remains fully opaque.
<p>
<pre>
   histo->SetFillColorAlpha(kBlue, 0.35);
</pre>
<p>
The transparency is available on all platforms when the <tt>flagOpenGL.CanvasPreferGL</tt> is set to <tt>1</tt>
in <tt>$ROOTSYS/etc/system.rootrc</tt>, or on Mac with the Cocoa backend. On the file output
it is visible with PDF, PNG, Gif, JPEG, SVG ... but not PostScript.
End_Html */


//______________________________________________________________________________
TColor::TColor(): TNamed()
{
   /* Begin_html
   Default constructor.
   End_html */

   fNumber = -1;
   fRed = fGreen = fBlue = fHue = fLight = fSaturation = -1;
   fAlpha = 1;
}


//______________________________________________________________________________
TColor::TColor(Int_t color, Float_t r, Float_t g, Float_t b, const char *name,
               Float_t a)
      : TNamed(name,"")
{
   /* Begin_html
   Normal color constructor. Initialize a color structure.
   Compute the RGB and HLS color components.
   End_html */

   TColor::InitializeColors();
   // do not enter if color number already exist
   TColor *col = gROOT->GetColor(color);
   if (col) {
      Warning("TColor", "color %d already defined", color);
      fNumber = col->GetNumber();
      fRed    = col->GetRed();
      fGreen  = col->GetGreen();
      fBlue   = col->GetBlue();
      fHue    = col->GetHue();
      fLight  = col->GetLight();
      fAlpha  = col->GetAlpha();
      fSaturation = col->GetSaturation();
      return;
   }

   fNumber = color;

   char aname[32];
   if (!name || !*name) {
      snprintf(aname,32, "Color%d", color);
      SetName(aname);
   }

   // enter in the list of colors
   TObjArray *lcolors = (TObjArray*)gROOT->GetListOfColors();
   lcolors->AddAtAndExpand(this, color);

   // fill color structure
   SetRGB(r, g, b);
   fAlpha = a;
}


//______________________________________________________________________________
TColor::~TColor()
{
   /* Begin_html
   Color destructor.
   End_html */

   gROOT->GetListOfColors()->Remove(this);
   if (gROOT->GetListOfColors()->GetEntries() == 0) {fgPalette.Set(0); fgPalette=0;}
}


//______________________________________________________________________________
TColor::TColor(const TColor &color) : TNamed(color)
{
   /* Begin_html
   Color copy constructor.
   End_html */

   ((TColor&)color).Copy(*this);
}


//______________________________________________________________________________
void TColor::InitializeColors()
{
   /* Begin_html
   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).
   End_html */

   if (fgInitDone)
      return;
   fgInitDone = kTRUE;
   if (gROOT->GetListOfColors()->First() == 0) {
      TColor *s0;
      Float_t r, g, b, h, l, s;
      Int_t   i;

      new TColor(kWhite,1,1,1,"background");
      new TColor(kBlack,0,0,0,"black");
      new TColor(2,1,0,0,"red");
      new TColor(3,0,1,0,"green");
      new TColor(4,0,0,1,"blue");
      new TColor(5,1,1,0,"yellow");
      new TColor(6,1,0,1,"magenta");
      new TColor(7,0,1,1,"cyan");
      new TColor(10,0.999,0.999,0.999,"white");
      new TColor(11,0.754,0.715,0.676,"editcol");

      // The color white above is defined as being nearly white.
      // Sets the associated dark color also to white.
      //TColor *c110 = gROOT->GetColor(110);
      TColor::GetColorDark(10);
      TColor *c110 = gROOT->GetColor(110);
      c110->SetRGB(0.999,0.999,.999);

      // Initialize Custom colors
      new TColor(20,0.8,0.78,0.67);
      new TColor(31,0.54,0.66,0.63);
      new TColor(41,0.83,0.81,0.53);
      new TColor(30,0.52,0.76,0.64);
      new TColor(32,0.51,0.62,0.55);
      new TColor(24,0.70,0.65,0.59);
      new TColor(21,0.8,0.78,0.67);
      new TColor(47,0.67,0.56,0.58);
      new TColor(35,0.46,0.54,0.57);
      new TColor(33,0.68,0.74,0.78);
      new TColor(39,0.5,0.5,0.61);
      new TColor(37,0.43,0.48,0.52);
      new TColor(38,0.49,0.6,0.82);
      new TColor(36,0.41,0.51,0.59);
      new TColor(49,0.58,0.41,0.44);
      new TColor(43,0.74,0.62,0.51);
      new TColor(22,0.76,0.75,0.66);
      new TColor(45,0.75,0.51,0.47);
      new TColor(44,0.78,0.6,0.49);
      new TColor(26,0.68,0.6,0.55);
      new TColor(28,0.53,0.4,0.34);
      new TColor(25,0.72,0.64,0.61);
      new TColor(27,0.61,0.56,0.51);
      new TColor(23,0.73,0.71,0.64);
      new TColor(42,0.87,0.73,0.53);
      new TColor(46,0.81,0.37,0.38);
      new TColor(48,0.65,0.47,0.48);
      new TColor(34,0.48,0.56,0.6);
      new TColor(40,0.67,0.65,0.75);
      new TColor(29,0.69,0.81,0.78);

      // Initialize some additional greyish non saturated colors
      new TColor(8, 0.35,0.83,0.33);
      new TColor(9, 0.35,0.33,0.85);
      new TColor(12,.3,.3,.3,"grey12");
      new TColor(13,.4,.4,.4,"grey13");
      new TColor(14,.5,.5,.5,"grey14");
      new TColor(15,.6,.6,.6,"grey15");
      new TColor(16,.7,.7,.7,"grey16");
      new TColor(17,.8,.8,.8,"grey17");
      new TColor(18,.9,.9,.9,"grey18");
      new TColor(19,.95,.95,.95,"grey19");
      new TColor(50, 0.83,0.35,0.33);

      // Initialize the Pretty Palette Spectrum Violet->Red
      //   The color model used here is based on the HLS model which
      //   is much more suitable for creating palettes than RGB.
      //   Fixing the saturation and lightness we can scan through the
      //   spectrum of visible light by using "hue" alone.
      //   In Root hue takes values from 0 to 360.
      Float_t  saturation = 1;
      Float_t  lightness = 0.5;
      Float_t  maxHue = 280;
      Float_t  minHue = 0;
      Int_t    maxPretty = 50;
      Float_t  hue;

      for (i=0 ; i<maxPretty ; i++) {
         hue = maxHue-(i+1)*((maxHue-minHue)/maxPretty);
         TColor::HLStoRGB(hue, lightness, saturation, r, g, b);
         new TColor(i+51, r, g, b);
      }

      // Initialize special colors for x3d
      for (i = 1; i < 8; i++) {
         s0 = gROOT->GetColor(i);
         s0->GetRGB(r,g,b);
         if (i == 1) { r = 0.6; g = 0.6; b = 0.6; }
         if (r == 1) r = 0.9; if (r == 0) r = 0.1;
         if (g == 1) g = 0.9; if (g == 0) g = 0.1;
         if (b == 1) b = 0.9; if (b == 0) b = 0.1;
         TColor::RGBtoHLS(r,g,b,h,l,s);
         TColor::HLStoRGB(h,0.6*l,s,r,g,b);
         new TColor(200+4*i-3,r,g,b);
         TColor::HLStoRGB(h,0.8*l,s,r,g,b);
         new TColor(200+4*i-2,r,g,b);
         TColor::HLStoRGB(h,1.2*l,s,r,g,b);
         new TColor(200+4*i-1,r,g,b);
         TColor::HLStoRGB(h,1.4*l,s,r,g,b);
         new TColor(200+4*i  ,r,g,b);
      }

      // Create the ROOT Color Wheel
      TColor::CreateColorWheel();
   }
   // If fgPalette.fN !=0 SetPalette has been called already
   // (from rootlogon.C for instance)

   if (!fgPalette.fN) SetPalette(1,0);
}


//______________________________________________________________________________
const char *TColor::AsHexString() const
{
   /* Begin_html
   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.
   End_html */

   static TString tempbuf;

   Int_t r, g, b, a;
   r = Int_t(GetRed()   * 255);
   g = Int_t(GetGreen() * 255);
   b = Int_t(GetBlue()  * 255);
   a = Int_t(fAlpha     * 255);

   if (a != 255) {
      tempbuf.Form("#%02x%02x%02x%02x", a, r, g, b);
   } else {
      tempbuf.Form("#%02x%02x%02x", r, g, b);
   }
   return tempbuf;
}


//______________________________________________________________________________
void TColor::Copy(TObject &obj) const
{
   /* Begin_html
   Copy this color to obj.
   End_html */

   TNamed::Copy((TNamed&)obj);
   ((TColor&)obj).fRed   = fRed;
   ((TColor&)obj).fGreen = fGreen;
   ((TColor&)obj).fBlue  = fBlue;
   ((TColor&)obj).fHue   = fHue;
   ((TColor&)obj).fLight = fLight;
   ((TColor&)obj).fAlpha = fAlpha;
   ((TColor&)obj).fSaturation = fSaturation;
   ((TColor&)obj).fNumber = fNumber;
}


//______________________________________________________________________________
void TColor::CreateColorsGray()
{
   /* Begin_html
   Create the Gray scale colors in the Color Wheel
   End_html */

   if (gROOT->GetColor(kGray)) return;
   TColor *gray  = new TColor(kGray,204./255.,204./255.,204./255.);
   TColor *gray1 = new TColor(kGray+1,153./255.,153./255.,153./255.);
   TColor *gray2 = new TColor(kGray+2,102./255.,102./255.,102./255.);
   TColor *gray3 = new TColor(kGray+3, 51./255., 51./255., 51./255.);
   gray ->SetName("kGray");
   gray1->SetName("kGray+1");
   gray2->SetName("kGray+2");
   gray3->SetName("kGray+3");
}


//______________________________________________________________________________
void TColor::CreateColorsCircle(Int_t offset, const char *name, UChar_t *rgb)
{
   /* Begin_html
   Create the "circle" colors in the color wheel.
   End_html */

   TString colorname;
   for (Int_t n=0;n<15;n++) {
      Int_t colorn = offset+n-10;
      TColor *color = gROOT->GetColor(colorn);
      if (!color) {
         color = new TColor(colorn,rgb[3*n]/255.,rgb[3*n+1]/255.,rgb[3*n+2]/255.);
         color->SetTitle(color->AsHexString());
         if      (n>10) colorname.Form("%s+%d",name,n-10);
         else if (n<10) colorname.Form("%s-%d",name,10-n);
         else           colorname.Form("%s",name);
         color->SetName(colorname);
      }
   }
}


//______________________________________________________________________________
void TColor::CreateColorsRectangle(Int_t offset, const char *name, UChar_t *rgb)
{
   /* Begin_html
   Create the "rectangular" colors in the color wheel.
   End_html */

   TString colorname;
   for (Int_t n=0;n<20;n++) {
      Int_t colorn = offset+n-9;
      TColor *color = gROOT->GetColor(colorn);
      if (!color) {
         color = new TColor(colorn,rgb[3*n]/255.,rgb[3*n+1]/255.,rgb[3*n+2]/255.);
         color->SetTitle(color->AsHexString());
         if      (n>9) colorname.Form("%s+%d",name,n-9);
         else if (n<9) colorname.Form("%s-%d",name,9-n);
         else          colorname.Form("%s",name);
         color->SetName(colorname);
      }
   }
}


//______________________________________________________________________________
void TColor::CreateColorWheel()
{
   /* Begin_html
   Static function steering the creation of all colors in the color wheel.
   End_html */

   UChar_t magenta[46]= {255,204,255
                        ,255,153,255, 204,153,204
                        ,255,102,255, 204,102,204, 153,102,153
                        ,255, 51,255, 204, 51,204, 153, 51,153, 102, 51,102
                        ,255,  0,255, 204,  0,204, 153,  0,153, 102,  0,102,  51,  0, 51};

   UChar_t red[46]    = {255,204,204
                        ,255,153,153, 204,153,153
                        ,255,102,102, 204,102,102, 153,102,102
                        ,255, 51, 51, 204, 51, 51, 153, 51, 51, 102, 51, 51
                        ,255,  0,  0, 204,  0,  0, 153,  0,  0, 102,  0,  0,  51,  0,  0};

   UChar_t yellow[46] = {255,255,204
                        ,255,255,153, 204,204,153
                        ,255,255,102, 204,204,102, 153,153,102
                        ,255,255, 51, 204,204, 51, 153,153, 51, 102,102, 51
                        ,255,255,  0, 204,204,  0, 153,153,  0, 102,102,  0,  51, 51,  0};

   UChar_t green[46]  = {204,255,204
                        ,153,255,153, 153,204,153
                        ,102,255,102, 102,204,102, 102,153,102
                        , 51,255, 51,  51,204, 51,  51,153, 51,  51,102, 51
                        ,  0,255,  0,   0,204,  0,   0,153,  0,   0,102,  0,  0, 51,  0};

   UChar_t cyan[46]   = {204,255,255
                        ,153,255,255, 153,204,204
                        ,102,255,255, 102,204,204, 102,153,153
                        , 51,255,255,  51,204,204,  51,153,153,  51,102,102
                        ,  0,255,255,   0,204,204,   0,153,153,   0,102,102,   0, 51,  51};

   UChar_t blue[46]   = {204,204,255
                        ,153,153,255, 153,153,204
                        ,102,102,255, 102,102,204, 102,102,153
                        , 51, 51,255,  51, 51,204,  51, 51,153,  51, 51,102
                        ,  0,  0,255,   0,  0,204,   0,  0,153,   0,  0,102,   0,  0,  51};

   UChar_t pink[60] = {255, 51,153,  204,  0,102,  102,  0, 51,  153,  0, 51,  204, 51,102
                      ,255,102,153,  255,  0,102,  255, 51,102,  204,  0, 51,  255,  0, 51
                      ,255,153,204,  204,102,153,  153, 51,102,  153,  0,102,  204, 51,153
                      ,255,102,204,  255,  0,153,  204,  0,153,  255, 51,204,  255,  0,153};

   UChar_t orange[60]={255,204,153,  204,153,102,  153,102, 51,  153,102,  0,  204,153, 51
                      ,255,204,102,  255,153,  0,  255,204, 51,  204,153,  0,  255,204,  0
                      ,255,153, 51,  204,102,  0,  102, 51,  0,  153, 51,  0,  204,102, 51
                      ,255,153,102,  255,102,  0,  255,102, 51,  204, 51,  0,  255, 51,  0};

   UChar_t spring[60]={153,255, 51,  102,204,  0,   51,102,  0,   51,153,  0,  102,204, 51
                      ,153,255,102,  102,255,  0,  102,255, 51,   51,204,  0,   51,255, 0
                      ,204,255,153,  153,204,102,  102,153, 51,  102,153,  0,  153,204, 51
                      ,204,255,102,  153,255,  0,  204,255, 51,  153,204,  0,  204,255,  0};

   UChar_t teal[60] = {153,255,204,  102,204,153,   51,153,102,    0,153,102,   51,204,153
                      ,102,255,204,    0,255,102,   51,255,204,    0,204,153,    0,255,204
                      , 51,255,153,    0,204,102,    0,102, 51,    0,153, 51,   51,204,102
                      ,102,255,153,    0,255,153,   51,255,102,    0,204, 51,    0,255, 51};

   UChar_t azure[60] ={153,204,255,  102,153,204,   51,102,153,    0, 51,153,   51,102,204
                      ,102,153,255,    0,102,255,   51,102,255,    0, 51,204,    0, 51,255
                      , 51,153,255,    0,102,204,    0, 51,102,    0,102,153,   51,153,204
                      ,102,204,255,    0,153,255,   51,204,255,    0,153,204,    0,204,255};

   UChar_t violet[60]={204,153,255,  153,102,204,  102, 51,153,  102,  0,153,  153, 51,204
                      ,204,102,255,  153,  0,255,  204, 51,255,  153,  0,204,  204,  0,255
                      ,153, 51,255,  102,  0,204,   51,  0,102,   51,  0,153,  102, 51,204
                      ,153,102,255,  102,  0,255,  102, 51,255,   51,  0,204,   51,  0,255};

   TColor::CreateColorsCircle(kMagenta,"kMagenta",magenta);
   TColor::CreateColorsCircle(kRed,    "kRed",    red);
   TColor::CreateColorsCircle(kYellow, "kYellow", yellow);
   TColor::CreateColorsCircle(kGreen,  "kGreen",  green);
   TColor::CreateColorsCircle(kCyan,   "kCyan",   cyan);
   TColor::CreateColorsCircle(kBlue,   "kBlue",   blue);

   TColor::CreateColorsRectangle(kPink,  "kPink",  pink);
   TColor::CreateColorsRectangle(kOrange,"kOrange",orange);
   TColor::CreateColorsRectangle(kSpring,"kSpring",spring);
   TColor::CreateColorsRectangle(kTeal,  "kTeal",  teal);
   TColor::CreateColorsRectangle(kAzure, "kAzure", azure);
   TColor::CreateColorsRectangle(kViolet,"kViolet",violet);

   TColor::CreateColorsGray();
}


//______________________________________________________________________________
Int_t TColor::GetColorPalette(Int_t i)
{
   /* Begin_html
   Static function returning the color number i in current palette.
   End_html */

   Int_t ncolors = fgPalette.fN;
   if (ncolors == 0) return 0;
   Int_t icol    = i%ncolors;
   if (icol < 0) icol = 0;
   return fgPalette.fArray[icol];
}


//______________________________________________________________________________
Int_t TColor::GetNumberOfColors()
{
   /* Begin_html
   Static function returning number of colors in the color palette.
   End_html */

   return fgPalette.fN;
}


//______________________________________________________________________________
ULong_t TColor::GetPixel() const
{
   /* Begin_html
   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.
   End_html */

   if (gVirtualX && !gROOT->IsBatch()) {
      if (gApplication) {
         TApplication::NeedGraphicsLibs();
         gApplication->InitializeGraphics();
      }
      return gVirtualX->GetPixel(fNumber);
   }

   return 0;
}


//______________________________________________________________________________
void TColor::HLS2RGB(Float_t hue, Float_t light, Float_t satur,
                     Float_t &r, Float_t &g, Float_t &b)
{
   /* Begin_html
   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].
   End_html */

   Float_t rh, rl, rs, rm1, rm2;
   rh = rl = rs = 0;
   if (hue   > 0) rh = hue;   if (rh > 360) rh = 360;
   if (light > 0) rl = light; if (rl > 1)   rl = 1;
   if (satur > 0) rs = satur; if (rs > 1)   rs = 1;

   if (rl <= 0.5)
      rm2 = rl*(1.0 + rs);
   else
      rm2 = rl + rs - rl*rs;
   rm1 = 2.0*rl - rm2;

   if (!rs) { r = rl; g = rl; b = rl; return; }
   r = HLStoRGB1(rm1, rm2, rh+120);
   g = HLStoRGB1(rm1, rm2, rh);
   b = HLStoRGB1(rm1, rm2, rh-120);
}


//______________________________________________________________________________
Float_t TColor::HLStoRGB1(Float_t rn1, Float_t rn2, Float_t huei)
{
   /* Begin_html
   Static method. Auxiliary to HLS2RGB().
   End_html */

   Float_t hue = huei;
   if (hue > 360) hue = hue - 360;
   if (hue < 0)   hue = hue + 360;
   if (hue < 60 ) return rn1 + (rn2-rn1)*hue/60;
   if (hue < 180) return rn2;
   if (hue < 240) return rn1 + (rn2-rn1)*(240-hue)/60;
   return rn1;
}


//______________________________________________________________________________
void TColor::HLS2RGB(Int_t h, Int_t l, Int_t s, Int_t &r, Int_t &g, Int_t &b)
{
   /* Begin_html
   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].
   End_html */

   Float_t hh, ll, ss, rr, gg, bb;

   hh = Float_t(h) * 360 / 255;
   ll = Float_t(l) / 255;
   ss = Float_t(s) / 255;

   TColor::HLStoRGB(hh, ll, ss, rr, gg, bb);

   r = (Int_t) (rr * 255);
   g = (Int_t) (gg * 255);
   b = (Int_t) (bb * 255);
}


//______________________________________________________________________________
void TColor::HSV2RGB(Float_t hue, Float_t satur, Float_t value,
                     Float_t &r, Float_t &g, Float_t &b)
{
   /* Begin_html
   Static method to compute RGB from HSV:
   <ul>
   <li> The hue value runs from 0 to 360.
   <li> The saturation is the degree of strength or purity and is from 0 to 1.
        Purity is how much white is added to the color, so S=1 makes the purest
        color (no white).
   <li> Brightness value also ranges from 0 to 1, where 0 is the black.
   </ul>
   The returned r,g,b triplet is between [0,1].
   End_html */

   Int_t i;
   Float_t f, p, q, t;

   if (satur==0) {
      // Achromatic (grey)
      r = g = b = value;
      return;
   }

   hue /= 60;   // sector 0 to 5
   i = (Int_t)floor(hue);
   f = hue-i;   // factorial part of hue
   p = value*(1-satur);
   q = value*(1-satur*f );
   t = value*(1-satur*(1-f));

   switch (i) {
      case 0:
         r = value;
         g = t;
         b = p;
         break;
      case 1:
         r = q;
         g = value;
         b = p;
         break;
      case 2:
         r = p;
         g = value;
         b = t;
         break;
      case 3:
         r = p;
         g = q;
         b = value;
         break;
      case 4:
         r = t;
         g = p;
         b = value;
         break;
      default:
         r = value;
         g = p;
         b = q;
         break;
   }
}


//______________________________________________________________________________
void TColor::ls(Option_t *) const
{
   /* Begin_html
   List this color with its attributes.
   End_html */

   printf("Color:%d  Red=%f Green=%f Blue=%f Name=%s\n",
          fNumber, fRed, fGreen, fBlue, GetName());
}


//______________________________________________________________________________
void TColor::Print(Option_t *) const
{
   /* Begin_html
   Dump this color with its attributes.
   End_html */

   ls();
}


//______________________________________________________________________________
void TColor::RGB2HLS(Float_t rr, Float_t gg, Float_t bb,
                     Float_t &hue, Float_t &light, Float_t &satur)
{
   /* Begin_html
   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].
   End_html */

   Float_t rnorm, gnorm, bnorm, minval, maxval, msum, mdiff, r, g, b;
   minval = maxval =0 ;
   r = g = b = 0;
   if (rr > 0) r = rr; if (r > 1) r = 1;
   if (gg > 0) g = gg; if (g > 1) g = 1;
   if (bb > 0) b = bb; if (b > 1) b = 1;

   minval = r;
   if (g < minval) minval = g;
   if (b < minval) minval = b;
   maxval = r;
   if (g > maxval) maxval = g;
   if (b > maxval) maxval = b;

   rnorm = gnorm = bnorm = 0;
   mdiff = maxval - minval;
   msum  = maxval + minval;
   light = 0.5 * msum;
   if (maxval != minval) {
      rnorm = (maxval - r)/mdiff;
      gnorm = (maxval - g)/mdiff;
      bnorm = (maxval - b)/mdiff;
   } else {
      satur = hue = 0;
      return;
   }

   if (light < 0.5)
      satur = mdiff/msum;
   else
      satur = mdiff/(2.0 - msum);

   if (r == maxval)
      hue = 60.0 * (6.0 + bnorm - gnorm);
   else if (g == maxval)
      hue = 60.0 * (2.0 + rnorm - bnorm);
   else
      hue = 60.0 * (4.0 + gnorm - rnorm);

   if (hue > 360)
      hue = hue - 360;
}


//______________________________________________________________________________
void TColor::RGB2HSV(Float_t r, Float_t g, Float_t b,
                     Float_t &hue, Float_t &satur, Float_t &value)
{
   /* Begin_html
   Static method to compute HSV from RGB.
   <ul>
   <li> The input values:
   <ul>
   <li> r,g,b triplet is between [0,1].
   </ul>
   <li> The returned values:
   <ul>
   <li> The hue value runs from 0 to 360.
   <li> The saturation is the degree of strength or purity and is from 0 to 1.
        Purity is how much white is added to the color, so S=1 makes the purest
        color (no white).
   <li> Brightness value also ranges from 0 to 1, where 0 is the black.
   </ul>
   </ul>
   End_html */

   Float_t min, max, delta;

   min   = TMath::Min(TMath::Min(r, g), b);
   max   = TMath::Max(TMath::Max(r, g), b);
   value = max;

   delta = max - min;

   if (max != 0) {
      satur = delta/max;
   } else {
      satur = 0;
      hue   = -1;
      return;
   }

   if (r == max) {
      hue = (g-b)/delta;
   } else if (g == max) {
      hue = 2+(b-r)/delta;
   } else {
      hue = 4+(r-g)/delta;
   }

   hue *= 60;
   if (hue < 0) hue += 360;
}


//______________________________________________________________________________
void TColor::RGB2HLS(Int_t r, Int_t g, Int_t b, Int_t &h, Int_t &l, Int_t &s)
{
   /* Begin_html
   Static method to compute HLS from RGB. The r,g,b triplet is between
   [0,255], hue, light and satur are between [0,255].
   End_html */

   Float_t rr, gg, bb, hue, light, satur;

   rr = Float_t(r) / 255;
   gg = Float_t(g) / 255;
   bb = Float_t(b) / 255;

   TColor::RGBtoHLS(rr, gg, bb, hue, light, satur);

   h = (Int_t) (hue/360 * 255);
   l = (Int_t) (light * 255);
   s = (Int_t) (satur * 255);
}


//______________________________________________________________________________
void TColor::SetRGB(Float_t r, Float_t g, Float_t b)
{
   /* Begin_html
   Initialize this color and its associated colors.
   End_html */

   TColor::InitializeColors();
   fRed   = r;
   fGreen = g;
   fBlue  = b;

   if (fRed < 0) return;

   RGBtoHLS(r, g, b, fHue, fLight, fSaturation);

   Int_t nplanes = 16;
   if (gVirtualX) gVirtualX->GetPlanes(nplanes);
   if (nplanes == 0) nplanes = 16;

   // allocate color now (can be delayed when we have a large colormap)
#ifndef R__WIN32
   if (nplanes < 15)
#endif
      Allocate();

   if (fNumber > 50) return;

   // now define associated colors for WBOX shading
   Float_t dr, dg, db, lr, lg, lb;

   // set dark color
   HLStoRGB(fHue, 0.7*fLight, fSaturation, dr, dg, db);
   TColor *dark = gROOT->GetColor(100+fNumber);
   if (dark) {
      if (nplanes > 8) dark->SetRGB(dr, dg, db);
      else             dark->SetRGB(0.3,0.3,0.3);
   }

   // set light color
   HLStoRGB(fHue, 1.2*fLight, fSaturation, lr, lg, lb);
   TColor *light = gROOT->GetColor(150+fNumber);
   if (light) {
      if (nplanes > 8) light->SetRGB(lr, lg, lb);
      else             light->SetRGB(0.8,0.8,0.8);
   }
}


//______________________________________________________________________________
void TColor::Allocate()
{
   /* Begin_html
   Make this color known to the graphics system.
   End_html */

   if (gVirtualX && !gROOT->IsBatch())

      gVirtualX->SetRGB(fNumber, GetRed(), GetGreen(), GetBlue());
}


//______________________________________________________________________________
Int_t TColor::GetColor(const char *hexcolor)
{
   /* Begin_html
   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".
   <br>
   If specified color does not exist it will be created with as
   name "#rrggbb" with rr, gg and bb in hex between [0,FF].
   End_html */

   if (hexcolor && *hexcolor == '#') {
      Int_t r, g, b;
      if (sscanf(hexcolor+1, "%02x%02x%02x", &r, &g, &b) == 3)
         return GetColor(r, g, b);
   }
   ::Error("TColor::GetColor(const char*)", "incorrect color string");
   return 0;
}


//______________________________________________________________________________
Int_t TColor::GetColor(Float_t r, Float_t g, Float_t b)
{
   /* Begin_html
   Static method returning color number for color specified by
   r, g and b. The r,g,b should be in the range [0,1].
   <br>
   If specified color does not exist it will be created
   with as name "#rrggbb" with rr, gg and bb in hex between
   [0,FF].
   End_html */

   Int_t rr, gg, bb;
   rr = Int_t(r * 255);
   gg = Int_t(g * 255);
   bb = Int_t(b * 255);

   return GetColor(rr, gg, bb);
}


//______________________________________________________________________________
Int_t TColor::GetColor(ULong_t pixel)
{
   /* Begin_html
   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.
   End_html */

   Int_t r, g, b;

   Pixel2RGB(pixel, r, g, b);

   return GetColor(r, g, b);
}


//______________________________________________________________________________
Int_t TColor::GetColor(Int_t r, Int_t g, Int_t b)
{
   /* Begin_html
   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].
   End_html */

   TColor::InitializeColors();
   if (r < 0) r = 0;
   if (g < 0) g = 0;
   if (b < 0) b = 0;
   if (r > 255) r = 255;
   if (g > 255) g = 255;
   if (b > 255) b = 255;

   // Get list of all defined colors
   TObjArray *colors = (TObjArray*) gROOT->GetListOfColors();

   TColor *color = 0;

   // Look for color by name
   if ((color = (TColor*)colors->FindObject(Form("#%02x%02x%02x", r, g, b))))
      // We found the color by name, so we use that right away
      return color->GetNumber();

   Float_t rr, gg, bb;
   rr = Float_t(r)/255.;
   gg = Float_t(g)/255.;
   bb = Float_t(b)/255.;

   TIter next(colors);

   Int_t nplanes = 16;
   Float_t thres = 1.0/31.0;   // 5 bits per color : 0 - 0x1F !
   if (gVirtualX) gVirtualX->GetPlanes(nplanes);
   if (nplanes >= 24)
      thres = 1.0/255.0;       // 8 bits per color : 0 - 0xFF !

   // Loop over all defined colors
   while ((color = (TColor*)next())) {
      if (TMath::Abs(color->GetRed() - rr) > thres)
         continue;
      if (TMath::Abs(color->GetGreen() - gg) > thres)
         continue;
      if (TMath::Abs(color->GetBlue() - bb) > thres)
         continue;

      // We found a matching color in the color table
      return color->GetNumber();
   }

   // We didn't find a matching color in the color table, so we
   // add it. Note name is of the form "#rrggbb" where rr, etc. are
   // hexadecimal numbers.
   color = new TColor(colors->GetLast()+1, rr, gg, bb,
                      Form("#%02x%02x%02x", r, g, b));

   return color->GetNumber();
}


//______________________________________________________________________________
Int_t TColor::GetColorBright(Int_t n)
{
   /* Begin_html
   Static function: Returns the bright color number corresponding to n
   If the TColor object does not exist, it is created.
   The convention is that the bright color nb = n+150
   End_html */

   if (n < 0) return -1;

   // Get list of all defined colors
   TObjArray *colors = (TObjArray*) gROOT->GetListOfColors();
   Int_t ncolors = colors->GetSize();
   // Get existing color at index n
   TColor *color = 0;
   if (n < ncolors) color = (TColor*)colors->At(n);
   if (!color) return -1;

   //Get the rgb of the the new bright color corresponding to color n
   Float_t r,g,b;
   HLStoRGB(color->GetHue(), 1.2*color->GetLight(), color->GetSaturation(), r, g, b);

   //Build the bright color (unless the slot nb is already used)
   Int_t nb = n+150;
   TColor *colorb = 0;
   if (nb < ncolors) colorb = (TColor*)colors->At(nb);
   if (colorb) return nb;
   colorb = new TColor(nb,r,g,b);
   colorb->SetName(Form("%s_bright",color->GetName()));
   colors->AddAtAndExpand(colorb,nb);
   return nb;
}


//______________________________________________________________________________
Int_t TColor::GetColorDark(Int_t n)
{
   /* Begin_html
   Static function: Returns the dark color number corresponding to n
   If the TColor object does not exist, it is created.
   The convention is that the dark color nd = n+100
   End_html */

   if (n < 0) return -1;

   // Get list of all defined colors
   TObjArray *colors = (TObjArray*) gROOT->GetListOfColors();
   Int_t ncolors = colors->GetSize();
   // Get existing color at index n
   TColor *color = 0;
   if (n < ncolors) color = (TColor*)colors->At(n);
   if (!color) return -1;

   //Get the rgb of the the new dark color corresponding to color n
   Float_t r,g,b;
   HLStoRGB(color->GetHue(), 0.7*color->GetLight(), color->GetSaturation(), r, g, b);

   //Build the dark color (unless the slot nd is already used)
   Int_t nd = n+100;
   TColor *colord = 0;
   if (nd < ncolors) colord = (TColor*)colors->At(nd);
   if (colord) return nd;
   colord = new TColor(nd,r,g,b);
   colord->SetName(Form("%s_dark",color->GetName()));
   colors->AddAtAndExpand(colord,nd);
   return nd;
}


//______________________________________________________________________________
Int_t TColor::GetColorTransparent(Int_t n, Float_t a)
{
   /* Begin_html
   Static function: Returns the transparent color number corresponding to n.
   The transparency level is given by the alpha value a.
   End_html */
   
   if (n < 0) return -1;
   
   TColor *color = gROOT->GetColor(n);
   TColor *colort = new TColor(gROOT->GetListOfColors()->GetLast()+1,
                               color->GetRed(), color->GetGreen(), color->GetBlue());
   colort->SetAlpha(a);
   colort->SetName(Form("%s_transparent",color->GetName()));
   return colort->GetNumber();
}   


//______________________________________________________________________________
ULong_t TColor::Number2Pixel(Int_t ci)
{
   /* Begin_html
   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.
   End_html */


   TColor::InitializeColors();
   TColor *color = gROOT->GetColor(ci);
   if (color)
      return color->GetPixel();
   else
      ::Warning("TColor::Number2Pixel", "color with index %d not defined", ci);

   return 0;
}


//______________________________________________________________________________
ULong_t TColor::RGB2Pixel(Float_t r, Float_t g, Float_t b)
{
   /* Begin_html
   Convert r,g,b to graphics system dependent pixel value.
   The r,g,b triplet must be [0,1].
   End_html */

   if (r < 0) r = 0;
   if (g < 0) g = 0;
   if (b < 0) b = 0;
   if (r > 1) r = 1;
   if (g > 1) g = 1;
   if (b > 1) b = 1;

   ColorStruct_t color;
   color.fRed   = UShort_t(r * 65535);
   color.fGreen = UShort_t(g * 65535);
   color.fBlue  = UShort_t(b * 65535);
   color.fMask  = kDoRed | kDoGreen | kDoBlue;
   gVirtualX->AllocColor(gVirtualX->GetColormap(), color);
   return color.fPixel;
}


//______________________________________________________________________________
ULong_t TColor::RGB2Pixel(Int_t r, Int_t g, Int_t b)
{
   /* Begin_html
   Convert r,g,b to graphics system dependent pixel value.
   The r,g,b triplet must be [0,255].
   End_html */

   if (r < 0) r = 0;
   if (g < 0) g = 0;
   if (b < 0) b = 0;
   if (r > 255) r = 255;
   if (g > 255) g = 255;
   if (b > 255) b = 255;

   ColorStruct_t color;
   color.fRed   = UShort_t(r * 257);  // 65535/255
   color.fGreen = UShort_t(g * 257);
   color.fBlue  = UShort_t(b * 257);
   color.fMask  = kDoRed | kDoGreen | kDoBlue;
   gVirtualX->AllocColor(gVirtualX->GetColormap(), color);
   return color.fPixel;
}


//______________________________________________________________________________
void TColor::Pixel2RGB(ULong_t pixel, Float_t &r, Float_t &g, Float_t &b)
{
   /* Begin_html
   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].
   End_html */

   ColorStruct_t color;
   color.fPixel = pixel;
   gVirtualX->QueryColor(gVirtualX->GetColormap(), color);
   r = (Float_t)color.fRed / 65535;
   g = (Float_t)color.fGreen / 65535;
   b = (Float_t)color.fBlue / 65535;
}


//______________________________________________________________________________
void TColor::Pixel2RGB(ULong_t pixel, Int_t &r, Int_t &g, Int_t &b)
{
   /* Begin_html
   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].
   End_html */

   ColorStruct_t color;
   color.fPixel = pixel;
   gVirtualX->QueryColor(gVirtualX->GetColormap(), color);
   r = color.fRed / 257;
   g = color.fGreen / 257;
   b = color.fBlue / 257;
}


//______________________________________________________________________________
const char *TColor::PixelAsHexString(ULong_t pixel)
{
   /* Begin_html
   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.
   End_html */

   static TString tempbuf;
   Int_t r, g, b;
   Pixel2RGB(pixel, r, g, b);
   tempbuf.Form("#%02x%02x%02x", r, g, b);
   return tempbuf;
}


//______________________________________________________________________________
void TColor::SaveColor(std::ostream &out, Int_t ci)
{
   /* Begin_html
   Save a color with index > 228 as a C++ statement(s) on output stream out.
   End_html */

   char quote = '"';
   Float_t r,g,b,a;
   Int_t ri, gi, bi;
   TString cname;

   TColor *c = gROOT->GetColor(ci);
   if (c) {
      c->GetRGB(r, g, b);
      a = c->GetAlpha();
   } else {
      return;
   }

   if (gROOT->ClassSaved(TColor::Class())) {
      out << std::endl;
   } else {
      out << std::endl;
      out << "   Int_t ci;      // for color index setting" << std::endl;
      out << "   TColor *color; // for color definition with alpha" << std::endl;
   }

   if (a<1) {
      out<<"   ci = "<<ci<<";"<<std::endl;
      out<<"   color = new TColor(ci, "<<r<<", "<<g<<", "<<b<<", "
      <<"\" \", "<<a<<");"<<std::endl;
   } else {
      ri = (Int_t)(255*r);
      gi = (Int_t)(255*g);
      bi = (Int_t)(255*b);
      cname.Form("#%02x%02x%02x", ri, gi, bi);
      out<<"   ci = TColor::GetColor("<<quote<<cname.Data()<<quote<<");"<<std::endl;
   }
}


//______________________________________________________________________________
Bool_t TColor::IsGrayscale()
{
   /* Begin_html
   Return whether all colors return grayscale values.
   End_html */

   return fgGrayscaleMode;
}


//______________________________________________________________________________
void TColor::SetGrayscale(Bool_t set /*= kTRUE*/)
{
   /* Begin_html
   Set whether all colors should return grayscale values.
   End_html */

   if (fgGrayscaleMode == set) return;

   fgGrayscaleMode = set;

   if (!gVirtualX || gROOT->IsBatch()) return;

   TColor::InitializeColors();
   TIter iColor(gROOT->GetListOfColors());
   TColor* color = 0;
   while ((color = (TColor*) iColor()))
      color->Allocate();
}


//______________________________________________________________________________
Int_t TColor::CreateGradientColorTable(UInt_t Number, Double_t* Stops,
                              Double_t* Red, Double_t* Green,
                              Double_t* Blue, UInt_t NColors, Float_t alpha)
{
   /* Begin_html
   Static function creating a color table with several connected linear gradients.
   <ul>
   <li>Number: The number of end point colors that will form the gradients.
               Must be at least 2.
   <li>Stops: Where in the whole table the end point colors should lie.
              Each entry must be on [0, 1], each entry must be greater than
              the previous entry.
   <li>Red, Green, Blue: The end point color values.
                         Each entry must be on [0, 1]
   <li>NColors: Total number of colors in the table. Must be at least 1.
   </ul>

   Returns a positive value on success and -1 on error.
   <p>
   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.
   <p>
   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.
   <p>
   This definition is similar to the povray-definition of gradient
   color tables.
   <p>
   For instance:
   <pre>
   UInt_t Number = 3;
   Double_t Red[3]   = { 0.0, 1.0, 1.0 };
   Double_t Green[3] = { 0.0, 0.0, 1.0 };
   Double_t Blue[3]  = { 1.0, 0.0, 1.0 };
   Double_t Stops[3] = { 0.0, 0.4, 1.0 };
   </pre>
   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.
   <p>
   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.
   <p>
   Original code by Andreas Zoglauer (zog@mpe.mpg.de)
   End_html */

   TColor::InitializeColors();

   UInt_t g, c;
   UInt_t nPalette = 0;
   Int_t *palette = new Int_t[NColors+1];
   UInt_t nColorsGradient;
   TColor *color;
   Int_t highestIndex = 0;

   if(Number < 2 || NColors < 1){
      delete [] palette;
      return -1;
   }

   // Check if all RGB values are between 0.0 and 1.0 and
   // Stops goes from 0.0 to 1.0 in increasing order.
   for (c = 0; c < Number; c++) {
      if (Red[c] < 0 || Red[c] > 1.0 ||
          Green[c] < 0 || Green[c] > 1.0 ||
          Blue[c] < 0 || Blue[c] > 1.0 ||
          Stops[c] < 0 || Stops[c] > 1.0) {
         //Error("CreateGradientColorTable",
         //      "All RGB colors and stops have to be between 0.0 and 1.0");
         delete [] palette;
         return -1;
      }
      if (c >= 1) {
         if (Stops[c-1] > Stops[c]) {
            //Error("CreateGradientColorTable",
            //      "Stops have to be in increasing order");
            delete [] palette;
            return -1;
         }
      }
   }

   // Search for the highest color index not used in ROOT:
   // We do not want to overwrite some colors...
   TSeqCollection *colorTable = gROOT->GetListOfColors();
   if ((color = (TColor *) colorTable->Last()) != 0) {
      if (color->GetNumber() > highestIndex) {
         highestIndex = color->GetNumber();
      }
      while ((color = (TColor *) (colorTable->Before(color))) != 0) {
         if (color->GetNumber() > highestIndex) {
            highestIndex = color->GetNumber();
         }
      }
   }
   highestIndex++;

   // Now create the colors and add them to the default palette:

   // For each defined gradient...
   for (g = 1; g < Number; g++) {
      // create the colors...
      nColorsGradient = (Int_t) (floor(NColors*Stops[g]) - floor(NColors*Stops[g-1]));
      for (c = 0; c < nColorsGradient; c++) {
         new TColor(highestIndex,
                    Red[g-1] + c * (Red[g] - Red[g-1])/ nColorsGradient,
                    Green[g-1] + c * (Green[g] - Green[g-1])/ nColorsGradient,
                    Blue[g-1] + c * (Blue[g] - Blue[g-1])/ nColorsGradient,
                    "  ");
         gROOT->GetColor(highestIndex)->SetAlpha(alpha);
         palette[nPalette] = highestIndex;
         nPalette++;
         highestIndex++;
      }
   }

   TColor::SetPalette(nPalette, palette);
   delete [] palette;

   return highestIndex - NColors;
}


//______________________________________________________________________________
void TColor::SetPalette(Int_t ncolors, Int_t *colors, Float_t alpha)
{
   /* Begin_html
   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.
   <p>
   <tt>if ncolors <= 0</tt> a default palette (see below) of 50 colors is
   defined. The colors defined in this palette are OK for coloring pads, labels.
   <p>
   <pre>
   index 0->9   : grey colors from light to dark grey
   index 10->19 : "brown" colors
   index 20->29 : "blueish" colors
   index 30->39 : "redish" colors
   index 40->49 : basic colors
   </pre>
   <p>
   <tt>if ncolors == 1 && colors == 0</tt>, then a Pretty Palette with a
   Spectrum Violet->Red is created with 50 colors. That's the default rain bow
   palette.
   <p>
   Other prefined palettes with 255 colors are available when <tt>colors == 0</tt>.
   The following value of <tt>ncolors</tt> give access to:
   <p>
   <pre>
   if ncolors = 51 and colors=0, a Deep Sea palette is used.
   if ncolors = 52 and colors=0, a Grey Scale palette is used.
   if ncolors = 53 and colors=0, a Dark Body Radiator palette is used.
   if ncolors = 54 and colors=0, a two-color hue palette palette is used.(dark blue through neutral gray to bright yellow)
   if ncolors = 55 and colors=0, a Rain Bow palette is used.
   if ncolors = 56 and colors=0, an inverted Dark Body Radiator palette is used.
   </pre>
   (see TColor::CreateGradientColorTable for more details)
   <p>
   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.
   <p>
   Note that when drawing a 2D histogram <tt>h2</tt> 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 <tt>n</tt> specified with:
   <tt>h2->SetContour(n)</tt>
   End_html */

   Int_t i;
   static Int_t paletteType = 0;
   Int_t palette[50] = {19,18,17,16,15,14,13,12,11,20,
                        21,22,23,24,25,26,27,28,29,30, 8,
                        31,32,33,34,35,36,37,38,39,40, 9,
                        41,42,43,44,45,47,48,49,46,50, 2,
                         7, 6, 5, 4, 3, 2,1};
   // set default palette (pad type)
   if (ncolors <= 0) {
      ncolors = 50;
      fgPalette.Set(ncolors);
      for (i=0;i<ncolors;i++) fgPalette.fArray[i] = palette[i];
      paletteType = 1;
      return;
   }

   // set Pretty Palette Spectrum Violet->Red
   if (ncolors == 1 && colors == 0) {
      ncolors = 50;
      fgPalette.Set(ncolors);
      for (i=0;i<ncolors;i++) fgPalette.fArray[i] = 51+i;
      paletteType = 2;
      return;
   }

   // set Deep Sea palette
   if (ncolors == 51 && colors == 0) {
      TColor::InitializeColors();
      if (paletteType == 3) return;
      const Int_t nRGBs = 5;
      Double_t stops[nRGBs] = { 0.00, 0.34, 0.61, 0.84, 1.00 };
      Double_t red[nRGBs]   = { 0.00, 0.09, 0.18, 0.09, 0.00 };
      Double_t green[nRGBs] = { 0.01, 0.02, 0.39, 0.68, 0.97 };
      Double_t blue[nRGBs]  = { 0.17, 0.39, 0.62, 0.79, 0.97 };
      TColor::CreateGradientColorTable(nRGBs, stops, red, green, blue, 255, alpha);
      paletteType = 3;
      return;
   }

   // set Grey Scale palette
   if (ncolors == 52 && colors == 0) {
      TColor::InitializeColors();
      if (paletteType == 4) return;
      const Int_t nRGBs = 3;
      Double_t stops[nRGBs] = { 0.00, 0.50, 1.00};
      Double_t red[nRGBs]   = { 0.00, 0.50, 1.00};
      Double_t green[nRGBs] = { 0.00, 0.50, 1.00};
      Double_t blue[nRGBs]  = { 0.00, 0.50, 1.00};
      TColor::CreateGradientColorTable(nRGBs, stops, red, green, blue, 255, alpha);
      paletteType = 4;
      return;
   }

   // set Dark Body Radiator palette
   if (ncolors == 53 && colors == 0) {
      TColor::InitializeColors();
      if (paletteType == 5) return;
      const Int_t nRGBs = 5;
      Double_t stops[nRGBs] = { 0.00, 0.25, 0.50, 0.75, 1.00};
      Double_t red[nRGBs]   = { 0.00, 0.50, 1.00, 1.00, 1.00};
      Double_t green[nRGBs] = { 0.00, 0.00, 0.55, 1.00, 1.00};
      Double_t blue[nRGBs]  = { 0.00, 0.00, 0.00, 0.00, 1.00};
      TColor::CreateGradientColorTable(nRGBs, stops, red, green, blue, 255, alpha);
      paletteType = 5;
      return;
   }

   // set two-color hue palette (dark blue through neutral gray to bright yellow)
   if (ncolors == 54 && colors == 0) {
      TColor::InitializeColors();
      if (paletteType == 6) return;
      const Int_t nRGBs = 3;
      Double_t stops[nRGBs] = { 0.00, 0.50, 1.00};
      Double_t red[nRGBs]   = { 0.00, 0.50, 1.00};
      Double_t green[nRGBs] = { 0.00, 0.50, 1.00};
      Double_t blue[nRGBs]  = { 0.50, 0.50, 0.00};
      TColor::CreateGradientColorTable(nRGBs, stops, red, green, blue, 255, alpha);
      paletteType = 6;
      return;
   }

   // set Rain Bow palette
   if (ncolors == 55 && colors == 0) {
      TColor::InitializeColors();
      if (paletteType == 7) return;
      const Int_t nRGBs = 5;
      Double_t stops[nRGBs] = { 0.00, 0.34, 0.61, 0.84, 1.00 };
      Double_t red[nRGBs]   = { 0.00, 0.00, 0.87, 1.00, 0.51 };
      Double_t green[nRGBs] = { 0.00, 0.81, 1.00, 0.20, 0.00 };
      Double_t blue[nRGBs]  = { 0.51, 1.00, 0.12, 0.00, 0.00 };
      TColor::CreateGradientColorTable(nRGBs, stops, red, green, blue, 255, alpha);
      paletteType = 7;
      return;
   }

   // set Inverted Dark Body Radiator palette
   if (ncolors == 56 && colors == 0) {
      TColor::InitializeColors();
      if (paletteType == 8) return;
      const Int_t nRGBs = 5;
      Double_t stops[nRGBs] = { 0.00, 0.25, 0.50, 0.75, 1.00};
      Double_t red[nRGBs]   = { 1.00, 1.00, 1.00, 0.50, 0.00};
      Double_t green[nRGBs] = { 1.00, 1.00, 0.55, 0.00, 0.00};
      Double_t blue[nRGBs]  = { 1.00, 0.00, 0.00, 0.00, 0.00};
      TColor::CreateGradientColorTable(nRGBs, stops, red, green, blue, 255, alpha);
      paletteType = 8;
      return;
   }

   // set user defined palette
   fgPalette.Set(ncolors);
   if (colors)  for (i=0;i<ncolors;i++) fgPalette.fArray[i] = colors[i];
   else         for (i=0;i<ncolors;i++) fgPalette.fArray[i] = palette[i];
   paletteType = 9;
}

 TColor.cxx:1
 TColor.cxx:2
 TColor.cxx:3
 TColor.cxx:4
 TColor.cxx:5
 TColor.cxx:6
 TColor.cxx:7
 TColor.cxx:8
 TColor.cxx:9
 TColor.cxx:10
 TColor.cxx:11
 TColor.cxx:12
 TColor.cxx:13
 TColor.cxx:14
 TColor.cxx:15
 TColor.cxx:16
 TColor.cxx:17
 TColor.cxx:18
 TColor.cxx:19
 TColor.cxx:20
 TColor.cxx:21
 TColor.cxx:22
 TColor.cxx:23
 TColor.cxx:24
 TColor.cxx:25
 TColor.cxx:26
 TColor.cxx:27
 TColor.cxx:28
 TColor.cxx:29
 TColor.cxx:30
 TColor.cxx:31
 TColor.cxx:32
 TColor.cxx:33
 TColor.cxx:34
 TColor.cxx:35
 TColor.cxx:36
 TColor.cxx:37
 TColor.cxx:38
 TColor.cxx:39
 TColor.cxx:40
 TColor.cxx:41
 TColor.cxx:42
 TColor.cxx:43
 TColor.cxx:44
 TColor.cxx:45
 TColor.cxx:46
 TColor.cxx:47
 TColor.cxx:48
 TColor.cxx:49
 TColor.cxx:50
 TColor.cxx:51
 TColor.cxx:52
 TColor.cxx:53
 TColor.cxx:54
 TColor.cxx:55
 TColor.cxx:56
 TColor.cxx:57
 TColor.cxx:58
 TColor.cxx:59
 TColor.cxx:60
 TColor.cxx:61
 TColor.cxx:62
 TColor.cxx:63
 TColor.cxx:64
 TColor.cxx:65
 TColor.cxx:66
 TColor.cxx:67
 TColor.cxx:68
 TColor.cxx:69
 TColor.cxx:70
 TColor.cxx:71
 TColor.cxx:72
 TColor.cxx:73
 TColor.cxx:74
 TColor.cxx:75
 TColor.cxx:76
 TColor.cxx:77
 TColor.cxx:78
 TColor.cxx:79
 TColor.cxx:80
 TColor.cxx:81
 TColor.cxx:82
 TColor.cxx:83
 TColor.cxx:84
 TColor.cxx:85
 TColor.cxx:86
 TColor.cxx:87
 TColor.cxx:88
 TColor.cxx:89
 TColor.cxx:90
 TColor.cxx:91
 TColor.cxx:92
 TColor.cxx:93
 TColor.cxx:94
 TColor.cxx:95
 TColor.cxx:96
 TColor.cxx:97
 TColor.cxx:98
 TColor.cxx:99
 TColor.cxx:100
 TColor.cxx:101
 TColor.cxx:102
 TColor.cxx:103
 TColor.cxx:104
 TColor.cxx:105
 TColor.cxx:106
 TColor.cxx:107
 TColor.cxx:108
 TColor.cxx:109
 TColor.cxx:110
 TColor.cxx:111
 TColor.cxx:112
 TColor.cxx:113
 TColor.cxx:114
 TColor.cxx:115
 TColor.cxx:116
 TColor.cxx:117
 TColor.cxx:118
 TColor.cxx:119
 TColor.cxx:120
 TColor.cxx:121
 TColor.cxx:122
 TColor.cxx:123
 TColor.cxx:124
 TColor.cxx:125
 TColor.cxx:126
 TColor.cxx:127
 TColor.cxx:128
 TColor.cxx:129
 TColor.cxx:130
 TColor.cxx:131
 TColor.cxx:132
 TColor.cxx:133
 TColor.cxx:134
 TColor.cxx:135
 TColor.cxx:136
 TColor.cxx:137
 TColor.cxx:138
 TColor.cxx:139
 TColor.cxx:140
 TColor.cxx:141
 TColor.cxx:142
 TColor.cxx:143
 TColor.cxx:144
 TColor.cxx:145
 TColor.cxx:146
 TColor.cxx:147
 TColor.cxx:148
 TColor.cxx:149
 TColor.cxx:150
 TColor.cxx:151
 TColor.cxx:152
 TColor.cxx:153
 TColor.cxx:154
 TColor.cxx:155
 TColor.cxx:156
 TColor.cxx:157
 TColor.cxx:158
 TColor.cxx:159
 TColor.cxx:160
 TColor.cxx:161
 TColor.cxx:162
 TColor.cxx:163
 TColor.cxx:164
 TColor.cxx:165
 TColor.cxx:166
 TColor.cxx:167
 TColor.cxx:168
 TColor.cxx:169
 TColor.cxx:170
 TColor.cxx:171
 TColor.cxx:172
 TColor.cxx:173
 TColor.cxx:174
 TColor.cxx:175
 TColor.cxx:176
 TColor.cxx:177
 TColor.cxx:178
 TColor.cxx:179
 TColor.cxx:180
 TColor.cxx:181
 TColor.cxx:182
 TColor.cxx:183
 TColor.cxx:184
 TColor.cxx:185
 TColor.cxx:186
 TColor.cxx:187
 TColor.cxx:188
 TColor.cxx:189
 TColor.cxx:190
 TColor.cxx:191
 TColor.cxx:192
 TColor.cxx:193
 TColor.cxx:194
 TColor.cxx:195
 TColor.cxx:196
 TColor.cxx:197
 TColor.cxx:198
 TColor.cxx:199
 TColor.cxx:200
 TColor.cxx:201
 TColor.cxx:202
 TColor.cxx:203
 TColor.cxx:204
 TColor.cxx:205
 TColor.cxx:206
 TColor.cxx:207
 TColor.cxx:208
 TColor.cxx:209
 TColor.cxx:210
 TColor.cxx:211
 TColor.cxx:212
 TColor.cxx:213
 TColor.cxx:214
 TColor.cxx:215
 TColor.cxx:216
 TColor.cxx:217
 TColor.cxx:218
 TColor.cxx:219
 TColor.cxx:220
 TColor.cxx:221
 TColor.cxx:222
 TColor.cxx:223
 TColor.cxx:224
 TColor.cxx:225
 TColor.cxx:226
 TColor.cxx:227
 TColor.cxx:228
 TColor.cxx:229
 TColor.cxx:230
 TColor.cxx:231
 TColor.cxx:232
 TColor.cxx:233
 TColor.cxx:234
 TColor.cxx:235
 TColor.cxx:236
 TColor.cxx:237
 TColor.cxx:238
 TColor.cxx:239
 TColor.cxx:240
 TColor.cxx:241
 TColor.cxx:242
 TColor.cxx:243
 TColor.cxx:244
 TColor.cxx:245
 TColor.cxx:246
 TColor.cxx:247
 TColor.cxx:248
 TColor.cxx:249
 TColor.cxx:250
 TColor.cxx:251
 TColor.cxx:252
 TColor.cxx:253
 TColor.cxx:254
 TColor.cxx:255
 TColor.cxx:256
 TColor.cxx:257
 TColor.cxx:258
 TColor.cxx:259
 TColor.cxx:260
 TColor.cxx:261
 TColor.cxx:262
 TColor.cxx:263
 TColor.cxx:264
 TColor.cxx:265
 TColor.cxx:266
 TColor.cxx:267
 TColor.cxx:268
 TColor.cxx:269
 TColor.cxx:270
 TColor.cxx:271
 TColor.cxx:272
 TColor.cxx:273
 TColor.cxx:274
 TColor.cxx:275
 TColor.cxx:276
 TColor.cxx:277
 TColor.cxx:278
 TColor.cxx:279
 TColor.cxx:280
 TColor.cxx:281
 TColor.cxx:282
 TColor.cxx:283
 TColor.cxx:284
 TColor.cxx:285
 TColor.cxx:286
 TColor.cxx:287
 TColor.cxx:288
 TColor.cxx:289
 TColor.cxx:290
 TColor.cxx:291
 TColor.cxx:292
 TColor.cxx:293
 TColor.cxx:294
 TColor.cxx:295
 TColor.cxx:296
 TColor.cxx:297
 TColor.cxx:298
 TColor.cxx:299
 TColor.cxx:300
 TColor.cxx:301
 TColor.cxx:302
 TColor.cxx:303
 TColor.cxx:304
 TColor.cxx:305
 TColor.cxx:306
 TColor.cxx:307
 TColor.cxx:308
 TColor.cxx:309
 TColor.cxx:310
 TColor.cxx:311
 TColor.cxx:312
 TColor.cxx:313
 TColor.cxx:314
 TColor.cxx:315
 TColor.cxx:316
 TColor.cxx:317
 TColor.cxx:318
 TColor.cxx:319
 TColor.cxx:320
 TColor.cxx:321
 TColor.cxx:322
 TColor.cxx:323
 TColor.cxx:324
 TColor.cxx:325
 TColor.cxx:326
 TColor.cxx:327
 TColor.cxx:328
 TColor.cxx:329
 TColor.cxx:330
 TColor.cxx:331
 TColor.cxx:332
 TColor.cxx:333
 TColor.cxx:334
 TColor.cxx:335
 TColor.cxx:336
 TColor.cxx:337
 TColor.cxx:338
 TColor.cxx:339
 TColor.cxx:340
 TColor.cxx:341
 TColor.cxx:342
 TColor.cxx:343
 TColor.cxx:344
 TColor.cxx:345
 TColor.cxx:346
 TColor.cxx:347
 TColor.cxx:348
 TColor.cxx:349
 TColor.cxx:350
 TColor.cxx:351
 TColor.cxx:352
 TColor.cxx:353
 TColor.cxx:354
 TColor.cxx:355
 TColor.cxx:356
 TColor.cxx:357
 TColor.cxx:358
 TColor.cxx:359
 TColor.cxx:360
 TColor.cxx:361
 TColor.cxx:362
 TColor.cxx:363
 TColor.cxx:364
 TColor.cxx:365
 TColor.cxx:366
 TColor.cxx:367
 TColor.cxx:368
 TColor.cxx:369
 TColor.cxx:370
 TColor.cxx:371
 TColor.cxx:372
 TColor.cxx:373
 TColor.cxx:374
 TColor.cxx:375
 TColor.cxx:376
 TColor.cxx:377
 TColor.cxx:378
 TColor.cxx:379
 TColor.cxx:380
 TColor.cxx:381
 TColor.cxx:382
 TColor.cxx:383
 TColor.cxx:384
 TColor.cxx:385
 TColor.cxx:386
 TColor.cxx:387
 TColor.cxx:388
 TColor.cxx:389
 TColor.cxx:390
 TColor.cxx:391
 TColor.cxx:392
 TColor.cxx:393
 TColor.cxx:394
 TColor.cxx:395
 TColor.cxx:396
 TColor.cxx:397
 TColor.cxx:398
 TColor.cxx:399
 TColor.cxx:400
 TColor.cxx:401
 TColor.cxx:402
 TColor.cxx:403
 TColor.cxx:404
 TColor.cxx:405
 TColor.cxx:406
 TColor.cxx:407
 TColor.cxx:408
 TColor.cxx:409
 TColor.cxx:410
 TColor.cxx:411
 TColor.cxx:412
 TColor.cxx:413
 TColor.cxx:414
 TColor.cxx:415
 TColor.cxx:416
 TColor.cxx:417
 TColor.cxx:418
 TColor.cxx:419
 TColor.cxx:420
 TColor.cxx:421
 TColor.cxx:422
 TColor.cxx:423
 TColor.cxx:424
 TColor.cxx:425
 TColor.cxx:426
 TColor.cxx:427
 TColor.cxx:428
 TColor.cxx:429
 TColor.cxx:430
 TColor.cxx:431
 TColor.cxx:432
 TColor.cxx:433
 TColor.cxx:434
 TColor.cxx:435
 TColor.cxx:436
 TColor.cxx:437
 TColor.cxx:438
 TColor.cxx:439
 TColor.cxx:440
 TColor.cxx:441
 TColor.cxx:442
 TColor.cxx:443
 TColor.cxx:444
 TColor.cxx:445
 TColor.cxx:446
 TColor.cxx:447
 TColor.cxx:448
 TColor.cxx:449
 TColor.cxx:450
 TColor.cxx:451
 TColor.cxx:452
 TColor.cxx:453
 TColor.cxx:454
 TColor.cxx:455
 TColor.cxx:456
 TColor.cxx:457
 TColor.cxx:458
 TColor.cxx:459
 TColor.cxx:460
 TColor.cxx:461
 TColor.cxx:462
 TColor.cxx:463
 TColor.cxx:464
 TColor.cxx:465
 TColor.cxx:466
 TColor.cxx:467
 TColor.cxx:468
 TColor.cxx:469
 TColor.cxx:470
 TColor.cxx:471
 TColor.cxx:472
 TColor.cxx:473
 TColor.cxx:474
 TColor.cxx:475
 TColor.cxx:476
 TColor.cxx:477
 TColor.cxx:478
 TColor.cxx:479
 TColor.cxx:480
 TColor.cxx:481
 TColor.cxx:482
 TColor.cxx:483
 TColor.cxx:484
 TColor.cxx:485
 TColor.cxx:486
 TColor.cxx:487
 TColor.cxx:488
 TColor.cxx:489
 TColor.cxx:490
 TColor.cxx:491
 TColor.cxx:492
 TColor.cxx:493
 TColor.cxx:494
 TColor.cxx:495
 TColor.cxx:496
 TColor.cxx:497
 TColor.cxx:498
 TColor.cxx:499
 TColor.cxx:500
 TColor.cxx:501
 TColor.cxx:502
 TColor.cxx:503
 TColor.cxx:504
 TColor.cxx:505
 TColor.cxx:506
 TColor.cxx:507
 TColor.cxx:508
 TColor.cxx:509
 TColor.cxx:510
 TColor.cxx:511
 TColor.cxx:512
 TColor.cxx:513
 TColor.cxx:514
 TColor.cxx:515
 TColor.cxx:516
 TColor.cxx:517
 TColor.cxx:518
 TColor.cxx:519
 TColor.cxx:520
 TColor.cxx:521
 TColor.cxx:522
 TColor.cxx:523
 TColor.cxx:524
 TColor.cxx:525
 TColor.cxx:526
 TColor.cxx:527
 TColor.cxx:528
 TColor.cxx:529
 TColor.cxx:530
 TColor.cxx:531
 TColor.cxx:532
 TColor.cxx:533
 TColor.cxx:534
 TColor.cxx:535
 TColor.cxx:536
 TColor.cxx:537
 TColor.cxx:538
 TColor.cxx:539
 TColor.cxx:540
 TColor.cxx:541
 TColor.cxx:542
 TColor.cxx:543
 TColor.cxx:544
 TColor.cxx:545
 TColor.cxx:546
 TColor.cxx:547
 TColor.cxx:548
 TColor.cxx:549
 TColor.cxx:550
 TColor.cxx:551
 TColor.cxx:552
 TColor.cxx:553
 TColor.cxx:554
 TColor.cxx:555
 TColor.cxx:556
 TColor.cxx:557
 TColor.cxx:558
 TColor.cxx:559
 TColor.cxx:560
 TColor.cxx:561
 TColor.cxx:562
 TColor.cxx:563
 TColor.cxx:564
 TColor.cxx:565
 TColor.cxx:566
 TColor.cxx:567
 TColor.cxx:568
 TColor.cxx:569
 TColor.cxx:570
 TColor.cxx:571
 TColor.cxx:572
 TColor.cxx:573
 TColor.cxx:574
 TColor.cxx:575
 TColor.cxx:576
 TColor.cxx:577
 TColor.cxx:578
 TColor.cxx:579
 TColor.cxx:580
 TColor.cxx:581
 TColor.cxx:582
 TColor.cxx:583
 TColor.cxx:584
 TColor.cxx:585
 TColor.cxx:586
 TColor.cxx:587
 TColor.cxx:588
 TColor.cxx:589
 TColor.cxx:590
 TColor.cxx:591
 TColor.cxx:592
 TColor.cxx:593
 TColor.cxx:594
 TColor.cxx:595
 TColor.cxx:596
 TColor.cxx:597
 TColor.cxx:598
 TColor.cxx:599
 TColor.cxx:600
 TColor.cxx:601
 TColor.cxx:602
 TColor.cxx:603
 TColor.cxx:604
 TColor.cxx:605
 TColor.cxx:606
 TColor.cxx:607
 TColor.cxx:608
 TColor.cxx:609
 TColor.cxx:610
 TColor.cxx:611
 TColor.cxx:612
 TColor.cxx:613
 TColor.cxx:614
 TColor.cxx:615
 TColor.cxx:616
 TColor.cxx:617
 TColor.cxx:618
 TColor.cxx:619
 TColor.cxx:620
 TColor.cxx:621
 TColor.cxx:622
 TColor.cxx:623
 TColor.cxx:624
 TColor.cxx:625
 TColor.cxx:626
 TColor.cxx:627
 TColor.cxx:628
 TColor.cxx:629
 TColor.cxx:630
 TColor.cxx:631
 TColor.cxx:632
 TColor.cxx:633
 TColor.cxx:634
 TColor.cxx:635
 TColor.cxx:636
 TColor.cxx:637
 TColor.cxx:638
 TColor.cxx:639
 TColor.cxx:640
 TColor.cxx:641
 TColor.cxx:642
 TColor.cxx:643
 TColor.cxx:644
 TColor.cxx:645
 TColor.cxx:646
 TColor.cxx:647
 TColor.cxx:648
 TColor.cxx:649
 TColor.cxx:650
 TColor.cxx:651
 TColor.cxx:652
 TColor.cxx:653
 TColor.cxx:654
 TColor.cxx:655
 TColor.cxx:656
 TColor.cxx:657
 TColor.cxx:658
 TColor.cxx:659
 TColor.cxx:660
 TColor.cxx:661
 TColor.cxx:662
 TColor.cxx:663
 TColor.cxx:664
 TColor.cxx:665
 TColor.cxx:666
 TColor.cxx:667
 TColor.cxx:668
 TColor.cxx:669
 TColor.cxx:670
 TColor.cxx:671
 TColor.cxx:672
 TColor.cxx:673
 TColor.cxx:674
 TColor.cxx:675
 TColor.cxx:676
 TColor.cxx:677
 TColor.cxx:678
 TColor.cxx:679
 TColor.cxx:680
 TColor.cxx:681
 TColor.cxx:682
 TColor.cxx:683
 TColor.cxx:684
 TColor.cxx:685
 TColor.cxx:686
 TColor.cxx:687
 TColor.cxx:688
 TColor.cxx:689
 TColor.cxx:690
 TColor.cxx:691
 TColor.cxx:692
 TColor.cxx:693
 TColor.cxx:694
 TColor.cxx:695
 TColor.cxx:696
 TColor.cxx:697
 TColor.cxx:698
 TColor.cxx:699
 TColor.cxx:700
 TColor.cxx:701
 TColor.cxx:702
 TColor.cxx:703
 TColor.cxx:704
 TColor.cxx:705
 TColor.cxx:706
 TColor.cxx:707
 TColor.cxx:708
 TColor.cxx:709
 TColor.cxx:710
 TColor.cxx:711
 TColor.cxx:712
 TColor.cxx:713
 TColor.cxx:714
 TColor.cxx:715
 TColor.cxx:716
 TColor.cxx:717
 TColor.cxx:718
 TColor.cxx:719
 TColor.cxx:720
 TColor.cxx:721
 TColor.cxx:722
 TColor.cxx:723
 TColor.cxx:724
 TColor.cxx:725
 TColor.cxx:726
 TColor.cxx:727
 TColor.cxx:728
 TColor.cxx:729
 TColor.cxx:730
 TColor.cxx:731
 TColor.cxx:732
 TColor.cxx:733
 TColor.cxx:734
 TColor.cxx:735
 TColor.cxx:736
 TColor.cxx:737
 TColor.cxx:738
 TColor.cxx:739
 TColor.cxx:740
 TColor.cxx:741
 TColor.cxx:742
 TColor.cxx:743
 TColor.cxx:744
 TColor.cxx:745
 TColor.cxx:746
 TColor.cxx:747
 TColor.cxx:748
 TColor.cxx:749
 TColor.cxx:750
 TColor.cxx:751
 TColor.cxx:752
 TColor.cxx:753
 TColor.cxx:754
 TColor.cxx:755
 TColor.cxx:756
 TColor.cxx:757
 TColor.cxx:758
 TColor.cxx:759
 TColor.cxx:760
 TColor.cxx:761
 TColor.cxx:762
 TColor.cxx:763
 TColor.cxx:764
 TColor.cxx:765
 TColor.cxx:766
 TColor.cxx:767
 TColor.cxx:768
 TColor.cxx:769
 TColor.cxx:770
 TColor.cxx:771
 TColor.cxx:772
 TColor.cxx:773
 TColor.cxx:774
 TColor.cxx:775
 TColor.cxx:776
 TColor.cxx:777
 TColor.cxx:778
 TColor.cxx:779
 TColor.cxx:780
 TColor.cxx:781
 TColor.cxx:782
 TColor.cxx:783
 TColor.cxx:784
 TColor.cxx:785
 TColor.cxx:786
 TColor.cxx:787
 TColor.cxx:788
 TColor.cxx:789
 TColor.cxx:790
 TColor.cxx:791
 TColor.cxx:792
 TColor.cxx:793
 TColor.cxx:794
 TColor.cxx:795
 TColor.cxx:796
 TColor.cxx:797
 TColor.cxx:798
 TColor.cxx:799
 TColor.cxx:800
 TColor.cxx:801
 TColor.cxx:802
 TColor.cxx:803
 TColor.cxx:804
 TColor.cxx:805
 TColor.cxx:806
 TColor.cxx:807
 TColor.cxx:808
 TColor.cxx:809
 TColor.cxx:810
 TColor.cxx:811
 TColor.cxx:812
 TColor.cxx:813
 TColor.cxx:814
 TColor.cxx:815
 TColor.cxx:816
 TColor.cxx:817
 TColor.cxx:818
 TColor.cxx:819
 TColor.cxx:820
 TColor.cxx:821
 TColor.cxx:822
 TColor.cxx:823
 TColor.cxx:824
 TColor.cxx:825
 TColor.cxx:826
 TColor.cxx:827
 TColor.cxx:828
 TColor.cxx:829
 TColor.cxx:830
 TColor.cxx:831
 TColor.cxx:832
 TColor.cxx:833
 TColor.cxx:834
 TColor.cxx:835
 TColor.cxx:836
 TColor.cxx:837
 TColor.cxx:838
 TColor.cxx:839
 TColor.cxx:840
 TColor.cxx:841
 TColor.cxx:842
 TColor.cxx:843
 TColor.cxx:844
 TColor.cxx:845
 TColor.cxx:846
 TColor.cxx:847
 TColor.cxx:848
 TColor.cxx:849
 TColor.cxx:850
 TColor.cxx:851
 TColor.cxx:852
 TColor.cxx:853
 TColor.cxx:854
 TColor.cxx:855
 TColor.cxx:856
 TColor.cxx:857
 TColor.cxx:858
 TColor.cxx:859
 TColor.cxx:860
 TColor.cxx:861
 TColor.cxx:862
 TColor.cxx:863
 TColor.cxx:864
 TColor.cxx:865
 TColor.cxx:866
 TColor.cxx:867
 TColor.cxx:868
 TColor.cxx:869
 TColor.cxx:870
 TColor.cxx:871
 TColor.cxx:872
 TColor.cxx:873
 TColor.cxx:874
 TColor.cxx:875
 TColor.cxx:876
 TColor.cxx:877
 TColor.cxx:878
 TColor.cxx:879
 TColor.cxx:880
 TColor.cxx:881
 TColor.cxx:882
 TColor.cxx:883
 TColor.cxx:884
 TColor.cxx:885
 TColor.cxx:886
 TColor.cxx:887
 TColor.cxx:888
 TColor.cxx:889
 TColor.cxx:890
 TColor.cxx:891
 TColor.cxx:892
 TColor.cxx:893
 TColor.cxx:894
 TColor.cxx:895
 TColor.cxx:896
 TColor.cxx:897
 TColor.cxx:898
 TColor.cxx:899
 TColor.cxx:900
 TColor.cxx:901
 TColor.cxx:902
 TColor.cxx:903
 TColor.cxx:904
 TColor.cxx:905
 TColor.cxx:906
 TColor.cxx:907
 TColor.cxx:908
 TColor.cxx:909
 TColor.cxx:910
 TColor.cxx:911
 TColor.cxx:912
 TColor.cxx:913
 TColor.cxx:914
 TColor.cxx:915
 TColor.cxx:916
 TColor.cxx:917
 TColor.cxx:918
 TColor.cxx:919
 TColor.cxx:920
 TColor.cxx:921
 TColor.cxx:922
 TColor.cxx:923
 TColor.cxx:924
 TColor.cxx:925
 TColor.cxx:926
 TColor.cxx:927
 TColor.cxx:928
 TColor.cxx:929
 TColor.cxx:930
 TColor.cxx:931
 TColor.cxx:932
 TColor.cxx:933
 TColor.cxx:934
 TColor.cxx:935
 TColor.cxx:936
 TColor.cxx:937
 TColor.cxx:938
 TColor.cxx:939
 TColor.cxx:940
 TColor.cxx:941
 TColor.cxx:942
 TColor.cxx:943
 TColor.cxx:944
 TColor.cxx:945
 TColor.cxx:946
 TColor.cxx:947
 TColor.cxx:948
 TColor.cxx:949
 TColor.cxx:950
 TColor.cxx:951
 TColor.cxx:952
 TColor.cxx:953
 TColor.cxx:954
 TColor.cxx:955
 TColor.cxx:956
 TColor.cxx:957
 TColor.cxx:958
 TColor.cxx:959
 TColor.cxx:960
 TColor.cxx:961
 TColor.cxx:962
 TColor.cxx:963
 TColor.cxx:964
 TColor.cxx:965
 TColor.cxx:966
 TColor.cxx:967
 TColor.cxx:968
 TColor.cxx:969
 TColor.cxx:970
 TColor.cxx:971
 TColor.cxx:972
 TColor.cxx:973
 TColor.cxx:974
 TColor.cxx:975
 TColor.cxx:976
 TColor.cxx:977
 TColor.cxx:978
 TColor.cxx:979
 TColor.cxx:980
 TColor.cxx:981
 TColor.cxx:982
 TColor.cxx:983
 TColor.cxx:984
 TColor.cxx:985
 TColor.cxx:986
 TColor.cxx:987
 TColor.cxx:988
 TColor.cxx:989
 TColor.cxx:990
 TColor.cxx:991
 TColor.cxx:992
 TColor.cxx:993
 TColor.cxx:994
 TColor.cxx:995
 TColor.cxx:996
 TColor.cxx:997
 TColor.cxx:998
 TColor.cxx:999
 TColor.cxx:1000
 TColor.cxx:1001
 TColor.cxx:1002
 TColor.cxx:1003
 TColor.cxx:1004
 TColor.cxx:1005
 TColor.cxx:1006
 TColor.cxx:1007
 TColor.cxx:1008
 TColor.cxx:1009
 TColor.cxx:1010
 TColor.cxx:1011
 TColor.cxx:1012
 TColor.cxx:1013
 TColor.cxx:1014
 TColor.cxx:1015
 TColor.cxx:1016
 TColor.cxx:1017
 TColor.cxx:1018
 TColor.cxx:1019
 TColor.cxx:1020
 TColor.cxx:1021
 TColor.cxx:1022
 TColor.cxx:1023
 TColor.cxx:1024
 TColor.cxx:1025
 TColor.cxx:1026
 TColor.cxx:1027
 TColor.cxx:1028
 TColor.cxx:1029
 TColor.cxx:1030
 TColor.cxx:1031
 TColor.cxx:1032
 TColor.cxx:1033
 TColor.cxx:1034
 TColor.cxx:1035
 TColor.cxx:1036
 TColor.cxx:1037
 TColor.cxx:1038
 TColor.cxx:1039
 TColor.cxx:1040
 TColor.cxx:1041
 TColor.cxx:1042
 TColor.cxx:1043
 TColor.cxx:1044
 TColor.cxx:1045
 TColor.cxx:1046
 TColor.cxx:1047
 TColor.cxx:1048
 TColor.cxx:1049
 TColor.cxx:1050
 TColor.cxx:1051
 TColor.cxx:1052
 TColor.cxx:1053
 TColor.cxx:1054
 TColor.cxx:1055
 TColor.cxx:1056
 TColor.cxx:1057
 TColor.cxx:1058
 TColor.cxx:1059
 TColor.cxx:1060
 TColor.cxx:1061
 TColor.cxx:1062
 TColor.cxx:1063
 TColor.cxx:1064
 TColor.cxx:1065
 TColor.cxx:1066
 TColor.cxx:1067
 TColor.cxx:1068
 TColor.cxx:1069
 TColor.cxx:1070
 TColor.cxx:1071
 TColor.cxx:1072
 TColor.cxx:1073
 TColor.cxx:1074
 TColor.cxx:1075
 TColor.cxx:1076
 TColor.cxx:1077
 TColor.cxx:1078
 TColor.cxx:1079
 TColor.cxx:1080
 TColor.cxx:1081
 TColor.cxx:1082
 TColor.cxx:1083
 TColor.cxx:1084
 TColor.cxx:1085
 TColor.cxx:1086
 TColor.cxx:1087
 TColor.cxx:1088
 TColor.cxx:1089
 TColor.cxx:1090
 TColor.cxx:1091
 TColor.cxx:1092
 TColor.cxx:1093
 TColor.cxx:1094
 TColor.cxx:1095
 TColor.cxx:1096
 TColor.cxx:1097
 TColor.cxx:1098
 TColor.cxx:1099
 TColor.cxx:1100
 TColor.cxx:1101
 TColor.cxx:1102
 TColor.cxx:1103
 TColor.cxx:1104
 TColor.cxx:1105
 TColor.cxx:1106
 TColor.cxx:1107
 TColor.cxx:1108
 TColor.cxx:1109
 TColor.cxx:1110
 TColor.cxx:1111
 TColor.cxx:1112
 TColor.cxx:1113
 TColor.cxx:1114
 TColor.cxx:1115
 TColor.cxx:1116
 TColor.cxx:1117
 TColor.cxx:1118
 TColor.cxx:1119
 TColor.cxx:1120
 TColor.cxx:1121
 TColor.cxx:1122
 TColor.cxx:1123
 TColor.cxx:1124
 TColor.cxx:1125
 TColor.cxx:1126
 TColor.cxx:1127
 TColor.cxx:1128
 TColor.cxx:1129
 TColor.cxx:1130
 TColor.cxx:1131
 TColor.cxx:1132
 TColor.cxx:1133
 TColor.cxx:1134
 TColor.cxx:1135
 TColor.cxx:1136
 TColor.cxx:1137
 TColor.cxx:1138
 TColor.cxx:1139
 TColor.cxx:1140
 TColor.cxx:1141
 TColor.cxx:1142
 TColor.cxx:1143
 TColor.cxx:1144
 TColor.cxx:1145
 TColor.cxx:1146
 TColor.cxx:1147
 TColor.cxx:1148
 TColor.cxx:1149
 TColor.cxx:1150
 TColor.cxx:1151
 TColor.cxx:1152
 TColor.cxx:1153
 TColor.cxx:1154
 TColor.cxx:1155
 TColor.cxx:1156
 TColor.cxx:1157
 TColor.cxx:1158
 TColor.cxx:1159
 TColor.cxx:1160
 TColor.cxx:1161
 TColor.cxx:1162
 TColor.cxx:1163
 TColor.cxx:1164
 TColor.cxx:1165
 TColor.cxx:1166
 TColor.cxx:1167
 TColor.cxx:1168
 TColor.cxx:1169
 TColor.cxx:1170
 TColor.cxx:1171
 TColor.cxx:1172
 TColor.cxx:1173
 TColor.cxx:1174
 TColor.cxx:1175
 TColor.cxx:1176
 TColor.cxx:1177
 TColor.cxx:1178
 TColor.cxx:1179
 TColor.cxx:1180
 TColor.cxx:1181
 TColor.cxx:1182
 TColor.cxx:1183
 TColor.cxx:1184
 TColor.cxx:1185
 TColor.cxx:1186
 TColor.cxx:1187
 TColor.cxx:1188
 TColor.cxx:1189
 TColor.cxx:1190
 TColor.cxx:1191
 TColor.cxx:1192
 TColor.cxx:1193
 TColor.cxx:1194
 TColor.cxx:1195
 TColor.cxx:1196
 TColor.cxx:1197
 TColor.cxx:1198
 TColor.cxx:1199
 TColor.cxx:1200
 TColor.cxx:1201
 TColor.cxx:1202
 TColor.cxx:1203
 TColor.cxx:1204
 TColor.cxx:1205
 TColor.cxx:1206
 TColor.cxx:1207
 TColor.cxx:1208
 TColor.cxx:1209
 TColor.cxx:1210
 TColor.cxx:1211
 TColor.cxx:1212
 TColor.cxx:1213
 TColor.cxx:1214
 TColor.cxx:1215
 TColor.cxx:1216
 TColor.cxx:1217
 TColor.cxx:1218
 TColor.cxx:1219
 TColor.cxx:1220
 TColor.cxx:1221
 TColor.cxx:1222
 TColor.cxx:1223
 TColor.cxx:1224
 TColor.cxx:1225
 TColor.cxx:1226
 TColor.cxx:1227
 TColor.cxx:1228
 TColor.cxx:1229
 TColor.cxx:1230
 TColor.cxx:1231
 TColor.cxx:1232
 TColor.cxx:1233
 TColor.cxx:1234
 TColor.cxx:1235
 TColor.cxx:1236
 TColor.cxx:1237
 TColor.cxx:1238
 TColor.cxx:1239
 TColor.cxx:1240
 TColor.cxx:1241
 TColor.cxx:1242
 TColor.cxx:1243
 TColor.cxx:1244
 TColor.cxx:1245
 TColor.cxx:1246
 TColor.cxx:1247
 TColor.cxx:1248
 TColor.cxx:1249
 TColor.cxx:1250
 TColor.cxx:1251
 TColor.cxx:1252
 TColor.cxx:1253
 TColor.cxx:1254
 TColor.cxx:1255
 TColor.cxx:1256
 TColor.cxx:1257
 TColor.cxx:1258
 TColor.cxx:1259
 TColor.cxx:1260
 TColor.cxx:1261
 TColor.cxx:1262
 TColor.cxx:1263
 TColor.cxx:1264
 TColor.cxx:1265
 TColor.cxx:1266
 TColor.cxx:1267
 TColor.cxx:1268
 TColor.cxx:1269
 TColor.cxx:1270
 TColor.cxx:1271
 TColor.cxx:1272
 TColor.cxx:1273
 TColor.cxx:1274
 TColor.cxx:1275
 TColor.cxx:1276
 TColor.cxx:1277
 TColor.cxx:1278
 TColor.cxx:1279
 TColor.cxx:1280
 TColor.cxx:1281
 TColor.cxx:1282
 TColor.cxx:1283
 TColor.cxx:1284
 TColor.cxx:1285
 TColor.cxx:1286
 TColor.cxx:1287
 TColor.cxx:1288
 TColor.cxx:1289
 TColor.cxx:1290
 TColor.cxx:1291
 TColor.cxx:1292
 TColor.cxx:1293
 TColor.cxx:1294
 TColor.cxx:1295
 TColor.cxx:1296
 TColor.cxx:1297
 TColor.cxx:1298
 TColor.cxx:1299
 TColor.cxx:1300
 TColor.cxx:1301
 TColor.cxx:1302
 TColor.cxx:1303
 TColor.cxx:1304
 TColor.cxx:1305
 TColor.cxx:1306
 TColor.cxx:1307
 TColor.cxx:1308
 TColor.cxx:1309
 TColor.cxx:1310
 TColor.cxx:1311
 TColor.cxx:1312
 TColor.cxx:1313
 TColor.cxx:1314
 TColor.cxx:1315
 TColor.cxx:1316
 TColor.cxx:1317
 TColor.cxx:1318
 TColor.cxx:1319
 TColor.cxx:1320
 TColor.cxx:1321
 TColor.cxx:1322
 TColor.cxx:1323
 TColor.cxx:1324
 TColor.cxx:1325
 TColor.cxx:1326
 TColor.cxx:1327
 TColor.cxx:1328
 TColor.cxx:1329
 TColor.cxx:1330
 TColor.cxx:1331
 TColor.cxx:1332
 TColor.cxx:1333
 TColor.cxx:1334
 TColor.cxx:1335
 TColor.cxx:1336
 TColor.cxx:1337
 TColor.cxx:1338
 TColor.cxx:1339
 TColor.cxx:1340
 TColor.cxx:1341
 TColor.cxx:1342
 TColor.cxx:1343
 TColor.cxx:1344
 TColor.cxx:1345
 TColor.cxx:1346
 TColor.cxx:1347
 TColor.cxx:1348
 TColor.cxx:1349
 TColor.cxx:1350
 TColor.cxx:1351
 TColor.cxx:1352
 TColor.cxx:1353
 TColor.cxx:1354
 TColor.cxx:1355
 TColor.cxx:1356
 TColor.cxx:1357
 TColor.cxx:1358
 TColor.cxx:1359
 TColor.cxx:1360
 TColor.cxx:1361
 TColor.cxx:1362
 TColor.cxx:1363
 TColor.cxx:1364
 TColor.cxx:1365
 TColor.cxx:1366
 TColor.cxx:1367
 TColor.cxx:1368
 TColor.cxx:1369
 TColor.cxx:1370
 TColor.cxx:1371
 TColor.cxx:1372
 TColor.cxx:1373
 TColor.cxx:1374
 TColor.cxx:1375
 TColor.cxx:1376
 TColor.cxx:1377
 TColor.cxx:1378
 TColor.cxx:1379
 TColor.cxx:1380
 TColor.cxx:1381
 TColor.cxx:1382
 TColor.cxx:1383
 TColor.cxx:1384
 TColor.cxx:1385
 TColor.cxx:1386
 TColor.cxx:1387
 TColor.cxx:1388
 TColor.cxx:1389
 TColor.cxx:1390
 TColor.cxx:1391
 TColor.cxx:1392
 TColor.cxx:1393
 TColor.cxx:1394
 TColor.cxx:1395
 TColor.cxx:1396
 TColor.cxx:1397
 TColor.cxx:1398
 TColor.cxx:1399
 TColor.cxx:1400
 TColor.cxx:1401
 TColor.cxx:1402
 TColor.cxx:1403
 TColor.cxx:1404
 TColor.cxx:1405
 TColor.cxx:1406
 TColor.cxx:1407
 TColor.cxx:1408
 TColor.cxx:1409
 TColor.cxx:1410
 TColor.cxx:1411
 TColor.cxx:1412
 TColor.cxx:1413
 TColor.cxx:1414
 TColor.cxx:1415
 TColor.cxx:1416
 TColor.cxx:1417
 TColor.cxx:1418
 TColor.cxx:1419
 TColor.cxx:1420
 TColor.cxx:1421
 TColor.cxx:1422
 TColor.cxx:1423
 TColor.cxx:1424
 TColor.cxx:1425
 TColor.cxx:1426
 TColor.cxx:1427
 TColor.cxx:1428
 TColor.cxx:1429
 TColor.cxx:1430
 TColor.cxx:1431
 TColor.cxx:1432
 TColor.cxx:1433
 TColor.cxx:1434
 TColor.cxx:1435
 TColor.cxx:1436
 TColor.cxx:1437
 TColor.cxx:1438
 TColor.cxx:1439
 TColor.cxx:1440
 TColor.cxx:1441
 TColor.cxx:1442
 TColor.cxx:1443
 TColor.cxx:1444
 TColor.cxx:1445
 TColor.cxx:1446
 TColor.cxx:1447
 TColor.cxx:1448
 TColor.cxx:1449
 TColor.cxx:1450
 TColor.cxx:1451
 TColor.cxx:1452
 TColor.cxx:1453
 TColor.cxx:1454
 TColor.cxx:1455
 TColor.cxx:1456
 TColor.cxx:1457
 TColor.cxx:1458
 TColor.cxx:1459
 TColor.cxx:1460
 TColor.cxx:1461
 TColor.cxx:1462
 TColor.cxx:1463
 TColor.cxx:1464
 TColor.cxx:1465
 TColor.cxx:1466
 TColor.cxx:1467
 TColor.cxx:1468
 TColor.cxx:1469
 TColor.cxx:1470
 TColor.cxx:1471
 TColor.cxx:1472
 TColor.cxx:1473
 TColor.cxx:1474
 TColor.cxx:1475
 TColor.cxx:1476
 TColor.cxx:1477
 TColor.cxx:1478
 TColor.cxx:1479
 TColor.cxx:1480
 TColor.cxx:1481
 TColor.cxx:1482
 TColor.cxx:1483
 TColor.cxx:1484
 TColor.cxx:1485
 TColor.cxx:1486
 TColor.cxx:1487
 TColor.cxx:1488
 TColor.cxx:1489
 TColor.cxx:1490
 TColor.cxx:1491
 TColor.cxx:1492
 TColor.cxx:1493
 TColor.cxx:1494
 TColor.cxx:1495
 TColor.cxx:1496
 TColor.cxx:1497
 TColor.cxx:1498
 TColor.cxx:1499
 TColor.cxx:1500
 TColor.cxx:1501
 TColor.cxx:1502
 TColor.cxx:1503
 TColor.cxx:1504
 TColor.cxx:1505
 TColor.cxx:1506
 TColor.cxx:1507
 TColor.cxx:1508
 TColor.cxx:1509
 TColor.cxx:1510
 TColor.cxx:1511
 TColor.cxx:1512
 TColor.cxx:1513
 TColor.cxx:1514
 TColor.cxx:1515
 TColor.cxx:1516
 TColor.cxx:1517
 TColor.cxx:1518
 TColor.cxx:1519
 TColor.cxx:1520
 TColor.cxx:1521
 TColor.cxx:1522
 TColor.cxx:1523
 TColor.cxx:1524
 TColor.cxx:1525
 TColor.cxx:1526
 TColor.cxx:1527
 TColor.cxx:1528
 TColor.cxx:1529
 TColor.cxx:1530
 TColor.cxx:1531
 TColor.cxx:1532
 TColor.cxx:1533
 TColor.cxx:1534
 TColor.cxx:1535
 TColor.cxx:1536
 TColor.cxx:1537
 TColor.cxx:1538
 TColor.cxx:1539
 TColor.cxx:1540
 TColor.cxx:1541
 TColor.cxx:1542
 TColor.cxx:1543
 TColor.cxx:1544
 TColor.cxx:1545
 TColor.cxx:1546
 TColor.cxx:1547
 TColor.cxx:1548
 TColor.cxx:1549
 TColor.cxx:1550
 TColor.cxx:1551
 TColor.cxx:1552
 TColor.cxx:1553
 TColor.cxx:1554
 TColor.cxx:1555
 TColor.cxx:1556
 TColor.cxx:1557
 TColor.cxx:1558
 TColor.cxx:1559
 TColor.cxx:1560
 TColor.cxx:1561
 TColor.cxx:1562
 TColor.cxx:1563
 TColor.cxx:1564
 TColor.cxx:1565
 TColor.cxx:1566
 TColor.cxx:1567
 TColor.cxx:1568
 TColor.cxx:1569
 TColor.cxx:1570
 TColor.cxx:1571
 TColor.cxx:1572
 TColor.cxx:1573
 TColor.cxx:1574
 TColor.cxx:1575
 TColor.cxx:1576
 TColor.cxx:1577
 TColor.cxx:1578
 TColor.cxx:1579
 TColor.cxx:1580
 TColor.cxx:1581
 TColor.cxx:1582
 TColor.cxx:1583
 TColor.cxx:1584
 TColor.cxx:1585
 TColor.cxx:1586
 TColor.cxx:1587
 TColor.cxx:1588
 TColor.cxx:1589
 TColor.cxx:1590
 TColor.cxx:1591
 TColor.cxx:1592
 TColor.cxx:1593
 TColor.cxx:1594
 TColor.cxx:1595
 TColor.cxx:1596
 TColor.cxx:1597
 TColor.cxx:1598
 TColor.cxx:1599
 TColor.cxx:1600
 TColor.cxx:1601
 TColor.cxx:1602
 TColor.cxx:1603
 TColor.cxx:1604
 TColor.cxx:1605
 TColor.cxx:1606
 TColor.cxx:1607
 TColor.cxx:1608
 TColor.cxx:1609
 TColor.cxx:1610
 TColor.cxx:1611
 TColor.cxx:1612
 TColor.cxx:1613
 TColor.cxx:1614
 TColor.cxx:1615
 TColor.cxx:1616
 TColor.cxx:1617
 TColor.cxx:1618
 TColor.cxx:1619
 TColor.cxx:1620
 TColor.cxx:1621
 TColor.cxx:1622
 TColor.cxx:1623
 TColor.cxx:1624
 TColor.cxx:1625
 TColor.cxx:1626
 TColor.cxx:1627
 TColor.cxx:1628
 TColor.cxx:1629
 TColor.cxx:1630
 TColor.cxx:1631
 TColor.cxx:1632
 TColor.cxx:1633
 TColor.cxx:1634
 TColor.cxx:1635
 TColor.cxx:1636
 TColor.cxx:1637
 TColor.cxx:1638
 TColor.cxx:1639
 TColor.cxx:1640
 TColor.cxx:1641
 TColor.cxx:1642
 TColor.cxx:1643
 TColor.cxx:1644
 TColor.cxx:1645
 TColor.cxx:1646
 TColor.cxx:1647
 TColor.cxx:1648
 TColor.cxx:1649
 TColor.cxx:1650
 TColor.cxx:1651
 TColor.cxx:1652
 TColor.cxx:1653
 TColor.cxx:1654
 TColor.cxx:1655
 TColor.cxx:1656
 TColor.cxx:1657
 TColor.cxx:1658
 TColor.cxx:1659
 TColor.cxx:1660
 TColor.cxx:1661
 TColor.cxx:1662
 TColor.cxx:1663
 TColor.cxx:1664
 TColor.cxx:1665
 TColor.cxx:1666
 TColor.cxx:1667
 TColor.cxx:1668
 TColor.cxx:1669
 TColor.cxx:1670
 TColor.cxx:1671
 TColor.cxx:1672
 TColor.cxx:1673
 TColor.cxx:1674
 TColor.cxx:1675
 TColor.cxx:1676
 TColor.cxx:1677
 TColor.cxx:1678
 TColor.cxx:1679
 TColor.cxx:1680
 TColor.cxx:1681
 TColor.cxx:1682
 TColor.cxx:1683
 TColor.cxx:1684
 TColor.cxx:1685
 TColor.cxx:1686
 TColor.cxx:1687
 TColor.cxx:1688
 TColor.cxx:1689
 TColor.cxx:1690
 TColor.cxx:1691
 TColor.cxx:1692
 TColor.cxx:1693
 TColor.cxx:1694
 TColor.cxx:1695
 TColor.cxx:1696
 TColor.cxx:1697
 TColor.cxx:1698
 TColor.cxx:1699
 TColor.cxx:1700
 TColor.cxx:1701
 TColor.cxx:1702
 TColor.cxx:1703
 TColor.cxx:1704
 TColor.cxx:1705
 TColor.cxx:1706
 TColor.cxx:1707
 TColor.cxx:1708
 TColor.cxx:1709
 TColor.cxx:1710
 TColor.cxx:1711
 TColor.cxx:1712
 TColor.cxx:1713
 TColor.cxx:1714
 TColor.cxx:1715
 TColor.cxx:1716
 TColor.cxx:1717
 TColor.cxx:1718
 TColor.cxx:1719
 TColor.cxx:1720
 TColor.cxx:1721
 TColor.cxx:1722
 TColor.cxx:1723
 TColor.cxx:1724
 TColor.cxx:1725
 TColor.cxx:1726
 TColor.cxx:1727
 TColor.cxx:1728
 TColor.cxx:1729
 TColor.cxx:1730
 TColor.cxx:1731
 TColor.cxx:1732
 TColor.cxx:1733
 TColor.cxx:1734
 TColor.cxx:1735
 TColor.cxx:1736
 TColor.cxx:1737
 TColor.cxx:1738
 TColor.cxx:1739
 TColor.cxx:1740
 TColor.cxx:1741
 TColor.cxx:1742
 TColor.cxx:1743
 TColor.cxx:1744
 TColor.cxx:1745
 TColor.cxx:1746
 TColor.cxx:1747
 TColor.cxx:1748
 TColor.cxx:1749
 TColor.cxx:1750
 TColor.cxx:1751
 TColor.cxx:1752
 TColor.cxx:1753
 TColor.cxx:1754
 TColor.cxx:1755
 TColor.cxx:1756
 TColor.cxx:1757
 TColor.cxx:1758
 TColor.cxx:1759
 TColor.cxx:1760
 TColor.cxx:1761
 TColor.cxx:1762
 TColor.cxx:1763
 TColor.cxx:1764
 TColor.cxx:1765
 TColor.cxx:1766
 TColor.cxx:1767
 TColor.cxx:1768
 TColor.cxx:1769
 TColor.cxx:1770
 TColor.cxx:1771
 TColor.cxx:1772
 TColor.cxx:1773
 TColor.cxx:1774
 TColor.cxx:1775
 TColor.cxx:1776
 TColor.cxx:1777
 TColor.cxx:1778
 TColor.cxx:1779
 TColor.cxx:1780
 TColor.cxx:1781
 TColor.cxx:1782
 TColor.cxx:1783
 TColor.cxx:1784
 TColor.cxx:1785
 TColor.cxx:1786
 TColor.cxx:1787
 TColor.cxx:1788
 TColor.cxx:1789
 TColor.cxx:1790
 TColor.cxx:1791
 TColor.cxx:1792
 TColor.cxx:1793
 TColor.cxx:1794
 TColor.cxx:1795
 TColor.cxx:1796
 TColor.cxx:1797
 TColor.cxx:1798
 TColor.cxx:1799
 TColor.cxx:1800
 TColor.cxx:1801
 TColor.cxx:1802
 TColor.cxx:1803
 TColor.cxx:1804
 TColor.cxx:1805
 TColor.cxx:1806