File indexing completed on 2024-06-16 04:16:35
0001 /* 0002 * SPDX-FileCopyrightText: 2017 Wolthera van Hövell tot Westerflier <griffinvalley@gmail.com> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #ifndef KIS_ASCCDL_FILTER_H 0008 #define KIS_ASCCDL_FILTER_H 0009 0010 #include <filter/kis_filter.h> 0011 #include "filter/kis_color_transformation_filter.h" 0012 0013 class KritaASCCDL : public QObject 0014 { 0015 Q_OBJECT 0016 public: 0017 KritaASCCDL(QObject *parent, const QVariantList &); 0018 ~KritaASCCDL() override; 0019 }; 0020 0021 class KisFilterASCCDL: public KisColorTransformationFilter 0022 { 0023 public: 0024 KisFilterASCCDL(); 0025 public: 0026 0027 static inline KoID id() { 0028 return KoID("asc-cdl", i18n("Slope, Offset, Power(ASC-CDL)")); 0029 } 0030 KoColorTransformation *createTransformation(const KoColorSpace* cs, const KisFilterConfigurationSP config) const override; 0031 KisConfigWidget *createConfigurationWidget(QWidget* parent, const KisPaintDeviceSP dev, bool useForMasks) const override; 0032 bool needsTransparentPixels(const KisFilterConfigurationSP config, const KoColorSpace *cs) const override; 0033 protected: 0034 KisFilterConfigurationSP defaultConfiguration(KisResourcesInterfaceSP resourcesInterface) const override; 0035 }; 0036 0037 class KisASCCDLTransformation : public KoColorTransformation 0038 { 0039 public: 0040 KisASCCDLTransformation(const KoColorSpace *cs, KoColor slope, KoColor offset, KoColor power); 0041 void transform(const quint8* src, quint8* dst, qint32 nPixels) const override; 0042 private: 0043 QVector<float> m_slope; 0044 QVector<float> m_offset; 0045 QVector<float> m_power; 0046 const KoColorSpace *m_cs; 0047 }; 0048 0049 #endif // KIS_ASCCDL_H