2
* Copyright (c) 2007 Cyrille Berger <cberger@cberger.net>
4
* This program is free software; you can redistribute it and/or modify
5
* it under the terms of the GNU Lesser General Public License as published by
6
* the Free Software Foundation; version 2 of the License.
8
* This program is distributed in the hope that it will be useful,
9
* but WITHOUT ANY WARRANTY; without even the implied warranty of
10
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
* GNU General Public License for more details.
13
* You should have received a copy of the GNU Lesser General Public License
14
* along with this program; if not, write to the Free Software
15
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
18
#include "kis_filters_list_dynamic_program.h"
24
// Dynamic Brush lib includes
25
#include "kis_dynamic_coloring.h"
26
#include "kis_dynamic_program_factory_registry.h"
27
#include "kis_dynamic_shape.h"
28
#include "kis_dynamic_transformation.h"
29
#include "kis_dynamic_transformations_factory.h"
31
// Filterslist program includes
32
#include "kis_filters_list_dynamic_program_editor.h"
38
KisDynamicProgramFactoryRegistry::instance()->add(new KisFiltersListDynamicProgramFactory);
42
static Factory factory;
44
KisFiltersListDynamicProgram::~KisFiltersListDynamicProgram()
46
for (QList<KisDynamicTransformation*>::iterator transfo = beginTransformation();
47
transfo != endTransformation(); ++transfo) {
52
void KisFiltersListDynamicProgram::apply(KisDynamicShape* shape, KisDynamicColoring* coloringsrc, const KisPaintInformation& adjustedInfo)
54
// First apply the transfo to the dab source
55
for (QList<KisDynamicTransformation*>::iterator transfo = beginTransformation();
56
transfo != endTransformation(); ++transfo) {
57
(*transfo)->transformBrush(shape, adjustedInfo);
60
// Then to the coloring source
61
for (QList<KisDynamicTransformation*>::iterator transfo = beginTransformation();
62
transfo != endTransformation(); ++transfo) {
63
(*transfo)->transformColoring(coloringsrc, adjustedInfo);
68
void KisFiltersListDynamicProgram::appendTransformation(KisDynamicTransformation* transfo)
70
dbgPlugins << "Append transfo : " << transfo->name();
71
m_transformations.append(transfo);
72
emit(programChanged());
75
QWidget* KisFiltersListDynamicProgram::createEditor(QWidget* /*parent*/)
77
return new KisFiltersListDynamicProgramEditor(this);
80
void KisFiltersListDynamicProgram::fromXML(const QDomElement& elt)
82
KisDynamicProgram::fromXML(elt);
83
QDomNode n = elt.firstChild();
85
QDomElement e = n.toElement();
87
if (e.tagName() == "Filters") {
88
QDomNode nFilter = e.firstChild();
89
while (!nFilter.isNull()) {
90
QDomElement eFilter = nFilter.toElement();
91
if (eFilter.tagName() == "Filter") {
92
KisDynamicTransformation* transfo = KisDynamicTransformationsFactory::createFromXML(eFilter);
94
appendTransformation(transfo);
97
nFilter = nFilter.nextSibling();
106
void KisFiltersListDynamicProgram::toXML(QDomDocument& doc, QDomElement& rootElt) const
108
KisDynamicProgram::toXML(doc, rootElt);
110
QDomElement filtersElt = doc.createElement("Filters");
111
for (QList<KisDynamicTransformation*>::const_iterator it = m_transformations.begin();
112
it != m_transformations.end(); ++it) {
113
QDomElement filterElt = doc.createElement("Filter");
114
(*it)->toXML(doc, filterElt);
115
filtersElt.appendChild(filterElt);
117
rootElt.appendChild(filtersElt);
121
//--- KisFiltersListDynamicProgramFactory ---//
123
KisFiltersListDynamicProgramFactory::KisFiltersListDynamicProgramFactory() :
124
KisDynamicProgramFactory("filterslist", i18n("Filters list"))
128
KisDynamicProgram* KisFiltersListDynamicProgramFactory::program(QString name)
130
return new KisFiltersListDynamicProgram(name);