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

0001 /*
0002  *  SPDX-FileCopyrightText: 2015 Dmitry Kazakov <dimula73@gmail.com>
0003  *
0004  *  SPDX-License-Identifier: GPL-2.0-or-later
0005  */
0006 
0007 #ifndef __KIS_MASK_PROJECTION_PLANE_H
0008 #define __KIS_MASK_PROJECTION_PLANE_H
0009 
0010 #include "kis_abstract_projection_plane.h"
0011 
0012 #include <QScopedPointer>
0013 
0014 /**
0015  * An implementation of the KisAbstractProjectionPlane interface for a
0016  * layer object.
0017  *
0018  * Please note that recalculate() and apply() methods are not defined
0019  * for masks, because the KisLayer code still uses traditional
0020  * methods of KisMask directly.
0021  */
0022 class KisMaskProjectionPlane : public KisAbstractProjectionPlane
0023 {
0024 public:
0025     KisMaskProjectionPlane(KisMask *mask);
0026     ~KisMaskProjectionPlane() override;
0027 
0028     QRect recalculate(const QRect& rect, KisNodeSP filthyNode) override;
0029     void apply(KisPainter *painter, const QRect &rect) override;
0030 
0031     QRect needRect(const QRect &rect, KisNode::PositionToFilthy pos) const override;
0032     QRect changeRect(const QRect &rect, KisNode::PositionToFilthy pos) const override;
0033     QRect accessRect(const QRect &rect, KisNode::PositionToFilthy pos) const override;
0034     QRect needRectForOriginal(const QRect &rect) const override;
0035     QRect tightUserVisibleBounds() const override;
0036 
0037     KisPaintDeviceList getLodCapableDevices() const override;
0038 
0039 private:
0040     struct Private;
0041     const QScopedPointer<Private> m_d;
0042 };
0043 
0044 #endif /* __KIS_MASK_PROJECTION_PLANE_H */