File indexing completed on 2024-05-26 04:33:49
0001 /* 0002 * SPDX-FileCopyrightText: 2011 Silvio Heinrich <plassy@web.de> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #ifndef _KIS_COLORSMUDGEOP_H_ 0008 #define _KIS_COLORSMUDGEOP_H_ 0009 0010 #include <QRect> 0011 0012 #include "KoColorTransformation.h" 0013 #include <KoAbstractGradient.h> 0014 0015 #include <kis_brush_based_paintop.h> 0016 #include <kis_types.h> 0017 0018 #include "KisOverlayPaintDeviceWrapper.h" 0019 #include <KisOpacityOption.h> 0020 #include <KisSpacingOption.h> 0021 #include <KisScatterOption.h> 0022 #include <KisRotationOption.h> 0023 #include <KisHSVOption.h> 0024 #include <KisAirbrushOptionData.h> 0025 #include <KisPaintThicknessOption.h> 0026 #include <KisGradientOption.h> 0027 #include <KisSmudgeLengthOption.h> 0028 #include <KisColorRateOption.h> 0029 #include <KisSmudgeRadiusOption.h> 0030 #include <KisSmudgeOverlayModeOptionData.h> 0031 0032 class QPointF; 0033 0034 class KisBrushBasedPaintOpSettings; 0035 class KisPainter; 0036 class KoColorSpace; 0037 class KisInterstrokeDataFactory; 0038 0039 class KisColorSmudgeStrategy; 0040 0041 class KisColorSmudgeOp: public KisBrushBasedPaintOp 0042 { 0043 public: 0044 KisColorSmudgeOp(const KisPaintOpSettingsSP settings, KisPainter* painter, KisNodeSP node, KisImageSP image); 0045 ~KisColorSmudgeOp() override; 0046 0047 static KisInterstrokeDataFactory* createInterstrokeDataFactory(const KisPaintOpSettingsSP settings, KisResourcesInterfaceSP resourcesInterface); 0048 0049 protected: 0050 KisSpacingInformation paintAt(const KisPaintInformation& info) override; 0051 0052 KisSpacingInformation updateSpacingImpl(const KisPaintInformation &info) const override; 0053 KisTimingInformation updateTimingImpl(const KisPaintInformation &info) const override; 0054 0055 private: 0056 bool m_firstRun; 0057 0058 KoColor m_paintColor; 0059 KoAbstractGradientSP m_gradient; 0060 KisSizeOption m_sizeOption; 0061 KisRatioOption m_ratioOption; 0062 KisOpacityOption m_opacityOption; 0063 KisSpacingOption m_spacingOption; 0064 KisRateOption m_rateOption; 0065 KisRotationOption m_rotationOption; 0066 KisScatterOption m_scatterOption; 0067 KisPaintThicknessOption m_paintThicknessOption; 0068 KisGradientOption m_gradientOption; 0069 KisSmudgeLengthOption m_smudgeRateOption; 0070 KisColorRateOption2 m_colorRateOption; 0071 KisSmudgeRadiusOption2 m_smudgeRadiusOption; 0072 0073 QList<KisHSVOption*> m_hsvOptions; 0074 KisAirbrushOptionData m_airbrushData; 0075 KisSmudgeOverlayModeOptionData m_overlayModeData; 0076 0077 QRect m_dstDabRect; 0078 QPointF m_lastPaintPos; 0079 0080 KoColorTransformation *m_hsvTransform {0}; 0081 QScopedPointer<KisColorSmudgeStrategy> m_strategy; 0082 }; 0083 0084 #endif // _KIS_COLORSMUDGEOP_H_