File indexing completed on 2024-06-16 04:16:40
0001 /* 0002 * KDE. Krita Project. 0003 * 0004 * SPDX-FileCopyrightText: 2020 Deif Lou <ginoba@gmail.com> 0005 * 0006 * SPDX-License-Identifier: GPL-2.0-or-later 0007 */ 0008 0009 #ifndef KIS_HALFTONE_FILTER_CONFIGURATION_H 0010 #define KIS_HALFTONE_FILTER_CONFIGURATION_H 0011 0012 #include <QHash> 0013 #include <QString> 0014 #include <QStringList> 0015 0016 #include <kis_filter_configuration.h> 0017 #include <KoColor.h> 0018 #include <KoColorSpaceRegistry.h> 0019 #include <generator/kis_generator_registry.h> 0020 0021 class KisHalftoneFilterConfiguration; 0022 typedef KisPinnedSharedPtr<KisHalftoneFilterConfiguration> KisHalftoneFilterConfigurationSP; 0023 0024 class KisHalftoneFilterConfiguration : public KisFilterConfiguration 0025 { 0026 public: 0027 KisHalftoneFilterConfiguration(const QString & name, qint32 version, KisResourcesInterfaceSP resourcesInterface); 0028 KisHalftoneFilterConfiguration(const KisHalftoneFilterConfiguration &rhs); 0029 0030 ~KisHalftoneFilterConfiguration() override; 0031 0032 KisFilterConfigurationSP clone() const override; 0033 0034 void setResourcesInterface(KisResourcesInterfaceSP resourcesInterface) override; 0035 QList<KoResourceLoadResult> linkedResources(KisResourcesInterfaceSP globalResourcesInterface) const override; 0036 QList<KoResourceLoadResult> embeddedResources(KisResourcesInterfaceSP globalResourcesInterface) const override; 0037 0038 static constexpr const char *HalftoneMode_Intensity = "intensity"; 0039 static constexpr const char *HalftoneMode_IndependentChannels = "independent_channels"; 0040 static constexpr const char *HalftoneMode_Alpha = "alpha"; 0041 0042 // default properties 0043 inline static QString defaultMode() { return HalftoneMode_Intensity; } 0044 0045 inline static QString defaultGeneratorId() 0046 { 0047 static QString defaultGeneratorId; 0048 if (defaultGeneratorId.isNull()) { 0049 QStringList generatorIds = KisGeneratorRegistry::instance()->keys(); 0050 if (generatorIds.size() == 0) { 0051 defaultGeneratorId = ""; 0052 } else { 0053 generatorIds.sort(); 0054 if (generatorIds.indexOf("screentone") == -1) { 0055 defaultGeneratorId = generatorIds.at(0); 0056 } else { 0057 defaultGeneratorId = "screentone"; 0058 } 0059 } 0060 } 0061 return defaultGeneratorId; 0062 } 0063 0064 static constexpr qreal defaultHardness() { return 80.0; } 0065 0066 static constexpr bool defaultInvert() { return false; } 0067 0068 inline static const KoColor& defaultForegroundColor() 0069 { 0070 static const KoColor c(Qt::black, KoColorSpaceRegistry::instance()->rgb8()); 0071 return c; 0072 } 0073 0074 inline static const KoColor& defaultBackgroundColor() 0075 { 0076 static const KoColor c(Qt::white, KoColorSpaceRegistry::instance()->rgb8()); 0077 return c; 0078 } 0079 0080 static constexpr int defaultForegroundOpacity() { return 100; } 0081 0082 static constexpr int defaultBackgroundOpacity() { return 100; } 0083 0084 QString colorModelId() const; 0085 QString mode() const; 0086 QString generatorId(const QString &prefix) const; 0087 KisFilterConfigurationSP generatorConfiguration(const QString &prefix) const; 0088 qreal hardness(const QString &prefix) const; 0089 bool invert(const QString &prefix) const; 0090 KoColor foregroundColor(const QString &prefix) const; 0091 int foregroundOpacity(const QString &prefix) const; 0092 KoColor backgroundColor(const QString &prefix) const; 0093 int backgroundOpacity(const QString &prefix) const; 0094 0095 void setColorModelId(const QString &newColorModelId); 0096 void setMode(const QString &newMode); 0097 void setGeneratorId(const QString &prefix, const QString &id); 0098 void setGeneratorConfiguration(const QString &prefix, KisFilterConfigurationSP config); 0099 void setHardness(const QString &prefix, qreal newHardness); 0100 void setInvert(const QString &prefix, bool newInvert); 0101 void setForegroundColor(const QString &prefix, const KoColor &newForegroundColor); 0102 void setForegroundOpacity(const QString &prefix, int newOpacity); 0103 void setBackgroundColor(const QString &prefix, const KoColor &newBackgroundColor); 0104 void setBackgroundOpacity(const QString &prefix, int newBackgroundOpacity); 0105 0106 void setProperty(const QString &name, const QVariant &value) override; 0107 0108 private: 0109 mutable QHash<QString, KisFilterConfigurationSP> m_generatorConfigurationsCache; 0110 }; 0111 0112 #endif