File indexing completed on 2024-05-26 04:32:50
0001 /* 0002 * SPDX-FileCopyrightText: 2021 Mathias Wein <lynx.mw+kde@gmail.com> 0003 * 0004 * SPDX-License-Identifier: GPL-3.0-or-later 0005 */ 0006 0007 #ifndef WGSELECTORWIDGETBASE_H 0008 #define WGSELECTORWIDGETBASE_H 0009 0010 #include <kis_display_color_converter.h> 0011 #include <KisVisualColorModel.h> 0012 #include <QPointer> 0013 #include <QSharedPointer> 0014 #include <QWidget> 0015 0016 class WGSelectorDisplayConfig : public QObject 0017 { 0018 Q_OBJECT 0019 public: 0020 WGSelectorDisplayConfig() = default; 0021 ~WGSelectorDisplayConfig() = default; 0022 const KisDisplayColorConverter *displayConverter() const; 0023 void setDisplayConverter(const KisDisplayColorConverter *converter); 0024 0025 bool previewInPaintingCS() const { return m_previewInPaintingCS; } 0026 void setPreviewInPaintingCS(bool enabled); 0027 Q_SIGNALS: 0028 void sigDisplayConfigurationChanged(); 0029 private: 0030 QPointer<const KisDisplayColorConverter> m_displayConverter; 0031 bool m_previewInPaintingCS {false}; 0032 }; 0033 0034 typedef QSharedPointer<WGSelectorDisplayConfig> WGSelectorDisplayConfigSP; 0035 0036 class WGSelectorWidgetBase : public QWidget 0037 { 0038 Q_OBJECT 0039 public: 0040 enum UiMode { 0041 DockerMode, 0042 PopupMode 0043 }; 0044 0045 explicit WGSelectorWidgetBase(WGSelectorDisplayConfigSP displayConfig, QWidget *parent = nullptr, UiMode uiMode = UiMode::DockerMode); 0046 UiMode uiMode() const; 0047 void setUiMode(UiMode mode); 0048 WGSelectorDisplayConfigSP displayConfiguration() const; 0049 const KisDisplayColorConverter *displayConverter() const; 0050 /*! 0051 * \brief The position, relative to the top left corner, where the cursor 0052 * of the cursor shall be when showing the popup. 0053 * 0054 * The default implementation returns the widget center. 0055 * \return desired cursor position relative to the top left corner 0056 */ 0057 virtual QPoint popupOffset() const; 0058 virtual void setModel(KisVisualColorModelSP model); 0059 virtual void updateSettings(); 0060 0061 Q_SIGNALS: 0062 void sigColorInteraction(bool active); 0063 void sigChannelValuesChanged(const QVector4D &values); 0064 private: 0065 QPointer<const KisDisplayColorConverter> m_converter; 0066 WGSelectorDisplayConfigSP m_displayConfig; 0067 UiMode m_uiMode {DockerMode}; 0068 }; 0069 0070 #endif // WGSELECTORWIDGETBASE_H