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_