// @(#)root/eve:$Id$
// Authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 2007

/*************************************************************************
 * Copyright (C) 1995-2007, 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 "TEveRGBAPalette.h"

#include "TColor.h"
#include "TStyle.h"
#include "TMath.h"

//______________________________________________________________________________
//
// A generic, speed-optimised mapping from value to RGBA color
// supporting different wrapping and range truncation modes.
//
// Flag fFixColorRange: specifies how the palette is mapped to signal values:
//  true  - LowLimit -> HighLimit
//  false - MinValue -> MaxValue


ClassImp(TEveRGBAPalette);

//______________________________________________________________________________
TEveRGBAPalette::TEveRGBAPalette() :
   TObject(), TQObject(),
   TEveRefCnt(),

   fUIf(1), fUIc(0),

   fLowLimit(0), fHighLimit(0), fMinVal(0), fMaxVal(0),

   fUIDoubleRep     (kFALSE),
   fInterpolate     (kTRUE),
   fShowDefValue    (kTRUE),
   fFixColorRange   (kFALSE),
   fUnderflowAction (kLA_Cut),
   fOverflowAction  (kLA_Clip),

   fDefaultColor(-1),
   fUnderColor  (-1),
   fOverColor   (-1),

   fNBins(0), fCAMin(0), fCAMax(0), fColorArray(0)
{
   // Constructor.

   SetLimits(0, 1024);
   SetMinMax(0,  512);

   SetDefaultColor(0);
   SetUnderColor(1);
   SetOverColor(2);
}

//______________________________________________________________________________
TEveRGBAPalette::TEveRGBAPalette(Int_t min, Int_t max, Bool_t interp,
                                 Bool_t showdef, Bool_t fixcolrng) :
   TObject(), TQObject(),
   TEveRefCnt(),

   fUIf(1), fUIc(0),

   fLowLimit(0), fHighLimit(0), fMinVal(0), fMaxVal(0),

   fUIDoubleRep     (kFALSE),
   fInterpolate     (interp),
   fShowDefValue    (showdef),
   fFixColorRange   (fixcolrng),
   fUnderflowAction (kLA_Cut),
   fOverflowAction  (kLA_Clip),

   fDefaultColor(-1),
   fUnderColor  (-1),
   fOverColor   (-1),

   fNBins(0), fCAMin(0), fCAMax(0), fColorArray(0)
{
   // Constructor.

   SetLimits(min, max);
   SetMinMax(min, max);

   SetDefaultColor(0);
   SetUnderColor(1);
   SetOverColor(2);
}

//______________________________________________________________________________
TEveRGBAPalette::~TEveRGBAPalette()
{
   // Destructor.

   delete [] fColorArray;
}

/******************************************************************************/

//______________________________________________________________________________
void TEveRGBAPalette::SetupColor(Int_t val, UChar_t* pixel) const
{
   // Set RGBA color 'pixel' for signal-value 'val'.

   using namespace TMath;
   Float_t div  = Max(1, fCAMax - fCAMin);
   Int_t   nCol = gStyle->GetNumberOfColors();

   Float_t f;
   if      (val >= fCAMax) f = nCol - 1;
   else if (val <= fCAMin) f = 0;
   else                    f = (val - fCAMin)/div*(nCol - 1);

   if (fInterpolate) {
      Int_t  bin = (Int_t) f;
      Float_t f2 = f - bin, f1 = 1.0f - f2;
      TEveUtil::ColorFromIdx(f1, gStyle->GetColorPalette(bin),
                             f2, gStyle->GetColorPalette(Min(bin + 1, nCol - 1)),
                             pixel);
   } else {
      TEveUtil::ColorFromIdx(gStyle->GetColorPalette((Int_t) Nint(f)), pixel);
   }
}

