File indexing completed on 2024-05-26 04:32:31
0001 /* 0002 * SPDX-FileCopyrightText: 2009 Cyrille Berger <cberger@cberger.net> 0003 * SPDX-FileCopyrightText: 2022 Bourumir Wyngs <bourumir.wyngs@gmail.com> 0004 * 0005 * SPDX-License-Identifier: LGPL-2.0-or-later 0006 */ 0007 0008 #ifndef _DIGITALMIXER_DOCK_H_ 0009 #define _DIGITALMIXER_DOCK_H_ 0010 0011 #include <QPointer> 0012 #include <QDockWidget> 0013 #include <QPushButton> 0014 0015 #include <KoColor.h> 0016 #include <KoCanvasBase.h> 0017 0018 #include <kis_workspace_resource.h> 0019 #include <kis_mainwindow_observer.h> 0020 #include <KisViewManager.h> 0021 #include <kis_canvas_resource_provider.h> 0022 0023 class KoColorPopupAction; 0024 class KoColorSlider; 0025 class KoColorPatch; 0026 class KisColorButton; 0027 0028 class DigitalMixerDock : public QDockWidget, public KisMainwindowObserver { 0029 Q_OBJECT 0030 public: 0031 DigitalMixerDock( ); 0032 QString observerName() override { return "DigitalMixerDock"; } 0033 /// reimplemented from KoCanvasObserverBase 0034 void setCanvas(KoCanvasBase *canvas) override; 0035 void unsetCanvas() override { m_canvas = 0; setEnabled(false);} 0036 0037 public: // KisMainWindowObserver 0038 void setViewManager(KisViewManager* kisview) override; 0039 0040 public Q_SLOTS: 0041 void setCurrentColor(const KoColor& ); 0042 void canvasResourceChanged(int, const QVariant&); 0043 0044 private Q_SLOTS: 0045 void popupColorChanged(int i); 0046 void colorSliderChanged(int i); 0047 void targetColorChanged(int); 0048 0049 void resetMixer(); 0050 void saveToWorkspace(KisWorkspaceResourceSP workspace); 0051 void loadFromWorkspace(KisWorkspaceResourceSP workspace); 0052 0053 void gradientStartColorChanged(int); 0054 void gradientColorSliderChanged(int); 0055 void gradientEndColorChanged(int); 0056 void gradientTargetColorChanged(int); 0057 0058 private: 0059 QPointer<KoCanvasBase> m_canvas; 0060 KoColor m_currentColor; 0061 KoColorPatch* m_currentColorPatch; 0062 0063 struct Mixer { 0064 KoColorPatch* targetColor; 0065 KoColorSlider* targetSlider; 0066 KisColorButton* actionColor; 0067 }; 0068 0069 struct GradientMixer { 0070 KoColorPatch* targetColor; 0071 KisColorButton* startColor; 0072 KoColorSlider* targetSlider; 0073 KisColorButton* endColor; 0074 }; 0075 0076 QList<Mixer> m_mixers; 0077 GradientMixer m_gradientMixer; 0078 bool m_tellCanvas; 0079 0080 QPushButton *m_reset_button; 0081 }; 0082 0083 0084 #endif