File indexing completed on 2024-06-23 04:26:11

0001 /*
0002  *  SPDX-FileCopyrightText: 2010 Adam Celarek <kdedev at xibo dot at>
0003  *
0004  *  SPDX-License-Identifier: LGPL-2.0-or-later
0005  */
0006 
0007 #ifndef KIS_SHADE_SELECTOR_LINE_H
0008 #define KIS_SHADE_SELECTOR_LINE_H
0009 
0010 #include <QWidget>
0011 #include <KoColor.h>
0012 #include "kis_types.h"
0013 
0014 class KisCanvas2;
0015 class KisShadeSelectorLineComboBox;
0016 class KisColorSelectorBaseProxy;
0017 class KoColorSpace;
0018 
0019 class KisShadeSelectorLineBase : public QWidget {
0020 public:
0021     KisShadeSelectorLineBase(QWidget* parent) : QWidget(parent)
0022     {}
0023 
0024     void setLineNumber(int n) {m_lineNumber=n;}
0025     virtual QString toString() const = 0;
0026     virtual void fromString(const QString& string) = 0;
0027 
0028 protected:
0029     int m_lineNumber {0};
0030 };
0031 
0032 class KisShadeSelectorLine : public KisShadeSelectorLineBase
0033 {
0034     Q_OBJECT
0035 public:
0036 
0037     explicit KisShadeSelectorLine(KisColorSelectorBaseProxy *parentProxy,
0038                                   QWidget *parent = 0);
0039     explicit KisShadeSelectorLine(qreal hueDelta, qreal satDelta, qreal valDelta,
0040                                   KisColorSelectorBaseProxy *parentProxy, QWidget *parent = 0, qreal hueShift = 0, qreal satShift = 0, qreal valShift = 0);
0041 
0042     ~KisShadeSelectorLine() override;
0043 
0044     void setParam(qreal hue, qreal sat, qreal val, qreal hueShift, qreal satShift, qreal shiftVal);
0045     void setColor(const KoColor& color);
0046     void updateSettings();
0047     void setCanvas(KisCanvas2* canvas);
0048     void showHelpText() {m_displayHelpText=true;}
0049     QString toString() const override;
0050     void fromString(const QString& string) override;
0051 
0052     void paintEvent(QPaintEvent *) override;
0053     void resizeEvent(QResizeEvent *) override;
0054     void mousePressEvent(QMouseEvent *) override;
0055     void mouseMoveEvent(QMouseEvent *) override;
0056     void mouseReleaseEvent(QMouseEvent *) override;
0057 
0058 private:
0059     qreal m_hueDelta {0.0};
0060     qreal m_saturationDelta {0.0};
0061     qreal m_valueDelta {0.0};
0062 
0063     qreal m_hueShift {0.0};
0064     qreal m_saturationShift {0.0};
0065     qreal m_valueShift {0.0};
0066 
0067     KoColor m_realColor;
0068     KisPaintDeviceSP m_realPixelCache;
0069     const KoColorSpace *m_cachedColorSpace {0};
0070 
0071     bool m_gradient {false};
0072     int m_patchCount {0};
0073     int m_lineHeight {0};
0074     bool m_displayHelpText {false};
0075     int m_mouseX{0};
0076     QPoint m_ev;
0077     int m_width{0};
0078     bool m_isDown {false};
0079 
0080     friend class KisShadeSelectorLineComboBox;
0081 
0082     KisColorSelectorBaseProxy* m_parentProxy {0};
0083 };
0084 
0085 #endif // KIS_SHADE_SELECTOR_LINE_H