22 #include "base/Debug.h" 31 cerr <<
"WARNING: ColourMapper: min == max (== " <<
m_min 32 <<
"), adjusting" << endl;
60 case Sunset:
return tr(
"Sunset");
62 case Banded:
return tr(
"Banded");
64 case Printer:
return tr(
"Printer");
65 case HighGain:
return tr(
"High Gain");
68 return tr(
"<unknown>");
75 if (norm < 0.f) norm = 0.f;
76 if (norm > 1.f) norm = 1.f;
78 float h = 0.f, s = 0.f, v = 0.f, r = 0.f, g = 0.f, b = 0.f;
82 float blue = 0.6666f, pieslice = 0.3333f;
90 h = blue - norm * 2.f * pieslice;
101 r = g = b = 1.f - norm;
106 h = blue - pieslice/4.f + norm * (pieslice + pieslice/4.f);
123 s = 1.f - (sqrtf(norm) - 0.707f) * 3.413f;
124 if (s < 0.f) s = 0.f;
125 if (s > 1.f) s = 1.f;
130 r = (norm - 0.24f) * 2.38f;
131 if (r > 1.f) r = 1.f;
132 if (r < 0.f) r = 0.f;
133 g = (norm - 0.64f) * 2.777f;
134 if (g > 1.f) g = 1.f;
135 if (g < 0.f) g = 0.f;
137 if (norm > 0.277f) b = 2.f - b;
138 if (b > 1.f) b = 1.f;
139 if (b < 0.f) b = 0.f;
144 h = blue + (pieslice/6.f) - norm;
145 if (h < 0.f) h += 1.f;
151 if (norm < 0.125)
return Qt::darkGreen;
152 else if (norm < 0.25)
return Qt::green;
153 else if (norm < 0.375)
return Qt::darkBlue;
154 else if (norm < 0.5)
return Qt::blue;
155 else if (norm < 0.625)
return Qt::darkYellow;
156 else if (norm < 0.75)
return Qt::yellow;
157 else if (norm < 0.875)
return Qt::darkRed;
162 if (norm > 0.99)
return Qt::white;
163 else return Qt::darkBlue;
168 }
else if (norm > 0.7) {
170 }
else if (norm > 0.6) {
172 }
else if (norm > 0.5) {
174 }
else if (norm > 0.4) {
176 }
else if (norm > 0.3) {
178 }
else if (norm > 0.2) {
188 if (norm <= 1.f / 256.f) {
191 norm = 0.1f + (powf(((norm - 0.5f) * 2.f), 3.f) + 1.f) / 2.081f;
194 r = (norm - 0.24f) * 2.38f;
195 if (r > 1.f) r = 1.f;
196 if (r < 0.f) r = 0.f;
197 g = (norm - 0.64f) * 2.777f;
198 if (g > 1.f) g = 1.f;
199 if (g < 0.f) g = 0.f;
201 if (norm > 0.277f) b = 2.f - b;
202 if (b > 1.f) b = 1.f;
203 if (b < 0.f) b = 0.f;
214 return QColor::fromHsvF(h, s, v);
216 return QColor::fromRgbF(r, g, b);
229 return QColor(255, 150, 50);
235 return Qt::darkGreen;
241 return QColor::fromHsv(240, 255, 255);
static int getColourMapCount()
QColor map(float value) const
QColor getContrastingColour() const
ColourMapper(int map, float minValue, float maxValue)
bool hasLightBackground() const
static QString getColourMapName(int n)