File indexing completed on 2024-04-28 03:45:35

0001 /*
0002     SPDX-FileCopyrightText: 2003-2008 Cies Breijs <cies AT kde DOT nl>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #ifndef _COLORPICKER_H_
0008 #define _COLORPICKER_H_
0009 
0010 #include <QFrame>
0011 #include <QPainter>
0012 #include <QPaintEvent>
0013 #include <QDialog>
0014 
0015 class QLineEdit;
0016 class QSlider;
0017 class QSpinBox;
0018 
0019 
0020 class ColorPatch : public QFrame
0021 {
0022     Q_OBJECT
0023 
0024     public:
0025         explicit ColorPatch(QWidget *parent) : QFrame(parent) {
0026             setFrameStyle(QFrame::Panel|QFrame::Sunken);
0027         }
0028         void setColor(const QColor &c) { col = c; }
0029 
0030     protected:
0031         void paintEvent(QPaintEvent *e) override {
0032             QPainter p(this);
0033             drawFrame(&p);
0034             p.fillRect(contentsRect()&e->rect(), col);
0035         }
0036     
0037     private:
0038         QColor col;
0039 };
0040 
0041 
0042 
0043 
0044 class ColorPicker : public QDialog
0045 {
0046     Q_OBJECT
0047 
0048     public:
0049         explicit ColorPicker(QWidget* parent = nullptr);
0050 
0051     Q_SIGNALS:
0052         void pasteText(const QString&);
0053 
0054     private Q_SLOTS:
0055         void updateResult(int r, int g, int b);
0056         void redChanged(int);
0057         void greenChanged(int);
0058         void blueChanged(int);
0059         void copyProxy();
0060         void pasteProxy();
0061 
0062     private:
0063         ColorPatch *colorPatch;
0064         QLineEdit  *resultBox;
0065 
0066         QSlider *redSlider;
0067         QSlider *greenSlider;
0068         QSlider *blueSlider;
0069 
0070         QSpinBox *redSpin;
0071         QSpinBox *greenSpin;
0072         QSpinBox *blueSpin;
0073 };
0074 
0075 #endif  // _COLORPICKER_H_