//______________________________________________________________________________
void TEveRGBAPalette::SetupColorArray() const
{
   // Construct internal color array that maps signal value to RGBA color.

   if (fColorArray)
      delete [] fColorArray;

   if (fFixColorRange) {
      fCAMin = fLowLimit; fCAMax = fHighLimit;
   } else {
      fCAMin = fMinVal;   fCAMax = fMaxVal;
   }
   fNBins = fCAMax - fCAMin + 1;

   fColorArray = new UChar_t [4 * fNBins];
   UChar_t* p = fColorArray;
   for(Int_t v = fCAMin; v <= fCAMax; ++v, p+=4)
      SetupColor(v, p);
}

//______________________________________________________________________________
void TEveRGBAPalette::ClearColorArray()
{
   // Clear internal color array.

   if (fColorArray) {
      delete [] fColorArray;
      fColorArray = 0;
      fNBins = fCAMin = fCAMax = 0;
   }
}

/******************************************************************************/

//______________________________________________________________________________
void TEveRGBAPalette::SetLimits(Int_t low, Int_t high)
{
   // Set low/high limits on signal value. Current min/max values are
   // clamped into the new limits.

   fLowLimit  = low;
   fHighLimit = high;

   if (fMaxVal < fLowLimit)  SetMax(fLowLimit);
   if (fMinVal < fLowLimit)  SetMin(fLowLimit);
   if (fMinVal > fHighLimit) SetMin(fHighLimit);
   if (fMaxVal > fHighLimit) SetMax(fHighLimit);

   ClearColorArray();
}

//______________________________________________________________________________
void TEveRGBAPalette::SetLimitsScaleMinMax(Int_t low, Int_t high)
{
   // Set low/high limits and rescale current min/max values.

   Float_t rng_old = fHighLimit - fLowLimit;
   Float_t rng_new = high - low;

   fMinVal = TMath::Nint(low + (fMinVal - fLowLimit)*rng_new/rng_old);
   fMaxVal = TMath::Nint(low + (fMaxVal - fLowLimit)*rng_new/rng_old);
   fLowLimit  = low;
   fHighLimit = high;

   ClearColorArray();
}

//______________________________________________________________________________
void TEveRGBAPalette::SetMin(Int_t min)
{
   // Set current min value.

   fMinVal = TMath::Min(min, fMaxVal);
   ClearColorArray();
}

//______________________________________________________________________________
void TEveRGBAPalette::SetMax(Int_t max)
{
   // Set current max value.

   fMaxVal = TMath::Max(max, fMinVal);
   ClearColorArray();
}

//______________________________________________________________________________
void TEveRGBAPalette::SetMinMax(Int_t min, Int_t max)
{
   // Set current min/max values.

   fMinVal = min;
   fMaxVal = max;
   ClearColorArray();
}

/******************************************************************************/

//______________________________________________________________________________
void TEveRGBAPalette::SetUIDoubleRep(Bool_t b, Double_t f, Double_t c)
{
   // Set flag determining whether GUI editor and overlays should show limits
   // and axis values as real values with mapping from integer value i to real
   // value d as: d = f*i + fc

   fUIDoubleRep = b;
   if (fUIDoubleRep) {
      fUIf = f;  fUIc = c;
   } else {
      fUIf = 1;  fUIc = 0;
   }
}

//______________________________________________________________________________
void TEveRGBAPalette::SetInterpolate(Bool_t b)
{
   // Set interpolation flag. This determines how colors from ROOT's
   // palette are mapped into RGBA values for given signal.

   fInterpolate = b;
   ClearColorArray();
}

//______________________________________________________________________________
void TEveRGBAPalette::SetFixColorRange(Bool_t v)
{
   // Set flag specifying how the palette is mapped to signal values:
   //  true  - LowLimit -> HighLimit
   //  false - MinValue -> MaxValue

   fFixColorRange = v;
   ClearColorArray();
}

/******************************************************************************/

//______________________________________________________________________________
void TEveRGBAPalette::SetDefaultColor(Color_t ci)
{
   // Set default color.

   fDefaultColor = ci;
   TEveUtil::ColorFromIdx(ci, fDefaultRGBA, kTRUE);
}

