File indexing completed on 2024-06-16 04:17:22
0001 /* 0002 * SPDX-FileCopyrightText: 2008 Boudewijn Rempt <boud@valdyas.org> 0003 * SPDX-FileCopyrightText: 2008-2010 Lukáš Tvrdý <lukast.dev@gmail.com> 0004 * 0005 * SPDX-License-Identifier: GPL-2.0-or-later 0006 */ 0007 0008 #ifndef KIS_HAIRYPAINTOP_H_ 0009 #define KIS_HAIRYPAINTOP_H_ 0010 0011 #include <klocalizedstring.h> 0012 #include <brushengine/kis_paintop.h> 0013 #include <brushengine/kis_paintop_factory.h> 0014 #include <kis_types.h> 0015 0016 #include "hairy_brush.h" 0017 0018 #include <KisStandardOptions.h> 0019 #include <KisRotationOption.h> 0020 #include <KisOpacityOption.h> 0021 #include "KisHairyBristleOptionData.h" 0022 #include "KisHairyInkOptionData.h" 0023 0024 class KisPainter; 0025 class KisBrushBasedPaintOpSettings; 0026 class KisResourcesInterface; 0027 0028 class KisHairyPaintOp : public KisPaintOp 0029 { 0030 0031 public: 0032 KisHairyPaintOp(const KisPaintOpSettingsSP settings, KisPainter *painter, KisNodeSP node, KisImageSP image); 0033 0034 void paintLine(const KisPaintInformation &pi1, const KisPaintInformation &pi2, KisDistanceInformation *currentDistance) override; 0035 0036 static QList<KoResourceLoadResult> prepareLinkedResources(const KisPaintOpSettingsSP settings, KisResourcesInterfaceSP resourcesInterface); 0037 protected: 0038 KisSpacingInformation paintAt(const KisPaintInformation& info) override; 0039 0040 KisSpacingInformation updateSpacingImpl(const KisPaintInformation &info) const override; 0041 0042 private: 0043 KisHairyProperties m_properties; 0044 KisHairyBristleOptionData m_hairyBristleOption; 0045 KisHairyInkOptionData m_hairyInkOption; 0046 0047 KisPaintDeviceSP m_dab; 0048 KisPaintDeviceSP m_dev; 0049 HairyBrush m_brush; 0050 KisOpacityOption m_opacityOption; 0051 KisSizeOption m_sizeOption; 0052 KisRotationOption m_rotationOption; 0053 0054 void loadSettings(); 0055 }; 0056 0057 #endif // KIS_HAIRYPAINTOP_H_