File indexing completed on 2024-06-16 04:17:33

0001 /*
0002  *  SPDX-FileCopyrightText: 2020 Ashwin Dhakaita <ashwingpdhakaita@gmail.com>
0003  *
0004  *  SPDX-License-Identifier: LGPL-2.0-or-later
0005  */
0006 
0007 #ifndef KIS_MY_PAINTOP_H_
0008 #define KIS_MY_PAINTOP_H_
0009 
0010 #include <kis_types.h>
0011 #include <brushengine/kis_paintop.h>
0012 
0013 #include <libmypaint/mypaint-brush.h>
0014 #include <KisAirbrushOptionData.h>
0015 
0016 #include "MyPaintPaintOpPreset.h"
0017 #include "MyPaintSurface.h"
0018 
0019 class KisPainter;
0020 
0021 
0022 class KisMyPaintPaintOp : public KisPaintOp
0023 {
0024 
0025 public:
0026 
0027     KisMyPaintPaintOp(const KisPaintOpSettingsSP settings, KisPainter * painter, KisNodeSP node, KisImageSP image);
0028     ~KisMyPaintPaintOp() override;
0029 
0030 protected:
0031 
0032     KisSpacingInformation paintAt(const KisPaintInformation& info) override;
0033 
0034     KisSpacingInformation updateSpacingImpl(const KisPaintInformation &info) const override;
0035 
0036     KisTimingInformation updateTimingImpl(const KisPaintInformation &info) const override;
0037 
0038 private:
0039     KisSpacingInformation computeSpacing(const KisPaintInformation &info, qreal lodScale) const;
0040 
0041 private:
0042     QScopedPointer<KisMyPaintPaintOpPreset> m_brush;
0043     QScopedPointer<KisMyPaintSurface> m_surface;
0044     KisPaintOpSettingsSP m_settings;
0045     KisAirbrushOptionData m_airBrushData;
0046     KisImageWSP m_image;
0047     double m_dtime, m_radius, m_previousTime = 0;
0048     bool m_isStrokeStarted;
0049 };
0050 
0051 #endif // KIS_MY_PAINTOP_H_