summaryrefslogtreecommitdiffstats
path: root/chalk/plugins/tools/selectiontools
diff options
context:
space:
mode:
authortpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2011-06-26 00:41:16 +0000
committertpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2011-06-26 00:41:16 +0000
commit698569f8428ca088f764d704034a1330517b98c0 (patch)
treebf45be6946ebbbee9cce5a5bcf838f4c952d87e6 /chalk/plugins/tools/selectiontools
parent2785103a6bd4de55bd26d79e34d0fdd4b329a73a (diff)
downloadkoffice-698569f8428ca088f764d704034a1330517b98c0.tar.gz
koffice-698569f8428ca088f764d704034a1330517b98c0.zip
Finish rebranding of Krita as Chalk
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/applications/koffice@1238363 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'chalk/plugins/tools/selectiontools')
-rw-r--r--chalk/plugins/tools/selectiontools/Makefile.am56
-rw-r--r--chalk/plugins/tools/selectiontools/chalkselectiontools.desktop52
-rw-r--r--chalk/plugins/tools/selectiontools/kis_tool_move_selection.cc223
-rw-r--r--chalk/plugins/tools/selectiontools/kis_tool_move_selection.h75
-rw-r--r--chalk/plugins/tools/selectiontools/kis_tool_select_brush.cc168
-rw-r--r--chalk/plugins/tools/selectiontools/kis_tool_select_brush.h83
-rw-r--r--chalk/plugins/tools/selectiontools/kis_tool_select_contiguous.cc234
-rw-r--r--chalk/plugins/tools/selectiontools/kis_tool_select_contiguous.h95
-rw-r--r--chalk/plugins/tools/selectiontools/kis_tool_select_elliptical.cc321
-rw-r--r--chalk/plugins/tools/selectiontools/kis_tool_select_elliptical.h99
-rw-r--r--chalk/plugins/tools/selectiontools/kis_tool_select_eraser.cc156
-rw-r--r--chalk/plugins/tools/selectiontools/kis_tool_select_eraser.h82
-rw-r--r--chalk/plugins/tools/selectiontools/kis_tool_select_outline.cc295
-rw-r--r--chalk/plugins/tools/selectiontools/kis_tool_select_outline.h101
-rw-r--r--chalk/plugins/tools/selectiontools/kis_tool_select_polygonal.cc315
-rw-r--r--chalk/plugins/tools/selectiontools/kis_tool_select_polygonal.h106
-rw-r--r--chalk/plugins/tools/selectiontools/kis_tool_select_rectangular.cc323
-rw-r--r--chalk/plugins/tools/selectiontools/kis_tool_select_rectangular.h95
-rw-r--r--chalk/plugins/tools/selectiontools/selection_tools.cc77
-rw-r--r--chalk/plugins/tools/selectiontools/selection_tools.h44
-rw-r--r--chalk/plugins/tools/selectiontools/tool_brush_selection.pngbin0 -> 1052 bytes
-rw-r--r--chalk/plugins/tools/selectiontools/tool_brush_selection.svg827
-rw-r--r--chalk/plugins/tools/selectiontools/tool_brush_selection_cursor.pngbin0 -> 339 bytes
-rw-r--r--chalk/plugins/tools/selectiontools/tool_contiguous_selection.pngbin0 -> 836 bytes
-rw-r--r--chalk/plugins/tools/selectiontools/tool_contiguous_selection_cursor.pngbin0 -> 321 bytes
-rw-r--r--chalk/plugins/tools/selectiontools/tool_elliptical_selection.pngbin0 -> 703 bytes
-rw-r--r--chalk/plugins/tools/selectiontools/tool_elliptical_selection.svg256
-rw-r--r--chalk/plugins/tools/selectiontools/tool_elliptical_selection_cursor.pngbin0 -> 296 bytes
-rw-r--r--chalk/plugins/tools/selectiontools/tool_eraser_selection.pngbin0 -> 1087 bytes
-rw-r--r--chalk/plugins/tools/selectiontools/tool_eraser_selection.svg1993
-rw-r--r--chalk/plugins/tools/selectiontools/tool_eraser_selection_cursor.pngbin0 -> 341 bytes
-rw-r--r--chalk/plugins/tools/selectiontools/tool_outline_selection.pngbin0 -> 556 bytes
-rw-r--r--chalk/plugins/tools/selectiontools/tool_outline_selection.svg329
-rw-r--r--chalk/plugins/tools/selectiontools/tool_outline_selection_cursor.pngbin0 -> 359 bytes
-rw-r--r--chalk/plugins/tools/selectiontools/tool_polygonal_selection.pngbin0 -> 576 bytes
-rw-r--r--chalk/plugins/tools/selectiontools/tool_polygonal_selection.svg364
-rw-r--r--chalk/plugins/tools/selectiontools/tool_polygonal_selection_cursor.pngbin0 -> 433 bytes
-rw-r--r--chalk/plugins/tools/selectiontools/tool_rect_selection.pngbin0 -> 523 bytes
-rw-r--r--chalk/plugins/tools/selectiontools/tool_rect_selection.svg191
-rw-r--r--chalk/plugins/tools/selectiontools/tool_rectangular_selection_cursor.pngbin0 -> 224 bytes
40 files changed, 6960 insertions, 0 deletions
diff --git a/chalk/plugins/tools/selectiontools/Makefile.am b/chalk/plugins/tools/selectiontools/Makefile.am
new file mode 100644
index 00000000..dc0ad90e
--- /dev/null
+++ b/chalk/plugins/tools/selectiontools/Makefile.am
@@ -0,0 +1,56 @@
+kde_services_DATA = chalkselectiontools.desktop
+
+# all_includes must remain last!
+INCLUDES = -I$(srcdir)/../../../sdk \
+ -I$(srcdir)/../../../core \
+ -I$(srcdir)/../../../chalkcolor/ \
+ -I$(srcdir)/../../../ui \
+ -I$/../../../ui \
+ $(KOFFICE_INCLUDES) \
+ $(all_includes)
+
+chalkselectiontools_la_SOURCES = kis_tool_move_selection.cc \
+ kis_tool_select_brush.cc kis_tool_select_contiguous.cc kis_tool_select_elliptical.cc \
+ kis_tool_select_eraser.cc kis_tool_select_outline.cc kis_tool_select_polygonal.cc \
+ kis_tool_select_rectangular.cc selection_tools.cc
+
+# Install this plugin in the KDE modules directory
+kde_module_LTLIBRARIES = chalkselectiontools.la
+
+noinst_HEADERS = \
+ selection_tools.h \
+ kis_tool_select_outline.h \
+ kis_tool_select_polygonal.h \
+ kis_tool_select_rectangular.h \
+ kis_tool_select_brush.h \
+ kis_tool_select_eraser.h \
+ kis_tool_select_contiguous.h \
+ kis_tool_select_elliptical.h
+
+
+chalkselectiontools_la_LDFLAGS = $(all_libraries) -module $(KDE_PLUGIN) $(LIB_QT) -lkdecore -lkdeui -lkjs -lkdefx -lkio -lkparts -L../../../../chalk/chalkcolor/.libs -lchalkcolor -L../../../../chalk/core/.libs -lchalkimage \
+ -L../../../../chalk/ui/.libs -lchalkui
+chalkselectiontools_la_LIBADD = ../../../libchalkcommon.la
+
+chalkselectiontools_la_METASOURCES = AUTO
+
+KDE_OPTIONS = nofinal
+
+chalkpics_DATA = \
+ tool_rect_selection.png \
+ tool_eraser_selection.png \
+ tool_brush_selection.png \
+ tool_contiguous_selection.png \
+ tool_elliptical_selection.png \
+ tool_outline_selection.png \
+ tool_polygonal_selection.png \
+ tool_rectangular_selection_cursor.png \
+ tool_eraser_selection_cursor.png \
+ tool_brush_selection_cursor.png \
+ tool_contiguous_selection_cursor.png \
+ tool_elliptical_selection_cursor.png \
+ tool_outline_selection_cursor.png \
+ tool_polygonal_selection_cursor.png
+
+chalkpicsdir = $(kde_datadir)/chalk/pics
+
diff --git a/chalk/plugins/tools/selectiontools/chalkselectiontools.desktop b/chalk/plugins/tools/selectiontools/chalkselectiontools.desktop
new file mode 100644
index 00000000..72a7f217
--- /dev/null
+++ b/chalk/plugins/tools/selectiontools/chalkselectiontools.desktop
@@ -0,0 +1,52 @@
+[Desktop Entry]
+Name=Selection Tools
+Name[bg]=Инструмент за маркиране
+Name[br]=Ostilhoù choazh
+Name[ca]=Eines de selecció
+Name[cy]=Offer Detholi
+Name[da]=Markeringsværktøj
+Name[de]=Auswahlwerkzeuge
+Name[el]=Εργαλεία επιλογής
+Name[eo]=Elektado-iloj
+Name[es]=Herramientas de selección
+Name[et]=Valikutööriistad
+Name[eu]=Hautapen-tresnak
+Name[fa]=ابزارهای گزینش
+Name[fi]=Valintatyökalut
+Name[fr]=Outils de sélection
+Name[fy]=Seleksje-ark
+Name[ga]=Uirlisí Roghnúcháin
+Name[gl]=Ferramentas de Selección
+Name[he]=כלי בחירה
+Name[hu]=Kiválasztó eszközök
+Name[is]=Valtól
+Name[it]=Strumenti di selezione
+Name[ja]=選択ツール
+Name[km]=ឧបករណ៍​ជ្រើស​
+Name[lt]=Pažymėjimo įrankiai
+Name[lv]=Izvēles rīki
+Name[ms]=Alat Pemilihan
+Name[nb]=Velgeverktøy
+Name[nds]=Utwahlwarktüüch
+Name[ne]=चयन उपकरण
+Name[nl]=Selectiegereedschappen
+Name[nn]=Veljeverktøy
+Name[pl]=Narzędzia wyboru
+Name[pt]=Ferramentas de Selecção
+Name[pt_BR]=Ferramentas de Seleção
+Name[ru]=Инструменты выделения
+Name[se]=Válljenreaiddut
+Name[sk]=Štetec výberu
+Name[sl]=Orodja za izbiro
+Name[sr]=Алати за избор
+Name[sr@Latn]=Alati za izbor
+Name[sv]=Markeringsverktyg
+Name[uk]=Засоби виділення
+Name[uz]=Tanlash vositalari
+Name[uz@cyrillic]=Танлаш воситалари
+Name[zh_CN]=选择工具
+Name[zh_TW]=選取區工具
+ServiceTypes=Chalk/Tool
+Type=Service
+X-KDE-Library=chalkselectiontools
+X-Chalk-Version=2
diff --git a/chalk/plugins/tools/selectiontools/kis_tool_move_selection.cc b/chalk/plugins/tools/selectiontools/kis_tool_move_selection.cc
new file mode 100644
index 00000000..b7b123d7
--- /dev/null
+++ b/chalk/plugins/tools/selectiontools/kis_tool_move_selection.cc
@@ -0,0 +1,223 @@
+/*
+ * Copyright (c) 2006 Cyrille Berger <cberger@cberger.net>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+
+#include "kis_tool_move_selection.h"
+
+#include <stdlib.h>
+#include <tqpoint.h>
+#include <kaction.h>
+#include <kcommand.h>
+#include <klocale.h>
+#include <tqcolor.h>
+#include "kis_canvas_subject.h"
+#include "kis_cursor.h"
+#include "kis_image.h"
+#include "kis_layer.h"
+#include "kis_paint_layer.h"
+#include "kis_paint_device.h"
+#include "kis_button_press_event.h"
+#include "kis_button_release_event.h"
+#include "kis_move_event.h"
+#include "kis_selection.h"
+#include "kis_selection_manager.h"
+#include "kis_undo_adapter.h"
+
+class KisSelectionOffsetCommand : public KNamedCommand {
+ typedef KNamedCommand super;
+
+public:
+ KisSelectionOffsetCommand(KisSelectionSP layer, const TQPoint& oldpos, const TQPoint& newpos);
+ virtual ~KisSelectionOffsetCommand();
+
+ virtual void execute();
+ virtual void unexecute();
+
+private:
+ void moveTo(const TQPoint& pos);
+
+private:
+ KisSelectionSP m_layer;
+ TQPoint m_oldPos;
+ TQPoint m_newPos;
+};
+
+ KisSelectionOffsetCommand::KisSelectionOffsetCommand(KisSelectionSP layer, const TQPoint& oldpos, const TQPoint& newpos) :
+ super(i18n("Move Layer"))
+ {
+ m_layer = layer;
+ m_oldPos = oldpos;
+ m_newPos = newpos;
+
+ }
+
+ KisSelectionOffsetCommand::~KisSelectionOffsetCommand()
+ {
+ }
+
+ void KisSelectionOffsetCommand::execute()
+ {
+ moveTo(m_newPos);
+ }
+
+ void KisSelectionOffsetCommand::unexecute()
+ {
+ moveTo(m_oldPos);
+ }
+
+ void KisSelectionOffsetCommand::moveTo(const TQPoint& pos)
+ {
+ if (m_layer->undoAdapter()) {
+ m_layer->undoAdapter()->setUndo(false);
+ }
+
+ m_layer->setX(pos.x());
+ m_layer->setY(pos.y());
+
+ m_layer->tqparentPaintDevice()->setDirty();
+
+ if (m_layer->undoAdapter()) {
+ m_layer->undoAdapter()->setUndo(true);
+ }
+ }
+
+
+KisToolMoveSelection::KisToolMoveSelection()
+ : super(i18n("Move Selection Tool"))
+{
+ setName("tool_move_selection");
+ m_subject = 0;
+ setCursor(KisCursor::moveCursor());
+}
+
+KisToolMoveSelection::~KisToolMoveSelection()
+{
+}
+
+void KisToolMoveSelection::update(KisCanvasSubject *subject)
+{
+ m_subject = subject;
+ super::update(subject);
+ m_dragging = false;
+}
+
+void KisToolMoveSelection::buttonPress(KisButtonPressEvent *e)
+{
+ m_dragging = false;
+ if (m_subject && e->button() == Qt::LeftButton) {
+ TQPoint pos = e->pos().floorTQPoint();
+ KisImageSP img = m_subject->currentImg();
+ KisPaintLayerSP lay;
+
+ if (!img || !(lay = dynamic_cast<KisPaintLayer*>( img->activeLayer().data() )))
+ return;
+
+ m_dragStart = pos;
+
+ if ( !lay->visible() || !lay->paintDevice()->hasSelection())
+ return;
+ KisSelectionSP sel = lay->paintDevice()->selection();
+
+ m_dragging = true;
+ m_dragStart.setX(pos.x());
+ m_dragStart.setY(pos.y());
+ m_layerStart.setX(sel->getX());
+ m_layerStart.setY(sel->getY());
+ m_layerPosition = m_layerStart;
+
+ }
+}
+
+void KisToolMoveSelection::move(KisMoveEvent *e)
+{
+ if (m_subject && m_dragging) {
+ TQPoint pos = e->pos().floorTQPoint();
+ if((e->state() & TQt::AltButton) || (e->state() & TQt::ControlButton)) {
+ if(fabs(pos.x() - m_dragStart.x()) > fabs(pos.y() - m_dragStart.y()))
+ pos.setY(m_dragStart.y());
+ else
+ pos.setX(m_dragStart.x());
+ }
+
+ KisImageSP img = m_subject->currentImg();
+ KisPaintLayerSP lay = dynamic_cast<KisPaintLayer*>(m_subject->currentImg()->activeLayer().data());
+ if(!lay) return;
+ KisSelectionSP sel = lay->paintDevice()->selection();
+
+ TQRect rc;
+
+ pos -= m_dragStart; // convert to delta
+ rc = sel->selectedRect();
+ sel->setX(sel->getX() + pos.x());
+ sel->setY(sel->getY() + pos.y());
+ rc = rc.unite(sel->selectedRect());
+
+ m_layerPosition = TQPoint(sel->getX(), sel->getY());
+ m_dragStart = e->pos().floorTQPoint();
+
+ lay->paintDevice()->setDirty(rc);
+ }
+
+}
+
+void KisToolMoveSelection::buttonRelease(KisButtonReleaseEvent *e)
+{
+ if (m_subject && e->button() == Qt::LeftButton && m_dragging) {
+ m_dragging = false;
+ KisImageSP img = m_subject->currentImg();
+ if(!img) return;
+ KisPaintLayerSP lay = dynamic_cast<KisPaintLayer*>(img->activeLayer().data());
+
+ if (lay->paintDevice()->hasSelection()) {
+ KisSelectionSP dev = lay->paintDevice()->selection();
+ m_dragging = false;
+
+ if (img->undo()) {
+ KCommand *cmd = new KisSelectionOffsetCommand( dev, m_layerStart, m_layerPosition);
+ Q_CHECK_PTR(cmd);
+ KisUndoAdapter *adapter = img->undoAdapter();
+ if (adapter) {
+ adapter->addCommand(cmd);
+ } else {
+ delete cmd;
+ }
+ }
+ img->setModified();
+ lay->setDirty();
+ }
+ }
+}
+
+void KisToolMoveSelection::setup(KActionCollection *collection)
+{
+ m_action = static_cast<KRadioAction *>(collection->action(name()));
+
+ if (m_action == 0) {
+ m_action = new KRadioAction(i18n("&Move selection"),
+ "tool_move",
+ TQt::SHIFT+TQt::Key_V,
+ this,
+ TQT_SLOT(activate()),
+ collection,
+ name());
+ m_action->setToolTip(i18n("Move the selection"));
+ m_action->setExclusiveGroup("tools");
+ m_ownAction = true;
+ }
+}
+
+#include "kis_tool_move_selection.moc"
diff --git a/chalk/plugins/tools/selectiontools/kis_tool_move_selection.h b/chalk/plugins/tools/selectiontools/kis_tool_move_selection.h
new file mode 100644
index 00000000..60d73a9b
--- /dev/null
+++ b/chalk/plugins/tools/selectiontools/kis_tool_move_selection.h
@@ -0,0 +1,75 @@
+/*
+ * Copyright (c) 2006 Cyrille Berger <cberger@cberger.net>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+
+#ifndef KIS_TOOL_MOVE_H_
+#define KIS_TOOL_MOVE_H_
+
+#include "kis_tool_non_paint.h"
+#include "kis_tool_factory.h"
+
+// XXX: Moving is not nearly smooth enough!
+class KisToolMoveSelection : public KisToolNonPaint {
+
+ typedef KisToolNonPaint super;
+ Q_OBJECT
+ TQ_OBJECT
+
+public:
+ KisToolMoveSelection();
+ virtual ~KisToolMoveSelection();
+
+public:
+ virtual void update(KisCanvasSubject *subject);
+
+public:
+ virtual void setup(KActionCollection *collection);
+ virtual enumToolType toolType() { return TOOL_SELECT; }
+ virtual TQ_UINT32 priority() { return 10; }
+
+ virtual void buttonPress(KisButtonPressEvent *e);
+ virtual void move(KisMoveEvent *e);
+ virtual void buttonRelease(KisButtonReleaseEvent *e);
+
+private:
+ KisCanvasSubject *m_subject;
+ TQPoint m_dragStart;
+ TQPoint m_layerStart;
+ TQPoint m_layerPosition;
+ bool m_dragging;
+};
+
+
+class KisToolMoveSelectionFactory : public KisToolFactory {
+ typedef KisToolFactory super;
+public:
+ KisToolMoveSelectionFactory() : super() {};
+ virtual ~KisToolMoveSelectionFactory(){};
+
+ virtual KisTool * createTool(KActionCollection * ac) {
+ KisTool * t = new KisToolMoveSelection();
+ Q_CHECK_PTR(t);
+ t->setup(ac);
+ return t;
+ }
+ virtual KisID id() { return KisID("moveselection", i18n("Move Selection Tool")); }
+};
+
+
+
+#endif // KIS_TOOL_MOVE_H_
+
diff --git a/chalk/plugins/tools/selectiontools/kis_tool_select_brush.cc b/chalk/plugins/tools/selectiontools/kis_tool_select_brush.cc
new file mode 100644
index 00000000..ff5242d6
--- /dev/null
+++ b/chalk/plugins/tools/selectiontools/kis_tool_select_brush.cc
@@ -0,0 +1,168 @@
+/*
+ * kis_tool_select_brush.cc - part of Chalk
+ *
+ * Copyright (c) 2004 Boudewijn Rempt <boud@valdyas.org>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+
+#include <tqevent.h>
+#include <tqlabel.h>
+#include <tqlayout.h>
+#include <tqwidget.h>
+#include <tqrect.h>
+
+#include <kdebug.h>
+#include <kaction.h>
+#include <kcommand.h>
+#include <klocale.h>
+
+#include "kis_brush.h"
+#include "kis_button_press_event.h"
+#include "kis_button_release_event.h"
+#include "kis_cmb_composite.h"
+#include "kis_cursor.h"
+#include "kis_doc.h"
+#include "kis_paintop.h"
+#include "kis_paintop_registry.h"
+#include "kis_move_event.h"
+#include "kis_painter.h"
+#include "kis_selection.h"
+#include "kis_tool_select_brush.h"
+#include "kis_types.h"
+#include "kis_layer.h"
+#include "kis_view.h"
+#include "kis_selection_options.h"
+#include "kis_selected_transaction.h"
+
+KisToolSelectBrush::KisToolSelectBrush()
+ : super(i18n("SelectBrush"))
+{
+ setName("tool_select_brush");
+ m_optWidget = 0;
+ setCursor(KisCursor::load("tool_brush_selection_cursor.png", 5, 5));
+ m_paintOnSelection = true;
+}
+
+KisToolSelectBrush::~KisToolSelectBrush()
+{
+}
+
+void KisToolSelectBrush::activate()
+{
+ super::activate();
+
+ if (!m_optWidget)
+ return;
+
+ m_optWidget->slotActivated();
+}
+
+void KisToolSelectBrush::initPaint(KisEvent* /*e*/)
+{
+ if (!m_currentImage || !m_currentImage->activeDevice()) return;
+
+ m_mode = PAINT;
+ m_dragDist = 0;
+
+ // Create painter
+ KisPaintDeviceSP dev = m_currentImage->activeDevice();
+ if (m_painter)
+ delete m_painter;
+ bool hasSelection = dev->hasSelection();
+ if (m_currentImage->undo()) m_transaction = new KisSelectedTransaction(i18n("Selection Brush"), dev);
+ if(! hasSelection)
+ {
+ dev->selection()->clear();
+ dev->emitSelectionChanged();
+ }
+ KisSelectionSP selection = dev->selection();
+
+ m_target = selection;
+ m_painter = new KisPainter(selection.data());
+ Q_CHECK_PTR(m_painter);
+ m_painter->setPaintColor(KisColor(TQt::black, selection->colorSpace()));
+ m_painter->setBrush(m_subject->currentBrush());
+ m_painter->setOpacity(OPACITY_OPAQUE);//m_subject->fgColor().colorSpace()->intensity8(m_subject->fgColor().data()));
+ m_painter->setCompositeOp(COMPOSITE_OVER);
+ KisPaintOp * op = KisPaintOpRegistry::instance()->paintOp("paintbrush", 0, painter());
+ painter()->setPaintOp(op); // And now the painter owns the op and will destroy it.
+
+ // Set the cursor -- ideally. this should be a tqmask created from the brush,
+ // now that X11 can handle colored cursors.
+#if 0
+ // Setting cursors has no effect until the tool is selected again; this
+ // should be fixed.
+ setCursor(KisCursor::brushCursor());
+#endif
+}
+
+void KisToolSelectBrush::endPaint()
+{
+ m_mode = HOVER;
+ if (m_currentImage && m_currentImage->activeLayer()) {
+ if (m_currentImage->undo() && m_painter) {
+ // If painting in mouse release, make sure painter
+ // is destructed or end()ed
+ m_currentImage->undoAdapter()->addCommand(m_transaction);
+ }
+ delete m_painter;
+ m_painter = 0;
+ if (m_currentImage->activeDevice())
+ m_currentImage->activeDevice()->emitSelectionChanged();
+ notifyModified();
+ }
+}
+
+
+void KisToolSelectBrush::setup(KActionCollection *collection)
+{
+ m_action = static_cast<KRadioAction *>(collection->action(name()));
+
+ if (m_action == 0) {
+ m_action = new KRadioAction(i18n("&Selection Brush"),
+ "tool_brush_selection", "Ctrl+Shift+B", this,
+ TQT_SLOT(activate()), collection,
+ name());
+ Q_CHECK_PTR(m_action);
+ m_action->setToolTip(i18n("Paint a selection"));
+ m_action->setExclusiveGroup("tools");
+ m_ownAction = true;
+ }
+}
+
+TQWidget* KisToolSelectBrush::createOptionWidget(TQWidget* tqparent)
+{
+ Q_UNUSED(tqparent);
+ // Commented out due to the fact that this doesn't actually work if you change the action
+#if 0
+ m_optWidget = new KisSelectionOptions(tqparent, m_subject);
+ Q_CHECK_PTR(m_optWidget);
+ m_optWidget->setCaption(i18n("Selection Brush"));
+
+ TQVBoxLayout * l = dynamic_cast<TQVBoxLayout*>(m_optWidget->tqlayout());
+ l->addItem(new TQSpacerItem(1, 1, TQSizePolicy::Fixed, TQSizePolicy::Expanding));
+
+ return m_optWidget;
+#endif
+ return 0;
+}
+
+TQWidget* KisToolSelectBrush::optionWidget()
+{
+ return m_optWidget;
+}
+
+#include "kis_tool_select_brush.moc"
diff --git a/chalk/plugins/tools/selectiontools/kis_tool_select_brush.h b/chalk/plugins/tools/selectiontools/kis_tool_select_brush.h
new file mode 100644
index 00000000..374050f6
--- /dev/null
+++ b/chalk/plugins/tools/selectiontools/kis_tool_select_brush.h
@@ -0,0 +1,83 @@
+/*
+ * kis_tool_select_brush.h - part of Chalk
+ *
+ * Copyright (c) 2003-2004 Boudewijn Rempt <boud@valdyas.org>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+
+#ifndef KIS_TOOL_SELECT_BRUSH_H_
+#define KIS_TOOL_SELECT_BRUSH_H_
+
+#include <kis_tool.h>
+#include <kis_tool_freehand.h>
+#include <kis_tool_factory.h>
+
+class TQWidget;
+class KisPoint;
+class KisSelectedTransaction;
+class KisSelectionOptions;
+
+/**
+ * The selection brush creates a selection by painting with the current
+ * brush tqshape. Not sure what kind of an icon could represent this...
+ * Depends a bit on how we're going to visualize selections.
+ */
+class KisToolSelectBrush : public KisToolFreehand {
+ Q_OBJECT
+ TQ_OBJECT
+ typedef KisToolFreehand super;
+
+public:
+ KisToolSelectBrush();
+ virtual ~KisToolSelectBrush();
+
+ virtual void setup(KActionCollection *collection);
+ virtual TQ_UINT32 priority() { return 1; }
+ virtual enumToolType toolType() { return TOOL_SELECT; }
+ virtual TQWidget* createOptionWidget(TQWidget* tqparent);
+ virtual TQWidget* optionWidget();
+
+public slots:
+ virtual void activate();
+
+protected:
+
+ virtual void initPaint(KisEvent *e);
+ virtual void endPaint();
+
+private:
+ KisSelectionOptions * m_optWidget;
+ KisSelectedTransaction *m_transaction;
+};
+
+class KisToolSelectBrushFactory : public KisToolFactory {
+ typedef KisToolFactory super;
+public:
+ KisToolSelectBrushFactory() : super() {};
+ virtual ~KisToolSelectBrushFactory(){};
+
+ virtual KisTool * createTool(KActionCollection * ac) {
+ KisTool * t = new KisToolSelectBrush();
+ Q_CHECK_PTR(t);
+ t->setup(ac);
+ return t;
+ }
+ virtual KisID id() { return KisID("brushselect", i18n("Brush Select Tool")); }
+};
+
+
+#endif // KIS_TOOL_SELECT_BRUSH_H_
+
diff --git a/chalk/plugins/tools/selectiontools/kis_tool_select_contiguous.cc b/chalk/plugins/tools/selectiontools/kis_tool_select_contiguous.cc
new file mode 100644
index 00000000..c4c908fc
--- /dev/null
+++ b/chalk/plugins/tools/selectiontools/kis_tool_select_contiguous.cc
@@ -0,0 +1,234 @@
+/*
+ * kis_tool_select_contiguous - part of Krayon^WChalk
+ *
+ * Copyright (c) 1999 Michael Koch <koch@kde.org>
+ * Copyright (c) 2002 Patrick Julien <freak@codepimps.org>
+ * Copyright (c) 2004 Boudewijn Rempt <boud@valdyas.org>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+
+#include <tqpainter.h>
+#include <tqlayout.h>
+#include <tqlabel.h>
+#include <tqapplication.h>
+#include <tqcheckbox.h>
+
+#include <kaction.h>
+#include <kdebug.h>
+#include <klocale.h>
+#include <knuminput.h>
+#include <kcolorbutton.h>
+
+#include <kis_cursor.h>
+#include <kis_selection_manager.h>
+#include <kis_canvas_subject.h>
+#include <kis_image.h>
+#include <kis_layer.h>
+#include <kis_paint_device.h>
+#include <kis_button_press_event.h>
+#include <kis_canvas_subject.h>
+#include <kis_selection_options.h>
+#include <kis_selection.h>
+#include <kis_paint_device.h>
+#include <kis_iterators_pixel.h>
+#include <kis_selection_options.h>
+#include <kis_canvas_observer.h>
+#include <kis_fill_painter.h>
+#include <kis_undo_adapter.h>
+#include <kis_selected_transaction.h>
+
+#include "kis_tool_select_contiguous.h"
+
+KisToolSelectContiguous::KisToolSelectContiguous() : super(i18n("Contiguous Select"))
+{
+ setName("tool_select_contiguous");
+ m_subject = 0;
+ m_optWidget = 0;
+ m_fuzziness = 20;
+ m_sampleMerged = false;
+ m_selectAction = SELECTION_ADD;
+
+ setCursor(KisCursor::load("tool_contiguous_selection_cursor.png", 6, 6));
+}
+
+KisToolSelectContiguous::~KisToolSelectContiguous()
+{
+}
+
+void KisToolSelectContiguous::activate()
+{
+ super::activate();
+
+ if (!m_optWidget)
+ return;
+
+ m_optWidget->slotActivated();
+}
+
+void KisToolSelectContiguous::buttonPress(KisButtonPressEvent * e)
+{
+ if (m_subject) {
+
+ KisImageSP img;
+ KisPaintDeviceSP dev;
+ TQPoint pos;
+
+ if (e->button() != Qt::LeftButton && e->button() != Qt::RightButton)
+ return;
+
+ if (!(img = m_subject->currentImg()))
+ return;
+
+ dev = img->activeDevice();
+
+ if (!dev || !img->activeLayer()->visible())
+ return;
+
+ TQApplication::setOverrideCursor(KisCursor::waitCursor());
+
+ pos = TQPoint(e->pos().floorX(), e->pos().floorY());
+
+ KisFillPainter fillpainter(dev);
+ fillpainter.setFillThreshold(m_fuzziness);
+ fillpainter.setSampleMerged(m_sampleMerged);
+ KisSelectionSP selection = fillpainter.createFloodSelection(pos.x(), pos.y());
+ KisSelectedTransaction *t = 0;
+ if (img->undo()) t = new KisSelectedTransaction(i18n("Contiguous Area Selection"), dev);
+
+ if (!dev->hasSelection()) {
+ dev->selection()->clear();
+ if(m_selectAction==SELECTION_SUBTRACT)
+ selection->invert();
+ }
+
+ switch (m_selectAction) {
+ case SELECTION_SUBTRACT:
+ dev->subtractSelection(selection);
+ break;
+ case SELECTION_ADD:
+ default:
+ dev->addSelection(selection);
+ break;
+
+ }
+
+ dev->setDirty(selection->selectedRect()); // A bit too wide, but that's not that bad
+ dev->emitSelectionChanged();
+
+
+ if (img->undo())
+ img->undoAdapter()->addCommand(t);
+
+ TQApplication::restoreOverrideCursor();
+ }
+
+}
+
+void KisToolSelectContiguous::setup(KActionCollection *collection)
+{
+ m_action = static_cast<KRadioAction *>(collection->action(name()));
+
+ if (m_action == 0) {
+ m_action = new KRadioAction(i18n("&Contiguous Area Selection"),
+ "tool_contiguous_selection" ,
+ 0,
+ this,
+ TQT_SLOT(activate()),
+ collection,
+ name());
+ Q_CHECK_PTR(m_action);
+ m_action->setToolTip(i18n("Select a contiguous area"));
+ m_action->setExclusiveGroup("tools");
+ m_ownAction = true;
+ }
+}
+
+void KisToolSelectContiguous::update(KisCanvasSubject *subject)
+{
+ super::update(subject);
+ m_subject = subject;
+}
+
+void KisToolSelectContiguous::slotSetFuzziness(int fuzziness)
+{
+ m_fuzziness = fuzziness;
+}
+
+
+void KisToolSelectContiguous::slotSetAction(int action)
+{
+ if (action >= SELECTION_ADD && action <= SELECTION_SUBTRACT)
+ m_selectAction =(enumSelectionMode)action;
+// XXX: Fix cursors when then are done.
+// switch(m_selectAction) {
+// case SELECTION_ADD:
+// m_subject->setCanvasCursor(KisCursor::pickerPlusCursor());
+// break;
+// case SELECTION_SUBTRACT:
+// m_subject->setCanvasCursor(KisCursor::pickerMinusCursor());
+// };
+}
+
+
+TQWidget* KisToolSelectContiguous::createOptionWidget(TQWidget* tqparent)
+{
+ m_optWidget = new KisSelectionOptions(tqparent, m_subject);
+ Q_CHECK_PTR(m_optWidget);
+ m_optWidget->setCaption(i18n("Contiguous Area Selection"));
+
+ TQVBoxLayout * l = dynamic_cast<TQVBoxLayout*>(m_optWidget->tqlayout());
+ l->setSpacing( 6 );
+
+ connect (m_optWidget, TQT_SIGNAL(actionChanged(int)), this, TQT_SLOT(slotSetAction(int)));
+
+ TQHBoxLayout * hbox = new TQHBoxLayout(l);
+ Q_CHECK_PTR(hbox);
+
+ TQLabel * lbl = new TQLabel(i18n("Fuzziness: "), m_optWidget);
+ hbox->addWidget(lbl);
+
+ KIntNumInput * input = new KIntNumInput(m_optWidget, "fuzziness");
+ Q_CHECK_PTR(input);
+
+ input->setRange(0, 200, 10, true);
+ input->setValue(20);
+ hbox->addWidget(input);
+ connect(input, TQT_SIGNAL(valueChanged(int)), this, TQT_SLOT(slotSetFuzziness(int)));
+
+ TQCheckBox* samplemerged = new TQCheckBox(i18n("Sample merged"), m_optWidget);
+ l->addWidget( samplemerged );
+ samplemerged->setChecked(m_sampleMerged);
+ connect(samplemerged, TQT_SIGNAL(stateChanged(int)),
+ this, TQT_SLOT(slotSetSampleMerged(int)));
+
+ l->addItem(new TQSpacerItem(1, 1, TQSizePolicy::Fixed, TQSizePolicy::Expanding));
+
+ return m_optWidget;
+}
+
+TQWidget* KisToolSelectContiguous::optionWidget()
+{
+ return m_optWidget;
+}
+
+void KisToolSelectContiguous::slotSetSampleMerged(int state)
+{
+ if (state == TQButton::NoChange)
+ return;
+ m_sampleMerged = (state == TQButton::On);
+}
+
+#include "kis_tool_select_contiguous.moc"
diff --git a/chalk/plugins/tools/selectiontools/kis_tool_select_contiguous.h b/chalk/plugins/tools/selectiontools/kis_tool_select_contiguous.h
new file mode 100644
index 00000000..e4beb6b7
--- /dev/null
+++ b/chalk/plugins/tools/selectiontools/kis_tool_select_contiguous.h
@@ -0,0 +1,95 @@
+/*
+ * kis_tool_select_contiguous.h - part of KImageShop^WKrayon^Chalk
+ *
+ * Copyright (c) 1999 Michael Koch <koch@kde.org>
+ * Copyright (c) 2002 Patrick Julien <freak@codepimps.org>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+
+#ifndef __KIS_TOOL_SELECT_CONTIGUOUS_H__
+#define __KIS_TOOL_SELECT_CONTIGUOUS_H__
+
+#include <kis_tool.h>
+#include <kis_tool_non_paint.h>
+#include <kis_tool_factory.h>
+#include <kis_selection.h>
+
+class KisCanvasSubject;
+class TQWidget;
+class TQVBoxLayout;
+class TQCheckBox;
+class KisSelectionOptions;
+
+/**
+ * The 'magic wand' selection tool -- in fact just
+ * a floodfill that only creates a selection.
+ */
+class KisToolSelectContiguous : public KisToolNonPaint {
+
+ typedef KisToolNonPaint super;
+ Q_OBJECT
+ TQ_OBJECT
+
+public:
+ KisToolSelectContiguous();
+ virtual ~KisToolSelectContiguous();
+
+public:
+ virtual void update(KisCanvasSubject *subject);
+
+ virtual void setup(KActionCollection *collection);
+ virtual TQ_UINT32 priority() { return 7; }
+ virtual enumToolType toolType() { return TOOL_SELECT; };
+
+ virtual TQWidget* createOptionWidget(TQWidget* tqparent);
+ virtual TQWidget* optionWidget();
+
+ virtual void buttonPress(KisButtonPressEvent *event);
+
+public slots:
+ virtual void slotSetFuzziness(int);
+ virtual void slotSetAction(int);
+ virtual void slotSetSampleMerged(int);
+ virtual void activate();
+
+
+private:
+ KisCanvasSubject *m_subject;
+ KisSelectionOptions * m_optWidget;
+
+ int m_fuzziness;
+ enumSelectionMode m_selectAction;
+ bool m_sampleMerged;
+};
+
+class KisToolSelectContiguousFactory : public KisToolFactory {
+ typedef KisToolFactory super;
+public:
+ KisToolSelectContiguousFactory() : super() {};
+ virtual ~KisToolSelectContiguousFactory(){};
+
+ virtual KisTool * createTool(KActionCollection * ac) {
+ KisTool * t = new KisToolSelectContiguous();
+ Q_CHECK_PTR(t);
+ t->setup(ac);
+ return t;
+ }
+ virtual KisID id() { return KisID("contiguousselect", i18n("Contiguous Select Tool")); }
+};
+
+
+#endif //__KIS_TOOL_SELECT_CONTIGUOUS_H__
+
diff --git a/chalk/plugins/tools/selectiontools/kis_tool_select_elliptical.cc b/chalk/plugins/tools/selectiontools/kis_tool_select_elliptical.cc
new file mode 100644
index 00000000..efdae2f3
--- /dev/null
+++ b/chalk/plugins/tools/selectiontools/kis_tool_select_elliptical.cc
@@ -0,0 +1,321 @@
+/*
+ * kis_tool_select_elliptical.cc -- part of Chalk
+ *
+ * Copyright (c) 2004 Boudewijn Rempt (boud@valdyas.org)
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+
+#include <tqapplication.h>
+#include <tqpainter.h>
+#include <tqpen.h>
+#include <tqlayout.h>
+
+#include <kdebug.h>
+#include <kaction.h>
+#include <kcommand.h>
+#include <klocale.h>
+
+#include "kis_autobrush_resource.h"
+#include "kis_canvas_controller.h"
+#include "kis_canvas_subject.h"
+#include "kis_cursor.h"
+#include "kis_image.h"
+#include "kis_painter.h"
+#include "kis_tool_select_elliptical.h"
+#include "kis_layer.h"
+#include "kis_undo_adapter.h"
+#include "kis_button_press_event.h"
+#include "kis_button_release_event.h"
+#include "kis_move_event.h"
+#include "kis_selection.h"
+#include "kis_selection_options.h"
+#include "kis_selected_transaction.h"
+#include "kis_canvas.h"
+#include "kis_canvas_painter.h"
+
+KisToolSelectElliptical::KisToolSelectElliptical()
+ : super(i18n("Elliptical Select"))
+{
+ setName("tool_select_elliptical");
+ setCursor(KisCursor::load("tool_elliptical_selection_cursor.png", 6, 6));
+
+ m_subject = 0;
+ m_selecting = false;
+ m_centerPos = KisPoint(0, 0);
+ m_startPos = KisPoint(0, 0);
+ m_endPos = KisPoint(0, 0);
+ m_optWidget = 0;
+ m_selectAction = SELECTION_ADD;
+}
+
+KisToolSelectElliptical::~KisToolSelectElliptical()
+{
+}
+
+void KisToolSelectElliptical::activate()
+{
+ super::activate();
+
+ if (!m_optWidget)
+ return;
+
+ m_optWidget->slotActivated();
+}
+
+void KisToolSelectElliptical::update(KisCanvasSubject *subject)
+{
+ m_subject = subject;
+ super::update(m_subject);
+}
+
+void KisToolSelectElliptical::paint(KisCanvasPainter& gc)
+{
+ if (m_selecting)
+ paintOutline(gc, TQRect());
+}
+
+void KisToolSelectElliptical::paint(KisCanvasPainter& gc, const TQRect& rc)
+{
+ if (m_selecting)
+ paintOutline(gc, rc);
+}
+
+void KisToolSelectElliptical::clearSelection()
+{
+ if (m_subject) {
+ KisCanvasController *controller = m_subject->canvasController();
+ KisImageSP img = m_subject->currentImg();
+
+ Q_ASSERT(controller);
+
+// if (img && img->floatingSelection().data() != 0) {
+// img->unsetFloatingSelection();
+// controller->canvas()->update();
+// }
+
+ m_startPos = KisPoint(0, 0);
+ m_endPos = KisPoint(0, 0);
+ m_selecting = false;
+ }
+}
+
+void KisToolSelectElliptical::buttonPress(KisButtonPressEvent *e)
+{
+ if (m_subject) {
+ KisImageSP img = m_subject->currentImg();
+
+ if (img && img->activeDevice() && e->button() == Qt::LeftButton) {
+ clearSelection();
+ m_startPos = m_endPos = m_centerPos = e->pos();
+ m_selecting = true;
+ paintOutline();
+ }
+ }
+}
+
+void KisToolSelectElliptical::move(KisMoveEvent *e)
+{
+ if (m_subject && m_selecting) {
+ paintOutline();
+ // move (alt) or resize ellipse
+ if (e->state() & TQt::AltButton) {
+ KisPoint trans = e->pos() - m_endPos;
+ m_startPos += trans;
+ m_endPos += trans;
+ } else {
+ KisPoint diag = e->pos() - (e->state() & TQt::ControlButton
+ ? m_centerPos : m_startPos);
+ // circle?
+ if (e->state() & TQt::ShiftButton) {
+ double size = TQMAX(fabs(diag.x()), fabs(diag.y()));
+ double w = diag.x() < 0 ? -size : size;
+ double h = diag.y() < 0 ? -size : size;
+ diag = KisPoint(w, h);
+ }
+
+ // resize around center point?
+ if (e->state() & TQt::ControlButton) {
+ m_startPos = m_centerPos - diag;
+ m_endPos = m_centerPos + diag;
+ } else {
+ m_endPos = m_startPos + diag;
+ }
+ }
+ paintOutline();
+ m_centerPos = KisPoint((m_startPos.x() + m_endPos.x()) / 2,
+ (m_startPos.y() + m_endPos.y()) / 2);
+ }
+}
+
+void KisToolSelectElliptical::buttonRelease(KisButtonReleaseEvent *e)
+{
+ if (m_subject && m_selecting && e->button() == Qt::LeftButton) {
+
+ paintOutline();
+
+ if (m_startPos == m_endPos) {
+ clearSelection();
+ } else {
+ TQApplication::setOverrideCursor(KisCursor::waitCursor());
+ KisImageSP img = m_subject->currentImg();
+
+ if (!img)
+ return;
+
+ if (m_endPos.y() < 0)
+ m_endPos.setY(0);
+
+ if (m_endPos.y() > img->height())
+ m_endPos.setY(img->height());
+
+ if (m_endPos.x() < 0)
+ m_endPos.setX(0);
+
+ if (m_endPos.x() > img->width())
+ m_endPos.setX(img->width());
+
+ if (img && img->activeDevice()) {
+ KisPaintDeviceSP dev = img->activeDevice();
+ KisSelectedTransaction *t = 0;
+ if (img->undo()) t = new KisSelectedTransaction(i18n("Elliptical Selection"), dev);
+
+ bool hasSelection = dev->hasSelection();
+ if(! hasSelection)
+ {
+ dev->selection()->clear();
+ if(m_selectAction==SELECTION_SUBTRACT)
+ dev->selection()->invert();
+ }
+ TQRect rc( m_startPos.floorTQPoint(), m_endPos.floorTQPoint());
+ rc = rc.normalize();
+
+ KisSelectionSP tmpSel = new KisSelection(dev);
+ KisAutobrushCircleShape tqshape(rc.width(),rc.height(), 1, 1);
+ TQ_UINT8 value;
+ for (int y = 0; y <= rc.height(); y++)
+ for (int x = 0; x <= rc.width(); x++)
+ {
+ value = MAX_SELECTED - tqshape.valueAt(x,y);
+ tmpSel->setSelected( x+rc.x(), y+rc.y(), value);
+ }
+ switch(m_selectAction)
+ {
+ case SELECTION_ADD:
+ dev->addSelection(tmpSel);
+ break;
+ case SELECTION_SUBTRACT:
+ dev->subtractSelection(tmpSel);
+ break;
+ }
+
+ if(hasSelection) {
+ dev->setDirty(rc);
+ dev->emitSelectionChanged(rc);
+ } else {
+ dev->setDirty();
+ dev->emitSelectionChanged();
+ }
+
+ if (img->undo())
+ img->undoAdapter()->addCommand(t);
+
+ TQApplication::restoreOverrideCursor();
+ }
+ }
+ m_selecting = false;
+ }
+}
+
+void KisToolSelectElliptical::paintOutline()
+{
+ if (m_subject) {
+ KisCanvasController *controller = m_subject->canvasController();
+ KisCanvas *canvas = controller->kiscanvas();
+ KisCanvasPainter gc(canvas);
+ TQRect rc;
+
+ paintOutline(gc, rc);
+ }
+}
+
+void KisToolSelectElliptical::paintOutline(KisCanvasPainter& gc, const TQRect&)
+{
+ if (m_subject) {
+ KisCanvasController *controller = m_subject->canvasController();
+ RasterOp op = gc.rasterOp();
+ TQPen old = gc.pen();
+ TQPen pen(TQt::DotLine);
+ TQPoint start;
+ TQPoint end;
+
+ Q_ASSERT(controller);
+ start = controller->windowToView(m_startPos).floorTQPoint();
+ end = controller->windowToView(m_endPos).floorTQPoint();
+
+ gc.setRasterOp(TQt::NotROP);
+ gc.setPen(pen);
+ gc.drawEllipse(TQRect(start, end));
+ gc.setRasterOp(op);
+ gc.setPen(old);
+ }
+}
+
+void KisToolSelectElliptical::slotSetAction(int action) {
+ if (action >= SELECTION_ADD && action <= SELECTION_SUBTRACT)
+ m_selectAction =(enumSelectionMode)action;
+}
+
+void KisToolSelectElliptical::setup(KActionCollection *collection)
+{
+ m_action = static_cast<KRadioAction *>(collection->action(name()));
+
+ if (m_action == 0) {
+ m_action = new KRadioAction(i18n("&Elliptical Selection"),
+ "tool_elliptical_selection" ,
+ TQt::Key_J,
+ this,
+ TQT_SLOT(activate()),
+ collection,
+ name());
+ Q_CHECK_PTR(m_action);
+ m_action->setToolTip(i18n("Select an elliptical area"));
+ m_action->setExclusiveGroup("tools");
+ m_ownAction = true;
+ }
+}
+
+TQWidget* KisToolSelectElliptical::createOptionWidget(TQWidget* tqparent)
+{
+ m_optWidget = new KisSelectionOptions(tqparent, m_subject);
+ Q_CHECK_PTR(m_optWidget);
+ m_optWidget->setCaption(i18n("Elliptical Selection"));
+
+ connect (m_optWidget, TQT_SIGNAL(actionChanged(int)), this, TQT_SLOT(slotSetAction(int)));
+
+ TQVBoxLayout * l = dynamic_cast<TQVBoxLayout*>(m_optWidget->tqlayout());
+ l->addItem(new TQSpacerItem(1, 1, TQSizePolicy::Fixed, TQSizePolicy::Expanding));
+
+ return m_optWidget;
+}
+
+TQWidget* KisToolSelectElliptical::optionWidget()
+{
+ return m_optWidget;
+}
+
+
+
+#include "kis_tool_select_elliptical.moc"
diff --git a/chalk/plugins/tools/selectiontools/kis_tool_select_elliptical.h b/chalk/plugins/tools/selectiontools/kis_tool_select_elliptical.h
new file mode 100644
index 00000000..f0d1a039
--- /dev/null
+++ b/chalk/plugins/tools/selectiontools/kis_tool_select_elliptical.h
@@ -0,0 +1,99 @@
+/*
+ * kis_tool_select_elliptical.h - part of Krayon^WChalk
+ *
+ * Copyright (c) 2000 John Califf <jcaliff@compuzone.net>
+ * Copyright (c) 2002 Patrick Julien <freak@codepimps.org>
+ * Copyright (c) 2004 Boudewijn Rempt <boud@valdyas.org>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+
+#ifndef __KIS_TOOL_SELECT_ELLIPTICAL_H__
+#define __KIS_TOOL_SELECT_ELLIPTICAL_H__
+
+#include <tqpoint.h>
+
+#include "kis_point.h"
+#include "kis_selection.h"
+#include "kis_tool_factory.h"
+#include "kis_tool_non_paint.h"
+
+class KisSelectionOptions;
+
+class KisToolSelectElliptical : public KisToolNonPaint {
+
+ typedef KisToolNonPaint super;
+ Q_OBJECT
+ TQ_OBJECT
+
+public:
+ KisToolSelectElliptical();
+ virtual ~KisToolSelectElliptical();
+
+ virtual void update(KisCanvasSubject *subject);
+
+ virtual void setup(KActionCollection *collection);
+ virtual TQ_UINT32 priority() { return 4; }
+ virtual TQWidget * createOptionWidget(TQWidget* tqparent);
+ virtual TQWidget* optionWidget();
+ virtual enumToolType toolType() { return TOOL_SELECT; }
+
+ virtual void paint(KisCanvasPainter& gc);
+ virtual void paint(KisCanvasPainter& gc, const TQRect& rc);
+ virtual void buttonPress(KisButtonPressEvent *e);
+ virtual void move(KisMoveEvent *e);
+ virtual void buttonRelease(KisButtonReleaseEvent *e);
+
+public slots:
+ virtual void slotSetAction(int);
+ virtual void activate();
+
+
+private:
+ void clearSelection();
+ void paintOutline();
+ void paintOutline(KisCanvasPainter& gc, const TQRect& rc);
+
+private:
+ KisCanvasSubject *m_subject;
+ KisPoint m_centerPos;
+ KisPoint m_startPos;
+ KisPoint m_endPos;
+ bool m_selecting;
+ KisSelectionOptions * m_optWidget;
+ enumSelectionMode m_selectAction;
+};
+
+class KisToolSelectEllipticalFactory : public KisToolFactory {
+ typedef KisToolFactory super;
+public:
+ KisToolSelectEllipticalFactory() : super() {};
+ virtual ~KisToolSelectEllipticalFactory(){};
+
+ virtual KisTool * createTool(KActionCollection * ac) {
+ KisTool * t = new KisToolSelectElliptical();
+ Q_CHECK_PTR(t);
+ t->setup(ac);
+ return t;
+ }
+ virtual KisID id() { return KisID("ellipticalselect", i18n("Elliptical Select Tool")); }
+};
+
+
+
+
+
+#endif //__KIS_TOOL_SELECT_ELLIPTICAL_H__
+
diff --git a/chalk/plugins/tools/selectiontools/kis_tool_select_eraser.cc b/chalk/plugins/tools/selectiontools/kis_tool_select_eraser.cc
new file mode 100644
index 00000000..58a7778c
--- /dev/null
+++ b/chalk/plugins/tools/selectiontools/kis_tool_select_eraser.cc
@@ -0,0 +1,156 @@
+/*
+ * kis_tool_select_brush.cc - part of Chalk
+ *
+ * Copyright (c) 2004 Boudewijn Rempt <boud@valdyas.org>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+
+#include <tqevent.h>
+#include <tqlabel.h>
+#include <tqlayout.h>
+#include <tqwidget.h>
+
+#include <kdebug.h>
+#include <kaction.h>
+#include <kcommand.h>
+#include <klocale.h>
+
+#include "kis_brush.h"
+#include "kis_layer.h"
+#include "kis_paintop.h"
+#include "kis_paintop_registry.h"
+#include "kis_button_press_event.h"
+#include "kis_button_release_event.h"
+#include "kis_cmb_composite.h"
+#include "kis_cursor.h"
+#include "kis_doc.h"
+#include "kis_move_event.h"
+#include "kis_painter.h"
+#include "kis_selection.h"
+#include "kis_tool_select_eraser.h"
+#include "kis_types.h"
+#include "kis_view.h"
+#include "kis_selection_options.h"
+
+KisToolSelectEraser::KisToolSelectEraser()
+ : super(i18n("SelectEraser"))
+{
+ setName("tool_select_eraser");
+ setCursor(KisCursor::load("tool_eraser_selection_cursor.png", 5, 5));
+ m_optWidget = 0;
+ m_paintOnSelection = true;
+}
+
+KisToolSelectEraser::~KisToolSelectEraser()
+{
+}
+
+void KisToolSelectEraser::activate()
+{
+ super::activate();
+
+ if (!m_optWidget)
+ return;
+
+ m_optWidget->slotActivated();
+}
+
+void KisToolSelectEraser::initPaint(KisEvent */*e*/)
+{
+ if (!m_currentImage || !m_currentImage->activeDevice()) return;
+
+ m_mode = PAINT;
+ m_dragDist = 0;
+
+ // Create painter
+ KisPaintDeviceSP dev = m_currentImage->activeDevice();
+
+ if (dev == 0) return;
+
+ if (m_painter)
+ delete m_painter;
+ if(! dev->hasSelection())
+ {
+ dev->selection()->clear();
+ dev->emitSelectionChanged();
+ }
+ KisSelectionSP selection = dev->selection();
+
+ m_target = selection;
+ m_painter = new KisPainter(selection.data());
+ Q_CHECK_PTR(m_painter);
+ m_painter->beginTransaction(i18n("Selection Eraser"));
+ m_painter->setPaintColor(KisColor(TQt::white, selection->colorSpace()));
+ m_painter->setBrush(m_subject->currentBrush());
+ m_painter->setOpacity(OPACITY_OPAQUE);
+ m_painter->setCompositeOp(COMPOSITE_ERASE);
+ KisPaintOp * op = KisPaintOpRegistry::instance()->paintOp("eraser", 0, painter());
+ painter()->setPaintOp(op); // And now the painter owns the op and will destroy it.
+
+ // Set the cursor -- ideally. this should be a tqmask created from the brush,
+ // now that X11 can handle colored cursors.
+#if 0
+ // Setting cursors has no effect until the tool is selected again; this
+ // should be fixed.
+ setCursor(KisCursor::eraserCursor());
+#endif
+}
+
+void KisToolSelectEraser::endPaint() {
+ super::endPaint();
+ if (m_currentImage && m_currentImage->activeDevice())
+ m_currentImage->activeDevice()->emitSelectionChanged();
+}
+void KisToolSelectEraser::setup(KActionCollection *collection)
+{
+ m_action = static_cast<KRadioAction *>(collection->action(name()));
+
+ if (m_action == 0) {
+ m_action = new KRadioAction(i18n("Selection &Eraser"),
+ "tool_eraser_selection", "Ctrl+Shift+E", this,
+ TQT_SLOT(activate()), collection,
+ name());
+ Q_CHECK_PTR(m_action);
+ m_action->setToolTip(i18n("Erase parts of a selection"));
+ m_action->setExclusiveGroup("tools");
+ m_ownAction = true;
+ }
+}
+
+TQWidget* KisToolSelectEraser::createOptionWidget(TQWidget* tqparent)
+{
+ Q_UNUSED(tqparent);
+ // Commented out due to the fact that this doesn't actually work if you change the action
+#if 0
+ m_optWidget = new KisSelectionOptions(tqparent, m_subject);
+ Q_CHECK_PTR(m_optWidget);
+ m_optWidget->setCaption(i18n("Selection Eraser"));
+
+ TQVBoxLayout * l = dynamic_cast<TQVBoxLayout*>(m_optWidget->tqlayout());
+ l->addItem(new TQSpacerItem(1, 1, TQSizePolicy::Fixed, TQSizePolicy::Expanding));
+
+ return m_optWidget;
+#endif
+ return 0;
+}
+
+TQWidget* KisToolSelectEraser::optionWidget()
+{
+ return m_optWidget;
+}
+
+#include "kis_tool_select_eraser.moc"
+
diff --git a/chalk/plugins/tools/selectiontools/kis_tool_select_eraser.h b/chalk/plugins/tools/selectiontools/kis_tool_select_eraser.h
new file mode 100644
index 00000000..85bd5509
--- /dev/null
+++ b/chalk/plugins/tools/selectiontools/kis_tool_select_eraser.h
@@ -0,0 +1,82 @@
+/*
+ * kis_tool_select_eraser.h - part of Chalk
+ *
+ * Copyright (c) 2003-2004 Boudewijn Rempt <boud@valdyas.org>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+
+#ifndef KIS_TOOL_SELECT_ERASER_H_
+#define KIS_TOOL_SELECT_ERASER_H_
+
+#include <kis_tool_factory.h>
+#include <kis_tool_freehand.h>
+
+class KisPoint;
+class KisSelectionOptions;
+
+
+/**
+ * The selection eraser makes a selection smaller by painting with the
+ * current eraser tqshape. Not sure what kind of an icon could represent
+ * this... Depends a bit on how we're going to visualize selections.
+ */
+class KisToolSelectEraser : public KisToolFreehand {
+ Q_OBJECT
+ TQ_OBJECT
+ typedef KisToolFreehand super;
+
+public:
+ KisToolSelectEraser();
+ virtual ~KisToolSelectEraser();
+
+ virtual void setup(KActionCollection *collection);
+ virtual TQ_UINT32 priority() { return 2; }
+ virtual enumToolType toolType() { return TOOL_SELECT; }
+ virtual TQWidget* createOptionWidget(TQWidget* tqparent);
+ virtual TQWidget* optionWidget();
+
+public slots:
+ virtual void activate();
+
+protected:
+
+ virtual void initPaint(KisEvent *e);
+ virtual void endPaint();
+private:
+ KisSelectionOptions * m_optWidget;
+
+};
+
+
+class KisToolSelectEraserFactory : public KisToolFactory {
+ typedef KisToolFactory super;
+public:
+ KisToolSelectEraserFactory() : super() {};
+ virtual ~KisToolSelectEraserFactory(){};
+
+ virtual KisTool * createTool(KActionCollection * ac) {
+ KisTool * t = new KisToolSelectEraser();
+ Q_CHECK_PTR(t);
+ t->setup(ac);
+ return t;
+ }
+ virtual KisID id() { return KisID("eraserselect", i18n("Eraser Select Tool")); }
+};
+
+
+
+#endif // KIS_TOOL_SELECT_ERASER_H_
+
diff --git a/chalk/plugins/tools/selectiontools/kis_tool_select_outline.cc b/chalk/plugins/tools/selectiontools/kis_tool_select_outline.cc
new file mode 100644
index 00000000..b81762fb
--- /dev/null
+++ b/chalk/plugins/tools/selectiontools/kis_tool_select_outline.cc
@@ -0,0 +1,295 @@
+/*
+ * kis_tool_select_freehand.h - part of Krayon^WChalk
+ *
+ * Copyright (c) 2000 John Califf <jcaliff@compuzone.net>
+ * Copyright (c) 2002 Patrick Julien <freak@codepimps.org>
+ * Copyright (c) 2004 Boudewijn Rempt <boud@valdyas.org>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+#include <tqapplication.h>
+#include <tqpainter.h>
+#include <tqregion.h>
+#include <tqwidget.h>
+#include <tqlayout.h>
+
+#include <kaction.h>
+#include <kdebug.h>
+#include <kcommand.h>
+#include <klocale.h>
+
+#include <kis_layer.h>
+#include <kis_selection_options.h>
+#include <kis_canvas_controller.h>
+#include <kis_canvas_subject.h>
+#include <kis_cursor.h>
+#include <kis_image.h>
+#include <kis_tool_select_outline.h>
+#include <kis_vec.h>
+#include <kis_undo_adapter.h>
+#include <kis_button_press_event.h>
+#include <kis_button_release_event.h>
+#include <kis_move_event.h>
+#include "kis_selected_transaction.h"
+#include "kis_painter.h"
+#include "kis_paintop_registry.h"
+#include "kis_canvas.h"
+#include "kis_canvas_painter.h"
+
+KisToolSelectOutline::KisToolSelectOutline()
+ : super(i18n("Select Outline"))
+{
+ setName("tool_select_outline");
+ setCursor(KisCursor::load("tool_outline_selection_cursor.png", 5, 5));
+
+ m_subject = 0;
+ m_dragging = false;
+ m_optWidget = 0;
+ m_selectAction = SELECTION_ADD;
+}
+
+KisToolSelectOutline::~KisToolSelectOutline()
+{
+}
+
+void KisToolSelectOutline::activate()
+{
+ super::activate();
+
+ if (!m_optWidget)
+ return;
+
+ m_optWidget->slotActivated();
+}
+
+void KisToolSelectOutline::update (KisCanvasSubject *subject)
+{
+ m_subject = subject;
+ super::update(m_subject);
+}
+
+void KisToolSelectOutline::buttonPress(KisButtonPressEvent *event)
+{
+ if (event->button() == Qt::LeftButton) {
+ m_dragging = true;
+
+ m_dragStart = event->pos();
+ m_dragEnd = event->pos();
+ m_points.clear();
+ m_points.append(m_dragStart);
+ }
+}
+
+void KisToolSelectOutline::move(KisMoveEvent *event)
+{
+ if (m_dragging) {
+ m_dragStart = m_dragEnd;
+ m_dragEnd = event->pos();
+ m_points.append (m_dragEnd);
+ // draw new lines on canvas
+ draw();
+ }
+}
+
+void KisToolSelectOutline::buttonRelease(KisButtonReleaseEvent *event)
+{
+ if (!m_subject)
+ return;
+
+ if (m_dragging && event->button() == Qt::LeftButton) {
+ m_dragging = false;
+ deactivate();
+
+ KisImageSP img = m_subject->currentImg();
+
+ if (img && img->activeDevice()) {
+ TQApplication::setOverrideCursor(KisCursor::waitCursor());
+ KisPaintDeviceSP dev = img->activeDevice();
+ bool hasSelection = dev->hasSelection();
+ KisSelectedTransaction *t = 0;
+ if (img->undo()) t = new KisSelectedTransaction(i18n("Outline Selection"), dev);
+ KisSelectionSP selection = dev->selection();
+
+ if (!hasSelection) {
+ selection->clear();
+ }
+
+ KisPainter painter(selection.data());
+
+ painter.setPaintColor(KisColor(TQt::black, selection->colorSpace()));
+ painter.setFillStyle(KisPainter::FillStyleForegroundColor);
+ painter.setStrokeStyle(KisPainter::StrokeStyleNone);
+ painter.setBrush(m_subject->currentBrush());
+ painter.setOpacity(OPACITY_OPAQUE);
+ KisPaintOp * op = KisPaintOpRegistry::instance()->paintOp("paintbrush", 0, &painter);
+ painter.setPaintOp(op); // And now the painter owns the op and will destroy it.
+
+ switch (m_selectAction) {
+ case SELECTION_ADD:
+ painter.setCompositeOp(COMPOSITE_OVER);
+ break;
+ case SELECTION_SUBTRACT:
+ painter.setCompositeOp(COMPOSITE_SUBTRACT);
+ break;
+ default:
+ break;
+ }
+
+ painter.paintPolygon(m_points);
+
+
+ if(hasSelection) {
+ TQRect dirty(painter.dirtyRect());
+ dev->setDirty(dirty);
+ dev->emitSelectionChanged(dirty);
+ } else {
+ dev->setDirty();
+ dev->emitSelectionChanged();
+ }
+
+ if (img->undo())
+ img->undoAdapter()->addCommand(t);
+
+ TQApplication::restoreOverrideCursor();
+ }
+
+ m_points.clear();
+ }
+}
+
+void KisToolSelectOutline::paint(KisCanvasPainter& gc)
+{
+ draw(gc);
+}
+
+void KisToolSelectOutline::paint(KisCanvasPainter& gc, const TQRect&)
+{
+ draw(gc);
+}
+
+void KisToolSelectOutline::draw()
+{
+ if (m_subject) {
+ KisCanvasController *controller = m_subject->canvasController();
+ KisCanvas *canvas = controller->kiscanvas();
+ KisCanvasPainter gc(canvas);
+
+ draw(gc);
+ }
+}
+
+void KisToolSelectOutline::draw(KisCanvasPainter& gc)
+{
+ if (!m_subject)
+ return;
+
+ if (m_dragging && !m_points.empty()) {
+ TQPen pen(TQt::white, 0, TQt::DotLine);
+
+ gc.setPen(pen);
+ gc.setRasterOp(TQt::XorROP);
+
+ KisCanvasController *controller = m_subject->canvasController();
+ KisPoint start, end;
+ TQPoint startPos;
+ TQPoint endPos;
+
+ startPos = controller->windowToView(m_dragStart.floorTQPoint());
+ endPos = controller->windowToView(m_dragEnd.floorTQPoint());
+ gc.drawLine(startPos, endPos);
+ }
+}
+
+void KisToolSelectOutline::deactivate()
+{
+ if (m_subject) {
+ KisCanvasController *controller = m_subject->canvasController();
+ KisCanvas *canvas = controller->kiscanvas();
+ KisCanvasPainter gc(canvas);
+
+ TQPen pen(TQt::white, 0, TQt::DotLine);
+
+ gc.setPen(pen);
+ gc.setRasterOp(TQt::XorROP);
+
+ KisPoint start, end;
+ TQPoint startPos;
+ TQPoint endPos;
+
+ for (KisPointVector::iterator it = m_points.begin(); it != m_points.end(); ++it) {
+
+ if (it == m_points.begin())
+ {
+ start = (*it);
+ } else {
+ end = (*it);
+
+ startPos = controller->windowToView(start.floorTQPoint());
+ endPos = controller->windowToView(end.floorTQPoint());
+
+ gc.drawLine(startPos, endPos);
+
+ start = end;
+ }
+ }
+ }
+}
+
+void KisToolSelectOutline::setup(KActionCollection *collection)
+{
+ m_action = static_cast<KRadioAction *>(collection->action(name()));
+
+ if (m_action == 0) {
+ m_action = new KRadioAction(i18n("&Outline Selection"),
+ "tool_outline_selection",
+ 0,
+ this,
+ TQT_SLOT(activate()),
+ collection,
+ name());
+ Q_CHECK_PTR(m_action);
+ m_action->setExclusiveGroup("tools");
+ m_action->setToolTip(i18n("Select an outline"));
+ m_ownAction = true;
+ }
+}
+
+
+TQWidget* KisToolSelectOutline::createOptionWidget(TQWidget* tqparent)
+{
+ m_optWidget = new KisSelectionOptions(tqparent, m_subject);
+ Q_CHECK_PTR(m_optWidget);
+ m_optWidget->setCaption(i18n("Outline Selection"));
+
+ connect (m_optWidget, TQT_SIGNAL(actionChanged(int)), this, TQT_SLOT(slotSetAction(int)));
+
+ TQVBoxLayout * l = dynamic_cast<TQVBoxLayout*>(m_optWidget->tqlayout());
+ l->addItem(new TQSpacerItem(1, 1, TQSizePolicy::Fixed, TQSizePolicy::Expanding));
+
+ return m_optWidget;
+}
+
+TQWidget* KisToolSelectOutline::optionWidget()
+{
+ return m_optWidget;
+}
+
+void KisToolSelectOutline::slotSetAction(int action) {
+ if (action >= SELECTION_ADD && action <= SELECTION_SUBTRACT)
+ m_selectAction =(enumSelectionMode)action;
+}
+
+#include "kis_tool_select_outline.moc"
+
diff --git a/chalk/plugins/tools/selectiontools/kis_tool_select_outline.h b/chalk/plugins/tools/selectiontools/kis_tool_select_outline.h
new file mode 100644
index 00000000..74ecab78
--- /dev/null
+++ b/chalk/plugins/tools/selectiontools/kis_tool_select_outline.h
@@ -0,0 +1,101 @@
+/*
+ * kis_tool_select_freehand.h - part of Krayon^WChalk
+ *
+ * Copyright (c) 2000 John Califf <jcaliff@compuzone.net>
+ * Copyright (c) 2002 Patrick Julien <freak@codepimps.org>
+ * Copyright (c) 2004 Boudewijn Rempt <boud@valdyas.org>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+
+#ifndef __selecttoolfreehand_h__
+#define __selecttoolfreehand_h__
+
+#include <tqpoint.h>
+#include <tqpointarray.h>
+
+#include "kis_point.h"
+#include "kis_tool_non_paint.h"
+#include "kis_tool_factory.h"
+#include "kis_selection.h"
+
+class KisSelectionOptions;
+
+class KisToolSelectOutline : public KisToolNonPaint {
+
+ typedef KisToolNonPaint super;
+ Q_OBJECT
+ TQ_OBJECT
+public:
+ KisToolSelectOutline();
+ virtual ~KisToolSelectOutline();
+
+ virtual void update (KisCanvasSubject *subject);
+
+ virtual void setup(KActionCollection *collection);
+ virtual TQ_UINT32 priority() { return 6; }
+ virtual enumToolType toolType() { return TOOL_SELECT; }
+
+ virtual void buttonPress(KisButtonPressEvent *event);
+ virtual void move(KisMoveEvent *event);
+ virtual void buttonRelease(KisButtonReleaseEvent *event);
+
+ TQWidget* createOptionWidget(TQWidget* tqparent);
+ virtual TQWidget* optionWidget();
+
+public slots:
+ virtual void slotSetAction(int);
+ virtual void activate();
+ void deactivate();
+
+protected:
+ virtual void paint(KisCanvasPainter& gc);
+ virtual void paint(KisCanvasPainter& gc, const TQRect& rc);
+ void draw(KisCanvasPainter& gc);
+ void draw();
+
+
+protected:
+ KisPoint m_dragStart;
+ KisPoint m_dragEnd;
+
+ bool m_dragging;
+private:
+ typedef TQValueVector<KisPoint> KisPointVector;
+ KisCanvasSubject *m_subject;
+ KisPointVector m_points;
+ KisSelectionOptions * m_optWidget;
+ enumSelectionMode m_selectAction;
+};
+
+
+class KisToolSelectOutlineFactory : public KisToolFactory {
+ typedef KisToolFactory super;
+public:
+ KisToolSelectOutlineFactory() : super() {};
+ virtual ~KisToolSelectOutlineFactory(){};
+
+ virtual KisTool * createTool(KActionCollection * ac) {
+ KisTool * t = new KisToolSelectOutline();
+ Q_CHECK_PTR(t);
+ t->setup(ac);
+ return t;
+ }
+ virtual KisID id() { return KisID("selectoutline", i18n("Select Outline tool")); }
+};
+
+
+#endif //__selecttoolfreehand_h__
+
diff --git a/chalk/plugins/tools/selectiontools/kis_tool_select_polygonal.cc b/chalk/plugins/tools/selectiontools/kis_tool_select_polygonal.cc
new file mode 100644
index 00000000..7bac7cc3
--- /dev/null
+++ b/chalk/plugins/tools/selectiontools/kis_tool_select_polygonal.cc
@@ -0,0 +1,315 @@
+/*
+ * kis_tool_select_polygonal.h - part of Krayon^WChalk
+ *
+ * Copyright (c) 2000 John Califf <jcaliff@compuzone.net>
+ * Copyright (c) 2002 Patrick Julien <freak@codepimps.org>
+ * Copyright (c) 2004 Boudewijn Rempt <boud@valdyas.org>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+#include <tqapplication.h>
+#include <tqpainter.h>
+#include <tqregion.h>
+#include <tqwidget.h>
+#include <tqlayout.h>
+
+#include <kaction.h>
+#include <kdebug.h>
+#include <kcommand.h>
+#include <klocale.h>
+
+#include <kis_layer.h>
+#include <kis_selection_options.h>
+#include <kis_canvas_controller.h>
+#include <kis_canvas_subject.h>
+#include <kis_cursor.h>
+#include <kis_image.h>
+#include <kis_tool_select_polygonal.h>
+#include <kis_vec.h>
+#include <kis_undo_adapter.h>
+#include <kis_button_press_event.h>
+#include <kis_button_release_event.h>
+#include <kis_move_event.h>
+#include "kis_selected_transaction.h"
+#include "kis_painter.h"
+#include "kis_paintop_registry.h"
+#include "kis_canvas.h"
+#include "kis_canvas_painter.h"
+
+KisToolSelectPolygonal::KisToolSelectPolygonal()
+ : super(i18n("Select Polygonal"))
+{
+ setName("tool_select_polygonal");
+ setCursor(KisCursor::load("tool_polygonal_selection_cursor.png", 6, 6));
+
+ m_subject = 0;
+ m_dragging = false;
+ m_optWidget = 0;
+ m_selectAction = SELECTION_ADD;
+}
+
+KisToolSelectPolygonal::~KisToolSelectPolygonal()
+{
+}
+
+void KisToolSelectPolygonal::activate()
+{
+ m_points.clear();
+ super::activate();
+
+ if (!m_optWidget)
+ return;
+
+ m_optWidget->slotActivated();
+}
+
+void KisToolSelectPolygonal::deactivate()
+{
+ draw();
+ m_points.clear();
+ m_dragging = false;
+}
+
+
+void KisToolSelectPolygonal::update (KisCanvasSubject *subject)
+{
+ m_subject = subject;
+ super::update(m_subject);
+}
+
+void KisToolSelectPolygonal::buttonPress(KisButtonPressEvent *event)
+{
+ if (event->button() == Qt::LeftButton) {
+ m_dragging = true;
+
+ if (m_points.isEmpty())
+ {
+ m_dragStart = event->pos();
+ m_dragEnd = event->pos();
+ m_points.append(m_dragStart);
+ } else {
+ m_dragStart = m_dragEnd;
+ m_dragEnd = event->pos();
+ draw();
+ }
+ } else if (event->button() == Qt::LeftButton && event->state() == ShiftButton) {
+ finish();
+ }
+}
+
+
+void KisToolSelectPolygonal::doubleClick( KisDoubleClickEvent * )
+{
+ finish();
+}
+
+void KisToolSelectPolygonal::finish()
+{
+ // erase old lines on canvas
+ draw();
+ m_dragging = false;
+
+ KisImageSP img = m_subject->currentImg();
+
+ if (img && img->activeDevice()) {
+ TQApplication::setOverrideCursor(KisCursor::waitCursor());
+ KisPaintDeviceSP dev = img->activeDevice();
+
+ bool hasSelection = dev->hasSelection();
+ KisSelectedTransaction *t = 0;
+ if (img->undo()) t = new KisSelectedTransaction(i18n("Polygonal Selection"), dev);
+ KisSelectionSP selection = dev->selection();
+
+ if (!hasSelection)
+ {
+ selection->clear();
+ }
+
+ KisPainter painter(selection.data());
+ painter.setPaintColor(KisColor(TQt::black, selection->colorSpace()));
+ painter.setFillStyle(KisPainter::FillStyleForegroundColor);
+ painter.setStrokeStyle(KisPainter::StrokeStyleNone);
+ painter.setBrush(m_subject->currentBrush());
+ painter.setOpacity(OPACITY_OPAQUE);
+ KisPaintOp * op = KisPaintOpRegistry::instance()->paintOp("paintbrush", 0, &painter);
+ painter.setPaintOp(op); // And now the painter owns the op and will destroy it.
+
+ switch(m_selectAction)
+ {
+ case SELECTION_ADD:
+ painter.setCompositeOp(COMPOSITE_OVER);
+ break;
+ case SELECTION_SUBTRACT:
+ painter.setCompositeOp(COMPOSITE_SUBTRACT);
+ break;
+ default:
+ break;
+ }
+
+ painter.paintPolygon(m_points);
+
+ if(hasSelection) {
+ TQRect rect(painter.dirtyRect());
+ dev->setDirty(rect);
+ dev->emitSelectionChanged(rect);
+ } else {
+ dev->setDirty();
+ dev->emitSelectionChanged();
+ }
+
+ if (img->undo()) img->undoAdapter()->addCommand(t);
+
+ TQApplication::restoreOverrideCursor();
+ }
+
+ m_points.clear();
+
+}
+
+void KisToolSelectPolygonal::move(KisMoveEvent *event)
+{
+ if (m_dragging) {
+ // erase old lines on canvas
+ draw();
+ // get current mouse position
+ m_dragEnd = event->pos();
+ // draw new lines on canvas
+ draw();
+ }
+}
+
+void KisToolSelectPolygonal::buttonRelease(KisButtonReleaseEvent *event)
+{
+ if (!m_subject)
+ return;
+
+ if (m_dragging && event->button() == Qt::LeftButton) {
+ m_dragging = false;
+ m_points.append (m_dragEnd);
+ }
+
+ if (m_dragging && event->button() == Qt::RightButton) {
+
+ }
+}
+
+void KisToolSelectPolygonal::paint(KisCanvasPainter& gc)
+{
+ draw(gc);
+}
+
+void KisToolSelectPolygonal::paint(KisCanvasPainter& gc, const TQRect&)
+{
+ draw(gc);
+}
+
+void KisToolSelectPolygonal::draw()
+{
+ if (m_subject) {
+ KisCanvasController *controller = m_subject->canvasController();
+ KisCanvas *canvas = controller->kiscanvas();
+ KisCanvasPainter gc(canvas);
+
+ draw(gc);
+ }
+}
+
+void KisToolSelectPolygonal::draw(KisCanvasPainter& gc)
+{
+ if (!m_subject)
+ return;
+
+ TQPen pen(TQt::white, 0, TQt::DotLine);
+
+ gc.setPen(pen);
+ gc.setRasterOp(TQt::XorROP);
+
+ KisCanvasController *controller = m_subject->canvasController();
+ KisPoint start, end;
+ TQPoint startPos;
+ TQPoint endPos;
+
+ if (m_dragging) {
+ startPos = controller->windowToView(m_dragStart.floorTQPoint());
+ endPos = controller->windowToView(m_dragEnd.floorTQPoint());
+ gc.drawLine(startPos, endPos);
+ } else {
+ for (KisPointVector::iterator it = m_points.begin(); it != m_points.end(); ++it) {
+
+ if (it == m_points.begin())
+ {
+ start = (*it);
+ } else {
+ end = (*it);
+
+ startPos = controller->windowToView(start.floorTQPoint());
+ endPos = controller->windowToView(end.floorTQPoint());
+
+ gc.drawLine(startPos, endPos);
+
+ start = end;
+ }
+ }
+ }
+}
+
+
+void KisToolSelectPolygonal::setup(KActionCollection *collection)
+{
+ m_action = static_cast<KRadioAction *>(collection->action(name()));
+
+ if (m_action == 0) {
+ m_action = new KRadioAction(i18n("&Polygonal Selection"),
+ "tool_polygonal_selection" ,
+ 0,
+ this,
+ TQT_SLOT(activate()),
+ collection,
+ name());
+ Q_CHECK_PTR(m_action);
+ m_action->setExclusiveGroup("tools");
+ m_action->setToolTip(i18n("Select a polygonal area"));
+ m_ownAction = true;
+ }
+}
+
+
+TQWidget* KisToolSelectPolygonal::createOptionWidget(TQWidget* tqparent)
+{
+ m_optWidget = new KisSelectionOptions(tqparent, m_subject);
+ Q_CHECK_PTR(m_optWidget);
+ m_optWidget->setCaption(i18n("Polygonal Selection"));
+
+ connect (m_optWidget, TQT_SIGNAL(actionChanged(int)), this, TQT_SLOT(slotSetAction(int)));
+
+ TQVBoxLayout * l = dynamic_cast<TQVBoxLayout*>(m_optWidget->tqlayout());
+ l->addItem(new TQSpacerItem(1, 1, TQSizePolicy::Fixed, TQSizePolicy::Expanding));
+
+ return m_optWidget;
+}
+
+TQWidget* KisToolSelectPolygonal::optionWidget()
+{
+ return m_optWidget;
+}
+
+void KisToolSelectPolygonal::slotSetAction(int action) {
+ if (action >= SELECTION_ADD && action <= SELECTION_SUBTRACT)
+ m_selectAction =(enumSelectionMode)action;
+}
+
+
+
+#include "kis_tool_select_polygonal.moc"
diff --git a/chalk/plugins/tools/selectiontools/kis_tool_select_polygonal.h b/chalk/plugins/tools/selectiontools/kis_tool_select_polygonal.h
new file mode 100644
index 00000000..65a32ee6
--- /dev/null
+++ b/chalk/plugins/tools/selectiontools/kis_tool_select_polygonal.h
@@ -0,0 +1,106 @@
+/*
+ * kis_tool_select_polygonal.h - part of Krayon^WChalk
+ *
+ * Copyright (c) 2000 John Califf <jcaliff@compuzone.net>
+ * Copyright (c) 2002 Patrick Julien <freak@codepimps.org>
+ * Copyright (c) 2004 Boudewijn Rempt <boud@valdyas.org>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+
+#ifndef __selecttoolpolygonal_h__
+#define __selecttoolpolygonal_h__
+
+#include "kis_point.h"
+#include "kis_tool_non_paint.h"
+#include "kis_tool_factory.h"
+#include "kis_selection.h"
+
+class KisSelectionOptions;
+
+class KisToolSelectPolygonal : public KisToolNonPaint {
+
+ typedef KisToolNonPaint super;
+ Q_OBJECT
+ TQ_OBJECT
+public:
+ KisToolSelectPolygonal();
+ virtual ~KisToolSelectPolygonal();
+
+ //
+ // KisCanvasObserver interface
+ //
+
+ virtual void update (KisCanvasSubject *subject);
+
+ //
+ // KisToolPaint interface
+ //
+
+ virtual void setup(KActionCollection *collection);
+ virtual TQ_UINT32 priority() { return 5; }
+ virtual enumToolType toolType() { return TOOL_SELECT; }
+ virtual void buttonPress(KisButtonPressEvent *event);
+ virtual void move(KisMoveEvent *event);
+ virtual void buttonRelease(KisButtonReleaseEvent *event);
+ virtual void doubleClick(KisDoubleClickEvent * event);
+
+ void finish();
+ TQWidget* createOptionWidget(TQWidget* tqparent);
+ virtual TQWidget* optionWidget();
+
+public slots:
+ virtual void slotSetAction(int);
+ virtual void activate();
+ void deactivate();
+
+protected:
+ virtual void paint(KisCanvasPainter& gc);
+ virtual void paint(KisCanvasPainter& gc, const TQRect& rc);
+ void draw(KisCanvasPainter& gc);
+ void draw();
+
+protected:
+ KisPoint m_dragStart;
+ KisPoint m_dragEnd;
+
+ bool m_dragging;
+private:
+ typedef TQValueVector<KisPoint> KisPointVector;
+ KisCanvasSubject *m_subject;
+ KisPointVector m_points;
+ KisSelectionOptions * m_optWidget;
+ enumSelectionMode m_selectAction;
+};
+
+
+class KisToolSelectPolygonalFactory : public KisToolFactory {
+ typedef KisToolFactory super;
+public:
+ KisToolSelectPolygonalFactory() : super() {};
+ virtual ~KisToolSelectPolygonalFactory(){};
+
+ virtual KisTool * createTool(KActionCollection * ac) {
+ KisTool * t = new KisToolSelectPolygonal();
+ Q_CHECK_PTR(t);
+ t->setup(ac);
+ return t;
+ }
+ virtual KisID id() { return KisID("polygonalselect", i18n("Polygonal Select Tool")); }
+};
+
+
+#endif //__selecttoolpolygonal_h__
+
diff --git a/chalk/plugins/tools/selectiontools/kis_tool_select_rectangular.cc b/chalk/plugins/tools/selectiontools/kis_tool_select_rectangular.cc
new file mode 100644
index 00000000..aa7052af
--- /dev/null
+++ b/chalk/plugins/tools/selectiontools/kis_tool_select_rectangular.cc
@@ -0,0 +1,323 @@
+
+/*
+ * kis_tool_select_rectangular.cc -- part of Chalk
+ *
+ * Copyright (c) 1999 Michael Koch <koch@kde.org>
+ * 2001 John Califf <jcaliff@compuzone.net>
+ * 2002 Patrick Julien <freak@codepimps.org>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+
+#include <tqapplication.h>
+#include <tqpainter.h>
+#include <tqpen.h>
+#include <tqlayout.h>
+
+#include <kdebug.h>
+#include <kaction.h>
+#include <kcommand.h>
+#include <klocale.h>
+
+#include "kis_canvas_controller.h"
+#include "kis_canvas_subject.h"
+#include "kis_cursor.h"
+#include "kis_image.h"
+#include "kis_painter.h"
+#include "kis_layer.h"
+#include "kis_tool_select_rectangular.h"
+#include "kis_undo_adapter.h"
+#include "kis_button_press_event.h"
+#include "kis_button_release_event.h"
+#include "kis_move_event.h"
+#include "kis_selection.h"
+#include "kis_selection_options.h"
+#include <kis_selected_transaction.h>
+#include "kis_canvas.h"
+#include "kis_canvas_painter.h"
+
+KisToolSelectRectangular::KisToolSelectRectangular()
+ : super(i18n("Rectangular Select Tool"))
+{
+ setName("tool_select_rectangular");
+ setCursor(KisCursor::load("tool_rectangular_selection_cursor.png", 6, 6));
+ m_subject = 0;
+ m_selecting = false;
+ m_centerPos = KisPoint(0, 0);
+ m_startPos = KisPoint(0, 0);
+ m_endPos = KisPoint(0, 0);
+ m_optWidget = 0;
+ m_selectAction = SELECTION_ADD;
+}
+
+KisToolSelectRectangular::~KisToolSelectRectangular()
+{
+}
+
+void KisToolSelectRectangular::activate()
+{
+ super::activate();
+
+ if (!m_optWidget)
+ return;
+
+ m_optWidget->slotActivated();
+}
+
+void KisToolSelectRectangular::update(KisCanvasSubject *subject)
+{
+ m_subject = subject;
+ super::update(m_subject);
+}
+
+void KisToolSelectRectangular::paint(KisCanvasPainter& gc)
+{
+ if (m_selecting)
+ paintOutline(gc, TQRect());
+}
+
+void KisToolSelectRectangular::paint(KisCanvasPainter& gc, const TQRect& rc)
+{
+ if (m_selecting)
+ paintOutline(gc, rc);
+}
+
+void KisToolSelectRectangular::clearSelection()
+{
+ if (m_subject) {
+ KisCanvasController *controller = m_subject->canvasController();
+ KisImageSP img = m_subject->currentImg();
+
+ Q_ASSERT(controller);
+
+ m_centerPos = KisPoint(0, 0);
+ m_startPos = KisPoint(0, 0);
+ m_endPos = KisPoint(0, 0);
+ m_selecting = false;
+ }
+}
+
+void KisToolSelectRectangular::buttonPress(KisButtonPressEvent *e)
+{
+ if (m_subject) {
+ KisImageSP img = m_subject->currentImg();
+
+ if (img && img->activeDevice() && e->button() == Qt::LeftButton) {
+ clearSelection();
+ m_startPos = m_endPos = m_centerPos = e->pos();
+ m_selecting = true;
+ }
+ }
+}
+
+void KisToolSelectRectangular::move(KisMoveEvent *e)
+{
+ if (m_subject && m_selecting) {
+ paintOutline();
+ // move (alt) or resize rectangle
+ if (e->state() & TQt::AltButton) {
+ KisPoint trans = e->pos() - m_endPos;
+ m_startPos += trans;
+ m_endPos += trans;
+ } else {
+ KisPoint diag = e->pos() - (e->state() & TQt::ControlButton
+ ? m_centerPos : m_startPos);
+ // square?
+ if (e->state() & TQt::ShiftButton) {
+ double size = TQMAX(fabs(diag.x()), fabs(diag.y()));
+ double w = diag.x() < 0 ? -size : size;
+ double h = diag.y() < 0 ? -size : size;
+ diag = KisPoint(w, h);
+ }
+
+ // resize around center point?
+ if (e->state() & TQt::ControlButton) {
+ m_startPos = m_centerPos - diag;
+ m_endPos = m_centerPos + diag;
+ } else {
+ m_endPos = m_startPos + diag;
+ }
+ }
+ paintOutline();
+ m_centerPos = KisPoint((m_startPos.x() + m_endPos.x()) / 2,
+ (m_startPos.y() + m_endPos.y()) / 2);
+ }
+}
+
+void KisToolSelectRectangular::buttonRelease(KisButtonReleaseEvent *e)
+{
+ if (m_subject && m_selecting && e->button() == Qt::LeftButton) {
+
+ paintOutline();
+
+ if (m_startPos == m_endPos) {
+ clearSelection();
+ } else {
+ KisImageSP img = m_subject->currentImg();
+
+ if (!img)
+ return;
+
+ if (m_endPos.y() < 0)
+ m_endPos.setY(0);
+
+ if (m_endPos.y() > img->height())
+ m_endPos.setY(img->height());
+
+ if (m_endPos.x() < 0)
+ m_endPos.setX(0);
+
+ if (m_endPos.x() > img->width())
+ m_endPos.setX(img->width());
+ if (img && img->activeDevice()) {
+
+ TQApplication::setOverrideCursor(KisCursor::waitCursor());
+ KisPaintDeviceSP dev = img->activeDevice();
+ bool hasSelection = dev->hasSelection();
+
+ KisSelectedTransaction *t = 0;
+ if (img->undo()) t = new KisSelectedTransaction(i18n("Rectangular Selection"), dev);
+ KisSelectionSP selection = dev->selection();
+ TQRect rc(m_startPos.floorTQPoint(), m_endPos.floorTQPoint());
+ rc = rc.normalize();
+
+ // We don't want the border of the 'rectangle' to be included in our selection
+ rc.setSize(rc.size() - TQSize(1,1));
+
+ if(! hasSelection)
+ {
+ selection->clear();
+ if(m_selectAction==SELECTION_SUBTRACT)
+ selection->invert();
+ }
+
+ KisSelectionSP tmpSel = new KisSelection(dev);
+ tmpSel->select(rc);
+ switch(m_selectAction)
+ {
+ case SELECTION_ADD:
+ dev->addSelection(tmpSel);
+ break;
+ case SELECTION_SUBTRACT:
+ dev->subtractSelection(tmpSel);
+ break;
+ default:
+ break;
+ }
+
+
+ if(hasSelection) {
+ dev->setDirty(rc);
+ dev->emitSelectionChanged(rc);
+ } else {
+ dev->setDirty();
+ dev->emitSelectionChanged();
+ }
+
+ if (img->undo())
+ img->undoAdapter()->addCommand(t);
+
+ KisCanvasController *controller = m_subject -> canvasController();
+ controller -> kiscanvas() -> update();
+
+ TQApplication::restoreOverrideCursor();
+ }
+ }
+
+ m_selecting = false;
+ }
+}
+
+void KisToolSelectRectangular::paintOutline()
+{
+ if (m_subject) {
+ KisCanvasController *controller = m_subject->canvasController();
+ KisCanvas *canvas = controller->kiscanvas();
+ KisCanvasPainter gc(canvas);
+ TQRect rc;
+
+ paintOutline(gc, rc);
+ }
+}
+
+void KisToolSelectRectangular::paintOutline(KisCanvasPainter& gc, const TQRect&)
+{
+ if (m_subject) {
+ KisCanvasController *controller = m_subject->canvasController();
+ RasterOp op = gc.rasterOp();
+ TQPen old = gc.pen();
+ TQPen pen(TQt::DotLine);
+ TQPoint start;
+ TQPoint end;
+
+ Q_ASSERT(controller);
+ start = controller->windowToView(m_startPos.floorTQPoint());
+ end = controller->windowToView(m_endPos.floorTQPoint());
+
+ gc.setRasterOp(TQt::NotROP);
+ gc.setPen(pen);
+ gc.drawRect(TQRect(start, end));
+ gc.setRasterOp(op);
+ gc.setPen(old);
+ }
+}
+
+void KisToolSelectRectangular::slotSetAction(int action) {
+ if (action >= SELECTION_ADD && action <= SELECTION_SUBTRACT)
+ m_selectAction =(enumSelectionMode)action;
+}
+
+void KisToolSelectRectangular::setup(KActionCollection *collection)
+{
+ m_action = static_cast<KRadioAction *>(collection->action(name()));
+
+ if (m_action == 0) {
+ m_action = new KRadioAction(i18n("&Rectangular Selection"),
+ "tool_rect_selection",
+ TQt::Key_R,
+ this,
+ TQT_SLOT(activate()),
+ collection,
+ name());
+ Q_CHECK_PTR(m_action);
+ m_action->setExclusiveGroup("tools");
+ m_action->setToolTip(i18n("Select a rectangular area"));
+ m_ownAction = true;
+ }
+}
+
+TQWidget* KisToolSelectRectangular::createOptionWidget(TQWidget* tqparent)
+{
+ m_optWidget = new KisSelectionOptions(tqparent, m_subject);
+ Q_CHECK_PTR(m_optWidget);
+ m_optWidget->setCaption(i18n("Rectangular Selection"));
+
+ connect (m_optWidget, TQT_SIGNAL(actionChanged(int)), this, TQT_SLOT(slotSetAction(int)));
+
+ TQVBoxLayout * l = dynamic_cast<TQVBoxLayout*>(m_optWidget->tqlayout());
+ l->addItem(new TQSpacerItem(1, 1, TQSizePolicy::Fixed, TQSizePolicy::Expanding));
+
+ return m_optWidget;
+}
+
+TQWidget* KisToolSelectRectangular::optionWidget()
+{
+ return m_optWidget;
+}
+
+
+
+
+#include "kis_tool_select_rectangular.moc"
diff --git a/chalk/plugins/tools/selectiontools/kis_tool_select_rectangular.h b/chalk/plugins/tools/selectiontools/kis_tool_select_rectangular.h
new file mode 100644
index 00000000..eb286cca
--- /dev/null
+++ b/chalk/plugins/tools/selectiontools/kis_tool_select_rectangular.h
@@ -0,0 +1,95 @@
+/*
+ * kis_tool_select_rectangular.h - part of Chalk
+ *
+ * Copyright (c) 1999 Michael Koch <koch@kde.org>
+ * 2002 Patrick Julien <freak@codepimps.org>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+
+#ifndef KIS_TOOL_SELECT_RECTANGULAR_H_
+#define KIS_TOOL_SELECT_RECTANGULAR_H_
+
+#include "kis_point.h"
+#include "kis_tool_non_paint.h"
+#include "kis_selection.h"
+#include "kis_tool_factory.h"
+
+class KisSelectionOptions;
+
+class KisToolSelectRectangular : public KisToolNonPaint {
+
+ typedef KisToolNonPaint super;
+ Q_OBJECT
+ TQ_OBJECT
+
+public:
+ KisToolSelectRectangular();
+ virtual ~KisToolSelectRectangular();
+
+ virtual void update(KisCanvasSubject *subject);
+
+ virtual void setup(KActionCollection *collection);
+ virtual TQ_UINT32 priority() { return 3; }
+ virtual enumToolType toolType() { return TOOL_SELECT; }
+ virtual TQWidget * createOptionWidget(TQWidget* tqparent);
+ virtual TQWidget* optionWidget();
+
+ virtual void paint(KisCanvasPainter& gc);
+ virtual void paint(KisCanvasPainter& gc, const TQRect& rc);
+ virtual void buttonPress(KisButtonPressEvent *e);
+ virtual void move(KisMoveEvent *e);
+ virtual void buttonRelease(KisButtonReleaseEvent *e);
+
+public slots:
+ virtual void slotSetAction(int);
+ virtual void activate();
+
+
+private:
+ void clearSelection();
+ void paintOutline();
+ void paintOutline(KisCanvasPainter& gc, const TQRect& rc);
+
+private:
+ KisCanvasSubject *m_subject;
+ KisPoint m_centerPos;
+ KisPoint m_startPos;
+ KisPoint m_endPos;
+ bool m_selecting;
+ KisSelectionOptions * m_optWidget;
+ enumSelectionMode m_selectAction;
+
+};
+
+class KisToolSelectRectangularFactory : public KisToolFactory {
+ typedef KisToolFactory super;
+public:
+ KisToolSelectRectangularFactory() : super() {};
+ virtual ~KisToolSelectRectangularFactory(){};
+
+ virtual KisTool * createTool(KActionCollection * ac) {
+ KisTool * t = new KisToolSelectRectangular();
+ t->setup(ac);
+ Q_CHECK_PTR(t);
+ return t;
+ }
+ virtual KisID id() { return KisID("rectangularselect", i18n("Rectangular Select Tool")); }
+};
+
+
+
+#endif // KIS_TOOL_SELECT_RECTANGULAR_H_
+
diff --git a/chalk/plugins/tools/selectiontools/selection_tools.cc b/chalk/plugins/tools/selectiontools/selection_tools.cc
new file mode 100644
index 00000000..db4df1ab
--- /dev/null
+++ b/chalk/plugins/tools/selectiontools/selection_tools.cc
@@ -0,0 +1,77 @@
+/*
+ * selection_tools.cc -- Part of Chalk
+ *
+ * Copyright (c) 2004 Boudewijn Rempt (boud@valdyas.org)
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+#include <stdlib.h>
+#include <vector>
+
+#include <tqpoint.h>
+
+#include <klocale.h>
+#include <kiconloader.h>
+#include <kinstance.h>
+#include <kmessagebox.h>
+#include <kstandarddirs.h>
+#include <ktempfile.h>
+#include <kdebug.h>
+#include <kgenericfactory.h>
+
+#include <kis_global.h>
+#include <kis_types.h>
+#include <kis_tool.h>
+#include <kis_tool_registry.h>
+
+#include "selection_tools.h"
+
+#include "kis_tool_select_outline.h"
+#include "kis_tool_select_polygonal.h"
+#include "kis_tool_select_rectangular.h"
+#include "kis_tool_select_contiguous.h"
+#include "kis_tool_select_elliptical.h"
+#include "kis_tool_select_eraser.h"
+#include "kis_tool_select_brush.h"
+#include "kis_tool_move_selection.h"
+
+typedef KGenericFactory<SelectionTools> SelectionToolsFactory;
+K_EXPORT_COMPONENT_FACTORY( chalkselectiontools, SelectionToolsFactory( "chalk" ) )
+
+
+SelectionTools::SelectionTools(TQObject *tqparent, const char *name, const TQStringList &)
+ : KParts::Plugin(tqparent, name)
+{
+ setInstance(SelectionToolsFactory::instance());
+
+ if ( tqparent->inherits("KisToolRegistry") )
+ {
+ KisToolRegistry * r = dynamic_cast<KisToolRegistry*>(tqparent);
+ r->add(new KisToolSelectOutlineFactory());
+ r->add(new KisToolSelectPolygonalFactory());
+ r->add(new KisToolSelectRectangularFactory());
+ r->add(new KisToolSelectBrushFactory());
+ r->add(new KisToolSelectContiguousFactory());
+ r->add(new KisToolSelectEllipticalFactory());
+ r->add(new KisToolSelectEraserFactory());
+ r->add(new KisToolMoveSelectionFactory());
+ }
+}
+
+SelectionTools::~SelectionTools()
+{
+}
+
+#include "selection_tools.moc"
diff --git a/chalk/plugins/tools/selectiontools/selection_tools.h b/chalk/plugins/tools/selectiontools/selection_tools.h
new file mode 100644
index 00000000..2e448e3e
--- /dev/null
+++ b/chalk/plugins/tools/selectiontools/selection_tools.h
@@ -0,0 +1,44 @@
+/*
+ * Copyright (c) 2003 Boudewijn Rempt (boud@valdyas.org)
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+
+#ifndef SELECTION_TOOLS_H_
+#define SELECTION_TOOLS_H_
+
+#include <kparts/plugin.h>
+
+/**
+ * A module wrapper around Chalk's selection tools.
+ * Despite the fact that new tools are created for every new view,
+ * it is not possible to make tools standard parts of the type of the
+ * imagesize plugin, because we need to create a new set of tools for every
+ * pointer device (mouse, stylus, eraser, puck, etc.). So this plugin is
+ * a module which is loaded once into Chalk. For every tool there is a factory
+ * class that is registered with the tool registry, and that is used to create
+ * new instances of the tools.
+ */
+class SelectionTools : public KParts::Plugin
+{
+ Q_OBJECT
+ TQ_OBJECT
+public:
+ SelectionTools(TQObject *tqparent, const char *name, const TQStringList &);
+ virtual ~SelectionTools();
+
+};
+
+#endif // SELECTION_TOOLS_H_
diff --git a/chalk/plugins/tools/selectiontools/tool_brush_selection.png b/chalk/plugins/tools/selectiontools/tool_brush_selection.png
new file mode 100644
index 00000000..3d1bba3f
--- /dev/null
+++ b/chalk/plugins/tools/selectiontools/tool_brush_selection.png
Binary files differ
diff --git a/chalk/plugins/tools/selectiontools/tool_brush_selection.svg b/chalk/plugins/tools/selectiontools/tool_brush_selection.svg
new file mode 100644
index 00000000..228a411f
--- /dev/null
+++ b/chalk/plugins/tools/selectiontools/tool_brush_selection.svg
@@ -0,0 +1,827 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://web.resource.org/cc/"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ inkscape:export-ydpi="33.000000"
+ inkscape:export-xdpi="33.000000"
+ inkscape:export-filename="/home/danny/tool_brush_selection.png"
+ sodipodi:docname="tool_brush_selection.svg"
+ sodipodi:docbase="/home/danny/work/kde/koffice/chalk/chalk"
+ inkscape:version="0.41"
+ sodipodi:version="0.32"
+ id="svg4694"
+ height="48.000000pt"
+ width="48.000000pt">
+ <defs
+ id="defs3">
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#light90to0"
+ id="radialGradient7969"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.000000,-2.592685,0.379735,0.000000,-30.45690,-1.224420)"
+ cx="-23.859682"
+ cy="95.221397"
+ fx="-23.859682"
+ fy="95.221397"
+ r="8.5514765" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#light90to0"
+ id="linearGradient7967"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.000000,-2.503650,0.399417,0.000000,-30.45690,-1.829360)"
+ x1="-16.569721"
+ y1="81.885979"
+ x2="-21.621279"
+ y2="85.112236" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#light90to0"
+ id="radialGradient7965"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.000000,-2.592685,0.379735,0.000000,-30.45690,-21.22442)"
+ cx="-23.859682"
+ cy="95.221397"
+ fx="-23.859682"
+ fy="95.221397"
+ r="8.5514765" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#light90to0"
+ id="linearGradient7963"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.000000,-2.503650,0.399417,0.000000,-30.45690,-21.82936)"
+ x1="-16.569721"
+ y1="81.885979"
+ x2="-21.621279"
+ y2="85.112236" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#light90to0"
+ id="radialGradient7961"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.000000,-2.592685,0.379735,0.000000,26.44710,-11.22442)"
+ cx="-23.859682"
+ cy="95.221397"
+ fx="-23.859682"
+ fy="95.221397"
+ r="8.5514765" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#light90to0"
+ id="linearGradient7959"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.000000,-2.503650,0.399417,0.000000,26.44710,-11.82936)"
+ x1="-16.569721"
+ y1="81.885979"
+ x2="-21.621279"
+ y2="85.112236" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#light90to0"
+ id="radialGradient7957"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.633416,0.000000,0.000000,0.379735,-44.86332,44.21180)"
+ cx="25.952410"
+ cy="52.497688"
+ fx="25.923746"
+ fy="51.904903"
+ r="14.270030" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#light90to0"
+ id="linearGradient7955"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.503650,0.000000,0.000000,0.399417,-44.86332,44.21180)"
+ x1="22.425571"
+ y1="35.206337"
+ x2="22.396454"
+ y2="41.545322" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#light90to0"
+ id="radialGradient7953"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.633416,0.000000,0.000000,0.379735,-22.86332,44.21180)"
+ cx="25.952410"
+ cy="52.497688"
+ fx="25.923746"
+ fy="51.904903"
+ r="14.270030" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#light90to0"
+ id="linearGradient7951"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.503650,0.000000,0.000000,0.399417,-22.86332,44.21180)"
+ x1="22.425571"
+ y1="35.206337"
+ x2="22.396454"
+ y2="41.545322" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#light90to0"
+ id="radialGradient7949"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.633416,0.000000,0.000000,0.379735,-38.65916,-12.48664)"
+ cx="25.952410"
+ cy="52.497688"
+ fx="25.923746"
+ fy="51.904903"
+ r="14.270030" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#light90to0"
+ id="linearGradient7947"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.503650,0.000000,0.000000,0.399417,-38.65916,-12.48664)"
+ x1="22.425571"
+ y1="35.206337"
+ x2="22.396454"
+ y2="41.545322" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#light90to0"
+ id="linearGradient7945"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.000000,-2.503650,0.399417,0.000000,26.44710,4.170640)"
+ x1="-16.569721"
+ y1="81.885979"
+ x2="-21.621279"
+ y2="85.112236" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#light90to0"
+ id="radialGradient7943"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.878497,0.000000,0.000000,1.138308,-18.65916,-0.486640)"
+ cx="92.643608"
+ cy="55.457653"
+ fx="92.643608"
+ fy="55.457653"
+ r="9.9914455" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#light90to0"
+ id="radialGradient7941"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.000000,-2.592685,0.379735,0.000000,26.44710,-31.22442)"
+ cx="-23.859682"
+ cy="95.221397"
+ fx="-23.859682"
+ fy="95.221397"
+ r="8.5514765" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#light90to0"
+ id="linearGradient7939"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.000000,-2.503650,0.399417,0.000000,26.44710,-31.82936)"
+ x1="-16.569721"
+ y1="81.885979"
+ x2="-21.621279"
+ y2="85.112236" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#light90to0"
+ id="radialGradient7937"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.633416,0.000000,0.000000,0.379735,-16.65916,-12.48664)"
+ cx="25.952410"
+ cy="52.497688"
+ fx="25.923746"
+ fy="51.904903"
+ r="14.270030" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#light90to0"
+ id="linearGradient7935"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.503650,0.000000,0.000000,0.399417,-16.65916,-12.48664)"
+ x1="22.425571"
+ y1="35.206337"
+ x2="22.396454"
+ y2="41.545322" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#light90to0"
+ id="radialGradient7933"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(0.665867,1.501801)"
+ cx="8.0907059"
+ cy="9.5002232"
+ fx="8.0907059"
+ fy="9.5002232"
+ r="5.8189325" />
+ <linearGradient
+ id="light90to0">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0.90833336;"
+ offset="0.0000000"
+ id="stop1890" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0.0000000;"
+ offset="1.0000000"
+ id="stop1892" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#light90to0"
+ id="linearGradient7931"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.791643,0.000000,0.000000,1.263196,-1.626700,-5.630763)"
+ x1="4.4536543"
+ y1="6.5494914"
+ x2="14.101834"
+ y2="13.431447" />
+ <linearGradient
+ id="garylighttowite">
+ <stop
+ id="stop5106"
+ offset="0.0000000"
+ style="stop-color:#4f4f4f;stop-opacity:1.0000000;" />
+ <stop
+ id="stop5107"
+ offset="1.0000000"
+ style="stop-color:#7e7f7f;stop-opacity:1.0000000;" />
+ </linearGradient>
+ <linearGradient
+ y2="213.83318"
+ x2="197.10010"
+ y1="237.55226"
+ x1="169.41396"
+ gradientTransform="matrix(0.981884,0.000000,0.000000,1.249452,-125.2257,-270.2224)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient4240"
+ xlink:href="#garylighttowite"
+ inkscape:collect="always" />
+ <linearGradient
+ id="blacktowhite">
+ <stop
+ id="stop2476"
+ offset="0.0000000"
+ style="stop-color:#000000;stop-opacity:1.0000000;" />
+ <stop
+ id="stop2475"
+ offset="1.0000000"
+ style="stop-color:#e6e6e6;stop-opacity:1.0000000;" />
+ </linearGradient>
+ <linearGradient
+ y2="305.51498"
+ x2="-126.66700"
+ y1="316.87579"
+ x1="-134.10509"
+ gradientTransform="matrix(0.409156,-1.467734,0.742641,0.334392,-125.2257,-270.2224)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient4238"
+ xlink:href="#blacktowhite"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient940">
+ <stop
+ style="stop-color:#7d5700;stop-opacity:1;"
+ offset="0.00000000"
+ id="stop941" />
+ <stop
+ style="stop-color:#c58500;stop-opacity:1.0000000;"
+ offset="1.0000000"
+ id="stop942" />
+ </linearGradient>
+ <linearGradient
+ y2="327.82533"
+ x2="477.19157"
+ y1="252.79109"
+ x1="405.98953"
+ gradientTransform="matrix(9.300968e-2,-0.317362,0.155311,2.621206e-2,-185.0894,-152.1973)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient4235"
+ xlink:href="#linearGradient940"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient944">
+ <stop
+ style="stop-color:#c34700;stop-opacity:1.0000000;"
+ offset="0.0000000"
+ id="stop945" />
+ <stop
+ style="stop-color:#ddc800;stop-opacity:1.0000000;"
+ offset="1.0000000"
+ id="stop946" />
+ </linearGradient>
+ <linearGradient
+ y2="333.50655"
+ x2="492.61439"
+ y1="270.32615"
+ x1="410.61638"
+ gradientTransform="matrix(9.300968e-2,-0.317362,0.155311,2.621206e-2,-185.0894,-152.1973)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient4233"
+ xlink:href="#linearGradient944"
+ inkscape:collect="always" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#light90to0"
+ id="radialGradient1439"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.000000,-2.142981,0.309244,0.000000,-25.19724,11.47156)"
+ cx="-23.859682"
+ cy="95.221397"
+ fx="-23.859682"
+ fy="95.221397"
+ r="8.5514765" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#light90to0"
+ id="linearGradient1442"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.000000,-2.069389,0.325272,0.000000,-25.19724,10.97154)"
+ x1="-16.569721"
+ y1="81.885979"
+ x2="-21.621279"
+ y2="85.112236" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#light90to0"
+ id="radialGradient1446"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.000000,-2.142981,0.309244,0.000000,-25.19724,-5.806103)"
+ cx="-23.859682"
+ cy="95.221397"
+ fx="-23.859682"
+ fy="95.221397"
+ r="8.5514765" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#light90to0"
+ id="linearGradient1449"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.000000,-2.069389,0.325272,0.000000,-25.19724,-6.306116)"
+ x1="-16.569721"
+ y1="81.885979"
+ x2="-21.621279"
+ y2="85.112236" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#light90to0"
+ id="radialGradient1453"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.000000,-2.142981,0.309244,0.000000,21.05881,1.966237)"
+ cx="-23.859682"
+ cy="95.221397"
+ fx="-23.859682"
+ fy="95.221397"
+ r="8.5514765" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#light90to0"
+ id="linearGradient1456"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.000000,-2.069389,0.325272,0.000000,21.05881,1.466224)"
+ x1="-16.569721"
+ y1="81.885979"
+ x2="-21.621279"
+ y2="85.112236" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#light90to0"
+ id="radialGradient1460"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.144567,0.000000,0.000000,0.313870,-38.39521,48.31870)"
+ cx="25.952410"
+ cy="52.497688"
+ fx="25.923746"
+ fy="51.904903"
+ r="14.270030" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#light90to0"
+ id="linearGradient1463"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.038890,0.000000,0.000000,0.330138,-38.39521,48.31870)"
+ x1="22.425571"
+ y1="35.206337"
+ x2="22.396454"
+ y2="41.545322" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#light90to0"
+ id="radialGradient1467"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.144567,0.000000,0.000000,0.313870,-19.66477,48.31870)"
+ cx="25.952410"
+ cy="52.497688"
+ fx="25.923746"
+ fy="51.904903"
+ r="14.270030" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#light90to0"
+ id="linearGradient1470"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.038890,0.000000,0.000000,0.330138,-19.66477,48.31870)"
+ x1="22.425571"
+ y1="35.206337"
+ x2="22.396454"
+ y2="41.545322" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#light90to0"
+ id="radialGradient1474"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.144567,0.000000,0.000000,0.313870,-30.98448,1.415420)"
+ cx="25.952410"
+ cy="52.497688"
+ fx="25.923746"
+ fy="51.904903"
+ r="14.270030" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#light90to0"
+ id="linearGradient1477"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.038890,0.000000,0.000000,0.330138,-30.98448,1.415420)"
+ x1="22.425571"
+ y1="35.206337"
+ x2="22.396454"
+ y2="41.545322" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#light90to0"
+ id="linearGradient1481"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.000000,-2.069389,0.325272,0.000000,21.14350,15.18416)"
+ x1="-16.569721"
+ y1="81.885979"
+ x2="-21.621279"
+ y2="85.112236" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#light90to0"
+ id="radialGradient1484"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.715419,0.000000,0.000000,0.940867,-15.58955,11.33469)"
+ cx="92.643608"
+ cy="55.457653"
+ fx="92.643608"
+ fy="55.457653"
+ r="9.9914455" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#light90to0"
+ id="radialGradient1495"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.144567,0.000000,0.000000,0.313870,-12.33208,1.415420)"
+ cx="25.952410"
+ cy="52.497688"
+ fx="25.923746"
+ fy="51.904903"
+ r="14.270030" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#light90to0"
+ id="linearGradient1498"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.038890,0.000000,0.000000,0.330138,-12.33208,1.415420)"
+ x1="22.425571"
+ y1="35.206337"
+ x2="22.396454"
+ y2="41.545322" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#light90to0"
+ id="radialGradient1502"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.542260,0.000000,0.000000,1.241312,-0.394144,11.73692)"
+ cx="8.0907059"
+ cy="9.5002232"
+ fx="8.0907059"
+ fy="9.5002232"
+ r="5.8189325" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#light90to0"
+ id="linearGradient1505"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.644688,0.000000,0.000000,1.044093,-1.718875,7.082818)"
+ x1="4.4536543"
+ y1="6.5494914"
+ x2="14.101834"
+ y2="13.431447" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#blacktowhite"
+ id="linearGradient1427"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.409156,-1.467734,0.742641,0.334392,-125.2257,-270.2224)"
+ x1="-134.10509"
+ y1="316.87579"
+ x2="-126.66700"
+ y2="305.51498" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#garylighttowite"
+ id="linearGradient1429"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.981884,0.000000,0.000000,1.249452,-125.2257,-270.2224)"
+ x1="169.41396"
+ y1="237.55226"
+ x2="197.10010"
+ y2="213.83318" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient944"
+ id="linearGradient1431"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(9.300968e-2,-0.317362,0.155311,2.621206e-2,-185.0894,-152.1973)"
+ x1="410.61638"
+ y1="270.32615"
+ x2="492.61439"
+ y2="333.50655" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient940"
+ id="linearGradient1433"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(9.300968e-2,-0.317362,0.155311,2.621206e-2,-185.0894,-152.1973)"
+ x1="405.98953"
+ y1="252.79109"
+ x2="477.19157"
+ y2="327.82533" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#light90to0"
+ id="radialGradient1508"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.926025,0.000000,0.000000,0.943879,-3.764700,12.09394)"
+ cx="48.488476"
+ cy="46.914463"
+ fx="48.488476"
+ fy="46.914463"
+ r="31.677956" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#light90to0"
+ id="linearGradient1511"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.937632,0.000000,0.000000,0.932194,-3.191675,13.02262)"
+ x1="10.878086"
+ y1="4.5492039"
+ x2="39.857029"
+ y2="36.873619" />
+ <linearGradient
+ y2="333.50655"
+ x2="492.61439"
+ y1="270.32615"
+ x1="410.61638"
+ gradientTransform="matrix(8.609199e-2,-0.291516,0.143760,2.407732e-2,-172.7295,-138.4789)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1421"
+ xlink:href="#linearGradient944"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="327.82533"
+ x2="477.19157"
+ y1="252.79109"
+ x1="405.98953"
+ gradientTransform="matrix(8.609199e-2,-0.291516,0.143760,2.407732e-2,-172.7295,-138.4789)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1423"
+ xlink:href="#linearGradient940"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="305.51498"
+ x2="-126.66700"
+ y1="316.87579"
+ x1="-134.10509"
+ gradientTransform="matrix(0.378725,-1.348200,0.687406,0.307159,-117.3182,-246.8919)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1425"
+ xlink:href="#blacktowhite"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="213.83318"
+ x2="197.10010"
+ y1="237.55226"
+ x1="169.41396"
+ gradientTransform="matrix(0.908855,0.000000,0.000000,1.147695,-117.3182,-246.8919)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1428"
+ xlink:href="#garylighttowite"
+ inkscape:collect="always" />
+ </defs>
+ <sodipodi:namedview
+ inkscape:window-y="0"
+ inkscape:window-x="0"
+ inkscape:window-height="691"
+ inkscape:window-width="1020"
+ inkscape:grid-bbox="true"
+ inkscape:document-units="px"
+ showgrid="false"
+ inkscape:current-layer="layer1"
+ inkscape:cy="57.678721"
+ inkscape:cx="57.219249"
+ inkscape:zoom="8.5396765"
+ inkscape:pageshadow="2"
+ inkscape:pageopacity="0.0"
+ borderopacity="1.0"
+ bordercolor="#666666"
+ pagecolor="#ffffff"
+ id="base" />
+ <metadata
+ id="metadata4">
+ <rdf:RDF
+ id="RDF5">
+ <cc:Work
+ id="Work6"
+ rdf:about="">
+ <dc:format
+ id="format7">image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage"
+ id="type9" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:groupmode="layer"
+ inkscape:label="Layer 1"
+ id="layer1">
+ <g
+ id="g3808">
+ <path
+ style="opacity:0.79446638;fill:#0028c6;fill-opacity:0.18099548;stroke:#000000;stroke-width:0.0000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:0.035294119"
+ d="M 6.2934619,13.951302 L 42.647661,13.951302 C 44.570005,13.951302 46.117596,15.941616 46.117596,18.413889 L 46.117596,53.617448 C 46.117596,56.089722 44.570005,58.080035 42.647661,58.080035 L 6.2934619,58.080035 C 4.3711186,58.080035 2.8235279,56.089722 2.8235279,53.617448 L 2.8235279,18.413889 C 2.8235279,15.941616 4.3711186,13.951302 6.2934619,13.951302 z "
+ id="rect7971" />
+ <path
+ style="opacity:0.79446638;fill:url(#linearGradient1511);fill-opacity:1.0000000;stroke:#000000;stroke-width:0.0000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:0.035294119"
+ d="M 6.8664881,14.879987 L 43.220688,14.879987 C 44.781208,38.443460 21.125930,25.243420 3.3965541,54.546133 L 3.3965541,19.342574 C 3.3965541,16.870301 4.9441448,14.879987 6.8664881,14.879987 z "
+ id="path8746"
+ sodipodi:nodetypes="ccccc" />
+ <path
+ style="stroke-opacity:1.0000000;stroke-miterlimit:4.0000000;stroke-linejoin:round;stroke-linecap:round;stroke-width:4.3000002;stroke:none;fill-rule:evenodd;fill-opacity:1.0000000;fill:#353640"
+ d="M 16.843790,11.999986 C 15.654649,11.999986 14.690659,12.962574 14.690659,14.149986 C 14.690659,15.337398 15.654649,16.299986 16.843790,16.299986 L 24.687528,16.299986 C 25.876670,16.299986 26.840659,15.337398 26.840659,14.149986 C 26.840659,12.962574 25.876670,11.999986 24.687528,11.999986 L 16.843790,11.999986 z "
+ id="path3802"
+ sodipodi:nodetypes="ccccccc" />
+ <path
+ style="opacity:0.97233200;fill:url(#radialGradient1508);fill-opacity:1.0000000;stroke:#000000;stroke-width:0.0000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:0.035294119"
+ d="M 6.2934619,13.951302 L 42.647661,13.951302 C 44.570005,13.951302 46.117596,15.941616 46.117596,18.413889 L 46.117596,53.617448 C 46.117596,56.089722 44.570005,58.080035 42.647661,58.080035 L 6.2934619,58.080035 C 4.3711186,58.080035 2.8235279,56.089722 2.8235279,53.617448 L 2.8235279,18.413889 C 2.8235279,15.941616 4.3711186,13.951302 6.2934619,13.951302 z "
+ id="path9514" />
+ <path
+ style="fill:#353640;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:5.5999999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
+ d="M 2.2036028,12.000753 C 1.6228812,11.985222 1.0606757,12.206108 0.64540735,12.612953 C 0.23013967,13.019798 -0.0027184452,13.577851 2.3951728e-05,14.159639 L 2.3951728e-05,20.996110 C 2.3951728e-05,22.188431 0.96515240,23.154996 2.1556989,23.154996 C 3.3462453,23.154996 4.3113738,22.188431 4.3113738,20.996110 L 4.3113738,16.342512 L 5.9401060,16.366499 C 6.7276964,16.418884 7.4804421,16.034101 7.9001215,15.364596 C 8.3198002,14.695092 8.3386812,13.848916 7.9492832,13.161304 C 7.5598858,12.473693 6.8250547,12.055619 6.0359137,12.072716 L 2.2036028,12.000753 z "
+ id="path7697" />
+ <path
+ style="fill:#353640;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:5.5999999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
+ d="M 45.820092,16.892010 C 45.247569,16.895838 44.700302,17.128591 44.299981,17.538518 C 43.899660,17.948446 43.679468,18.501564 43.688369,19.074883 L 43.688369,28.214166 C 43.688369,29.406486 44.653498,30.373052 45.844045,30.373052 C 47.034590,30.373052 47.999719,29.406486 47.999719,28.214166 L 47.999719,19.074883 C 48.008808,18.493207 47.782088,17.932680 47.371342,17.521322 C 46.960596,17.109964 46.400904,16.882908 45.820092,16.892010 L 45.820092,16.892010 z "
+ id="path1937"
+ sodipodi:nodetypes="cccccccccc" />
+ <path
+ style="fill:#353640;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:5.5999999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
+ d="M 44.073235,28.743247 C 44.961756,28.915834 45.380256,26.067378 45.314366,21.725701 C 45.260374,18.227435 46.727595,19.638901 46.838213,17.743808 C 46.855261,17.451725 46.461887,17.299850 45.986113,17.314502 C 45.510339,17.329154 44.952165,17.510332 44.639613,17.884350 C 44.461008,18.031995 44.322268,18.243187 44.228120,18.490651 C 44.133973,18.738115 44.084419,19.021851 44.084191,19.314591 C 44.083962,19.607329 44.075061,26.404202 44.073235,28.743247 z "
+ id="path4304"
+ sodipodi:nodetypes="cccccccc" />
+ <path
+ style="opacity:0.79446638;fill:#353640;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:5.5999999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
+ d="M 45.099708,27.978601 C 45.091646,28.876769 45.673295,29.612967 46.398859,29.622947 C 47.124423,29.632927 47.719145,28.912907 47.727206,28.014740 L 47.800192,18.997225 C 47.828734,18.401217 47.590002,17.834123 47.179013,17.521651 C 46.768024,17.209181 46.251475,17.202036 45.834946,17.503063 C 45.418421,17.804089 45.169513,18.364437 45.187290,18.961084 L 45.099708,27.978601 z "
+ id="path4306"
+ sodipodi:nodetypes="cccccccc" />
+ <path
+ style="fill:#353640;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:5.5999999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
+ d="M 45.820092,48.749786 C 45.247569,48.753613 44.700302,48.986367 44.299981,49.396295 C 43.899660,49.806222 43.679468,50.359340 43.688369,50.932659 L 43.688369,55.682207 L 42.011733,55.682207 C 40.821187,55.682207 39.856059,56.648773 39.856059,57.841093 C 39.856059,59.033414 40.821187,59.999979 42.011733,59.999979 L 45.844045,59.999979 C 46.416528,60.002488 46.966289,59.775839 47.371101,59.370424 C 47.775912,58.965009 48.002223,58.414430 47.999719,57.841093 L 47.999719,50.932659 C 48.008808,50.350983 47.782088,49.790456 47.371342,49.379097 C 46.960596,48.967740 46.400904,48.740683 45.820092,48.749786 z "
+ id="path7691" />
+ <path
+ style="fill:#353640;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:5.5999999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
+ d="M 45.740380,33.011663 C 45.167856,33.015085 44.620590,33.223093 44.220268,33.589441 C 43.819947,33.955789 43.599756,34.450105 43.608656,34.962473 L 43.608656,43.130152 C 43.608656,44.195717 44.573785,45.059526 45.764331,45.059526 C 46.954877,45.059526 47.920006,44.195717 47.920006,43.130152 L 47.920006,34.962473 C 47.929095,34.442636 47.702375,33.941699 47.291630,33.574073 C 46.880884,33.206447 46.321191,33.003529 45.740380,33.011663 L 45.740380,33.011663 z "
+ id="path7765"
+ sodipodi:nodetypes="cccccccccc" />
+ <path
+ style="fill:#353640;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:5.5999999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
+ d="M 2.2053264,25.793584 C 1.6328028,25.796681 1.0855366,25.985006 0.68521492,26.316687 C 0.28489404,26.648367 0.064703248,27.095906 0.073603407,27.559789 L 0.073603407,34.954562 C 0.073603407,35.919291 1.0387318,36.701359 2.2292783,36.701359 C 3.4198248,36.701359 4.3849533,35.919291 4.3849533,34.954562 L 4.3849533,27.559789 C 4.3940420,27.089143 4.1673224,26.635610 3.7565769,26.302773 C 3.3458306,25.969936 2.7861376,25.786219 2.2053264,25.793584 L 2.2053264,25.793584 z "
+ id="path7775"
+ sodipodi:nodetypes="cccccccccc" />
+ <path
+ style="fill:#353640;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:5.5999999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
+ d="M 2.2053264,41.839095 C 1.6328028,41.842251 1.0855366,42.034192 0.68521492,42.372239 C 0.28489404,42.710286 0.064703248,43.166416 0.073603407,43.639205 L 0.073603407,51.175929 C 0.073603407,52.159177 1.0387318,52.956257 2.2292783,52.956257 C 3.4198248,52.956257 4.3849533,52.159177 4.3849533,51.175929 L 4.3849533,43.639205 C 4.3940420,43.159524 4.1673224,42.697285 3.7565769,42.358057 C 3.3458306,42.018832 2.7861376,41.831589 2.2053264,41.839095 L 2.2053264,41.839095 z "
+ id="path7781"
+ sodipodi:nodetypes="cccccccccc" />
+ <path
+ style="stroke-opacity:1.0000000;stroke-miterlimit:4.0000000;stroke-linejoin:round;stroke-linecap:round;stroke-width:4.3000002;stroke:none;fill-rule:evenodd;fill-opacity:1.0000000;fill:#353640"
+ d="M 34.726123,11.999986 C 33.536982,11.999986 32.572992,12.962574 32.572992,14.149986 C 32.572992,15.337398 33.536982,16.299986 34.726123,16.299986 L 42.569861,16.299986 C 43.759003,16.299986 44.722992,15.337398 44.722992,14.149986 C 44.722992,12.962574 43.759003,11.999986 42.569861,11.999986 L 34.726123,11.999986 z "
+ id="path3804"
+ sodipodi:nodetypes="ccccccc" />
+ <path
+ style="fill:#353640;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:4.3000002;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
+ d="M 7.5173157,55.699996 C 6.3281746,55.699996 5.3641852,56.662584 5.3641852,57.849996 C 5.3641852,59.037408 6.3281746,59.999996 7.5173157,59.999996 L 15.361054,59.999996 C 16.550196,59.999996 17.514185,59.037408 17.514185,57.849996 C 17.514185,56.662584 16.550196,55.699996 15.361054,55.699996 L 7.5173157,55.699996 z "
+ id="path1514"
+ sodipodi:nodetypes="ccccccc" />
+ <path
+ style="stroke-opacity:1.0000000;stroke-miterlimit:4.0000000;stroke-linejoin:round;stroke-linecap:round;stroke-width:4.3000002;stroke:none;fill-rule:evenodd;fill-opacity:1.0000000;fill:#353640"
+ d="M 24.984459,55.699996 C 23.795318,55.699996 22.831328,56.662584 22.831328,57.849996 C 22.831328,59.037408 23.795318,59.999996 24.984459,59.999996 L 32.828197,59.999996 C 34.017339,59.999996 34.981328,59.037408 34.981328,57.849996 C 34.981328,56.662584 34.017339,55.699996 32.828197,55.699996 L 24.984459,55.699996 z "
+ id="path3041"
+ sodipodi:nodetypes="ccccccc" />
+ </g>
+ <g
+ transform="matrix(1.134471,0.000000,0.000000,1.134471,-1.979056,-8.899644)"
+ id="g1392">
+ <g
+ id="g3005"
+ transform="matrix(0.966181,0.000000,0.000000,1.079600,-428.2439,-311.2579)">
+ <path
+ style="font-size:12.000000;fill:none;fill-opacity:0.29729697;fill-rule:evenodd;stroke:#000000;stroke-width:0.95595007pt;stroke-linejoin:round;stroke-opacity:0.095022626"
+ d="M 491.67350,290.74524 C 489.56264,292.14465 474.46858,315.88005 473.92350,319.90149 C 474.08915,319.99277 474.24280,320.54490 474.07975,320.46399 C 467.56083,324.58038 466.36005,333.74960 462.39225,337.49524 C 469.66515,335.09880 476.01586,329.63350 478.61100,323.08899 C 478.29575,322.85634 478.53111,322.59638 479.20475,323.15149 C 481.95923,320.93848 496.34001,306.25465 502.61100,296.27649 C 500.08842,293.80733 494.89908,293.21951 491.67350,290.74524 z "
+ id="path2954"
+ sodipodi:nodetypes="cccccccc" />
+ <path
+ style="font-size:12.000000;fill:none;fill-opacity:0.29729697;fill-rule:evenodd;stroke:#000000;stroke-width:1.7924063;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:0.027149322"
+ d="M 491.67350,290.74524 C 489.56264,292.14465 474.46858,315.88005 473.92350,319.90149 C 474.08915,319.99277 474.24280,320.54490 474.07975,320.46399 C 467.56083,324.58038 466.36005,333.74960 462.39225,337.49524 C 469.66515,335.09880 476.01586,329.63350 478.61100,323.08899 C 478.29575,322.85634 478.53111,322.59638 479.20475,323.15149 C 481.95923,320.93848 496.34001,306.25465 502.61100,296.27649 C 500.08842,293.80733 494.89908,293.21951 491.67350,290.74524 z "
+ id="path2993"
+ sodipodi:nodetypes="cccccccc" />
+ <path
+ style="font-size:12.000000;fill:none;fill-opacity:0.29729697;fill-rule:evenodd;stroke:#000000;stroke-width:2.2703812;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:0.027149322"
+ d="M 491.67350,290.74524 C 489.56264,292.14465 474.46858,315.88005 473.92350,319.90149 C 474.08915,319.99277 474.24280,320.54490 474.07975,320.46399 C 467.56083,324.58038 466.36005,333.74960 462.39225,337.49524 C 469.66515,335.09880 476.01586,329.63350 478.61100,323.08899 C 478.29575,322.85634 478.53111,322.59638 479.20475,323.15149 C 481.95923,320.93848 496.34001,306.25465 502.61100,296.27649 C 500.08842,293.80733 494.89908,293.21951 491.67350,290.74524 z "
+ id="path2995"
+ sodipodi:nodetypes="cccccccc" />
+ <path
+ style="font-size:12.000000;fill:none;fill-opacity:0.29729697;fill-rule:evenodd;stroke:#000000;stroke-width:2.7483566;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:0.027149322"
+ d="M 491.67350,290.74524 C 489.56264,292.14465 474.46858,315.88005 473.92350,319.90149 C 474.08915,319.99277 474.24280,320.54490 474.07975,320.46399 C 467.56083,324.58038 466.36005,333.74960 462.39225,337.49524 C 469.66515,335.09880 476.01586,329.63350 478.61100,323.08899 C 478.29575,322.85634 478.53111,322.59638 479.20475,323.15149 C 481.95923,320.93848 496.34001,306.25465 502.61100,296.27649 C 500.08842,293.80733 494.89908,293.21951 491.67350,290.74524 z "
+ id="path2997"
+ sodipodi:nodetypes="cccccccc" />
+ <path
+ style="font-size:12.000000;fill:none;fill-opacity:0.29729697;fill-rule:evenodd;stroke:#000000;stroke-width:3.4653189;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:0.027149322"
+ d="M 491.67350,290.74524 C 489.56264,292.14465 474.46858,315.88005 473.92350,319.90149 C 474.08915,319.99277 474.24280,320.54490 474.07975,320.46399 C 467.56083,324.58038 466.36005,333.74960 462.39225,337.49524 C 469.66515,335.09880 476.01586,329.63350 478.61100,323.08899 C 478.29575,322.85634 478.53111,322.59638 479.20475,323.15149 C 481.95923,320.93848 496.34001,306.25465 502.61100,296.27649 C 500.08842,293.80733 494.89908,293.21951 491.67350,290.74524 z "
+ id="path2999"
+ sodipodi:nodetypes="cccccccc" />
+ <path
+ style="font-size:12.000000;fill:none;fill-opacity:0.29729697;fill-rule:evenodd;stroke:#000000;stroke-width:4.5407624;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:0.027149322"
+ d="M 491.67350,290.74524 C 489.56264,292.14465 474.46858,315.88005 473.92350,319.90149 C 474.08915,319.99277 474.24280,320.54490 474.07975,320.46399 C 467.56083,324.58038 466.36005,333.74960 462.39225,337.49524 C 469.66515,335.09880 476.01586,329.63350 478.61100,323.08899 C 478.29575,322.85634 478.53111,322.59638 479.20475,323.15149 C 481.95923,320.93848 496.34001,306.25465 502.61100,296.27649 C 500.08842,293.80733 494.89908,293.21951 491.67350,290.74524 z "
+ id="path3001"
+ sodipodi:nodetypes="cccccccc" />
+ <path
+ style="font-size:12.000000;fill:none;fill-opacity:0.29729697;fill-rule:evenodd;stroke:#000000;stroke-width:4.5407624;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:0.027149322"
+ d="M 491.67350,290.74524 C 489.56264,292.14465 474.46858,315.88005 473.92350,319.90149 C 474.08915,319.99277 474.24280,320.54490 474.07975,320.46399 C 467.56083,324.58038 466.36005,333.74960 462.39225,337.49524 C 469.66515,335.09880 476.01586,329.63350 478.61100,323.08899 C 478.29575,322.85634 478.53111,322.59638 479.20475,323.15149 C 481.95923,320.93848 496.34001,306.25465 502.61100,296.27649 C 500.08842,293.80733 494.89908,293.21951 491.67350,290.74524 z "
+ id="path3003"
+ sodipodi:nodetypes="cccccccc" />
+ </g>
+ <path
+ sodipodi:nodetypes="cccc"
+ id="path938"
+ d="M 30.205102,34.228614 C 23.906643,38.672669 22.743245,48.555533 18.909630,52.599327 C 25.936571,50.012119 32.081349,44.132293 34.588724,37.066839 C 33.364061,36.056960 31.643233,35.026039 30.205102,34.228614 z "
+ style="font-size:12.000000;fill:url(#linearGradient1421);fill-opacity:1.0000000;fill-rule:evenodd;stroke:url(#linearGradient1423);stroke-width:0.78106284;stroke-linejoin:round;stroke-miterlimit:4.0000000" />
+ <path
+ sodipodi:nodetypes="cccc"
+ id="path12835"
+ d="M 30.617265,35.339501 C 27.907735,37.564006 24.907867,42.276687 23.152123,48.230671 C 27.752064,46.074807 31.876663,41.684797 33.559712,37.157947 C 32.737666,36.510921 31.582586,35.850411 30.617265,35.339501 z "
+ style="font-size:12.000000;fill:#e1e1e1;fill-opacity:0.31372550;fill-rule:evenodd;stroke:none;stroke-width:0.77429527;stroke-linejoin:round;stroke-opacity:1.0000000" />
+ <path
+ sodipodi:nodetypes="cccc"
+ id="path12853"
+ d="M 31.194413,35.339501 C 29.016341,37.170395 26.604888,41.049182 25.193520,45.949638 C 28.891201,44.175240 32.206788,40.562023 33.559712,36.836183 C 32.898902,36.303648 31.970392,35.760006 31.194413,35.339501 z "
+ style="font-size:12.000000;fill:#ebebeb;fill-opacity:0.31372550;fill-rule:evenodd;stroke:none;stroke-width:0.77429527;stroke-linejoin:round;stroke-opacity:1.0000000" />
+ <path
+ sodipodi:nodetypes="cccc"
+ id="path12855"
+ d="M 31.535862,35.339501 C 29.672214,36.937525 27.608876,40.322968 26.401246,44.600137 C 29.565142,43.051430 32.402092,39.897767 33.559712,36.645817 C 32.994294,36.181017 32.199822,35.706522 31.535862,35.339501 z "
+ style="font-size:12.000000;fill:#f5f5f5;fill-opacity:0.31372550;fill-rule:evenodd;stroke:none;stroke-width:0.77429527;stroke-linejoin:round;stroke-opacity:1.0000000" />
+ <path
+ sodipodi:nodetypes="cccc"
+ id="path12857"
+ d="M 31.877311,35.339501 C 30.328087,36.471786 29.148090,38.870538 28.144199,41.901137 C 30.774308,40.803799 32.597396,38.569265 33.559712,36.265096 C 33.089685,35.935753 32.429251,35.599555 31.877311,35.339501 z "
+ style="font-size:12.000000;fill:#ffffff;fill-opacity:0.31221721;fill-rule:evenodd;stroke:none;stroke-width:0.77429527;stroke-linejoin:round;stroke-opacity:1.0000000" />
+ <g
+ id="g2174">
+ <path
+ sodipodi:nodetypes="ccccc"
+ id="path672"
+ d="M 30.061161,33.612605 C 31.056578,34.225526 33.958195,35.999839 35.166936,37.112820 C 37.828263,34.723643 51.706037,18.866520 57.764951,8.0940971 C 55.327672,5.4283921 50.326572,4.7999241 47.210077,2.1287023 C 45.170603,3.6395058 30.587806,29.271058 30.061161,33.612605 z "
+ style="font-size:12.000000;fill:url(#linearGradient1425);fill-opacity:1.0000000;fill-rule:evenodd;stroke:url(#linearGradient1428);stroke-width:0.36612317;stroke-miterlimit:4.0000000" />
+ <g
+ id="g2947"
+ transform="matrix(0.265500,1.659133e-2,2.488336e-2,-0.224834,-116.5236,67.75015)">
+ <path
+ sodipodi:nodetypes="ccccc"
+ id="path678"
+ d="M 544.06785,185.23884 C 561.08243,232.34141 580.07425,278.58522 603.52211,323.56081 C 599.37466,326.36530 596.20938,328.27876 592.98790,329.80588 C 570.09983,281.67195 552.65324,238.19755 537.96578,188.87058 C 540.53253,187.99599 540.34623,186.72968 544.06785,185.23884 z "
+ style="font-size:12.000000;fill:#45454e;fill-opacity:0.29729697;fill-rule:evenodd;stroke-width:1.0000000pt" />
+ <path
+ sodipodi:nodetypes="ccccc"
+ id="path680"
+ d="M 543.15031,185.88232 C 560.16489,232.98489 578.52789,278.42020 601.97577,323.39579 C 596.82690,324.29588 596.15986,324.48065 592.75040,324.68463 C 569.86231,276.55070 553.21963,237.11949 538.53218,187.79252 C 541.01119,186.88289 539.42870,187.37316 543.15031,185.88232 z "
+ style="font-size:12.000000;fill:#45454e;fill-opacity:0.29729697;fill-rule:evenodd;stroke-width:1.0000000pt" />
+ <path
+ sodipodi:nodetypes="ccccc"
+ id="path681"
+ d="M 542.08466,186.70727 C 559.09925,233.80985 576.02594,277.39172 599.47383,322.36731 C 594.32494,323.26740 597.13301,321.61744 593.72352,321.82142 C 570.83545,273.68748 554.05263,236.74635 539.36517,187.41938 C 542.09871,187.02170 538.36305,188.19811 542.08466,186.70727 z "
+ style="font-size:12.000000;fill:#45454e;fill-opacity:0.29729697;fill-rule:evenodd;stroke-width:1.0000000pt" />
+ </g>
+ </g>
+ </g>
+ </g>
+</svg>
diff --git a/chalk/plugins/tools/selectiontools/tool_brush_selection_cursor.png b/chalk/plugins/tools/selectiontools/tool_brush_selection_cursor.png
new file mode 100644
index 00000000..96929d8f
--- /dev/null
+++ b/chalk/plugins/tools/selectiontools/tool_brush_selection_cursor.png
Binary files differ
diff --git a/chalk/plugins/tools/selectiontools/tool_contiguous_selection.png b/chalk/plugins/tools/selectiontools/tool_contiguous_selection.png
new file mode 100644
index 00000000..fcc8f36d
--- /dev/null
+++ b/chalk/plugins/tools/selectiontools/tool_contiguous_selection.png
Binary files differ
diff --git a/chalk/plugins/tools/selectiontools/tool_contiguous_selection_cursor.png b/chalk/plugins/tools/selectiontools/tool_contiguous_selection_cursor.png
new file mode 100644
index 00000000..0e3572cd
--- /dev/null
+++ b/chalk/plugins/tools/selectiontools/tool_contiguous_selection_cursor.png
Binary files differ
diff --git a/chalk/plugins/tools/selectiontools/tool_elliptical_selection.png b/chalk/plugins/tools/selectiontools/tool_elliptical_selection.png
new file mode 100644
index 00000000..ad585848
--- /dev/null
+++ b/chalk/plugins/tools/selectiontools/tool_elliptical_selection.png
Binary files differ
diff --git a/chalk/plugins/tools/selectiontools/tool_elliptical_selection.svg b/chalk/plugins/tools/selectiontools/tool_elliptical_selection.svg
new file mode 100644
index 00000000..31ff66f4
--- /dev/null
+++ b/chalk/plugins/tools/selectiontools/tool_elliptical_selection.svg
@@ -0,0 +1,256 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://web.resource.org/cc/"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="48.000000pt"
+ height="48.000000pt"
+ id="svg1409"
+ sodipodi:version="0.32"
+ inkscape:version="0.41"
+ sodipodi:docbase="/home/danny/work/kde/koffice/chalk/chalk"
+ sodipodi:docname="tool_elliptical_selection.svg"
+ inkscape:export-filename="/home/danny/work/kde/koffice/chalk/chalk/tool_elliptical_selection.png"
+ inkscape:export-xdpi="33.000000"
+ inkscape:export-ydpi="33.000000">
+ <defs
+ id="defs3">
+ <linearGradient
+ gradientUnits="userSpaceOnUse"
+ y2="36.873619"
+ x2="39.857029"
+ y1="4.5492039"
+ x1="10.878086"
+ gradientTransform="matrix(1.325250,0.000000,0.000000,1.003779,-5.702957,1.287849)"
+ id="linearGradient9512"
+ xlink:href="#light90to0"
+ inkscape:collect="always" />
+ <radialGradient
+ gradientUnits="userSpaceOnUse"
+ r="31.677956"
+ fy="46.914463"
+ fx="48.488476"
+ cy="46.914463"
+ cx="48.488476"
+ gradientTransform="matrix(1.261963,0.000000,0.000000,1.016360,-7.978266,-0.517425)"
+ id="radialGradient10280"
+ xlink:href="#light90to0"
+ inkscape:collect="always" />
+ <linearGradient
+ id="light90to0">
+ <stop
+ id="stop1890"
+ offset="0.0000000"
+ style="stop-color:#ffffff;stop-opacity:0.90833336;" />
+ <stop
+ id="stop1892"
+ offset="1.0000000"
+ style="stop-color:#ffffff;stop-opacity:0.0000000;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#light90to0"
+ id="linearGradient1331"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.325250,0.000000,0.000000,1.003779,-5.702957,1.287849)"
+ x1="10.878086"
+ y1="4.5492039"
+ x2="39.857029"
+ y2="36.873619" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#light90to0"
+ id="radialGradient1333"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.261963,0.000000,0.000000,1.016360,-7.978266,-0.517425)"
+ cx="48.488476"
+ cy="46.914463"
+ fx="48.488476"
+ fy="46.914463"
+ r="31.677956" />
+ <radialGradient
+ r="31.677956"
+ fy="46.914463"
+ fx="48.488476"
+ cy="46.914463"
+ cx="48.488476"
+ gradientTransform="matrix(1.181248,0.000000,0.000000,0.943878,-77.46799,5.346100)"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient2089"
+ xlink:href="#light90to0"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="36.873619"
+ x2="39.857029"
+ y1="4.5492039"
+ x1="10.878086"
+ gradientTransform="matrix(1.240487,0.000000,0.000000,0.932195,-75.33821,7.022631)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2092"
+ xlink:href="#light90to0"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="36.873619"
+ x2="39.857029"
+ y1="4.5492039"
+ x1="10.878086"
+ gradientTransform="matrix(1.240487,0.000000,0.000000,0.932195,-75.33821,7.022631)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient3660"
+ xlink:href="#light90to0"
+ inkscape:collect="always" />
+ <radialGradient
+ r="31.677956"
+ fy="46.914463"
+ fx="48.488476"
+ cy="46.914463"
+ cx="48.488476"
+ gradientTransform="matrix(1.181248,0.000000,0.000000,0.943878,-77.46799,5.346100)"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient3662"
+ xlink:href="#light90to0"
+ inkscape:collect="always" />
+ <radialGradient
+ r="31.677956"
+ fy="46.914463"
+ fx="48.488476"
+ cy="46.914463"
+ cx="48.488476"
+ gradientTransform="matrix(1.472290,0.000000,0.000000,1.178586,-15.47463,-0.337081)"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient3665"
+ xlink:href="#light90to0"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="36.873619"
+ x2="39.857029"
+ y1="4.5492039"
+ x1="10.878086"
+ gradientTransform="matrix(1.546124,0.000000,0.000000,1.163997,-42.82010,1.756341)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient3668"
+ xlink:href="#light90to0"
+ inkscape:collect="always" />
+ <radialGradient
+ r="31.677956"
+ fy="46.914463"
+ fx="48.488476"
+ cy="46.914463"
+ cx="48.488476"
+ gradientTransform="matrix(1.472290,0.000000,0.000000,1.178586,-15.47463,-0.337081)"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient3678"
+ xlink:href="#light90to0"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="36.873619"
+ x2="39.857029"
+ y1="4.5492039"
+ x1="10.878086"
+ gradientTransform="matrix(1.546124,0.000000,0.000000,1.163997,-12.82010,1.756341)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient3682"
+ xlink:href="#light90to0"
+ inkscape:collect="always" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="4.3288472"
+ inkscape:cx="33.946093"
+ inkscape:cy="27.610797"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:document-units="px"
+ inkscape:grid-bbox="true"
+ inkscape:window-width="1020"
+ inkscape:window-height="691"
+ inkscape:window-x="0"
+ inkscape:window-y="0" />
+ <metadata
+ id="metadata4">
+ <rdf:RDF
+ id="RDF5">
+ <cc:Work
+ rdf:about=""
+ id="Work6">
+ <dc:format
+ id="format7">image/svg+xml</dc:format>
+ <dc:type
+ id="type9"
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ id="layer1"
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer">
+ <path
+ id="rect7971"
+ d="M 30.000000,7.1250000 C 22.317773,7.1250000 15.355679,9.5078220 10.156250,13.500000 C 4.9568200,17.492177 1.4062500,23.269928 1.4062500,29.968750 C 1.4062500,36.667572 4.9568200,42.507823 10.156250,46.500000 C 15.355679,50.492180 22.317774,52.875000 30.000000,52.875000 C 37.682225,52.875002 44.675571,50.492178 49.875000,46.500000 C 55.074429,42.507825 58.593750,36.667572 58.593750,29.968750 C 58.593752,23.269928 55.074430,17.492177 49.875000,13.500000 C 44.675570,9.5078222 37.682226,7.1250000 30.000000,7.1250000 z "
+ style="opacity:0.79446638;fill:#0028c6;fill-opacity:0.18099548;stroke:#000000;stroke-width:0.0000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:0.035294119" />
+ <path
+ id="path8746"
+ d="M 30.000000,7.1250000 C 22.317773,7.1250000 15.355679,9.5078220 10.156250,13.500000 C 4.9568200,17.492177 1.4062500,23.269928 1.4062500,29.968750 C 1.4062500,35.373532 3.7824490,40.170227 7.4062500,43.937500 C 25.754627,28.015820 45.616873,27.218125 56.187500,20.750000 C 54.657054,17.958644 52.482639,15.502173 49.875000,13.500000 C 44.675570,9.5078222 37.682226,7.1250000 30.000000,7.1250000 z "
+ style="opacity:0.79446638;fill:url(#linearGradient3682);fill-opacity:1.0000000;stroke:#000000;stroke-width:0.0000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:0.035294119" />
+ <path
+ id="path9514"
+ d="M 30.000000,7.1250000 C 22.317773,7.1250000 15.355679,9.5078220 10.156250,13.500000 C 4.9568200,17.492177 1.4062500,23.269928 1.4062500,29.968750 C 1.4062500,36.667572 4.9568202,42.507823 10.156250,46.500000 C 15.355679,50.492180 22.317774,52.875000 30.000000,52.875000 C 37.682225,52.875002 44.675571,50.492178 49.875000,46.500000 C 55.074429,42.507825 58.593750,36.667572 58.593750,29.968750 C 58.593752,23.269928 55.074430,17.492177 49.875000,13.500000 C 44.675570,9.5078222 37.682226,7.1250000 30.000000,7.1250000 z "
+ style="opacity:0.97233200;fill:url(#radialGradient3678);fill-opacity:1.0000000;stroke:#000000;stroke-width:0.0000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:0.035294119" />
+ <g
+ transform="matrix(1.034994,0.000000,0.000000,0.947886,-1.049820,1.606088)"
+ id="g2879">
+ <path
+ sodipodi:nodetypes="cccccccc"
+ id="path2095"
+ d="M 15.715627,7.8733917 C 14.686976,8.3945360 14.043469,9.5270380 14.459506,10.644495 C 14.875544,11.761955 16.112458,12.333045 17.222232,11.920064 C 20.059953,10.583282 22.969503,9.5338180 25.735394,8.7716720 C 26.485511,8.5331940 27.042274,7.8985157 27.184094,7.1202427 C 27.325911,6.3419677 27.029771,5.5463973 26.413534,5.0501646 C 25.797297,4.5539337 25.042091,4.5727734 24.237406,4.7473875 C 21.253154,5.3584125 18.484391,6.3285845 15.715627,7.8733917 z "
+ style="fill:#313436;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:5.5999999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000" />
+ <path
+ sodipodi:nodetypes="cccccccc"
+ id="path2863"
+ d="M 15.040511,52.036580 C 14.011860,51.515436 13.368353,50.382934 13.784390,49.265477 C 14.200428,48.148017 15.437342,47.576927 16.547116,47.989908 C 19.384837,49.326690 22.294387,50.376154 25.060278,51.138300 C 25.810395,51.376778 26.367158,52.011456 26.508978,52.789729 C 26.650795,53.568004 26.354655,54.363575 25.738418,54.859807 C 25.122181,55.356038 24.366975,55.337199 23.562290,55.162585 C 20.578038,54.551560 17.809275,53.581388 15.040511,52.036580 z "
+ style="fill:#313436;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:5.5999999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000" />
+ <path
+ sodipodi:nodetypes="cccccccc"
+ id="path2865"
+ d="M 44.959488,7.8733920 C 45.988139,8.3945360 46.631646,9.5270380 46.215609,10.644495 C 45.799571,11.761955 44.562657,12.333045 43.452883,11.920064 C 40.615162,10.583282 37.705612,9.5338180 34.939721,8.7716720 C 34.189604,8.5331940 33.632841,7.8985160 33.491021,7.1202430 C 33.349204,6.3419677 33.645344,5.5463973 34.261581,5.0501646 C 34.877818,4.5539337 35.633024,4.5727734 36.437709,4.7473875 C 39.421961,5.3584125 42.190724,6.3285845 44.959488,7.8733920 z "
+ style="fill:#313436;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:5.5999999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000" />
+ <path
+ sodipodi:nodetypes="cccccccc"
+ id="path2867"
+ d="M 44.284370,52.036580 C 45.313021,51.515436 45.956528,50.382934 45.540491,49.265477 C 45.124453,48.148017 43.887539,47.576927 42.777765,47.989908 C 39.940044,49.326690 37.030494,50.376154 34.264603,51.138300 C 33.514486,51.376778 32.957723,52.011456 32.815903,52.789729 C 32.674086,53.568004 32.970226,54.363575 33.586463,54.859807 C 34.202700,55.356038 34.957906,55.337199 35.762591,55.162585 C 38.746843,54.551560 41.515606,53.581388 44.284370,52.036580 z "
+ style="fill:#313436;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:5.5999999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000" />
+ <path
+ sodipodi:nodetypes="cccccccc"
+ id="path2869"
+ d="M 1.1508292,24.851646 C 0.79196783,25.947517 1.1377395,27.203345 2.2220836,27.699323 C 3.3064305,28.195304 4.5848824,27.724495 5.0775894,26.647745 C 6.1389136,23.695925 7.4541930,20.896480 8.8710548,18.401782 C 9.2328376,17.702738 9.1777437,16.860263 8.7277037,16.209658 C 8.2776597,15.559055 7.5057040,15.205904 6.7190689,15.290760 C 5.9324353,15.375617 5.4117458,15.922950 4.9662183,16.615419 C 3.2880935,19.157664 2.0162977,21.801490 1.1508292,24.851646 z "
+ style="fill:#313436;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:5.5999999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000" />
+ <path
+ sodipodi:nodetypes="cccccccc"
+ id="path2871"
+ d="M 58.849170,35.058325 C 59.208032,33.962455 58.862260,32.706627 57.777916,32.210649 C 56.693569,31.714668 55.415117,32.185477 54.922410,33.262227 C 53.861086,36.214047 52.545807,39.013492 51.128945,41.508190 C 50.767162,42.207234 50.822256,43.049709 51.272296,43.700314 C 51.722340,44.350917 52.494296,44.704067 53.280930,44.619212 C 54.067564,44.534355 54.588254,43.987022 55.033782,43.294553 C 56.711907,40.752308 57.983702,38.108482 58.849170,35.058325 z "
+ style="fill:#313436;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:5.5999999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000" />
+ <path
+ sodipodi:nodetypes="cccccccc"
+ id="path2873"
+ d="M 4.3255135,45.237875 C 4.8466574,46.266526 5.9791594,46.910033 7.0966154,46.493995 C 8.2140765,46.077958 8.7851655,44.841044 8.3721854,43.731270 C 7.0354024,40.893548 5.9859395,37.983999 5.2237936,35.218107 C 4.9853145,34.467990 4.3506365,33.911227 3.5723636,33.769407 C 2.7940894,33.627590 1.9985185,33.923730 1.5022854,34.539967 C 1.0060545,35.156204 1.0248945,35.911410 1.1995086,36.716095 C 1.8105334,39.700347 2.7807056,42.469110 4.3255135,45.237875 z "
+ style="fill:#313436;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:5.5999999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000" />
+ <path
+ sodipodi:nodetypes="cccccccc"
+ id="path2875"
+ d="M 55.674487,14.672098 C 55.153343,13.643446 54.020841,12.999939 52.903385,13.415977 C 51.785924,13.832014 51.214835,15.068929 51.627815,16.178702 C 52.964598,19.016424 54.014061,21.925973 54.776208,24.691864 C 55.014687,25.441982 55.649364,25.998745 56.427637,26.140565 C 57.205913,26.282381 58.001483,25.986242 58.497714,25.370005 C 58.993947,24.753768 58.975106,23.998562 58.800494,23.193876 C 58.189469,20.209624 57.219295,17.440862 55.674487,14.672098 z "
+ style="fill:#313436;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:5.5999999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000" />
+ </g>
+ </g>
+</svg>
diff --git a/chalk/plugins/tools/selectiontools/tool_elliptical_selection_cursor.png b/chalk/plugins/tools/selectiontools/tool_elliptical_selection_cursor.png
new file mode 100644
index 00000000..5e02f87b
--- /dev/null
+++ b/chalk/plugins/tools/selectiontools/tool_elliptical_selection_cursor.png
Binary files differ
diff --git a/chalk/plugins/tools/selectiontools/tool_eraser_selection.png b/chalk/plugins/tools/selectiontools/tool_eraser_selection.png
new file mode 100644
index 00000000..ffe2e440
--- /dev/null
+++ b/chalk/plugins/tools/selectiontools/tool_eraser_selection.png
Binary files differ
diff --git a/chalk/plugins/tools/selectiontools/tool_eraser_selection.svg b/chalk/plugins/tools/selectiontools/tool_eraser_selection.svg
new file mode 100644
index 00000000..9c147c1b
--- /dev/null
+++ b/chalk/plugins/tools/selectiontools/tool_eraser_selection.svg
@@ -0,0 +1,1993 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://web.resource.org/cc/"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="48.000000pt"
+ height="48.000000pt"
+ id="svg11941"
+ sodipodi:version="0.32"
+ inkscape:version="0.41"
+ sodipodi:docbase="/home/danny/work/kde/koffice/chalk/chalk/new"
+ sodipodi:docname="tool_eraser_selection.svg"
+ inkscape:export-filename="/home/danny/work/kde/koffice/chalk/chalk/new/tool_eraser_selection.png"
+ inkscape:export-xdpi="33.000000"
+ inkscape:export-ydpi="33.000000">
+ <defs
+ id="defs3">
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#light90to0"
+ id="linearGradient9512"
+ gradientTransform="matrix(0.996235,0.000000,0.000000,1.003779,-3.391158,13.41516)"
+ x1="10.878086"
+ y1="4.5492039"
+ x2="39.857029"
+ y2="36.873619"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#light90to0"
+ id="radialGradient10280"
+ gradientTransform="matrix(0.983903,0.000000,0.000000,1.016360,-3.999998,12.41516)"
+ cx="48.488476"
+ cy="46.914463"
+ fx="48.488476"
+ fy="46.914463"
+ r="31.677956"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#light90to0"
+ id="radialGradient7969"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.000000,-2.592685,0.379735,0.000000,-30.45690,-1.224420)"
+ cx="-23.859682"
+ cy="95.221397"
+ fx="-23.859682"
+ fy="95.221397"
+ r="8.5514765" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#light90to0"
+ id="linearGradient7967"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.000000,-2.503650,0.399417,0.000000,-30.45690,-1.829360)"
+ x1="-16.569721"
+ y1="81.885979"
+ x2="-21.621279"
+ y2="85.112236" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#light90to0"
+ id="radialGradient7965"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.000000,-2.592685,0.379735,0.000000,-30.45690,-21.22442)"
+ cx="-23.859682"
+ cy="95.221397"
+ fx="-23.859682"
+ fy="95.221397"
+ r="8.5514765" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#light90to0"
+ id="linearGradient7963"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.000000,-2.503650,0.399417,0.000000,-30.45690,-21.82936)"
+ x1="-16.569721"
+ y1="81.885979"
+ x2="-21.621279"
+ y2="85.112236" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#light90to0"
+ id="radialGradient7961"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.000000,-2.592685,0.379735,0.000000,26.44710,-11.22442)"
+ cx="-23.859682"
+ cy="95.221397"
+ fx="-23.859682"
+ fy="95.221397"
+ r="8.5514765" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#light90to0"
+ id="linearGradient7959"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.000000,-2.503650,0.399417,0.000000,26.44710,-11.82936)"
+ x1="-16.569721"
+ y1="81.885979"
+ x2="-21.621279"
+ y2="85.112236" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#light90to0"
+ id="radialGradient7957"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.633416,0.000000,0.000000,0.379735,-44.86332,44.21180)"
+ cx="25.952410"
+ cy="52.497688"
+ fx="25.923746"
+ fy="51.904903"
+ r="14.270030" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#light90to0"
+ id="linearGradient7955"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.503650,0.000000,0.000000,0.399417,-44.86332,44.21180)"
+ x1="22.425571"
+ y1="35.206337"
+ x2="22.396454"
+ y2="41.545322" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#light90to0"
+ id="radialGradient7953"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.633416,0.000000,0.000000,0.379735,-22.86332,44.21180)"
+ cx="25.952410"
+ cy="52.497688"
+ fx="25.923746"
+ fy="51.904903"
+ r="14.270030" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#light90to0"
+ id="linearGradient7951"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.503650,0.000000,0.000000,0.399417,-22.86332,44.21180)"
+ x1="22.425571"
+ y1="35.206337"
+ x2="22.396454"
+ y2="41.545322" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#light90to0"
+ id="radialGradient7949"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.633416,0.000000,0.000000,0.379735,-38.65916,-12.48664)"
+ cx="25.952410"
+ cy="52.497688"
+ fx="25.923746"
+ fy="51.904903"
+ r="14.270030" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#light90to0"
+ id="linearGradient7947"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.503650,0.000000,0.000000,0.399417,-38.65916,-12.48664)"
+ x1="22.425571"
+ y1="35.206337"
+ x2="22.396454"
+ y2="41.545322" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#light90to0"
+ id="linearGradient7945"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.000000,-2.503650,0.399417,0.000000,26.44710,4.170640)"
+ x1="-16.569721"
+ y1="81.885979"
+ x2="-21.621279"
+ y2="85.112236" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#light90to0"
+ id="radialGradient7943"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.878497,0.000000,0.000000,1.138308,-18.65916,-0.486640)"
+ cx="92.643608"
+ cy="55.457653"
+ fx="92.643608"
+ fy="55.457653"
+ r="9.9914455" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#light90to0"
+ id="radialGradient7941"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.000000,-2.592685,0.379735,0.000000,26.44710,-31.22442)"
+ cx="-23.859682"
+ cy="95.221397"
+ fx="-23.859682"
+ fy="95.221397"
+ r="8.5514765" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#light90to0"
+ id="linearGradient7939"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.000000,-2.503650,0.399417,0.000000,26.44710,-31.82936)"
+ x1="-16.569721"
+ y1="81.885979"
+ x2="-21.621279"
+ y2="85.112236" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#light90to0"
+ id="radialGradient7937"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.633416,0.000000,0.000000,0.379735,-16.65916,-12.48664)"
+ cx="25.952410"
+ cy="52.497688"
+ fx="25.923746"
+ fy="51.904903"
+ r="14.270030" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#light90to0"
+ id="linearGradient7935"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.503650,0.000000,0.000000,0.399417,-16.65916,-12.48664)"
+ x1="22.425571"
+ y1="35.206337"
+ x2="22.396454"
+ y2="41.545322" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#light90to0"
+ id="radialGradient7933"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(0.665867,1.501801)"
+ cx="8.0907059"
+ cy="9.5002232"
+ fx="8.0907059"
+ fy="9.5002232"
+ r="5.8189325" />
+ <linearGradient
+ id="light90to0">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0.90833336;"
+ offset="0.0000000"
+ id="stop1890" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0.0000000;"
+ offset="1.0000000"
+ id="stop1892" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#light90to0"
+ id="linearGradient7931"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.791643,0.000000,0.000000,1.263196,-1.626700,-5.630763)"
+ x1="4.4536543"
+ y1="6.5494914"
+ x2="14.101834"
+ y2="13.431447" />
+ <linearGradient
+ id="wihitetolightgray">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1.0000000;"
+ offset="0.0000000"
+ id="stop1885" />
+ <stop
+ style="stop-color:#d5d4d4;stop-opacity:1.0000000;"
+ offset="1.0000000"
+ id="stop1886" />
+ </linearGradient>
+ <linearGradient
+ id="orangemoretoyelow">
+ <stop
+ style="stop-color:#ff0d00;stop-opacity:1.0000000;"
+ offset="0.0000000"
+ id="stop2671" />
+ <stop
+ style="stop-color:#ff3900;stop-opacity:1.0000000;"
+ offset="0.74641621"
+ id="stop2679" />
+ <stop
+ style="stop-color:#d05521;stop-opacity:1.0000000;"
+ offset="1.0000000"
+ id="stop2672" />
+ </linearGradient>
+ <linearGradient
+ id="graytoblack">
+ <stop
+ style="stop-color:#7d7d7d;stop-opacity:1.0000000;"
+ offset="0.0000000"
+ id="stop5097" />
+ <stop
+ style="stop-color:#000000;stop-opacity:1.0000000;"
+ offset="1.0000000"
+ id="stop5098" />
+ </linearGradient>
+ <linearGradient
+ id="shadow100to0">
+ <stop
+ style="stop-color:#000000;stop-opacity:1.0000000;"
+ offset="0.0000000"
+ id="stop3425" />
+ <stop
+ style="stop-color:#000000;stop-opacity:0.0000000;"
+ offset="1.0000000"
+ id="stop3426" />
+ </linearGradient>
+ <linearGradient
+ id="light50to25to7">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0.47450981;"
+ offset="0.0000000"
+ id="stop2791" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0.25833333;"
+ offset="0.50000000"
+ id="stop2795" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0.10833333;"
+ offset="1.0000000"
+ id="stop2793" />
+ </linearGradient>
+ <linearGradient
+ id="orangetoblackorange">
+ <stop
+ style="stop-color:#ff8b00;stop-opacity:1.0000000;"
+ offset="0.0000000"
+ id="stop4207" />
+ <stop
+ style="stop-color:#4d0200;stop-opacity:1.0000000;"
+ offset="1.0000000"
+ id="stop4209" />
+ </linearGradient>
+ <linearGradient
+ id="light100to0">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1.0000000;"
+ offset="0.0000000"
+ id="stop2764" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0.0000000;"
+ offset="1.0000000"
+ id="stop2765" />
+ </linearGradient>
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#wihitetolightgray"
+ id="radialGradient13045"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.281643,-1.886110e-2,0.000000,0.179517,-4.383105,-16.75305)"
+ cx="86.514435"
+ cy="332.37268"
+ fx="86.514435"
+ fy="332.37268"
+ r="83.259750" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#light100to0"
+ id="linearGradient13047"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.281643,-1.886110e-2,0.000000,0.179517,-4.383105,-16.75305)"
+ x1="86.514435"
+ y1="335.76117"
+ x2="73.286217"
+ y2="247.07323" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#wihitetolightgray"
+ id="linearGradient13049"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.195716,-1.310673e-2,0.000000,0.258334,-4.383105,-16.75305)"
+ x1="132.72992"
+ y1="279.47504"
+ x2="84.003502"
+ y2="210.46336" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#light100to0"
+ id="linearGradient13051"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.195716,-1.310673e-2,0.000000,0.258334,-4.383105,-16.75305)"
+ x1="136.55682"
+ y1="213.43617"
+ x2="54.607849"
+ y2="250.54321" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#wihitetolightgray"
+ id="linearGradient13053"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.195716,-1.310673e-2,0.000000,0.258334,-4.383105,-16.75305)"
+ x1="145.42192"
+ y1="264.70230"
+ x2="198.28532"
+ y2="218.74910" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#light100to0"
+ id="linearGradient13055"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.180988,-1.212046e-2,0.000000,0.279356,-4.383105,-16.75305)"
+ x1="159.18221"
+ y1="219.68500"
+ x2="184.11906"
+ y2="234.35374" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#orangemoretoyelow"
+ id="linearGradient13057"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.273196,-8.526361e-2,0.000000,0.785425,-7.025630e-17,2.371150e-16)"
+ x1="36.606781"
+ y1="4.8842254"
+ x2="28.653791"
+ y2="47.244961" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#light100to0"
+ id="linearGradient13059"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.286285,-1.917198e-2,0.000000,0.176607,-4.383105,-16.75305)"
+ x1="134.59328"
+ y1="300.55457"
+ x2="126.82574"
+ y2="189.89319" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#orangemoretoyelow"
+ id="linearGradient13061"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.870407,-5.828951e-2,0.000000,1.148888,-7.025630e-17,2.371150e-16)"
+ x1="77.830383"
+ y1="43.692036"
+ x2="40.120766"
+ y2="18.127838" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#light100to0"
+ id="linearGradient13063"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.218024,-1.460066e-2,0.000000,0.231901,-4.383105,-16.75305)"
+ x1="188.09673"
+ y1="173.35371"
+ x2="269.30646"
+ y2="220.31316" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#graytoblack"
+ id="linearGradient13065"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.262073,-1.755056e-2,0.000000,0.217660,-4.383105,-17.56717)"
+ spreadMethod="reflect"
+ x1="138.68466"
+ y1="221.05045"
+ x2="90.955330"
+ y2="574.66980" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#shadow100to0"
+ id="linearGradient13067"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.273027,-1.828417e-2,0.000000,0.185183,-4.383100,-12.51208)"
+ x1="124.51332"
+ y1="199.20517"
+ x2="99.415497"
+ y2="224.95407" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#shadow100to0"
+ id="linearGradient13069"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.273027,-1.828417e-2,0.000000,0.185183,-4.383100,-12.51208)"
+ x1="124.51332"
+ y1="199.20517"
+ x2="99.415497"
+ y2="224.95407" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#shadow100to0"
+ id="linearGradient13071"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.273027,-1.828417e-2,0.000000,0.185183,-4.383100,-12.51208)"
+ x1="163.74318"
+ y1="301.15747"
+ x2="137.31036"
+ y2="301.15750" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#light50to25to7"
+ id="radialGradient13073"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.282097,-1.889158e-2,0.000000,0.179229,-4.383100,-12.51208)"
+ cx="145.82777"
+ cy="265.90030"
+ fx="145.82777"
+ fy="265.90030"
+ r="24.113470" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#orangetoblackorange"
+ id="linearGradient13075"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.302207,-2.036411e-2,1.731823e-2,0.187588,-5.784573,-19.06245)"
+ spreadMethod="reflect"
+ x1="119.80309"
+ y1="179.83293"
+ x2="129.06503"
+ y2="189.54620" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#orangetoblackorange"
+ id="linearGradient13077"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.302207,-2.036411e-2,1.731823e-2,0.187588,-0.406378,-15.67507)"
+ spreadMethod="reflect"
+ x1="119.80309"
+ y1="179.83293"
+ x2="129.06503"
+ y2="189.54620" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#orangetoblackorange"
+ id="linearGradient13079"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.302207,-2.036411e-2,1.731823e-2,0.187588,4.903646,-12.38550)"
+ spreadMethod="reflect"
+ x1="119.80309"
+ y1="179.83293"
+ x2="129.06503"
+ y2="189.54620" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#orangetoblackorange"
+ id="linearGradient13081"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.250582,0.000000,0.000000,0.227641,-4.383105,-17.56717)"
+ spreadMethod="reflect"
+ x1="203.79491"
+ y1="203.68118"
+ x2="120.08266"
+ y2="229.92639" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#light100to0"
+ id="linearGradient13083"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.331788,0.000000,0.000000,0.171926,-4.383100,-17.56719)"
+ x1="24.253796"
+ y1="213.05858"
+ x2="189.53893"
+ y2="213.05858" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#light100to0"
+ id="linearGradient13085"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.182201,0.000000,0.000000,0.313078,-4.383100,-17.56719)"
+ x1="42.080868"
+ y1="215.05040"
+ x2="88.821419"
+ y2="172.01805" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#light100to0"
+ id="linearGradient13087"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.331788,0.000000,0.000000,0.171926,-4.383100,-17.56719)"
+ x1="149.74805"
+ y1="120.63583"
+ x2="144.13652"
+ y2="216.48166" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#graytoblack"
+ id="radialGradient16881"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.281643,-1.886110e-2,0.000000,0.179517,-4.383105,-16.75305)"
+ cx="86.514435"
+ cy="332.37268"
+ fx="86.514435"
+ fy="332.37268"
+ r="83.259750" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#graytoblack"
+ id="linearGradient18401"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.195716,-1.310673e-2,0.000000,0.258334,-4.383105,-16.75305)"
+ x1="132.72992"
+ y1="279.47504"
+ x2="84.003502"
+ y2="210.46336" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#graytoblack"
+ id="linearGradient19163"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.195716,-1.310673e-2,0.000000,0.258334,-4.383105,-16.75305)"
+ x1="145.42192"
+ y1="264.70230"
+ x2="198.28532"
+ y2="218.74910" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#light90to0"
+ id="radialGradient19963"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.000000,-2.142981,0.309244,0.000000,-25.58840,11.38378)"
+ cx="-23.859682"
+ cy="95.221397"
+ fx="-23.859682"
+ fy="95.221397"
+ r="8.5514765" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#light90to0"
+ id="linearGradient19966"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.000000,-2.069389,0.325272,0.000000,-25.58840,10.88376)"
+ x1="-16.569721"
+ y1="81.885979"
+ x2="-21.621279"
+ y2="85.112236" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#light90to0"
+ id="radialGradient19970"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.000000,-2.142981,0.309244,0.000000,-25.58840,-5.893883)"
+ cx="-23.859682"
+ cy="95.221397"
+ fx="-23.859682"
+ fy="95.221397"
+ r="8.5514765" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#light90to0"
+ id="linearGradient19973"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.000000,-2.069389,0.325272,0.000000,-25.58840,-6.393896)"
+ x1="-16.569721"
+ y1="81.885979"
+ x2="-21.621279"
+ y2="85.112236" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#light90to0"
+ id="radialGradient19977"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.000000,-2.142981,0.309244,0.000000,20.66765,1.878457)"
+ cx="-23.859682"
+ cy="95.221397"
+ fx="-23.859682"
+ fy="95.221397"
+ r="8.5514765" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#light90to0"
+ id="linearGradient19980"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.000000,-2.069389,0.325272,0.000000,20.66765,1.378444)"
+ x1="-16.569721"
+ y1="81.885979"
+ x2="-21.621279"
+ y2="85.112236" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#light90to0"
+ id="radialGradient19984"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.144567,0.000000,0.000000,0.313870,-38.78637,48.23092)"
+ cx="25.952410"
+ cy="52.497688"
+ fx="25.923746"
+ fy="51.904903"
+ r="14.270030" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#light90to0"
+ id="linearGradient19987"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.038890,0.000000,0.000000,0.330138,-38.78637,48.23092)"
+ x1="22.425571"
+ y1="35.206337"
+ x2="22.396454"
+ y2="41.545322" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#light90to0"
+ id="radialGradient19991"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.144567,0.000000,0.000000,0.313870,-20.05593,48.23092)"
+ cx="25.952410"
+ cy="52.497688"
+ fx="25.923746"
+ fy="51.904903"
+ r="14.270030" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#light90to0"
+ id="linearGradient19994"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.038890,0.000000,0.000000,0.330138,-20.05593,48.23092)"
+ x1="22.425571"
+ y1="35.206337"
+ x2="22.396454"
+ y2="41.545322" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#light90to0"
+ id="radialGradient19998"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.144567,0.000000,0.000000,0.313870,-31.37563,1.327640)"
+ cx="25.952410"
+ cy="52.497688"
+ fx="25.923746"
+ fy="51.904903"
+ r="14.270030" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#light90to0"
+ id="linearGradient20001"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.038890,0.000000,0.000000,0.330138,-31.37563,1.327640)"
+ x1="22.425571"
+ y1="35.206337"
+ x2="22.396454"
+ y2="41.545322" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#light90to0"
+ id="linearGradient20005"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.000000,-2.069389,0.325272,0.000000,20.75234,15.09638)"
+ x1="-16.569721"
+ y1="81.885979"
+ x2="-21.621279"
+ y2="85.112236" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#light90to0"
+ id="radialGradient20008"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.715419,0.000000,0.000000,0.940867,-15.98071,11.24691)"
+ cx="92.643608"
+ cy="55.457653"
+ fx="92.643608"
+ fy="55.457653"
+ r="9.9914455" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#light90to0"
+ id="radialGradient20019"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.144567,0.000000,0.000000,0.313870,-12.72324,1.327640)"
+ cx="25.952410"
+ cy="52.497688"
+ fx="25.923746"
+ fy="51.904903"
+ r="14.270030" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#light90to0"
+ id="linearGradient20022"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.038890,0.000000,0.000000,0.330138,-12.72324,1.327640)"
+ x1="22.425571"
+ y1="35.206337"
+ x2="22.396454"
+ y2="41.545322" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#light90to0"
+ id="radialGradient20026"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.542260,0.000000,0.000000,1.241312,-0.785301,11.64914)"
+ cx="8.0907059"
+ cy="9.5002232"
+ fx="8.0907059"
+ fy="9.5002232"
+ r="5.8189325" />
+ <linearGradient
+ y2="36.873619"
+ x2="39.857029"
+ y1="4.5492039"
+ x1="10.878086"
+ gradientTransform="matrix(0.996235,0.000000,0.000000,1.003779,-3.391158,13.41516)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1472"
+ xlink:href="#light90to0"
+ inkscape:collect="always" />
+ <radialGradient
+ r="31.677956"
+ fy="46.914463"
+ fx="48.488476"
+ cy="46.914463"
+ cx="48.488476"
+ gradientTransform="matrix(0.983903,0.000000,0.000000,1.016360,-3.999998,12.41516)"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient1474"
+ xlink:href="#light90to0"
+ inkscape:collect="always" />
+ <radialGradient
+ r="83.259750"
+ fy="332.37268"
+ fx="86.514435"
+ cy="332.37268"
+ cx="86.514435"
+ gradientTransform="matrix(0.281643,-1.886110e-2,0.000000,0.179517,-4.383105,-16.75305)"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient1476"
+ xlink:href="#wihitetolightgray"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="247.07323"
+ x2="73.286217"
+ y1="335.76117"
+ x1="86.514435"
+ gradientTransform="matrix(0.281643,-1.886110e-2,0.000000,0.179517,-4.383105,-16.75305)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1478"
+ xlink:href="#light100to0"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="210.46336"
+ x2="84.003502"
+ y1="279.47504"
+ x1="132.72992"
+ gradientTransform="matrix(0.195716,-1.310673e-2,0.000000,0.258334,-4.383105,-16.75305)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1480"
+ xlink:href="#wihitetolightgray"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="250.54321"
+ x2="54.607849"
+ y1="213.43617"
+ x1="136.55682"
+ gradientTransform="matrix(0.195716,-1.310673e-2,0.000000,0.258334,-4.383105,-16.75305)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1482"
+ xlink:href="#light100to0"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="218.74910"
+ x2="198.28532"
+ y1="264.70230"
+ x1="145.42192"
+ gradientTransform="matrix(0.195716,-1.310673e-2,0.000000,0.258334,-4.383105,-16.75305)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1484"
+ xlink:href="#wihitetolightgray"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="234.35374"
+ x2="184.11906"
+ y1="219.68500"
+ x1="159.18221"
+ gradientTransform="matrix(0.180988,-1.212046e-2,0.000000,0.279356,-4.383105,-16.75305)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1486"
+ xlink:href="#light100to0"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="47.244961"
+ x2="28.653791"
+ y1="4.8842254"
+ x1="36.606781"
+ gradientTransform="matrix(1.273196,-8.526361e-2,0.000000,0.785425,-1.806714e-15,-3.087808e-16)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1488"
+ xlink:href="#orangemoretoyelow"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="189.89319"
+ x2="126.82574"
+ y1="300.55457"
+ x1="134.59328"
+ gradientTransform="matrix(0.286285,-1.917198e-2,0.000000,0.176607,-4.383105,-16.75305)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1490"
+ xlink:href="#light100to0"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="18.127838"
+ x2="40.120766"
+ y1="43.692036"
+ x1="77.830383"
+ gradientTransform="matrix(0.870407,-5.828951e-2,0.000000,1.148888,-1.806714e-15,-3.087808e-16)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1492"
+ xlink:href="#orangemoretoyelow"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="220.31316"
+ x2="269.30646"
+ y1="173.35371"
+ x1="188.09673"
+ gradientTransform="matrix(0.218024,-1.460066e-2,0.000000,0.231901,-4.383105,-16.75305)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1494"
+ xlink:href="#light100to0"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="574.66980"
+ x2="90.955330"
+ y1="221.05045"
+ x1="138.68466"
+ spreadMethod="reflect"
+ gradientTransform="matrix(0.262073,-1.755056e-2,0.000000,0.217660,-4.383105,-17.56717)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1496"
+ xlink:href="#graytoblack"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="224.95407"
+ x2="99.415497"
+ y1="199.20517"
+ x1="124.51332"
+ gradientTransform="matrix(0.273027,-1.828417e-2,0.000000,0.185183,-4.383100,-12.51208)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1498"
+ xlink:href="#shadow100to0"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="224.95407"
+ x2="99.415497"
+ y1="199.20517"
+ x1="124.51332"
+ gradientTransform="matrix(0.273027,-1.828417e-2,0.000000,0.185183,-4.383100,-12.51208)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1500"
+ xlink:href="#shadow100to0"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="301.15750"
+ x2="137.31036"
+ y1="301.15747"
+ x1="163.74318"
+ gradientTransform="matrix(0.273027,-1.828417e-2,0.000000,0.185183,-4.383100,-12.51208)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1502"
+ xlink:href="#shadow100to0"
+ inkscape:collect="always" />
+ <radialGradient
+ r="24.113470"
+ fy="265.90030"
+ fx="145.82777"
+ cy="265.90030"
+ cx="145.82777"
+ gradientTransform="matrix(0.282097,-1.889158e-2,0.000000,0.179229,-4.383100,-12.51208)"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient1504"
+ xlink:href="#light50to25to7"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="189.54620"
+ x2="129.06503"
+ y1="179.83293"
+ x1="119.80309"
+ spreadMethod="reflect"
+ gradientTransform="matrix(0.302207,-2.036411e-2,1.731823e-2,0.187588,-5.784573,-19.06245)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1506"
+ xlink:href="#orangetoblackorange"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="189.54620"
+ x2="129.06503"
+ y1="179.83293"
+ x1="119.80309"
+ spreadMethod="reflect"
+ gradientTransform="matrix(0.302207,-2.036411e-2,1.731823e-2,0.187588,-0.406378,-15.67507)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1508"
+ xlink:href="#orangetoblackorange"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="189.54620"
+ x2="129.06503"
+ y1="179.83293"
+ x1="119.80309"
+ spreadMethod="reflect"
+ gradientTransform="matrix(0.302207,-2.036411e-2,1.731823e-2,0.187588,4.903646,-12.38550)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1510"
+ xlink:href="#orangetoblackorange"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="229.92639"
+ x2="120.08266"
+ y1="203.68118"
+ x1="203.79491"
+ spreadMethod="reflect"
+ gradientTransform="matrix(0.250582,0.000000,0.000000,0.227641,-4.383105,-17.56717)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1512"
+ xlink:href="#orangetoblackorange"
+ inkscape:collect="always" />
+ <radialGradient
+ r="83.259750"
+ fy="332.37268"
+ fx="86.514435"
+ cy="332.37268"
+ cx="86.514435"
+ gradientTransform="matrix(0.281643,-1.886110e-2,0.000000,0.179517,-4.383105,-16.75305)"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient1514"
+ xlink:href="#graytoblack"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="247.07323"
+ x2="73.286217"
+ y1="335.76117"
+ x1="86.514435"
+ gradientTransform="matrix(0.281643,-1.886110e-2,0.000000,0.179517,-4.383105,-16.75305)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1516"
+ xlink:href="#light100to0"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="213.05858"
+ x2="189.53893"
+ y1="213.05858"
+ x1="24.253796"
+ gradientTransform="matrix(0.331788,0.000000,0.000000,0.171926,-4.383100,-17.56719)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1518"
+ xlink:href="#light100to0"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="218.74910"
+ x2="198.28532"
+ y1="264.70230"
+ x1="145.42192"
+ gradientTransform="matrix(0.195716,-1.310673e-2,0.000000,0.258334,-4.383105,-16.75305)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1520"
+ xlink:href="#graytoblack"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="234.35374"
+ x2="184.11906"
+ y1="219.68500"
+ x1="159.18221"
+ gradientTransform="matrix(0.180988,-1.212046e-2,0.000000,0.279356,-4.383105,-16.75305)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1522"
+ xlink:href="#light100to0"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="210.46336"
+ x2="84.003502"
+ y1="279.47504"
+ x1="132.72992"
+ gradientTransform="matrix(0.195716,-1.310673e-2,0.000000,0.258334,-4.383105,-16.75305)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1524"
+ xlink:href="#graytoblack"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="250.54321"
+ x2="54.607849"
+ y1="213.43617"
+ x1="136.55682"
+ gradientTransform="matrix(0.195716,-1.310673e-2,0.000000,0.258334,-4.383105,-16.75305)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1526"
+ xlink:href="#light100to0"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="172.01805"
+ x2="88.821419"
+ y1="215.05040"
+ x1="42.080868"
+ gradientTransform="matrix(0.182201,0.000000,0.000000,0.313078,-4.383100,-17.56719)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1528"
+ xlink:href="#light100to0"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="216.48166"
+ x2="144.13652"
+ y1="120.63583"
+ x1="149.74805"
+ gradientTransform="matrix(0.331788,0.000000,0.000000,0.171926,-4.383100,-17.56719)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1530"
+ xlink:href="#light100to0"
+ inkscape:collect="always" />
+ <radialGradient
+ r="31.677956"
+ fy="46.914463"
+ fx="48.488476"
+ cy="46.914463"
+ cx="48.488476"
+ gradientTransform="matrix(0.922906,0.000000,0.000000,0.953351,-3.844255,9.876188)"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient1575"
+ xlink:href="#light90to0"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="36.873619"
+ x2="39.857029"
+ y1="4.5492039"
+ x1="10.878086"
+ gradientTransform="matrix(0.934473,0.000000,0.000000,0.941550,-3.273160,10.81419)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1578"
+ xlink:href="#light90to0"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="36.873619"
+ x2="39.857029"
+ y1="4.5492039"
+ x1="10.878086"
+ gradientTransform="matrix(0.934473,0.000000,0.000000,0.941550,-3.273160,10.81419)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1474"
+ xlink:href="#light90to0"
+ inkscape:collect="always" />
+ <radialGradient
+ r="31.677956"
+ fy="46.914463"
+ fx="48.488476"
+ cy="46.914463"
+ cx="48.488476"
+ gradientTransform="matrix(0.922906,0.000000,0.000000,0.953351,-3.844255,9.876188)"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient1477"
+ xlink:href="#light90to0"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="36.873619"
+ x2="39.857029"
+ y1="4.5492039"
+ x1="10.878086"
+ gradientTransform="matrix(0.934473,0.000000,0.000000,0.941550,-3.273160,10.81419)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1527"
+ xlink:href="#light90to0"
+ inkscape:collect="always" />
+ <radialGradient
+ r="31.677956"
+ fy="46.914463"
+ fx="48.488476"
+ cy="46.914463"
+ cx="48.488476"
+ gradientTransform="matrix(0.922906,0.000000,0.000000,0.953351,-3.844255,9.876188)"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient1529"
+ xlink:href="#light90to0"
+ inkscape:collect="always" />
+ <radialGradient
+ r="83.259750"
+ fy="332.37268"
+ fx="86.514435"
+ cy="332.37268"
+ cx="86.514435"
+ gradientTransform="matrix(0.281643,-1.886110e-2,0.000000,0.179517,-4.383105,-16.75305)"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient1531"
+ xlink:href="#wihitetolightgray"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="247.07323"
+ x2="73.286217"
+ y1="335.76117"
+ x1="86.514435"
+ gradientTransform="matrix(0.281643,-1.886110e-2,0.000000,0.179517,-4.383105,-16.75305)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1533"
+ xlink:href="#light100to0"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="210.46336"
+ x2="84.003502"
+ y1="279.47504"
+ x1="132.72992"
+ gradientTransform="matrix(0.195716,-1.310673e-2,0.000000,0.258334,-4.383105,-16.75305)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1535"
+ xlink:href="#wihitetolightgray"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="250.54321"
+ x2="54.607849"
+ y1="213.43617"
+ x1="136.55682"
+ gradientTransform="matrix(0.195716,-1.310673e-2,0.000000,0.258334,-4.383105,-16.75305)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1537"
+ xlink:href="#light100to0"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="218.74910"
+ x2="198.28532"
+ y1="264.70230"
+ x1="145.42192"
+ gradientTransform="matrix(0.195716,-1.310673e-2,0.000000,0.258334,-4.383105,-16.75305)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1539"
+ xlink:href="#wihitetolightgray"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="234.35374"
+ x2="184.11906"
+ y1="219.68500"
+ x1="159.18221"
+ gradientTransform="matrix(0.180988,-1.212046e-2,0.000000,0.279356,-4.383105,-16.75305)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1541"
+ xlink:href="#light100to0"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="47.244961"
+ x2="28.653791"
+ y1="4.8842254"
+ x1="36.606781"
+ gradientTransform="matrix(1.273196,-8.526361e-2,0.000000,0.785425,-3.588275e-15,-4.926614e-16)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1543"
+ xlink:href="#orangemoretoyelow"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="189.89319"
+ x2="126.82574"
+ y1="300.55457"
+ x1="134.59328"
+ gradientTransform="matrix(0.286285,-1.917198e-2,0.000000,0.176607,-4.383105,-16.75305)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1545"
+ xlink:href="#light100to0"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="18.127838"
+ x2="40.120766"
+ y1="43.692036"
+ x1="77.830383"
+ gradientTransform="matrix(0.870407,-5.828951e-2,0.000000,1.148888,4.887488e-6,1.380840e-15)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1547"
+ xlink:href="#orangemoretoyelow"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="220.31316"
+ x2="269.30646"
+ y1="173.35371"
+ x1="188.09673"
+ gradientTransform="matrix(0.218024,-1.460066e-2,0.000000,0.231901,-4.383105,-16.75305)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1549"
+ xlink:href="#light100to0"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="574.66980"
+ x2="90.955330"
+ y1="221.05045"
+ x1="138.68466"
+ spreadMethod="reflect"
+ gradientTransform="matrix(0.262073,-1.755056e-2,0.000000,0.217660,-4.383105,-17.56717)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1551"
+ xlink:href="#graytoblack"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="224.95407"
+ x2="99.415497"
+ y1="199.20517"
+ x1="124.51332"
+ gradientTransform="matrix(0.273027,-1.828417e-2,0.000000,0.185183,-4.383100,-12.51208)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1553"
+ xlink:href="#shadow100to0"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="224.95407"
+ x2="99.415497"
+ y1="199.20517"
+ x1="124.51332"
+ gradientTransform="matrix(0.273027,-1.828417e-2,0.000000,0.185183,-4.383100,-12.51208)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1555"
+ xlink:href="#shadow100to0"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="301.15750"
+ x2="137.31036"
+ y1="301.15747"
+ x1="163.74318"
+ gradientTransform="matrix(0.273027,-1.828417e-2,0.000000,0.185183,-4.383100,-12.51208)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1557"
+ xlink:href="#shadow100to0"
+ inkscape:collect="always" />
+ <radialGradient
+ r="24.113470"
+ fy="265.90030"
+ fx="145.82777"
+ cy="265.90030"
+ cx="145.82777"
+ gradientTransform="matrix(0.282097,-1.889158e-2,0.000000,0.179229,-4.383100,-12.51208)"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient1559"
+ xlink:href="#light50to25to7"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="189.54620"
+ x2="129.06503"
+ y1="179.83293"
+ x1="119.80309"
+ spreadMethod="reflect"
+ gradientTransform="matrix(0.302207,-2.036411e-2,1.731823e-2,0.187588,-5.784573,-19.06245)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1561"
+ xlink:href="#orangetoblackorange"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="189.54620"
+ x2="129.06503"
+ y1="179.83293"
+ x1="119.80309"
+ spreadMethod="reflect"
+ gradientTransform="matrix(0.302207,-2.036411e-2,1.731823e-2,0.187588,-0.406378,-15.67507)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1563"
+ xlink:href="#orangetoblackorange"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="189.54620"
+ x2="129.06503"
+ y1="179.83293"
+ x1="119.80309"
+ spreadMethod="reflect"
+ gradientTransform="matrix(0.302207,-2.036411e-2,1.731823e-2,0.187588,4.903646,-12.38550)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1565"
+ xlink:href="#orangetoblackorange"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="229.92639"
+ x2="120.08266"
+ y1="203.68118"
+ x1="203.79491"
+ spreadMethod="reflect"
+ gradientTransform="matrix(0.250582,0.000000,0.000000,0.227641,-4.383105,-17.56717)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1567"
+ xlink:href="#orangetoblackorange"
+ inkscape:collect="always" />
+ <radialGradient
+ r="83.259750"
+ fy="332.37268"
+ fx="86.514435"
+ cy="332.37268"
+ cx="86.514435"
+ gradientTransform="matrix(0.281643,-1.886110e-2,0.000000,0.179517,-4.383105,-16.75305)"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient1569"
+ xlink:href="#graytoblack"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="247.07323"
+ x2="73.286217"
+ y1="335.76117"
+ x1="86.514435"
+ gradientTransform="matrix(0.281643,-1.886110e-2,0.000000,0.179517,-4.383105,-16.75305)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1571"
+ xlink:href="#light100to0"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="213.05858"
+ x2="189.53893"
+ y1="213.05858"
+ x1="24.253796"
+ gradientTransform="matrix(0.331788,0.000000,0.000000,0.171926,-4.383100,-17.56719)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1573"
+ xlink:href="#light100to0"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="218.74910"
+ x2="198.28532"
+ y1="264.70230"
+ x1="145.42192"
+ gradientTransform="matrix(0.195716,-1.310673e-2,0.000000,0.258334,-4.383105,-16.75305)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1575"
+ xlink:href="#graytoblack"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="234.35374"
+ x2="184.11906"
+ y1="219.68500"
+ x1="159.18221"
+ gradientTransform="matrix(0.180988,-1.212046e-2,0.000000,0.279356,-4.383105,-16.75305)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1577"
+ xlink:href="#light100to0"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="210.46336"
+ x2="84.003502"
+ y1="279.47504"
+ x1="132.72992"
+ gradientTransform="matrix(0.195716,-1.310673e-2,0.000000,0.258334,-4.383105,-16.75305)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1579"
+ xlink:href="#graytoblack"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="250.54321"
+ x2="54.607849"
+ y1="213.43617"
+ x1="136.55682"
+ gradientTransform="matrix(0.195716,-1.310673e-2,0.000000,0.258334,-4.383105,-16.75305)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1581"
+ xlink:href="#light100to0"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="172.01805"
+ x2="88.821419"
+ y1="215.05040"
+ x1="42.080868"
+ gradientTransform="matrix(0.182201,0.000000,0.000000,0.313078,-4.383100,-17.56719)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1583"
+ xlink:href="#light100to0"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="216.48166"
+ x2="144.13652"
+ y1="120.63583"
+ x1="149.74805"
+ gradientTransform="matrix(0.331788,0.000000,0.000000,0.171926,-4.383100,-17.56719)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1585"
+ xlink:href="#light100to0"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="216.48166"
+ x2="144.13652"
+ y1="120.63583"
+ x1="149.74805"
+ gradientTransform="matrix(0.251838,0.000000,0.000000,0.135659,7.587247,-14.29214)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2877"
+ xlink:href="#light100to0"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="172.01805"
+ x2="88.821419"
+ y1="215.05040"
+ x1="42.080868"
+ gradientTransform="matrix(0.138296,0.000000,0.000000,0.247035,7.587247,-14.29214)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2880"
+ xlink:href="#light100to0"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="210.46336"
+ x2="84.003502"
+ y1="279.47504"
+ x1="132.72992"
+ gradientTransform="matrix(0.148555,-1.034192e-2,0.000000,0.203839,7.587243,-13.64974)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2883"
+ xlink:href="#graytoblack"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="250.54321"
+ x2="54.607849"
+ y1="213.43617"
+ x1="136.55682"
+ gradientTransform="matrix(0.148555,-1.034192e-2,0.000000,0.203839,7.587243,-13.64974)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2885"
+ xlink:href="#light100to0"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="218.74910"
+ x2="198.28532"
+ y1="264.70230"
+ x1="145.42192"
+ gradientTransform="matrix(0.148555,-1.034192e-2,0.000000,0.203839,7.587243,-13.64974)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2888"
+ xlink:href="#graytoblack"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="234.35374"
+ x2="184.11906"
+ y1="219.68500"
+ x1="159.18221"
+ gradientTransform="matrix(0.137376,-9.563697e-3,0.000000,0.220427,7.587243,-13.64974)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2890"
+ xlink:href="#light100to0"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="213.05858"
+ x2="189.53893"
+ y1="213.05858"
+ x1="24.253796"
+ gradientTransform="matrix(0.251838,0.000000,0.000000,0.135659,7.587247,-14.29214)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2893"
+ xlink:href="#light100to0"
+ inkscape:collect="always" />
+ <radialGradient
+ r="83.259750"
+ fy="332.37268"
+ fx="86.514435"
+ cy="332.37268"
+ cx="86.514435"
+ gradientTransform="matrix(0.213776,-1.488243e-2,0.000000,0.141649,7.587243,-13.64974)"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient2896"
+ xlink:href="#graytoblack"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="247.07323"
+ x2="73.286217"
+ y1="335.76117"
+ x1="86.514435"
+ gradientTransform="matrix(0.213776,-1.488243e-2,0.000000,0.141649,7.587243,-13.64974)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2898"
+ xlink:href="#light100to0"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="229.92639"
+ x2="120.08266"
+ y1="203.68118"
+ x1="203.79491"
+ spreadMethod="reflect"
+ gradientTransform="matrix(0.190200,0.000000,0.000000,0.179621,7.587243,-14.29213)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2901"
+ xlink:href="#orangetoblackorange"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="189.54620"
+ x2="129.06503"
+ y1="179.83293"
+ x1="119.80309"
+ spreadMethod="reflect"
+ gradientTransform="matrix(0.229385,-1.606838e-2,1.314509e-2,0.148017,14.63618,-10.20351)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2904"
+ xlink:href="#orangetoblackorange"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="189.54620"
+ x2="129.06503"
+ y1="179.83293"
+ x1="119.80309"
+ spreadMethod="reflect"
+ gradientTransform="matrix(0.229385,-1.606838e-2,1.314509e-2,0.148017,10.60571,-12.79916)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2907"
+ xlink:href="#orangetoblackorange"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="189.54620"
+ x2="129.06503"
+ y1="179.83293"
+ x1="119.80309"
+ spreadMethod="reflect"
+ gradientTransform="matrix(0.229385,-1.606838e-2,1.314509e-2,0.148017,6.523484,-15.47198)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2910"
+ xlink:href="#orangetoblackorange"
+ inkscape:collect="always" />
+ <radialGradient
+ r="24.113470"
+ fy="265.90030"
+ fx="145.82777"
+ cy="265.90030"
+ cx="145.82777"
+ gradientTransform="matrix(0.214121,-1.490648e-2,0.000000,0.141421,7.587247,-10.30339)"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient2913"
+ xlink:href="#light50to25to7"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="301.15750"
+ x2="137.31036"
+ y1="301.15747"
+ x1="163.74318"
+ gradientTransform="matrix(0.207236,-1.442720e-2,0.000000,0.146119,7.587247,-10.30339)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2916"
+ xlink:href="#shadow100to0"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="224.95407"
+ x2="99.415497"
+ y1="199.20517"
+ x1="124.51332"
+ gradientTransform="matrix(0.207236,-1.442720e-2,0.000000,0.146119,7.587247,-10.30339)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2919"
+ xlink:href="#shadow100to0"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="224.95407"
+ x2="99.415497"
+ y1="199.20517"
+ x1="124.51332"
+ gradientTransform="matrix(0.207236,-1.442720e-2,0.000000,0.146119,7.587247,-10.30339)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2922"
+ xlink:href="#shadow100to0"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="574.66980"
+ x2="90.955330"
+ y1="221.05045"
+ x1="138.68466"
+ spreadMethod="reflect"
+ gradientTransform="matrix(0.198922,-1.384834e-2,0.000000,0.171745,7.587243,-14.29213)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2925"
+ xlink:href="#graytoblack"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="18.127838"
+ x2="40.120766"
+ y1="43.692036"
+ x1="77.830383"
+ gradientTransform="matrix(0.660667,-4.599357e-2,0.000000,0.906535,10.91416,-0.430682)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2928"
+ xlink:href="#orangemoretoyelow"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="220.31316"
+ x2="269.30646"
+ y1="173.35371"
+ x1="188.09673"
+ gradientTransform="matrix(0.165487,-1.152071e-2,0.000000,0.182982,7.587243,-13.64974)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2930"
+ xlink:href="#light100to0"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="47.244961"
+ x2="28.653791"
+ y1="4.8842254"
+ x1="36.606781"
+ gradientTransform="matrix(0.966397,-6.727759e-2,0.000000,0.619743,10.91416,-0.430682)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2933"
+ xlink:href="#orangemoretoyelow"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="189.89319"
+ x2="126.82574"
+ y1="300.55457"
+ x1="134.59328"
+ gradientTransform="matrix(0.217299,-1.512773e-2,0.000000,0.139352,7.587243,-13.64974)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2935"
+ xlink:href="#light100to0"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="218.74910"
+ x2="198.28532"
+ y1="264.70230"
+ x1="145.42192"
+ gradientTransform="matrix(0.148555,-1.034192e-2,0.000000,0.203839,7.587243,-13.64974)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2938"
+ xlink:href="#wihitetolightgray"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="234.35374"
+ x2="184.11906"
+ y1="219.68500"
+ x1="159.18221"
+ gradientTransform="matrix(0.137376,-9.563697e-3,0.000000,0.220427,7.587243,-13.64974)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2940"
+ xlink:href="#light100to0"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="210.46336"
+ x2="84.003502"
+ y1="279.47504"
+ x1="132.72992"
+ gradientTransform="matrix(0.148555,-1.034192e-2,0.000000,0.203839,7.587243,-13.64974)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2943"
+ xlink:href="#wihitetolightgray"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="250.54321"
+ x2="54.607849"
+ y1="213.43617"
+ x1="136.55682"
+ gradientTransform="matrix(0.148555,-1.034192e-2,0.000000,0.203839,7.587243,-13.64974)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2945"
+ xlink:href="#light100to0"
+ inkscape:collect="always" />
+ <radialGradient
+ r="83.259750"
+ fy="332.37268"
+ fx="86.514435"
+ cy="332.37268"
+ cx="86.514435"
+ gradientTransform="matrix(0.213776,-1.488243e-2,0.000000,0.141649,7.587243,-13.64974)"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient2948"
+ xlink:href="#wihitetolightgray"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="247.07323"
+ x2="73.286217"
+ y1="335.76117"
+ x1="86.514435"
+ gradientTransform="matrix(0.213776,-1.488243e-2,0.000000,0.141649,7.587243,-13.64974)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2950"
+ xlink:href="#light100to0"
+ inkscape:collect="always" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="6.8465874"
+ inkscape:cx="34.331449"
+ inkscape:cy="26.802583"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:document-units="px"
+ inkscape:grid-bbox="true"
+ inkscape:window-width="1020"
+ inkscape:window-height="691"
+ inkscape:window-x="0"
+ inkscape:window-y="0" />
+ <metadata
+ id="metadata4">
+ <rdf:RDF
+ id="RDF5">
+ <cc:Work
+ rdf:about=""
+ id="Work6">
+ <dc:format
+ id="format7">image/svg+xml</dc:format>
+ <dc:type
+ id="type9"
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ id="layer1"
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer">
+ <g
+ transform="matrix(1.003380,0.000000,0.000000,0.989340,3.064371e-4,0.621087)"
+ id="g1457">
+ <path
+ style="opacity:0.79446638;fill:#0028c6;fill-opacity:0.18099548;stroke:#000000;stroke-width:0.0000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:0.035294119"
+ d="M 6.1800241,11.752191 L 42.411763,11.752191 C 44.327630,11.752191 45.870008,13.762478 45.870008,16.259562 L 45.870008,51.816406 C 45.870008,54.313489 44.327630,56.323777 42.411763,56.323777 L 6.1800241,56.323777 C 4.2641564,56.323777 2.7217788,54.313489 2.7217788,51.816406 L 2.7217788,16.259562 C 2.7217788,13.762478 4.2641564,11.752191 6.1800241,11.752191 z "
+ id="rect7971" />
+ <path
+ style="opacity:0.79446638;fill:url(#linearGradient1527);fill-opacity:1.0000000;stroke:#000000;stroke-width:0.0000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:0.035294119"
+ d="M 6.7511200,12.690196 L 42.982858,12.690196 C 44.538121,36.490139 20.962529,23.157631 3.2928747,52.754411 L 3.2928747,17.197567 C 3.2928747,14.700483 4.8352523,12.690196 6.7511200,12.690196 z "
+ id="path8746"
+ sodipodi:nodetypes="ccccc" />
+ <path
+ style="opacity:0.97233200;fill:url(#radialGradient1529);fill-opacity:1.0000000;stroke:#000000;stroke-width:0.0000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:0.035294119"
+ d="M 6.1800241,11.752191 L 42.411763,11.752191 C 44.327630,11.752191 45.870008,13.762478 45.870008,16.259562 L 45.870008,51.816406 C 45.870008,54.313489 44.327630,56.323777 42.411763,56.323777 L 6.1800241,56.323777 C 4.2641564,56.323777 2.7217788,54.313489 2.7217788,51.816406 L 2.7217788,16.259562 C 2.7217788,13.762478 4.2641564,11.752191 6.1800241,11.752191 z "
+ id="path9514" />
+ <path
+ style="fill:#343435;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:5.5999999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
+ d="M 2.1039429,9.7820744 C 1.5251775,9.7663881 0.96486589,9.9894898 0.55099632,10.400419 C 0.13712749,10.811346 -0.094946223,11.374999 -0.092213059,11.962626 L -0.092213059,18.867704 C -0.092213059,20.071990 0.86966429,21.048255 2.0562004,21.048255 C 3.2427364,21.048255 4.2046137,20.071990 4.2046137,18.867704 L 4.2046137,14.167405 L 5.8278594,14.191633 C 6.6127969,14.244543 7.3630068,13.855899 7.7812725,13.179676 C 8.1995375,12.503453 8.2183549,11.648784 7.8302686,10.954272 C 7.4421830,10.259761 6.7098272,9.8374908 5.9233444,9.8547594 L 2.1039429,9.7820744 z "
+ id="path7697" />
+ <path
+ style="fill:#343435;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:5.5999999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
+ d="M 31.871403,9.7814365 C 30.684867,9.7680559 29.712302,10.733474 29.699119,11.937759 C 29.685935,13.142045 30.637125,14.129158 31.823661,14.142539 L 40.918611,14.263680 C 41.705975,14.311054 42.455138,13.914810 42.867933,13.232654 C 43.280728,12.550497 43.290167,11.693130 42.892492,11.001782 C 42.494816,10.310436 41.754563,9.8973008 40.966353,9.9268067 L 31.871403,9.7814365 z "
+ id="path7695"
+ sodipodi:nodetypes="cccccccc" />
+ <path
+ style="fill:#343435;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:5.5999999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
+ d="M 45.573507,14.722417 C 45.002912,14.726284 44.457490,14.961373 44.058517,15.375414 C 43.659544,15.789455 43.440095,16.348124 43.448965,16.927197 L 43.448965,26.158197 C 43.448965,27.362483 44.410843,28.338748 45.597379,28.338748 C 46.783915,28.338748 47.745792,27.362483 47.745792,26.158197 L 47.745792,16.927197 C 47.754850,16.339683 47.528894,15.773532 47.119532,15.358045 C 46.710170,14.942560 46.152362,14.713224 45.573507,14.722417 L 45.573507,14.722417 z "
+ id="path1937"
+ sodipodi:nodetypes="cccccccccc" />
+ <path
+ style="fill:#343435;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:5.5999999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
+ d="M 43.832534,26.692588 C 44.718063,26.866907 45.135153,23.989865 45.069485,19.604618 C 45.015675,16.071244 46.477953,17.496876 46.588198,15.582764 C 46.605189,15.287749 46.213140,15.134351 45.738969,15.149149 C 45.264797,15.163948 44.708503,15.346945 44.397005,15.724716 C 44.219002,15.873843 44.080729,16.087154 43.986898,16.337102 C 43.893069,16.587049 43.843681,16.873633 43.843454,17.169310 C 43.843226,17.464986 43.834354,24.330069 43.832534,26.692588 z "
+ id="path4304"
+ sodipodi:nodetypes="cccccccc" />
+ <path
+ style="opacity:0.79446638;fill:#343435;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:5.5999999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
+ d="M 44.855550,25.920267 C 44.847515,26.827450 45.427205,27.571035 46.150325,27.581116 C 46.873444,27.591196 47.466162,26.863950 47.474196,25.956769 L 47.546937,16.848759 C 47.575383,16.246770 47.337455,15.673986 46.927851,15.358378 C 46.518246,15.042772 46.003436,15.035555 45.588312,15.339602 C 45.173189,15.643650 44.925120,16.209621 44.942837,16.812256 L 44.855550,25.920267 z "
+ id="path4306"
+ sodipodi:nodetypes="cccccccc" />
+ <path
+ style="fill:#343435;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:5.5999999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
+ d="M 45.573507,46.899901 C 45.002912,46.903768 44.457490,47.138857 44.058517,47.552899 C 43.659544,47.966939 43.440095,48.525608 43.448965,49.104681 L 43.448965,53.901894 L 41.777977,53.901894 C 40.591441,53.901894 39.629564,54.878160 39.629564,56.082445 C 39.629564,57.286731 40.591441,58.262996 41.777977,58.262996 L 45.597379,58.262996 C 46.167934,58.265530 46.715843,58.036607 47.119291,57.627123 C 47.522739,57.217640 47.748288,56.661535 47.745792,56.082445 L 47.745792,49.104681 C 47.754850,48.517167 47.528894,47.951016 47.119532,47.535529 C 46.710170,47.120043 46.152362,46.890708 45.573507,46.899901 z "
+ id="path7691" />
+ <path
+ style="fill:#343435;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:5.5999999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
+ d="M 8.4272673,53.827824 C 7.3482262,53.827617 6.4736286,54.803772 6.4737979,56.008130 C 6.4739672,57.212488 7.3488398,58.188981 8.4278808,58.189188 L 16.699054,58.209355 C 17.415475,58.247986 18.092682,57.843449 18.461147,57.156753 C 18.829611,56.470055 18.829537,55.612637 18.460957,54.925746 C 18.092376,54.238857 17.415101,53.833965 16.698686,53.872219 L 8.4272673,53.827824 z "
+ id="path7751"
+ sodipodi:nodetypes="cccccccc" />
+ <path
+ style="fill:#343435;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:5.5999999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
+ d="M 2.1056606,23.987353 C 1.5350657,23.990831 0.98964301,24.202266 0.59066982,24.574649 C 0.19169742,24.947031 -0.027751643,25.449489 -0.018881465,25.970300 L -0.018881465,34.272523 C -0.018881465,35.355640 0.94299583,36.233678 2.1295319,36.233678 C 3.3160680,36.233678 4.2779453,35.355640 4.2779453,34.272523 L 4.2779453,25.970300 C 4.2870034,25.441898 4.0610476,24.932710 3.6516857,24.559028 C 3.2423230,24.185346 2.6845154,23.979085 2.1056606,23.987353 L 2.1056606,23.987353 z "
+ id="path7775"
+ sodipodi:nodetypes="cccccccccc" />
+ <path
+ style="fill:#343435;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:5.5999999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
+ d="M 2.1056606,40.878909 C 1.5350657,40.882503 0.98964301,41.101035 0.59066982,41.485915 C 0.19169742,41.870795 -0.027751643,42.390117 -0.018881465,42.928405 L -0.018881465,51.509261 C -0.018881465,52.628729 0.94299583,53.536236 2.1295319,53.536236 C 3.3160680,53.536236 4.2779453,52.628729 4.2779453,51.509261 L 4.2779453,42.928405 C 4.2870034,42.382270 4.0610476,41.855993 3.6516857,41.469770 C 3.2423230,41.083547 2.6845154,40.870363 2.1056606,40.878909 L 2.1056606,40.878909 z "
+ id="path7781"
+ sodipodi:nodetypes="cccccccccc" />
+ <path
+ style="fill:#343435;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:5.5999999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
+ d="M 45.443435,29.434493 C 44.872840,29.438087 44.327417,29.656619 43.928444,30.041499 C 43.529472,30.426379 43.310023,30.945701 43.318893,31.483989 L 43.318893,40.064845 C 43.318893,41.184313 44.280770,42.091820 45.467306,42.091820 C 46.653842,42.091820 47.615720,41.184313 47.615720,40.064845 L 47.615720,31.483989 C 47.624778,30.937854 47.398822,30.411577 46.989461,30.025353 C 46.580097,29.639131 46.022290,29.425947 45.443435,29.434493 L 45.443435,29.434493 z "
+ id="path20031"
+ sodipodi:nodetypes="cccccccccc" />
+ <path
+ style="fill:#343435;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:5.5999999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
+ d="M 25.311357,53.827824 C 24.232316,53.827617 23.357718,54.803772 23.357888,56.008130 C 23.358058,57.212488 24.232930,58.188981 25.311971,58.189188 L 33.583144,58.209355 C 34.299565,58.247986 34.976772,57.843449 35.345237,57.156753 C 35.713701,56.470055 35.713627,55.612637 35.345047,54.925746 C 34.976466,54.238857 34.299191,53.833965 33.582776,53.872219 L 25.311357,53.827824 z "
+ id="path20029"
+ sodipodi:nodetypes="cccccccc" />
+ <path
+ style="fill:#343435;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:5.5999999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
+ d="M 14.055297,9.7458205 C 12.976256,9.7456132 12.101658,10.721769 12.101828,11.926126 C 12.101998,13.130484 12.976870,14.106977 14.055911,14.107184 L 22.327084,14.127352 C 23.043505,14.165982 23.720712,13.761445 24.089177,13.074750 C 24.457641,12.388051 24.457567,11.530633 24.088987,10.843742 C 23.720406,10.156853 23.043131,9.7519616 22.326716,9.7902153 L 14.055297,9.7458205 z "
+ id="path20033"
+ sodipodi:nodetypes="cccccccc" />
+ </g>
+ <g
+ id="g12821"
+ transform="matrix(0.696199,0.000000,0.000000,0.708248,21.27651,37.84947)">
+ <path
+ style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:8.4754333;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:0.036199097"
+ d="M 31.443570,-46.786978 L 51.456857,-35.004551 L 51.479527,-21.252720 L 9.5298710,6.4263662 L -10.332290,-5.2904158 L -10.426366,-19.280855 L 31.443570,-46.786978 z "
+ id="path12039"
+ sodipodi:nodetypes="ccccccc" />
+ <path
+ style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:7.5159512;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:0.036199097"
+ d="M 31.443570,-46.786978 L 51.456857,-35.004551 L 51.479527,-21.252720 L 9.5298710,6.4263662 L -10.332290,-5.2904158 L -10.426366,-19.280855 L 31.443570,-46.786978 z "
+ id="path12807"
+ sodipodi:nodetypes="ccccccc" />
+ <path
+ style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:6.6630769;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:0.036199097"
+ d="M 31.443570,-46.786978 L 51.456857,-35.004551 L 51.479527,-21.252720 L 9.5298710,6.4263662 L -10.332290,-5.2904158 L -10.426366,-19.280855 L 31.443570,-46.786978 z "
+ id="path12809"
+ sodipodi:nodetypes="ccccccc" />
+ <path
+ style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:5.7035937;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:0.036199097"
+ d="M 31.443570,-46.786978 L 51.456857,-35.004551 L 51.479527,-21.252720 L 9.5298710,6.4263662 L -10.332290,-5.2904158 L -10.426366,-19.280855 L 31.443570,-46.786978 z "
+ id="path12811"
+ sodipodi:nodetypes="ccccccc" />
+ <path
+ style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:4.7441106;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:0.036199097"
+ d="M 31.443570,-46.786978 L 51.456857,-35.004551 L 51.479527,-21.252720 L 9.5298710,6.4263662 L -10.332290,-5.2904158 L -10.426366,-19.280855 L 31.443570,-46.786978 z "
+ id="path12813"
+ sodipodi:nodetypes="ccccccc" />
+ <path
+ style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:3.9978461;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:0.036199097"
+ d="M 31.443570,-46.786978 L 51.456857,-35.004551 L 51.479527,-21.252720 L 9.5298710,6.4263662 L -10.332290,-5.2904158 L -10.426366,-19.280855 L 31.443570,-46.786978 z "
+ id="path12815"
+ sodipodi:nodetypes="ccccccc" />
+ <path
+ style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:3.1449723;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:0.036199097"
+ d="M 31.443570,-46.786978 L 51.456857,-35.004551 L 51.479527,-21.252720 L 9.5298710,6.4263662 L -10.332290,-5.2904158 L -10.426366,-19.280855 L 31.443570,-46.786978 z "
+ id="path12817"
+ sodipodi:nodetypes="ccccccc" />
+ <path
+ style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:2.2920985;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:0.036199097"
+ d="M 31.443570,-46.786978 L 51.456857,-35.004551 L 51.479527,-21.252720 L 9.5298710,6.4263662 L -10.332290,-5.2904158 L -10.426366,-19.280855 L 31.443570,-46.786978 z "
+ id="path12819"
+ sodipodi:nodetypes="ccccccc" />
+ </g>
+ <path
+ style="fill:url(#radialGradient2948);fill-opacity:1.0000000;fill-rule:evenodd;stroke:url(#linearGradient2950);stroke-width:0.64930671;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
+ d="M 23.527250,16.908295 L 37.675026,25.667111 L 27.947401,32.409638 L 13.744677,23.705348 L 23.527250,16.908295 z "
+ id="path2646"
+ sodipodi:nodetypes="ccccc" />
+ <path
+ style="fill:url(#linearGradient2943);fill-opacity:1.0000000;fill-rule:evenodd;stroke:url(#linearGradient2945);stroke-width:0.67249632;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
+ d="M 13.651327,33.802483 L 27.799102,42.424340 L 27.947401,32.409638 L 13.744677,23.705348 L 13.651327,33.802483 z "
+ id="path3416"
+ sodipodi:nodetypes="ccccc" />
+ <path
+ style="fill:url(#linearGradient2938);fill-opacity:1.0000000;fill-rule:evenodd;stroke:url(#linearGradient2940);stroke-width:0.62611729;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
+ d="M 37.600441,35.833072 L 27.799102,42.424340 L 27.947401,32.409638 L 37.693790,25.735937 L 37.600441,35.833072 z "
+ id="path4180"
+ sodipodi:nodetypes="ccccc" />
+ <path
+ style="fill:url(#linearGradient2933);fill-opacity:1.0000000;fill-rule:evenodd;stroke:url(#linearGradient2935);stroke-width:0.62611729;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
+ d="M 23.527250,16.908295 L 37.675026,25.667111 L 57.525788,12.226416 L 43.323066,3.5221222 L 23.527250,16.908295 z "
+ id="path4942"
+ sodipodi:nodetypes="ccccc" />
+ <path
+ style="fill:url(#linearGradient2928);fill-opacity:1.0000000;fill-rule:evenodd;stroke:url(#linearGradient2930);stroke-width:0.60292763;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
+ d="M 37.600441,35.833072 L 57.476250,22.279894 L 57.624549,12.265192 L 37.693790,25.735937 L 37.600441,35.833072 z "
+ id="path5704"
+ sodipodi:nodetypes="ccccc" />
+ <path
+ style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:url(#linearGradient2925);stroke-width:0.88120204;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
+ d="M 43.352337,3.4955980 L 57.540512,12.122573 L 57.556584,22.191526 L 27.816887,42.457876 L 13.735851,33.878966 L 13.669157,23.635306 L 43.352337,3.4955980 z "
+ id="path1875"
+ sodipodi:nodetypes="ccccccc" />
+ <path
+ style="fill:url(#linearGradient2922);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"
+ d="M 23.734387,16.986475 L 37.448802,25.682860 L 36.091459,26.613948 L 22.518028,17.728888 L 23.734387,16.986475 z "
+ id="path7264" />
+ <path
+ style="fill:url(#linearGradient2919);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"
+ d="M 37.313783,35.763019 L 37.448802,25.682860 L 36.091459,26.613948 L 36.097422,36.505434 L 37.313783,35.763019 z "
+ id="path8032"
+ sodipodi:nodetypes="ccccc" />
+ <path
+ style="fill:url(#linearGradient2916);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"
+ d="M 37.313783,35.763019 L 37.448802,25.682860 L 36.091459,26.613948 L 36.097422,36.505434 L 37.313783,35.763019 z "
+ id="path8034"
+ sodipodi:nodetypes="ccccc" />
+ <path
+ style="fill:url(#radialGradient2913);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"
+ d="M 57.115009,12.516946 L 38.579922,24.672607 C 38.009737,24.948138 37.242032,24.872198 36.869365,24.677449 L 24.002836,16.952421 L 36.317683,25.134159 C 36.501577,25.461311 36.339813,26.086440 35.980531,26.314452 L 27.721177,32.425387 L 36.317683,26.807348 C 36.840184,26.432290 36.967650,26.997787 36.996354,27.387550 L 37.420097,35.709968 L 38.005097,26.689873 C 38.025215,26.178869 38.390989,25.598150 38.806146,25.379218 L 57.115009,12.516946 z "
+ id="path8798"
+ sodipodi:nodetypes="ccccccccccccc" />
+ <path
+ style="opacity:0.45059285;fill:url(#linearGradient2910);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:2.2241998;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
+ d="M 28.382239,16.190139 L 30.728363,17.698172 L 45.678574,7.1338998 L 43.297377,5.6640350 L 28.382239,16.190139 z "
+ id="path9568"
+ sodipodi:nodetypes="ccccc" />
+ <path
+ style="opacity:0.45059285;fill:url(#linearGradient2907);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:2.2241998;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
+ d="M 34.354677,17.707185 L 36.700800,19.215217 L 49.760787,9.8067295 L 47.379591,8.3368655 L 34.354677,17.707185 z "
+ id="path9574"
+ sodipodi:nodetypes="ccccc" />
+ <path
+ style="opacity:0.45059285;fill:url(#linearGradient2904);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:2.2241998;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
+ d="M 40.470919,18.807103 L 42.817042,20.315136 L 53.791267,12.402370 L 51.410071,10.932506 L 40.470919,18.807103 z "
+ id="path9578"
+ sodipodi:nodetypes="ccccc" />
+ <path
+ style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:url(#linearGradient2901);stroke-width:0.93599498;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
+ d="M 23.685829,16.889742 L 43.330622,3.5026466 L 57.587392,12.176218 L 57.457488,22.268067 L 37.675026,35.732929"
+ id="path11173"
+ sodipodi:nodetypes="ccccc" />
+ <path
+ style="opacity:0.090909071;fill:url(#radialGradient2896);fill-opacity:1.0000000;fill-rule:evenodd;stroke:url(#linearGradient2898);stroke-width:0.64930671;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
+ d="M 23.527250,16.908295 L 37.675026,25.667111 L 27.947401,32.409638 L 13.744677,23.705348 L 23.527250,16.908295 z "
+ id="path16121"
+ sodipodi:nodetypes="ccccc" />
+ <path
+ style="fill:url(#linearGradient2893);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"
+ d="M 43.358168,3.5906688 C 47.363022,6.1094789 51.315631,8.4375519 55.320486,10.956360 C 51.791561,13.969140 45.182687,13.437804 38.802332,13.671877 C 32.487156,13.905952 20.599481,19.596563 17.429440,25.822301 C 16.184726,25.035740 15.079683,24.417290 13.834969,23.630728 C 23.705177,16.943161 33.487959,10.278236 43.358168,3.5906688 z "
+ id="path9625"
+ sodipodi:nodetypes="cczccc" />
+ <path
+ style="opacity:0.098814197;fill:url(#linearGradient2888);fill-opacity:1.0000000;fill-rule:evenodd;stroke:url(#linearGradient2890);stroke-width:0.62611729;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
+ d="M 37.600441,35.833072 L 27.799102,42.424340 L 27.947401,32.409638 L 37.693790,25.735937 L 37.600441,35.833072 z "
+ id="path18403"
+ sodipodi:nodetypes="ccccc" />
+ <path
+ style="opacity:0.15019758;fill:url(#linearGradient2883);fill-opacity:1.0000000;fill-rule:evenodd;stroke:url(#linearGradient2885);stroke-width:0.67249632;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
+ d="M 13.651327,33.802483 L 27.799102,42.424340 L 27.947401,32.409638 L 13.744677,23.705348 L 13.651327,33.802483 z "
+ id="path18399"
+ sodipodi:nodetypes="ccccc" />
+ <path
+ style="fill:url(#linearGradient2880);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"
+ d="M 13.844539,33.722286 C 17.849394,36.241097 17.487187,36.176390 22.469742,39.239096 C 22.916801,35.725090 17.275299,31.086427 17.429440,25.822301 C 16.184726,25.035740 15.082548,24.407572 13.837834,23.621015 C 13.682491,26.734833 13.858061,32.264076 13.844539,33.722286 z "
+ id="path9627"
+ sodipodi:nodetypes="ccccc" />
+ <path
+ style="fill:url(#linearGradient2877);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"
+ d="M 43.371100,3.6038926 C 47.375955,6.1227026 51.315631,8.4375519 55.320486,10.956360 C 51.791561,13.969140 45.182687,13.437804 38.802332,13.671877 C 32.487156,13.905952 20.599481,19.596563 17.429440,25.822301 C 16.184726,25.035740 15.396273,24.249184 14.151558,23.462627 C 24.021766,16.775060 33.500892,10.291459 43.371100,3.6038926 z "
+ id="path10395"
+ sodipodi:nodetypes="cczccc" />
+ </g>
+</svg>
diff --git a/chalk/plugins/tools/selectiontools/tool_eraser_selection_cursor.png b/chalk/plugins/tools/selectiontools/tool_eraser_selection_cursor.png
new file mode 100644
index 00000000..e6b01060
--- /dev/null
+++ b/chalk/plugins/tools/selectiontools/tool_eraser_selection_cursor.png
Binary files differ
diff --git a/chalk/plugins/tools/selectiontools/tool_outline_selection.png b/chalk/plugins/tools/selectiontools/tool_outline_selection.png
new file mode 100644
index 00000000..ca1cb1d1
--- /dev/null
+++ b/chalk/plugins/tools/selectiontools/tool_outline_selection.png
Binary files differ
diff --git a/chalk/plugins/tools/selectiontools/tool_outline_selection.svg b/chalk/plugins/tools/selectiontools/tool_outline_selection.svg
new file mode 100644
index 00000000..2795dc86
--- /dev/null
+++ b/chalk/plugins/tools/selectiontools/tool_outline_selection.svg
@@ -0,0 +1,329 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://web.resource.org/cc/"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ inkscape:export-ydpi="33.000000"
+ inkscape:export-xdpi="33.000000"
+ inkscape:export-filename="/home/cyrille/koffice/chalk/plugins/tools/selectiontools/tool_outline_selection.png"
+ sodipodi:docname="tool_outline_selection.svg"
+ sodipodi:docbase="/home/cyrille/koffice/chalk/plugins/tools/selectiontools"
+ inkscape:version="0.43"
+ sodipodi:version="0.32"
+ id="svg1409"
+ height="48.000000pt"
+ width="48.000000pt">
+ <defs
+ id="defs3">
+ <radialGradient
+ r="31.677956"
+ fy="46.914463"
+ fx="48.488476"
+ cy="46.914463"
+ cx="48.488476"
+ gradientTransform="matrix(1.261963,0.000000,0.000000,1.016360,-7.978266,-0.517425)"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient1333"
+ xlink:href="#light90to0"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="36.873619"
+ x2="39.857029"
+ y1="4.5492039"
+ x1="10.878086"
+ gradientTransform="matrix(1.325250,0.000000,0.000000,1.003779,-5.702957,1.287849)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1331"
+ xlink:href="#light90to0"
+ inkscape:collect="always" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#light90to0"
+ id="linearGradient9512"
+ gradientTransform="matrix(1.325250,0.000000,0.000000,1.003779,-5.702957,1.287849)"
+ x1="10.878086"
+ y1="4.5492039"
+ x2="39.857029"
+ y2="36.873619"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#light90to0"
+ id="radialGradient10280"
+ gradientTransform="matrix(1.261963,0.000000,0.000000,1.016360,-7.978266,-0.517425)"
+ cx="48.488476"
+ cy="46.914463"
+ fx="48.488476"
+ fy="46.914463"
+ r="31.677956"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ id="light90to0">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0.90833336;"
+ offset="0.0000000"
+ id="stop1890" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0.0000000;"
+ offset="1.0000000"
+ id="stop1892" />
+ </linearGradient>
+ <radialGradient
+ r="31.677956"
+ fy="46.914463"
+ fx="48.488476"
+ cy="46.914463"
+ cx="48.488476"
+ gradientTransform="matrix(1.181248,0.000000,0.000000,0.943878,-80.46799,5.346100)"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient2086"
+ xlink:href="#light90to0"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="36.873619"
+ x2="39.857029"
+ y1="4.5492039"
+ x1="10.878086"
+ gradientTransform="matrix(1.240487,0.000000,0.000000,0.932195,-78.33821,7.022631)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2089"
+ xlink:href="#light90to0"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="36.873619"
+ x2="39.857029"
+ y1="4.5492039"
+ x1="10.878086"
+ gradientTransform="matrix(1.240487,0.000000,0.000000,0.932195,-78.33821,7.022631)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient3732"
+ xlink:href="#light90to0"
+ inkscape:collect="always" />
+ <radialGradient
+ r="31.677956"
+ fy="46.914463"
+ fx="48.488476"
+ cy="46.914463"
+ cx="48.488476"
+ gradientTransform="matrix(1.181248,0.000000,0.000000,0.943878,-80.46799,5.346100)"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient3734"
+ xlink:href="#light90to0"
+ inkscape:collect="always" />
+ <radialGradient
+ r="31.677956"
+ fy="46.914463"
+ fx="48.488476"
+ cy="46.914463"
+ cx="48.488476"
+ gradientTransform="matrix(1.472290,0.000000,0.000000,1.176435,-85.47464,-0.281735)"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient3737"
+ xlink:href="#light90to0"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="36.873619"
+ x2="39.857029"
+ y1="4.5492039"
+ x1="10.878086"
+ gradientTransform="matrix(1.546124,0.000000,0.000000,1.161874,-42.82011,1.807868)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient3740"
+ xlink:href="#light90to0"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="36.873619"
+ x2="39.857029"
+ y1="4.5492039"
+ x1="10.878086"
+ gradientTransform="matrix(1.546124,0.000000,0.000000,1.161874,-82.82011,1.807868)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient3748"
+ xlink:href="#light90to0"
+ inkscape:collect="always" />
+ <radialGradient
+ r="31.677956"
+ fy="46.914463"
+ fx="48.488476"
+ cy="46.914463"
+ cx="48.488476"
+ gradientTransform="matrix(1.181248,0.000000,0.000000,0.943878,-86.67547,5.346100)"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient3888"
+ xlink:href="#light90to0"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="36.873619"
+ x2="39.857029"
+ y1="4.5492039"
+ x1="10.878086"
+ gradientTransform="matrix(1.240487,0.000000,0.000000,0.932195,-84.54569,7.022631)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient3891"
+ xlink:href="#light90to0"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="36.873619"
+ x2="39.857029"
+ y1="4.5492039"
+ x1="10.878086"
+ gradientTransform="matrix(1.240487,0.000000,0.000000,0.932195,-84.54569,7.022631)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient3899"
+ xlink:href="#light90to0"
+ inkscape:collect="always" />
+ <radialGradient
+ r="31.677956"
+ fy="46.914463"
+ fx="48.488476"
+ cy="46.914463"
+ cx="48.488476"
+ gradientTransform="matrix(1.181248,0.000000,0.000000,0.943878,-86.67547,5.346100)"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient3901"
+ xlink:href="#light90to0"
+ inkscape:collect="always" />
+ <radialGradient
+ r="31.677956"
+ fy="46.914463"
+ fx="48.488476"
+ cy="46.914463"
+ cx="48.488476"
+ gradientTransform="matrix(1.842551,0.000000,0.000000,1.472293,-26.91085,-7.897181)"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient3904"
+ xlink:href="#light90to0"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="36.873619"
+ x2="39.857029"
+ y1="4.5492039"
+ x1="10.878086"
+ gradientTransform="matrix(1.934954,0.000000,0.000000,1.454069,-43.58874,-5.282071)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient3907"
+ xlink:href="#light90to0"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="36.873619"
+ x2="39.857029"
+ y1="4.5492039"
+ x1="10.878086"
+ gradientTransform="matrix(1.934954,0.000000,0.000000,1.454069,-23.58874,-5.282071)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient3917"
+ xlink:href="#light90to0"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="36.873619"
+ x2="39.857029"
+ y1="4.5492039"
+ x1="10.878086"
+ gradientTransform="matrix(1.934954,0,0,1.454069,-23.58874,-5.282071)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient3939"
+ xlink:href="#light90to0"
+ inkscape:collect="always" />
+ <radialGradient
+ r="31.677956"
+ fy="46.914463"
+ fx="48.488476"
+ cy="46.914463"
+ cx="48.488476"
+ gradientTransform="matrix(1.842551,0,0,1.472293,-26.91085,-7.897181)"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient3941"
+ xlink:href="#light90to0"
+ inkscape:collect="always" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#light90to0"
+ id="radialGradient3103"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.843411,0,0,1.546427,-39.13262,-18.20529)"
+ cx="48.488476"
+ cy="46.914463"
+ fx="48.488476"
+ fy="46.914463"
+ r="31.677956" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#light90to0"
+ id="linearGradient3106"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.935858,0,0,1.527286,-33.53707,-3.676156)"
+ x1="10.878086"
+ y1="4.5492039"
+ x2="39.857029"
+ y2="36.873619" />
+ </defs>
+ <sodipodi:namedview
+ inkscape:window-y="29"
+ inkscape:window-x="235"
+ inkscape:window-height="691"
+ inkscape:window-width="1020"
+ inkscape:grid-bbox="true"
+ inkscape:document-units="px"
+ showgrid="false"
+ inkscape:current-layer="layer1"
+ inkscape:cy="22.245206"
+ inkscape:cx="25.345445"
+ inkscape:zoom="9.2345419"
+ inkscape:pageshadow="2"
+ inkscape:pageopacity="0.0000000"
+ borderopacity="1.0"
+ bordercolor="#666666"
+ pagecolor="#ffffff"
+ id="base"
+ showguides="true"
+ inkscape:guide-bbox="true">
+ <sodipodi:guide
+ orientation="horizontal"
+ position="58.042944"
+ id="guide3109" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata4">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:groupmode="layer"
+ inkscape:label="Layer 1"
+ id="layer1">
+ <g
+ id="g3133">
+ <path
+ sodipodi:nodetypes="cccccscccsccccc"
+ id="rect7971"
+ d="M 22.849394,11.112144 C 22.304047,11.141939 15.425943,11.91869 15.047262,12.331768 L 7.3541343,16.763497 C 8.0507357,13.290837 4.6772127,24.044979 4.9093571,24.829128 L 5.095179,32.48237 C 5.3390662,33.315932 10.443581,34.461964 11.265414,34.588229 C 12.087247,34.714496 16.080953,33.975209 17.072452,35.017738 L 21.804787,36.428944 L 28.316569,46.376029 C 28.84139,47.103755 42.100565,47.249663 42.941988,47.01984 C 43.783409,46.790016 50.779969,35.976608 50.900444,35.072628 L 49.143188,21.49569 C 48.929783,20.447666 44.468877,16.786367 43.524906,16.415097 L 31.648489,11.066661 C 32.438942,9.1963879 23.136303,11.096289 22.849394,11.112144 z "
+ style="opacity:0.79446639;fill:#0028c6;fill-opacity:0.18099551;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:0.03529412" />
+ <path
+ sodipodi:nodetypes="ccccccccccccc"
+ id="path8746"
+ d="M 12.535381,11.98598 C 11.990034,12.015775 7.4691951,16.810337 7.0905141,17.223415 L 4.8943079,23.826314 C 4.3534721,24.419518 3.8370628,31.013486 4.0692068,31.797635 L 8.0381077,33.802504 C 10.387324,34.191552 8.7498127,36.278559 14.421497,33.730917 L 17.425172,34.425233 L 22.799835,37.595929 C 32.678289,33.702865 38.728935,20.276373 45.811149,17.13009 L 47.192189,19.341024 C 47.332337,18.293 41.129487,15.11757 40.185516,14.7463 C 37.675337,13.581188 31.95859,11.853578 31.247222,10.709517 C 23.829936,10.823588 12.82229,11.970124 12.535381,11.98598 z "
+ style="opacity:0.79446639;fill:url(#linearGradient3106);fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:0.03529412" />
+ <path
+ sodipodi:nodetypes="cccscccc"
+ id="path9514"
+ d="M 24.746657,37.610946 L 22.950097,38.236511 L 28.386172,46.112853 C 28.910993,46.840579 33.910784,49.437334 34.752207,49.207511 C 35.593628,48.977687 43.373306,47.04937 43.493781,46.14539 L 49.251864,38.854219 C 51.341215,32.716608 49.361638,20.120029 48.417667,19.748759 C 48.417667,19.748759 24.285488,38.336184 24.746657,37.610946 z "
+ style="opacity:0.97233199;fill:url(#radialGradient3103);fill-opacity:1;stroke:none;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:0.98913044;stroke-dasharray:none" />
+ <path
+ id="path2106"
+ d="M 36.009663,49.13383 C 41.863248,48.780277 46.878058,43.635578 48.32345,40.661558 C 51.298229,34.540688 52.312887,27.958104 51.036579,25.168694 C 48.381437,19.365798 42.813441,14.821605 35.697096,12.295739 C 31.314921,10.740336 12.085136,10.662141 9.0276896,14.21912 C 5.2475997,18.616808 3.5467148,30.132245 6.0215885,33.31188 C 7.5774802,35.310838 15.400721,32.394315 20.603527,36.054782 C 27.129005,40.645824 27.079432,49.673211 36.009663,49.13383 z "
+ style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#313436;stroke-width:4.55000019;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:9.10000038, 9.10000038;stroke-dashoffset:0;stroke-opacity:1;marker-start:none" />
+ </g>
+ </g>
+</svg>
diff --git a/chalk/plugins/tools/selectiontools/tool_outline_selection_cursor.png b/chalk/plugins/tools/selectiontools/tool_outline_selection_cursor.png
new file mode 100644
index 00000000..10ef65fe
--- /dev/null
+++ b/chalk/plugins/tools/selectiontools/tool_outline_selection_cursor.png
Binary files differ
diff --git a/chalk/plugins/tools/selectiontools/tool_polygonal_selection.png b/chalk/plugins/tools/selectiontools/tool_polygonal_selection.png
new file mode 100644
index 00000000..eda50984
--- /dev/null
+++ b/chalk/plugins/tools/selectiontools/tool_polygonal_selection.png
Binary files differ
diff --git a/chalk/plugins/tools/selectiontools/tool_polygonal_selection.svg b/chalk/plugins/tools/selectiontools/tool_polygonal_selection.svg
new file mode 100644
index 00000000..441dc125
--- /dev/null
+++ b/chalk/plugins/tools/selectiontools/tool_polygonal_selection.svg
@@ -0,0 +1,364 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://web.resource.org/cc/"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ inkscape:export-ydpi="33.000000"
+ inkscape:export-xdpi="33.000000"
+ inkscape:export-filename="/home/danny/work/kde/koffice/chalk/chalk/tool_free_form_selection.png"
+ sodipodi:docname="tool_free_form_selection.svg"
+ sodipodi:docbase="/home/danny/work/kde/koffice/chalk/chalk"
+ inkscape:version="0.41"
+ sodipodi:version="0.32"
+ id="svg1409"
+ height="48.000000pt"
+ width="48.000000pt">
+ <defs
+ id="defs3">
+ <radialGradient
+ r="31.677956"
+ fy="46.914463"
+ fx="48.488476"
+ cy="46.914463"
+ cx="48.488476"
+ gradientTransform="matrix(1.261963,0.000000,0.000000,1.016360,-7.978266,-0.517425)"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient1333"
+ xlink:href="#light90to0"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="36.873619"
+ x2="39.857029"
+ y1="4.5492039"
+ x1="10.878086"
+ gradientTransform="matrix(1.325250,0.000000,0.000000,1.003779,-5.702957,1.287849)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1331"
+ xlink:href="#light90to0"
+ inkscape:collect="always" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#light90to0"
+ id="linearGradient9512"
+ gradientTransform="matrix(1.325250,0.000000,0.000000,1.003779,-5.702957,1.287849)"
+ x1="10.878086"
+ y1="4.5492039"
+ x2="39.857029"
+ y2="36.873619"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#light90to0"
+ id="radialGradient10280"
+ gradientTransform="matrix(1.261963,0.000000,0.000000,1.016360,-7.978266,-0.517425)"
+ cx="48.488476"
+ cy="46.914463"
+ fx="48.488476"
+ fy="46.914463"
+ r="31.677956"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ id="light90to0">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0.90833336;"
+ offset="0.0000000"
+ id="stop1890" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0.0000000;"
+ offset="1.0000000"
+ id="stop1892" />
+ </linearGradient>
+ <radialGradient
+ r="31.677956"
+ fy="46.914463"
+ fx="48.488476"
+ cy="46.914463"
+ cx="48.488476"
+ gradientTransform="matrix(1.181248,0.000000,0.000000,0.943878,-80.46799,5.346100)"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient2086"
+ xlink:href="#light90to0"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="36.873619"
+ x2="39.857029"
+ y1="4.5492039"
+ x1="10.878086"
+ gradientTransform="matrix(1.240487,0.000000,0.000000,0.932195,-78.33821,7.022631)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2089"
+ xlink:href="#light90to0"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="36.873619"
+ x2="39.857029"
+ y1="4.5492039"
+ x1="10.878086"
+ gradientTransform="matrix(1.240487,0.000000,0.000000,0.932195,-78.33821,7.022631)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient3732"
+ xlink:href="#light90to0"
+ inkscape:collect="always" />
+ <radialGradient
+ r="31.677956"
+ fy="46.914463"
+ fx="48.488476"
+ cy="46.914463"
+ cx="48.488476"
+ gradientTransform="matrix(1.181248,0.000000,0.000000,0.943878,-80.46799,5.346100)"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient3734"
+ xlink:href="#light90to0"
+ inkscape:collect="always" />
+ <radialGradient
+ r="31.677956"
+ fy="46.914463"
+ fx="48.488476"
+ cy="46.914463"
+ cx="48.488476"
+ gradientTransform="matrix(1.472290,0.000000,0.000000,1.176435,-85.47464,-0.281735)"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient3737"
+ xlink:href="#light90to0"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="36.873619"
+ x2="39.857029"
+ y1="4.5492039"
+ x1="10.878086"
+ gradientTransform="matrix(1.546124,0.000000,0.000000,1.161874,-42.82011,1.807868)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient3740"
+ xlink:href="#light90to0"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="36.873619"
+ x2="39.857029"
+ y1="4.5492039"
+ x1="10.878086"
+ gradientTransform="matrix(1.546124,0.000000,0.000000,1.161874,-82.82011,1.807868)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient3748"
+ xlink:href="#light90to0"
+ inkscape:collect="always" />
+ <radialGradient
+ r="31.677956"
+ fy="46.914463"
+ fx="48.488476"
+ cy="46.914463"
+ cx="48.488476"
+ gradientTransform="matrix(1.181248,0.000000,0.000000,0.943878,-86.67547,5.346100)"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient3888"
+ xlink:href="#light90to0"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="36.873619"
+ x2="39.857029"
+ y1="4.5492039"
+ x1="10.878086"
+ gradientTransform="matrix(1.240487,0.000000,0.000000,0.932195,-84.54569,7.022631)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient3891"
+ xlink:href="#light90to0"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="36.873619"
+ x2="39.857029"
+ y1="4.5492039"
+ x1="10.878086"
+ gradientTransform="matrix(1.240487,0.000000,0.000000,0.932195,-84.54569,7.022631)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient3899"
+ xlink:href="#light90to0"
+ inkscape:collect="always" />
+ <radialGradient
+ r="31.677956"
+ fy="46.914463"
+ fx="48.488476"
+ cy="46.914463"
+ cx="48.488476"
+ gradientTransform="matrix(1.181248,0.000000,0.000000,0.943878,-86.67547,5.346100)"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient3901"
+ xlink:href="#light90to0"
+ inkscape:collect="always" />
+ <radialGradient
+ r="31.677956"
+ fy="46.914463"
+ fx="48.488476"
+ cy="46.914463"
+ cx="48.488476"
+ gradientTransform="matrix(1.842551,0.000000,0.000000,1.472293,-26.91085,-7.897181)"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient3904"
+ xlink:href="#light90to0"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="36.873619"
+ x2="39.857029"
+ y1="4.5492039"
+ x1="10.878086"
+ gradientTransform="matrix(1.934954,0.000000,0.000000,1.454069,-43.58874,-5.282071)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient3907"
+ xlink:href="#light90to0"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="36.873619"
+ x2="39.857029"
+ y1="4.5492039"
+ x1="10.878086"
+ gradientTransform="matrix(1.934954,0.000000,0.000000,1.454069,-23.58874,-5.282071)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient3917"
+ xlink:href="#light90to0"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="36.873619"
+ x2="39.857029"
+ y1="4.5492039"
+ x1="10.878086"
+ gradientTransform="matrix(1.934954,0.000000,0.000000,1.454069,-23.58874,-5.282071)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient3939"
+ xlink:href="#light90to0"
+ inkscape:collect="always" />
+ <radialGradient
+ r="31.677956"
+ fy="46.914463"
+ fx="48.488476"
+ cy="46.914463"
+ cx="48.488476"
+ gradientTransform="matrix(1.842551,0.000000,0.000000,1.472293,-26.91085,-7.897181)"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient3941"
+ xlink:href="#light90to0"
+ inkscape:collect="always" />
+ </defs>
+ <sodipodi:namedview
+ inkscape:window-y="0"
+ inkscape:window-x="0"
+ inkscape:window-height="691"
+ inkscape:window-width="1020"
+ inkscape:grid-bbox="true"
+ inkscape:document-units="px"
+ showgrid="false"
+ inkscape:current-layer="layer1"
+ inkscape:cy="27.184176"
+ inkscape:cx="-0.65850022"
+ inkscape:zoom="5.3151547"
+ inkscape:pageshadow="2"
+ inkscape:pageopacity="0.0000000"
+ borderopacity="1.0"
+ bordercolor="#666666"
+ pagecolor="#ffffff"
+ id="base" />
+ <metadata
+ id="metadata4">
+ <rdf:RDF
+ id="RDF5">
+ <cc:Work
+ id="Work6"
+ rdf:about="">
+ <dc:format
+ id="format7">image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage"
+ id="type9" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:groupmode="layer"
+ inkscape:label="Layer 1"
+ id="layer1">
+ <g
+ transform="matrix(1.000467,0.000000,0.000000,1.050353,-1.379828e-2,-4.173866e-3)"
+ id="g3921">
+ <path
+ id="rect7971"
+ d="M 17.375000,2.0000000 C 16.829907,2.0283668 16.316004,2.2629749 15.937500,2.6562500 L 2.5937500,16.468750 C 2.0531670,17.033516 1.8617140,17.847192 2.0937500,18.593750 L 10.937500,48.937500 C 11.181273,49.731102 11.866051,50.317288 12.687500,50.437500 C 13.508949,50.557713 14.320296,50.190471 14.781250,49.500000 L 29.406250,27.281250 L 49.343750,53.750000 C 49.868326,54.442840 50.752719,54.750055 51.593750,54.531250 C 52.434778,54.312444 53.067082,53.610644 53.187500,52.750000 L 57.968750,18.281250 C 58.108832,17.283468 57.537280,16.322221 56.593750,15.968750 L 18.218750,2.1250000 C 17.948669,2.0274078 17.661775,1.9849050 17.375000,2.0000000 z "
+ style="opacity:0.79446638;fill:#0028c6;fill-opacity:0.18099548;stroke:#000000;stroke-width:0.0000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:0.035294119" />
+ <path
+ id="path8746"
+ d="M 17.375000,2.0000000 C 16.829907,2.0283668 16.316004,2.2629749 15.937500,2.6562500 L 2.5937500,16.468750 C 2.0531670,17.033516 1.8617140,17.847192 2.0937500,18.593750 L 8.8750000,41.843750 C 14.686753,37.780942 20.518465,34.613010 26.187500,32.187500 L 29.406250,27.281250 L 31.531250,30.093750 C 41.405093,26.387316 50.483592,24.120453 57.562500,21.125000 L 57.968750,18.281250 C 58.108832,17.283468 57.537280,16.322221 56.593750,15.968750 L 18.218750,2.1250000 C 17.948669,2.0274078 17.661775,1.9849050 17.375000,2.0000000 z "
+ style="opacity:0.79446638;fill:url(#linearGradient3939);fill-opacity:1.0000000;stroke:#000000;stroke-width:0.0000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:0.035294119" />
+ <path
+ id="path9514"
+ d="M 17.375000,2.0000000 C 16.829907,2.0283668 16.316004,2.2629749 15.937500,2.6562500 L 2.5937500,16.468750 C 2.0531669,17.033516 1.8617138,17.847192 2.0937500,18.593750 L 10.937500,48.937500 C 11.181273,49.731102 11.866051,50.317288 12.687500,50.437500 C 13.508949,50.557713 14.320296,50.190471 14.781250,49.500000 L 29.406250,27.281250 L 49.343750,53.750000 C 49.868326,54.442840 50.752719,54.750055 51.593750,54.531250 C 52.434778,54.312444 53.067082,53.610644 53.187500,52.750000 L 57.968750,18.281250 C 58.108832,17.283468 57.537280,16.322221 56.593750,15.968750 L 18.218750,2.1250000 C 17.948669,2.0274078 17.661775,1.9849050 17.375000,2.0000000 z "
+ style="opacity:0.97233200;fill:url(#radialGradient3941);fill-opacity:1.0000000;stroke:#000000;stroke-width:0.0000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:0.035294119" />
+ <path
+ style="fill:#313436;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:5.5999999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
+ d="M 8.6481316,10.370821 C 9.0694886,10.762535 9.6315137,10.971157 10.209233,10.950300 C 10.786951,10.929442 11.332479,10.680836 11.724507,10.259761 L 18.077610,3.6451297 C 18.906443,2.7821760 18.872528,1.4176197 18.001859,0.59730246 C 17.131190,-0.22301475 15.753473,-0.18845315 14.924639,0.67449856 L 8.5715367,7.2891303 C 8.1605414,7.7038582 7.9367018,8.2657613 7.9511347,8.8465013 C 7.9655693,9.4272353 8.2170464,9.9772121 8.6481316,10.370821 L 8.6481316,10.370821 z "
+ id="path2087"
+ sodipodi:nodetypes="cccccccccc" />
+ <path
+ sodipodi:nodetypes="ccccccccccccc"
+ id="path2089"
+ d="M 5.5937500,11.343750 C 5.0368829,11.357720 4.4769170,11.568524 4.0625000,12.000000 C 4.0625000,12.000000 0.50659364,15.741591 0.50000000,15.750000 C 0.10513172,16.257539 -0.082274591,16.897542 0.062500000,17.531250 L 1.1250000,21.562500 C 1.2648167,22.129393 1.6218102,22.615962 2.1250000,22.906250 C 2.6281851,23.196535 3.2206730,23.287838 3.7812500,23.125000 C 4.3351411,22.969478 4.8105180,22.597711 5.0937500,22.093750 C 5.3769801,21.589792 5.4676180,20.991512 5.3125000,20.437500 L 4.5937500,17.718750 L 7.2187500,15.000000 C 8.0475832,14.137046 8.0269190,12.757817 7.1562500,11.937500 C 6.7209155,11.527341 6.1506171,11.329780 5.5937500,11.343750 z "
+ style="fill:#313436;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:5.5999999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000" />
+ <path
+ style="fill:#313436;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:5.5999999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
+ d="M 7.8868333,38.699343 C 8.4407237,38.543821 8.9116405,38.172834 9.1948718,37.668873 C 9.4781022,37.164915 9.5501733,36.569759 9.3950554,36.015747 L 7.0598062,27.146594 C 6.7551456,25.989514 5.5728074,25.307429 4.4189752,25.623112 C 3.2651421,25.938795 2.5767516,27.132703 2.8814101,28.289785 L 5.2166600,37.158936 C 5.3564767,37.725829 5.7194324,38.209671 6.2226220,38.499959 C 6.7258074,38.790243 7.3262566,38.862181 7.8868333,38.699343 L 7.8868333,38.699343 z "
+ id="path2093"
+ sodipodi:nodetypes="cccccccccc" />
+ <path
+ style="fill:#313436;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:5.5999999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
+ d="M 14.845837,48.569694 C 15.332393,48.876689 15.923312,48.977728 16.487199,48.850345 C 17.051085,48.722962 17.541200,48.377717 17.848556,47.891381 L 22.868183,40.215537 C 23.523050,39.214136 23.237259,37.879413 22.229852,37.234343 C 21.222444,36.589272 19.874906,36.878133 19.220039,37.879532 L 14.200411,45.555378 C 13.873242,46.038985 13.757226,46.632601 13.878855,47.200646 C 14.000483,47.768683 14.349372,48.262637 14.845837,48.569694 L 14.845837,48.569694 z "
+ id="path2097"
+ sodipodi:nodetypes="cccccccccc" />
+ <path
+ style="fill:#313436;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:5.5999999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
+ d="M 53.502723,51.490318 C 54.074440,51.554532 54.650310,51.387895 55.102284,51.027459 C 55.554259,50.667026 55.844876,50.142670 55.909511,49.570995 L 57.081400,40.474736 C 57.234286,39.288026 56.395289,38.211345 55.207443,38.069894 C 54.019597,37.928443 52.932720,38.775791 52.779832,39.962498 L 51.607944,49.058758 C 51.524287,49.636614 51.678621,50.221440 52.035689,50.679664 C 52.392753,51.137884 52.922062,51.430367 53.502723,51.490318 L 53.502723,51.490318 z "
+ id="path2107"
+ sodipodi:nodetypes="cccccccccc" />
+ <path
+ style="fill:#313436;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:5.5999999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
+ d="M 55.454158,36.325345 C 56.025875,36.389559 56.601745,36.222922 57.053719,35.862486 C 57.505694,35.502053 57.796311,34.977697 57.860946,34.406022 L 59.032835,25.309763 C 59.185721,24.123053 58.346724,23.046372 57.158878,22.904921 C 55.971032,22.763470 54.884155,23.610818 54.731267,24.797525 L 53.559379,33.893785 C 53.475722,34.471641 53.630056,35.056467 53.987124,35.514691 C 54.344188,35.972911 54.873497,36.265394 55.454158,36.325345 L 55.454158,36.325345 z "
+ id="path2109"
+ sodipodi:nodetypes="cccccccccc" />
+ <path
+ sodipodi:nodetypes="cccccccccccccc"
+ id="path2111"
+ d="M 52.125000,12.718750 C 51.578617,12.512884 50.961744,12.530980 50.437500,12.781250 C 49.913260,13.031518 49.527067,13.477034 49.343750,14.031250 C 49.158194,14.575817 49.182597,15.168637 49.437500,15.687500 C 49.692398,16.206364 50.143066,16.626540 50.687500,16.812500 L 55.562500,18.562500 L 55.531250,18.718750 C 55.447594,19.296606 55.580432,19.885526 55.937500,20.343750 C 56.294564,20.801969 56.825589,21.096299 57.406250,21.156250 C 57.977968,21.220463 58.548026,21.047936 59.000000,20.687500 C 59.641312,20.209036 59.634683,19.555393 59.753290,19.028646 L 59.968750,17.312500 C 60.093283,16.325572 59.524592,15.382062 58.593750,15.031250 L 52.125000,12.718750 z "
+ style="fill:#313436;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:5.5999999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000" />
+ <path
+ style="fill:#313436;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:5.5999999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
+ d="M 34.876639,8.8113360 C 34.689606,9.3553976 34.726993,9.9537253 34.980487,10.473277 C 35.233979,10.992831 35.682567,11.390545 36.226496,11.577981 L 44.850059,14.700384 C 45.975101,15.107737 47.208498,14.523022 47.604936,13.394384 C 48.001375,12.265747 47.410726,11.020582 46.285688,10.613227 L 37.662124,7.4908252 C 37.116299,7.2834789 36.511906,7.3069090 35.986986,7.5557573 C 35.462070,7.8046027 35.061458,8.2576184 34.876639,8.8113360 L 34.876639,8.8113360 z "
+ id="path2113"
+ sodipodi:nodetypes="cccccccccc" />
+ <path
+ style="fill:#313436;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:5.5999999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
+ d="M 20.535381,3.6342430 C 20.347428,4.1779876 20.383803,4.7763777 20.636419,5.2963578 C 20.889032,5.8163388 21.336947,6.2148117 21.880557,6.4031665 L 30.498828,9.5401482 C 31.623180,9.9494029 32.857563,9.3667746 33.255910,8.2388091 C 33.654256,7.1108435 33.065714,5.8646820 31.941366,5.4554254 L 23.323095,2.3184446 C 22.777622,2.1101755 22.173190,2.1325835 21.647849,2.3805438 C 21.122514,2.6285012 20.721136,3.0808388 20.535381,3.6342430 L 20.535381,3.6342430 z "
+ id="path2115"
+ sodipodi:nodetypes="cccccccccc" />
+ <path
+ style="fill:#313436;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:5.5999999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
+ d="M 11.883900,54.049469 C 12.437791,53.893947 12.908707,53.522960 13.191939,53.018999 C 13.475169,52.515041 13.547240,51.919885 13.392122,51.365873 L 11.056873,42.496720 C 10.752212,41.339640 9.5698742,40.657555 8.4160420,40.973238 C 7.2622089,41.288921 6.5738184,42.482829 6.8784769,43.639911 L 9.2137268,52.509062 C 9.3535435,53.075955 9.7164992,53.559797 10.219689,53.850085 C 10.722874,54.140369 11.323323,54.212307 11.883900,54.049469 L 11.883900,54.049469 z "
+ id="path2121"
+ sodipodi:nodetypes="cccccccccc" />
+ <path
+ sodipodi:nodetypes="ccccccccccccccc"
+ id="path2099"
+ d="M 29.156250,24.562500 C 28.461523,24.581109 27.825733,24.923573 27.437500,25.500000 L 22.781250,32.593750 C 22.457548,33.079684 22.343061,33.651590 22.468750,34.218750 C 22.594438,34.785901 22.938852,35.290252 23.437500,35.593750 C 23.926238,35.897258 24.530788,36.006413 25.093750,35.875000 C 25.656710,35.743585 26.133631,35.394772 26.437500,34.906250 L 29.312500,30.468750 L 29.906250,31.250000 C 30.255702,31.717759 30.767252,32.022222 31.343750,32.093750 C 31.920244,32.165278 32.515769,31.993198 32.968750,31.625000 C 33.418422,31.266142 33.716522,30.730711 33.781250,30.156250 C 33.845978,29.581791 33.671031,29.012439 33.312500,28.562500 C 33.312500,28.562500 30.865791,25.401380 30.843750,25.375000 C 30.423614,24.870406 29.816399,24.544818 29.156250,24.562500 z "
+ style="fill:#313436;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:5.5999999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000" />
+ <path
+ style="fill:#313436;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:5.5999999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
+ d="M 42.423622,44.325356 C 42.878330,43.972902 43.175108,43.452021 43.247964,42.878534 C 43.320822,42.305049 43.163721,41.726493 42.811598,41.271522 L 37.311605,33.932222 C 36.594069,32.974726 35.241996,32.787492 34.291657,33.514020 C 33.341318,34.240548 33.152594,35.605716 33.870127,36.563210 L 39.370120,43.902511 C 39.712913,44.375173 40.231215,44.686948 40.806642,44.766633 C 41.382064,44.846318 41.965473,44.687102 42.423622,44.325356 L 42.423622,44.325356 z "
+ id="path2103"
+ sodipodi:nodetypes="cccccccccc" />
+ <path
+ style="fill:#313436;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:5.5999999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
+ d="M 51.816951,56.666238 C 52.271659,56.313784 52.568437,55.792903 52.641293,55.219416 C 52.714151,54.645931 52.557050,54.067375 52.204927,53.612404 L 46.704934,46.273104 C 45.987398,45.315608 44.635325,45.128374 43.684986,45.854902 C 42.734647,46.581430 42.545923,47.946598 43.263456,48.904092 L 48.763449,56.243393 C 49.106242,56.716055 49.624544,57.027830 50.199971,57.107515 C 50.775393,57.187200 51.358802,57.027984 51.816951,56.666238 L 51.816951,56.666238 z "
+ id="path2105"
+ sodipodi:nodetypes="cccccccccc" />
+ </g>
+ </g>
+</svg>
diff --git a/chalk/plugins/tools/selectiontools/tool_polygonal_selection_cursor.png b/chalk/plugins/tools/selectiontools/tool_polygonal_selection_cursor.png
new file mode 100644
index 00000000..6bf000a7
--- /dev/null
+++ b/chalk/plugins/tools/selectiontools/tool_polygonal_selection_cursor.png
Binary files differ
diff --git a/chalk/plugins/tools/selectiontools/tool_rect_selection.png b/chalk/plugins/tools/selectiontools/tool_rect_selection.png
new file mode 100644
index 00000000..7cb658c8
--- /dev/null
+++ b/chalk/plugins/tools/selectiontools/tool_rect_selection.png
Binary files differ
diff --git a/chalk/plugins/tools/selectiontools/tool_rect_selection.svg b/chalk/plugins/tools/selectiontools/tool_rect_selection.svg
new file mode 100644
index 00000000..824bcc78
--- /dev/null
+++ b/chalk/plugins/tools/selectiontools/tool_rect_selection.svg
@@ -0,0 +1,191 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://web.resource.org/cc/"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="48.000000pt"
+ height="48.000000pt"
+ id="svg1409"
+ sodipodi:version="0.32"
+ inkscape:version="0.41"
+ sodipodi:docbase="/home/danny/work/kde/koffice/chalk/chalk"
+ sodipodi:docname="tool_rect_selection.svg"
+ inkscape:export-filename="/home/danny/work/kde/koffice/chalk/chalk/tool_rect_selection.png"
+ inkscape:export-xdpi="33.000000"
+ inkscape:export-ydpi="33.000000">
+ <defs
+ id="defs3">
+ <linearGradient
+ gradientUnits="userSpaceOnUse"
+ y2="36.873619"
+ x2="39.857029"
+ y1="4.5492039"
+ x1="10.878086"
+ gradientTransform="matrix(1.325250,0.000000,0.000000,1.003779,-5.702957,1.287849)"
+ id="linearGradient9512"
+ xlink:href="#light90to0"
+ inkscape:collect="always" />
+ <radialGradient
+ gradientUnits="userSpaceOnUse"
+ r="31.677956"
+ fy="46.914463"
+ fx="48.488476"
+ cy="46.914463"
+ cx="48.488476"
+ gradientTransform="matrix(1.261963,0.000000,0.000000,1.016360,-7.978266,-0.517425)"
+ id="radialGradient10280"
+ xlink:href="#light90to0"
+ inkscape:collect="always" />
+ <linearGradient
+ id="light90to0">
+ <stop
+ id="stop1890"
+ offset="0.0000000"
+ style="stop-color:#ffffff;stop-opacity:0.90833336;" />
+ <stop
+ id="stop1892"
+ offset="1.0000000"
+ style="stop-color:#ffffff;stop-opacity:0.0000000;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#light90to0"
+ id="linearGradient1331"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.325250,0.000000,0.000000,1.003779,-5.702957,1.287849)"
+ x1="10.878086"
+ y1="4.5492039"
+ x2="39.857029"
+ y2="36.873619" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#light90to0"
+ id="radialGradient1333"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.261963,0.000000,0.000000,1.016360,-7.978266,-0.517425)"
+ cx="48.488476"
+ cy="46.914463"
+ fx="48.488476"
+ fy="46.914463"
+ r="31.677956" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="5.5000000"
+ inkscape:cx="32.000000"
+ inkscape:cy="40.678134"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:document-units="px"
+ inkscape:grid-bbox="true"
+ inkscape:window-width="1020"
+ inkscape:window-height="691"
+ inkscape:window-x="0"
+ inkscape:window-y="0" />
+ <metadata
+ id="metadata4">
+ <rdf:RDF
+ id="RDF5">
+ <cc:Work
+ rdf:about=""
+ id="Work6">
+ <dc:format
+ id="format7">image/svg+xml</dc:format>
+ <dc:type
+ id="type9"
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ id="layer1"
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer">
+ <g
+ id="g1310"
+ transform="matrix(0.936040,0.000000,0.000000,0.928685,-8.886478e-6,5.826625)">
+ <path
+ id="rect7971"
+ d="M 7.6485855,2.2878450 L 56.351415,2.2878450 C 58.926731,2.2878450 61.000000,4.4309970 61.000000,7.0931190 L 61.000000,45.000000 C 61.000000,47.662122 58.926731,49.805274 56.351415,49.805274 L 7.6485855,49.805274 C 5.0732693,49.805274 3.0000002,47.662122 3.0000002,45.000000 L 3.0000002,7.0931190 C 3.0000002,4.4309970 5.0732693,2.2878450 7.6485855,2.2878450 z "
+ style="opacity:0.79446638;fill:#0028c6;fill-opacity:0.18099548;stroke:#000000;stroke-width:0.0000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:0.035294119" />
+ <path
+ sodipodi:nodetypes="ccccc"
+ id="path8746"
+ d="M 8.5132467,3.2878450 L 59.896282,3.2878450 C 62.101921,28.660784 28.667547,14.447098 3.6088412,46.000000 L 3.6088412,8.0931190 C 3.6088412,5.4309970 5.7962062,3.2878450 8.5132467,3.2878450 z "
+ style="opacity:0.79446638;fill:url(#linearGradient1331);fill-opacity:1.0000000;stroke:#000000;stroke-width:0.0000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:0.035294119" />
+ <path
+ id="path9514"
+ d="M 5.7287330,1.4825710 L 55.271266,1.4825710 C 57.890984,1.4825710 59.999999,3.6257230 59.999999,6.2878450 L 59.999999,44.194726 C 59.999999,46.856848 57.890984,49.000000 55.271266,49.000000 L 5.7287330,49.000000 C 3.1090150,49.000000 1.0000000,46.856848 1.0000000,44.194726 L 1.0000000,6.2878450 C 1.0000000,3.6257230 3.1090150,1.4825710 5.7287330,1.4825710 z "
+ style="opacity:0.97233200;fill:url(#radialGradient1333);fill-opacity:1.0000000;stroke:#000000;stroke-width:0.0000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:0.035294119" />
+ <path
+ id="path7697"
+ d="M 2.3413348,0.18751303 C 1.7243174,0.17079029 1.1269735,0.40863721 0.68575030,0.84672471 C 0.24452789,1.2848122 -0.0028841323,1.8857183 2.9672780e-05,2.5121821 L 2.9672780e-05,9.8736341 C 2.9672780e-05,11.157514 1.0254798,12.198303 2.2904369,12.198303 C 3.5553939,12.198303 4.5808440,11.157514 4.5808440,9.8736341 L 4.5808440,4.8626808 L 6.3113739,4.8885105 C 7.1481898,4.9449167 7.9479829,4.5305867 8.3938928,3.8096698 C 8.8398019,3.0887537 8.8598630,2.1775984 8.4461271,1.4371840 C 8.0323920,0.69677054 7.2516331,0.24659228 6.4131698,0.26500200 L 2.3413348,0.18751303 z "
+ style="fill:#313436;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:5.5999999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000" />
+ <path
+ sodipodi:nodetypes="cccccccc"
+ id="path7695"
+ d="M 47.176002,0.18683303 C 45.911045,0.17256762 44.874201,1.2017931 44.860146,2.4856724 C 44.846091,3.7695518 45.860147,4.8219057 47.125104,4.8361712 L 56.821161,4.9653194 C 57.660564,5.0158241 58.459241,4.5933914 58.899319,3.8661498 C 59.339396,3.1389073 59.349459,2.2248747 58.925501,1.4878344 C 58.501542,0.75079486 57.712364,0.31035500 56.872059,0.34181097 L 47.176002,0.18683303 z "
+ style="fill:#313436;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:5.5999999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000" />
+ <path
+ sodipodi:nodetypes="cccccccccc"
+ id="path1937"
+ d="M 61.783704,5.4543804 C 61.175397,5.4585016 60.593926,5.7091294 60.168584,6.1505355 C 59.743242,6.5919408 59.509289,7.1875338 59.518746,7.8048791 L 59.518746,17.645978 C 59.518746,18.929858 60.544196,19.970647 61.809153,19.970647 C 63.074110,19.970647 64.099560,18.929858 64.099560,17.645978 L 64.099560,7.8048791 C 64.109217,7.1785351 63.868327,6.5749651 63.431909,6.1320183 C 62.995491,5.6890724 62.400817,5.4445792 61.783704,5.4543804 L 61.783704,5.4543804 z "
+ style="fill:#313436;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:5.5999999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000" />
+ <path
+ id="path7691"
+ d="M 61.783704,39.758546 C 61.175397,39.762668 60.593926,40.013295 60.168584,40.454702 C 59.743242,40.896107 59.509289,41.491700 59.518746,42.109045 L 59.518746,47.223317 L 57.737318,47.223317 C 56.472361,47.223317 55.446911,48.264107 55.446911,49.547986 C 55.446911,50.831866 56.472361,51.872655 57.737318,51.872655 L 61.809153,51.872655 C 62.417418,51.875356 63.001539,51.631303 63.431652,51.194756 C 63.861765,50.758209 64.102221,50.165350 64.099560,49.547986 L 64.099560,42.109045 C 64.109217,41.482701 63.868327,40.879131 63.431909,40.436184 C 62.995491,39.993238 62.400817,39.748745 61.783704,39.758546 z "
+ style="fill:#313436;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:5.5999999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000" />
+ <path
+ sodipodi:nodetypes="cccccccc"
+ id="path7735"
+ d="M 14.126001,0.18683303 C 12.861044,0.17256762 11.824200,1.2017931 11.810145,2.4856724 C 11.796090,3.7695518 12.810146,4.8219057 14.075103,4.8361712 L 23.771160,4.9653194 C 24.610563,5.0158241 25.409240,4.5933914 25.849318,3.8661498 C 26.289395,3.1389073 26.299458,2.2248747 25.875500,1.4878344 C 25.451541,0.75079486 24.662363,0.31035500 23.822058,0.34181097 L 14.126001,0.18683303 z "
+ style="fill:#313436;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:5.5999999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000" />
+ <path
+ sodipodi:nodetypes="cccccccc"
+ id="path7745"
+ d="M 24.746000,47.090119 C 23.481043,47.075854 22.444199,48.105079 22.430144,49.388958 C 22.416089,50.672838 23.430145,51.725192 24.695102,51.739457 L 34.391159,51.868605 C 35.230562,51.919110 36.029239,51.496677 36.469317,50.769436 C 36.909395,50.042193 36.919457,49.128161 36.495499,48.391120 C 36.071541,47.654081 35.282363,47.213641 34.442057,47.245097 L 24.746000,47.090119 z "
+ style="fill:#313436;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:5.5999999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000" />
+ <path
+ sodipodi:nodetypes="cccccccc"
+ id="path7751"
+ d="M 7.2160002,47.090119 C 5.9510431,47.075854 4.9141995,48.105079 4.9001443,49.388958 C 4.8860891,50.672838 5.9001452,51.725192 7.1651023,51.739457 L 16.861159,51.868605 C 17.700562,51.919110 18.499239,51.496677 18.939317,50.769436 C 19.379395,50.042193 19.389457,49.128161 18.965499,48.391120 C 18.541541,47.654081 17.752363,47.213641 16.912057,47.245097 L 7.2160002,47.090119 z "
+ style="fill:#313436;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:5.5999999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000" />
+ <path
+ sodipodi:nodetypes="cccccccccc"
+ id="path7765"
+ d="M 61.699014,22.811910 C 61.090707,22.816032 60.509236,23.066659 60.083894,23.508065 C 59.658552,23.949471 59.424599,24.545064 59.434056,25.162409 L 59.434056,35.003508 C 59.434056,36.287388 60.459506,37.328177 61.724463,37.328177 C 62.989420,37.328177 64.014870,36.287388 64.014870,35.003508 L 64.014870,25.162409 C 64.024527,24.536065 63.783637,23.932495 63.347219,23.489548 C 62.910801,23.046602 62.316127,22.802109 61.699014,22.811910 L 61.699014,22.811910 z "
+ style="fill:#313436;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:5.5999999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000" />
+ <path
+ sodipodi:nodetypes="cccccccccc"
+ id="path7775"
+ d="M 2.3431661,15.039565 C 1.7348592,15.043687 1.1533882,15.294314 0.72804592,15.735720 C 0.30270448,16.177126 0.068751498,16.772719 0.078207928,17.390064 L 0.078207928,27.231163 C 0.078207928,28.515043 1.1036580,29.555832 2.3686151,29.555832 C 3.6335722,29.555832 4.6590223,28.515043 4.6590223,27.231163 L 4.6590223,17.390064 C 4.6686791,16.763720 4.4277893,16.160150 3.9913717,15.717203 C 3.5549532,15.274257 2.9602788,15.029764 2.3431661,15.039565 L 2.3431661,15.039565 z "
+ style="fill:#313436;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:5.5999999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000" />
+ <path
+ sodipodi:nodetypes="cccccccccc"
+ id="path7781"
+ d="M 2.3431661,32.317224 C 1.7348592,32.321346 1.1533882,32.571973 0.72804592,33.013379 C 0.30270448,33.454785 0.068751498,34.050378 0.078207928,34.667723 L 0.078207928,44.508822 C 0.078207928,45.792702 1.1036580,46.833491 2.3686151,46.833491 C 3.6335722,46.833491 4.6590223,45.792702 4.6590223,44.508822 L 4.6590223,34.667723 C 4.6686791,34.041379 4.4277893,33.437809 3.9913717,32.994862 C 3.5549532,32.551916 2.9602788,32.307423 2.3431661,32.317224 L 2.3431661,32.317224 z "
+ style="fill:#313436;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:5.5999999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000" />
+ <path
+ sodipodi:nodetypes="cccccccc"
+ id="path1546"
+ d="M 30.725998,0.18683303 C 29.461041,0.17256762 28.424197,1.2017931 28.410142,2.4856724 C 28.396087,3.7695518 29.410143,4.8219057 30.675100,4.8361712 L 40.371157,4.9653194 C 41.210560,5.0158241 42.009237,4.5933914 42.449315,3.8661498 C 42.889392,3.1389073 42.899455,2.2248747 42.475497,1.4878344 C 42.051538,0.75079486 41.262360,0.31035500 40.422055,0.34181097 L 30.725998,0.18683303 z "
+ style="fill:#313436;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:5.5999999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000" />
+ <path
+ sodipodi:nodetypes="cccccccc"
+ id="path1558"
+ d="M 41.645996,47.090119 C 40.381039,47.075854 39.344195,48.105079 39.330140,49.388958 C 39.316085,50.672838 40.330141,51.725192 41.595098,51.739457 L 51.291155,51.868605 C 52.130558,51.919110 52.929235,51.496677 53.369313,50.769436 C 53.809391,50.042193 53.819453,49.128161 53.395495,48.391120 C 52.971537,47.654081 52.182359,47.213641 51.342053,47.245097 L 41.645996,47.090119 z "
+ style="fill:#313436;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:5.5999999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000" />
+ </g>
+ </g>
+</svg>
diff --git a/chalk/plugins/tools/selectiontools/tool_rectangular_selection_cursor.png b/chalk/plugins/tools/selectiontools/tool_rectangular_selection_cursor.png
new file mode 100644
index 00000000..548d8ace
--- /dev/null
+++ b/chalk/plugins/tools/selectiontools/tool_rectangular_selection_cursor.png
Binary files differ