53 m_params.argb.alpha = (
unsigned short)(((rgba >> 24) & 0xFF) * 0x101);
54 m_params.argb.red = (
unsigned short)(((rgba >> 16) & 0xFF) * 0x101);
55 m_params.argb.green = (
unsigned short)(((rgba >> 8) & 0xFF) * 0x101);
56 m_params.argb.blue = (
unsigned short)((rgba & 0xFF) * 0x101);
63 m_params.argb.alpha = (
unsigned short)(a * 0x101);
64 m_params.argb.red = (
unsigned short)(r * 0x101);
65 m_params.argb.green = (
unsigned short)(g * 0x101);
66 m_params.argb.blue = (
unsigned short)(b * 0x101);
78 m_params.argb.alpha = (
unsigned short)(a * 0x101);
79 m_params.argb.red = (
unsigned short)(r * 0x101);
80 m_params.argb.green = (
unsigned short)(g * 0x101);
81 m_params.argb.blue = (
unsigned short)(b * 0x101);
87 int a = (rgba >> 24) & 0xff;
88 int r = (rgba >> 16) & 0xff;
89 int g = (rgba >> 8) & 0xff;
124 int rgba = (a << 24) + (r << 16) + (g << 8) + b;
165 m_params.argb.red = (
unsigned short)(red * 0x101);
173 m_params.argb.green = (
unsigned short)(green * 0x101);
181 m_params.argb.blue = (
unsigned short)(blue * 0x101);
186 m_params.argb.alpha = (
unsigned short)(alpha * 0x101);
211 const double h =
m_params.ahsv.hue == 36000 ? 0 :
m_params.ahsv.hue / 6000.;
212 const double s =
m_params.ahsv.saturation / double(USHRT_MAX);
213 const double v =
m_params.ahsv.value / double(USHRT_MAX);
214 const int i =
int(h);
215 const double f = h - i;
216 const double p = v * (1.0 - s);
220 const double q = v * (1.0 - (s * f));
243 const double t = v * (1.0 - (s * (1.0 - f)));
273 else if (
m_params.ahsl.lightness == 0)
281 const double h =
m_params.ahsl.hue == 36000 ? 0 :
m_params.ahsl.hue / 36000.;
282 const double s =
m_params.ahsl.saturation / double(USHRT_MAX);
283 const double l =
m_params.ahsl.lightness / double(USHRT_MAX);
287 temp2 = l * (double(1.0) + s);
289 temp2 = l + s - (l * s);
291 const double temp1 = (double(2.0) * l) - temp2;
292 double temp3[3] = { h + (double(1.0) / double(3.0)), h, h - (
double(1.0) / double(3.0)) };
294 for (
int i = 0; i != 3; ++i)
296 if (temp3[i] <
double(0.0))
297 temp3[i] +=
double(1.0);
298 else if (temp3[i] >
double(1.0))
299 temp3[i] -=
double(1.0);
301 const double sixtemp3 = temp3[i] * double(6.0);
302 if (sixtemp3 <
double(1.0))
303 colt.
m_params.
array[i+1] = (
unsigned short)(
round((temp1 + (temp2 - temp1) * sixtemp3) * USHRT_MAX));
304 else if ((temp3[i] *
double(2.0)) < double(1.0))
306 else if ((temp3[i] *
double(3.0)) < double(2.0))
307 colt.
m_params.
array[i+1] = (
unsigned short)(
round((temp1 + (temp2 -temp1) * (
double(2.0) /
double(3.0) - temp3[i]) *
double(6.0)) * USHRT_MAX));
319 const double c =
m_params.acmyk.cyan / double(USHRT_MAX);
320 const double m =
m_params.acmyk.magenta / double(USHRT_MAX);
321 const double y =
m_params.acmyk.yellow / double(USHRT_MAX);
322 const double k =
m_params.acmyk.black / double(USHRT_MAX);
324 colt.
m_params.
argb.red = (
unsigned short)(
round((1.0 - (c * (1.0 - k) + k)) * USHRT_MAX));
325 colt.
m_params.
argb.green = (
unsigned short)(
round((1.0 - (m * (1.0 - k) + k)) * USHRT_MAX));
326 colt.
m_params.
argb.blue = (
unsigned short)(
round((1.0 - (y * (1.0 - k) + k)) * USHRT_MAX));
336 #define MAX_3(a, b, c) ( ( a > b && a > c) ? a : (b > c ? b : c) ) 337 #define MIN_3(a, b, c) ( ( a < b && a < c) ? a : (b < c ? b : c) ) 352 const double r =
m_params.argb.red / double(USHRT_MAX);
353 const double g =
m_params.argb.green / double(USHRT_MAX);
354 const double b =
m_params.argb.blue / double(USHRT_MAX);
355 const double max =
MAX_3(r, g, b);
356 const double min =
MIN_3(r, g, b);
357 const double delta = max - min;
370 colt.
m_params.
ahsv.saturation = (
unsigned short)(
round((delta / max) * USHRT_MAX));
373 hue = ((g -
b) /delta);
377 hue = (2.0 + (b - r) / delta);
381 hue = (4.0 + (r - g) / delta);
410 const double r =
m_params.argb.red / double(USHRT_MAX);
411 const double g =
m_params.argb.green / double(USHRT_MAX);
412 const double b =
m_params.argb.blue / double(USHRT_MAX);
413 const double max =
MAX_3(r, g, b);
414 const double min =
MIN_3(r, g, b);
415 const double delta = max - min;
416 const double delta2 = max + min;
417 const double lightness = double(0.5) * delta2;
430 if (lightness <
double(0.5))
431 colt.
m_params.
ahsl.saturation = (
unsigned short)(
round((delta / delta2) * USHRT_MAX));
433 colt.
m_params.
ahsl.saturation = (
unsigned short)(
round((delta / (
double(2.0) - delta2)) * USHRT_MAX));
437 hue = ((g -
b) /delta);
441 hue = (2.0 + (b - r) / delta);
445 hue = (4.0 + (r - g) / delta);
474 const double r =
m_params.argb.red / double(USHRT_MAX);
475 const double g =
m_params.argb.green / double(USHRT_MAX);
476 const double b =
m_params.argb.blue / double(USHRT_MAX);
482 const double k =
vMin(c,
vMin(m, y));
486 c = (c - k) / (1.0 - k);
487 m = (m - k) / (1.0 - k);
488 y = (y - k) / (1.0 - k);
510 return m_params.ahsv.saturation >> 8;
541 if (h < -1 || (
unsigned int)s > 255 || (
unsigned int)v > 255 || (
unsigned int)a > 255)
549 m_params.ahsv.alpha = (
unsigned short)(a * 0x101);
550 m_params.ahsv.hue = (
unsigned short)(h == -1 ? USHRT_MAX : (h % 360) * 100);
551 m_params.ahsv.saturation = (
unsigned short)(s * 0x101);
552 m_params.ahsv.value = (
unsigned short)(v * 0x101);
586 if (!c || !m || !y || !k)
617 m_params.acmyk.alpha = (
unsigned short)(a * 0x101);
618 m_params.acmyk.cyan = (
unsigned short)(c * 0x101);
619 m_params.acmyk.magenta = (
unsigned short)(m * 0x101);
620 m_params.acmyk.yellow = (
unsigned short)(y * 0x101);
621 m_params.acmyk.black = (
unsigned short)(k * 0x101);
635 return m_params.ahsl.saturation >> 8;
642 return m_params.ahsl.lightness >> 8;
666 if (h < -1 || (
unsigned short)s > 255 || (
unsigned short)l > 255 || (
unsigned short)a > 255)
674 m_params.ahsl.alpha = (
unsigned short)(a * 0x101);
675 m_params.ahsl.hue = (
unsigned short)(h == -1 ? USHRT_MAX : (h % 360) * 100);
676 m_params.ahsl.saturation = (
unsigned short)(s * 0x101);
677 m_params.ahsl.lightness = (
unsigned short)(l * 0x101);
691 ||
m_params.ahsl.lightness == USHRT_MAX
void getRgba(int *r, int *g, int *b, int *a=0) const
It gets the color value.
int getRed() const
It returns the red component color value (a value from 0 to 255).
int getBlue() const
It returns the blue component color value (a value from 0 to 255).
int getGreen() const
It returns the green component color value (a value from 0 to 255).
int getAlpha() const
It returns the alpha component color value (a value from 0 to 255).
A helper class for 32-bit RGBA (Red-Green-Blue-Alpha channel) color.