File indexing completed on 2024-05-12 15:58:15
0001 /* 0002 * SPDX-FileCopyrightText: 2007 Boudewijn Rempt <boud@valdyas.org> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 #ifndef _KIS_FILTER_MASK_ 0007 #define _KIS_FILTER_MASK_ 0008 0009 #include "kis_types.h" 0010 #include "kis_effect_mask.h" 0011 0012 #include "kis_node_filter_interface.h" 0013 #include "kis_filter_configuration.h" 0014 0015 0016 /** 0017 An filter mask is a single channel mask that applies a particular 0018 filter to the layer the mask belongs to. It differs from an 0019 adjustment layer in that it only works on its parent layer, while 0020 adjustment layers work on all layers below it in its layer group. 0021 */ 0022 0023 class KRITAIMAGE_EXPORT KisFilterMask : public KisEffectMask, public KisNodeFilterInterface 0024 { 0025 Q_OBJECT 0026 0027 public: 0028 0029 /** 0030 * Create an empty filter mask. 0031 */ 0032 KisFilterMask(KisImageWSP image, const QString &name = QString()); 0033 0034 ~KisFilterMask() override; 0035 0036 QIcon icon() const override; 0037 0038 KisNodeSP clone() const override { 0039 return KisNodeSP(new KisFilterMask(*this)); 0040 } 0041 0042 bool accept(KisNodeVisitor &v) override; 0043 void accept(KisProcessingVisitor &visitor, KisUndoAdapter *undoAdapter) override; 0044 0045 KisFilterMask(const KisFilterMask& rhs); 0046 0047 void setFilter(KisFilterConfigurationSP filterConfig, bool checkCompareConfig = true) override; 0048 0049 QRect decorateRect(KisPaintDeviceSP &src, 0050 KisPaintDeviceSP &dst, 0051 const QRect & rc, 0052 PositionToFilthy maskPos) const override; 0053 0054 QRect changeRect(const QRect &rect, PositionToFilthy pos = N_FILTHY) const override; 0055 QRect needRect(const QRect &rect, PositionToFilthy pos = N_FILTHY) const override; 0056 }; 0057 0058 #endif //_KIS_FILTER_MASK_