Krita Source Code Documentation
Loading...
Searching...
No Matches
KisTransformProcessingVisitor Class Reference

#include <kis_transform_processing_visitor.h>

+ Inheritance diagram for KisTransformProcessingVisitor:

Public Member Functions

KUndo2CommandcreateInitCommand () override
 
 KisTransformProcessingVisitor (qreal xscale, qreal yscale, qreal xshear, qreal yshear, qreal angle, qreal tx, qreal ty, KisFilterStrategy *filter, const QTransform &shapesCorrection=QTransform())
 
void setSelection (KisSelectionSP selection)
 
void visit (KisAdjustmentLayer *layer, KisUndoAdapter *undoAdapter) override
 
void visit (KisCloneLayer *layer, KisUndoAdapter *undoAdapter) override
 
void visit (KisColorizeMask *mask, KisUndoAdapter *undoAdapter) override
 
void visit (KisExternalLayer *layer, KisUndoAdapter *undoAdapter) override
 
void visit (KisFilterMask *mask, KisUndoAdapter *undoAdapter) override
 
void visit (KisGeneratorLayer *layer, KisUndoAdapter *undoAdapter) override
 
void visit (KisGroupLayer *layer, KisUndoAdapter *undoAdapter) override
 
void visit (KisNode *node, KisUndoAdapter *undoAdapter) override
 
void visit (KisPaintLayer *layer, KisUndoAdapter *undoAdapter) override
 
void visit (KisSelectionMask *mask, KisUndoAdapter *undoAdapter) override
 
void visit (KisTransformMask *mask, KisUndoAdapter *undoAdapter) override
 
void visit (KisTransparencyMask *mask, KisUndoAdapter *undoAdapter) override
 
- Public Member Functions inherited from KisProcessingVisitor
virtual ~KisProcessingVisitor ()
 
- Public Member Functions inherited from KisShared
bool deref ()
 
bool ref ()
 
int refCount ()
 
QAtomicInt * sharedWeakReference ()
 

Private Member Functions

void transformClones (KisLayer *layer, KisUndoAdapter *undoAdapter)
 
void transformOneDevice (KisPaintDeviceSP device, KoUpdater *updater)
 
void transformPaintDevice (KisPaintDeviceSP device, KisUndoAdapter *adapter, const ProgressHelper &helper)
 
void transformSelection (KisSelectionSP selection, KisUndoAdapter *adapter, const ProgressHelper &helper)
 

Private Attributes

qreal m_angle
 
KisFilterStrategym_filter
 
KisSelectionBasedProcessingHelper m_selectionHelper
 
QTransform m_shapesCorrection
 
qreal m_shearx
 
qreal m_sheary
 
qreal m_sx
 
qreal m_sy
 
qreal m_tx
 
qreal m_ty
 

Additional Inherited Members

- Protected Member Functions inherited from KisShared
 KisShared ()
 
 ~KisShared ()
 

Detailed Description

Definition at line 20 of file kis_transform_processing_visitor.h.

Constructor & Destructor Documentation

◆ KisTransformProcessingVisitor()

KisTransformProcessingVisitor::KisTransformProcessingVisitor ( qreal xscale,
qreal yscale,
qreal xshear,
qreal yshear,
qreal angle,
qreal tx,
qreal ty,
KisFilterStrategy * filter,
const QTransform & shapesCorrection = QTransform() )

Definition at line 41 of file kis_transform_processing_visitor.cpp.

Member Function Documentation

◆ createInitCommand()

KUndo2Command * KisTransformProcessingVisitor::createInitCommand ( )
overridevirtual

Create a command that initializes the processing visitor before running on all the layers. The command is executed sequentially, non-exclusively on the image by applicator.

Reimplemented from KisProcessingVisitor.

Definition at line 63 of file kis_transform_processing_visitor.cpp.

64{
67 this,
68 std::placeholders::_1,
69 (KoUpdater*)0));
70}
void transformOneDevice(KisPaintDeviceSP device, KoUpdater *updater)

References KisSelectionBasedProcessingHelper::createInitCommand(), m_selectionHelper, and transformOneDevice().

◆ setSelection()

void KisTransformProcessingVisitor::setSelection ( KisSelectionSP selection)

◆ transformClones()

void KisTransformProcessingVisitor::transformClones ( KisLayer * layer,
KisUndoAdapter * undoAdapter )
private

