Krita Source Code Documentation
Loading...
Searching...
No Matches
inplace_transform_stroke_strategy.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2013 Dmitry Kazakov <dimula73@gmail.com>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
6
7#ifndef __INPLACE_TRANSFORM_STROKE_STRATEGY_H
8#define __INPLACE_TRANSFORM_STROKE_STRATEGY_H
9
10#include <QObject>
11#include <KoUpdater.h>
13#include <kis_types.h>
14#include "tool_transform_args.h"
15#include <kritatooltransform_export.h>
16
18
21
26
27
29{
30 Q_OBJECT
31public:
33 public:
38
39 public:
45
46 KisStrokeJobData* createLodClone(int levelOfDetail) override {
47 return new UpdateTransformData(*this, levelOfDetail);
48 }
49
50 private:
51 UpdateTransformData(const UpdateTransformData &rhs, int levelOfDetail)
52 : KisStrokeJobData(rhs),
53 args(rhs.args),
55 {
56 Q_UNUSED(levelOfDetail);
57 }
58
59 public:
62 };
63
65 public:
69 };
70
71private:
72
78 {
80 KisStrokeJobData* createLodClone(int levelOfDetail) override;
81 private:
82 BarrierUpdateData(const BarrierUpdateData &rhs, int levelOfDetail);
83 };
84
85public:
86
123
124public:
126 const QString &filterId,
127 bool forceReset,
128 KisNodeList rootNodes,
129 KisSelectionSP selection,
130 KisPaintDeviceSP externalSource,
132 KisUpdatesFacade *updatesFacade, KisNodeSP imageRoot, bool forceLodMode);
133
135
136 void initStrokeCallback() override;
137 void finishStrokeCallback() override;
138 void cancelStrokeCallback() override;
139 void doStrokeCallback(KisStrokeJobData *data) override;
140
141Q_SIGNALS:
143 void sigConvexHullCalculated(QPolygon convexHull, void *cookie);
144
145protected:
146 void postProcessToplevelCommand(KUndo2Command *command) override;
147
148private:
150
152
153 void tryPostUpdateJob(bool forceUpdate);
154 void doCanvasUpdate(bool forceUpdate);
155 QPolygon calculateConvexHull();
156
157 int calculatePreferredLevelOfDetail(const QRect &srcRect);
158
160
162 void undoAllCommands();
163 void undoTransformCommands(int levelOfDetail);
164
165 void fetchAllUpdateRequests(int levelOfDetail, KisBatchNodeUpdateSP updateData);
166
167 void transformNode(KisNodeSP node, const ToolTransformArgs &config, int levelOfDetail);
169 void reapplyTransform(ToolTransformArgs args, QVector<KisStrokeJobData *> &mutatedJobs, int levelOfDetail, bool useHoldUI);
170 void finalizeStrokeImpl(QVector<KisStrokeJobData *> &mutatedJobs, bool saveCommands);
171
172 void finishAction(QVector<KisStrokeJobData *> &mutatedJobs);
173 void cancelAction(QVector<KisStrokeJobData *> &mutatedJobs);
174 void addDirtyRect(KisNodeSP node, const QRect &rect, int levelOfDetail);
175
176 static void repopulateUI(QVector<KisStrokeJobData *> &mutatedJobs, KisUpdatesFacade *updatesFacade, const QRect &dirtyRect);
177
178private:
179 struct Private;
180 const QScopedPointer<Private> m_d;
181};
182
183#endif /* __INPLACE_TRANSFORM_STROKE_STRATEGY_H */
UpdateTransformData(const UpdateTransformData &rhs, int levelOfDetail)
UpdateTransformData(ToolTransformArgs _args, Destination _dest)
KisStrokeJobData * createLodClone(int levelOfDetail) override
void finalizeStrokeImpl(QVector< KisStrokeJobData * > &mutatedJobs, bool saveCommands)
void finishAction(QVector< KisStrokeJobData * > &mutatedJobs)
void addDirtyRect(KisNodeSP node, const QRect &rect, int levelOfDetail)
void sigConvexHullCalculated(QPolygon convexHull, void *cookie)
static void repopulateUI(QVector< KisStrokeJobData * > &mutatedJobs, KisUpdatesFacade *updatesFacade, const QRect &dirtyRect)
InplaceTransformStrokeStrategy(ToolTransformArgs::TransformMode mode, const QString &filterId, bool forceReset, KisNodeList rootNodes, KisSelectionSP selection, KisPaintDeviceSP externalSource, KisStrokeUndoFacade *undoFacade, KisUpdatesFacade *updatesFacade, KisNodeSP imageRoot, bool forceLodMode)
void transformNode(KisNodeSP node, const ToolTransformArgs &config, int levelOfDetail)
void fetchAllUpdateRequests(int levelOfDetail, KisBatchNodeUpdateSP updateData)
void cancelAction(QVector< KisStrokeJobData * > &mutatedJobs)
void doStrokeCallback(KisStrokeJobData *data) override
void sigTransactionGenerated(TransformTransactionProperties transaction, ToolTransformArgs args, void *cookie)
void postProcessToplevelCommand(KUndo2Command *command) override
Applies some modifications (e.g. assigning extra data) to the toplevel command.
InplaceTransformStrokeStrategy(const InplaceTransformStrokeStrategy &rhs, int levelOfDetail)
void reapplyTransform(ToolTransformArgs args, QVector< KisStrokeJobData * > &mutatedJobs, int levelOfDetail, bool useHoldUI)
void executeAndAddCommand(KUndo2Command *cmd, CommandGroup group, KisStrokeJobData::Sequentiality seq)
KisStrokeJobData * createLodClone(int levelOfDetail) override