Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_curve_widget.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2005 C. Boemann <cbo@boemann.dk>
3 * SPDX-FileCopyrightText: 2009 Dmitry Kazakov <dimula73@gmail.com>
4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 */
7#ifndef KIS_CURVE_WIDGET_H
8#define KIS_CURVE_WIDGET_H
9
10// Qt includes.
11
12#include <QWidget>
13#include <QColor>
14#include <QPointF>
15#include <QPixmap>
16#include <QMouseEvent>
17#include <QKeyEvent>
18#include <QEvent>
19#include <QPaintEvent>
20#include <optional>
21
22#include <kis_cubic_curve.h>
23
24#include <kritaui_export.h>
25
26class QSpinBox;
27
40class KRITAUI_EXPORT KisCurveWidget : public QWidget
41{
42 Q_OBJECT
43 Q_PROPERTY(bool pointSelected READ pointSelected NOTIFY pointSelectedChanged);
44
45public:
46 friend class CurveEditorItem;
51 KisCurveWidget(QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags());
52
53 ~KisCurveWidget() override;
54
58 void reset(void);
59
67 void setPixmap(const QPixmap & pix);
68 QPixmap getPixmap();
69
74 bool pointSelected() const;
75
86
87 bool setCurrentPoint(const QPointF &position, bool setAsCorner);
88 bool setCurrentPointPosition(const QPointF &position);
89 bool setCurrentPointAsCorner(bool setAsCorner);
90 void setGlobalPointConstrain(PointConstrain constrain);
91 std::optional<KisCubicCurvePoint> currentPoint() const;
92 std::optional<QPointF> currentPointPosition() const;
93 std::optional<bool> isCurrentPointSetAsCorner() const;
94 PointConstrain globalPointConstrain() const;
95
96Q_SIGNALS:
97
101 void modified(void);
115
118
119
120protected Q_SLOTS:
121 void notifyModified();
122
127 void slotCompressorShouldEmitModified();
128
129
130
131protected:
132
133 void keyPressEvent(QKeyEvent *) override;
134 void paintEvent(QPaintEvent *) override;
135 void mousePressEvent(QMouseEvent * e) override;
136 void mouseReleaseEvent(QMouseEvent * e) override;
137 void mouseMoveEvent(QMouseEvent * e) override;
138 void leaveEvent(QEvent *) override;
139 void resizeEvent(QResizeEvent *e) override;
140
141public:
142
148 KisCubicCurve curve();
149
155 void setupInOutControls(QSpinBox *in, QSpinBox *out, int inMin, int inMax, int outMin, int outMax);
157
163 void addPointInTheMiddle();
164
165public Q_SLOTS:
170 void setCurve(KisCubicCurve inlist);
171
172private:
173
174 class Private;
175 Private * const d {nullptr};
176};
177
178
179#endif /* KIS_CURVE_WIDGET_H */
void modified(void)
void curveChanged(const KisCubicCurve &)
void shouldSyncIOControls()
void pointSelectedChanged()
void compressorShouldEmitModified()
void shouldFocusIOControls()
void setupInOutControls(QSpinBox *in, QSpinBox *out, int inMin, int inMax, int outMin, int outMax)
void dropInOutControls()