91{
92 if (! index.isValid())
93 return;
94
96
97 const QRect itemRect =
kisGrowRect(option.rect, -1);
98 const qreal devicePixelRatioF = painter->device()->devicePixelRatioF();
99
100 const QSize hidpiSize = itemRect.size() * devicePixelRatioF;
102 hidpiSize,
103 Qt::KeepAspectRatio,
104 Qt::SmoothTransformation);
105 thumbnail.setDevicePixelRatio(devicePixelRatioF);
106
107 painter->save();
108
111
112 if (hasImageType) {
114
115 const int baseSize = qCeil(itemRect.width() / 5.0);
116 QImage brush(2 * baseSize, 2 * baseSize, QImage::Format_ARGB32);
117 brush.fill(Qt::white);
118 QPainter gc(&brush);
119
120 gc.setPen(Qt::NoPen);
121 gc.setBrush(QColor(200,200,200));
122 gc.drawRect(QRect(0,0,baseSize,baseSize));
123 gc.drawRect(QRect(baseSize,baseSize,baseSize,baseSize));
124
125 painter->setBrush(brush);
126
127 painter->setBrushOrigin(itemRect.topLeft());
128 painter->drawRect(itemRect);
129 painter->setBrush(Qt::NoBrush);
130
131 } else {
133 painter->setBrush(Qt::white);
134 painter->setPen(Qt::NoPen);
135 painter->drawRect(itemRect);
136 }
137
138 int dx = (itemRect.width() * devicePixelRatioF - thumbnail.width()) / 2 / devicePixelRatioF;
139 int dy = (itemRect.height() * devicePixelRatioF - thumbnail.height()) / 2 / devicePixelRatioF;
140 painter->drawImage(itemRect.x() + dx, itemRect.y() + dy, thumbnail);
141
142 if (option.state & QStyle::State_Selected) {
143 painter->setClipRect(option.rect);
144 painter->setPen(QPen(option.palette.highlight(), 2.0));
146 painter->setCompositionMode(QPainter::CompositionMode_HardLight);
147 painter->setOpacity(0.65);
148 painter->fillRect(itemRect, option.palette.highlight());
149 }
150
151 painter->restore();
152}
static const QString brushTypeMetaDataKey
static KisResourceThumbnailCache * instance()
QImage getImage(const QModelIndex &index, const QSize size=QSize(-1, -1), Qt::AspectRatioMode aspectMode=Qt::IgnoreAspectRatio, Qt::TransformationMode transformMode=Qt::FastTransformation)
T kisGrowRect(const T &rect, U offset)
void renderExactRect(QPainter *p, const QRect &rc)