~ubuntu-branches/ubuntu/precise/koffice/precise

« back to all changes in this revision

Viewing changes to krita/plugins/paintops/dynamicbrush/programs/filterslist/kis_filters_list_dynamic_program.cc

  • Committer: Bazaar Package Importer
  • Author(s): Jonathan Riddell
  • Date: 2010-09-21 15:36:35 UTC
  • mfrom: (1.4.1 upstream) (60.2.11 maverick)
  • Revision ID: james.westby@ubuntu.com-20100921153635-6tejqkiro2u21ydi
Tags: 1:2.2.2-0ubuntu3
Add kubuntu_03_fix-crash-on-closing-sqlite-connection-2.2.2.diff and
kubuntu_04_support-large-memo-values-for-msaccess-2.2.2.diff as
recommended by upstream http://kexi-
project.org/wiki/wikiview/index.php@Kexi2.2_Patches.html#sqlite_stab
ility

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/*
2
 
 *  Copyright (c) 2007 Cyrille Berger <cberger@cberger.net>
3
 
 *
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.
7
 
 *
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.
12
 
 *
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.
16
 
 */
17
 
 
18
 
#include "kis_filters_list_dynamic_program.h"
19
 
#include <QDomNode>
20
 
#include <QWidget>
21
 
 
22
 
#include <klocale.h>
23
 
 
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"
30
 
 
31
 
// Filterslist program includes
32
 
#include "kis_filters_list_dynamic_program_editor.h"
33
 
 
34
 
class Factory
35
 
{
36
 
public:
37
 
    Factory() {
38
 
        KisDynamicProgramFactoryRegistry::instance()->add(new KisFiltersListDynamicProgramFactory);
39
 
    }
40
 
};
41
 
 
42
 
static Factory factory;
43
 
 
44
 
KisFiltersListDynamicProgram::~KisFiltersListDynamicProgram()
45
 
{
46
 
    for (QList<KisDynamicTransformation*>::iterator transfo = beginTransformation();
47
 
            transfo != endTransformation(); ++transfo) {
48
 
        delete * transfo;
49
 
    }
50
 
}
51
 
 
52
 
void KisFiltersListDynamicProgram::apply(KisDynamicShape* shape, KisDynamicColoring* coloringsrc, const KisPaintInformation& adjustedInfo)
53
 
{
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);
58
 
    }
59
 
 
60
 
    // Then to the coloring source
61
 
    for (QList<KisDynamicTransformation*>::iterator transfo = beginTransformation();
62
 
            transfo != endTransformation(); ++transfo) {
63
 
        (*transfo)->transformColoring(coloringsrc, adjustedInfo);
64
 
    }
65
 
 
66
 
}
67
 
 
68
 
void KisFiltersListDynamicProgram::appendTransformation(KisDynamicTransformation* transfo)
69
 
{
70
 
    dbgPlugins << "Append transfo : " << transfo->name();
71
 
    m_transformations.append(transfo);
72
 
    emit(programChanged());
73
 
}
74
 
 
75
 
QWidget* KisFiltersListDynamicProgram::createEditor(QWidget* /*parent*/)
76
 
{
77
 
    return new KisFiltersListDynamicProgramEditor(this);
78
 
}
79
 
 
80
 
void KisFiltersListDynamicProgram::fromXML(const QDomElement& elt)
81
 
{
82
 
    KisDynamicProgram::fromXML(elt);
83
 
    QDomNode n = elt.firstChild();
84
 
    while (!n.isNull()) {
85
 
        QDomElement e = n.toElement();
86
 
        if (!e.isNull()) {
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);
93
 
                        if (transfo) {
94
 
                            appendTransformation(transfo);
95
 
                        }
96
 
                    }
97
 
                    nFilter = nFilter.nextSibling();
98
 
                }
99
 
            }
100
 
        }
101
 
        n = n.nextSibling();
102
 
    }
103
 
 
104
 
}
105
 
 
106
 
void KisFiltersListDynamicProgram::toXML(QDomDocument& doc, QDomElement& rootElt) const
107
 
{
108
 
    KisDynamicProgram::toXML(doc, rootElt);
109
 
 
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);
116
 
    }
117
 
    rootElt.appendChild(filtersElt);
118
 
 
119
 
}
120
 
 
121
 
//--- KisFiltersListDynamicProgramFactory ---//
122
 
 
123
 
KisFiltersListDynamicProgramFactory::KisFiltersListDynamicProgramFactory() :
124
 
        KisDynamicProgramFactory("filterslist", i18n("Filters list"))
125
 
{
126
 
}
127
 
 
128
 
KisDynamicProgram* KisFiltersListDynamicProgramFactory::program(QString name)
129
 
{
130
 
    return new KisFiltersListDynamicProgram(name);
131
 
}
132