File indexing completed on 2024-05-19 04:26:54

0001 /*
0002  *  SPDX-FileCopyrightText: 2017 Wolthera van Hövell tot Westerflier <griffinvalley@gmail.com>
0003  *
0004  *  SPDX-License-Identifier: LGPL-2.0-or-later
0005  */
0006 #include "CloneLayer.h"
0007 #include <kis_clone_layer.h>
0008 #include <kis_image.h>
0009 #include <kis_layer.h>
0010 
0011 CloneLayer::CloneLayer(KisImageSP image, QString name, KisLayerSP source, QObject *parent) :
0012     Node(image, new KisCloneLayer(source, image, name, OPACITY_OPAQUE_U8), parent)
0013 {
0014 
0015 }
0016 
0017 CloneLayer::CloneLayer(KisCloneLayerSP layer, QObject *parent):
0018     Node(layer->image(), layer, parent)
0019 {
0020 
0021 }
0022 
0023 CloneLayer::~CloneLayer()
0024 {
0025 
0026 }
0027 
0028 Node* CloneLayer::sourceNode() const
0029 {
0030     const KisCloneLayer* layer = qobject_cast<const KisCloneLayer*>(this->node().data());
0031     KIS_SAFE_ASSERT_RECOVER_RETURN_VALUE(layer, 0);
0032 
0033     return Node::createNode(0, layer->copyFrom());
0034 }
0035 
0036 void CloneLayer::setSourceNode(Node* node)
0037 {
0038     if (!node->node()) return;
0039 
0040     KisCloneLayerSP layer = qobject_cast<KisCloneLayer*>(this->node().data());
0041     KIS_SAFE_ASSERT_RECOVER_RETURN(layer);
0042 
0043     KisLayerSP source = qobject_cast<KisLayer*>(node->node().data());
0044 
0045     layer->setCopyFrom(source);
0046 }
0047 
0048 QString CloneLayer::type() const
0049 {
0050     return "clonelayer";
0051 }