Krita Source Code Documentation
Loading...
Searching...
No Matches
KisAsynchronousStrokeUpdateHelper.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2019 Dmitry Kazakov <dimula73@gmail.com>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
6
7
8#ifndef KISASYNCHRONOUSSTROKEUPDATEHELPER_H
9#define KISASYNCHRONOUSSTROKEUPDATEHELPER_H
10
11#include <QObject>
12#include <QTimer>
13#include "kis_types.h"
15#include "kritaui_export.h"
16
18
19
20class KRITAUI_EXPORT KisAsynchronousStrokeUpdateHelper : public QObject
21{
22 Q_OBJECT
23public:
25 public:
26 UpdateData(bool _forceUpdate,
27 Sequentiality sequentiality = SEQUENTIAL,
28 Exclusivity exclusivity = NORMAL)
29 : KisStrokeJobData(sequentiality, exclusivity),
30 forceUpdate(_forceUpdate)
31 {}
32
33 KisStrokeJobData* createLodClone(int levelOfDetail) override {
34 return new UpdateData(*this, levelOfDetail);
35 }
36
37
38 protected:
39 UpdateData(const UpdateData &rhs, int levelOfDetail)
40 : KisStrokeJobData(rhs),
41 forceUpdate(rhs.forceUpdate)
42 {
43 Q_UNUSED(levelOfDetail);
44 }
45 public:
46 bool forceUpdate = false;
47 };
48
49 using UpdateDataFactory = std::function<KisStrokeJobData*(bool)>;
50
51public:
54
60 void startUpdateStream(KisStrokesFacade *strokesFacade, KisStrokeId strokeId);
61
69 void initUpdateStreamLowLevel(KisStrokesFacade *strokesFacade, KisStrokeId strokeId);
70
77 void startUpdateStreamLowLevel();
78
79 void endUpdateStream();
80 void cancelUpdateStream();
81
82 bool isActive() const;
83
84 void setCustomUpdateDataFactory(UpdateDataFactory factory);
85
86private Q_SLOTS:
87 void slotAsyncUpdateCame(bool forceUpdate = false);
88
89private:
94};
95
96#endif // KISASYNCHRONOUSSTROKEUPDATEHELPER_H
UpdateData(bool _forceUpdate, Sequentiality sequentiality=SEQUENTIAL, Exclusivity exclusivity=NORMAL)
KisStrokeJobData * createLodClone(int levelOfDetail) override
std::function< KisStrokeJobData *(bool)> UpdateDataFactory