File indexing completed on 2024-05-12 15:58:42
0001 /* 0002 * SPDX-FileCopyrightText: 2011 Dmitry Kazakov <dimula73@gmail.com> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #ifndef __KIS_SIMPLE_STROKE_STRATEGY_H 0008 #define __KIS_SIMPLE_STROKE_STRATEGY_H 0009 0010 #include <QVector> 0011 #include "kis_stroke_strategy.h" 0012 #include "kis_stroke_job_strategy.h" 0013 0014 0015 class KRITAIMAGE_EXPORT KisSimpleStrokeStrategy : public KisStrokeStrategy 0016 { 0017 public: 0018 enum JobType { 0019 JOB_INIT = 0, 0020 JOB_CANCEL, 0021 JOB_FINISH, 0022 JOB_DOSTROKE, 0023 JOB_SUSPEND, 0024 JOB_RESUME, 0025 0026 NJOBS 0027 }; 0028 0029 public: 0030 KisSimpleStrokeStrategy(const QLatin1String &id, const KUndo2MagicString &name = KUndo2MagicString()); 0031 0032 KisStrokeJobStrategy* createInitStrategy() override; 0033 KisStrokeJobStrategy* createFinishStrategy() override; 0034 KisStrokeJobStrategy* createCancelStrategy() override; 0035 KisStrokeJobStrategy* createDabStrategy() override; 0036 KisStrokeJobStrategy* createSuspendStrategy() override; 0037 KisStrokeJobStrategy* createResumeStrategy() override; 0038 0039 KisStrokeJobData* createInitData() override; 0040 KisStrokeJobData* createFinishData() override; 0041 KisStrokeJobData* createCancelData() override; 0042 KisStrokeJobData* createSuspendData() override; 0043 KisStrokeJobData* createResumeData() override; 0044 0045 virtual void initStrokeCallback(); 0046 virtual void finishStrokeCallback(); 0047 virtual void cancelStrokeCallback(); 0048 virtual void doStrokeCallback(KisStrokeJobData *data); 0049 virtual void suspendStrokeCallback(); 0050 virtual void resumeStrokeCallback(); 0051 0052 static QLatin1String jobTypeToString(JobType type); 0053 0054 protected: 0055 void enableJob(JobType type, bool enable = true, 0056 KisStrokeJobData::Sequentiality sequentiality = KisStrokeJobData::SEQUENTIAL, 0057 KisStrokeJobData::Exclusivity exclusivity = KisStrokeJobData::NORMAL); 0058 0059 protected: 0060 KisSimpleStrokeStrategy(const KisSimpleStrokeStrategy &rhs); 0061 0062 private: 0063 KisStrokeJobStrategy* createStrategy(JobType type); 0064 KisStrokeJobData* createData(JobType type); 0065 0066 private: 0067 QVector<bool> m_jobEnabled; 0068 QVector<KisStrokeJobData::Sequentiality> m_jobSequentiality; 0069 QVector<KisStrokeJobData::Exclusivity> m_jobExclusivity; 0070 }; 0071 0072 #endif /* __KIS_SIMPLE_STROKE_STRATEGY_H */