37 QXdgDBusImageVector ret;
40 QIconEngine *engine =
const_cast<QIcon &>(icon).data_ptr()->engine;
41 QList<QSize> sizes = engine->availableSizes(QIcon::Normal, QIcon::Off);
46 bool hasSmallIcon =
false;
47 bool hasMediumIcon =
false;
48 QList<QSize> toRemove;
49 for (
const QSize &size : std::as_const(sizes)) {
50 int maxSize = qMax(size.width(), size.height());
51 if (maxSize <= IconNormalSmallSize)
53 else if (maxSize <= IconNormalMediumSize)
55 else if (maxSize > IconSizeLimit)
58 for (
const QSize &size : std::as_const(toRemove))
59 sizes.removeOne(size);
65 ret.reserve(sizes.size());
66 for (
const QSize &size : std::as_const(sizes)) {
68 QImage im = engine->pixmap(size, QIcon::Normal, QIcon::Off).toImage().convertToFormat(QImage::Format_ARGB32);
70 if (im.height() != im.width()) {
71 int maxSize = qMax(im.width(), im.height());
72 QImage padded(maxSize, maxSize, QImage::Format_ARGB32);
73 padded.fill(Qt::transparent);
74 QPainter painter(&padded);
75 painter.drawImage((maxSize - im.width()) / 2, (maxSize - im.height()) / 2, im);
79 QXdgDBusImageStruct kim(im.width(), im.height());
80 qToBigEndian<quint32>(im.constBits(), im.width() * im.height(), kim.data.data());
121 argument.beginArray(qMetaTypeId<QXdgDBusImageStruct>());
122 for (
int i = 0; i < iconVector.size(); ++i) {
123 argument << iconVector[i];
149 argument.beginStructure();
150 argument << toolTip.icon;
151 argument << toolTip.image;
152 argument << toolTip.title;
153 argument << toolTip.subTitle;
154 argument.endStructure();