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

0001 /*
0002  *  SPDX-FileCopyrightText: 2014 Dmitry Kazakov <dimula73@gmail.com>
0003  *
0004  *  SPDX-License-Identifier: GPL-2.0-or-later
0005  */
0006 
0007 #ifndef __KIS_PROJECTION_UPDATES_FILTER_H
0008 #define __KIS_PROJECTION_UPDATES_FILTER_H
0009 
0010 #include <QSharedPointer>
0011 #include "kritaimage_export.h"
0012 #include "kis_image_interfaces.h"
0013 
0014 class KisImage;
0015 class KisNode;
0016 class QRect;
0017 
0018 class KRITAIMAGE_EXPORT KisProjectionUpdatesFilter
0019 {
0020 public:
0021     virtual ~KisProjectionUpdatesFilter();
0022 
0023     /**
0024      * \return true if an update should be dropped by the image
0025      */
0026     virtual bool filter(KisImage *image, KisNode *node, const QVector<QRect> &rects, bool resetAnimationCache) = 0;
0027     virtual bool filterRefreshGraph(KisImage *image, KisNode *node, const QVector<QRect> &rect, const QRect &cropRect, KisUpdatesFacade::UpdateFlags flags) = 0;
0028     virtual bool filterProjectionUpdateNoFilthy(KisImage *image, KisNode* pseudoFilthy, const QVector<QRect> &rects, const QRect &cropRect, const bool resetAnimationCache) = 0;
0029 };
0030 
0031 
0032 
0033 /**
0034  * A dummy filter implementation that eats all the updates
0035  */
0036 class KRITAIMAGE_EXPORT KisDropAllProjectionUpdatesFilter : public KisProjectionUpdatesFilter
0037 {
0038 public:
0039     bool filter(KisImage *image, KisNode *node, const QVector<QRect> &rects, bool resetAnimationCache) override;
0040     bool filterRefreshGraph(KisImage *image, KisNode *node, const QVector<QRect> &rects, const QRect &cropRect, KisUpdatesFacade::UpdateFlags flags) override;
0041     bool filterProjectionUpdateNoFilthy(KisImage *image, KisNode* pseudoFilthy, const QVector<QRect> &rects, const QRect &cropRect, const bool resetAnimationCache) override;
0042 };
0043 
0044 #endif /* __KIS_PROJECTION_UPDATES_FILTER_H */