File indexing completed on 2025-03-09 04:06:00

0001 /* This file is part of the KDE project
0002  * SPDX-FileCopyrightText: 2014 Dan Leinir Turthra Jensen <admin@leinir.dk>
0003  *
0004  * SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
0005  *
0006  */
0007 
0008 #ifndef CURVEEDITORITEM_H
0009 #define CURVEEDITORITEM_H
0010 
0011 #include "kis_cubic_curve.h"
0012 
0013 #include <QQuickPaintedItem>
0014 
0015 class CurveEditorItem : public QQuickPaintedItem
0016 {
0017     Q_OBJECT
0018     Q_PROPERTY(KisCubicCurve curve READ curve WRITE setCurve NOTIFY curveChanged);
0019     Q_PROPERTY(bool pointSelected READ pointSelected NOTIFY pointSelectedChanged);
0020 public:
0021     explicit CurveEditorItem(QQuickItem* parent = 0);
0022     ~CurveEditorItem() override;
0023     void paint(QPainter *p) override;
0024 
0025     KisCubicCurve curve() const;
0026     void setCurve(KisCubicCurve curve);
0027 
0028     bool pointSelected() const;
0029     Q_SLOT void deleteSelectedPoint();
0030 
0031 Q_SIGNALS:
0032     void curveChanged();
0033     void pointSelectedChanged();
0034 
0035 protected:
0036     void geometryChanged(const QRectF &newGeometry,
0037                          const QRectF &oldGeometry) override;
0038     void mousePressEvent(QMouseEvent *event) override;
0039     void mouseMoveEvent(QMouseEvent *event) override;
0040     void mouseReleaseEvent(QMouseEvent *event) override;
0041 
0042 private:
0043     class Private;
0044     Private* d;
0045 };
0046 
0047 #endif // CURVEEDITORITEM_H