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