21 quint16 diffL = qAbs(c0.
L - c1.
L);
22 quint16 diffa = qAbs(c0.
a - c1.
a);
23 quint16 diffb = qAbs(c0.
b - c1.
b);
30 return 1.f - qSqrt(valL * valL + valA * valA + valB * valB);
50 Q_ASSERT(colorCount > 0);
52 diffs.resize(colorCount);
55 for (
int i = 0; i < colorCount; ++i) {
60 float maxDiff = std::numeric_limits<float>::min();
61 for (
int i = 0; i < colorCount; ++i) {
62 if (diffs[i] > maxDiff) {
64 maxDiff = diffs[primaryColor];
79 int brighterColor = 0;
86 if(diffs[i] > diffs[darkerColor])
91 if(diffs[i] > diffs[brighterColor])
97 return qMakePair(darkerColor, brighterColor);
102 if(shades == 0)
return;
103 qint16 lumaStep = (clrB.
L - clrA.
L) / (shades+1);
104 qint16 astarStep = (clrB.
a - clrA.
a) / (shades+1);
105 qint16 bstarStep = (clrB.
b - clrA.
b) / (shades+1);
106 for(
int i = 0; i < shades; ++i)
163 QPair<int, int> neighbours;
174 colorHood[i].color = i;
176 float lSimilarity = 0.05f, rSimilarity = 0.05f;
178 if(colorHood[i].neighbours.first != -1)
180 if(colorHood[i].neighbours.second != -1)
182 colorHood[i].similarity = (lSimilarity + rSimilarity) / 2;
184 int mostSimilarColor = 0;
187 mostSimilarColor = i;
189 int darkerIndex = colorHood[mostSimilarColor].neighbours.first;
190 int brighterIndex = colorHood[mostSimilarColor].neighbours.second;
191 if(darkerIndex != -1 &&
void convertTo(const KoColorSpace *cs, KoColorConversionTransformation::Intent renderingIntent, KoColorConversionTransformation::ConversionFlags conversionFlags)
void fromQColor(const QColor &c)
Convenient function for converting from a QColor.
float similarity(LabColor c0, LabColor c1) const
LabColor getNearestIndex(LabColor clr) const
void insertColor(QColor clr)
void insertShades(QColor clrA, QColor clrB, int shades)
QVector< LabColor > m_colors
QPair< int, int > getNeighbours(int mainClr) const
struct IndexColorPalette::@11 similarityFactors
void mergeMostRedundantColors()
static KoColorSpaceRegistry * instance()