Definition at line 171 of file kis_transform_processing_visitor.cpp.

172{
174
175 Q_FOREACH (KisCloneLayerSP clone, clones) {
176 // we have just casted an object from a weak pointer,
177 // so check validity first
178 if(!clone) continue;
179
180 KisTransformWorker tw(clone->projection(), m_sx, m_sy, m_shearx, m_sheary,
181 m_angle, m_tx, m_ty, 0,
182 m_filter);
183
184 QTransform trans = tw.transform();
185 QTransform offsetTrans = QTransform::fromTranslate(clone->x(), clone->y());
186
187 QTransform newTrans = trans.inverted() * offsetTrans * trans;
188
189 QPoint oldPos(clone->x(), clone->y());
190 QPoint newPos(newTrans.dx(), newTrans.dy());
191 KUndo2Command *command = new KisNodeMoveCommand2(clone, oldPos, newPos);
192 undoAdapter->addCommand(command);
193 }
194}
virtual void addCommand(KUndo2Command *cmd)=0
const QList< KisCloneLayerWSP > registeredClones() const
Definition kis_layer.cc:478

References KisUndoAdapter::addCommand(), m_angle, m_filter, m_shearx, m_sheary, m_sx, m_sy, m_tx, m_ty, KisLayer::registeredClones(), and KisTransformWorker::transform().

◆ transformOneDevice()

void KisTransformProcessingVisitor::transformOneDevice ( KisPaintDeviceSP device,
KoUpdater * updater )
private

Definition at line 206 of file kis_transform_processing_visitor.cpp.

208{
210 m_angle, m_tx, m_ty, updater,
211 m_filter);
212 tw.run();
213}

References m_angle, m_filter, m_shearx, m_sheary, m_sx, m_sy, m_tx, m_ty, and KisTransformWorker::run().

◆ transformPaintDevice()

void KisTransformProcessingVisitor::transformPaintDevice ( KisPaintDeviceSP device,
KisUndoAdapter * adapter,
const ProgressHelper & helper )
private

Definition at line 196 of file kis_transform_processing_visitor.cpp.

197{
199 adapter,
201 this,
202 std::placeholders::_1,
203 helper.updater()));
204}
void transformPaintDevice(KisPaintDeviceSP device, KisUndoAdapter *undoAdapter)

References m_selectionHelper, transformOneDevice(), KisSelectionBasedProcessingHelper::transformPaintDevice(), and KisProcessingVisitor::ProgressHelper::updater().

◆ transformSelection()

void KisTransformProcessingVisitor::transformSelection ( KisSelectionSP selection,
KisUndoAdapter * adapter,
const ProgressHelper & helper )
private

Definition at line 215 of file kis_transform_processing_visitor.cpp.

216{
217 if (selection->hasShapeSelection()) {
219 m_angle, m_tx, m_ty, 0,
220 m_filter);
221
222 KUndo2Command* command =
223 selection->shapeSelection()->transform(tw.transform() * m_shapesCorrection);
224 if (command) {
225 adapter->addCommand(command);
226 }
227 } else {
228 transformPaintDevice(selection->pixelSelection(), adapter, helper);
229 }
230
231 selection->updateProjection();
232}
virtual KUndo2Command * transform(const QTransform &transform)
void transformPaintDevice(KisPaintDeviceSP device, KisUndoAdapter *adapter, const ProgressHelper &helper)
KisPixelSelectionSP projection() const
void updateProjection(const QRect &rect)
KisPixelSelectionSP pixelSelection
KisSelectionComponent * shapeSelection
bool hasShapeSelection() const

References KisUndoAdapter::addCommand(), KisSelection::hasShapeSelection(), m_angle, m_filter, m_shapesCorrection, m_shearx, m_sheary, m_sx, m_sy, m_tx, m_ty, KisSelection::pixelSelection, KisSelection::projection(), KisSelection::shapeSelection, KisTransformWorker::transform(), KisSelectionComponent::transform(), transformPaintDevice(), and KisSelection::updateProjection().

◆ visit() [1/12]

void KisTransformProcessingVisitor::visit ( KisAdjustmentLayer * layer,
KisUndoAdapter * undoAdapter )
overridevirtual

Implements KisProcessingVisitor.

