File indexing completed on 2024-05-12 15:58:44
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_SUSPEND_PROJECTION_UPDATES_STROKE_STRATEGY_H 0008 #define __KIS_SUSPEND_PROJECTION_UPDATES_STROKE_STRATEGY_H 0009 0010 #include <KisRunnableBasedStrokeStrategy.h> 0011 0012 #include <QScopedPointer> 0013 0014 class KisSuspendProjectionUpdatesStrokeStrategy : public KisRunnableBasedStrokeStrategy 0015 { 0016 public: 0017 struct SharedData { 0018 KisProjectionUpdatesFilterCookie installedFilterCookie = {}; 0019 }; 0020 using SharedDataSP = QSharedPointer<SharedData>; 0021 0022 struct SuspendFrameInvalidationHandle { 0023 public: 0024 SuspendFrameInvalidationHandle(class KisImageAnimationInterface* interface); 0025 ~SuspendFrameInvalidationHandle(); 0026 0027 private: 0028 KisImageAnimationInterface* m_interface; 0029 }; 0030 0031 0032 public: 0033 KisSuspendProjectionUpdatesStrokeStrategy(KisImageWSP image, bool suspend, SharedDataSP sharedData); 0034 ~KisSuspendProjectionUpdatesStrokeStrategy() override; 0035 0036 static QList<KisStrokeJobData*> createSuspendJobsData(KisImageWSP image); 0037 static QList<KisStrokeJobData*> createResumeJobsData(KisImageWSP image); 0038 static SharedDataSP createSharedData(); 0039 0040 private: 0041 void initStrokeCallback() override; 0042 void doStrokeCallback(KisStrokeJobData *data) override; 0043 void cancelStrokeCallback() override; 0044 0045 void suspendStrokeCallback() override; 0046 void resumeStrokeCallback() override; 0047 0048 0049 void resumeAndIssueUpdates(bool dropUpdates); 0050 0051 private: 0052 struct Private; 0053 const QScopedPointer<Private> m_d; 0054 }; 0055 0056 #endif /* __KIS_SUSPEND_PROJECTION_UPDATES_STROKE_STRATEGY_H */