<div dir="ltr">Hello boud and dmitryK,<div><br></div><div>have you considered to realize the stacked brush through multihand tool?</div><div>One would have to create UI for selecting brush preset for every KisPainter in multihand tool.</div><div>Then it is just a matter of transformation, for stacking two brushes you would use identity transformation.</div><div><br></div><div>Advantages:</div><div>- useful with any brush engine </div><div>- it would be possible to stack n brushes</div><div>- new possibilities: mirroring or symetry or with different brush engines</div><div><br></div><div>Why paintop?</div><div><br></div><div>Lukas</div></div><div class="gmail_extra"><br><div class="gmail_quote">2015-05-27 13:02 GMT+02:00 Boudewijn Rempt <span dir="ltr"><<a href="mailto:boud@valdyas.org" target="_blank">boud@valdyas.org</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Git commit f29dbf00eaf2014904dcd80ee741b8e8f96d5b51 by Boudewijn Rempt.<br>
Committed on 27/05/2015 at 11:01.<br>
Pushed by rempt into branch 'krita-chili-kazakov'.<br>
<br>
Add a skeleton stacked brush paintop<br>
<br>
For Dmitry to add gui and logic to :-)<br>
<br>
M +1 -0 krita/plugins/paintops/CMakeLists.txt<br>
A +23 -0 krita/plugins/paintops/stacked/CMakeLists.txt<br>
A +- -- krita/plugins/paintops/stacked/krita-stacked.png<br>
A +35 -0 krita/plugins/paintops/stacked/stacked_brush.cpp [License: LGPL (v2+)]<br>
A +38 -0 krita/plugins/paintops/stacked/stacked_brush.h [License: LGPL (v2+)]<br>
A +43 -0 krita/plugins/paintops/stacked/stacked_paintop.cpp [License: LGPL (v2+)]<br>
A +45 -0 krita/plugins/paintops/stacked/stacked_paintop.h [License: LGPL (v2+)]<br>
A +53 -0 krita/plugins/paintops/stacked/stacked_paintop_plugin.cpp [License: LGPL (v2+)]<br>
A +37 -0 krita/plugins/paintops/stacked/stacked_paintop_plugin.h [License: LGPL (v2+)]<br>
A +48 -0 krita/plugins/paintops/stacked/stacked_paintop_settings.cpp [License: LGPL (v2+)]<br>
A +40 -0 krita/plugins/paintops/stacked/stacked_paintop_settings.h [License: LGPL (v2+)]<br>
A +54 -0 krita/plugins/paintops/stacked/stacked_paintop_settings_widget.cpp [License: LGPL (v2+)]<br>
A +47 -0 krita/plugins/paintops/stacked/stacked_paintop_settings_widget.h [License: LGPL (v2+)]<br>
A +56 -0 krita/plugins/paintops/stacked/stackedop_option.cpp [License: GPL (v2+)]<br>
A +42 -0 krita/plugins/paintops/stacked/stackedop_option.h [License: GPL (v2+)]<br>
A +43 -0 krita/plugins/paintops/stacked/stackedpaintop.desktop<br>
A +40 -0 krita/plugins/paintops/stacked/wdgstackedoptions.ui<br>
<br>
<a href="http://commits.kde.org/calligra/f29dbf00eaf2014904dcd80ee741b8e8f96d5b51" target="_blank">http://commits.kde.org/calligra/f29dbf00eaf2014904dcd80ee741b8e8f96d5b51</a><br>
<br>
diff --git a/krita/plugins/paintops/CMakeLists.txt b/krita/plugins/paintops/CMakeLists.txt<br>
index baff8c2..fab2d11 100644<br>
--- a/krita/plugins/paintops/CMakeLists.txt<br>
+++ b/krita/plugins/paintops/CMakeLists.txt<br>
@@ -16,3 +16,4 @@ add_subdirectory( gridbrush )<br>
add_subdirectory( hatching)<br>
add_subdirectory( sketch )<br>
add_subdirectory( colorsmudge )<br>
+add_subdirectory( stacked )<br>
diff --git a/krita/plugins/paintops/stacked/CMakeLists.txt b/krita/plugins/paintops/stacked/CMakeLists.txt<br>
new file mode 100644<br>
index 0000000..5b7b102<br>
--- /dev/null<br>
+++ b/krita/plugins/paintops/stacked/CMakeLists.txt<br>
@@ -0,0 +1,23 @@<br>
+set(kritastackedpaintop_PART_SRCS<br>
+ stacked_paintop_plugin.cpp<br>
+ stacked_paintop_settings.cpp<br>
+ stacked_paintop_settings_widget.cpp<br>
+ stacked_brush.cpp<br>
+ stacked_paintop.cpp<br>
+ stackedop_option.cpp<br>
+)<br>
+<br>
+kde4_add_ui_files(kritastackedpaintop_PART_SRCS wdgstackedoptions.ui )<br>
+<br>
+kde4_add_plugin(kritastackedpaintop ${kritastackedpaintop_PART_SRCS})<br>
+<br>
+<br>
+target_link_libraries(kritastackedpaintop kritaui kritalibpaintop kritalibbrush kowidgetutils)<br>
+<br>
+install(TARGETS kritastackedpaintop DESTINATION ${PLUGIN_INSTALL_DIR})<br>
+<br>
+########### install files ###############<br>
+<br>
+install( FILES kritastackedpaintop.desktop DESTINATION ${SERVICES_INSTALL_DIR}/calligra)<br>
+install( FILES<br>
+ krita-stacked.png DESTINATION ${DATA_INSTALL_DIR}/krita/images)<br>
diff --git a/krita/plugins/paintops/stacked/krita-stacked.png b/krita/plugins/paintops/stacked/krita-stacked.png<br>
new file mode 100644<br>
index 0000000..fd4d0fa<br>
Binary files /dev/null and b/krita/plugins/paintops/stacked/krita-stacked.png differ<br>
diff --git a/krita/plugins/paintops/stacked/stacked_brush.cpp b/krita/plugins/paintops/stacked/stacked_brush.cpp<br>
new file mode 100644<br>
index 0000000..dff0476<br>
--- /dev/null<br>
+++ b/krita/plugins/paintops/stacked/stacked_brush.cpp<br>
@@ -0,0 +1,35 @@<br>
+/*<br>
+ * Copyright (c) 2015 Boudewijn Rempt <<a href="mailto:boud@valdyas.org">boud@valdyas.org</a>><br>
+ *<br>
+ * This library is free software; you can redistribute it and/or<br>
+ * modify it under the terms of the GNU Library General Public<br>
+ * License as published by the Free Software Foundation; either<br>
+ * version 2 of the License, or (at your option) any later version.<br>
+ *<br>
+ * This library is distributed in the hope that it will be useful,<br>
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of<br>
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU<br>
+ * Library General Public License for more details.<br>
+ *<br>
+ * You should have received a copy of the GNU Library General Public License<br>
+ * along with this library; see the file COPYING.LIB. If not, write to<br>
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,<br>
+ * Boston, MA 02110-1301, USA.<br>
+ */<br>
+#include "stacked_brush.h"<br>
+<br>
+<br>
+StackedBrush::StackedBrush()<br>
+{<br>
+}<br>
+<br>
+<br>
+StackedBrush::~StackedBrush()<br>
+{<br>
+}<br>
+<br>
+<br>
+void StackedBrush::paint(KisPaintDeviceSP dev, qreal x, qreal y, const KoColor &color)<br>
+{<br>
+}<br>
+<br>
diff --git a/krita/plugins/paintops/stacked/stacked_brush.h b/krita/plugins/paintops/stacked/stacked_brush.h<br>
new file mode 100644<br>
index 0000000..0941d4b<br>
--- /dev/null<br>
+++ b/krita/plugins/paintops/stacked/stacked_brush.h<br>
@@ -0,0 +1,38 @@<br>
+/*<br>
+ * Copyright (c) 2015 Boudewijn Rempt <<a href="mailto:boud@valdyas.org">boud@valdyas.org</a>><br>
+ *<br>
+ * This library is free software; you can redistribute it and/or<br>
+ * modify it under the terms of the GNU Library General Public<br>
+ * License as published by the Free Software Foundation; either<br>
+ * version 2 of the License, or (at your option) any later version.<br>
+ *<br>
+ * This library is distributed in the hope that it will be useful,<br>
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of<br>
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU<br>
+ * Library General Public License for more details.<br>
+ *<br>
+ * You should have received a copy of the GNU Library General Public License<br>
+ * along with this library; see the file COPYING.LIB. If not, write to<br>
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,<br>
+ * Boston, MA 02110-1301, USA.<br>
+ */<br>
+#ifndef STACKED_BRUSH_H_<br>
+#define STACKED_BRUSH_H_<br>
+<br>
+#include <QVector><br>
+<br>
+#include <KoColor.h><br>
+<br>
+#include "kis_paint_device.h"<br>
+<br>
+class StackedBrush<br>
+{<br>
+<br>
+public:<br>
+ StackedBrush();<br>
+ ~StackedBrush();<br>
+ void paint(KisPaintDeviceSP dev, qreal x, qreal y, const KoColor &color);<br>
+<br>
+};<br>
+<br>
+#endif<br>
diff --git a/krita/plugins/paintops/stacked/stacked_paintop.cpp b/krita/plugins/paintops/stacked/stacked_paintop.cpp<br>
new file mode 100644<br>
index 0000000..2675aac<br>
--- /dev/null<br>
+++ b/krita/plugins/paintops/stacked/stacked_paintop.cpp<br>
@@ -0,0 +1,43 @@<br>
+/*<br>
+ * Copyright (c) 2015 Boudewijn Rempt <<a href="mailto:boud@valdyas.org">boud@valdyas.org</a>><br>
+ *<br>
+ * This library is free software; you can redistribute it and/or<br>
+ * modify it under the terms of the GNU Library General Public<br>
+ * License as published by the Free Software Foundation; either<br>
+ * version 2 of the License, or (at your option) any later version.<br>
+ *<br>
+ * This library is distributed in the hope that it will be useful,<br>
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of<br>
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU<br>
+ * Library General Public License for more details.<br>
+ *<br>
+ * You should have received a copy of the GNU Library General Public License<br>
+ * along with this library; see the file COPYING.LIB. If not, write to<br>
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,<br>
+ * Boston, MA 02110-1301, USA.<br>
+ */<br>
+#include "stacked_paintop.h"<br>
+#include "stacked_paintop_settings.h"<br>
+<br>
+StackedPaintOp::StackedPaintOp(const StackedPaintOpSettings *settings, KisPainter * painter, KisNodeSP node, KisImageSP image)<br>
+ : KisPaintOp(painter)<br>
+{<br>
+ Q_UNUSED(settings);<br>
+ Q_UNUSED(painter);<br>
+ Q_UNUSED(node);<br>
+ Q_UNUSED(image);<br>
+<br>
+ m_stackedBrush = new StackedBrush();<br>
+}<br>
+<br>
+StackedPaintOp::~StackedPaintOp()<br>
+{<br>
+ delete m_stackedBrush;<br>
+}<br>
+<br>
+KisSpacingInformation StackedPaintOp::paintAt(const KisPaintInformation& info)<br>
+{<br>
+ if (!painter()) return KisSpacingInformation(1.0);<br>
+<br>
+ return KisSpacingInformation(1.0);<br>
+}<br>
diff --git a/krita/plugins/paintops/stacked/stacked_paintop.h b/krita/plugins/paintops/stacked/stacked_paintop.h<br>
new file mode 100644<br>
index 0000000..a81ba8d<br>
--- /dev/null<br>
+++ b/krita/plugins/paintops/stacked/stacked_paintop.h<br>
@@ -0,0 +1,45 @@<br>
+/*<br>
+ * Copyright (c) 2015 Boudewijn Rempt <<a href="mailto:boud@valdyas.org">boud@valdyas.org</a>><br>
+ *<br>
+ * This library is free software; you can redistribute it and/or<br>
+ * modify it under the terms of the GNU Library General Public<br>
+ * License as published by the Free Software Foundation; either<br>
+ * version 2 of the License, or (at your option) any later version.<br>
+ *<br>
+ * This library is distributed in the hope that it will be useful,<br>
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of<br>
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU<br>
+ * Library General Public License for more details.<br>
+ *<br>
+ * You should have received a copy of the GNU Library General Public License<br>
+ * along with this library; see the file COPYING.LIB. If not, write to<br>
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,<br>
+ * Boston, MA 02110-1301, USA.<br>
+ */<br>
+#ifndef KIS_STACKED_PAINTOP_H_<br>
+#define KIS_STACKED_PAINTOP_H_<br>
+<br>
+#include <kis_paintop.h><br>
+#include <kis_types.h><br>
+<br>
+#include "stacked_brush.h"<br>
+#include "stacked_paintop_settings.h"<br>
+<br>
+class KisPainter;<br>
+<br>
+class StackedPaintOp : public KisPaintOp<br>
+{<br>
+<br>
+public:<br>
+<br>
+ StackedPaintOp(const StackedPaintOpSettings *settings, KisPainter * painter, KisNodeSP node, KisImageSP image);<br>
+ virtual ~StackedPaintOp();<br>
+<br>
+ KisSpacingInformation paintAt(const KisPaintInformation& info);<br>
+<br>
+private:<br>
+<br>
+ StackedBrush *m_stackedBrush;<br>
+};<br>
+<br>
+#endif // KIS_STACKED_PAINTOP_H_<br>
diff --git a/krita/plugins/paintops/stacked/stacked_paintop_plugin.cpp b/krita/plugins/paintops/stacked/stacked_paintop_plugin.cpp<br>
new file mode 100644<br>
index 0000000..df52ea9<br>
--- /dev/null<br>
+++ b/krita/plugins/paintops/stacked/stacked_paintop_plugin.cpp<br>
@@ -0,0 +1,53 @@<br>
+/*<br>
+ * Copyright (c) 2015 Boudewijn Rempt <<a href="mailto:boud@valdyas.org">boud@valdyas.org</a>><br>
+ *<br>
+ * This library is free software; you can redistribute it and/or<br>
+ * modify it under the terms of the GNU Library General Public<br>
+ * License as published by the Free Software Foundation; either<br>
+ * version 2 of the License, or (at your option) any later version.<br>
+ *<br>
+ * This library is distributed in the hope that it will be useful,<br>
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of<br>
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU<br>
+ * Library General Public License for more details.<br>
+ *<br>
+ * You should have received a copy of the GNU Library General Public License<br>
+ * along with this library; see the file COPYING.LIB. If not, write to<br>
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,<br>
+ * Boston, MA 02110-1301, USA.<br>
+ */<br>
+#include "stacked_paintop_plugin.h"<br>
+<br>
+<br>
+#include <klocale.h><br>
+<br>
+#include <kis_debug.h><br>
+#include <kpluginfactory.h><br>
+<br>
+#include <kis_paintop_registry.h><br>
+#include "kis_simple_paintop_factory.h"<br>
+<br>
+#include "stacked_paintop.h"<br>
+#include "stacked_paintop_settings_widget.h"<br>
+#include "stacked_paintop_settings.h"<br>
+#include "stacked_paintop_settings.h"<br>
+<br>
+#include "kis_global.h"<br>
+<br>
+K_PLUGIN_FACTORY(StackedPaintOpPluginFactory, registerPlugin<StackedPaintOpPlugin>();)<br>
+K_EXPORT_PLUGIN(StackedPaintOpPluginFactory("krita"))<br>
+<br>
+<br>
+StackedPaintOpPlugin::StackedPaintOpPlugin(QObject *parent, const QVariantList &)<br>
+ : QObject(parent)<br>
+{<br>
+ KisPaintOpRegistry *r = KisPaintOpRegistry::instance();<br>
+ r->add(new KisSimplePaintOpFactory<StackedPaintOp, StackedPaintOpSettings, StackedPaintOpSettingsWidget>("stackedbrush", i18n("Stacked Brush"),<br>
+ KisPaintOpFactory::categoryStable(), "krita-stacked.png"));<br>
+}<br>
+<br>
+StackedPaintOpPlugin::~StackedPaintOpPlugin()<br>
+{<br>
+}<br>
+<br>
+#include "stacked_paintop_plugin.moc"<br>
diff --git a/krita/plugins/paintops/stacked/stacked_paintop_plugin.h b/krita/plugins/paintops/stacked/stacked_paintop_plugin.h<br>
new file mode 100644<br>
index 0000000..392fcff<br>
--- /dev/null<br>
+++ b/krita/plugins/paintops/stacked/stacked_paintop_plugin.h<br>
@@ -0,0 +1,37 @@<br>
+/*<br>
+ * Copyright (c) 2015 Boudewijn Rempt <<a href="mailto:boud@valdyas.org">boud@valdyas.org</a>><br>
+ *<br>
+ * This library is free software; you can redistribute it and/or<br>
+ * modify it under the terms of the GNU Library General Public<br>
+ * License as published by the Free Software Foundation; either<br>
+ * version 2 of the License, or (at your option) any later version.<br>
+ *<br>
+ * This library is distributed in the hope that it will be useful,<br>
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of<br>
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU<br>
+ * Library General Public License for more details.<br>
+ *<br>
+ * You should have received a copy of the GNU Library General Public License<br>
+ * along with this library; see the file COPYING.LIB. If not, write to<br>
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,<br>
+ * Boston, MA 02110-1301, USA.<br>
+ */<br>
+#ifndef STACKED_PAINTOP_PLUGIN_H_<br>
+#define STACKED_PAINTOP_PLUGIN_H_<br>
+<br>
+#include <QObject><br>
+#include <QVariant><br>
+<br>
+<br>
+/**<br>
+ * A plugin wrapper that adds the paintop factories to the paintop registry.<br>
+ */<br>
+class StackedPaintOpPlugin : public QObject<br>
+{<br>
+ Q_OBJECT<br>
+public:<br>
+ StackedPaintOpPlugin(QObject *parent, const QVariantList &);<br>
+ virtual ~StackedPaintOpPlugin();<br>
+};<br>
+<br>
+#endif // STACKED_PAINTOP_PLUGIN_H_<br>
diff --git a/krita/plugins/paintops/stacked/stacked_paintop_settings.cpp b/krita/plugins/paintops/stacked/stacked_paintop_settings.cpp<br>
new file mode 100644<br>
index 0000000..d67d6db<br>
--- /dev/null<br>
+++ b/krita/plugins/paintops/stacked/stacked_paintop_settings.cpp<br>
@@ -0,0 +1,48 @@<br>
+/*<br>
+ * Copyright (c) 2015 Boudewijn Rempt <<a href="mailto:boud@valdyas.org">boud@valdyas.org</a>><br>
+ *<br>
+ * This library is free software; you can redistribute it and/or<br>
+ * modify it under the terms of the GNU Library General Public<br>
+ * License as published by the Free Software Foundation; either<br>
+ * version 2 of the License, or (at your option) any later version.<br>
+ *<br>
+ * This library is distributed in the hope that it will be useful,<br>
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of<br>
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU<br>
+ * Library General Public License for more details.<br>
+ *<br>
+ * You should have received a copy of the GNU Library General Public License<br>
+ * along with this library; see the file COPYING.LIB. If not, write to<br>
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,<br>
+ * Boston, MA 02110-1301, USA.<br>
+ */<br>
+#include "stacked_paintop_settings.h"<br>
+<br>
+#include <stackedop_option.h><br>
+<br>
+#include <kis_paint_action_type_option.h><br>
+#include <kis_airbrush_option.h><br>
+<br>
+StackedPaintOpSettings::StackedPaintOpSettings()<br>
+{<br>
+}<br>
+<br>
+bool StackedPaintOpSettings::paintIncremental()<br>
+{<br>
+ return (enumPaintActionType)getInt("PaintOpAction", WASH) == BUILDUP;<br>
+}<br>
+<br>
+bool StackedPaintOpSettings::isAirbrushing() const<br>
+{<br>
+ return false;<br>
+}<br>
+<br>
+int StackedPaintOpSettings::rate() const<br>
+{<br>
+ return 0;<br>
+}<br>
+<br>
+QPainterPath StackedPaintOpSettings::brushOutline(const KisPaintInformation &info, OutlineMode mode) const<br>
+{<br>
+ return QPainterPath();<br>
+}<br>
diff --git a/krita/plugins/paintops/stacked/stacked_paintop_settings.h b/krita/plugins/paintops/stacked/stacked_paintop_settings.h<br>
new file mode 100644<br>
index 0000000..e6ae35f<br>
--- /dev/null<br>
+++ b/krita/plugins/paintops/stacked/stacked_paintop_settings.h<br>
@@ -0,0 +1,40 @@<br>
+/*<br>
+ * Copyright (c) 2015 Boudewijn Rempt <<a href="mailto:boud@valdyas.org">boud@valdyas.org</a>><br>
+ *<br>
+ * This library is free software; you can redistribute it and/or<br>
+ * modify it under the terms of the GNU Library General Public<br>
+ * License as published by the Free Software Foundation; either<br>
+ * version 2 of the License, or (at your option) any later version.<br>
+ *<br>
+ * This library is distributed in the hope that it will be useful,<br>
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of<br>
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU<br>
+ * Library General Public License for more details.<br>
+ *<br>
+ * You should have received a copy of the GNU Library General Public License<br>
+ * along with this library; see the file COPYING.LIB. If not, write to<br>
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,<br>
+ * Boston, MA 02110-1301, USA.<br>
+ */<br>
+#ifndef KIS_STACKED_PAINTOP_SETTINGS_H_<br>
+#define KIS_STACKED_PAINTOP_SETTINGS_H_<br>
+<br>
+#include <kis_paintop_settings.h><br>
+#include <kis_types.h><br>
+<br>
+class StackedPaintOpSettings : public KisPaintOpSettings<br>
+{<br>
+<br>
+public:<br>
+ StackedPaintOpSettings();<br>
+ virtual ~StackedPaintOpSettings() {}<br>
+<br>
+ QPainterPath brushOutline(const KisPaintInformation &info, OutlineMode mode) const;<br>
+<br>
+ bool paintIncremental();<br>
+ bool isAirbrushing() const;<br>
+ int rate() const;<br>
+<br>
+};<br>
+<br>
+#endif<br>
diff --git a/krita/plugins/paintops/stacked/stacked_paintop_settings_widget.cpp b/krita/plugins/paintops/stacked/stacked_paintop_settings_widget.cpp<br>
new file mode 100644<br>
index 0000000..00cd970<br>
--- /dev/null<br>
+++ b/krita/plugins/paintops/stacked/stacked_paintop_settings_widget.cpp<br>
@@ -0,0 +1,54 @@<br>
+/*<br>
+ * Copyright (c) 2015 Boudewijn Rempt <<a href="mailto:boud@valdyas.org">boud@valdyas.org</a>><br>
+ *<br>
+ * This library is free software; you can redistribute it and/or<br>
+ * modify it under the terms of the GNU Library General Public<br>
+ * License as published by the Free Software Foundation; either<br>
+ * version 2 of the License, or (at your option) any later version.<br>
+ *<br>
+ * This library is distributed in the hope that it will be useful,<br>
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of<br>
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU<br>
+ * Library General Public License for more details.<br>
+ *<br>
+ * You should have received a copy of the GNU Library General Public License<br>
+ * along with this library; see the file COPYING.LIB. If not, write to<br>
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,<br>
+ * Boston, MA 02110-1301, USA.<br>
+ */<br>
+#include "stacked_paintop_settings_widget.h"<br>
+<br>
+#include <kis_paint_action_type_option.h><br>
+<br>
+#include "stacked_paintop_settings.h"<br>
+#include "stackedop_option.h"<br>
+<br>
+StackedPaintOpSettingsWidget:: StackedPaintOpSettingsWidget(QWidget* parent)<br>
+ : KisPaintOpSettingsWidget(parent)<br>
+{<br>
+ m_stackedOption = new StackedOpOption();<br>
+ addPaintOpOption(m_stackedOption, i18n("Brush size"));<br>
+ addPaintOpOption(new KisPaintActionTypeOption(), i18n("Painting Mode"));<br>
+}<br>
+<br>
+StackedPaintOpSettingsWidget::~ StackedPaintOpSettingsWidget()<br>
+{<br>
+}<br>
+<br>
+KisPropertiesConfiguration* StackedPaintOpSettingsWidget::configuration() const<br>
+{<br>
+ StackedPaintOpSettings* config = new StackedPaintOpSettings();<br>
+ config->setOptionsWidget(const_cast<StackedPaintOpSettingsWidget*>(this));<br>
+ config->setProperty("paintop", "stackedbrush"); // XXX: make this a const id string<br>
+ writeConfiguration(config);<br>
+ return config;<br>
+}<br>
+<br>
+void StackedPaintOpSettingsWidget::changePaintOpSize(qreal x, qreal y)<br>
+{<br>
+}<br>
+<br>
+QSizeF StackedPaintOpSettingsWidget::paintOpSize() const<br>
+{<br>
+ return QSizeF(10, 10);<br>
+}<br>
diff --git a/krita/plugins/paintops/stacked/stacked_paintop_settings_widget.h b/krita/plugins/paintops/stacked/stacked_paintop_settings_widget.h<br>
new file mode 100644<br>
index 0000000..9b0a39e<br>
--- /dev/null<br>
+++ b/krita/plugins/paintops/stacked/stacked_paintop_settings_widget.h<br>
@@ -0,0 +1,47 @@<br>
+/*<br>
+ * Copyright (c) 2015 Boudewijn Rempt <<a href="mailto:boud@valdyas.org">boud@valdyas.org</a>><br>
+ *<br>
+ * This library is free software; you can redistribute it and/or<br>
+ * modify it under the terms of the GNU Library General Public<br>
+ * License as published by the Free Software Foundation; either<br>
+ * version 2 of the License, or (at your option) any later version.<br>
+ *<br>
+ * This library is distributed in the hope that it will be useful,<br>
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of<br>
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU<br>
+ * Library General Public License for more details.<br>
+ *<br>
+ * You should have received a copy of the GNU Library General Public License<br>
+ * along with this library; see the file COPYING.LIB. If not, write to<br>
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,<br>
+ * Boston, MA 02110-1301, USA.<br>
+ */<br>
+#ifndef KIS_STACKEDPAINTOP_SETTINGS_WIDGET_H_<br>
+#define KIS_STACKEDPAINTOP_SETTINGS_WIDGET_H_<br>
+<br>
+#include <kis_paintop_settings_widget.h><br>
+<br>
+#include "ui_wdgstackedoptions.h"<br>
+<br>
+class StackedOpOption;<br>
+<br>
+class StackedPaintOpSettingsWidget : public KisPaintOpSettingsWidget<br>
+{<br>
+ Q_OBJECT<br>
+<br>
+public:<br>
+ StackedPaintOpSettingsWidget(QWidget* parent = 0);<br>
+ virtual ~StackedPaintOpSettingsWidget();<br>
+<br>
+ KisPropertiesConfiguration* configuration() const;<br>
+<br>
+ ///Reimplemented<br>
+ void changePaintOpSize(qreal x, qreal y);<br>
+ virtual QSizeF paintOpSize() const;<br>
+private:<br>
+<br>
+ StackedOpOption *m_stackedOption;<br>
+<br>
+};<br>
+<br>
+#endif<br>
diff --git a/krita/plugins/paintops/stacked/stackedop_option.cpp b/krita/plugins/paintops/stacked/stackedop_option.cpp<br>
new file mode 100644<br>
index 0000000..17e5280<br>
--- /dev/null<br>
+++ b/krita/plugins/paintops/stacked/stackedop_option.cpp<br>
@@ -0,0 +1,56 @@<br>
+/*<br>
+ * Copyright (c) 2008,2010 Lukáš Tvrdý <<a href="mailto:lukast.dev@gmail.com">lukast.dev@gmail.com</a>><br>
+ *<br>
+ * This program is free software; you can redistribute it and/or modify<br>
+ * it under the terms of the GNU General Public License as published by<br>
+ * the Free Software Foundation; either version 2 of the License, or<br>
+ * (at your option) any later version.<br>
+ *<br>
+ * This program is distributed in the hope that it will be useful,<br>
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of<br>
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the<br>
+ * GNU General Public License for more details.<br>
+ *<br>
+ * You should have received a copy of the GNU General Public License<br>
+ * along with this program; if not, write to the Free Software<br>
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.<br>
+ */<br>
+#include "stackedop_option.h"<br>
+<br>
+#include "ui_wdgstackedoptions.h"<br>
+<br>
+class StackedOpOptionsWidget: public QWidget, public Ui::WdgStackedOptions<br>
+{<br>
+public:<br>
+ StackedOpOptionsWidget(QWidget *parent = 0)<br>
+ : QWidget(parent) {<br>
+ setupUi(this);<br>
+ }<br>
+};<br>
+<br>
+StackedOpOption::StackedOpOption()<br>
+ : KisPaintOpOption(KisPaintOpOption::GENERAL, false)<br>
+{<br>
+ m_checkable = false;<br>
+ m_options = new StackedOpOptionsWidget();<br>
+ m_options->hide();<br>
+<br>
+ setObjectName("StackedOpOption");<br>
+<br>
+ setConfigurationPage(m_options);<br>
+}<br>
+<br>
+StackedOpOption::~StackedOpOption()<br>
+{<br>
+ // delete m_options;<br>
+}<br>
+<br>
+void StackedOpOption::writeOptionSetting(KisPropertiesConfiguration* setting) const<br>
+{<br>
+}<br>
+<br>
+void StackedOpOption::readOptionSetting(const KisPropertiesConfiguration* setting)<br>
+{<br>
+}<br>
+<br>
+<br>
diff --git a/krita/plugins/paintops/stacked/stackedop_option.h b/krita/plugins/paintops/stacked/stackedop_option.h<br>
new file mode 100644<br>
index 0000000..f7a63dd<br>
--- /dev/null<br>
+++ b/krita/plugins/paintops/stacked/stackedop_option.h<br>
@@ -0,0 +1,42 @@<br>
+/*<br>
+ * Copyright (c) 2008,2010 Lukáš Tvrdý <<a href="mailto:lukast.dev@gmail.com">lukast.dev@gmail.com</a>><br>
+ *<br>
+ * This program is free software; you can redistribute it and/or modify<br>
+ * it under the terms of the GNU General Public License as published by<br>
+ * the Free Software Foundation; either version 2 of the License, or<br>
+ * (at your option) any later version.<br>
+ *<br>
+ * This program is distributed in the hope that it will be useful,<br>
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of<br>
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the<br>
+ * GNU General Public License for more details.<br>
+ *<br>
+ * You should have received a copy of the GNU General Public License<br>
+ * along with this program; if not, write to the Free Software<br>
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.<br>
+ */<br>
+#ifndef KIS_STACKEDOP_OPTION_H<br>
+#define KIS_STACKEDOP_OPTION_H<br>
+<br>
+#include <kis_paintop_option.h><br>
+#include <krita_export.h><br>
+<br>
+class StackedOpOptionsWidget;<br>
+<br>
+<br>
+class StackedOpOption : public KisPaintOpOption<br>
+{<br>
+public:<br>
+ StackedOpOption();<br>
+ ~StackedOpOption();<br>
+<br>
+ void writeOptionSetting(KisPropertiesConfiguration* setting) const;<br>
+ void readOptionSetting(const KisPropertiesConfiguration* setting);<br>
+<br>
+private:<br>
+<br>
+ StackedOpOptionsWidget * m_options;<br>
+<br>
+};<br>
+<br>
+#endif<br>
diff --git a/krita/plugins/paintops/stacked/stackedpaintop.desktop b/krita/plugins/paintops/stacked/stackedpaintop.desktop<br>
new file mode 100644<br>
index 0000000..672a602<br>
--- /dev/null<br>
+++ b/krita/plugins/paintops/stacked/stackedpaintop.desktop<br>
@@ -0,0 +1,43 @@<br>
+[Desktop Entry]<br>
+Name=Stacked brush<br>
+Name[bs]=Četka u obliku krede<br>
+Name[ca]=Pinzell de guix<br>
+Name[ca@valencia]=Pinzell de guix<br>
+Name[cs]=Křídový štětec<br>
+Name[da]=Kridtpensel<br>
+Name[de]=Kreidepinsel<br>
+Name[el]=Πινέλο κιμωλίας<br>
+Name[en_GB]=Stacked brush<br>
+Name[es]=Pincel de tiza<br>
+Name[et]=Kriidipintsel<br>
+Name[eu]=Klera-pintzela<br>
+Name[fi]=Liitusivellin<br>
+Name[fr]=Brosse craie<br>
+Name[gl]=Pincel de xiz<br>
+Name[hne]=चाक ब्रस<br>
+Name[hu]=Kréta<br>
+Name[it]=Pennello a gesso<br>
+Name[ja]=チョークブラシ<br>
+Name[kk]=Бор қылқаламы<br>
+Name[ko]=분필 브러시<br>
+Name[lt]=Kreidos teptukas<br>
+Name[lv]=Krīta ota<br>
+Name[mr]=खडू कुंचला<br>
+Name[nb]=Krittpensel<br>
+Name[nds]=Kriedpinsel<br>
+Name[nl]=Krijt-penseel<br>
+Name[pl]=Pędzel kredowy<br>
+Name[pt]=Pincel de carvão<br>
+Name[pt_BR]=Pincel de giz<br>
+Name[ru]=Мелок<br>
+Name[sk]=Kriedový štetec<br>
+Name[sv]=Kritpensel<br>
+Name[tr]=Tebeşir fırçası<br>
+Name[uk]=Крейдяний пензель<br>
+Name[wa]=Croye<br>
+Name[x-test]=xxStacked brushxx<br>
+Name[zh_TW]=粉筆刷<br>
+X-KDE-ServiceTypes=Krita/Paintop<br>
+Type=Service<br>
+X-KDE-Library=kritastackedpaintop<br>
+X-Krita-Version=28<br>
diff --git a/krita/plugins/paintops/stacked/wdgstackedoptions.ui b/krita/plugins/paintops/stacked/wdgstackedoptions.ui<br>
new file mode 100644<br>
index 0000000..d6e80ad<br>
--- /dev/null<br>
+++ b/krita/plugins/paintops/stacked/wdgstackedoptions.ui<br>
@@ -0,0 +1,40 @@<br>
+<?xml version="1.0" encoding="UTF-8"?><br>
+<ui version="4.0"><br>
+ <class>WdgStackedOptions</class><br>
+ <widget class="QWidget" name="WdgStackedOptions"><br>
+ <property name="geometry"><br>
+ <rect><br>
+ <x>0</x><br>
+ <y>0</y><br>
+ <width>330</width><br>
+ <height>192</height><br>
+ </rect><br>
+ </property><br>
+ <property name="sizePolicy"><br>
+ <sizepolicy hsizetype="Preferred" vsizetype="Preferred"><br>
+ <horstretch>210</horstretch><br>
+ <verstretch>60</verstretch><br>
+ </sizepolicy><br>
+ </property><br>
+ <property name="minimumSize"><br>
+ <size><br>
+ <width>330</width><br>
+ <height>60</height><br>
+ </size><br>
+ </property><br>
+ <layout class="QGridLayout" name="gridLayout"><br>
+ <item row="0" column="0"><br>
+ <widget class="QLabel" name="label"><br>
+ <property name="text"><br>
+ <string>Stacked Brush!!!</string><br>
+ </property><br>
+ <property name="alignment"><br>
+ <set>Qt::AlignCenter</set><br>
+ </property><br>
+ </widget><br>
+ </item><br>
+ </layout><br>
+ </widget><br>
+ <resources/><br>
+ <connections/><br>
+</ui><br>
</blockquote></div><br></div>