Definition at line 93 of file kis_transform_processing_visitor.cpp.

94{
95 using namespace KisDoSomethingCommandOps;
97 transformSelection(layer->internalSelection(), undoAdapter, ProgressHelper(layer));
99
100 transformClones(layer, undoAdapter);
101}
void transformSelection(KisSelectionSP selection, KisUndoAdapter *adapter, const ProgressHelper &helper)
void transformClones(KisLayer *layer, KisUndoAdapter *undoAdapter)
KisSelectionSP internalSelection() const

References KisUndoAdapter::addCommand(), KisSelectionBasedLayer::internalSelection(), transformClones(), and transformSelection().

◆ visit() [2/12]

void KisTransformProcessingVisitor::visit ( KisCloneLayer * layer,
KisUndoAdapter * undoAdapter )
overridevirtual

Implements KisProcessingVisitor.

Definition at line 127 of file kis_transform_processing_visitor.cpp.

128{
129 transformClones(layer, undoAdapter);
130}

References transformClones().

◆ visit() [3/12]

void KisTransformProcessingVisitor::visit ( KisColorizeMask * mask,
KisUndoAdapter * undoAdapter )
overridevirtual

Implements KisProcessingVisitor.

Definition at line 162 of file kis_transform_processing_visitor.cpp.

163{
165
166 Q_FOREACH (KisPaintDeviceSP device, devices) {
167 transformPaintDevice(device, undoAdapter, ProgressHelper(mask));
168 }
169}
QVector< KisPaintDeviceSP > allPaintDevices() const

References KisColorizeMask::allPaintDevices(), and transformPaintDevice().

◆ visit() [4/12]

void KisTransformProcessingVisitor::visit ( KisExternalLayer * layer,
KisUndoAdapter * undoAdapter )
overridevirtual

Implements KisProcessingVisitor.

Definition at line 103 of file kis_transform_processing_visitor.cpp.

104{
106 m_angle, m_tx, m_ty, 0,
107 m_filter);
108
109 KUndo2Command* command = layer->transform(tw.transform() * m_shapesCorrection);
110 if(command) {
111 undoAdapter->addCommand(command);
112 }
113
114 transformClones(layer, undoAdapter);
115}
virtual KUndo2Command * transform(const QTransform &transform)
KisPaintDeviceSP projection() const override
Definition kis_layer.cc:820

References KisUndoAdapter::addCommand(), m_angle, m_filter, m_shapesCorrection, m_shearx, m_sheary, m_sx, m_sy, m_tx, m_ty, KisLayer::projection(), KisTransformWorker::transform(), KisExternalLayer::transform(), and transformClones().

◆ visit() [5/12]

void KisTransformProcessingVisitor::visit ( KisFilterMask * mask,
KisUndoAdapter * undoAdapter )
overridevirtual

Implements KisProcessingVisitor.

Definition at line 132 of file kis_transform_processing_visitor.cpp.

133{
134 transformSelection(mask->selection(), undoAdapter, ProgressHelper(mask));
135}
KisSelectionSP selection
Definition kis_mask.cc:44

References KisMask::selection, and transformSelection().

◆ visit() [6/12]

void KisTransformProcessingVisitor::visit ( KisGeneratorLayer * layer,
KisUndoAdapter * undoAdapter )
overridevirtual

Implements KisProcessingVisitor.

Definition at line 117 of file kis_transform_processing_visitor.cpp.

118{
119 using namespace KisDoSomethingCommandOps;
121 transformSelection(layer->internalSelection(), undoAdapter, ProgressHelper(layer));
123
124 transformClones(layer, undoAdapter);
125}

References KisUndoAdapter::addCommand(), KisSelectionBasedLayer::internalSelection(), transformClones(), and transformSelection().

◆ visit() [7/12]

void KisTransformProcessingVisitor::visit ( KisGroupLayer * layer,
KisUndoAdapter * undoAdapter )
overridevirtual

Implements KisProcessingVisitor.

Definition at line 84 of file kis_transform_processing_visitor.cpp.

85{
86 using namespace KisDoSomethingCommandOps;
87 undoAdapter->addCommand(new KisDoSomethingCommand<ResetOp, KisGroupLayer*>(layer, false));
89 transformClones(layer, undoAdapter);
90
91}

References KisUndoAdapter::addCommand(), and transformClones().

◆ visit() [8/12]