//______________________________________________________________________________
void TEveRGBAPalette::SetDefaultColorPixel(Pixel_t pix)
{
   // Set default color.

   SetDefaultColor(Color_t(TColor::GetColor(pix)));
}

//______________________________________________________________________________
void TEveRGBAPalette::SetDefaultColorRGBA(UChar_t r, UChar_t g, UChar_t b, UChar_t a)
{
   // Set default color.

   fDefaultColor = Color_t(TColor::GetColor(r, g, b));
   fDefaultRGBA[0] = r;
   fDefaultRGBA[1] = g;
   fDefaultRGBA[2] = b;
   fDefaultRGBA[3] = a;
}

/******************************************************************************/

//______________________________________________________________________________
void TEveRGBAPalette::SetUnderColor(Color_t ci)
{
   // Set underflow color.

   fUnderColor = ci;
   TEveUtil::ColorFromIdx(ci, fUnderRGBA, kTRUE);
}

//______________________________________________________________________________
void TEveRGBAPalette::SetUnderColorPixel(Pixel_t pix)
{
   // Set underflow color.

   SetUnderColor(Color_t(TColor::GetColor(pix)));
}

//______________________________________________________________________________
void TEveRGBAPalette::SetUnderColorRGBA(UChar_t r, UChar_t g, UChar_t b, UChar_t a)
{
   // Set underflow color.

   fUnderColor = Color_t(TColor::GetColor(r, g, b));
   fUnderRGBA[0] = r;
   fUnderRGBA[1] = g;
   fUnderRGBA[2] = b;
   fUnderRGBA[3] = a;
}

/******************************************************************************/

//______________________________________________________________________________
void TEveRGBAPalette::SetOverColor(Color_t ci)
{
   // Set overflow color.

   fOverColor = ci;
   TEveUtil::ColorFromIdx(ci, fOverRGBA, kTRUE);
}

//______________________________________________________________________________
void TEveRGBAPalette::SetOverColorPixel(Pixel_t pix)
{
   // Set overflow color.

   SetOverColor(Color_t(TColor::GetColor(pix)));
}

//______________________________________________________________________________
void TEveRGBAPalette::SetOverColorRGBA(UChar_t r, UChar_t g, UChar_t b, UChar_t a)
{
   // Set overflow color.

   fOverColor = Color_t(TColor::GetColor(r, g, b));
   fOverRGBA[0] = r;
   fOverRGBA[1] = g;
   fOverRGBA[2] = b;
   fOverRGBA[3] = a;
}

