File indexing completed on 2024-05-12 15:58:46

0001 /*
0002  *  SPDX-FileCopyrightText: 2006 Boudewijn Rempt <boud@valdyas.org>
0003  *
0004  *
0005  *  SPDX-License-Identifier: GPL-2.0-or-later
0006  */
0007 #ifndef _KIS_TRANSPARENCY_MASK_
0008 #define _KIS_TRANSPARENCY_MASK_
0009 
0010 #include "kis_types.h"
0011 #include "kis_effect_mask.h"
0012 
0013 class QRect;
0014 
0015 /**
0016  *  A transparency mask is a single channel mask that applies a particular
0017  *  transparency to the layer the mask belongs to. It differs from an
0018  *  adjustment layer in that it only works on its parent layer, while
0019  *  adjustment layers work on all layers below it in its layer group.
0020  *
0021  *  XXX: Use KisConfig::useProjections() to enable/disable the caching of
0022  *       the projection.
0023  */
0024 class KRITAIMAGE_EXPORT KisTransparencyMask : public KisEffectMask
0025 {
0026     Q_OBJECT
0027 
0028 public:
0029 
0030     KisTransparencyMask(KisImageWSP image, const QString &name);
0031     KisTransparencyMask(const KisTransparencyMask& rhs);
0032     ~KisTransparencyMask() override;
0033 
0034     KisNodeSP clone() const override {
0035         return KisNodeSP(new KisTransparencyMask(*this));
0036     }
0037 
0038     QRect decorateRect(KisPaintDeviceSP &src, KisPaintDeviceSP &dst,
0039                        const QRect & rc,
0040                        PositionToFilthy maskPos) const override;
0041     QIcon icon() const override;
0042     bool accept(KisNodeVisitor &v) override;
0043     void accept(KisProcessingVisitor &visitor, KisUndoAdapter *undoAdapter) override;
0044 
0045     QRect extent() const override;
0046     QRect exactBounds() const override;
0047 
0048     QRect changeRect(const QRect &rect, PositionToFilthy pos = N_FILTHY) const override;
0049     QRect needRect(const QRect &rect, PositionToFilthy pos = N_FILTHY) const override;
0050 
0051     bool paintsOutsideSelection() const override;
0052 };
0053 
0054 #endif //_KIS_TRANSPARENCY_MASK_