907 {
908
909 const bool lastLayer = !replacementNode &&
scanForLastLayer(image, removedNodes);
910
912 const bool normalCompositeMode = node->compositeOpId() ==
COMPOSITE_OVER;
913
916 return !normalCompositeMode && !hasInheritAlpha;
917 };
918
919
922 RecipeSP updateRecipe(new Recipe());
923
924 if (replacementNode) {
925 updateRecipe->nodesToAdd.push_back({replacementNode->node,
926 replacementNode->doRedoUpdates,
927 replacementNode->doUndoUpdates});
928 }
929
930 Q_FOREACH (
KisNodeSP node, removedNodes) {
931 updateRecipe->nodesToRemove.push_back({node, !isNodeWeird(node), true});
932 }
933
935
936 if (replacementNode) {
938 replacementNode->node,
939 replacementNode->parent,
940 replacementNode->putAfter,
941 false, false));
942
946 }
947
948
949 if (replacementNode->relinkClones) {
951
952 Q_FOREACH (
KisNodeSP node, removedNodes) {
954 if (originalSource) {
956 }
957 }
958
960
961 if (finalSource && !clones.isEmpty()) {
963 }
964 }
965 }
966
967 while (!removedNodes.isEmpty()) {
968 KisNodeList::iterator it = removedNodes.begin();
969
970 while (it != removedNodes.end()) {
973
975 it = removedNodes.erase(it);
976 } else {
977 ++it;
978 }
979 }
980 }
981
983
984
985 if (lastLayer) {
990 false, false));
991 }
992 }
const quint8 OPACITY_OPAQUE_U8
const QString COMPOSITE_OVER
QSharedPointer< Recipe > RecipeSP
The command for adding a layer.
The command for layer moves inside the layer stack.
const KoColorSpace * colorSpace() const
QString nextLayerName(const QString &baseName="") const
virtual void addCommandImpl(KUndo2Command *cmd)=0
bool checkIsSourceForClone(KisNodeSP src, const KisNodeList &nodes)
static bool scanForLastLayer(KisImageWSP image, KisNodeList nodesToRemove)
bool alphaChannelDisabled() const
const QList< KisCloneLayerWSP > registeredClones() const