//______________________________________________________________________________
void TEveRGBAPalette::MinMaxValChanged()
{
   // Emit the "MinMaxValChanged()" signal.
   // This is NOT called automatically from SetMin/Max functions but
   // it IS called from TEveRGBAPaletteEditor after it changes the
   // min/max values.

   Emit("MinMaxValChanged()");
}
 TEveRGBAPalette.cxx:1
 TEveRGBAPalette.cxx:2
 TEveRGBAPalette.cxx:3
 TEveRGBAPalette.cxx:4
 TEveRGBAPalette.cxx:5
 TEveRGBAPalette.cxx:6
 TEveRGBAPalette.cxx:7
 TEveRGBAPalette.cxx:8
 TEveRGBAPalette.cxx:9
 TEveRGBAPalette.cxx:10
 TEveRGBAPalette.cxx:11
 TEveRGBAPalette.cxx:12
 TEveRGBAPalette.cxx:13
 TEveRGBAPalette.cxx:14
 TEveRGBAPalette.cxx:15
 TEveRGBAPalette.cxx:16
 TEveRGBAPalette.cxx:17
 TEveRGBAPalette.cxx:18
 TEveRGBAPalette.cxx:19
 TEveRGBAPalette.cxx:20
 TEveRGBAPalette.cxx:21
 TEveRGBAPalette.cxx:22
 TEveRGBAPalette.cxx:23
 TEveRGBAPalette.cxx:24
 TEveRGBAPalette.cxx:25
 TEveRGBAPalette.cxx:26
 TEveRGBAPalette.cxx:27
 TEveRGBAPalette.cxx:28
 TEveRGBAPalette.cxx:29
 TEveRGBAPalette.cxx:30
 TEveRGBAPalette.cxx:31
 TEveRGBAPalette.cxx:32
 TEveRGBAPalette.cxx:33
 TEveRGBAPalette.cxx:34
 TEveRGBAPalette.cxx:35
 TEveRGBAPalette.cxx:36
 TEveRGBAPalette.cxx:37
 TEveRGBAPalette.cxx:38
 TEveRGBAPalette.cxx:39
 TEveRGBAPalette.cxx:40
 TEveRGBAPalette.cxx:41
 TEveRGBAPalette.cxx:42
 TEveRGBAPalette.cxx:43
 TEveRGBAPalette.cxx:44
 TEveRGBAPalette.cxx:45
 TEveRGBAPalette.cxx:46
 TEveRGBAPalette.cxx:47
 TEveRGBAPalette.cxx:48
 TEveRGBAPalette.cxx:49
 TEveRGBAPalette.cxx:50
 TEveRGBAPalette.cxx:51
 TEveRGBAPalette.cxx:52
 TEveRGBAPalette.cxx:53
 TEveRGBAPalette.cxx:54
 TEveRGBAPalette.cxx:55
 TEveRGBAPalette.cxx:56
 TEveRGBAPalette.cxx:57
 TEveRGBAPalette.cxx:58
 TEveRGBAPalette.cxx:59
 TEveRGBAPalette.cxx:60
 TEveRGBAPalette.cxx:61
 TEveRGBAPalette.cxx:62
 TEveRGBAPalette.cxx:63
 TEveRGBAPalette.cxx:64
 TEveRGBAPalette.cxx:65
 TEveRGBAPalette.cxx:66
 TEveRGBAPalette.cxx:67
 TEveRGBAPalette.cxx:68
 TEveRGBAPalette.cxx:69
 TEveRGBAPalette.cxx:70
 TEveRGBAPalette.cxx:71
 TEveRGBAPalette.cxx:72
 TEveRGBAPalette.cxx:73
 TEveRGBAPalette.cxx:74
 TEveRGBAPalette.cxx:75
 TEveRGBAPalette.cxx:76
 TEveRGBAPalette.cxx:77
 TEveRGBAPalette.cxx:78
 TEveRGBAPalette.cxx:79
 TEveRGBAPalette.cxx:80
 TEveRGBAPalette.cxx:81
 TEveRGBAPalette.cxx:82
 TEveRGBAPalette.cxx:83
 TEveRGBAPalette.cxx:84
 TEveRGBAPalette.cxx:85
 TEveRGBAPalette.cxx:86
 TEveRGBAPalette.cxx:87
 TEveRGBAPalette.cxx:88
 TEveRGBAPalette.cxx:89
 TEveRGBAPalette.cxx:90
 TEveRGBAPalette.cxx:91
 TEveRGBAPalette.cxx:92
 TEveRGBAPalette.cxx:93
 TEveRGBAPalette.cxx:94
 TEveRGBAPalette.cxx:95
 TEveRGBAPalette.cxx:96
 TEveRGBAPalette.cxx:97
 TEveRGBAPalette.cxx:98
 TEveRGBAPalette.cxx:99
 TEveRGBAPalette.cxx:100
 TEveRGBAPalette.cxx:101
 TEveRGBAPalette.cxx:102
 TEveRGBAPalette.cxx:103
 TEveRGBAPalette.cxx:104
 TEveRGBAPalette.cxx:105
 TEveRGBAPalette.cxx:106
 TEveRGBAPalette.cxx:107
 TEveRGBAPalette.cxx:108
 TEveRGBAPalette.cxx:109
 TEveRGBAPalette.cxx:110
 TEveRGBAPalette.cxx:111
 TEveRGBAPalette.cxx:112
 TEveRGBAPalette.cxx:113
 TEveRGBAPalette.cxx:114
 TEveRGBAPalette.cxx:115
 TEveRGBAPalette.cxx:116
 TEveRGBAPalette.cxx:117
 TEveRGBAPalette.cxx:118
 TEveRGBAPalette.cxx:119
 TEveRGBAPalette.cxx:120
 TEveRGBAPalette.cxx:121
 TEveRGBAPalette.cxx:122
 TEveRGBAPalette.cxx:123
 TEveRGBAPalette.cxx:124
 TEveRGBAPalette.cxx:125
 TEveRGBAPalette.cxx:126
 TEveRGBAPalette.cxx:127
 TEveRGBAPalette.cxx:128
 TEveRGBAPalette.cxx:129
 TEveRGBAPalette.cxx:130
 TEveRGBAPalette.cxx:131
 TEveRGBAPalette.cxx:132
 TEveRGBAPalette.cxx:133
 TEveRGBAPalette.cxx:134
 TEveRGBAPalette.cxx:135
 TEveRGBAPalette.cxx:136
 TEveRGBAPalette.cxx:137
 TEveRGBAPalette.cxx:138
 TEveRGBAPalette.cxx:139
 TEveRGBAPalette.cxx:140
 TEveRGBAPalette.cxx:141
 TEveRGBAPalette.cxx:142
 TEveRGBAPalette.cxx:143
 TEveRGBAPalette.cxx:144
 TEveRGBAPalette.cxx:145
 TEveRGBAPalette.cxx:146
 TEveRGBAPalette.cxx:147
 TEveRGBAPalette.cxx:148
 TEveRGBAPalette.cxx:149
 TEveRGBAPalette.cxx:150
 TEveRGBAPalette.cxx:151
 TEveRGBAPalette.cxx:152
 TEveRGBAPalette.cxx:153
 TEveRGBAPalette.cxx:154
 TEveRGBAPalette.cxx:155
 TEveRGBAPalette.cxx:156
 TEveRGBAPalette.cxx:157
 TEveRGBAPalette.cxx:158
 TEveRGBAPalette.cxx:159
 TEveRGBAPalette.cxx:160
 TEveRGBAPalette.cxx:161
 TEveRGBAPalette.cxx:162
 TEveRGBAPalette.cxx:163
 TEveRGBAPalette.cxx:164
 TEveRGBAPalette.cxx:165
 TEveRGBAPalette.cxx:166
 TEveRGBAPalette.cxx:167
 TEveRGBAPalette.cxx:168
 TEveRGBAPalette.cxx:169
 TEveRGBAPalette.cxx:170
 TEveRGBAPalette.cxx:171
 TEveRGBAPalette.cxx:172
 TEveRGBAPalette.cxx:173
 TEveRGBAPalette.cxx:174
 TEveRGBAPalette.cxx:175
 TEveRGBAPalette.cxx:176
 TEveRGBAPalette.cxx:177
 TEveRGBAPalette.cxx:178
 TEveRGBAPalette.cxx:179
 TEveRGBAPalette.cxx:180
 TEveRGBAPalette.cxx:181
 TEveRGBAPalette.cxx:182
 TEveRGBAPalette.cxx:183
 TEveRGBAPalette.cxx:184
 TEveRGBAPalette.cxx:185
 TEveRGBAPalette.cxx:186
 TEveRGBAPalette.cxx:187
 TEveRGBAPalette.cxx:188
 TEveRGBAPalette.cxx:189
 TEveRGBAPalette.cxx:190
 TEveRGBAPalette.cxx:191
 TEveRGBAPalette.cxx:192
 TEveRGBAPalette.cxx:193
 TEveRGBAPalette.cxx:194
 TEveRGBAPalette.cxx:195
 TEveRGBAPalette.cxx:196
 TEveRGBAPalette.cxx:197
 TEveRGBAPalette.cxx:198
 TEveRGBAPalette.cxx:199
 TEveRGBAPalette.cxx:200
 TEveRGBAPalette.cxx:201
 TEveRGBAPalette.cxx:202
 TEveRGBAPalette.cxx:203
 TEveRGBAPalette.cxx:204
 TEveRGBAPalette.cxx:205
 TEveRGBAPalette.cxx:206
 TEveRGBAPalette.cxx:207
 TEveRGBAPalette.cxx:208
 TEveRGBAPalette.cxx:209
 TEveRGBAPalette.cxx:210
 TEveRGBAPalette.cxx:211
 TEveRGBAPalette.cxx:212
 TEveRGBAPalette.cxx:213
 TEveRGBAPalette.cxx:214
 TEveRGBAPalette.cxx:215
 TEveRGBAPalette.cxx:216
 TEveRGBAPalette.cxx:217
 TEveRGBAPalette.cxx:218
 TEveRGBAPalette.cxx:219
 TEveRGBAPalette.cxx:220
 TEveRGBAPalette.cxx:221
 TEveRGBAPalette.cxx:222
 TEveRGBAPalette.cxx:223
 TEveRGBAPalette.cxx:224
 TEveRGBAPalette.cxx:225
 TEveRGBAPalette.cxx:226
 TEveRGBAPalette.cxx:227
 TEveRGBAPalette.cxx:228
 TEveRGBAPalette.cxx:229
 TEveRGBAPalette.cxx:230
 TEveRGBAPalette.cxx:231
 TEveRGBAPalette.cxx:232
 TEveRGBAPalette.cxx:233
 TEveRGBAPalette.cxx:234
 TEveRGBAPalette.cxx:235
 TEveRGBAPalette.cxx:236
 TEveRGBAPalette.cxx:237
 TEveRGBAPalette.cxx:238
 TEveRGBAPalette.cxx:239
 TEveRGBAPalette.cxx:240
 TEveRGBAPalette.cxx:241
 TEveRGBAPalette.cxx:242
 TEveRGBAPalette.cxx:243
 TEveRGBAPalette.cxx:244
 TEveRGBAPalette.cxx:245
 TEveRGBAPalette.cxx:246
 TEveRGBAPalette.cxx:247
 TEveRGBAPalette.cxx:248
 TEveRGBAPalette.cxx:249
 TEveRGBAPalette.cxx:250
 TEveRGBAPalette.cxx:251
 TEveRGBAPalette.cxx:252
 TEveRGBAPalette.cxx:253
 TEveRGBAPalette.cxx:254
 TEveRGBAPalette.cxx:255
 TEveRGBAPalette.cxx:256
 TEveRGBAPalette.cxx:257
 TEveRGBAPalette.cxx:258
 TEveRGBAPalette.cxx:259
 TEveRGBAPalette.cxx:260
 TEveRGBAPalette.cxx:261
 TEveRGBAPalette.cxx:262
 TEveRGBAPalette.cxx:263
 TEveRGBAPalette.cxx:264
 TEveRGBAPalette.cxx:265
 TEveRGBAPalette.cxx:266
 TEveRGBAPalette.cxx:267
 TEveRGBAPalette.cxx:268
 TEveRGBAPalette.cxx:269
 TEveRGBAPalette.cxx:270
 TEveRGBAPalette.cxx:271
 TEveRGBAPalette.cxx:272
 TEveRGBAPalette.cxx:273
 TEveRGBAPalette.cxx:274
 TEveRGBAPalette.cxx:275
 TEveRGBAPalette.cxx:276
 TEveRGBAPalette.cxx:277
 TEveRGBAPalette.cxx:278
 TEveRGBAPalette.cxx:279
 TEveRGBAPalette.cxx:280
 TEveRGBAPalette.cxx:281
 TEveRGBAPalette.cxx:282
 TEveRGBAPalette.cxx:283
 TEveRGBAPalette.cxx:284
 TEveRGBAPalette.cxx:285
 TEveRGBAPalette.cxx:286
 TEveRGBAPalette.cxx:287
 TEveRGBAPalette.cxx:288
 TEveRGBAPalette.cxx:289
 TEveRGBAPalette.cxx:290
 TEveRGBAPalette.cxx:291
 TEveRGBAPalette.cxx:292
 TEveRGBAPalette.cxx:293
 TEveRGBAPalette.cxx:294
 TEveRGBAPalette.cxx:295
 TEveRGBAPalette.cxx:296
 TEveRGBAPalette.cxx:297
 TEveRGBAPalette.cxx:298
 TEveRGBAPalette.cxx:299
 TEveRGBAPalette.cxx:300
 TEveRGBAPalette.cxx:301
 TEveRGBAPalette.cxx:302
 TEveRGBAPalette.cxx:303
 TEveRGBAPalette.cxx:304
 TEveRGBAPalette.cxx:305
 TEveRGBAPalette.cxx:306
 TEveRGBAPalette.cxx:307
 TEveRGBAPalette.cxx:308
 TEveRGBAPalette.cxx:309
 TEveRGBAPalette.cxx:310
 TEveRGBAPalette.cxx:311
 TEveRGBAPalette.cxx:312
 TEveRGBAPalette.cxx:313
 TEveRGBAPalette.cxx:314
 TEveRGBAPalette.cxx:315
 TEveRGBAPalette.cxx:316
 TEveRGBAPalette.cxx:317
 TEveRGBAPalette.cxx:318
 TEveRGBAPalette.cxx:319
 TEveRGBAPalette.cxx:320
 TEveRGBAPalette.cxx:321
 TEveRGBAPalette.cxx:322
 TEveRGBAPalette.cxx:323
 TEveRGBAPalette.cxx:324
 TEveRGBAPalette.cxx:325
 TEveRGBAPalette.cxx:326
 TEveRGBAPalette.cxx:327
 TEveRGBAPalette.cxx:328
 TEveRGBAPalette.cxx:329
 TEveRGBAPalette.cxx:330
 TEveRGBAPalette.cxx:331
 TEveRGBAPalette.cxx:332
 TEveRGBAPalette.cxx:333
 TEveRGBAPalette.cxx:334
 TEveRGBAPalette.cxx:335
 TEveRGBAPalette.cxx:336
 TEveRGBAPalette.cxx:337
 TEveRGBAPalette.cxx:338
 TEveRGBAPalette.cxx:339
 TEveRGBAPalette.cxx:340
 TEveRGBAPalette.cxx:341
 TEveRGBAPalette.cxx:342
 TEveRGBAPalette.cxx:343
 TEveRGBAPalette.cxx:344
 TEveRGBAPalette.cxx:345
 TEveRGBAPalette.cxx:346
 TEveRGBAPalette.cxx:347
 TEveRGBAPalette.cxx:348
 TEveRGBAPalette.cxx:349
 TEveRGBAPalette.cxx:350
 TEveRGBAPalette.cxx:351
 TEveRGBAPalette.cxx:352
 TEveRGBAPalette.cxx:353
 TEveRGBAPalette.cxx:354
 TEveRGBAPalette.cxx:355
 TEveRGBAPalette.cxx:356
 TEveRGBAPalette.cxx:357
 TEveRGBAPalette.cxx:358
 TEveRGBAPalette.cxx:359
 TEveRGBAPalette.cxx:360
 TEveRGBAPalette.cxx:361
 TEveRGBAPalette.cxx:362
 TEveRGBAPalette.cxx:363
 TEveRGBAPalette.cxx:364
 TEveRGBAPalette.cxx:365
 TEveRGBAPalette.cxx:366