Krita Source Code Documentation
Loading...
Searching...
No Matches
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 __TRANSFORM_STROKE_STRATEGY_H
8
#define __TRANSFORM_STROKE_STRATEGY_H
9
10
#include <QObject>
11
#include <QMutex>
12
#include <
KoUpdater.h
>
13
#include <
kis_stroke_strategy_undo_command_based.h
>
14
#include <
kis_types.h
>
15
#include "
tool_transform_args.h
"
16
#include <
kis_processing_visitor.h
>
17
#include <kritatooltransform_export.h>
18
#include <boost/optional.hpp>
19
#include "
commands_new/KisUpdateCommandEx.h
"
20
21
class
KisPostExecutionUndoAdapter
;
22
class
TransformTransactionProperties
;
23
class
KisUpdatesFacade
;
24
class
KisDecoratedNodeInterface
;
25
26
27
class
TransformStrokeStrategy
:
public
QObject,
public
KisStrokeStrategyUndoCommandBased
28
{
29
Q_OBJECT
30
public
:
31
struct
TransformAllData
:
public
KisStrokeJobData
{
32
TransformAllData
(
const
ToolTransformArgs
&_config)
33
:
KisStrokeJobData
(
SEQUENTIAL
,
NORMAL
),
34
config
(_config) {}
35
36
ToolTransformArgs
config
;
37
};
38
39
40
class
TransformData
:
public
KisStrokeJobData
{
41
public
:
42
enum
Destination
{
43
PAINT_DEVICE
,
44
SELECTION
,
45
};
46
47
public
:
48
TransformData
(
Destination
_destination,
const
ToolTransformArgs
&_config,
KisNodeSP
_node)
49
:
KisStrokeJobData
(
CONCURRENT
,
NORMAL
),
50
destination
(_destination),
51
config
(_config),
52
node
(_node)
53
{
54
}
55
56
Destination
destination
;
57
ToolTransformArgs
config
;
58
KisNodeSP
node
;
59
};
60
61
class
ClearSelectionData
:
public
KisStrokeJobData
{
62
public
:
63
ClearSelectionData
(
KisNodeSP
_node)
64
:
KisStrokeJobData
(
SEQUENTIAL
,
EXCLUSIVE
),
65
node
(_node)
66
{
67
}
68
KisNodeSP
node
;
69
};
70
71
class
PreparePreviewData
:
public
KisStrokeJobData
{
72
public
:
73
PreparePreviewData
()
74
:
KisStrokeJobData
(
BARRIER
,
NORMAL
)
75
{
76
}
77
};
78
79
class
CalculateConvexHullData
:
public
KisStrokeJobData
{
80
public
:
81
CalculateConvexHullData
()
82
:
KisStrokeJobData
(
SEQUENTIAL
,
NORMAL
)
// Is this right?
83
{}
84
};
85
86
public
:
87
TransformStrokeStrategy
(
ToolTransformArgs::TransformMode
mode,
88
const
QString &filterId,
89
bool
forceReset,
90
KisNodeList
rootNodes,
91
KisSelectionSP
selection,
92
KisStrokeUndoFacade
*
undoFacade
,
KisUpdatesFacade
*updatesFacade);
93
94
~TransformStrokeStrategy
()
override
;
95
96
void
initStrokeCallback
()
override
;
97
void
finishStrokeCallback
()
override
;
98
void
cancelStrokeCallback
()
override
;
99
void
doStrokeCallback
(
KisStrokeJobData
*data)
override
;
100
101
Q_SIGNALS:
102
void
sigTransactionGenerated
(
TransformTransactionProperties
transaction,
ToolTransformArgs
args,
void
*cookie);
103
void
sigPreviewDeviceReady
(
KisPaintDeviceSP
device);
104
void
sigConvexHullCalculated
(QPolygon convexHull,
void
*cookie);
105
106
protected
:
107
void
postProcessToplevelCommand
(
KUndo2Command
*command)
override
;
108
109
private
:
110
KoUpdaterPtr
fetchUpdater
(
KisNodeSP
node);
111
112
void
clearSelection
(
KisPaintDeviceSP
device);
113
114
bool
checkBelongsToSelection
(
KisPaintDeviceSP
device)
const
;
115
116
KisPaintDeviceSP
createDeviceCache
(
KisPaintDeviceSP
src);
117
118
bool
haveDeviceInCache
(
KisPaintDeviceSP
src);
119
void
putDeviceCache
(
KisPaintDeviceSP
src,
KisPaintDeviceSP
cache);
120
KisPaintDeviceSP
getDeviceCache
(
KisPaintDeviceSP
src);
121
122
void
finishStrokeImpl
(
bool
applyTransform,
123
const
ToolTransformArgs
&args);
124
125
QPolygon
calculateConvexHull
();
126
127
private
:
128
KisUpdatesFacade
*
m_updatesFacade
;
129
KisBatchNodeUpdateSP
m_updateData
;
130
bool
m_updatesDisabled
=
false
;
131
ToolTransformArgs::TransformMode
m_mode
;
132
QString
m_filterId
;
133
bool
m_forceReset
;
134
135
KisSelectionSP
m_selection
;
136
137
QMutex
m_devicesCacheMutex
;
138
QHash<KisPaintDevice*, KisPaintDeviceSP>
m_devicesCacheHash
;
139
140
KisTransformMaskSP
writeToTransformMask
;
141
142
ToolTransformArgs
m_initialTransformArgs
;
143
boost::optional<ToolTransformArgs>
m_savedTransformArgs
;
144
KisNodeList
m_rootNodes
;
145
KisNodeList
m_processedNodes
;
146
int
m_currentTime
= -1;
147
QList<KisSelectionSP>
m_deactivatedSelections
;
148
QList<KisNodeSP>
m_hiddenProjectionLeaves
;
149
QList<KisSelectionMaskSP>
m_deactivatedOverlaySelectionMasks
;
150
QVector<KisDecoratedNodeInterface*>
m_disabledDecoratedNodes
;
151
152
const
KisSavedMacroCommand
*
m_overriddenCommand
= 0;
153
QVector<const KUndo2Command*>
m_skippedWhileMergeCommands
;
154
155
bool
m_finalizingActionsStarted
=
false
;
156
bool
m_convexHullHasBeenCalculated
=
false
;
157
};
158
159
#endif
/* __TRANSFORM_STROKE_STRATEGY_H */
KisUpdateCommandEx.h
KoUpdater.h
KUndo2Command
Definition
kundo2stack.h:87
KisDecoratedNodeInterface
Definition
KisDecoratedNodeInterface.h:18
KisPostExecutionUndoAdapter
Definition
kis_post_execution_undo_adapter.h:28
KisSavedMacroCommand
Definition
kis_saved_commands.h:88
KisSharedPtr< KisNode >
KisStrokeJobData
Definition
kis_stroke_job_strategy.h:15
KisStrokeJobData::SEQUENTIAL
@ SEQUENTIAL
Definition
kis_stroke_job_strategy.h:19
KisStrokeJobData::CONCURRENT
@ CONCURRENT
Definition
kis_stroke_job_strategy.h:18
KisStrokeJobData::BARRIER
@ BARRIER
Definition
kis_stroke_job_strategy.h:20
KisStrokeJobData::NORMAL
@ NORMAL
Definition
kis_stroke_job_strategy.h:25
KisStrokeJobData::EXCLUSIVE
@ EXCLUSIVE
Definition
kis_stroke_job_strategy.h:26
KisStrokeStrategyUndoCommandBased
Definition
kis_stroke_strategy_undo_command_based.h:26
KisStrokeStrategyUndoCommandBased::undoFacade
KisStrokeUndoFacade * undoFacade() const
Definition
kis_stroke_strategy_undo_command_based.cpp:188
KisStrokeUndoFacade
Definition
kis_image_interfaces.h:71
KisUpdatesFacade
Definition
kis_image_interfaces.h:31
QList< KisNodeSP >
QPointer< KoUpdater >
QSharedPointer< KisBatchNodeUpdate >
ToolTransformArgs
Definition
tool_transform_args.h:35
ToolTransformArgs::TransformMode
TransformMode
Definition
tool_transform_args.h:37
TransformStrokeStrategy::CalculateConvexHullData
Definition
transform_stroke_strategy.h:79
TransformStrokeStrategy::CalculateConvexHullData::CalculateConvexHullData
CalculateConvexHullData()
Definition
transform_stroke_strategy.h:81
TransformStrokeStrategy::ClearSelectionData
Definition
transform_stroke_strategy.h:61
TransformStrokeStrategy::ClearSelectionData::node
KisNodeSP node
Definition
transform_stroke_strategy.h:68
TransformStrokeStrategy::ClearSelectionData::ClearSelectionData
ClearSelectionData(KisNodeSP _node)
Definition
transform_stroke_strategy.h:63
TransformStrokeStrategy::PreparePreviewData
Definition
transform_stroke_strategy.h:71
TransformStrokeStrategy::PreparePreviewData::PreparePreviewData
PreparePreviewData()
Definition
transform_stroke_strategy.h:73
TransformStrokeStrategy::TransformData
Definition
transform_stroke_strategy.h:40
TransformStrokeStrategy::TransformData::node
KisNodeSP node
Definition
transform_stroke_strategy.h:58
TransformStrokeStrategy::TransformData::Destination
Destination
Definition
transform_stroke_strategy.h:42
TransformStrokeStrategy::TransformData::PAINT_DEVICE
@ PAINT_DEVICE
Definition
transform_stroke_strategy.h:43
TransformStrokeStrategy::TransformData::SELECTION
@ SELECTION
Definition
transform_stroke_strategy.h:44
TransformStrokeStrategy::TransformData::TransformData
TransformData(Destination _destination, const ToolTransformArgs &_config, KisNodeSP _node)
Definition
transform_stroke_strategy.h:48
TransformStrokeStrategy::TransformData::config
ToolTransformArgs config
Definition
transform_stroke_strategy.h:57
TransformStrokeStrategy::TransformData::destination
Destination destination
Definition
transform_stroke_strategy.h:56
TransformStrokeStrategy
Definition
transform_stroke_strategy.h:28
TransformStrokeStrategy::finishStrokeCallback
void finishStrokeCallback() override
Definition
transform_stroke_strategy.cpp:795
TransformStrokeStrategy::TransformStrokeStrategy
TransformStrokeStrategy(ToolTransformArgs::TransformMode mode, const QString &filterId, bool forceReset, KisNodeList rootNodes, KisSelectionSP selection, KisStrokeUndoFacade *undoFacade, KisUpdatesFacade *updatesFacade)
Definition
transform_stroke_strategy.cpp:56
TransformStrokeStrategy::m_filterId
QString m_filterId
Definition
transform_stroke_strategy.h:132
TransformStrokeStrategy::cancelStrokeCallback
void cancelStrokeCallback() override
Definition
transform_stroke_strategy.cpp:805
TransformStrokeStrategy::m_overriddenCommand
const KisSavedMacroCommand * m_overriddenCommand
Definition
transform_stroke_strategy.h:152
TransformStrokeStrategy::postProcessToplevelCommand
void postProcessToplevelCommand(KUndo2Command *command) override
Applies some modifications (e.g. assigning extra data) to the toplevel command.
Definition
transform_stroke_strategy.cpp:434
TransformStrokeStrategy::m_convexHullHasBeenCalculated
bool m_convexHullHasBeenCalculated
Definition
transform_stroke_strategy.h:156
TransformStrokeStrategy::m_disabledDecoratedNodes
QVector< KisDecoratedNodeInterface * > m_disabledDecoratedNodes
Definition
transform_stroke_strategy.h:150
TransformStrokeStrategy::sigTransactionGenerated
void sigTransactionGenerated(TransformTransactionProperties transaction, ToolTransformArgs args, void *cookie)
TransformStrokeStrategy::m_devicesCacheHash
QHash< KisPaintDevice *, KisPaintDeviceSP > m_devicesCacheHash
Definition
transform_stroke_strategy.h:138
TransformStrokeStrategy::fetchUpdater
KoUpdaterPtr fetchUpdater(KisNodeSP node)
TransformStrokeStrategy::sigPreviewDeviceReady
void sigPreviewDeviceReady(KisPaintDeviceSP device)
TransformStrokeStrategy::m_forceReset
bool m_forceReset
Definition
transform_stroke_strategy.h:133
TransformStrokeStrategy::m_initialTransformArgs
ToolTransformArgs m_initialTransformArgs
Definition
transform_stroke_strategy.h:142
TransformStrokeStrategy::doStrokeCallback
void doStrokeCallback(KisStrokeJobData *data) override
Definition
transform_stroke_strategy.cpp:132
TransformStrokeStrategy::m_updatesFacade
KisUpdatesFacade * m_updatesFacade
Definition
transform_stroke_strategy.h:128
TransformStrokeStrategy::initStrokeCallback
void initStrokeCallback() override
Definition
transform_stroke_strategy.cpp:508
TransformStrokeStrategy::m_devicesCacheMutex
QMutex m_devicesCacheMutex
Definition
transform_stroke_strategy.h:137
TransformStrokeStrategy::getDeviceCache
KisPaintDeviceSP getDeviceCache(KisPaintDeviceSP src)
Definition
transform_stroke_strategy.cpp:114
TransformStrokeStrategy::m_savedTransformArgs
boost::optional< ToolTransformArgs > m_savedTransformArgs
Definition
transform_stroke_strategy.h:143
TransformStrokeStrategy::m_updatesDisabled
bool m_updatesDisabled
Definition
transform_stroke_strategy.h:130
TransformStrokeStrategy::m_finalizingActionsStarted
bool m_finalizingActionsStarted
Definition
transform_stroke_strategy.h:155
TransformStrokeStrategy::m_selection
KisSelectionSP m_selection
Definition
transform_stroke_strategy.h:135
TransformStrokeStrategy::m_rootNodes
KisNodeList m_rootNodes
Definition
transform_stroke_strategy.h:144
TransformStrokeStrategy::sigConvexHullCalculated
void sigConvexHullCalculated(QPolygon convexHull, void *cookie)
TransformStrokeStrategy::createDeviceCache
KisPaintDeviceSP createDeviceCache(KisPaintDeviceSP src)
Definition
transform_stroke_strategy.cpp:84
TransformStrokeStrategy::clearSelection
void clearSelection(KisPaintDeviceSP device)
Definition
transform_stroke_strategy.cpp:421
TransformStrokeStrategy::m_updateData
KisBatchNodeUpdateSP m_updateData
Definition
transform_stroke_strategy.h:129
TransformStrokeStrategy::~TransformStrokeStrategy
~TransformStrokeStrategy() override
Definition
transform_stroke_strategy.cpp:80
TransformStrokeStrategy::checkBelongsToSelection
bool checkBelongsToSelection(KisPaintDeviceSP device) const
Definition
transform_stroke_strategy.cpp:125
TransformStrokeStrategy::haveDeviceInCache
bool haveDeviceInCache(KisPaintDeviceSP src)
Definition
transform_stroke_strategy.cpp:102
TransformStrokeStrategy::finishStrokeImpl
void finishStrokeImpl(bool applyTransform, const ToolTransformArgs &args)
Definition
transform_stroke_strategy.cpp:710
TransformStrokeStrategy::putDeviceCache
void putDeviceCache(KisPaintDeviceSP src, KisPaintDeviceSP cache)
Definition
transform_stroke_strategy.cpp:108
TransformStrokeStrategy::m_deactivatedOverlaySelectionMasks
QList< KisSelectionMaskSP > m_deactivatedOverlaySelectionMasks
Definition
transform_stroke_strategy.h:149
TransformStrokeStrategy::calculateConvexHull
QPolygon calculateConvexHull()
Definition
transform_stroke_strategy.cpp:448
TransformStrokeStrategy::m_currentTime
int m_currentTime
Definition
transform_stroke_strategy.h:146
TransformStrokeStrategy::m_hiddenProjectionLeaves
QList< KisNodeSP > m_hiddenProjectionLeaves
Definition
transform_stroke_strategy.h:148
TransformStrokeStrategy::m_mode
ToolTransformArgs::TransformMode m_mode
Definition
transform_stroke_strategy.h:131
TransformStrokeStrategy::m_processedNodes
KisNodeList m_processedNodes
Definition
transform_stroke_strategy.h:145
TransformStrokeStrategy::writeToTransformMask
KisTransformMaskSP writeToTransformMask
Definition
transform_stroke_strategy.h:140
TransformStrokeStrategy::m_skippedWhileMergeCommands
QVector< const KUndo2Command * > m_skippedWhileMergeCommands
Definition
transform_stroke_strategy.h:153
TransformStrokeStrategy::m_deactivatedSelections
QList< KisSelectionSP > m_deactivatedSelections
Definition
transform_stroke_strategy.h:147
TransformTransactionProperties
Definition
transform_transaction_properties.h:20
kis_processing_visitor.h
kis_stroke_strategy_undo_command_based.h
kis_types.h
TransformStrokeStrategy::TransformAllData
Definition
transform_stroke_strategy.h:31
TransformStrokeStrategy::TransformAllData::TransformAllData
TransformAllData(const ToolTransformArgs &_config)
Definition
transform_stroke_strategy.h:32
TransformStrokeStrategy::TransformAllData::config
ToolTransformArgs config
Definition
transform_stroke_strategy.h:36
tool_transform_args.h
plugins
tools
tool_transform2
strokes
transform_stroke_strategy.h
Generated at
2025-11-04 02:30:02+01:00
from
Krita
branch
master
, commit
c9dde2e79561a8aea4a7e8d9ac99c98a7bac9e52