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 */