File indexing completed on 2024-05-12 15:59:05

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 "FilterLayer.h"
0007 #include <kis_adjustment_layer.h>
0008 #include <kis_image.h>
0009 #include <kis_filter_configuration.h>
0010 #include <kis_filter_registry.h>
0011 #include <InfoObject.h>
0012 #include <kis_selection.h>
0013 
0014 FilterLayer::FilterLayer(KisImageSP image, QString name, Filter &filter, Selection &selection, QObject *parent) :
0015     Node(image, new KisAdjustmentLayer(image, name, filter.filterConfig()->cloneWithResourcesSnapshot(), selection.selection()), parent)
0016 {
0017 
0018 }
0019 
0020 FilterLayer::FilterLayer(KisAdjustmentLayerSP layer, QObject *parent):
0021     Node(layer->image(), layer, parent)
0022 {
0023 
0024 }
0025 
0026 FilterLayer::~FilterLayer()
0027 {
0028 
0029 }
0030 
0031 QString FilterLayer::type() const
0032 {
0033     return "filterlayer";
0034 }
0035 
0036 void FilterLayer::setFilter(Filter &filter)
0037 {
0038     if (!this->node()) return;
0039     KisAdjustmentLayer *layer = dynamic_cast<KisAdjustmentLayer*>(this->node().data());
0040     //getting the default configuration here avoids trouble with versioning.
0041     if (layer) {
0042         layer->setFilter(filter.filterConfig()->cloneWithResourcesSnapshot());
0043     }
0044 }
0045 
0046 Filter * FilterLayer::filter()
0047 {
0048     Filter* filter = new Filter();
0049     const KisAdjustmentLayer *layer = qobject_cast<const KisAdjustmentLayer*>(this->node());
0050     filter->setName(layer->filter()->name());
0051     filter->setConfiguration(new InfoObject(layer->filter()));
0052     return filter;
0053 }
0054