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

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

+ Inheritance diagram for KisGamutMaskDelegate:

Public Member Functions

 KisGamutMaskDelegate (KisResourceMetaDataModel *metaDataModel, QObject *parent=0)
 
void paint (QPainter *, const QStyleOptionViewItem &, const QModelIndex &) const override
 reimplemented
 
void setViewMode (KisGamutMaskChooser::ViewMode mode)
 
QSize sizeHint (const QStyleOptionViewItem &option, const QModelIndex &) const override
 reimplemented
 
 ~KisGamutMaskDelegate () override
 

Private Attributes

KisResourceMetaDataModelm_metaDataModel
 
KisGamutMaskChooser::ViewMode m_mode
 

Detailed Description

The resource item delegate for rendering the resource preview.

Definition at line 30 of file KisGamutMaskChooser.cpp.

Constructor & Destructor Documentation

◆ KisGamutMaskDelegate()

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

Definition at line 33 of file KisGamutMaskChooser.cpp.

33 : QAbstractItemDelegate(parent)
35 , m_metaDataModel(metaDataModel)
36 {
37 }
KisResourceMetaDataModel * m_metaDataModel
KisGamutMaskChooser::ViewMode m_mode

◆ ~KisGamutMaskDelegate()

KisGamutMaskDelegate::~KisGamutMaskDelegate ( )
inlineoverride

Definition at line 38 of file KisGamutMaskChooser.cpp.

38{}

Member Function Documentation

◆ paint()

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

reimplemented

Definition at line 57 of file KisGamutMaskChooser.cpp.

58{
59 painter->save();
60 painter->setRenderHint(QPainter::SmoothPixmapTransform, true);
61
62 if (!index.isValid())
63 return;
64
65 QImage preview = index.data(Qt::UserRole + KisAbstractResourceModel::Thumbnail).value<QImage>();
66 QString name = index.data(Qt::UserRole + KisAbstractResourceModel::Name).value<QString>();
67
68 if(preview.isNull()) {
69 return;
70 }
71
72 QRect paintRect = option.rect.adjusted(1, 1, -1, -1);
73
74 qreal devicePixelRatioF = painter->device()->devicePixelRatioF();
75
77 QImage previewHighDPI =
79 paintRect.size() * devicePixelRatioF,
80 Qt::IgnoreAspectRatio,
81 Qt::SmoothTransformation);
82 previewHighDPI.setDevicePixelRatio(devicePixelRatioF);
83 painter->drawImage(paintRect.x(), paintRect.y(), previewHighDPI);
84
85 if (option.state & QStyle::State_Selected) {
86 painter->setCompositionMode(QPainter::CompositionMode_Overlay);
87 painter->setOpacity(0.5);
88 painter->fillRect(paintRect, Qt::white);
89 painter->setCompositionMode(QPainter::CompositionMode_SourceOver);
90 painter->setOpacity(1.0);
91 painter->setPen(QPen(option.palette.highlight(), 2, Qt::SolidLine, Qt::FlatCap, Qt::MiterJoin));
92 QRect selectedBorder = option.rect.adjusted(1, 1, -1, -1);
93 painter->drawRect(selectedBorder);
94 }
95 } else {
96 QSize previewSize(paintRect.height(), paintRect.height());
97
98 QImage previewHighDPI =
100 previewSize * devicePixelRatioF,
101 Qt::IgnoreAspectRatio,
102 Qt::SmoothTransformation);
103 previewHighDPI.setDevicePixelRatio(devicePixelRatioF);
104
105 if (option.state & QStyle::State_Selected) {
106 painter->setPen(QPen(option.palette.highlight(), 2.0));
107 painter->fillRect(option.rect, option.palette.highlight());
108 painter->setPen(option.palette.highlightedText().color());
109 }
110 painter->drawImage(paintRect.x(), paintRect.y(), previewHighDPI);
111
112 int leftMargin = 8;
113 int rightMargin = 7;
114 int vertMargin = 4;
115 int descOffset = 7;
116 QFont font = option.font;
117 font.setBold(true);
118 painter->setFont(font);
119 QRectF titleRect(QPointF(previewSize.width() + leftMargin, paintRect.y() + vertMargin),
120 QPointF(paintRect.width() - rightMargin, paintRect.y() + descOffset + painter->fontMetrics().lineSpacing()));
121 painter->drawText(titleRect, Qt::AlignLeft,
122 painter->fontMetrics().elidedText(
123 name, Qt::ElideRight, titleRect.width()
124 )
125 );
126 const QString descriptionKey = "description";
127 const int resourceId = index.data(Qt::UserRole + KisAbstractResourceModel::Id).toInt();
128 const QString description = m_metaDataModel->metaDataValue(resourceId, descriptionKey).toString();
129 if (!description.isEmpty() && !description.isNull()) {
130 font.setPointSize(font.pointSize()-1);
131 font.setBold(false);
132 font.setStyle(QFont::StyleItalic);
133 painter->setFont(font);
134 QRectF descRect(QPointF(previewSize.width() + leftMargin, paintRect.y() + descOffset + painter->fontMetrics().lineSpacing()),
135 QPointF(paintRect.right() - rightMargin, paintRect.bottom() - vertMargin));
136
137 int numLines = floor(((float)descRect.height() / (float)painter->fontMetrics().lineSpacing()));
138 if (numLines > 0) {
139 int elideWidth = 0;
140 QTextLayout textLayout(description);
141 textLayout.beginLayout();
142 for (int i = 0; i < numLines; i++) {
143 QTextLine line = textLayout.createLine();
144 if (line.isValid()) {
145 line.setLineWidth(descRect.width());
146 elideWidth += line.naturalTextWidth();
147 }
148 }
149
150 QString elidedText = painter->fontMetrics().elidedText(description, Qt::ElideRight, elideWidth);
151 painter->drawText(descRect, Qt::AlignLeft|Qt::TextWordWrap, elidedText);
152 }
153 }
154 }
155
156 painter->restore();
157}
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)
const char * name(StandardAction id)

References KisResourceThumbnailCache::getImage(), KisAbstractResourceModel::Id, KisResourceThumbnailCache::instance(), m_metaDataModel, m_mode, KisResourceMetaDataModel::metaDataValue(), KisAbstractResourceModel::Name, KisAbstractResourceModel::Thumbnail, and KisGamutMaskChooser::THUMBNAIL.

◆ setViewMode()

void KisGamutMaskDelegate::setViewMode ( KisGamutMaskChooser::ViewMode mode)
inline

Definition at line 48 of file KisGamutMaskChooser.cpp.

48 {
49 m_mode = mode;
50 }

References m_mode.

◆ sizeHint()

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

reimplemented

Definition at line 44 of file KisGamutMaskChooser.cpp.

44 {
45 return option.decorationSize;
46 }

Member Data Documentation

◆ m_metaDataModel

KisResourceMetaDataModel* KisGamutMaskDelegate::m_metaDataModel
private

Definition at line 54 of file KisGamutMaskChooser.cpp.

◆ m_mode

KisGamutMaskChooser::ViewMode KisGamutMaskDelegate::m_mode
private

Definition at line 53 of file KisGamutMaskChooser.cpp.


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