File indexing completed on 2024-05-26 04:32:42

0001 /*
0002  *  SPDX-FileCopyrightText: 2008 Cyrille Berger <cberger@cberger.net>
0003  *
0004  *  SPDX-License-Identifier: LGPL-2.0-or-later
0005  */
0006 
0007 #ifndef _KIS_SPECIFIC_COLOR_SELECTOR_WIDGET_H_
0008 #define _KIS_SPECIFIC_COLOR_SELECTOR_WIDGET_H_
0009 
0010 #include <QWidget>
0011 
0012 #include <KoColor.h>
0013 #include <QtWidgets/QComboBox>
0014 #include "kis_signal_auto_connection.h"
0015 
0016 #include "ui_wdgSpecificColorSelectorWidget.h"
0017 
0018 
0019 class KoColorSpace;
0020 class QVBoxLayout;
0021 class KisColorInput;
0022 class KisColorSpaceSelector;
0023 class QButtonGroup;
0024 class QRadioButton;
0025 class QAbstractButton;
0026 class KisSignalCompressor;
0027 class QSpacerItem;
0028 class KisDisplayColorConverter;
0029 class KisPopupButton;
0030 class KisHexColorInput;
0031 class KisHsvColorInput;
0032 
0033 class KisSpecificColorSelectorWidget : public QWidget
0034 {
0035     Q_OBJECT
0036 public:
0037     KisSpecificColorSelectorWidget(QWidget* parent);
0038     ~KisSpecificColorSelectorWidget() override;
0039 
0040 protected:
0041     void resizeEvent(QResizeEvent* event) override;
0042 
0043 public Q_SLOTS:
0044     void setDisplayConverter(KisDisplayColorConverter *colorConverter);
0045 
0046     void setColorSpace(const KoColorSpace *cs, bool force = false);
0047     void setColor(const KoColor&);
0048     void setFGColor(const KoColor& c);
0049 
0050 private Q_SLOTS:
0051     void update();
0052     void updateTimeout();
0053     void setCustomColorSpace(const KoColorSpace *);
0054     void setUseSameColorSpace(bool locked, bool reloadColorSpace = true);
0055     void rereadCurrentColorSpace(bool force = false);
0056     void onChkUsePercentageChanged(bool);
0057     void hsvSelectorClicked(QAbstractButton *);
0058     void changeHsxMode(int index);
0059 
0060 Q_SIGNALS:
0061     void colorChanged(const KoColor&);
0062     void updated();
0063 
0064 private:
0065     void updateHsvSelector(bool isRgbColorSpace);
0066 
0067     QList<KisColorInput *> m_inputs;
0068     KisHexColorInput *m_hexInput;
0069     KisHsvColorInput *m_hsvSlider;
0070     QRadioButton *m_rgbButton;
0071     QRadioButton *m_hsxButton;
0072 
0073     QButtonGroup *m_hsvSelector;
0074     const KoColorSpace* m_colorSpace;
0075     KoColor m_color;
0076     KoColor m_FGColor;
0077     bool m_updateAllowed;
0078     KisSignalCompressor *m_updateCompressor;
0079     KisColorSpaceSelector *m_colorspaceSelector;
0080     QScopedPointer<Ui_wdgSpecificColorSelectorWidget> m_ui;
0081 
0082     KisDisplayColorConverter *m_displayConverter;
0083     KisSignalAutoConnectionsStore m_converterConnection;
0084 
0085     QComboBox* m_hsxModeComboBox;
0086 };
0087 
0088 #endif