Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_simple_stroke_strategy.cpp
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2011 Dmitry Kazakov <dimula73@gmail.com>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
6
8
9
10/***************************************************************/
11/* private class: SimpleStrokeJobStrategy */
12/***************************************************************/
13
15{
16public:
18 KisSimpleStrokeStrategy *parentStroke)
19 : m_type(type),
20 m_parentStroke(parentStroke)
21 {
22 }
23
24 void run(KisStrokeJobData *data) override {
25 switch(m_type) {
27 Q_UNUSED(data);
29 break;
31 Q_UNUSED(data);
33 break;
35 Q_UNUSED(data);
37 break;
40 break;
43 break;
46 break;
47 default:
48 break;
49 }
50 }
51
52 QString debugId() const override {
53 return QString("%1/%2")
54 .arg(m_parentStroke->id())
56 }
57
58private:
61};
62
63
64/***************************************************************/
65/* KisSimpleStrokeStrategy */
66/***************************************************************/
67
69 : KisStrokeStrategy(id, name),
70 m_jobEnabled(NJOBS, false),
71 m_jobSequentiality(NJOBS, KisStrokeJobData::SEQUENTIAL),
72 m_jobExclusivity(NJOBS, KisStrokeJobData::NORMAL)
73{
74}
75
77 : KisStrokeStrategy(rhs),
78 m_jobEnabled(rhs.m_jobEnabled),
79 m_jobSequentiality(rhs.m_jobSequentiality),
80 m_jobExclusivity(rhs.m_jobExclusivity)
81{
82}
83
87{
88 m_jobEnabled[(int)type] = enable;
89 m_jobSequentiality[(int)type] = sequentiality;
90 m_jobExclusivity[(int)type] = exclusivity;
91}
92
95{
96 KisStrokeJobStrategy *strategy = 0;
97
98 if(m_jobEnabled[(int)type]) {
99 strategy = new SimpleStrokeJobStrategy(type, this);
100 }
101
102 return strategy;
103}
104
109
114
119
124
129
134
136{
137 KisStrokeJobData::Sequentiality sequentiality = m_jobSequentiality[(int)type];
138 KisStrokeJobData::Exclusivity exclusivity = m_jobExclusivity[(int)type];
139
140 return new KisStrokeJobData(sequentiality, exclusivity);
141}
142
147
152
157
162
167
171
175
179
181{
182 Q_UNUSED(data);
183}
184
188
192
194{
195 QLatin1String result;
196
197 switch (type) {
198 case JOB_INIT:
199 result = QLatin1String("init");
200 break;
201 case JOB_DOSTROKE:
202 result = QLatin1String("dostroke");
203 break;
204 case JOB_FINISH:
205 result = QLatin1String("finish");
206 break;
207 case JOB_CANCEL:
208 result = QLatin1String("cancel");
209 break;
210 case JOB_SUSPEND:
211 result = QLatin1String("suspend");
212 break;
213 case JOB_RESUME:
214 result = QLatin1String("resume");
215 break;
216 case NJOBS:
217 qFatal("Undefined stroke job type: %d", type);
218 }
219
220 return result;
221}
void enableJob(JobType type, bool enable=true, KisStrokeJobData::Sequentiality sequentiality=KisStrokeJobData::SEQUENTIAL, KisStrokeJobData::Exclusivity exclusivity=KisStrokeJobData::NORMAL)
KisStrokeJobData * createFinishData() override
KisStrokeJobData * createCancelData() override
static QLatin1String jobTypeToString(JobType type)
KisStrokeJobData * createSuspendData() override
QVector< KisStrokeJobData::Sequentiality > m_jobSequentiality
KisSimpleStrokeStrategy(const QLatin1String &id, const KUndo2MagicString &name=KUndo2MagicString())
KisStrokeJobStrategy * createStrategy(JobType type)
KisStrokeJobStrategy * createFinishStrategy() override
KisStrokeJobStrategy * createCancelStrategy() override
KisStrokeJobData * createInitData() override
KisStrokeJobData * createResumeData() override
KisStrokeJobStrategy * createInitStrategy() override
KisStrokeJobStrategy * createSuspendStrategy() override
virtual void doStrokeCallback(KisStrokeJobData *data)
KisStrokeJobData * createData(JobType type)
QVector< KisStrokeJobData::Exclusivity > m_jobExclusivity
KisStrokeJobStrategy * createDabStrategy() override
KisStrokeJobStrategy * createResumeStrategy() override
SimpleStrokeJobStrategy(KisSimpleStrokeStrategy::JobType type, KisSimpleStrokeStrategy *parentStroke)
KisSimpleStrokeStrategy::JobType m_type
void run(KisStrokeJobData *data) override
KisSimpleStrokeStrategy * m_parentStroke