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