File indexing completed on 2024-05-26 04:33:19
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 KISSCREENTONEGENERATORCONFIGURATION_H 0010 #define KISSCREENTONEGENERATORCONFIGURATION_H 0011 0012 #include <QString> 0013 #include <QStringList> 0014 #include <QScopedPointer> 0015 0016 #include <KoColor.h> 0017 #include <KoColorSpaceRegistry.h> 0018 #include <kis_filter_configuration.h> 0019 0020 class KisScreentoneGeneratorTemplate; 0021 0022 enum KisScreentonePatternType 0023 { 0024 KisScreentonePatternType_Dots, 0025 KisScreentonePatternType_Lines 0026 }; 0027 0028 enum KisScreentoneShapeType 0029 { 0030 // Dots 0031 KisScreentoneShapeType_RoundDots, 0032 KisScreentoneShapeType_EllipseDotsLegacy, 0033 KisScreentoneShapeType_DiamondDots, 0034 KisScreentoneShapeType_SquareDots, 0035 KisScreentoneShapeType_EllipseDots, 0036 // Lines 0037 KisScreentoneShapeType_StraightLines = 0, 0038 KisScreentoneShapeType_SineWaveLines, 0039 KisScreentoneShapeType_TriangularWaveLines, 0040 KisScreentoneShapeType_SawtoothWaveLines, 0041 KisScreentoneShapeType_CurtainsLines 0042 }; 0043 0044 enum KisScreentoneInterpolationType 0045 { 0046 KisScreentoneInterpolationType_Linear, 0047 KisScreentoneInterpolationType_Sinusoidal 0048 }; 0049 0050 enum KisScreentoneEqualizationMode 0051 { 0052 KisScreentoneEqualizationMode_None, 0053 KisScreentoneEqualizationMode_FunctionBased, 0054 KisScreentoneEqualizationMode_TemplateBased 0055 }; 0056 0057 enum KisScreentoneSizeMode 0058 { 0059 KisScreentoneSizeMode_ResolutionBased, 0060 KisScreentoneSizeMode_PixelBased 0061 }; 0062 0063 enum KisScreentoneUnits 0064 { 0065 KisScreentoneUnits_Inches, 0066 KisScreentoneUnits_Centimeters 0067 }; 0068 0069 QStringList screentonePatternNames(); 0070 QStringList screentoneShapeNames(int pattern); 0071 QStringList screentoneInterpolationNames(int pattern, int shape); 0072 0073 class KisScreentoneGeneratorConfiguration; 0074 typedef KisPinnedSharedPtr<KisScreentoneGeneratorConfiguration> KisScreentoneGeneratorConfigurationSP; 0075 0076 class KisScreentoneGeneratorConfiguration : public KisFilterConfiguration 0077 { 0078 public: 0079 KisScreentoneGeneratorConfiguration(qint32 version, KisResourcesInterfaceSP resourcesInterface); 0080 KisScreentoneGeneratorConfiguration(KisResourcesInterfaceSP resourcesInterface); 0081 KisScreentoneGeneratorConfiguration(const KisScreentoneGeneratorConfiguration &rhs); 0082 ~KisScreentoneGeneratorConfiguration(); 0083 0084 virtual KisFilterConfigurationSP clone() const override; 0085 0086 static inline QString defaultName() { return "screentone"; } 0087 static constexpr qint32 defaultVersion() { return 2; } 0088 0089 static constexpr int defaultPattern() { return KisScreentonePatternType_Dots; } 0090 static constexpr int defaultShape() { return KisScreentoneShapeType_RoundDots; } 0091 static constexpr int defaultInterpolation() { return KisScreentoneInterpolationType_Sinusoidal; } 0092 static constexpr int defaultEqualizationMode() { return KisScreentoneEqualizationMode_TemplateBased; } 0093 0094 static inline const KoColor& defaultForegroundColor() 0095 { 0096 static const KoColor c(Qt::black, KoColorSpaceRegistry::instance()->rgb8()); 0097 return c; 0098 } 0099 static inline const KoColor& defaultBackgroundColor() 0100 { 0101 static const KoColor c(Qt::white, KoColorSpaceRegistry::instance()->rgb8()); 0102 return c; 0103 } 0104 static constexpr int defaultForegroundOpacity() { return 100; } 0105 static constexpr int defaultBackgroundOpacity() { return 100; } 0106 static constexpr bool defaultInvert() { return false; } 0107 static constexpr qreal defaultBrightness() { return 50.0; } 0108 static constexpr qreal defaultContrast() { return 95.0; } 0109 0110 static constexpr int defaultSizeMode() { return KisScreentoneSizeMode_ResolutionBased; } 0111 static constexpr int defaultUnits() { return KisScreentoneUnits_Inches; } 0112 static constexpr qreal defaultResolution() { return 300.0; } 0113 static constexpr qreal defaultFrequencyX() { return 30.0; } 0114 static constexpr qreal defaultFrequencyY() { return 30.0; } 0115 static constexpr bool defaultConstrainFrequency() { return true; } 0116 static constexpr qreal defaultPositionX() { return 0.0; } 0117 static constexpr qreal defaultPositionY() { return 0.0; } 0118 static constexpr qreal defaultSizeX() { return 10.0; } 0119 static constexpr qreal defaultSizeY() { return 10.0; } 0120 static constexpr bool defaultConstrainSize() { return true; } 0121 static constexpr qreal defaultShearX() { return 0.0; } 0122 static constexpr qreal defaultShearY() { return 0.0; } 0123 static constexpr qreal defaultRotation() { return 45.0; } 0124 static constexpr bool defaultAlignToPixelGrid() { return true; } 0125 static constexpr int defaultAlignToPixelGridX() { return 1; } 0126 static constexpr int defaultAlignToPixelGridY() { return 1; } 0127 0128 int pattern() const; 0129 int shape() const; 0130 int interpolation() const; 0131 int equalizationMode() const; 0132 0133 KoColor foregroundColor() const; 0134 KoColor backgroundColor() const; 0135 int foregroundOpacity() const; 0136 int backgroundOpacity() const; 0137 bool invert() const; 0138 qreal brightness() const; 0139 qreal contrast() const; 0140 0141 int sizeMode() const; 0142 int units() const; 0143 qreal resolution() const; 0144 qreal frequencyX() const; 0145 qreal frequencyY() const; 0146 bool constrainFrequency() const; 0147 qreal positionX() const; 0148 qreal positionY() const; 0149 qreal sizeX() const; 0150 qreal sizeY() const; 0151 bool constrainSize() const; 0152 qreal shearX() const; 0153 qreal shearY() const; 0154 qreal rotation() const; 0155 bool alignToPixelGrid() const; 0156 int alignToPixelGridX() const; 0157 int alignToPixelGridY() const; 0158 const KisScreentoneGeneratorTemplate& getTemplate() const; 0159 0160 void setPattern(int newPattern); 0161 void setShape(int newShape); 0162 void setInterpolation(int newInterpolation); 0163 void setEqualizationMode(int newEqualizationMode); 0164 0165 void setForegroundColor(const KoColor &newForegroundColor); 0166 void setBackgroundColor(const KoColor &newBackgroundColor); 0167 void setForegroundOpacity(int newForegroundOpacity); 0168 void setBackgroundOpacity(int newBackgroundOpacity); 0169 void setInvert(bool newInvert); 0170 void setBrightness(qreal newBrightness); 0171 void setContrast(qreal newContrast); 0172 0173 void setSizeMode(int newSizeMode); 0174 void setUnits(int newUnits); 0175 void setResolution(qreal newResolution); 0176 void setFrequencyX(qreal newFrequencyX); 0177 void setFrequencyY(qreal newFrequencyY); 0178 void setConstrainFrequency(bool newConstrainFrequency); 0179 void setPositionX(qreal newPositionX); 0180 void setPositionY(qreal newPositionY); 0181 void setSizeX(qreal newSizeX); 0182 void setSizeY(qreal newSizeY); 0183 void setConstrainSize(bool newConstrainSize); 0184 void setShearX(qreal newShearX); 0185 void setShearY(qreal newShearY); 0186 void setRotation(qreal newRotation); 0187 void setAlignToPixelGrid(bool newAlignToPixelGrid); 0188 void setAlignToPixelGridX(int newAlignToPixelGridX); 0189 void setAlignToPixelGridY(int newAlignToPixelGridY); 0190 0191 void setDefaults(); 0192 0193 private: 0194 class Private; 0195 QScopedPointer<Private> m_d; 0196 }; 0197 0198 #endif