Replace qreal with float in QColor

There is no reason to use double precision for colors. We at most have
16 significant bits anyway.

Change-Id: I8b402cd978675b8ba7248176976d934363212ff1
Reviewed-by: Christian Ehrlicher <ch.ehrlicher@gmx.de>
This commit is contained in:
Allan Sandfeld Jensen 2020-05-26 12:33:24 +02:00
parent 25a0153802
commit 5bb4baae03
4 changed files with 302 additions and 302 deletions

View File

@ -1,6 +1,6 @@
/****************************************************************************
**
** Copyright (C) 2016 The Qt Company Ltd.
** Copyright (C) 2020 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the QtGui module of the Qt Toolkit.
@ -472,7 +472,7 @@ static QStringList get_colornames()
The alpha channel of a color can be retrieved and set using the
alpha() and setAlpha() functions if its value is an integer, and
alphaF() and setAlphaF() if its value is qreal (double). By
alphaF() and setAlphaF() if its value is float. By
default, the alpha-channel is set to 255 (opaque). To retrieve and
set \e all the RGB color components (including the alpha-channel)
in one go, use the rgba() and setRgba() functions.
@ -613,9 +613,9 @@ static QStringList get_colornames()
#define QCOLOR_REAL_RANGE_CHECK(fn, var) \
do { \
if (var < qreal(0.0) || var > qreal(1.0)) { \
if (var < 0.0f || var > 1.0f) { \
qWarning(#fn": invalid value %g", var); \
var = qMax(qreal(0.0), qMin(var, qreal(1.0))); \
var = qMax(0.0f, qMin(var, 1.0f)); \
} \
} while (0)
@ -1020,7 +1020,7 @@ QStringList QColor::colorNames()
\sa setHsv(), {QColor#The HSV Color Model}{The HSV Color Model}
*/
void QColor::getHsvF(qreal *h, qreal *s, qreal *v, qreal *a) const
void QColor::getHsvF(float *h, float *s, float *v, float *a) const
{
if (!h || !s || !v)
return;
@ -1030,12 +1030,12 @@ void QColor::getHsvF(qreal *h, qreal *s, qreal *v, qreal *a) const
return;
}
*h = ct.ahsv.hue == USHRT_MAX ? qreal(-1.0) : ct.ahsv.hue / qreal(36000.0);
*s = ct.ahsv.saturation / qreal(USHRT_MAX);
*v = ct.ahsv.value / qreal(USHRT_MAX);
*h = ct.ahsv.hue == USHRT_MAX ? -1.0f : ct.ahsv.hue / 36000.0f;
*s = ct.ahsv.saturation / float(USHRT_MAX);
*v = ct.ahsv.value / float(USHRT_MAX);
if (a)
*a = ct.ahsv.alpha / qreal(USHRT_MAX);
*a = ct.ahsv.alpha / float(USHRT_MAX);
}
/*!
@ -1074,12 +1074,12 @@ void QColor::getHsv(int *h, int *s, int *v, int *a) const
\sa getHsvF(), setHsv(), {QColor#The HSV Color Model}{The HSV Color Model}
*/
void QColor::setHsvF(qreal h, qreal s, qreal v, qreal a)
void QColor::setHsvF(float h, float s, float v, float a)
{
if (((h < qreal(0.0) || h > qreal(1.0)) && h != qreal(-1.0))
|| (s < qreal(0.0) || s > qreal(1.0))
|| (v < qreal(0.0) || v > qreal(1.0))
|| (a < qreal(0.0) || a > qreal(1.0))) {
if (((h < 0.0f || h > 1.0f) && h != -1.0f)
|| (s < 0.0f || s > 1.0f)
|| (v < 0.0f || v > 1.0f)
|| (a < 0.0f || a > 1.0f)) {
qWarning("QColor::setHsvF: HSV parameters out of range");
invalidate();
return;
@ -1087,7 +1087,7 @@ void QColor::setHsvF(qreal h, qreal s, qreal v, qreal a)
cspec = Hsv;
ct.ahsv.alpha = qRound(a * USHRT_MAX);
ct.ahsv.hue = h == qreal(-1.0) ? USHRT_MAX : qRound(h * 36000);
ct.ahsv.hue = h == -1.0f ? USHRT_MAX : qRound(h * 36000.0f);
ct.ahsv.saturation = qRound(s * USHRT_MAX);
ct.ahsv.value = qRound(v * USHRT_MAX);
ct.ahsv.pad = 0;
@ -1130,7 +1130,7 @@ void QColor::setHsv(int h, int s, int v, int a)
\sa getHsl(), setHslF(), {QColor#The HSL Color Model}{The HSL Color Model}
*/
void QColor::getHslF(qreal *h, qreal *s, qreal *l, qreal *a) const
void QColor::getHslF(float *h, float *s, float *l, float *a) const
{
if (!h || !s || !l)
return;
@ -1140,12 +1140,12 @@ void QColor::getHslF(qreal *h, qreal *s, qreal *l, qreal *a) const
return;
}
*h = ct.ahsl.hue == USHRT_MAX ? qreal(-1.0) : ct.ahsl.hue / qreal(36000.0);
*s = ct.ahsl.saturation / qreal(USHRT_MAX);
*l = ct.ahsl.lightness / qreal(USHRT_MAX);
*h = ct.ahsl.hue == USHRT_MAX ? -1.0f : ct.ahsl.hue / 36000.0f;
*s = ct.ahsl.saturation / float(USHRT_MAX);
*l = ct.ahsl.lightness / float(USHRT_MAX);
if (a)
*a = ct.ahsl.alpha / qreal(USHRT_MAX);
*a = ct.ahsl.alpha / float(USHRT_MAX);
}
/*!
@ -1188,12 +1188,12 @@ void QColor::getHsl(int *h, int *s, int *l, int *a) const
\sa getHslF(), setHsl()
*/
void QColor::setHslF(qreal h, qreal s, qreal l, qreal a)
void QColor::setHslF(float h, float s, float l, float a)
{
if (((h < qreal(0.0) || h > qreal(1.0)) && h != qreal(-1.0))
|| (s < qreal(0.0) || s > qreal(1.0))
|| (l < qreal(0.0) || l > qreal(1.0))
|| (a < qreal(0.0) || a > qreal(1.0))) {
if (((h < 0.0f || h > 1.0f) && h != -1.0f)
|| (s < 0.0f || s > 1.0f)
|| (l < 0.0f || l > 1.0f)
|| (a < 0.0f || a > 1.0f)) {
qWarning("QColor::setHslF: HSL parameters out of range");
invalidate();
return;
@ -1201,7 +1201,7 @@ void QColor::setHslF(qreal h, qreal s, qreal l, qreal a)
cspec = Hsl;
ct.ahsl.alpha = qRound(a * USHRT_MAX);
ct.ahsl.hue = h == qreal(-1.0) ? USHRT_MAX : qRound(h * 36000);
ct.ahsl.hue = h == -1.0f ? USHRT_MAX : qRound(h * 36000.0f);
ct.ahsl.saturation = qRound(s * USHRT_MAX);
ct.ahsl.lightness = qRound(l * USHRT_MAX);
ct.ahsl.pad = 0;
@ -1255,7 +1255,7 @@ static inline const qfloat16 &castF16(const quint16 &v)
\sa rgb(), setRgb()
*/
void QColor::getRgbF(qreal *r, qreal *g, qreal *b, qreal *a) const
void QColor::getRgbF(float *r, float *g, float *b, float *a) const
{
if (!r || !g || !b)
return;
@ -1269,11 +1269,11 @@ void QColor::getRgbF(qreal *r, qreal *g, qreal *b, qreal *a) const
}
if (cspec == Rgb) {
*r = ct.argb.red / qreal(USHRT_MAX);
*g = ct.argb.green / qreal(USHRT_MAX);
*b = ct.argb.blue / qreal(USHRT_MAX);
*r = ct.argb.red / float(USHRT_MAX);
*g = ct.argb.green / float(USHRT_MAX);
*b = ct.argb.blue / float(USHRT_MAX);
if (a)
*a = ct.argb.alpha / qreal(USHRT_MAX);
*a = ct.argb.alpha / float(USHRT_MAX);
} else {
*r = castF16(ct.argbExtended.redF16);
*g = castF16(ct.argbExtended.greenF16);
@ -1312,7 +1312,7 @@ void QColor::getRgb(int *r, int *g, int *b, int *a) const
}
/*!
\fn void QColor::setRgbF(qreal r, qreal g, qreal b, qreal a)
\fn void QColor::setRgbF(float r, float g, float b, float a)
Sets the color channels of this color to \a r (red), \a g (green),
\a b (blue) and \a a (alpha, transparency).
@ -1323,16 +1323,16 @@ void QColor::getRgb(int *r, int *g, int *b, int *a) const
\sa rgb(), getRgbF(), setRgb()
*/
void QColor::setRgbF(qreal r, qreal g, qreal b, qreal a)
void QColor::setRgbF(float r, float g, float b, float a)
{
if (a < qreal(0.0) || a > qreal(1.0)) {
if (a < 0.0f || a > 1.0f) {
qWarning("QColor::setRgbF: Alpha parameter is out of range");
invalidate();
return;
}
if (r < qreal(0.0) || r > qreal(1.0) ||
g < qreal(0.0) || g > qreal(1.0) ||
b < qreal(0.0) || b > qreal(1.0) || cspec == ExtendedRgb) {
if (r < 0.0f || r > 1.0f ||
g < 0.0f || g > 1.0f ||
b < 0.0f || b > 1.0f || cspec == ExtendedRgb) {
cspec = ExtendedRgb;
castF16(ct.argbExtended.redF16) = qfloat16(r);
castF16(ct.argbExtended.greenF16) = qfloat16(g);
@ -1475,7 +1475,7 @@ void QColor::setRgb(QRgb rgb) noexcept
int QColor::alpha() const noexcept
{
if (cspec == ExtendedRgb)
return qRound(qreal(castF16(ct.argbExtended.alphaF16)) * 255);
return qRound(float(castF16(ct.argbExtended.alphaF16)) * 255);
return qt_div_257(ct.argb.alpha);
}
@ -1491,7 +1491,7 @@ void QColor::setAlpha(int alpha)
{
QCOLOR_INT_RANGE_CHECK("QColor::setAlpha", alpha);
if (cspec == ExtendedRgb) {
constexpr qreal f = qreal(1.0) / 255;
constexpr float f = 1.0f / 255;
castF16(ct.argbExtended.alphaF16) = alpha * f;
return;
}
@ -1503,28 +1503,28 @@ void QColor::setAlpha(int alpha)
\sa setAlphaF(), alpha(), {QColor#Alpha-Blended Drawing}{Alpha-Blended Drawing}
*/
qreal QColor::alphaF() const noexcept
float QColor::alphaF() const noexcept
{
if (cspec == ExtendedRgb)
return castF16(ct.argbExtended.alphaF16);
return ct.argb.alpha / qreal(USHRT_MAX);
return ct.argb.alpha / float(USHRT_MAX);
}
/*!
Sets the alpha of this color to \a alpha. qreal alpha is specified in the
Sets the alpha of this color to \a alpha. float alpha is specified in the
range 0.0-1.0.
\sa alphaF(), alpha(), {QColor#Alpha-Blended Drawing}{Alpha-Blended Drawing}
*/
void QColor::setAlphaF(qreal alpha)
void QColor::setAlphaF(float alpha)
{
QCOLOR_REAL_RANGE_CHECK("QColor::setAlphaF", alpha);
if (cspec == ExtendedRgb) {
castF16(ct.argbExtended.alphaF16) = alpha;
return;
}
qreal tmp = alpha * USHRT_MAX;
float tmp = alpha * USHRT_MAX;
ct.argb.alpha = qRound(tmp);
}
@ -1617,10 +1617,10 @@ void QColor::setBlue(int blue)
\sa setRedF(), red(), getRgbF()
*/
qreal QColor::redF() const noexcept
float QColor::redF() const noexcept
{
if (cspec == Rgb || cspec == Invalid)
return ct.argb.red / qreal(USHRT_MAX);
return ct.argb.red / float(USHRT_MAX);
if (cspec == ExtendedRgb)
return castF16(ct.argbExtended.redF16);
@ -1634,9 +1634,9 @@ qreal QColor::redF() const noexcept
\sa redF(), red(), setRgbF()
*/
void QColor::setRedF(qreal red)
void QColor::setRedF(float red)
{
if (cspec == Rgb && red >= qreal(0.0) && red <= qreal(1.0))
if (cspec == Rgb && red >= 0.0f && red <= 1.0f)
ct.argb.red = qRound(red * USHRT_MAX);
else if (cspec == ExtendedRgb)
castF16(ct.argbExtended.redF16) = red;
@ -1649,10 +1649,10 @@ void QColor::setRedF(qreal red)
\sa setGreenF(), green(), getRgbF()
*/
qreal QColor::greenF() const noexcept
float QColor::greenF() const noexcept
{
if (cspec == Rgb || cspec == Invalid)
return ct.argb.green / qreal(USHRT_MAX);
return ct.argb.green / float(USHRT_MAX);
if (cspec == ExtendedRgb)
return castF16(ct.argbExtended.greenF16);
@ -1666,9 +1666,9 @@ qreal QColor::greenF() const noexcept
\sa greenF(), green(), setRgbF()
*/
void QColor::setGreenF(qreal green)
void QColor::setGreenF(float green)
{
if (cspec == Rgb && green >= qreal(0.0) && green <= qreal(1.0))
if (cspec == Rgb && green >= 0.0f && green <= 1.0f)
ct.argb.green = qRound(green * USHRT_MAX);
else if (cspec == ExtendedRgb)
castF16(ct.argbExtended.greenF16) = green;
@ -1681,10 +1681,10 @@ void QColor::setGreenF(qreal green)
\sa setBlueF(), blue(), getRgbF()
*/
qreal QColor::blueF() const noexcept
float QColor::blueF() const noexcept
{
if (cspec == Rgb || cspec == Invalid)
return ct.argb.blue / qreal(USHRT_MAX);
return ct.argb.blue / float(USHRT_MAX);
if (cspec == ExtendedRgb)
return castF16(ct.argbExtended.blueF16);
@ -1696,9 +1696,9 @@ qreal QColor::blueF() const noexcept
the 0.0-1.0 range, the color model will be changed to \c ExtendedRgb.
\sa blueF(), blue(), setRgbF()
*/
void QColor::setBlueF(qreal blue)
void QColor::setBlueF(float blue)
{
if (cspec == Rgb && blue >= qreal(0.0) && blue <= qreal(1.0))
if (cspec == Rgb && blue >= 0.0f && blue <= 1.0f)
ct.argb.blue = qRound(blue * USHRT_MAX);
else if (cspec == ExtendedRgb)
castF16(ct.argbExtended.blueF16) = blue;
@ -1776,7 +1776,7 @@ int QColor::value() const noexcept
\sa hsvHueF(), hslHueF(), hue(), getHsvF(), {QColor#The HSV Color Model}{The HSV Color Model}
*/
qreal QColor::hueF() const noexcept
float QColor::hueF() const noexcept
{
return hsvHueF();
}
@ -1787,11 +1787,11 @@ qreal QColor::hueF() const noexcept
\sa hue(), hslHueF(), getHsvF(), {QColor#The HSV Color Model}{The HSV Color
Model}
*/
qreal QColor::hsvHueF() const noexcept
float QColor::hsvHueF() const noexcept
{
if (cspec != Invalid && cspec != Hsv)
return toHsv().hueF();
return ct.ahsv.hue == USHRT_MAX ? qreal(-1.0) : ct.ahsv.hue / qreal(36000.0);
return ct.ahsv.hue == USHRT_MAX ? -1.0f : ct.ahsv.hue / 36000.0f;
}
/*!
@ -1802,7 +1802,7 @@ qreal QColor::hsvHueF() const noexcept
\sa hsvSaturationF(), hslSaturationF(), saturation(), getHsvF(), {QColor#The HSV Color Model}{The HSV Color
Model}
*/
qreal QColor::saturationF() const noexcept
float QColor::saturationF() const noexcept
{
return hsvSaturationF();
}
@ -1812,11 +1812,11 @@ qreal QColor::saturationF() const noexcept
\sa saturation(), hslSaturationF(), getHsvF(), {QColor#The HSV Color Model}{The HSV Color Model}
*/
qreal QColor::hsvSaturationF() const noexcept
float QColor::hsvSaturationF() const noexcept
{
if (cspec != Invalid && cspec != Hsv)
return toHsv().saturationF();
return ct.ahsv.saturation / qreal(USHRT_MAX);
return ct.ahsv.saturation / float(USHRT_MAX);
}
/*!
@ -1824,11 +1824,11 @@ qreal QColor::hsvSaturationF() const noexcept
\sa value(), getHsvF(), {QColor#The HSV Color Model}{The HSV Color Model}
*/
qreal QColor::valueF() const noexcept
float QColor::valueF() const noexcept
{
if (cspec != Invalid && cspec != Hsv)
return toHsv().valueF();
return ct.ahsv.value / qreal(USHRT_MAX);
return ct.ahsv.value / float(USHRT_MAX);
}
/*!
@ -1880,11 +1880,11 @@ int QColor::lightness() const noexcept
\sa hslHue(), hsvHueF(), getHslF()
*/
qreal QColor::hslHueF() const noexcept
float QColor::hslHueF() const noexcept
{
if (cspec != Invalid && cspec != Hsl)
return toHsl().hslHueF();
return ct.ahsl.hue == USHRT_MAX ? qreal(-1.0) : ct.ahsl.hue / qreal(36000.0);
return ct.ahsl.hue == USHRT_MAX ? -1.0f : ct.ahsl.hue / 36000.0f;
}
/*!
@ -1894,11 +1894,11 @@ qreal QColor::hslHueF() const noexcept
\sa hslSaturation(), hsvSaturationF(), getHslF(), {QColor#The HSL Color Model}{The HSL Color Model}
*/
qreal QColor::hslSaturationF() const noexcept
float QColor::hslSaturationF() const noexcept
{
if (cspec != Invalid && cspec != Hsl)
return toHsl().hslSaturationF();
return ct.ahsl.saturation / qreal(USHRT_MAX);
return ct.ahsl.saturation / float(USHRT_MAX);
}
/*!
@ -1908,11 +1908,11 @@ qreal QColor::hslSaturationF() const noexcept
\sa value(), getHslF()
*/
qreal QColor::lightnessF() const noexcept
float QColor::lightnessF() const noexcept
{
if (cspec != Invalid && cspec != Hsl)
return toHsl().lightnessF();
return ct.ahsl.lightness / qreal(USHRT_MAX);
return ct.ahsl.lightness / float(USHRT_MAX);
}
/*!
@ -1969,11 +1969,11 @@ int QColor::black() const noexcept
\sa cyan(), getCmykF(), {QColor#The CMYK Color Model}{The CMYK Color Model}
*/
qreal QColor::cyanF() const noexcept
float QColor::cyanF() const noexcept
{
if (cspec != Invalid && cspec != Cmyk)
return toCmyk().cyanF();
return ct.acmyk.cyan / qreal(USHRT_MAX);
return ct.acmyk.cyan / float(USHRT_MAX);
}
/*!
@ -1981,11 +1981,11 @@ qreal QColor::cyanF() const noexcept
\sa magenta(), getCmykF(), {QColor#The CMYK Color Model}{The CMYK Color Model}
*/
qreal QColor::magentaF() const noexcept
float QColor::magentaF() const noexcept
{
if (cspec != Invalid && cspec != Cmyk)
return toCmyk().magentaF();
return ct.acmyk.magenta / qreal(USHRT_MAX);
return ct.acmyk.magenta / float(USHRT_MAX);
}
/*!
@ -1993,11 +1993,11 @@ qreal QColor::magentaF() const noexcept
\sa yellow(), getCmykF(), {QColor#The CMYK Color Model}{The CMYK Color Model}
*/
qreal QColor::yellowF() const noexcept
float QColor::yellowF() const noexcept
{
if (cspec != Invalid && cspec != Cmyk)
return toCmyk().yellowF();
return ct.acmyk.yellow / qreal(USHRT_MAX);
return ct.acmyk.yellow / float(USHRT_MAX);
}
/*!
@ -2005,11 +2005,11 @@ qreal QColor::yellowF() const noexcept
\sa black(), getCmykF(), {QColor#The CMYK Color Model}{The CMYK Color Model}
*/
qreal QColor::blackF() const noexcept
float QColor::blackF() const noexcept
{
if (cspec != Invalid && cspec != Cmyk)
return toCmyk().blackF();
return ct.acmyk.black / qreal(USHRT_MAX);
return ct.acmyk.black / float(USHRT_MAX);
}
/*!
@ -2025,7 +2025,7 @@ QColor QColor::toExtendedRgb() const noexcept
if (cspec != Rgb)
return toRgb().toExtendedRgb();
constexpr qreal f = qreal(1.0) / USHRT_MAX;
constexpr float f = 1.0f / USHRT_MAX;
QColor color;
color.cspec = ExtendedRgb;
castF16(color.ct.argbExtended.alphaF16) = qfloat16(ct.argb.alpha * f);
@ -2062,15 +2062,15 @@ QColor QColor::toRgb() const noexcept
}
// chromatic case
const qreal h = ct.ahsv.hue == 36000 ? 0 : ct.ahsv.hue / 6000.;
const qreal s = ct.ahsv.saturation / qreal(USHRT_MAX);
const qreal v = ct.ahsv.value / qreal(USHRT_MAX);
const float h = ct.ahsv.hue == 36000 ? 0.0f : ct.ahsv.hue / 6000.0f;
const float s = ct.ahsv.saturation / float(USHRT_MAX);
const float v = ct.ahsv.value / float(USHRT_MAX);
const int i = int(h);
const qreal f = h - i;
const qreal p = v * (qreal(1.0) - s);
const float f = h - i;
const float p = v * (1.0f - s);
if (i & 1) {
const qreal q = v * (qreal(1.0) - (s * f));
const float q = v * (1.0f - (s * f));
switch (i) {
case 1:
@ -2090,7 +2090,7 @@ QColor QColor::toRgb() const noexcept
break;
}
} else {
const qreal t = v * (qreal(1.0) - (s * (qreal(1.0) - f)));
const float t = v * (1.0f - (s * (1.0f - f)));
switch (i) {
case 0:
@ -2122,34 +2122,34 @@ QColor QColor::toRgb() const noexcept
color.ct.argb.red = color.ct.argb.green = color.ct.argb.blue = 0;
} else {
// chromatic case
const qreal h = ct.ahsl.hue == 36000 ? 0 : ct.ahsl.hue / 36000.;
const qreal s = ct.ahsl.saturation / qreal(USHRT_MAX);
const qreal l = ct.ahsl.lightness / qreal(USHRT_MAX);
const float h = ct.ahsl.hue == 36000 ? 0.0f : ct.ahsl.hue / 36000.0f;
const float s = ct.ahsl.saturation / float(USHRT_MAX);
const float l = ct.ahsl.lightness / float(USHRT_MAX);
qreal temp2;
if (l < qreal(0.5))
temp2 = l * (qreal(1.0) + s);
float temp2;
if (l < 0.5f)
temp2 = l * (1.0f + s);
else
temp2 = l + s - (l * s);
const qreal temp1 = (qreal(2.0) * l) - temp2;
qreal temp3[3] = { h + (qreal(1.0) / qreal(3.0)),
const float temp1 = (2.0f * l) - temp2;
float temp3[3] = { h + (1.0f / 3.0f),
h,
h - (qreal(1.0) / qreal(3.0)) };
h - (1.0f / 3.0f) };
for (int i = 0; i != 3; ++i) {
if (temp3[i] < qreal(0.0))
temp3[i] += qreal(1.0);
else if (temp3[i] > qreal(1.0))
temp3[i] -= qreal(1.0);
if (temp3[i] < 0.0f)
temp3[i] += 1.0f;
else if (temp3[i] > 1.0f)
temp3[i] -= 1.0f;
const qreal sixtemp3 = temp3[i] * qreal(6.0);
if (sixtemp3 < qreal(1.0))
const float sixtemp3 = temp3[i] * 6.0f;
if (sixtemp3 < 1.0f)
color.ct.array[i+1] = qRound((temp1 + (temp2 - temp1) * sixtemp3) * USHRT_MAX);
else if ((temp3[i] * qreal(2.0)) < qreal(1.0))
else if ((temp3[i] * 2.0f) < 1.0f)
color.ct.array[i+1] = qRound(temp2 * USHRT_MAX);
else if ((temp3[i] * qreal(3.0)) < qreal(2.0))
color.ct.array[i+1] = qRound((temp1 + (temp2 -temp1) * (qreal(2.0) /qreal(3.0) - temp3[i]) * qreal(6.0)) * USHRT_MAX);
else if ((temp3[i] * 3.0f) < 2.0f)
color.ct.array[i+1] = qRound((temp1 + (temp2 -temp1) * (2.0f /3.0f - temp3[i]) * 6.0f) * USHRT_MAX);
else
color.ct.array[i+1] = qRound(temp1 * USHRT_MAX);
}
@ -2161,21 +2161,21 @@ QColor QColor::toRgb() const noexcept
}
case Cmyk:
{
const qreal c = ct.acmyk.cyan / qreal(USHRT_MAX);
const qreal m = ct.acmyk.magenta / qreal(USHRT_MAX);
const qreal y = ct.acmyk.yellow / qreal(USHRT_MAX);
const qreal k = ct.acmyk.black / qreal(USHRT_MAX);
const float c = ct.acmyk.cyan / float(USHRT_MAX);
const float m = ct.acmyk.magenta / float(USHRT_MAX);
const float y = ct.acmyk.yellow / float(USHRT_MAX);
const float k = ct.acmyk.black / float(USHRT_MAX);
color.ct.argb.red = qRound((qreal(1.0) - (c * (qreal(1.0) - k) + k)) * USHRT_MAX);
color.ct.argb.green = qRound((qreal(1.0) - (m * (qreal(1.0) - k) + k)) * USHRT_MAX);
color.ct.argb.blue = qRound((qreal(1.0) - (y * (qreal(1.0) - k) + k)) * USHRT_MAX);
color.ct.argb.red = qRound((1.0f - (c * (1.0f - k) + k)) * USHRT_MAX);
color.ct.argb.green = qRound((1.0f - (m * (1.0f - k) + k)) * USHRT_MAX);
color.ct.argb.blue = qRound((1.0f - (y * (1.0f - k) + k)) * USHRT_MAX);
break;
}
case ExtendedRgb:
color.ct.argb.alpha = qRound(USHRT_MAX * qreal(castF16(ct.argbExtended.alphaF16)));
color.ct.argb.red = qRound(USHRT_MAX * qBound(qreal(0.0), qreal(castF16(ct.argbExtended.redF16)), qreal(1.0)));
color.ct.argb.green = qRound(USHRT_MAX * qBound(qreal(0.0), qreal(castF16(ct.argbExtended.greenF16)), qreal(1.0)));
color.ct.argb.blue = qRound(USHRT_MAX * qBound(qreal(0.0), qreal(castF16(ct.argbExtended.blueF16)), qreal(1.0)));
color.ct.argb.alpha = qRound(USHRT_MAX * float(castF16(ct.argbExtended.alphaF16)));
color.ct.argb.red = qRound(USHRT_MAX * qBound(0.0f, float(castF16(ct.argbExtended.redF16)), 1.0f));
color.ct.argb.green = qRound(USHRT_MAX * qBound(0.0f, float(castF16(ct.argbExtended.greenF16)), 1.0f));
color.ct.argb.blue = qRound(USHRT_MAX * qBound(0.0f, float(castF16(ct.argbExtended.blueF16)), 1.0f));
break;
default:
break;
@ -2207,12 +2207,12 @@ QColor QColor::toHsv() const noexcept
color.ct.ahsv.alpha = ct.argb.alpha;
color.ct.ahsv.pad = 0;
const qreal r = ct.argb.red / qreal(USHRT_MAX);
const qreal g = ct.argb.green / qreal(USHRT_MAX);
const qreal b = ct.argb.blue / qreal(USHRT_MAX);
const qreal max = Q_MAX_3(r, g, b);
const qreal min = Q_MIN_3(r, g, b);
const qreal delta = max - min;
const float r = ct.argb.red / float(USHRT_MAX);
const float g = ct.argb.green / float(USHRT_MAX);
const float b = ct.argb.blue / float(USHRT_MAX);
const float max = Q_MAX_3(r, g, b);
const float min = Q_MIN_3(r, g, b);
const float delta = max - min;
color.ct.ahsv.value = qRound(max * USHRT_MAX);
if (qFuzzyIsNull(delta)) {
// achromatic case, hue is undefined
@ -2220,21 +2220,21 @@ QColor QColor::toHsv() const noexcept
color.ct.ahsv.saturation = 0;
} else {
// chromatic case
qreal hue = 0;
float hue = 0;
color.ct.ahsv.saturation = qRound((delta / max) * USHRT_MAX);
if (qFuzzyCompare(r, max)) {
hue = ((g - b) /delta);
} else if (qFuzzyCompare(g, max)) {
hue = (qreal(2.0) + (b - r) / delta);
hue = (2.0f + (b - r) / delta);
} else if (qFuzzyCompare(b, max)) {
hue = (qreal(4.0) + (r - g) / delta);
hue = (4.0f + (r - g) / delta);
} else {
Q_ASSERT_X(false, "QColor::toHsv", "internal error");
}
hue *= qreal(60.0);
if (hue < qreal(0.0))
hue += qreal(360.0);
color.ct.ahsv.hue = qRound(hue * 100);
hue *= 60.0f;
if (hue < 0.0f)
hue += 360.0f;
color.ct.ahsv.hue = qRound(hue * 100.0f);
}
return color;
@ -2258,14 +2258,14 @@ QColor QColor::toHsl() const noexcept
color.ct.ahsl.alpha = ct.argb.alpha;
color.ct.ahsl.pad = 0;
const qreal r = ct.argb.red / qreal(USHRT_MAX);
const qreal g = ct.argb.green / qreal(USHRT_MAX);
const qreal b = ct.argb.blue / qreal(USHRT_MAX);
const qreal max = Q_MAX_3(r, g, b);
const qreal min = Q_MIN_3(r, g, b);
const qreal delta = max - min;
const qreal delta2 = max + min;
const qreal lightness = qreal(0.5) * delta2;
const float r = ct.argb.red / float(USHRT_MAX);
const float g = ct.argb.green / float(USHRT_MAX);
const float b = ct.argb.blue / float(USHRT_MAX);
const float max = Q_MAX_3(r, g, b);
const float min = Q_MIN_3(r, g, b);
const float delta = max - min;
const float delta2 = max + min;
const float lightness = 0.5f * delta2;
color.ct.ahsl.lightness = qRound(lightness * USHRT_MAX);
if (qFuzzyIsNull(delta)) {
// achromatic case, hue is undefined
@ -2273,24 +2273,24 @@ QColor QColor::toHsl() const noexcept
color.ct.ahsl.saturation = 0;
} else {
// chromatic case
qreal hue = 0;
if (lightness < qreal(0.5))
float hue = 0;
if (lightness < 0.5f)
color.ct.ahsl.saturation = qRound((delta / delta2) * USHRT_MAX);
else
color.ct.ahsl.saturation = qRound((delta / (qreal(2.0) - delta2)) * USHRT_MAX);
color.ct.ahsl.saturation = qRound((delta / (2.0f - delta2)) * USHRT_MAX);
if (qFuzzyCompare(r, max)) {
hue = ((g - b) /delta);
} else if (qFuzzyCompare(g, max)) {
hue = (qreal(2.0) + (b - r) / delta);
hue = (2.0f + (b - r) / delta);
} else if (qFuzzyCompare(b, max)) {
hue = (qreal(4.0) + (r - g) / delta);
hue = (4.0f + (r - g) / delta);
} else {
Q_ASSERT_X(false, "QColor::toHsv", "internal error");
}
hue *= qreal(60.0);
if (hue < qreal(0.0))
hue += qreal(360.0);
color.ct.ahsl.hue = qRound(hue * 100);
hue *= 60.0f;
if (hue < 0.0f)
hue += 360.0f;
color.ct.ahsl.hue = qRound(hue * 100.0f);
}
return color;
@ -2320,18 +2320,18 @@ QColor QColor::toCmyk() const noexcept
color.ct.acmyk.black = USHRT_MAX;
} else {
// rgb -> cmy
const qreal r = ct.argb.red / qreal(USHRT_MAX);
const qreal g = ct.argb.green / qreal(USHRT_MAX);
const qreal b = ct.argb.blue / qreal(USHRT_MAX);
qreal c = qreal(1.0) - r;
qreal m = qreal(1.0) - g;
qreal y = qreal(1.0) - b;
const float r = ct.argb.red / float(USHRT_MAX);
const float g = ct.argb.green / float(USHRT_MAX);
const float b = ct.argb.blue / float(USHRT_MAX);
float c = 1.0f - r;
float m = 1.0f - g;
float y = 1.0f - b;
// cmy -> cmyk
const qreal k = qMin(c, qMin(m, y));
c = (c - k) / (qreal(1.0) - k);
m = (m - k) / (qreal(1.0) - k);
y = (y - k) / (qreal(1.0) - k);
const float k = qMin(c, qMin(m, y));
c = (c - k) / (1.0f - k);
m = (m - k) / (1.0f - k);
y = (y - k) / (1.0f - k);
color.ct.acmyk.cyan = qRound(c * USHRT_MAX);
color.ct.acmyk.magenta = qRound(m * USHRT_MAX);
@ -2433,16 +2433,16 @@ QColor QColor::fromRgb(int r, int g, int b, int a)
\sa fromRgb(), fromRgba64(), toRgb(), isValid()
*/
QColor QColor::fromRgbF(qreal r, qreal g, qreal b, qreal a)
QColor QColor::fromRgbF(float r, float g, float b, float a)
{
if (a < qreal(0.0) || a > qreal(1.0)) {
if (a < 0.0f || a > 1.0f) {
qWarning("QColor::fromRgbF: Alpha parameter out of range");
return QColor();
}
if (r < qreal(0.0) || r > qreal(1.0)
|| g < qreal(0.0) || g > qreal(1.0)
|| b < qreal(0.0) || b > qreal(1.0)) {
if (r < 0.0f || r > 1.0f
|| g < 0.0f || g > 1.0f
|| b < 0.0f || b > 1.0f) {
QColor color;
color.cspec = ExtendedRgb;
castF16(color.ct.argbExtended.alphaF16) = qfloat16(a);
@ -2536,12 +2536,12 @@ QColor QColor::fromHsv(int h, int s, int v, int a)
\sa toHsv(), fromHsv(), isValid(), {QColor#The HSV Color Model}{The HSV Color Model}
*/
QColor QColor::fromHsvF(qreal h, qreal s, qreal v, qreal a)
QColor QColor::fromHsvF(float h, float s, float v, float a)
{
if (((h < qreal(0.0) || h > qreal(1.0)) && h != qreal(-1.0))
|| (s < qreal(0.0) || s > qreal(1.0))
|| (v < qreal(0.0) || v > qreal(1.0))
|| (a < qreal(0.0) || a > qreal(1.0))) {
if (((h < 0.0f || h > 1.0f) && h != -1.0f)
|| (s < 0.0f || s > 1.0f)
|| (v < 0.0f || v > 1.0f)
|| (a < 0.0f || a > 1.0f)) {
qWarning("QColor::fromHsvF: HSV parameters out of range");
return QColor();
}
@ -2549,7 +2549,7 @@ QColor QColor::fromHsvF(qreal h, qreal s, qreal v, qreal a)
QColor color;
color.cspec = Hsv;
color.ct.ahsv.alpha = qRound(a * USHRT_MAX);
color.ct.ahsv.hue = h == qreal(-1.0) ? USHRT_MAX : qRound(h * 36000);
color.ct.ahsv.hue = h == -1.0f ? USHRT_MAX : qRound(h * 36000.0f);
color.ct.ahsv.saturation = qRound(s * USHRT_MAX);
color.ct.ahsv.value = qRound(v * USHRT_MAX);
color.ct.ahsv.pad = 0;
@ -2600,12 +2600,12 @@ QColor QColor::fromHsl(int h, int s, int l, int a)
\sa toHsl(), fromHsl(), isValid(), {QColor#The HSL Color Model}{The HSL Color Model}
*/
QColor QColor::fromHslF(qreal h, qreal s, qreal l, qreal a)
QColor QColor::fromHslF(float h, float s, float l, float a)
{
if (((h < qreal(0.0) || h > qreal(1.0)) && h != qreal(-1.0))
|| (s < qreal(0.0) || s > qreal(1.0))
|| (l < qreal(0.0) || l > qreal(1.0))
|| (a < qreal(0.0) || a > qreal(1.0))) {
if (((h < 0.0f || h > 1.0f) && h != -1.0f)
|| (s < 0.0f || s > 1.0f)
|| (l < 0.0f || l > 1.0f)
|| (a < 0.0f || a > 1.0f)) {
qWarning("QColor::fromHslF: HSL parameters out of range");
return QColor();
}
@ -2613,7 +2613,7 @@ QColor QColor::fromHslF(qreal h, qreal s, qreal l, qreal a)
QColor color;
color.cspec = Hsl;
color.ct.ahsl.alpha = qRound(a * USHRT_MAX);
color.ct.ahsl.hue = (h == qreal(-1.0)) ? USHRT_MAX : qRound(h * 36000);
color.ct.ahsl.hue = (h == -1.0f) ? USHRT_MAX : qRound(h * 36000.0f);
if (color.ct.ahsl.hue == 36000)
color.ct.ahsl.hue = 0;
color.ct.ahsl.saturation = qRound(s * USHRT_MAX);
@ -2661,7 +2661,7 @@ void QColor::getCmyk(int *c, int *m, int *y, int *k, int *a) const
\sa setCmykF(), {QColor#The CMYK Color Model}{The CMYK Color Model}
*/
void QColor::getCmykF(qreal *c, qreal *m, qreal *y, qreal *k, qreal *a) const
void QColor::getCmykF(float *c, float *m, float *y, float *k, float *a) const
{
if (!c || !m || !y || !k)
return;
@ -2671,13 +2671,13 @@ void QColor::getCmykF(qreal *c, qreal *m, qreal *y, qreal *k, qreal *a) const
return;
}
*c = ct.acmyk.cyan / qreal(USHRT_MAX);
*m = ct.acmyk.magenta / qreal(USHRT_MAX);
*y = ct.acmyk.yellow / qreal(USHRT_MAX);
*k = ct.acmyk.black / qreal(USHRT_MAX);
*c = ct.acmyk.cyan / float(USHRT_MAX);
*m = ct.acmyk.magenta / float(USHRT_MAX);
*y = ct.acmyk.yellow / float(USHRT_MAX);
*k = ct.acmyk.black / float(USHRT_MAX);
if (a)
*a = ct.acmyk.alpha / qreal(USHRT_MAX);
*a = ct.acmyk.alpha / float(USHRT_MAX);
}
/*!
@ -2718,13 +2718,13 @@ void QColor::setCmyk(int c, int m, int y, int k, int a)
\sa getCmykF(), setCmyk(), {QColor#The CMYK Color Model}{The CMYK Color Model}
*/
void QColor::setCmykF(qreal c, qreal m, qreal y, qreal k, qreal a)
void QColor::setCmykF(float c, float m, float y, float k, float a)
{
if (c < qreal(0.0) || c > qreal(1.0)
|| m < qreal(0.0) || m > qreal(1.0)
|| y < qreal(0.0) || y > qreal(1.0)
|| k < qreal(0.0) || k > qreal(1.0)
|| a < qreal(0.0) || a > qreal(1.0)) {
if (c < 0.0f || c > 1.0f
|| m < 0.0f || m > 1.0f
|| y < 0.0f || y > 1.0f
|| k < 0.0f || k > 1.0f
|| a < 0.0f || a > 1.0f) {
qWarning("QColor::setCmykF: CMYK parameters out of range");
invalidate();
return;
@ -2779,13 +2779,13 @@ QColor QColor::fromCmyk(int c, int m, int y, int k, int a)
\sa toCmyk(), fromCmyk(), isValid(), {QColor#The CMYK Color Model}{The CMYK Color Model}
*/
QColor QColor::fromCmykF(qreal c, qreal m, qreal y, qreal k, qreal a)
QColor QColor::fromCmykF(float c, float m, float y, float k, float a)
{
if (c < qreal(0.0) || c > qreal(1.0)
|| m < qreal(0.0) || m > qreal(1.0)
|| y < qreal(0.0) || y > qreal(1.0)
|| k < qreal(0.0) || k > qreal(1.0)
|| a < qreal(0.0) || a > qreal(1.0)) {
if (c < 0.0f || c > 1.0f
|| m < 0.0f || m > 1.0f
|| y < 0.0f || y > 1.0f
|| k < 0.0f || k > 1.0f
|| a < 0.0f || a > 1.0f) {
qWarning("QColor::fromCmykF: CMYK parameters out of range");
return QColor();
}

View File

@ -1,6 +1,6 @@
/****************************************************************************
**
** Copyright (C) 2016 The Qt Company Ltd.
** Copyright (C) 2020 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the QtGui module of the Qt Toolkit.
@ -109,8 +109,8 @@ public:
int alpha() const noexcept;
void setAlpha(int alpha);
qreal alphaF() const noexcept;
void setAlphaF(qreal alpha);
float alphaF() const noexcept;
void setAlphaF(float alpha);
int red() const noexcept;
int green() const noexcept;
@ -119,18 +119,18 @@ public:
void setGreen(int green);
void setBlue(int blue);
qreal redF() const noexcept;
qreal greenF() const noexcept;
qreal blueF() const noexcept;
void setRedF(qreal red);
void setGreenF(qreal green);
void setBlueF(qreal blue);
float redF() const noexcept;
float greenF() const noexcept;
float blueF() const noexcept;
void setRedF(float red);
void setGreenF(float green);
void setBlueF(float blue);
void getRgb(int *r, int *g, int *b, int *a = nullptr) const;
void setRgb(int r, int g, int b, int a = 255);
void getRgbF(qreal *r, qreal *g, qreal *b, qreal *a = nullptr) const;
void setRgbF(qreal r, qreal g, qreal b, qreal a = 1.0);
void getRgbF(float *r, float *g, float *b, float *a = nullptr) const;
void setRgbF(float r, float g, float b, float a = 1.0);
QRgba64 rgba64() const noexcept;
void setRgba64(QRgba64 rgba) noexcept;
@ -147,47 +147,47 @@ public:
int hsvSaturation() const noexcept;
int value() const noexcept;
qreal hueF() const noexcept; // 0.0 <= hueF < 360.0
qreal saturationF() const noexcept;
qreal hsvHueF() const noexcept; // 0.0 <= hueF < 360.0
qreal hsvSaturationF() const noexcept;
qreal valueF() const noexcept;
float hueF() const noexcept; // 0.0 <= hueF < 360.0
float saturationF() const noexcept;
float hsvHueF() const noexcept; // 0.0 <= hueF < 360.0
float hsvSaturationF() const noexcept;
float valueF() const noexcept;
void getHsv(int *h, int *s, int *v, int *a = nullptr) const;
void setHsv(int h, int s, int v, int a = 255);
void getHsvF(qreal *h, qreal *s, qreal *v, qreal *a = nullptr) const;
void setHsvF(qreal h, qreal s, qreal v, qreal a = 1.0);
void getHsvF(float *h, float *s, float *v, float *a = nullptr) const;
void setHsvF(float h, float s, float v, float a = 1.0);
int cyan() const noexcept;
int magenta() const noexcept;
int yellow() const noexcept;
int black() const noexcept;
qreal cyanF() const noexcept;
qreal magentaF() const noexcept;
qreal yellowF() const noexcept;
qreal blackF() const noexcept;
float cyanF() const noexcept;
float magentaF() const noexcept;
float yellowF() const noexcept;
float blackF() const noexcept;
void getCmyk(int *c, int *m, int *y, int *k, int *a = nullptr) const;
void setCmyk(int c, int m, int y, int k, int a = 255);
void getCmykF(qreal *c, qreal *m, qreal *y, qreal *k, qreal *a = nullptr) const;
void setCmykF(qreal c, qreal m, qreal y, qreal k, qreal a = 1.0);
void getCmykF(float *c, float *m, float *y, float *k, float *a = nullptr) const;
void setCmykF(float c, float m, float y, float k, float a = 1.0);
int hslHue() const noexcept; // 0 <= hue < 360
int hslSaturation() const noexcept;
int lightness() const noexcept;
qreal hslHueF() const noexcept; // 0.0 <= hueF < 360.0
qreal hslSaturationF() const noexcept;
qreal lightnessF() const noexcept;
float hslHueF() const noexcept; // 0.0 <= hueF < 360.0
float hslSaturationF() const noexcept;
float lightnessF() const noexcept;
void getHsl(int *h, int *s, int *l, int *a = nullptr) const;
void setHsl(int h, int s, int l, int a = 255);
void getHslF(qreal *h, qreal *s, qreal *l, qreal *a = nullptr) const;
void setHslF(qreal h, qreal s, qreal l, qreal a = 1.0);
void getHslF(float *h, float *s, float *l, float *a = nullptr) const;
void setHslF(float h, float s, float l, float a = 1.0);
QColor toRgb() const noexcept;
QColor toHsv() const noexcept;
@ -201,19 +201,19 @@ public:
static QColor fromRgba(QRgb rgba) noexcept;
static QColor fromRgb(int r, int g, int b, int a = 255);
static QColor fromRgbF(qreal r, qreal g, qreal b, qreal a = 1.0);
static QColor fromRgbF(float r, float g, float b, float a = 1.0);
static QColor fromRgba64(ushort r, ushort g, ushort b, ushort a = USHRT_MAX) noexcept;
static QColor fromRgba64(QRgba64 rgba) noexcept;
static QColor fromHsv(int h, int s, int v, int a = 255);
static QColor fromHsvF(qreal h, qreal s, qreal v, qreal a = 1.0);
static QColor fromHsvF(float h, float s, float v, float a = 1.0);
static QColor fromCmyk(int c, int m, int y, int k, int a = 255);
static QColor fromCmykF(qreal c, qreal m, qreal y, qreal k, qreal a = 1.0);
static QColor fromCmykF(float c, float m, float y, float k, float a = 1.0);
static QColor fromHsl(int h, int s, int l, int a = 255);
static QColor fromHslF(qreal h, qreal s, qreal l, qreal a = 1.0);
static QColor fromHslF(float h, float s, float l, float a = 1.0);
Q_REQUIRED_RESULT QColor lighter(int f = 150) const noexcept;
Q_REQUIRED_RESULT QColor darker(int f = 200) const noexcept;

View File

@ -1,6 +1,6 @@
/****************************************************************************
**
** Copyright (C) 2016 The Qt Company Ltd.
** Copyright (C) 2020 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the test suite of the Qt Toolkit.
@ -136,16 +136,16 @@ void tst_QColor::getSetCheck()
obj1.setAlpha(INT_MAX);
QCOMPARE(obj1.alpha(), 255); // range<0, 255>
// qreal QColor::alphaF()
// void QColor::setAlphaF(qreal)
// float QColor::alphaF()
// void QColor::setAlphaF(float)
obj1.setAlphaF(0.0);
QCOMPARE(obj1.alphaF(), qreal(0.0)); // range<0.0, 1.0>
QCOMPARE(obj1.alphaF(), 0.0f); // range<0.0, 1.0>
obj1.setAlphaF(-0.2);
QCOMPARE(obj1.alphaF(), qreal(0.0)); // range<0.0, 1.0>
QCOMPARE(obj1.alphaF(), 0.0f); // range<0.0, 1.0>
obj1.setAlphaF(1.0);
QCOMPARE(obj1.alphaF(), qreal(1.0)); // range<0.0, 1.0>
QCOMPARE(obj1.alphaF(), 1.0f); // range<0.0, 1.0>
obj1.setAlphaF(1.1);
QCOMPARE(obj1.alphaF(), qreal(1.0)); // range<0.0, 1.0>
QCOMPARE(obj1.alphaF(), 1.0f); // range<0.0, 1.0>
// int QColor::red()
// void QColor::setRed(int)
@ -186,32 +186,32 @@ void tst_QColor::getSetCheck()
obj1.setBlue(INT_MAX);
QCOMPARE(obj1.blue(), 255); // range<0, 255>
// qreal QColor::redF()
// void QColor::setRedF(qreal)
// float QColor::redF()
// void QColor::setRedF(float)
obj1.setRedF(0.0);
QCOMPARE(obj1.redF(), qreal(0.0));
QCOMPARE(obj1.redF(), 0.0f);
obj1.setRedF(-0.25);
QCOMPARE(obj1.redF(), qreal(-0.25));
QCOMPARE(obj1.redF(), -0.25f);
obj1.setRedF(1.25);
QCOMPARE(obj1.redF(), qreal(1.25));
QCOMPARE(obj1.redF(), 1.25f);
// qreal QColor::greenF()
// void QColor::setGreenF(qreal)
// float QColor::greenF()
// void QColor::setGreenF(float)
obj1.setGreenF(0.0);
QCOMPARE(obj1.greenF(), qreal(0.0));
QCOMPARE(obj1.greenF(), 0.0f);
obj1.setGreenF(-0.25);
QCOMPARE(obj1.greenF(), qreal(-0.25));
QCOMPARE(obj1.greenF(), -0.25f);
obj1.setGreenF(1.5);
QCOMPARE(obj1.greenF(), qreal(1.5));
QCOMPARE(obj1.greenF(), 1.5f);
// qreal QColor::blueF()
// void QColor::setBlueF(qreal)
// float QColor::blueF()
// void QColor::setBlueF(float)
obj1.setBlueF(0.0);
QCOMPARE(obj1.blueF(), qreal(0.0));
QCOMPARE(obj1.blueF(), 0.0f);
obj1.setBlueF(-0.5);
QCOMPARE(obj1.blueF(), qreal(-0.5));
QCOMPARE(obj1.blueF(), -0.5f);
obj1.setBlueF(2.0);
QCOMPARE(obj1.blueF(), qreal(2.0));
QCOMPARE(obj1.blueF(), 2.0f);
// QRgb QColor::rgba()
// void QColor::setRgba(QRgb)
@ -829,8 +829,8 @@ void tst_QColor::setRed()
c = QColor(Qt::blue).toHsv();
c.setRedF(0.5);
QVERIFY(veryFuzzyCompare(c.redF(), 0.5));
QCOMPARE(c.greenF(), qreal(0.0));
QCOMPARE(c.blueF(), qreal(1.0));
QCOMPARE(c.greenF(), 0.0f);
QCOMPARE(c.blueF(), 1.0f);
}
void tst_QColor::setGreen()
@ -843,9 +843,9 @@ void tst_QColor::setGreen()
c = QColor(Qt::blue).toHsv();
c.setGreenF(0.5);
QCOMPARE(c.redF(), qreal(0.0));
QCOMPARE(c.redF(), 0.0f);
QVERIFY(veryFuzzyCompare(c.greenF(), 0.5));
QCOMPARE(c.blueF(), qreal(1.0));
QCOMPARE(c.blueF(), 1.0f);
}
void tst_QColor::setBlue()
@ -858,8 +858,8 @@ void tst_QColor::setBlue()
c = QColor(Qt::red).toHsv();
c.setBlueF(0.5);
QCOMPARE(c.redF(), qreal(1.0));
QCOMPARE(c.greenF(), qreal(0.0));
QCOMPARE(c.redF(), 1.0f);
QCOMPARE(c.greenF(), 0.0f);
QVERIFY(veryFuzzyCompare(c.blueF(), 0.5));
}
@ -945,11 +945,11 @@ void tst_QColor::setRgbF()
for (int A = 0; A <= USHRT_MAX; ++A) {
{
// 0.0-1.0
qreal a = A / qreal(USHRT_MAX);
float a = A / float(USHRT_MAX);
color.setRgbF(0.0, 0.0, 0.0, a);
QCOMPARE(color.alphaF(), a);
qreal r, g, b, a2;
float r, g, b, a2;
color.getRgbF(&r, &g, &b, &a2);
QCOMPARE(a2, a);
@ -963,11 +963,11 @@ void tst_QColor::setRgbF()
for (int R = 0; R <= USHRT_MAX; ++R) {
{
// 0.0-1.0
qreal r = R / qreal(USHRT_MAX);
float r = R / float(USHRT_MAX);
color.setRgbF(r, 0.0, 0.0);
QCOMPARE(color.redF(), r);
qreal r2, g, b, a;
float r2, g, b, a;
color.getRgbF(&r2, &g, &b, &a);
QCOMPARE(r2, r);
}
@ -976,11 +976,11 @@ void tst_QColor::setRgbF()
for (int G = 0; G <= USHRT_MAX; ++G) {
{
// 0.0-1.0
qreal g = G / qreal(USHRT_MAX);
float g = G / float(USHRT_MAX);
color.setRgbF(0.0, g, 0.0);
QCOMPARE(color.greenF(), g);
qreal r, g2, b, a;
float r, g2, b, a;
color.getRgbF(&r, &g2, &b, &a);
QCOMPARE(g2, g);
}
@ -989,11 +989,11 @@ void tst_QColor::setRgbF()
for (int B = 0; B <= USHRT_MAX; ++B) {
{
// 0.0-1.0
qreal b = B / qreal(USHRT_MAX);
float b = B / float(USHRT_MAX);
color.setRgbF(0.0, 0.0, b);
QCOMPARE(color.blueF(), b);
qreal r, g, b2, a;
float r, g, b2, a;
color.getRgbF(&r, &g, &b2, &a);
QCOMPARE(b2, b);
}
@ -1002,11 +1002,11 @@ void tst_QColor::setRgbF()
for (int R = -128; R <= 512; ++R) {
{
// extended RGB
qreal r = R / qreal(256);
float r = R / 256.0f;
color.setRgbF(r, 0.0, 0.0);
QCOMPARE(qfloat16(color.redF()), qfloat16(r));
qreal r2, g, b, a;
float r2, g, b, a;
color.getRgbF(&r2, &g, &b, &a);
QCOMPARE(qfloat16(r2), qfloat16(r));
}
@ -1015,11 +1015,11 @@ void tst_QColor::setRgbF()
for (int G = -128; G <= 512; ++G) {
{
// extended RGB
qreal g = G / qreal(256);
float g = G / 256.0f;
color.setRgbF(0.0, g, 0.0);
QCOMPARE(qfloat16(color.greenF()), qfloat16(g));
qreal r, g2, b, a;
float r, g2, b, a;
color.getRgbF(&r, &g2, &b, &a);
QCOMPARE(qfloat16(g2), qfloat16(g));
}
@ -1028,11 +1028,11 @@ void tst_QColor::setRgbF()
for (int B = -128; B <= 512; ++B) {
{
// extended RGB
qreal b = B / qreal(256);
float b = B / 256.0f;
color.setRgbF(0.0, 0.0, b);
QCOMPARE(qfloat16(color.blueF()), qfloat16(b));
qreal r, g, b2, a;
float r, g, b2, a;
color.getRgbF(&r, &g, &b2, &a);
QCOMPARE(qfloat16(b2), qfloat16(b));
}
@ -1079,10 +1079,10 @@ void tst_QColor::setHsv()
{
// 0.0-1.0
qreal a = A / qreal(USHRT_MAX);
float a = A / float(USHRT_MAX);
color.setHsvF(0.0, 0.0, 0.0, a); QCOMPARE(color.alphaF(), a);
qreal h, s, v, a2;
float h, s, v, a2;
color.getHsvF(&h, &s, &v, &a2);
QCOMPARE(a2, a);
}
@ -1103,11 +1103,11 @@ void tst_QColor::setHsv()
{
// 0.0-1.0
qreal h = H / 36000.0;
float h = H / 36000.0;
color.setHsvF(h, 0.0, 0.0, 0.0);
QCOMPARE(color.hueF(), h);
qreal h2, s, v, a;
float h2, s, v, a;
color.getHsvF(&h2, &s, &v, &a);
QCOMPARE(h2, h);
}
@ -1127,11 +1127,11 @@ void tst_QColor::setHsv()
{
// 0.0-1.0
qreal s = S / qreal(USHRT_MAX);
float s = S / float(USHRT_MAX);
color.setHsvF(0.0, s, 0.0, 0.0);
QCOMPARE(color.saturationF(), s);
qreal h, s2, v, a;
float h, s2, v, a;
color.getHsvF(&h, &s2, &v, &a);
QCOMPARE(s2, s);
}
@ -1151,11 +1151,11 @@ void tst_QColor::setHsv()
{
// 0.0-1.0
qreal v = V / qreal(USHRT_MAX);
float v = V / float(USHRT_MAX);
color.setHsvF(0.0, 0.0, v, 0.0);
QCOMPARE(color.valueF(), v);
qreal h, s, v2, a;
float h, s, v2, a;
color.getHsvF(&h, &s, &v2, &a);
QCOMPARE(v2, v);
}
@ -1190,11 +1190,11 @@ void tst_QColor::setCmyk()
{
// 0.0-1.0
qreal a = A / qreal(USHRT_MAX);
float a = A / float(USHRT_MAX);
color.setCmykF(0.0, 0.0, 0.0, 0.0, a);
QCOMPARE(color.alphaF(), a);
qreal c, m, y, k, a2;
float c, m, y, k, a2;
color.getCmykF(&c, &m, &y, &k, &a2);
QCOMPARE(a2, a);
}
@ -1214,11 +1214,11 @@ void tst_QColor::setCmyk()
{
// 0.0-1.0
qreal c = C / qreal(USHRT_MAX);
float c = C / float(USHRT_MAX);
color.setCmykF(c, 0.0, 0.0, 0.0, 0.0);
QCOMPARE(color.cyanF(), c);
qreal c2, m, y, k, a;
float c2, m, y, k, a;
color.getCmykF(&c2, &m, &y, &k, &a);
QCOMPARE(c2, c);
}
@ -1238,11 +1238,11 @@ void tst_QColor::setCmyk()
{
// 0.0-1.0
qreal m = M / qreal(USHRT_MAX);
float m = M / float(USHRT_MAX);
color.setCmykF(0.0, m, 0.0, 0.0, 0.0);
QCOMPARE(color.magentaF(), m);
qreal c, m2, y, k, a;
float c, m2, y, k, a;
color.getCmykF(&c, &m2, &y, &k, &a);
QCOMPARE(m2, m);
}
@ -1262,11 +1262,11 @@ void tst_QColor::setCmyk()
{
// 0.0-1.0
qreal y = Y / qreal(USHRT_MAX);
float y = Y / float(USHRT_MAX);
color.setCmykF(0.0, 0.0, y, 0.0, 0.0);
QCOMPARE(color.yellowF(), y);
qreal c, m, y2, k, a;
float c, m, y2, k, a;
color.getCmykF(&c, &m, &y2, &k, &a);
QCOMPARE(y2, y);
}
@ -1286,11 +1286,11 @@ void tst_QColor::setCmyk()
{
// 0.0-1.0
qreal k = K / qreal(USHRT_MAX);
float k = K / float(USHRT_MAX);
color.setCmykF(0.0, 0.0, 0.0, k, 0.0);
QCOMPARE(color.blackF(), k);
qreal c, m, y, k2, a;
float c, m, y, k2, a;
color.getCmykF(&c, &m, &y, &k2, &a);
QCOMPARE(k2, k);
}
@ -1324,10 +1324,10 @@ void tst_QColor::setHsl()
{
// 0.0-1.0
qreal a = A / qreal(USHRT_MAX);
float a = A / float(USHRT_MAX);
color.setHslF(0.0, 0.0, 0.0, a); QCOMPARE(color.alphaF(), a);
qreal h, s, l, a2;
float h, s, l, a2;
color.getHslF(&h, &s, &l, &a2);
QCOMPARE(a2, a);
}
@ -1348,11 +1348,11 @@ void tst_QColor::setHsl()
{
// 0.0-1.0
qreal h = H / 36000.0;
float h = H / 36000.0;
color.setHslF(h, 0.0, 0.0, 0.0);
QCOMPARE(color.hslHueF(), h);
qreal h2, s, l, a;
float h2, s, l, a;
color.getHslF(&h2, &s, &l, &a);
QCOMPARE(h2, h);
}
@ -1372,11 +1372,11 @@ void tst_QColor::setHsl()
{
// 0.0-1.0
qreal s = S / qreal(USHRT_MAX);
float s = S / float(USHRT_MAX);
color.setHslF(0.0, s, 0.0, 0.0);
QCOMPARE(color.hslSaturationF(), s);
qreal h, s2, l, a;
float h, s2, l, a;
color.getHslF(&h, &s2, &l, &a);
QCOMPARE(s2, s);
}
@ -1396,11 +1396,11 @@ void tst_QColor::setHsl()
{
// 0.0-1.0
qreal l = L / qreal(USHRT_MAX);
float l = L / float(USHRT_MAX);
color.setHslF(0.0, 0.0, l, 0.0);
QCOMPARE(color.lightnessF(), l);
qreal h, s, l2, a;
float h, s, l2, a;
color.getHslF(&h, &s, &l2, &a);
QCOMPARE(l2, l);
}
@ -1850,19 +1850,19 @@ void tst_QColor::qrgba64Equivalence()
void tst_QColor::qcolorprofile_data()
{
QTest::addColumn<qreal>("gammaC");
QTest::addColumn<float>("gammaC");
QTest::addColumn<int>("tolerance");
QTest::newRow("gamma=1.0") << qreal(1.0) << 0;
QTest::newRow("gamma=1.5") << qreal(1.5) << 1;
QTest::newRow("gamma=1.7") << qreal(1.7) << 2;
QTest::newRow("gamma=2.0") << qreal(2.0) << 8;
QTest::newRow("gamma=2.31") << qreal(2.31) << 33;
QTest::newRow("gamma=1.0") << 1.0f << 0;
QTest::newRow("gamma=1.5") << 1.5f << 1;
QTest::newRow("gamma=1.7") << 1.7f << 2;
QTest::newRow("gamma=2.0") << 2.0f << 8;
QTest::newRow("gamma=2.31") << 2.31f << 33;
}
void tst_QColor::qcolorprofile()
{
QFETCH(qreal, gammaC);
QFETCH(float, gammaC);
QFETCH(int, tolerance);
QColorTrcLut *cp = QColorTrcLut::fromGamma(gammaC);

View File

@ -304,10 +304,10 @@ void tst_QColorSpace::loadImage()
QVERIFY(defaultProPhotoRgb.iccProfile() != image.colorSpace().iccProfile());
QColorTransform transform = image.colorSpace().transformationToColorSpace(QColorSpace::SRgb);
qreal maxRed = 0;
qreal maxBlue = 0;
qreal maxRed2 = 0;
qreal maxBlue2 = 0;
float maxRed = 0;
float maxBlue = 0;
float maxRed2 = 0;
float maxBlue2 = 0;
for (int y = 0; y < image.height(); ++y) {
for (int x = 0; x < image.width(); ++x) {
QColor p = image.pixelColor(x, y);