File indexing completed on 2024-06-23 04:27:38

0001 /*
0002  *  SPDX-FileCopyrightText: 2008-2011 Lukáš Tvrdý <lukast.dev@gmail.com>
0003  *
0004  *  SPDX-License-Identifier: GPL-2.0-or-later
0005  */
0006 
0007 #ifndef KIS_CURVEPAINTOP_H_
0008 #define KIS_CURVEPAINTOP_H_
0009 
0010 #include <brushengine/kis_paintop.h>
0011 #include <kis_types.h>
0012 #include <KisCurveStandardOptions.h>
0013 #include <KisCurveOpOptionData.h>
0014 #include <KisOpacityOption.h>
0015 
0016 class KisPainter;
0017 
0018 class KisCurvePaintOp : public KisPaintOp
0019 {
0020 
0021 public:
0022     KisCurvePaintOp(const KisPaintOpSettingsSP settings, KisPainter * painter, KisNodeSP node, KisImageSP image);
0023     ~KisCurvePaintOp() override;
0024 
0025     void paintLine(const KisPaintInformation &pi1, const KisPaintInformation &pi2, KisDistanceInformation *currentDistance) override;
0026 
0027 protected:
0028     KisSpacingInformation paintAt(const KisPaintInformation& info) override;
0029 
0030     KisSpacingInformation updateSpacingImpl(const KisPaintInformation &info) const override;
0031 
0032 private:
0033     void paintLine(KisPaintDeviceSP dab, const KisPaintInformation &pi1, const KisPaintInformation &pi2);
0034 
0035 private:
0036     KisPaintDeviceSP m_dab;
0037     KisPaintDeviceSP m_dev;
0038 
0039     KisCurveOpOptionData m_curveOpOption;
0040     KisOpacityOption m_opacityOption;
0041     KisLineWidthOption m_lineWidthOption;
0042     KisCurvesOpacityOption m_curvesOpacityOption;
0043 
0044     QList<QPointF> m_points;
0045     KisPainter * m_painter;
0046 
0047 };
0048 
0049 #endif // KIS_CURVEPAINTOP_H_