90{
91 if (! index.isValid())
92 return;
93
95
96 const QRect itemRect =
kisGrowRect(option.rect, -1);
97 const qreal devicePixelRatioF = painter->device()->devicePixelRatioF();
98
99 const QSize hidpiSize = itemRect.size() * devicePixelRatioF;
101 hidpiSize,
102 Qt::KeepAspectRatio,
103 Qt::SmoothTransformation);
104 thumbnail.setDevicePixelRatio(devicePixelRatioF);
105
106 painter->save();
107
110
111 if (hasImageType) {
113
114 const int baseSize = qCeil(itemRect.width() / 5.0);
115 QImage brush(2 * baseSize, 2 * baseSize, QImage::Format_ARGB32);
116 brush.fill(Qt::white);
117 QPainter gc(&brush);
118
119 gc.setPen(Qt::NoPen);
120 gc.setBrush(QColor(200,200,200));
121 gc.drawRect(QRect(0,0,baseSize,baseSize));
122 gc.drawRect(QRect(baseSize,baseSize,baseSize,baseSize));
123
124 painter->setBrush(brush);
125
126 painter->setBrushOrigin(itemRect.topLeft());
127 painter->drawRect(itemRect);
128 painter->setBrush(Qt::NoBrush);
129
130 } else {
132 painter->setBrush(Qt::white);
133 painter->setPen(Qt::NoPen);
134 painter->drawRect(itemRect);
135 }
136
137 int dx = (itemRect.width() * devicePixelRatioF - thumbnail.width()) / 2 / devicePixelRatioF;
138 int dy = (itemRect.height() * devicePixelRatioF - thumbnail.height()) / 2 / devicePixelRatioF;
139 painter->drawImage(itemRect.x() + dx, itemRect.y() + dy, thumbnail);
140
141 if (option.state & QStyle::State_Selected) {
142 painter->setClipRect(option.rect);
143 painter->setPen(QPen(option.palette.highlight(), 2.0));
145 painter->setCompositionMode(QPainter::CompositionMode_HardLight);
146 painter->setOpacity(0.65);
147 painter->fillRect(itemRect, option.palette.highlight());
148 }
149
150 painter->restore();
151}
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)