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