File indexing completed on 2024-05-12 15:58:43
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_STROKE_JOB_STRATEGY_H 0008 #define __KIS_STROKE_JOB_STRATEGY_H 0009 0010 #include "kritaimage_export.h" 0011 #include <QLatin1String> 0012 0013 0014 class KRITAIMAGE_EXPORT KisStrokeJobData 0015 { 0016 public: 0017 enum Sequentiality { 0018 CONCURRENT, 0019 SEQUENTIAL, 0020 BARRIER, 0021 UNIQUELY_CONCURRENT 0022 }; 0023 0024 enum Exclusivity { 0025 NORMAL, 0026 EXCLUSIVE 0027 }; 0028 0029 public: 0030 KisStrokeJobData(Sequentiality sequentiality = SEQUENTIAL, 0031 Exclusivity exclusivity = NORMAL); 0032 virtual ~KisStrokeJobData(); 0033 0034 bool isBarrier() const; 0035 bool isSequential() const; 0036 bool isExclusive() const; 0037 0038 Sequentiality sequentiality() { return m_sequentiality; } 0039 Exclusivity exclusivity() { return m_exclusivity; } 0040 0041 virtual KisStrokeJobData* createLodClone(int levelOfDetail); 0042 0043 bool isCancellable() const; 0044 void setCancellable(bool value); 0045 0046 int levelOfDetailOverride() const; 0047 void setLevelOfDetailOverride(int value); 0048 0049 protected: 0050 KisStrokeJobData(const KisStrokeJobData &rhs); 0051 0052 private: 0053 Sequentiality m_sequentiality; 0054 Exclusivity m_exclusivity; 0055 bool m_isCancellable; 0056 int m_levelOfDetailOverride; 0057 }; 0058 0059 0060 class KRITAIMAGE_EXPORT KisStrokeJobStrategy 0061 { 0062 public: 0063 KisStrokeJobStrategy(); 0064 virtual ~KisStrokeJobStrategy(); 0065 0066 virtual void run(KisStrokeJobData *data) = 0; 0067 virtual QString debugId() const = 0; 0068 0069 0070 private: 0071 }; 0072 0073 #endif /* __KIS_STROKE_JOB_STRATEGY_H */