Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_cmb_gradient.cpp
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2015 Boudewijn Rempt <boud@valdyas.org>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
6#include "kis_cmb_gradient.h"
7
8#include <QPainter>
9#include <QResizeEvent>
10#include <QStyleOptionComboBox>
11#include <QApplication>
12
13#include <KoResource.h>
15
16#include <kis_signals_blocker.h>
18
20 : KisPopupButton(parent)
21 , m_checkersPainter(4)
22 , m_gradientEditor(new KisGenericGradientEditor())
23{
24 m_gradientEditor->setContentsMargins(10, 10, 10, 10);
29}
30
35
42
47
52
59
61{
62 const QSize previewSize = iconSize();
63 QImage thumbnail(previewSize, QImage::Format_ARGB32);
64
65 {
66 QPainter gc(&thumbnail);
67 m_checkersPainter.paint(gc, QRect(QPoint(), previewSize));
68
70 if (gradient) {
71 QImage preview = gradient->generatePreview(previewSize.width(), previewSize.height(), m_gradientEditor->canvasResourcesInterface());
72 gc.drawImage(QPoint(), preview);
73 }
74 }
75
76 setIcon(QIcon(QPixmap::fromImage(thumbnail)));
77}
78
80{
81 ensurePolished();
82 QFontMetrics fm = fontMetrics();
83 int maxW = 7 * fm.horizontalAdvance(QChar('x')) + 18;
84 int maxH = qMax(fm.lineSpacing(), 14) + 2;
85
86 QStyleOptionComboBox options;
87 options.initFrom(this);
88
89 return style()->sizeFromContents(QStyle::CT_ComboBox, &options, QSize(maxW, maxH), this);
90}
91
92void KisCmbGradient::resizeEvent(QResizeEvent *event)
93{
94 setIconSize(QSize(event->size().width() - 30, event->size().height() - 4));
96 KisPopupButton::resizeEvent(event);
97}
int iconSize(qreal width, qreal height)
KisCmbGradient(QWidget *parent=0)
void setGradient(KoAbstractGradientSP gradient)
void gradientChanged(KoAbstractGradientSP)
QSize sizeHint() const override
KoAbstractGradientSP gradient() const
void resizeEvent(QResizeEvent *event) override
KoCheckerBoardPainter m_checkersPainter
KisGenericGradientEditor * m_gradientEditor
void setCanvasResourcesInterface(KoCanvasResourcesInterfaceSP canvasResourcesInterface)
This is a generic gradient editor widget.
void sigGradientChanged()
signal emitted when the gradient changes
void setGradient(KoAbstractGradientSP newGradient)
Set the gradient.
KoCanvasResourcesInterfaceSP canvasResourcesInterface
void loadUISettings(const QString &prefix=QString())
Load the ui settings from the configuration.
void saveUISettings(const QString &prefix=QString())
Save the ui settings to the configuration.
void setCanvasResourcesInterface(KoCanvasResourcesInterfaceSP newCanvasResourcesInterface)
Set the canvas resources interface.
void setPopupWidget(QWidget *widget)
void paint(QPainter &painter, const QRectF &rect, const QPointF &patternOrigin) const