File indexing completed on 2024-05-26 04:33:04
0001 /* 0002 * This file is part of Krita 0003 * 0004 * SPDX-FileCopyrightText: 2004 Cyrille Berger <cberger@cberger.net> 0005 * 0006 * SPDX-License-Identifier: GPL-2.0-or-later 0007 */ 0008 0009 #ifndef _KIS_PERCHANNEL_FILTER_H_ 0010 #define _KIS_PERCHANNEL_FILTER_H_ 0011 0012 #include <QPair> 0013 #include <QList> 0014 0015 #include <filter/kis_color_transformation_filter.h> 0016 #include <filter/kis_color_transformation_configuration.h> 0017 #include <kis_config_widget.h> 0018 #include <kis_paint_device.h> 0019 0020 #include "virtual_channel_info.h" 0021 0022 #include "kis_multichannel_filter_base.h" 0023 #include <KisCurveWidgetControlsManager.h> 0024 0025 0026 class KisPerChannelFilterConfiguration 0027 : public KisMultiChannelFilterConfiguration 0028 { 0029 public: 0030 KisPerChannelFilterConfiguration(int channelCount, KisResourcesInterfaceSP resourcesInterface); 0031 KisPerChannelFilterConfiguration(const KisPerChannelFilterConfiguration &rhs); 0032 ~KisPerChannelFilterConfiguration() override; 0033 0034 KisFilterConfigurationSP clone() const override; 0035 0036 KisCubicCurve getDefaultCurve() override; 0037 }; 0038 0039 0040 /** 0041 * This class is a filter to adjust channels independently 0042 */ 0043 class KisPerChannelFilter : public KisMultiChannelFilter 0044 { 0045 public: 0046 KisPerChannelFilter(); 0047 0048 KisConfigWidget * createConfigurationWidget(QWidget* parent, const KisPaintDeviceSP dev, bool useForMasks) const override; 0049 KisFilterConfigurationSP factoryConfiguration(KisResourcesInterfaceSP resourcesInterface) const override; 0050 0051 KoColorTransformation* createTransformation(const KoColorSpace* cs, const KisFilterConfigurationSP config) const override; 0052 0053 static inline KoID id() { 0054 return KoID("perchannel", i18n("Color Adjustment")); 0055 } 0056 }; 0057 0058 class KisPerChannelConfigWidget : public KisMultiChannelConfigWidget 0059 { 0060 Q_OBJECT 0061 0062 public: 0063 KisPerChannelConfigWidget(QWidget * parent, KisPaintDeviceSP dev, Qt::WindowFlags f = Qt::WindowFlags()); 0064 ~KisPerChannelConfigWidget() override; 0065 0066 KisPropertiesConfigurationSP configuration() const override; 0067 0068 protected: 0069 void updateChannelControls() override; 0070 0071 virtual KisPropertiesConfigurationSP getDefaultConfiguration() override; 0072 0073 private: 0074 QScopedPointer<KisCurveWidgetControlsManagerInt> m_curveControlsManager; 0075 }; 0076 0077 #endif