File indexing completed on 2025-03-09 04:10:04

0001 /*
0002  *  SPDX-FileCopyrightText: 2010 Sven Langkamp <sven.langkamp@gmail.com>
0003  *
0004  *  SPDX-License-Identifier: GPL-2.0-or-later
0005  */
0006 
0007 #ifndef KIS_BRUSH_BASED_PAINTOP_SETTINGS_H
0008 #define KIS_BRUSH_BASED_PAINTOP_SETTINGS_H
0009 
0010 #include <brushengine/kis_paintop_settings.h>
0011 #include <kritapaintop_export.h>
0012 #include <kis_outline_generation_policy.h>
0013 #include <kis_brush.h>
0014 #include <kis_shared.h>
0015 #include <kis_shared_ptr.h>
0016 
0017 
0018 class PAINTOP_EXPORT KisBrushBasedPaintOpSettings : public KisOutlineGenerationPolicy<KisPaintOpSettings>
0019 {
0020 public:
0021     KisBrushBasedPaintOpSettings(KisResourcesInterfaceSP resourcesInterface);
0022     ~KisBrushBasedPaintOpSettings() override {}
0023 
0024     ///Reimplemented
0025     bool paintIncremental() override;
0026 
0027     using KisPaintOpSettings::brushOutline;
0028     KisOptimizedBrushOutline brushOutline(const KisPaintInformation &info, const OutlineMode &mode, qreal alignForZoom) override;
0029 
0030     KisBrushSP brush() const;
0031 
0032     KisPaintOpSettingsSP clone() const override;
0033 
0034     void setSpacing(qreal spacing);
0035     qreal spacing();
0036 
0037     void setAutoSpacing(bool active, qreal coeff);
0038 
0039     bool autoSpacingActive();
0040     qreal autoSpacingCoeff();
0041 
0042     void setPaintOpSize(qreal value) override;
0043     qreal paintOpSize() const override;
0044 
0045     void setPaintOpAngle(qreal value) override;
0046     qreal paintOpAngle() const override;
0047 
0048     QList<KisUniformPaintOpPropertySP> uniformProperties(KisPaintOpSettingsSP settings, QPointer<KisPaintOpPresetUpdateProxy> updateProxy) override;
0049 
0050     virtual bool hasPatternSettings() const override;
0051 
0052     QList<int> requiredCanvasResources() const override;
0053 
0054     void setResourceCacheInterface(KoResourceCacheInterfaceSP cacheInterface) override;
0055     void regenerateResourceCache(KoResourceCacheInterfaceSP cacheInterface) override;
0056 
0057 protected:
0058 
0059     void onPropertyChanged() override;
0060     KisOptimizedBrushOutline brushOutlineImpl(const KisPaintInformation &info, const OutlineMode &mode, qreal alignForZoom, qreal additionalScale);
0061     mutable KisBrushSP m_savedBrush;
0062     QList<KisUniformPaintOpPropertyWSP> m_uniformProperties;
0063 
0064 private:
0065 
0066     Q_DISABLE_COPY(KisBrushBasedPaintOpSettings)
0067 
0068 };
0069 
0070 class KisBrushBasedPaintOpSettings;
0071 typedef KisPinnedSharedPtr<KisBrushBasedPaintOpSettings> KisBrushBasedPaintOpSettingsSP;
0072 
0073 #endif // KIS_BRUSH_BASED_PAINTOP_SETTINGS_H