File indexing completed on 2024-06-23 04:26:58
0001 /* 0002 * KDE. Krita Project. 0003 * 0004 * SPDX-FileCopyrightText: 2021 Deif Lou <ginoba@gmail.com> 0005 * 0006 * SPDX-License-Identifier: GPL-2.0-or-later 0007 */ 0008 0009 #ifndef KIS_LEVELS_FILTER_CONFIGURATION_H 0010 #define KIS_LEVELS_FILTER_CONFIGURATION_H 0011 0012 #include <filter/kis_color_transformation_configuration.h> 0013 #include <kis_paint_device.h> 0014 #include <KisLevelsCurve.h> 0015 0016 class KisLevelsFilterConfiguration : public KisColorTransformationConfiguration 0017 { 0018 public: 0019 KisLevelsFilterConfiguration(int channelCount, qint32 version, KisResourcesInterfaceSP resourcesInterface); 0020 KisLevelsFilterConfiguration(int channelCount, KisResourcesInterfaceSP resourcesInterface); 0021 KisLevelsFilterConfiguration(const KisLevelsFilterConfiguration &rhs); 0022 0023 KisFilterConfigurationSP clone() const override; 0024 0025 static inline QString defaultName() { return "levels"; } 0026 static constexpr qint32 defaultVersion() { return 2; } 0027 static inline KisLevelsCurve defaultLevelsCurve() { return KisLevelsCurve(); } 0028 static constexpr bool defaultUseLightnessMode() { return true; } 0029 static constexpr bool defaultShowLogarithmicHistogram() { return false; } 0030 0031 using KisFilterConfiguration::fromXML; 0032 using KisFilterConfiguration::toXML; 0033 using KisFilterConfiguration::fromLegacyXML; 0034 0035 void fromLegacyXML(const QDomElement& root) override; 0036 void fromXML(const QDomElement& e) override; 0037 void toXML(QDomDocument& doc, QDomElement& root) const override; 0038 0039 void setProperty(const QString &name, const QVariant &value) override; 0040 0041 const QVector<KisLevelsCurve> levelsCurves() const; 0042 const KisLevelsCurve lightnessLevelsCurve() const; 0043 void setLevelsCurves(const QVector<KisLevelsCurve> &newLevelsCurves); 0044 void setLightnessLevelsCurve(const KisLevelsCurve &newLightnessLevelsCurve); 0045 const QVector<QVector<quint16>>& transfers() const; 0046 const QVector<quint16>& lightnessTransfer() const; 0047 0048 bool useLightnessMode() const; 0049 bool showLogarithmicHistogram() const; 0050 void setUseLightnessMode(bool newUseLightnessMode); 0051 void setShowLogarithmicHistogram(bool newShowLogarithmicHistogram); 0052 0053 bool isCompatible(const KisPaintDeviceSP) const override; 0054 0055 void setDefaults(); 0056 0057 private: 0058 QVector<QVector<quint16>> m_transfers; 0059 QVector<quint16> m_lightnessTransfer; 0060 0061 int channelCount() const; 0062 void setChannelCount(int newChannelCount); 0063 0064 void setLightessLevelsCurveFromLegacyValues(); 0065 void setLegacyValuesFromLightnessLevelsCurve(); 0066 0067 void updateTransfers(); 0068 void updateLightnessTransfer(); 0069 }; 0070 0071 #endif