File indexing completed on 2024-05-12 16:02:12

0001 /*
0002  *  SPDX-FileCopyrightText: 2008 Cyrille Berger <cberger@cberger.net>
0003  *
0004  *  SPDX-License-Identifier: LGPL-2.1-or-later
0005  */
0006 
0007 #ifndef _KO_TRIANGLE_COLOR_SELECTOR_H_
0008 #define _KO_TRIANGLE_COLOR_SELECTOR_H_
0009 
0010 #include <QWidget>
0011 
0012 #include "kritawidgets_export.h"
0013 
0014 #include <KisColorSelectorInterface.h>
0015 
0016 class KoColor;
0017 class KoColorDisplayRendererInterface;
0018 
0019 
0020 class KRITAWIDGETS_EXPORT KoTriangleColorSelector : public KisColorSelectorInterface {
0021     Q_OBJECT
0022     public:
0023         explicit KoTriangleColorSelector(QWidget *parent);
0024         explicit KoTriangleColorSelector(const KoColorDisplayRendererInterface *displayRenderer, QWidget *parent);
0025         ~KoTriangleColorSelector() override;
0026     protected: // events
0027         void paintEvent( QPaintEvent * event ) override;
0028         void resizeEvent( QResizeEvent * event ) override;
0029         void mouseReleaseEvent( QMouseEvent * event ) override;
0030         void mousePressEvent( QMouseEvent * event ) override;
0031         void mouseMoveEvent( QMouseEvent * event ) override;
0032     public:
0033         int hue() const;
0034         int value() const;
0035         int saturation() const;
0036         KoColor getCurrentColor() const override;
0037     public Q_SLOTS:
0038         void setHue(int h);
0039         void setValue(int v);
0040         void setSaturation(int s);
0041         void setHSV(int h, int s, int v);
0042         void slotSetColor(const KoColor& ) override;
0043     Q_SIGNALS:
0044         void colorChanged(const QColor& );
0045         void requestCloseContainer();
0046     private Q_SLOTS:
0047         void configurationChanged();
0048     private:
0049         void tellColorChanged();
0050         void generateTriangle();
0051         void generateWheel();
0052         void updateTriangleCircleParameters();
0053         void selectColorAt(int x, int y, bool checkInWheel = true);
0054     private:
0055         struct Private;
0056         Private* const d;
0057 };
0058 
0059 #endif