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