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_