|
Krita Source Code Documentation
|
#include <KisMergeLabeledLayersCommand.h>
Inheritance diagram for KisMergeLabeledLayersCommand:Classes | |
| struct | ReferenceNodeInfo |
| Basic info about a node. This is used to compare and see if the node changed. More... | |
Public Types | |
| enum | GroupSelectionPolicy { GroupSelectionPolicy_SelectAlways , GroupSelectionPolicy_SelectIfColorLabeled , GroupSelectionPolicy_NeverSelect } |
| Policies to stablish how the groups should be treated. More... | |
| using | ReferenceNodeInfoList = QList<ReferenceNodeInfo> |
| using | ReferenceNodeInfoListSP = QSharedPointer<ReferenceNodeInfoList> |
Public Member Functions | |
| KisMergeLabeledLayersCommand (KisImageSP image, KisPaintDeviceSP newRefPaintDevice, QList< int > selectedLabels, GroupSelectionPolicy groupSelectionPolicy=GroupSelectionPolicy_SelectAlways) | |
| Construct a new KisMergeLabeledLayersCommand that does not use a cache. | |
| KisMergeLabeledLayersCommand (KisImageSP image, ReferenceNodeInfoListSP prevRefNodeInfoList, ReferenceNodeInfoListSP newRefNodeInfoList, KisPaintDeviceSP prevRefPaintDevice, KisPaintDeviceSP newRefPaintDevice, QList< int > selectedLabels, GroupSelectionPolicy groupSelectionPolicy=GroupSelectionPolicy_SelectAlways, bool forceRegeneration=false, KisNodeSP activeNode=nullptr) | |
| Construct a new KisMergeLabeledLayersCommand that uses a cache. | |
| void | redo () override |
| void | undo () override |
| ~KisMergeLabeledLayersCommand () override | |
Public Member Functions inherited from KUndo2Command | |
| QString | actionText () const |
| virtual bool | canAnnihilateWith (const KUndo2Command *other) const |
| const KUndo2Command * | child (int index) const |
| int | childCount () const |
| virtual QTime | endTime () const |
| KUndo2CommandExtraData * | extraData () const |
| bool | hasParent () const |
| virtual int | id () const |
| virtual bool | isMerged () const |
| KUndo2Command (const KUndo2MagicString &text, KUndo2Command *parent=0) | |
| KUndo2Command (KUndo2Command *parent=0) | |
| virtual QVector< KUndo2Command * > | mergeCommandsVector () const |
| virtual bool | mergeWith (const KUndo2Command *other) |
| virtual void | redoMergedCommands () |
| void | setEndTime () |
| virtual void | setEndTime (const QTime &time) |
| void | setExtraData (KUndo2CommandExtraData *data) |
| void | setText (const KUndo2MagicString &text) |
| void | setTime () |
| virtual void | setTime (const QTime &time) |
| virtual void | setTimedID (int timedID) |
| KUndo2MagicString | text () const |
| virtual QTime | time () const |
| virtual int | timedId () const |
| virtual bool | timedMergeWith (KUndo2Command *other) |
| virtual void | undoMergedCommands () |
| virtual | ~KUndo2Command () |
Static Public Member Functions | |
| static KisPaintDeviceSP | createRefPaintDevice (KisImageSP originalImage, QString name="Merge Labeled Layers Reference Paint Device") |
Private Member Functions | |
| QPair< KisNodeSP, QPair< bool, bool > > | collectNode (KisNodeSP node) const |
| bool | collectNodes (KisNodeSP node, QList< KisNodeSP > &nodeList, ReferenceNodeInfoList &nodeInfoList) const |
| bool | hasToCheckForChangesInNodes () const |
| void | mergeLabeledLayers () |
Definition at line 22 of file KisMergeLabeledLayersCommand.h.
Definition at line 65 of file KisMergeLabeledLayersCommand.h.
Definition at line 66 of file KisMergeLabeledLayersCommand.h.
Policies to stablish how the groups should be treated.
Definition at line 28 of file KisMergeLabeledLayersCommand.h.
| KisMergeLabeledLayersCommand::KisMergeLabeledLayersCommand | ( | KisImageSP | image, |
| KisPaintDeviceSP | newRefPaintDevice, | ||
| QList< int > | selectedLabels, | ||
| GroupSelectionPolicy | groupSelectionPolicy = GroupSelectionPolicy_SelectAlways ) |
Construct a new KisMergeLabeledLayersCommand that does not use a cache.
| image | The image with the reference layers |
| newRefPaintDevice | The resulting device that will contain the merged result |
| selectedLabels | The color labels of the reference layers |
| groupSelectionPolicy | How to treat groups |
Definition at line 23 of file KisMergeLabeledLayersCommand.cpp.
References KisImage::animationInterface(), KisImageAnimationInterface::currentTime(), KisImageAnimationInterface::hasAnimation(), KIS_ASSERT, m_refImage, KisImageAnimationInterface::switchCurrentTimeAsync(), and KisImage::waitForDone().
| KisMergeLabeledLayersCommand::KisMergeLabeledLayersCommand | ( | KisImageSP | image, |
| ReferenceNodeInfoListSP | prevRefNodeInfoList, | ||
| ReferenceNodeInfoListSP | newRefNodeInfoList, | ||
| KisPaintDeviceSP | prevRefPaintDevice, | ||
| KisPaintDeviceSP | newRefPaintDevice, | ||
| QList< int > | selectedLabels, | ||
| GroupSelectionPolicy | groupSelectionPolicy = GroupSelectionPolicy_SelectAlways, | ||
| bool | forceRegeneration = false, | ||
| KisNodeSP | activeNode = nullptr ) |
Construct a new KisMergeLabeledLayersCommand that uses a cache.
| image | The image with the reference layers |
| prevRefNodeInfoList | The reference node info that is used to compare with the current one to see if the cache device can be used instead of generating a new one |
| newRefNodeInfoList | The resulting list of reference node info |
| prevRefPaintDevice | The device that is used as a cache if possible |
| newRefPaintDevice | The resulting device that will contain the merged result |
| selectedLabels | The color labels of the reference layers |
| groupSelectionPolicy | How to treat groups |
| forceRegeneration | If true, the cache is ignored and the merged result is regenerated |
| activeNode | The current node that is being edited. |
Definition at line 46 of file KisMergeLabeledLayersCommand.cpp.
References KisImage::animationInterface(), KisImageAnimationInterface::currentTime(), KisImageAnimationInterface::hasAnimation(), KIS_ASSERT, KIS_SAFE_ASSERT_RECOVER_NOOP, m_refImage, KisImageAnimationInterface::switchCurrentTimeAsync(), and KisImage::waitForDone().
|
override |
Definition at line 77 of file KisMergeLabeledLayersCommand.cpp.
|
private |
Definition at line 98 of file KisMergeLabeledLayersCommand.cpp.
References KisBaseNode::colorLabelIndex(), KisSharedPtr< T >::data(), GroupSelectionPolicy_NeverSelect, GroupSelectionPolicy_SelectIfColorLabeled, KisBaseNode::image, m_activeNode, m_groupSelectionPolicy, m_selectedLabels, KisBaseNode::mergeNodeProperties(), KisBaseNode::name(), KisBaseNode::nodeProperties(), KisBaseNode::opacity(), KisNode::parent, KisBaseNode::projection(), KisLayer::setX(), KisLayer::setY(), KisBaseNode::uuid(), KisBaseNode::visible(), KisBaseNode::x(), KisLayer::x(), KisBaseNode::y(), and KisLayer::y().
|
private |
Definition at line 179 of file KisMergeLabeledLayersCommand.cpp.
References collectNode(), collectNodes(), hasToCheckForChangesInNodes(), KisNode::lastChild(), KisBaseNode::opacity(), KisNode::prevSibling(), KisBaseNode::projection(), KisPaintDevice::sequenceNumber(), and KisBaseNode::uuid().
|
static |
Definition at line 93 of file KisMergeLabeledLayersCommand.cpp.
References KisImage::colorSpace().
|
private |
Definition at line 283 of file KisMergeLabeledLayersCommand.cpp.
References m_newRefNodeInfoList, m_prevRefNodeInfoList, and m_prevRefPaintDevice.
|
private |
Definition at line 213 of file KisMergeLabeledLayersCommand.cpp.
References KisNodeFacade::addNode(), KisImage::bounds(), KisNode::childCount(), KisSharedPtr< T >::clear(), KisNode::clone(), collectNodes(), COMPOSITE_OVER, KisPainter::copyAreaOptimized(), KisPaintDevice::exactBounds(), KisPaintDevice::extent(), hasToCheckForChangesInNodes(), KisImage::initialRefreshGraph(), KIS_ASSERT, m_currentRoot, m_forceRegeneration, m_newRefNodeInfoList, m_newRefPaintDevice, m_prevRefNodeInfoList, m_prevRefPaintDevice, m_refImage, KisPaintDevice::makeCloneFromRough(), makeKisDeleteLaterWrapper(), KisLayerUtils::mergeMultipleNodes(), KisPaintDevice::prepareClone(), KisImage::projection(), KisLayerUtils::refreshHiddenAreaAsync(), KisNodeFacade::root, KisLayer::setChannelFlags(), KisLayerUtils::SkipMergingFrames, KisLayerUtils::sortAndFilterAnyMergeableNodesSafe(), and KisImage::waitForDone().
|
overridevirtual |
Applies a change to the document. This function must be implemented in the derived class. Calling KUndo2QStack::push(), KUndo2QStack::undo() or KUndo2QStack::redo() from this function leads to undefined behavior.
The default implementation calls redo() on all child commands.
Reimplemented from KUndo2Command.
Definition at line 85 of file KisMergeLabeledLayersCommand.cpp.
References m_refImage, mergeLabeledLayers(), and KUndo2Command::redo().
|
overridevirtual |
Reverts a change to the document. After undo() is called, the state of the document should be the same as before redo() was called. This function must be implemented in the derived class. Calling KUndo2QStack::push(), KUndo2QStack::undo() or KUndo2QStack::redo() from this function leads to undefined behavior.
The default implementation calls undo() on all child commands in reverse order.
Reimplemented from KUndo2Command.
Definition at line 80 of file KisMergeLabeledLayersCommand.cpp.
References KUndo2Command::undo().
|
private |
Definition at line 132 of file KisMergeLabeledLayersCommand.h.
|
private |
Definition at line 128 of file KisMergeLabeledLayersCommand.h.
|
private |
Definition at line 131 of file KisMergeLabeledLayersCommand.h.
|
private |
Definition at line 130 of file KisMergeLabeledLayersCommand.h.
|
private |
Definition at line 125 of file KisMergeLabeledLayersCommand.h.
|
private |
Definition at line 127 of file KisMergeLabeledLayersCommand.h.
|
private |
Definition at line 124 of file KisMergeLabeledLayersCommand.h.
|
private |
Definition at line 126 of file KisMergeLabeledLayersCommand.h.
|
private |
Definition at line 123 of file KisMergeLabeledLayersCommand.h.
|
private |
Definition at line 129 of file KisMergeLabeledLayersCommand.h.