23 #include "kcolorhelpers_p.h"
31 static inline qreal
mixQreal(qreal a, qreal b, qreal bias)
33 return a + (b - a) * bias;
45 return (y1 + 0.05) / (y2 + 0.05);
47 return (y2 + 0.05) / (y1 + 0.05);
58 c.
y = 1.0 - normalize((1.0 - c.
y) * (1.0 - ky));
59 c.
c = 1.0 - normalize((1.0 - c.
c) * kc);
66 c.
y = normalize(c.
y * (1.0 - ky));
67 c.
c = normalize(c.
c * kc);
74 c.
y = normalize(c.
y + ky);
75 c.
c = normalize(c.
c + kc);
82 result.
y =
mixQreal(baseLuma, result.
y, amount);
89 if (amount <= 0.0)
return base;
90 if (amount >= 1.0)
return color;
91 if (isnan(amount))
return base;
93 qreal baseLuma =
luma(base);
95 double rg = 1.0 + ((ri + 1.0) * amount * amount * amount);
96 double u = 1.0, l = 0.0;
98 for (
int i = 12 ; i ; --i) {
99 double a = 0.5 * (l+u);
100 result =
tintHelper(base, baseLuma, color, a);
112 if (bias <= 0.0)
return c1;
113 if (bias >= 1.0)
return c2;
114 if (isnan(bias))
return c1;
116 qreal r =
mixQreal(c1.redF(), c2.redF(), bias);
117 qreal g =
mixQreal(c1.greenF(), c2.greenF(), bias);
118 qreal b =
mixQreal(c1.blueF(), c2.blueF(), bias);
119 qreal a =
mixQreal(c1.alphaF(), c2.alphaF(), bias);
121 return QColor::fromRgbF(r, g, b, a);
125 QPainter::CompositionMode comp)
129 QImage img(1, 1, QImage::Format_ARGB32_Premultiplied);
133 p.fillRect(0, 0, 1, 1, start);
134 p.setCompositionMode(comp);
135 p.fillRect(0, 0, 1, 1, paint);
137 return img.pixel(0, 0);