void KisTransformProcessingVisitor::visit ( KisNode * node,
KisUndoAdapter * undoAdapter )
overridevirtual

Implements KisProcessingVisitor.

Definition at line 72 of file kis_transform_processing_visitor.cpp.

73{
74 Q_UNUSED(node);
75 Q_UNUSED(undoAdapter);
76}

◆ visit() [9/12]

void KisTransformProcessingVisitor::visit ( KisPaintLayer * layer,
KisUndoAdapter * undoAdapter )
overridevirtual

Implements KisProcessingVisitor.

Definition at line 78 of file kis_transform_processing_visitor.cpp.

79{
80 transformPaintDevice(layer->paintDevice(), undoAdapter, ProgressHelper(layer));
81 transformClones(layer, undoAdapter);
82}
KisPaintDeviceSP paintDevice

References KisPaintLayer::paintDevice, transformClones(), and transformPaintDevice().

◆ visit() [10/12]

void KisTransformProcessingVisitor::visit ( KisSelectionMask * mask,
KisUndoAdapter * undoAdapter )
overridevirtual

Implements KisProcessingVisitor.

Definition at line 157 of file kis_transform_processing_visitor.cpp.

158{
159 transformSelection(mask->selection(), undoAdapter, ProgressHelper(mask));
160}

References KisMask::selection, and transformSelection().

◆ visit() [11/12]

void KisTransformProcessingVisitor::visit ( KisTransformMask * mask,
KisUndoAdapter * undoAdapter )
overridevirtual

Implements KisProcessingVisitor.

Definition at line 137 of file kis_transform_processing_visitor.cpp.

138{
139 Q_UNUSED(mask);
140 Q_UNUSED(undoAdapter);
141
143 m_angle, m_tx, m_ty, 0,
144 m_filter);
145
147 params->transformSrcAndDst(tw.transform());
148
149 undoAdapter->addCommand(new KisSimpleModifyTransformMaskCommand(mask, params));
150}
KisTransformMaskParamsInterfaceSP transformParams() const

References KisUndoAdapter::addCommand(), m_angle, m_filter, m_shearx, m_sheary, m_sx, m_sy, m_tx, m_ty, KisTransformWorker::transform(), and KisTransformMask::transformParams().

◆ visit() [12/12]

void KisTransformProcessingVisitor::visit ( KisTransparencyMask * mask,
KisUndoAdapter * undoAdapter )
overridevirtual

Implements KisProcessingVisitor.

Definition at line 152 of file kis_transform_processing_visitor.cpp.

153{
154 transformSelection(mask->selection(), undoAdapter, ProgressHelper(mask));
155}

References KisMask::selection, and transformSelection().

Member Data Documentation

◆ m_angle

qreal KisTransformProcessingVisitor::m_angle
private

Definition at line 58 of file kis_transform_processing_visitor.h.

◆ m_filter

KisFilterStrategy* KisTransformProcessingVisitor::m_filter
private

Definition at line 57 of file kis_transform_processing_visitor.h.

◆ m_selectionHelper

KisSelectionBasedProcessingHelper KisTransformProcessingVisitor::m_selectionHelper
private

Definition at line 60 of file kis_transform_processing_visitor.h.

◆ m_shapesCorrection

QTransform KisTransformProcessingVisitor::m_shapesCorrection
private

Definition at line 59 of file kis_transform_processing_visitor.h.

◆ m_shearx

qreal KisTransformProcessingVisitor::m_shearx
private

Definition at line 56 of file kis_transform_processing_visitor.h.

◆ m_sheary

qreal KisTransformProcessingVisitor::m_sheary
private

Definition at line 56 of file kis_transform_processing_visitor.h.

◆ m_sx

qreal KisTransformProcessingVisitor::m_sx
private

Definition at line 54 of file kis_transform_processing_visitor.h.

◆ m_sy

qreal KisTransformProcessingVisitor::m_sy
private

Definition at line 54 of file kis_transform_processing_visitor.h.

◆ m_tx

qreal KisTransformProcessingVisitor::m_tx
private

Definition at line 55 of file kis_transform_processing_visitor.h.

◆ m_ty

qreal KisTransformProcessingVisitor::m_ty
private

Definition at line 55 of file kis_transform_processing_visitor.h.


The documentation for this class was generated from the following files: