Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_strokes_queue.h
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
7#ifndef __KIS_STROKES_QUEUE_H
8#define __KIS_STROKES_QUEUE_H
9
10#include "kritaimage_export.h"
11#include "kundo2magicstring.h"
12#include "kis_types.h"
14#include "kis_stroke_strategy.h"
19#include "KisLodPreferences.h"
20
22class KisStroke;
26
27
28class KRITAIMAGE_EXPORT KisStrokesQueue : public KisStrokesQueueMutatedJobInterface
29{
30public:
33
34 KisStrokeId startStroke(KisStrokeStrategy *strokeStrategy);
35 void addJob(KisStrokeId id, KisStrokeJobData *data);
36
37 void endStroke(KisStrokeId id);
38 bool cancelStroke(KisStrokeId id);
39
40 bool tryCancelCurrentStrokeAsync();
41
42 UndoResult tryUndoLastStrokeAsync();
43
44 void processQueue(KisUpdaterContext &updaterContext,
45 bool externalJobsPending);
47
52 bool isEmpty() const;
53
61 bool isIdle() const;
62
63 qint32 sizeMetric() const;
64 KUndo2MagicString currentStrokeName() const;
65 bool hasOpenedStrokes() const;
66
69
71 void setLodPreferences(const KisLodPreferences &value);
72 void explicitRegenerateLevelOfDetail();
73 void setLod0ToNStrokeStrategyFactory(const KisLodSyncStrokeStrategyFactory &factory);
74 void setSuspendResumeUpdatesStrokeStrategyFactory(const KisSuspendResumeStrategyPairFactory &factory);
75 void setPurgeRedoStateCallback(const std::function<void()> &callback);
76 void setPostSyncLod0GUIPlaneRequestForResumeCallback(const std::function<void()> &callback);
78
84 void notifyUFOChangedImage();
85
86 void debugDumpAllStrokes();
87
88 // interface for KisStrokeStrategy only!
89 void addMutatedJobs(KisStrokeId id, const QVector<KisStrokeJobData*> list) final override;
90
91private:
92 bool processOneJob(KisUpdaterContext &updaterContext,
93 bool externalJobsPending);
94 bool checkStrokeState(bool hasStrokeJobsRunning,
95 int runningLevelOfDetail);
96 bool checkExclusiveProperty(bool hasMergeJobs, bool hasStrokeJobs);
97 bool checkSequentialProperty(KisUpdaterContextSnapshotEx snapshot, bool externalJobsPending);
98 bool checkBarrierProperty(bool hasMergeJobs, bool hasStrokeJobs,
99 bool externalJobsPending);
100 bool checkLevelOfDetailProperty(int runningLevelOfDetail);
101
103 KisStrokeId startLodNUndoStroke(KisStrokeStrategy *strokeStrategy);
104
105private:
106 struct Private;
107 Private * const m_d;
108};
109
110#endif /* __KIS_STROKES_QUEUE_H */
float value(const T *src, size_t ch)
virtual void addMutatedJobs(KisStrokeId strokeId, const QVector< KisStrokeJobData * > list)=0
std::function< std::pair< KisSuspendResumePair, KisSuspendResumePair >()> KisSuspendResumeStrategyPairFactory
std::function< KisLodSyncPair(bool)> KisLodSyncStrokeStrategyFactory
qreal balancingRatioOverride() const
bool wrapAroundModeSupported() const
KisLodPreferences lodPreferences() const override
Private *const m_d
bool needsExclusiveAccess() const
KisPostExecutionUndoAdapter * lodNPostExecutionUndoAdapter() const
bool checkBarrierProperty(bool hasMergeJobs, bool hasStrokeJobs, bool externalJobsPending)