File indexing completed on 2024-05-26 04:33:54

0001 /*
0002  *  SPDX-FileCopyrightText: 2008, 2010 Lukáš Tvrdý <lukast.dev@gmail.com>
0003  *
0004  *  SPDX-License-Identifier: GPL-2.0-or-later
0005  */
0006 
0007 #ifndef KIS_DEFORMPAINTOP_H_
0008 #define KIS_DEFORMPAINTOP_H_
0009 
0010 #include <brushengine/kis_paintop.h>
0011 #include <kis_types.h>
0012 
0013 #include <KisAirbrushOptionData.h>
0014 #include <KisOpacityOption.h>
0015 #include <KisRotationOption.h>
0016 
0017 #include "deform_brush.h"
0018 
0019 #include "kis_deform_paintop_settings.h"
0020 #include "KisDeformOptionData.h"
0021 #include "KisBrushSizeOptionData.h"
0022 
0023 class KisPainter;
0024 
0025 class KisDeformPaintOp : public KisPaintOp
0026 {
0027 
0028 public:
0029     KisDeformPaintOp(const KisPaintOpSettingsSP settings, KisPainter * painter, KisNodeSP node, KisImageSP image);
0030     ~KisDeformPaintOp() override;
0031 
0032 protected:
0033     KisSpacingInformation paintAt(const KisPaintInformation& info) override;
0034 
0035     KisSpacingInformation updateSpacingImpl(const KisPaintInformation &info) const override;
0036 
0037     KisTimingInformation updateTimingImpl(const KisPaintInformation &info) const override;
0038 
0039 private:
0040 
0041     KisPaintDeviceSP m_dab;
0042     KisPaintDeviceSP m_dev;
0043 
0044     DeformBrush m_deformBrush;
0045     KisDeformOptionData m_deformData;
0046     KisBrushSizeOptionData m_brushSizeData;
0047 
0048     KisAirbrushOptionData m_airbrushData;
0049 
0050     KisSizeOption m_sizeOption;
0051     KisOpacityOption m_opacityOption;
0052     KisRotationOption m_rotationOption;
0053     KisRateOption m_rateOption;
0054 
0055     qreal m_xSpacing;
0056     qreal m_ySpacing;
0057     qreal m_spacing;
0058 };
0059 
0060 #endif // KIS_DEFORMPAINTOP_H_