File indexing completed on 2025-02-02 04:15:56
0001 /* 0002 * SPDX-FileCopyrightText: 2008 Boudewijn Rempt <boud@valdyas.org> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #ifndef KIS_PAINTOP_CONFIG_WIDGET_H_ 0008 #define KIS_PAINTOP_CONFIG_WIDGET_H_ 0009 0010 #include "kritaimage_export.h" 0011 0012 #include "kis_config_widget.h" 0013 #include "kis_image.h" 0014 #include <kis_debug.h> 0015 #include <kis_properties_configuration.h> 0016 #include <lager/reader.hpp> 0017 0018 class KisResourcesInterface; 0019 using KisResourcesInterfaceSP = QSharedPointer<KisResourcesInterface>; 0020 0021 class KisPaintopLodLimitations; 0022 0023 /** 0024 * Base class for widgets that are used to edit and display paintop settings. 0025 */ 0026 class KRITAIMAGE_EXPORT KisPaintOpConfigWidget : public KisConfigWidget 0027 { 0028 Q_OBJECT 0029 0030 public: 0031 KisPaintOpConfigWidget(QWidget * parent = 0, Qt::WindowFlags f = Qt::WindowFlags()); 0032 ~KisPaintOpConfigWidget() override; 0033 0034 void writeConfigurationSafe(KisPropertiesConfigurationSP config) const; 0035 void setConfigurationSafe(const KisPropertiesConfigurationSP config); 0036 0037 protected: 0038 0039 friend class CompositeOpModel; 0040 0041 void setConfiguration(const KisPropertiesConfigurationSP config) override = 0; 0042 virtual void writeConfiguration(KisPropertiesConfigurationSP config) const = 0; 0043 0044 public: 0045 0046 0047 virtual KisPaintopLodLimitations lodLimitations() const = 0; 0048 virtual lager::reader<KisPaintopLodLimitations> lodLimitationsReader() const = 0; 0049 virtual lager::reader<qreal> effectiveBrushSize() const = 0; 0050 0051 virtual void setImage(KisImageWSP image); 0052 virtual void setNode(KisNodeWSP node); 0053 virtual void setResourcesInterface(KisResourcesInterfaceSP resourcesInterface); 0054 0055 KisResourcesInterfaceSP resourcesInterface() const; 0056 0057 void setView(KisViewManager *view) override; 0058 0059 /** 0060 * Some paintops are more complicated and require full canvas with layers, projections and KisImage etc. 0061 * Example is duplicate paintop. In this case simple canvas like scratchbox does not work. 0062 * Every paintop supports the scratchbox by default, override and return false if paintop does not. 0063 */ 0064 virtual bool supportScratchBox(); 0065 0066 protected: 0067 KisImageWSP m_image; 0068 KisNodeWSP m_node; 0069 0070 KisResourcesInterfaceSP m_resourcesInterface; 0071 0072 mutable int m_isInsideUpdateCall; 0073 }; 0074 0075 #endif