Krita Source Code Documentation
Loading...
Searching...
No Matches
KisBrushDelegate Class Reference

The resource item delegate for rendering the resource preview. More...

+ Inheritance diagram for KisBrushDelegate:

Public Member Functions

 KisBrushDelegate (KisResourceMetaDataModel *metaDataModel, QObject *parent=0)
 
void paint (QPainter *, const QStyleOptionViewItem &, const QModelIndex &) const override
 reimplemented
 
QSize sizeHint (const QStyleOptionViewItem &option, const QModelIndex &) const override
 reimplemented
 
 ~KisBrushDelegate () override
 

Private Attributes

KisResourceMetaDataModel * m_metaDataModel
 

Detailed Description

The resource item delegate for rendering the resource preview.

Definition at line 69 of file kis_predefined_brush_chooser.cpp.

Constructor & Destructor Documentation

◆ KisBrushDelegate()

KisBrushDelegate::KisBrushDelegate ( KisResourceMetaDataModel * metaDataModel,
QObject * parent = 0 )
inline

Definition at line 72 of file kis_predefined_brush_chooser.cpp.

74 : QAbstractItemDelegate(parent)
75 , m_metaDataModel(metaDataModel)
76 {}
KisResourceMetaDataModel * m_metaDataModel

◆ ~KisBrushDelegate()

KisBrushDelegate::~KisBrushDelegate ( )
inlineoverride

Definition at line 77 of file kis_predefined_brush_chooser.cpp.

77{}

Member Function Documentation

◆ paint()

void KisBrushDelegate::paint ( QPainter * painter,
const QStyleOptionViewItem & option,
const QModelIndex & index ) const
override

reimplemented

Definition at line 89 of file kis_predefined_brush_chooser.cpp.

90{
91 if (! index.isValid())
92 return;
93
94 QImage thumbnail = index.data(Qt::UserRole + KisAbstractResourceModel::Thumbnail).value<QImage>();
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
108 const int resourceId = index.data(Qt::UserRole + KisAbstractResourceModel::Id).toInt();
109 const bool hasImageType = m_metaDataModel->metaDataValue(resourceId, KisBrush::brushTypeMetaDataKey).toBool();
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));
144 KritaUtils::renderExactRect(painter, itemRect);
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
Definition kis_brush.h:343
QVariant metaDataValue(int resourceId, const QString &key)
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)
Definition kis_global.h:186
void renderExactRect(QPainter *p, const QRect &rc)

References KisBrush::brushTypeMetaDataKey, KisResourceThumbnailCache::getImage(), KisAbstractResourceModel::Id, KisResourceThumbnailCache::instance(), kisGrowRect(), m_metaDataModel, KisResourceMetaDataModel::metaDataValue(), KritaUtils::renderExactRect(), and KisAbstractResourceModel::Thumbnail.

◆ sizeHint()

QSize KisBrushDelegate::sizeHint ( const QStyleOptionViewItem & option,
const QModelIndex &  ) const
inlineoverride

reimplemented

Definition at line 81 of file kis_predefined_brush_chooser.cpp.

81 {
82 return option.decorationSize;
83 }

Member Data Documentation

◆ m_metaDataModel

KisResourceMetaDataModel* KisBrushDelegate::m_metaDataModel
private

Definition at line 86 of file kis_predefined_brush_chooser.cpp.


The documentation for this class was generated from the following file: