#include "FairTask.h"
#include "TString.h"
#include <math.h>
#include <list>
Go to the source code of this file.
|
void | LabToRGB (Float_t L, Float_t a, Float_t b, Float_t &R, Float_t &G, Float_t &B) |
|
Float_t | Hue_2_RGB (Float_t v1, Float_t v2, Float_t h) |
|
void | HSLToRGB (Float_t h, Float_t s, Float_t l, Float_t &R, Float_t &G, Float_t &B) |
|
◆ HSLToRGB()
void HSLToRGB |
( |
Float_t |
h, |
|
|
Float_t |
s, |
|
|
Float_t |
l, |
|
|
Float_t & |
R, |
|
|
Float_t & |
G, |
|
|
Float_t & |
B |
|
) |
| |
|
inline |
Definition at line 165 of file ecalDrawer.h.
166{
167 if (s==0)
168 {
170 return;
171 }
172 Float_t v2;
173 Float_t v1;
174 if (l<0.5) v2=
l*(1+
s);
else v2=(
l+
s)-(s*l);
179}
Float_t Hue_2_RGB(Float_t v1, Float_t v2, Float_t h)
◆ Hue_2_RGB()
Float_t Hue_2_RGB |
( |
Float_t |
v1, |
|
|
Float_t |
v2, |
|
|
Float_t |
h |
|
) |
| |
|
inline |
Definition at line 154 of file ecalDrawer.h.
155{
157 if (vh<0) vh+=1;
158 if (vh>1) vh-=1;
159 if (6*vh<1) return v1+(v2-v1)*6*vh;
160 if (2*vh<1) return v2;
161 if (3*vh<2) return (v1+(v2-v1)*(2.0/3.0-vh)*6);
162 return v1;
163}
◆ LabToRGB()
void LabToRGB |
( |
Float_t |
L, |
|
|
Float_t |
a, |
|
|
Float_t |
b, |
|
|
Float_t & |
R, |
|
|
Float_t & |
G, |
|
|
Float_t & |
B |
|
) |
| |
|
inline |
Convert Lab color to RGB. Formulas taken from www.easyrgb.com ** L[0.0, 1.0], a[-0.5, 0.5], b[-0.5, 0.5]
Definition at line 129 of file ecalDrawer.h.
130{
131 Float_t vY=(
L+0.16)/1.16;
132 Float_t vX=
a/5.00+vY;
134 if (vY*vY*vY>0.008856) vY=vY*vY*vY; else vY=(vY-16.0/116.0)/7.787;
135 if (vX*vX*vX>0.008856) vX=vX*vX*vX; else vX=(vX-16.0/116.0)/7.787;
136 if (vZ*vZ*vZ>0.008856) vZ=vZ*vZ*vZ; else vZ=(vZ-16.0/116.0)/7.787;
137 vX*=0.95047; vZ*=1.08883;
138 R= vX*3.2406-vY*1.5372-vZ*0.4986;
139 G=-vX*0.9689+vY*1.8758+vZ*0.0415;
140 B= vX*0.0557-vY*0.2040+vZ*1.0570;
141 if (R>0.0031308)
R=1.055*powf(R, 1.0/2.4)-0.055;
else R*=12.92;
142 if (G>0.0031308)
G=1.055*powf(G, 1.0/2.4)-0.055;
else G*=12.92;
143 if (B>0.0031308)
B=1.055*powf(B, 1.0/2.4)-0.055;
else B*=12.92;
147 Float_t Ln=
R*0.3+
G*0.6+0.1*
B;
148 if (Ln>L) {
R*=
L/Ln;
G*=
L/Ln;
B*=
L/Ln; }
149 if (R>1.0) {
G/=
R;
B/=
R;
R=1.0; }
150 if (G>1.0) {
R/=
G;
B/=
G;
G=1.0; }
151 if (B>1.0) {
R/=
B;
G/=
B;
B=1.0; }
152}