3 #include "RGBAPalette.h"
10 //______________________________________________________________________
16 RGBAPalette::RGBAPalette() :
18 Reve::ReferenceCount(),
20 fLowLimit(0), fHighLimit(0), fMinVal(0), fMaxVal(0), fNBins(0),
24 fInterpolate (kFALSE),
33 RGBAPalette::RGBAPalette(Int_t min, Int_t max) :
35 Reve::ReferenceCount(),
37 fLowLimit(0), fHighLimit(0), fMinVal(0), fMaxVal(0), fNBins(0),
41 fInterpolate (kFALSE),
50 RGBAPalette::RGBAPalette(Int_t min, Int_t max, Bool_t interp, Bool_t wrap) :
52 Reve::ReferenceCount(),
54 fLowLimit(0), fHighLimit(0), fMinVal(0), fMaxVal(0), fNBins(0),
58 fInterpolate (interp),
67 RGBAPalette::~RGBAPalette()
69 delete [] fColorArray;
72 /**************************************************************************/
74 void RGBAPalette::SetupColor(Int_t val, UChar_t* pixel) const
76 using namespace TMath;
77 Float_t div = Max(1, fMaxVal - fMinVal);
78 Int_t nCol = gStyle->GetNumberOfColors();
81 if (val >= fMaxVal) f = nCol - 1;
82 else if (val <= fMinVal) f = 0;
83 else f = (val - fMinVal)/div*(nCol - 1);
86 Int_t bin = (Int_t) f;
87 Float_t f1 = f - bin, f2 = 1.0f - f1;
88 ColorFromIdx(f1, gStyle->GetColorPalette(bin),
89 f2, gStyle->GetColorPalette(Min(bin + 1, nCol - 1)),
92 ColorFromIdx(gStyle->GetColorPalette((Int_t) Nint(f)), pixel);
96 void RGBAPalette::SetupColorArray() const
98 if(fColorArray) // !!!! should reinit anyway, maybe palette in gstyle changed
101 // !!!! probably should store original palette for editing ...
103 fColorArray = new UChar_t [4 * fNBins];
104 UChar_t* p = fColorArray;
105 for(Int_t v=fMinVal; v<=fMaxVal; ++v, p+=4)
109 void RGBAPalette::ClearColorArray()
112 delete [] fColorArray;
117 /**************************************************************************/
119 void RGBAPalette::SetLimits(Int_t low, Int_t high)
123 if (fMaxVal < fLowLimit) SetMax(fLowLimit);
124 if (fMinVal < fLowLimit) SetMin(fLowLimit);
125 if (fMinVal > fHighLimit) SetMin(fHighLimit);
126 if (fMaxVal > fHighLimit) SetMax(fHighLimit);
130 void RGBAPalette::SetMin(Int_t min)
132 fMinVal = TMath::Min(min, fMaxVal);
133 fNBins = fMaxVal - fMinVal + 1;
137 void RGBAPalette::SetMax(Int_t max)
139 fMaxVal = TMath::Max(max, fMinVal);
140 fNBins = fMaxVal - fMinVal + 1;
144 void RGBAPalette::SetMinMax(Int_t min, Int_t max)
148 fNBins = fMaxVal - fMinVal + 1;
152 void RGBAPalette::SetInterpolate(Bool_t b)
158 void RGBAPalette::SetWrap(Bool_t b)
163 /**************************************************************************/
165 void RGBAPalette::SetDefaultColor(Color_t ci)
168 ColorFromIdx(ci, fDefaultRGBA, kTRUE);
171 void RGBAPalette::SetDefaultColor(Pixel_t pix)
173 SetDefaultColor(Color_t(TColor::GetColor(pix)));
176 void RGBAPalette::SetDefaultColor(UChar_t r, UChar_t g, UChar_t b, UChar_t a)
178 fDefaultColor = Color_t(TColor::GetColor(r, g, b));