File indexing completed on 2024-05-26 04:34:12
0001 /* 0002 * SPDX-FileCopyrightText: 2008-2012 Lukáš Tvrdý <lukast.dev@gmail.com> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #ifndef KIS_SPRAY_PAINTOP_H_ 0008 #define KIS_SPRAY_PAINTOP_H_ 0009 0010 #include <brushengine/kis_paintop.h> 0011 #include <kis_types.h> 0012 0013 #include "spray_brush.h" 0014 #include "kis_spray_paintop_settings.h" 0015 #include "kis_brush_option.h" 0016 #include <KisAirbrushOptionData.h> 0017 #include <KisOpacityOption.h> 0018 #include <KisRotationOption.h> 0019 #include <KisSprayShapeDynamicsOptionData.h> 0020 #include "KisSprayOpOption.h" 0021 #include "KisSprayShapeOptionData.h" 0022 0023 0024 class KisPainter; 0025 0026 0027 class KisSprayPaintOp : public KisPaintOp 0028 { 0029 0030 public: 0031 0032 KisSprayPaintOp(const KisPaintOpSettingsSP settings, KisPainter * painter, KisNodeSP node, KisImageSP image); 0033 ~KisSprayPaintOp() override; 0034 0035 static QList<KoResourceLoadResult> prepareLinkedResources(const KisPaintOpSettingsSP settings, KisResourcesInterfaceSP resourcesInterface); 0036 0037 protected: 0038 0039 KisSpacingInformation paintAt(const KisPaintInformation& info) override; 0040 0041 KisSpacingInformation updateSpacingImpl(const KisPaintInformation &info) const override; 0042 0043 KisTimingInformation updateTimingImpl(const KisPaintInformation &info) const override; 0044 0045 private: 0046 KisSpacingInformation computeSpacing(const KisPaintInformation &info, qreal lodScale) const; 0047 0048 private: 0049 KisSprayShapeOptionData m_shapeProperties; 0050 KisSprayOpOption m_sprayOpOption; 0051 KisSprayShapeDynamicsOptionData m_shapeDynamicsProperties; 0052 KisColorOptionData m_colorProperties; 0053 KisBrushOptionProperties m_brushOption; 0054 0055 KisPaintDeviceSP m_dab; 0056 SprayBrush m_sprayBrush; 0057 qreal m_xSpacing, m_ySpacing, m_spacing; 0058 bool m_isPresetValid; 0059 KisAirbrushOptionData m_airbrushData; 0060 0061 KisRotationOption m_rotationOption; 0062 KisSizeOption m_sizeOption; 0063 KisOpacityOption m_opacityOption; 0064 KisRateOption m_rateOption; 0065 KisNodeSP m_node; 0066 }; 0067 0068 #endif // KIS_SPRAY_PAINTOP_H_