43 QVector<float> result(reqSize, 0.0);
44 if (vecin.isEmpty())
return result;
46 const float ratio =
static_cast<float>(vecin.size()) / reqSize;
48 const int maxElement = *std::max_element(vecin.begin(), vecin.end());
62 for (
int x = 0; x < reqSize; ++x)
65 const float fromR = x * ratio;
66 const float toR = (x + 1) * ratio;
70 int toC = std::ceil(toR);
71 if (toC > vecin.size())
78 const int toCMinusOne = toC - 1;
84 if (x2 == toCMinusOne)
87 value += ratio * vecin[x2];
97 value += (1.0 - (fromR - fromC)) * vecin[x2];
102 for (; x2 < toCMinusOne; ++x2)
107 if (x2 == toCMinusOne)
110 value += (1.0 - (toC - toR)) * vecin[x2];
116 value /= ratio * maxElement;
129 QImage image2(width() - 2 *
borderWidth, 1, QImage::Format_RGB888);
132 qDebug() <<
"QImage image2() allocation failed, width():" << width();
146 for (
int x = 0; x < scaledPieces.size(); ++x)
148 float piecesToValue = scaledPieces.at(x);
149 image2.setPixel(x, 0,
pieceColors()[piecesToValue * 255]);
171 const QString rowHTML = QString::fromLatin1(
"<tr><td width=20 bgcolor='%1' style='border: 1px solid \"%2\";'></td><td>%3</td></tr>");
172 return QLatin1String(
"<table cellspacing=4>")
175 + QLatin1String(
"</table>");
PieceAvailabilityBar(QWidget *parent)
void setAvailability(const QVector< int > &avail)
QString simpleToolTipText() const override
QVector< float > intToFloatVector(const QVector< int > &vecin, int reqSize)
bool updateImage(QImage &image) override
QColor colorBoxBorderColor() const
QColor pieceColor() const
QColor backgroundColor() const
void requestImageUpdate()
static constexpr int borderWidth
const QVector< QRgb > & pieceColors() const
QColor borderColor() const
T value(const QString &key, const T &defaultValue={})