diff options
Diffstat (limited to 'krita/plugins/paintops/defaultpaintops')
28 files changed, 0 insertions, 4157 deletions
diff --git a/krita/plugins/paintops/defaultpaintops/Makefile.am b/krita/plugins/paintops/defaultpaintops/Makefile.am deleted file mode 100644 index 510c4846..00000000 --- a/krita/plugins/paintops/defaultpaintops/Makefile.am +++ /dev/null @@ -1,39 +0,0 @@ -kritaimagesdir = $(prefix)/share/apps/krita/images - -kritaimages_DATA = \ - airbrush.png \ - paintbrush.png \ - eraser.png \ - pencil.png - - -kde_services_DATA = kritadefaultpaintops.desktop - -# all_includes must remain last! -INCLUDES = -I$(srcdir)/../../../sdk \ - -I$(srcdir)/../../../core \ - -I$(srcdir)/../../../kritacolor/ \ - -I$(srcdir)/../../../ui \ - $(KOFFICE_INCLUDES) $(KOPAINTER_INCLUDES) $(all_includes) - - -kritadefaultpaintops_la_SOURCES = \ - defaultpaintops_plugin.cc \ - kis_airbrushop.cc \ - kis_brushop.cc \ - kis_duplicateop.cc \ - kis_eraseop.cc \ - kis_penop.cc \ - kis_dlgbrushcurvecontrol.ui \ - kis_smudgeop.cc - -noinst_HEADERS = defaultpaintops_plugin.h kis_airbrushop.h kis_brushop.h \ - kis_duplicateop.h kis_eraseop.h kis_penop.h kis_smudgeop.h - -kde_module_LTLIBRARIES = kritadefaultpaintops.la - -kritadefaultpaintops_la_LDFLAGS = $(all_libraries) -module $(KDE_PLUGIN) $(LIB_QT) -lkdecore -lkdeui -lkjs -lkdefx -lkio -lkparts -L../../../../krita/kritacolor/.libs -lkritacolor -L../../../../krita/core/.libs -lkritaimage \ - -L../../../../krita/ui/.libs -lkritaui -kritadefaultpaintops_la_LIBADD = ../../../libkritacommon.la $(LIB_KOPAINTER) $(LIB_KOFFICECORE) - -kritadefaultpaintops_la_METASOURCES = AUTO diff --git a/krita/plugins/paintops/defaultpaintops/README b/krita/plugins/paintops/defaultpaintops/README deleted file mode 100644 index 47b07ce7..00000000 --- a/krita/plugins/paintops/defaultpaintops/README +++ /dev/null @@ -1,3 +0,0 @@ -Default implementations of the paintop interface. These may -some day become plugins. New paintops should be created as -plugins. diff --git a/krita/plugins/paintops/defaultpaintops/airbrush.png b/krita/plugins/paintops/defaultpaintops/airbrush.png Binary files differdeleted file mode 100644 index 36c1d707..00000000 --- a/krita/plugins/paintops/defaultpaintops/airbrush.png +++ /dev/null diff --git a/krita/plugins/paintops/defaultpaintops/defaultpaintops_plugin.cc b/krita/plugins/paintops/defaultpaintops/defaultpaintops_plugin.cc deleted file mode 100644 index c44a31c8..00000000 --- a/krita/plugins/paintops/defaultpaintops/defaultpaintops_plugin.cc +++ /dev/null @@ -1,70 +0,0 @@ -/* - * defaultpaintops_plugin.cc -- Part of Krita - * - * 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 <klocale.h> -#include <kiconloader.h> -#include <kinstance.h> -#include <kstandarddirs.h> -#include <ktempfile.h> -#include <kdebug.h> -#include <kgenericfactory.h> - -#include <kis_paintop_registry.h> - -#include "kis_airbrushop.h" -#include "kis_brushop.h" -#include "kis_duplicateop.h" -#include "kis_eraseop.h" -#include "kis_smudgeop.h" -#include "kis_penop.h" -#include "kis_global.h" -#include "kis_paintop_registry.h" - -#include "defaultpaintops_plugin.h" - -typedef KGenericFactory<DefaultPaintOpsPlugin> DefaultPaintOpsPluginFactory; -K_EXPORT_COMPONENT_FACTORY( kritadefaultpaintops, DefaultPaintOpsPluginFactory( "kritacore" ) ) - - -DefaultPaintOpsPlugin::DefaultPaintOpsPlugin(TQObject *tqparent, const char *name, const TQStringList &) - : KParts::Plugin(tqparent, name) -{ - setInstance(DefaultPaintOpsPluginFactory::instance()); - - // This is not a gui plugin; only load it when the doc is created. - if ( tqparent->inherits("KisPaintOpRegistry") ) - { - KisPaintOpRegistry * r = dynamic_cast<KisPaintOpRegistry*>(tqparent); - // Add hard-coded paint ops. Plugin paintops will add - // themselves in the plugin initialization code. - r->add ( new KisAirbrushOpFactory ); - r->add ( new KisBrushOpFactory ); - r->add ( new KisDuplicateOpFactory ); - r->add ( new KisEraseOpFactory ); - r->add ( new KisPenOpFactory ); - r->add ( new KisSmudgeOpFactory ); - } - -} - -DefaultPaintOpsPlugin::~DefaultPaintOpsPlugin() -{ -} - -#include "defaultpaintops_plugin.moc" diff --git a/krita/plugins/paintops/defaultpaintops/defaultpaintops_plugin.h b/krita/plugins/paintops/defaultpaintops/defaultpaintops_plugin.h deleted file mode 100644 index d7afb9d0..00000000 --- a/krita/plugins/paintops/defaultpaintops/defaultpaintops_plugin.h +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright (c) 2005 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 DEFAULT_PAINTOPS_PLUGIN_H_ -#define DEFAULT_PAINTOPS_PLUGIN_H_ - -#include <kparts/plugin.h> - -/** - * A plugin wrapper that adds the paintop factories to the paintop registry. - */ -class DefaultPaintOpsPlugin : public KParts::Plugin -{ - Q_OBJECT - TQ_OBJECT -public: - DefaultPaintOpsPlugin(TQObject *tqparent, const char *name, const TQStringList &); - virtual ~DefaultPaintOpsPlugin(); -}; - -#endif // DEFAULT_PAINTOPSGRAY_PLUGIN_H_ diff --git a/krita/plugins/paintops/defaultpaintops/eraser.png b/krita/plugins/paintops/defaultpaintops/eraser.png Binary files differdeleted file mode 100644 index c5461aba..00000000 --- a/krita/plugins/paintops/defaultpaintops/eraser.png +++ /dev/null diff --git a/krita/plugins/paintops/defaultpaintops/kis_airbrushop.cc b/krita/plugins/paintops/defaultpaintops/kis_airbrushop.cc deleted file mode 100644 index db320bec..00000000 --- a/krita/plugins/paintops/defaultpaintops/kis_airbrushop.cc +++ /dev/null @@ -1,150 +0,0 @@ -/* - * Copyright (c) 2002 Patrick Julien <freak@codepimps.org> - * Copyright (c) 2004 Boudewijn Rempt <boud@valdyas.org> - * Copyright (c) 2004 Clarence Dang <dang@kde.org> - * Copyright (c) 2004 Adrian Page <adrian@pagenet.plus.com> - * Copyright (c) 2004 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 <tqrect.h> - -#include <kdebug.h> - -#include "kis_vec.h" -#include "kis_brush.h" -#include "kis_global.h" -#include "kis_paint_device.h" -#include "kis_painter.h" -#include "kis_types.h" -#include "kis_paintop.h" -#include "kis_layer.h" -#include "kis_selection.h" -#include "kis_airbrushop.h" - -KisPaintOp * KisAirbrushOpFactory::createOp(const KisPaintOpSettings */*settings*/, KisPainter * painter) -{ - KisPaintOp * op = new KisAirbrushOp(painter); - Q_CHECK_PTR(op); - return op; -} - - -KisAirbrushOp::KisAirbrushOp(KisPainter * painter) - : super(painter) -{ -} - -KisAirbrushOp::~KisAirbrushOp() -{ -} - -void KisAirbrushOp::paintAt(const KisPoint &pos, const KisPaintInformation& info) -{ -// See: http://www.sysf.physto.se/~klere/airbrush/ for information -// about _real_ airbrushes. -// -// Most graphics apps -- especially the simple ones like Kolourpaint -// and the previous version of this routine in Krita took a brush -// tqshape -- often a simple ellipse -- and filled that tqshape with a -// random 'spray' of single pixels. -// -// Other, more advanced graphics apps, like the Gimp or Photoshop, -// take the brush tqshape and paint just as with the brush paint op, -// only making the initial dab more transparent, and perhaps adding -// extra transparence near the edges. Then, using a timer, when the -// cursor stays in place, dab upon dab is positioned in the same -// place, which makes the result less and less transparent. -// -// What I want to do here is create an airbrush that approaches a real -// one. It won't use brush tqshapes, instead going for the old-fashioned -// circle. Depending upon pressure, both the size of the dab and the -// rate of paint deposition is determined. The edges of the dab are -// more transparent than the center, with perhaps even some fully -// transparent pixels between the near-transparent pixels. -// -// By pressing some to-be-determined key at the same time as pressing -// mouse-down, one edge of the dab is made straight, to simulate -// working with a shield. -// -// Tilt may be used to make the gradients more realistic, but I don't -// have a tablet that supports tilt. -// -// Anyway, it's exactly twenty years ago that I have held a real -// airbrush, for the first and up to now the last time... -// - - if (!m_painter) return; - - KisPaintDeviceSP device = m_painter->device(); - - // For now: use the current brush tqshape -- it beats calculating - // ellipes and cones, and it shows the working of the timer. - if (!device) return; - - KisBrush * brush = m_painter->brush(); - if (! brush->canPaintFor(info) ) - return; - KisPaintDeviceSP dab = m_painter->dab(); - - KisPoint hotSpot = brush->hotSpot(info); - KisPoint pt = pos - hotSpot; - - TQ_INT32 x; - double xFraction; - TQ_INT32 y; - double yFraction; - - splitCoordinate(pt.x(), &x, &xFraction); - splitCoordinate(pt.y(), &y, &yFraction); - - if (brush->brushType() == IMAGE || brush->brushType() == PIPE_IMAGE) { - dab = brush->image(device->colorSpace(), info, xFraction, yFraction); - } - else { - KisAlphaMaskSP tqmask = brush->tqmask(info, xFraction, yFraction); - dab = computeDab(tqmask); - } - - m_painter->setDab(dab); // Cache dab for future paints in the painter. - m_painter->setPressure(info.pressure); // Cache pressure in the current painter. - - TQRect dabRect = TQRect(0, 0, brush->tqmaskWidth(info), brush->tqmaskHeight(info)); - TQRect dstRect = TQRect(x, y, dabRect.width(), dabRect.height()); - - KisImage * image = device->image(); - - if (image != 0) { - dstRect &= image->bounds(); - } - - if (dstRect.isNull() || dstRect.isEmpty() || !dstRect.isValid()) return; - - TQ_INT32 sx = dstRect.x() - x; - TQ_INT32 sy = dstRect.y() - y; - TQ_INT32 sw = dstRect.width(); - TQ_INT32 sh = dstRect.height(); - - if (m_source->hasSelection()) { - m_painter->bltSelection(dstRect.x(), dstRect.y(), m_painter->compositeOp(), dab.data(), - m_source->selection(), m_painter->opacity(), sx, sy, sw, sh); - } - else { - m_painter->bitBlt(dstRect.x(), dstRect.y(), m_painter->compositeOp(), dab.data(), m_painter->opacity(), sx, sy, sw, sh); - } - - m_painter->addDirtyRect(dstRect); -} diff --git a/krita/plugins/paintops/defaultpaintops/kis_airbrushop.h b/krita/plugins/paintops/defaultpaintops/kis_airbrushop.h deleted file mode 100644 index 805664d7..00000000 --- a/krita/plugins/paintops/defaultpaintops/kis_airbrushop.h +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright (c) 2002 Patrick Julien <freak@codepimps.org> - * Copyright (c) 2004 Boudewijn Rempt <boud@valdyas.org> - * Copyright (c) 2004 Clarence Dang <dang@kde.org> - * Copyright (c) 2004 Adrian Page <adrian@pagenet.plus.com> - * Copyright (c) 2004 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_AIRBRUSHOP_H_ -#define KIS_AIRBRUSHOP_H_ - -#include "kis_paintop.h" - -class KisPoint; -class KisPainter; - -class KisAirbrushOpFactory : public KisPaintOpFactory { - -public: - KisAirbrushOpFactory() {} - virtual ~KisAirbrushOpFactory() {} - - virtual KisPaintOp * createOp(const KisPaintOpSettings *settings, KisPainter * painter); - virtual KisID id() { return KisID("airbrush", i18n("Pixel Airbrush")); } - virtual TQString pixmap() { return "airbrush.png"; } -}; - - - -class KisAirbrushOp : public KisPaintOp { - - typedef KisPaintOp super; - -public: - - KisAirbrushOp(KisPainter * painter); - virtual ~KisAirbrushOp(); - - // We want to spray even when the pointer doesn't move. - virtual bool incremental() { return true; } - - void paintAt(const KisPoint &pos, const KisPaintInformation& info); - -}; - -#endif // KIS_AIRBRUSHOP_H_ diff --git a/krita/plugins/paintops/defaultpaintops/kis_brushop.cc b/krita/plugins/paintops/defaultpaintops/kis_brushop.cc deleted file mode 100644 index 360fa66e..00000000 --- a/krita/plugins/paintops/defaultpaintops/kis_brushop.cc +++ /dev/null @@ -1,284 +0,0 @@ -/* - * Copyright (c) 2002 Patrick Julien <freak@codepimps.org> - * Copyright (c) 2004 Boudewijn Rempt <boud@valdyas.org> - * Copyright (c) 2004 Clarence Dang <dang@kde.org> - * Copyright (c) 2004 Adrian Page <adrian@pagenet.plus.com> - * Copyright (c) 2004 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 <string.h> - -#include <tqrect.h> -#include <tqwidget.h> -#include <tqlayout.h> -#include <tqlabel.h> -#include <tqcheckbox.h> -#include <tqtoolbutton.h> - -#include <kdebug.h> - -#include "kcurve.h" -#include "kis_brush.h" -#include "kis_global.h" -#include "kis_paint_device.h" -#include "kis_layer.h" -#include "kis_painter.h" -#include "kis_types.h" -#include "kis_paintop.h" -#include "kis_input_device.h" -#include "kis_selection.h" -#include "kis_brushop.h" - -#include "kis_dlgbrushcurvecontrol.h" - -KisPaintOp * KisBrushOpFactory::createOp(const KisPaintOpSettings *settings, KisPainter * painter) -{ - const KisBrushOpSettings *brushopSettings = dynamic_cast<const KisBrushOpSettings *>(settings); - Q_ASSERT(settings == 0 || brushopSettings != 0); - - KisPaintOp * op = new KisBrushOp(brushopSettings, painter); - Q_CHECK_PTR(op); - return op; -} - -KisBrushOpSettings::KisBrushOpSettings(TQWidget *tqparent) - : super(tqparent) -{ - m_optionsWidget = new TQWidget(tqparent, "brush option widget"); - TQHBoxLayout * l = new TQHBoxLayout(m_optionsWidget); - l->setAutoAdd(true); - m_pressureVariation = new TQLabel(i18n("Pressure variation: "), m_optionsWidget); - m_size = new TQCheckBox(i18n("Size"), m_optionsWidget); - m_size->setChecked(true); - m_opacity = new TQCheckBox(i18n("Opacity"), m_optionsWidget); - m_darken = new TQCheckBox(i18n("Darken"), m_optionsWidget); - m_curveControl = new WdgBrushCurveControl(m_optionsWidget); - TQToolButton* moreButton = new TQToolButton(TQt::UpArrow, m_optionsWidget); - moreButton->tqsetSizePolicy(TQSizePolicy::Expanding, TQSizePolicy::Expanding); - moreButton->setMinimumSize(TQSize(24,24)); // Bah, I had hoped the above line would make this unneeded - connect(moreButton, TQT_SIGNAL(clicked()), this, TQT_SLOT(slotCustomCurves())); - - m_customSize = false; - m_customOpacity = false; - m_customDarken = false; - // the curves will get filled in when the slot gets accepted -} - -void KisBrushOpSettings::slotCustomCurves() { - if (m_curveControl->exec() == TQDialog::Accepted) { - m_customSize = m_curveControl->sizeCheckbox->isChecked(); - m_customOpacity = m_curveControl->opacityCheckbox->isChecked(); - m_customDarken = m_curveControl->darkenCheckbox->isChecked(); - - if (m_customSize) { - transferCurve(m_curveControl->sizeCurve, m_sizeCurve); - } - if (m_customOpacity) { - transferCurve(m_curveControl->opacityCurve, m_opacityCurve); - } - if (m_customDarken) { - transferCurve(m_curveControl->darkenCurve, m_darkenCurve); - } - } -} - -void KisBrushOpSettings::transferCurve(KCurve* curve, double* target) { - double value; - for (int i = 0; i < 256; i++) { - value = curve->getCurveValue( i / 255.0); - if (value < PRESSURE_MIN) - target[i] = PRESSURE_MIN; - else if (value > PRESSURE_MAX) - target[i] = PRESSURE_MAX; - else - target[i] = value; - } -} - - -bool KisBrushOpSettings::varySize() const -{ - return m_size->isChecked(); -} - -bool KisBrushOpSettings::varyOpacity() const -{ - return m_opacity->isChecked(); -} - -bool KisBrushOpSettings::varyDarken() const -{ - return m_darken->isChecked(); -} - -KisPaintOpSettings* KisBrushOpFactory::settings(TQWidget * tqparent, const KisInputDevice& inputDevice) -{ - if (inputDevice == KisInputDevice::mouse()) { - // No options for mouse, only tablet devices - return 0; - } else { - return new KisBrushOpSettings(tqparent); - } -} - -KisBrushOp::KisBrushOp(const KisBrushOpSettings *settings, KisPainter *painter) - : super(painter) - , m_pressureSize(true) - , m_pressureOpacity(false) - , m_pressureDarken(false) - , m_customSize(false) - , m_customOpacity(false) - , m_customDarken(false) -{ - if (settings != 0) { - m_pressureSize = settings->varySize(); - painter->setVaryBrushSpacingWithPressureWhenDrawingALine( m_pressureSize ); - - m_pressureOpacity = settings->varyOpacity(); - m_pressureDarken = settings->varyDarken(); - m_customSize = settings->customSize(); - m_customOpacity = settings->customOpacity(); - m_customDarken = settings->customDarken(); - if (m_customSize) { - memcpy(m_sizeCurve, settings->sizeCurve(), 256 * sizeof(double)); - } - if (m_customOpacity) { - memcpy(m_opacityCurve, settings->opacityCurve(), 256 * sizeof(double)); - } - if (m_customDarken) { - memcpy(m_darkenCurve, settings->darkenCurve(), 256 * sizeof(double)); - } - } -} - -KisBrushOp::~KisBrushOp() -{ - m_painter->setVaryBrushSpacingWithPressureWhenDrawingALine( true ); -} - -void KisBrushOp::paintAt(const KisPoint &pos, const KisPaintInformation& info) -{ - KisPaintInformation adjustedInfo(info); - if (!m_pressureSize) - adjustedInfo.pressure = PRESSURE_DEFAULT; - else if (m_customSize) - adjustedInfo.pressure = scaleToCurve(adjustedInfo.pressure, m_sizeCurve); - - // Painting should be implemented according to the following algorithm: - // retrieve brush - // if brush == tqmask - // retrieve tqmask - // else if brush == image - // retrieve image - // subsample (tqmask | image) for position -- pos should be double! - // apply filters to tqmask (colour | gradient | pattern | etc. - // composite filtered tqmask into temporary layer - // composite temporary layer into target layer - // @see: doc/brush.txt - - if (!m_painter->device()) return; - - KisBrush *brush = m_painter->brush(); - - Q_ASSERT(brush); - if (!brush) return; - if (! brush->canPaintFor(adjustedInfo) ) - return; - - KisPaintDeviceSP device = m_painter->device(); - - KisPoint hotSpot = brush->hotSpot(adjustedInfo); - KisPoint pt = pos - hotSpot; - - // Split the coordinates into integer plus fractional parts. The integer - // is where the dab will be positioned and the fractional part determines - // the sub-pixel positioning. - TQ_INT32 x; - double xFraction; - TQ_INT32 y; - double yFraction; - - splitCoordinate(pt.x(), &x, &xFraction); - splitCoordinate(pt.y(), &y, &yFraction); - - KisPaintDeviceSP dab = 0; - - TQ_UINT8 origOpacity = m_painter->opacity(); - KisColor origColor = m_painter->paintColor(); - - if (m_pressureOpacity) { - if (!m_customOpacity) - m_painter->setOpacity((TQ_INT8)(origOpacity * info.pressure)); - else - m_painter->setOpacity((TQ_INT8)(origOpacity * scaleToCurve(info.pressure, m_opacityCurve))); - } - - if (m_pressureDarken) { - KisColor darkened = origColor; - // Darken docs aren't really clear about what exactly the amount param can have as value... - TQ_UINT32 darkenAmount; - if (!m_customDarken) - darkenAmount = (TQ_INT32)(255 - 75 * info.pressure); - else - darkenAmount = (TQ_INT32)(255 - 75 * scaleToCurve(info.pressure, m_darkenCurve)); - - darkened.colorSpace()->darken(origColor.data(), darkened.data(), - darkenAmount, false, 0.0, 1); - m_painter->setPaintColor(darkened); - } - - if (brush->brushType() == IMAGE || brush->brushType() == PIPE_IMAGE) { - dab = brush->image(device->colorSpace(), adjustedInfo, xFraction, yFraction); - } - else { - KisAlphaMaskSP tqmask = brush->tqmask(adjustedInfo, xFraction, yFraction); - dab = computeDab(tqmask); - } - - m_painter->setPressure(adjustedInfo.pressure); - - TQRect dabRect = TQRect(0, 0, brush->tqmaskWidth(adjustedInfo), - brush->tqmaskHeight(adjustedInfo)); - TQRect dstRect = TQRect(x, y, dabRect.width(), dabRect.height()); - - KisImage * image = device->image(); - - if (image != 0) { - dstRect &= image->bounds(); - } - - if (dstRect.isNull() || dstRect.isEmpty() || !dstRect.isValid()) return; - - TQ_INT32 sx = dstRect.x() - x; - TQ_INT32 sy = dstRect.y() - y; - TQ_INT32 sw = dstRect.width(); - TQ_INT32 sh = dstRect.height(); - - if (m_source->hasSelection()) { - m_painter->bltSelection(dstRect.x(), dstRect.y(), m_painter->compositeOp(), dab.data(), - m_source->selection(), m_painter->opacity(), sx, sy, sw, sh); - } - else { - m_painter->bitBlt(dstRect.x(), dstRect.y(), m_painter->compositeOp(), dab.data(), m_painter->opacity(), sx, sy, sw, sh); - } - m_painter->addDirtyRect(dstRect); - - m_painter->setOpacity(origOpacity); - m_painter->setPaintColor(origColor); -} - -#include "kis_brushop.moc" diff --git a/krita/plugins/paintops/defaultpaintops/kis_brushop.h b/krita/plugins/paintops/defaultpaintops/kis_brushop.h deleted file mode 100644 index 6475b3d7..00000000 --- a/krita/plugins/paintops/defaultpaintops/kis_brushop.h +++ /dev/null @@ -1,113 +0,0 @@ -/* - * Copyright (c) 2002 Patrick Julien <freak@codepimps.org> - * Copyright (c) 2004 Boudewijn Rempt <boud@valdyas.org> - * Copyright (c) 2004 Clarence Dang <dang@kde.org> - * Copyright (c) 2004 Adrian Page <adrian@pagenet.plus.com> - * Copyright (c) 2004 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_BRUSHOP_H_ -#define KIS_BRUSHOP_H_ - -#include "kis_paintop.h" - -class TQWidget; -class TQCheckBox; -class TQLabel; -class KisPoint; -class KisPainter; -class KCurve; -class WdgBrushCurveControl; - -class KisBrushOpFactory : public KisPaintOpFactory { - -public: - KisBrushOpFactory() {} - virtual ~KisBrushOpFactory() {} - - virtual KisPaintOp * createOp(const KisPaintOpSettings *settings, KisPainter * painter); - virtual KisID id() { return KisID("paintbrush", i18n("Pixel Brush")); } - virtual TQString pixmap() { return "paintbrush.png"; } - virtual KisPaintOpSettings *settings(TQWidget * tqparent, const KisInputDevice& inputDevice); -}; - -class KisBrushOpSettings : public TQObject, public KisPaintOpSettings { - Q_OBJECT - TQ_OBJECT - typedef KisPaintOpSettings super; -public: - KisBrushOpSettings(TQWidget *tqparent); - - bool varySize() const; - bool varyOpacity() const; - bool varyDarken() const; - - bool customSize() const { return m_customSize; } - bool customOpacity() const { return m_customOpacity; } - bool customDarken() const { return m_customDarken; } - const double* sizeCurve() const { return m_sizeCurve; } - const double* opacityCurve() const { return m_opacityCurve; } - const double* darkenCurve() const { return m_darkenCurve; } - - virtual TQWidget *widget() const { return m_optionsWidget; } -private slots: - void slotCustomCurves(); -private: - void transferCurve(KCurve* curve, double* target); - TQWidget *m_optionsWidget; - TQLabel * m_pressureVariation; - TQCheckBox * m_size; - TQCheckBox * m_opacity; - TQCheckBox * m_darken; - WdgBrushCurveControl* m_curveControl; - - bool m_customSize; - bool m_customOpacity; - bool m_customDarken; - double m_sizeCurve[256]; - double m_opacityCurve[256]; - double m_darkenCurve[256]; -}; - -class KisBrushOp : public KisPaintOp { - - typedef KisPaintOp super; - -public: - - KisBrushOp(const KisBrushOpSettings *settings, KisPainter * painter); - virtual ~KisBrushOp(); - - void paintAt(const KisPoint &pos, const KisPaintInformation& info); - -private: - inline double scaleToCurve(double pressure, double* curve) const { - int offset = CLAMP(int(255.0 * pressure), 0, 255); - return curve[offset]; - } - bool m_pressureSize; - bool m_pressureOpacity; - bool m_pressureDarken; - bool m_customSize; - bool m_customOpacity; - bool m_customDarken; - double m_sizeCurve[256]; - double m_opacityCurve[256]; - double m_darkenCurve[256]; -}; - -#endif // KIS_BRUSHOP_H_ diff --git a/krita/plugins/paintops/defaultpaintops/kis_convolveop.cc b/krita/plugins/paintops/defaultpaintops/kis_convolveop.cc deleted file mode 100644 index 72bf9e66..00000000 --- a/krita/plugins/paintops/defaultpaintops/kis_convolveop.cc +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright (c) 2002 Patrick Julien <freak@codepimps.org> - * Copyright (c) 2004 Boudewijn Rempt <boud@valdyas.org> - * Copyright (c) 2004 Clarence Dang <dang@kde.org> - * Copyright (c) 2004 Adrian Page <adrian@pagenet.plus.com> - * Copyright (c) 2004 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 <tqrect.h> - -#include <kdebug.h> - -#include "kis_brush.h" -#include "kis_global.h" -#include "kis_paint_device.h" -#include "kis_painter.h" -#include "kis_layer.h" -#include "kis_types.h" -#include "kis_paintop.h" -#include "kis_selection.h" -#include "kis_convolveop.h" - - -KisPaintOp * KisConvolveOpFactory::createOp(const KisPaintOpSettings */*settings*/, KisPainter * painter) -{ - KisPaintOp * op = new KisConvolveOp(painter); - Q_CHECK_PTR(op); - return op; -} - - -KisConvolveOp::KisConvolveOp(KisPainter * painter) - : super(painter) -{ -} - -KisConvolveOp::~KisConvolveOp() -{ -} - -void KisConvolveOp::paintAt(const KisPoint &/*pos*/, const KisPaintInformation& /*info*/) -{ - // XXX: use convolve painter here. - -} diff --git a/krita/plugins/paintops/defaultpaintops/kis_convolveop.h b/krita/plugins/paintops/defaultpaintops/kis_convolveop.h deleted file mode 100644 index d5dc3764..00000000 --- a/krita/plugins/paintops/defaultpaintops/kis_convolveop.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright (c) 2002 Patrick Julien <freak@codepimps.org> - * Copyright (c) 2004 Boudewijn Rempt <boud@valdyas.org> - * Copyright (c) 2004 Clarence Dang <dang@kde.org> - * Copyright (c) 2004 Adrian Page <adrian@pagenet.plus.com> - * Copyright (c) 2004 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_CONVOLVEOP_H_ -#define KIS_CONVOLVEOP_H_ - -#include "kis_paintop.h" - -class KisPoint; -class KisPainter; - - -class KisConvolveOpFactory : public KisPaintOpFactory { - -public: - KisConvolveOpFactory() {} - virtual ~KisConvolveOpFactory() {} - - virtual KisPaintOp * createOp(const KisPaintOpSettings *settings, KisPainter * painter); - virtual KisID id() { return KisID("convolve", i18n("Convolve")); } -}; - - -class KisConvolveOp : public KisPaintOp { - - typedef KisPaintOp super; - -public: - - KisConvolveOp(KisPainter * painter); - virtual ~KisConvolveOp(); - - void paintAt(const KisPoint &pos, const KisPaintInformation& info); - -}; - -#endif // KIS_CONVOLVEOP_H_ diff --git a/krita/plugins/paintops/defaultpaintops/kis_dlgbrushcurvecontrol.ui b/krita/plugins/paintops/defaultpaintops/kis_dlgbrushcurvecontrol.ui deleted file mode 100644 index f6021ecc..00000000 --- a/krita/plugins/paintops/defaultpaintops/kis_dlgbrushcurvecontrol.ui +++ /dev/null @@ -1,271 +0,0 @@ -<!DOCTYPE UI><UI version="3.3" stdsetdef="1"> -<class>WdgBrushCurveControl</class> -<widget class="TQDialog"> - <property name="name"> - <cstring>WdgBrushCurveControl</cstring> - </property> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>477</width> - <height>430</height> - </rect> - </property> - <property name="caption"> - <string>Custom Curves</string> - </property> - <property name="sizeGripEnabled"> - <bool>true</bool> - </property> - <vbox> - <property name="name"> - <cstring>unnamed</cstring> - </property> - <widget class="TQTabWidget"> - <property name="name"> - <cstring>tabWidget</cstring> - </property> - <widget class="TQWidget"> - <property name="name"> - <cstring>Widget8</cstring> - </property> - <attribute name="title"> - <string>Size Curve</string> - </attribute> - <grid> - <property name="name"> - <cstring>unnamed</cstring> - </property> - <widget class="TQLayoutWidget" row="0" column="0"> - <property name="name"> - <cstring>tqlayout4</cstring> - </property> - <vbox> - <property name="name"> - <cstring>unnamed</cstring> - </property> - <widget class="TQCheckBox"> - <property name="name"> - <cstring>sizeCheckbox</cstring> - </property> - <property name="text"> - <string>Use custom curve</string> - </property> - </widget> - <widget class="KCurve"> - <property name="name"> - <cstring>sizeCurve</cstring> - </property> - <property name="sizePolicy"> - <sizepolicy> - <hsizetype>7</hsizetype> - <vsizetype>7</vsizetype> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - </widget> - </vbox> - </widget> - </grid> - </widget> - <widget class="TQWidget"> - <property name="name"> - <cstring>Widget9</cstring> - </property> - <attribute name="title"> - <string>Opacity Curve</string> - </attribute> - <grid> - <property name="name"> - <cstring>unnamed</cstring> - </property> - <widget class="TQLayoutWidget" row="0" column="0"> - <property name="name"> - <cstring>tqlayout3</cstring> - </property> - <vbox> - <property name="name"> - <cstring>unnamed</cstring> - </property> - <widget class="TQCheckBox"> - <property name="name"> - <cstring>opacityCheckbox</cstring> - </property> - <property name="text"> - <string>Use custom curve</string> - </property> - </widget> - <widget class="KCurve"> - <property name="name"> - <cstring>opacityCurve</cstring> - </property> - <property name="sizePolicy"> - <sizepolicy> - <hsizetype>7</hsizetype> - <vsizetype>7</vsizetype> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - </widget> - </vbox> - </widget> - </grid> - </widget> - <widget class="TQWidget"> - <property name="name"> - <cstring>TabPage</cstring> - </property> - <attribute name="title"> - <string>Darken Curve</string> - </attribute> - <grid> - <property name="name"> - <cstring>unnamed</cstring> - </property> - <widget class="TQLayoutWidget" row="0" column="0"> - <property name="name"> - <cstring>tqlayout5</cstring> - </property> - <vbox> - <property name="name"> - <cstring>unnamed</cstring> - </property> - <widget class="TQCheckBox"> - <property name="name"> - <cstring>darkenCheckbox</cstring> - </property> - <property name="text"> - <string>Use custom curve</string> - </property> - </widget> - <widget class="KCurve"> - <property name="name"> - <cstring>darkenCurve</cstring> - </property> - <property name="sizePolicy"> - <sizepolicy> - <hsizetype>7</hsizetype> - <vsizetype>7</vsizetype> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - </widget> - </vbox> - </widget> - </grid> - </widget> - </widget> - <widget class="TQLayoutWidget"> - <property name="name"> - <cstring>Layout1</cstring> - </property> - <hbox> - <property name="name"> - <cstring>unnamed</cstring> - </property> - <property name="margin"> - <number>0</number> - </property> - <property name="spacing"> - <number>6</number> - </property> - <spacer> - <property name="name"> - <cstring>Horizontal Spacing2</cstring> - </property> - <property name="orientation"> - <enum>Horizontal</enum> - </property> - <property name="sizeType"> - <enum>Expanding</enum> - </property> - <property name="tqsizeHint"> - <size> - <width>20</width> - <height>20</height> - </size> - </property> - </spacer> - <widget class="TQPushButton"> - <property name="name"> - <cstring>buttonOk</cstring> - </property> - <property name="text"> - <string>&OK</string> - </property> - <property name="accel"> - <string></string> - </property> - <property name="autoDefault"> - <bool>true</bool> - </property> - <property name="default"> - <bool>true</bool> - </property> - </widget> - <widget class="TQPushButton"> - <property name="name"> - <cstring>buttonCancel</cstring> - </property> - <property name="text"> - <string>&Cancel</string> - </property> - <property name="accel"> - <string></string> - </property> - <property name="autoDefault"> - <bool>true</bool> - </property> - </widget> - </hbox> - </widget> - </vbox> -</widget> -<customwidgets> - <customwidget> - <class>KCurve</class> - <header location="local">kcurve.h</header> - <sizehint> - <width>-1</width> - <height>-1</height> - </sizehint> - <container>0</container> - <sizepolicy> - <hordata>5</hordata> - <verdata>5</verdata> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - <pixmap>image0</pixmap> - </customwidget> -</customwidgets> -<images> - <image name="image0"> - <data format="PNG" length="1002">89504e470d0a1a0a0000000d4948445200000016000000160806000000c4b46c3b000003b149444154388dad945f4c5b551cc73fe7dc4b7b4bcba0762d45c43114323599ee6192609c51d883892ce083f1718b3ebb185f8dc91e972cf39d2d2a2f1af664b6f1e0fe3863a0718969700eb0c52142da0242a1bd6d696f7bcff101585203ceb8fd9ece39f99dcff9fe7edf939f88c562ec465f5f9fe609442c161362173c3e3eae7b7a7ac8e7f36432196cdbfe4f907c3e4f2291201e8fe338cec3737357e9e8e828aded1e229d650e1f2d51754b082110124c13a4dc5ea341eb9dc284c0558a853f3ce8cb0677ef500fde7d39d2596679e326597b8e9abb85d7a770ab16ab6983ec5a05b487a70e36f0f4e10afe408d6a558310980108478dba4a1e8233990c5d474b64ed39aa3a8fe5f3317fbf81dbd70bccfeb205947632fd74f6589c1c6ea2f70d03a58ba0c1f2c9bdc1b66de3b8256a6e11cbe7e3ee1d181b590124fe2693aeee08d223c82c3a2c24b7b874bec8f26288774f7bd054504aef0dde6e99c0eb83f9fb266323cb80a27fb0958141836044605a2ee5523393371cc646fee2da37195aa35d0c0c5b4859ac03d7e91712dcaac5adab3650a3ff9d08ef7dd8404bb48869e5d958b5b87dadc4c9a1464e9f0d0326df7ebd86bd2e310cb1bf62d384d59441f2d70a070e1c60e09489929b988681bdd9cc97170bcc4c65595f71f8e0e3301337fc24a7732467831875a47f289652b0be5e4151e6d07316c1b0c0340d8ab92023e76d66a6b2840e36d2fb7a13fee632475e6edc367ea98a90fb98b7dd6310ca0328a44761582e1bab41befabcc0ec940d28bc5e93b68e064cab84e1d9beaeb48934eac1f53b01c1b000fca496aa54b61a99fcde61662a4b4b4b23d1680be9d426173e4df3602a48ea411989a4fd590f52a8fd156b05ed9d350e3defe3cfdf4b4c7ce770ea7d3fb9f520afbe1620daeee5c26735d20b9b9cfb6811a754a439e4e5c5639a4caa1e5caf586bfc0197b78702005cb9b4cae4cd3267ce8638fe964bd72b393e39d74928d242617303a756a37f284447770dcdbffc6384a05a85de1306e9a52057c7527c7131c3c42d3f475eb2303c82d4fc3276d6811db37efeb148723082d9b08f79f97c1e5729109a9a28307cc622d2d6cdf52b2b24efe548dedb00142009862cfa879ee1a71f6cec928353511472fbf4389148b0b0e0c108081412458dfe21c9f11351e67e7358595468246d1d1e5e38a6e9e851bc39d84ab502a669331dafec0d8ec7e3e8cb06e1a881d727d1ae40180a434a8c9db129a54126ad48a7358c2b4c5352c8c374bcccdab2bb37d8719cba79fab8211f9df218e0582c261e95f8bfc04f1a1e8bc5c4dfe0a190172af6a9690000000049454e44ae426082</data> - </image> -</images> -<connections> - <connection> - <sender>buttonOk</sender> - <signal>clicked()</signal> - <receiver>WdgBrushCurveControl</receiver> - <slot>accept()</slot> - </connection> - <connection> - <sender>buttonCancel</sender> - <signal>clicked()</signal> - <receiver>WdgBrushCurveControl</receiver> - <slot>reject()</slot> - </connection> -</connections> -<tqlayoutdefaults spacing="6" margin="11"/> -<includehints> - <includehint>kcurve.h</includehint> - <includehint>kcurve.h</includehint> - <includehint>kcurve.h</includehint> -</includehints> -</UI> diff --git a/krita/plugins/paintops/defaultpaintops/kis_duplicateop.cc b/krita/plugins/paintops/defaultpaintops/kis_duplicateop.cc deleted file mode 100644 index 139ed51d..00000000 --- a/krita/plugins/paintops/defaultpaintops/kis_duplicateop.cc +++ /dev/null @@ -1,341 +0,0 @@ -/* - * Copyright (c) 2002 Patrick Julien <freak@codepimps.org> - * Copyright (c) 2004 Boudewijn Rempt <boud@valdyas.org> - * Copyright (c) 2004 Clarence Dang <dang@kde.org> - * Copyright (c) 2004 Adrian Page <adrian@pagenet.plus.com> - * Copyright (c) 2004-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_duplicateop.h" - -#include <tqrect.h> - -#include <kdebug.h> - -#include "kis_brush.h" -#include "kis_global.h" -#include "kis_paint_device.h" -#include "kis_layer.h" -#include "kis_painter.h" -#include "kis_types.h" -#include "kis_meta_registry.h" -#include "kis_colorspace_factory_registry.h" -#include "kis_paintop.h" -#include "kis_iterators_pixel.h" -#include "kis_selection.h" -#include "kis_perspective_grid.h" -#include "kis_random_sub_accessor.h" - -KisPaintOp * KisDuplicateOpFactory::createOp(const KisPaintOpSettings */*settings*/, KisPainter * painter) -{ - KisPaintOp * op = new KisDuplicateOp(painter); - Q_CHECK_PTR(op); - return op; -} - - -KisDuplicateOp::KisDuplicateOp(KisPainter * painter) - : super(painter) - , m_target(0) - , m_srcdev(0) -{ -} - -KisDuplicateOp::~KisDuplicateOp() -{ -} - -double KisDuplicateOp::minimizeEnergy(const double* m, double* sol, int w, int h) -{ - int rowstride = 3*w; - double err = 0; - memcpy(sol, m, 3* sizeof(double) * w); - m+=rowstride; - sol+=rowstride; - for ( int i = 1; i < h - 1; i++) - { - memcpy(sol, m, 3* sizeof(double)); - m+=3; sol+=3; - for ( int j = 3; j < rowstride-3; j++) - { - double tmp = *sol; - *sol = ( ( *(m - 3 ) + *(m + 3) + *(m - rowstride ) + *(m + rowstride )) + 2 * *m ) /6; - double diff = *sol - tmp; - err += diff*diff; - m ++; sol ++; - } - memcpy(sol, m, 3* sizeof(double)); - m+=3; sol+=3; -} - memcpy(sol, m, 3* sizeof(double) * w); - return err; -} - - -void KisDuplicateOp::paintAt(const KisPoint &pos, const KisPaintInformation& info) -{ - if (!m_painter) return; - - bool heal = m_painter->duplicateHealing(); -// int healradius = m_painter->duplicateHealingRadius(); - - KisPaintDeviceSP device = m_painter->device(); - if (m_source) device = m_source; - if (!device) return; - - KisBrush * brush = m_painter->brush(); - if (!brush) return; - if (! brush->canPaintFor(info) ) - return; - - KisPoint hotSpot = brush->hotSpot(info); - KisPoint pt = pos - hotSpot; - - // Split the coordinates into integer plus fractional parts. The integer - // is where the dab will be positioned and the fractional part determines - // the sub-pixel positioning. - TQ_INT32 x; - double xFraction; - TQ_INT32 y; - double yFraction; - - splitCoordinate(pt.x(), &x, &xFraction); - splitCoordinate(pt.y(), &y, &yFraction); - xFraction = yFraction = 0.0; - - KisPaintDeviceSP dab = 0; - - if (brush->brushType() == IMAGE || - brush->brushType() == PIPE_IMAGE) { - dab = brush->image(device->colorSpace(), info, xFraction, yFraction); - dab->convertTo(KisMetaRegistry::instance()->csRegistry()->getAlpha8()); - } - else { - KisAlphaMaskSP tqmask = brush->tqmask(info, xFraction, yFraction); - dab = computeDab(tqmask, KisMetaRegistry::instance()->csRegistry()->getAlpha8()); - } - - m_painter->setPressure(info.pressure); - - KisPoint srcPointF = pt - m_painter->duplicateOffset(); - TQPoint srcPoint = TQPoint(x - static_cast<TQ_INT32>(m_painter->duplicateOffset().x()), - y - static_cast<TQ_INT32>(m_painter->duplicateOffset().y())); - - - TQ_INT32 sw = dab->extent().width(); - TQ_INT32 sh = dab->extent().height(); - - if (srcPoint.x() < 0 ) - srcPoint.setX(0); - - if( srcPoint.y() < 0) - srcPoint.setY(0); - if( !(m_srcdev && m_srcdev->colorSpace() != device->colorSpace()) ) - { - m_srcdev = new KisPaintDevice(device->colorSpace(), "duplicate source dev"); - m_target = new KisPaintDevice(device->colorSpace(), "duplicate target dev"); - } - Q_CHECK_PTR(m_srcdev); - - // Perspective correction ? - KisPainter copyPainter(m_srcdev); - if(m_painter->duplicatePerspectiveCorrection()) - { - double startM[3][3]; - double endM[3][3]; - for(int i = 0; i < 3; i++) - { - for(int j = 0; j < 3; j++) - { - startM[i][j] = 0.; - endM[i][j] = 0.; - } - startM[i][i] = 1.; - endM[i][i] = 1.; - } - // First look for the grid corresponding to the start point - KisSubPerspectiveGrid* subGridStart = *device->image()->perspectiveGrid()->begin();//device->image()->perspectiveGrid()->gridAt(KisPoint(srcPoint.x() +hotSpot.x(),srcPoint.y() +hotSpot.y())); - TQRect r = TQRect(0,0, device->image()->width(), device->image()->height()); - -#if 1 - if(subGridStart) - { -// kdDebug() << "fgrid" << endl; -// kdDebug() << *subGridStart->topLeft() << " " << *subGridStart->topRight() << " " << *subGridStart->bottomLeft() << " " << *subGridStart->bottomRight() << endl; - double* b = KisPerspectiveMath::computeMatrixTransfoFromPerspective( r, *subGridStart->topLeft(), *subGridStart->topRight(), *subGridStart->bottomLeft(), *subGridStart->bottomRight()); - for(int i = 0; i < 3; i++) - { - for(int j = 0; j < 3; j++) - { -// kdDebug() << "sol[" << 3*i+j << "]=" << b[3*i+j] << endl; - startM[i][j] = b[3*i+j]; - } - } - - } -#endif -#if 1 - // Second look for the grid corresponding to the end point - KisSubPerspectiveGrid* subGridEnd = *device->image()->perspectiveGrid()->begin();// device->image()->perspectiveGrid()->gridAt(pos); - if(subGridEnd) - { -// kdDebug() << "second grid" << endl; - double* b = KisPerspectiveMath::computeMatrixTransfoToPerspective(*subGridEnd->topLeft(), *subGridEnd->topRight(), *subGridEnd->bottomLeft(), *subGridEnd->bottomRight(), r); - for(int i = 0; i < 3; i++) - { - for(int j = 0; j < 3; j++) - { -// kdDebug() << "sol[" << 3*i+j << "]=" << b[3*i+j] << endl; - endM[i][j] = b[3*i+j]; - } - } - } -#endif -// kdDebug()<< " oouuuuh" << srcPointF << KisPerspectiveMath::matProd(startM, KisPerspectiveMath::matProd(endM, srcPointF ) ) << KisPerspectiveMath::matProd(endM, KisPerspectiveMath::matProd(startM, srcPointF ) ); - - // Compute the translation in the perspective transformation space: - KisPoint positionStartPaintingT = KisPerspectiveMath::matProd(endM, m_painter->duplicateStart() ); - KisPoint duplicateStartPoisitionT = KisPerspectiveMath::matProd(endM, m_painter->duplicateStart() - m_painter->duplicateOffset() ); - KisPoint translat = duplicateStartPoisitionT - positionStartPaintingT; - KisRectIteratorPixel dstIt = m_srcdev->createRectIterator(0, 0, sw, sh, true); - KisRandomSubAccessorPixel srcAcc = device->createRandomSubAccessor(); - //Action - while(!dstIt.isDone()) - { - if(dstIt.isSelected()) - { - KisPoint p = KisPerspectiveMath::matProd(startM, KisPerspectiveMath::matProd(endM, KisPoint(dstIt.x() + x, dstIt.y() + y) ) + translat ); - srcAcc.moveTo( p ); - srcAcc.sampledOldRawData( dstIt.rawData() ); - } - ++dstIt; - } - - - } else { - // Or, copy the source data on the temporary device: - copyPainter.bitBlt(0, 0, COMPOSITE_COPY, device, srcPoint.x(), srcPoint.y(), sw, sh); - copyPainter.end(); - } - - // heal ? - - if(heal) - { - TQ_UINT16 dataDevice[4]; - TQ_UINT16 dataSrcDev[4]; - TQMemArray<double> matrix ( 3 * sw * sh ); - // First divide - KisColorSpace* deviceCs = device->colorSpace(); - KisHLineIteratorPixel deviceIt = device->createHLineIterator(x, y, sw, false ); - KisHLineIteratorPixel srcDevIt = m_srcdev->createHLineIterator(0, 0, sw, true ); - double* matrixIt = &matrix[0]; - for(int j = 0; j < sh; j++) - { - for(int i= 0; !srcDevIt.isDone(); i++) - { - deviceCs->toLabA16(deviceIt.rawData(), (TQ_UINT8*)dataDevice, 1); - deviceCs->toLabA16(srcDevIt.rawData(), (TQ_UINT8*)dataSrcDev, 1); - // Division - for( int k = 0; k < 3; k++) - { - matrixIt[k] = dataDevice[k] / (double)TQMAX(dataSrcDev [k], 1); - } - ++deviceIt; - ++srcDevIt; - matrixIt +=3; - } - deviceIt.nextRow(); - srcDevIt.nextRow(); - } - // Minimize energy - { - int iter = 0; - double err; - TQMemArray<double> solution ( 3 * sw * sh ); - do { - err = minimizeEnergy(&matrix[0], &solution[0],sw,sh); - memcpy (&matrix[0], &solution[0], sw * sh * 3 * sizeof(double)); - iter++; - } while( err < 0.00001 && iter < 100); - } - - // Finaly multiply - deviceIt = device->createHLineIterator(x, y, sw, false ); - srcDevIt = m_srcdev->createHLineIterator(0, 0, sw, true ); - matrixIt = &matrix[0]; - for(int j = 0; j < sh; j++) - { - for(int i= 0; !srcDevIt.isDone(); i++) - { - deviceCs->toLabA16(deviceIt.rawData(), (TQ_UINT8*)dataDevice, 1); - deviceCs->toLabA16(srcDevIt.rawData(), (TQ_UINT8*)dataSrcDev, 1); - // Multiplication - for( int k = 0; k < 3; k++) - { - dataSrcDev[k] = (int)CLAMP( matrixIt[k] * TQMAX( dataSrcDev[k], 1), 0, 65535 ); - } - deviceCs->fromLabA16((TQ_UINT8*)dataSrcDev, srcDevIt.rawData(), 1); - ++deviceIt; - ++srcDevIt; - matrixIt +=3; - } - deviceIt.nextRow(); - srcDevIt.nextRow(); - } - } - - - // Add the dab as selection to the srcdev -// KisPainter copySelection(srcdev->selection().data()); -// copySelection.bitBlt(0, 0, COMPOSITE_OVER, dab, 0, 0, sw, sh); -// copySelection.end(); - - // copy the srcdev onto a new device, after applying the dab selection - copyPainter.begin(m_target); - - copyPainter.bltMask(0, 0, COMPOSITE_OVER, m_srcdev, dab, - OPACITY_OPAQUE, 0, 0, sw, sh); - copyPainter.end(); - - TQRect dabRect = TQRect(0, 0, brush->tqmaskWidth(info), brush->tqmaskHeight(info)); - TQRect dstRect = TQRect(x, y, dabRect.width(), dabRect.height()); - - KisImage * image = device->image(); - - if (image != 0) { - dstRect &= image->bounds(); - } - - if (dstRect.isNull() || dstRect.isEmpty() || !dstRect.isValid()) return; - - TQ_INT32 sx = dstRect.x() - x; - TQ_INT32 sy = dstRect.y() - y; - sw = dstRect.width(); - sh = dstRect.height(); - - if (m_source->hasSelection()) { - m_painter->bltSelection(dstRect.x(), dstRect.y(), m_painter->compositeOp(), m_target, - m_source->selection(), m_painter->opacity(), sx, sy, sw, sh); - } - else { - m_painter->bitBlt(dstRect.x(), dstRect.y(), m_painter->compositeOp(), m_target, m_painter->opacity(), sx, sy, sw, sh); - } - - - m_painter->addDirtyRect(dstRect); -} diff --git a/krita/plugins/paintops/defaultpaintops/kis_duplicateop.h b/krita/plugins/paintops/defaultpaintops/kis_duplicateop.h deleted file mode 100644 index 965e0dc9..00000000 --- a/krita/plugins/paintops/defaultpaintops/kis_duplicateop.h +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright (c) 2002 Patrick Julien <freak@codepimps.org> - * Copyright (c) 2004 Boudewijn Rempt <boud@valdyas.org> - * Copyright (c) 2004 Clarence Dang <dang@kde.org> - * Copyright (c) 2004 Adrian Page <adrian@pagenet.plus.com> - * Copyright (c) 2004 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_DUPLICATEOP_H_ -#define KIS_DUPLICATEOP_H_ - -#include "kis_paintop.h" - -class KisPoint; -class KisPainter; - -class KisDuplicateOpFactory : public KisPaintOpFactory { - -public: - KisDuplicateOpFactory() {} - virtual ~KisDuplicateOpFactory() {} - - virtual KisPaintOp * createOp(const KisPaintOpSettings *settings, KisPainter * painter); - virtual KisID id() { return KisID("duplicate", i18n("Duplicate")); } - virtual bool userVisible(KisColorSpace *) { return false; } - -}; - -class KisDuplicateOp : public KisPaintOp { - - typedef KisPaintOp super; - - - public: - - KisDuplicateOp(KisPainter * painter); - virtual ~KisDuplicateOp(); - - - void paintAt(const KisPoint &pos, const KisPaintInformation& info); - private: - double minimizeEnergy(const double* m, double* sol, int w, int h); - private: - KisPaintDeviceSP m_target, m_srcdev; - -}; - -#endif // KIS_DUPLICATEOP_H_ diff --git a/krita/plugins/paintops/defaultpaintops/kis_eraseop.cc b/krita/plugins/paintops/defaultpaintops/kis_eraseop.cc deleted file mode 100644 index cbf67a15..00000000 --- a/krita/plugins/paintops/defaultpaintops/kis_eraseop.cc +++ /dev/null @@ -1,140 +0,0 @@ -/* - * Copyright (c) 2002 Patrick Julien <freak@codepimps.org> - * Copyright (c) 2004 Boudewijn Rempt <boud@valdyas.org> - * Copyright (c) 2004 Clarence Dang <dang@kde.org> - * Copyright (c) 2004 Adrian Page <adrian@pagenet.plus.com> - * Copyright (c) 2004 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 <tqrect.h> - -#include <kdebug.h> - -#include "kis_brush.h" -#include "kis_global.h" -#include "kis_paint_device.h" -#include "kis_layer.h" -#include "kis_painter.h" -#include "kis_types.h" -#include "kis_paintop.h" -#include "kis_iterators_pixel.h" -#include "kis_colorspace.h" -#include "kis_selection.h" -#include "kis_eraseop.h" - -KisPaintOp * KisEraseOpFactory::createOp(const KisPaintOpSettings */*settings*/, KisPainter * painter) -{ - KisPaintOp * op = new KisEraseOp(painter); - Q_CHECK_PTR(op); - return op; -} - - -KisEraseOp::KisEraseOp(KisPainter * painter) - : super(painter) -{ -} - -KisEraseOp::~KisEraseOp() -{ -} - -void KisEraseOp::paintAt(const KisPoint &pos, const KisPaintInformation& info) -{ -// Erasing is traditionally in paint applications one of two things: -// either it is painting in the 'background' color, or it is replacing -// all pixels with transparent (black?) pixels. -// -// That's what this paint op does for now; however, anyone who has -// ever worked with paper and soft pencils knows that a sharp piece of -// eraser rubber is a pretty useful too for making sharp to fuzzy lines -// in the graphite layer, or equally useful: for smudging skin tones. -// -// A smudge tool for Krita is in the making, but when working with -// a tablet, the eraser tip should be at least as functional as a rubber eraser. -// That means that only after repeated or forceful application should all the -// 'paint' or 'graphite' be removed from the surface -- a kind of pressure -// sensitive, incremental smudge. -// -// And there should be an option to not have the eraser work on certain -// kinds of material. Layers are just a hack for this; putting your ink work -// in one layer and your pencil in another is not the same as really working -// with the combination. - - if (!m_painter) return; - - KisPaintDeviceSP device = m_painter->device(); - if (!device) return; - - KisBrush *brush = m_painter->brush(); - if (! brush->canPaintFor(info) ) - return; - KisPoint hotSpot = brush->hotSpot(info); - KisPoint pt = pos - hotSpot; - - TQ_INT32 destX; - double xFraction; - TQ_INT32 destY; - double yFraction; - - splitCoordinate(pt.x(), &destX, &xFraction); - splitCoordinate(pt.y(), &destY, &yFraction); - - KisAlphaMaskSP tqmask = brush->tqmask(info, xFraction, yFraction); - - KisPaintDeviceSP dab = new KisPaintDevice(device->colorSpace(), "erase op dab"); - Q_CHECK_PTR(dab); - - TQ_INT32 tqmaskWidth = tqmask->width(); - TQ_INT32 tqmaskHeight = tqmask->height(); - - TQRect dstRect; - - KisRectIteratorPixel it = dab->createRectIterator(0, 0, tqmaskWidth, tqmaskHeight, true); - KisColorSpace* cs = dab->colorSpace(); - while (!it.isDone()) { - cs->setAlpha(it.rawData(), TQ_UINT8_MAX - tqmask->alphaAt(it.x(), it.y()), 1); - ++it; - } - - TQRect dabRect = TQRect(0, 0, tqmaskWidth, tqmaskHeight); - dstRect = TQRect(destX, destY, dabRect.width(), dabRect.height()); - - KisImage * image = device->image(); - - if (image != 0) { - dstRect &= image->bounds(); - } - - if (dstRect.isNull() || dstRect.isEmpty() || !dstRect.isValid()) return; - - TQ_INT32 sx = dstRect.x() - destX; - TQ_INT32 sy = dstRect.y() - destY; - TQ_INT32 sw = dstRect.width(); - TQ_INT32 sh = dstRect.height(); - - if (m_source->hasSelection()) { - m_painter->bltSelection(dstRect.x(), dstRect.y(), COMPOSITE_ERASE, dab.data(), - m_source->selection(), m_painter->opacity(), sx, sy, sw, sh); - } - else { - m_painter->bitBlt(dstRect.x(), dstRect.y(), COMPOSITE_ERASE, dab.data(), m_painter->opacity(), sx, sy, sw, sh); - } - - m_painter->addDirtyRect(dstRect); -} - diff --git a/krita/plugins/paintops/defaultpaintops/kis_eraseop.h b/krita/plugins/paintops/defaultpaintops/kis_eraseop.h deleted file mode 100644 index 8c88a122..00000000 --- a/krita/plugins/paintops/defaultpaintops/kis_eraseop.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright (c) 2002 Patrick Julien <freak@codepimps.org> - * Copyright (c) 2004 Boudewijn Rempt <boud@valdyas.org> - * Copyright (c) 2004 Clarence Dang <dang@kde.org> - * Copyright (c) 2004 Adrian Page <adrian@pagenet.plus.com> - * Copyright (c) 2004 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_ERASEOP_H_ -#define KIS_ERASEOP_H_ - -#include "kis_paintop.h" - -class KisPoint; -class KisPainter; - -class KisEraseOpFactory : public KisPaintOpFactory { - -public: - KisEraseOpFactory() {} - virtual ~KisEraseOpFactory() {} - - virtual KisPaintOp * createOp(const KisPaintOpSettings *settings, KisPainter * painter); - virtual KisID id() { return KisID("eraser", i18n("Pixel Eraser")); } - virtual TQString pixmap() { return "eraser.png"; } -}; - - -class KisEraseOp : public KisPaintOp { - - typedef KisPaintOp super; - -public: - - KisEraseOp(KisPainter * painter); - virtual ~KisEraseOp(); - - void paintAt(const KisPoint &pos, const KisPaintInformation& info); - -}; - -#endif // KIS_ERASEOP_H_ diff --git a/krita/plugins/paintops/defaultpaintops/kis_penop.cc b/krita/plugins/paintops/defaultpaintops/kis_penop.cc deleted file mode 100644 index 0fcbca02..00000000 --- a/krita/plugins/paintops/defaultpaintops/kis_penop.cc +++ /dev/null @@ -1,132 +0,0 @@ -/* - * Copyright (c) 2002 Patrick Julien <freak@codepimps.org> - * Copyright (c) 2004 Boudewijn Rempt <boud@valdyas.org> - * Copyright (c) 2004 Clarence Dang <dang@kde.org> - * Copyright (c) 2004 Adrian Page <adrian@pagenet.plus.com> - * Copyright (c) 2004 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 <tqrect.h> - -#include <kdebug.h> - -#include "kis_brush.h" -#include "kis_global.h" -#include "kis_paint_device.h" -#include "klocale.h" -#include "kis_layer.h" -#include "kis_painter.h" -#include "kis_types.h" -#include "kis_paintop.h" -#include "kis_iterator.h" -#include "kis_selection.h" -#include "kis_iterators_pixel.h" - -#include "kis_penop.h" - - -KisPaintOp * KisPenOpFactory::createOp(const KisPaintOpSettings */*settings*/, KisPainter * painter) -{ - KisPaintOp * op = new KisPenOp(painter); - Q_CHECK_PTR(op); - return op; -} - - -KisPenOp::KisPenOp(KisPainter * painter) - : super(painter) -{ -} - -KisPenOp::~KisPenOp() -{ -} - -void KisPenOp::paintAt(const KisPoint &pos, const KisPaintInformation& info) -{ - if (!m_painter) return; - KisPaintDeviceSP device = m_painter->device(); - if (!device) return; - KisBrush * brush = m_painter->brush(); - if (!brush) return; - if (! brush->canPaintFor(info) ) - return; - - KisPoint hotSpot = brush->hotSpot(info); - KisPoint pt = pos - hotSpot; - - TQ_INT32 x = pt.roundX(); - TQ_INT32 y = pt.roundY(); - - KisPaintDeviceSP dab = 0; - if (brush->brushType() == IMAGE || - brush->brushType() == PIPE_IMAGE) { - dab = brush->image(device->colorSpace(), info); - } - else { - // Compute tqmask without sub-pixel positioning - KisAlphaMaskSP tqmask = brush->tqmask(info); - dab = computeDab(tqmask); - } - - m_painter->setPressure(info.pressure); - TQRect dabRect = TQRect(0, 0, brush->tqmaskWidth(info), brush->tqmaskHeight(info)); - TQRect dstRect = TQRect(x, y, dabRect.width(), dabRect.height()); - - KisImage * image = device->image(); - - if (image != 0) { - dstRect &= image->bounds(); - } - - if (dstRect.isNull() || dstRect.isEmpty() || !dstRect.isValid()) return; - - KisColorSpace * cs = dab->colorSpace(); - - // Set all alpha > opaque/2 to opaque, the rest to transparent. - // XXX: Using 4/10 as the 1x1 circle brush paints nothing with 0.5. - - KisRectIteratorPixel pixelIt = dab->createRectIterator(dabRect.x(), dabRect.y(), dabRect.width(), dabRect.height(), true); - - while (!pixelIt.isDone()) { - TQ_UINT8 alpha = cs->getAlpha(pixelIt.rawData()); - - if (alpha < (4 * OPACITY_OPAQUE) / 10) { - cs->setAlpha(pixelIt.rawData(), OPACITY_TRANSPARENT, 1); - } else { - cs->setAlpha(pixelIt.rawData(), OPACITY_OPAQUE, 1); - } - - ++pixelIt; - } - - TQ_INT32 sx = dstRect.x() - x; - TQ_INT32 sy = dstRect.y() - y; - TQ_INT32 sw = dstRect.width(); - TQ_INT32 sh = dstRect.height(); - - if (m_source->hasSelection()) { - m_painter->bltSelection(dstRect.x(), dstRect.y(), m_painter->compositeOp(), dab.data(), - m_source->selection(), m_painter->opacity(), sx, sy, sw, sh); - } - else { - m_painter->bitBlt(dstRect.x(), dstRect.y(), m_painter->compositeOp(), dab.data(), m_painter->opacity(), sx, sy, sw, sh); - } - - m_painter->addDirtyRect(dstRect); -} diff --git a/krita/plugins/paintops/defaultpaintops/kis_penop.h b/krita/plugins/paintops/defaultpaintops/kis_penop.h deleted file mode 100644 index ac03a501..00000000 --- a/krita/plugins/paintops/defaultpaintops/kis_penop.h +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright (c) 2002 Patrick Julien <freak@codepimps.org> - * Copyright (c) 2004 Boudewijn Rempt <boud@valdyas.org> - * Copyright (c) 2004 Clarence Dang <dang@kde.org> - * Copyright (c) 2004 Adrian Page <adrian@pagenet.plus.com> - * Copyright (c) 2004 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_PENOP_H_ -#define KIS_PENOP_H_ - -#include <tqlabel.h> -#include <tqwidget.h> -#include "kis_paintop.h" - -class KisPoint; -class KisPainter; - -class KisPenOpFactory : public KisPaintOpFactory { - -public: - KisPenOpFactory() {} - virtual ~KisPenOpFactory() {} - - virtual KisPaintOp * createOp(const KisPaintOpSettings *settings, KisPainter * painter); - virtual KisID id(){ return KisID("pen", i18n("Pixel Pencil")); } - virtual TQString pixmap() { return "pencil.png"; } -}; - - -class KisPenOp : public KisPaintOp { - - typedef KisPaintOp super; - -public: - - KisPenOp(KisPainter * painter); - virtual ~KisPenOp(); - - void paintAt(const KisPoint &pos, const KisPaintInformation& info); - -}; - -#endif // KIS_PENOP_H_ diff --git a/krita/plugins/paintops/defaultpaintops/kis_smudgeop.cc b/krita/plugins/paintops/defaultpaintops/kis_smudgeop.cc deleted file mode 100644 index 2e50bebb..00000000 --- a/krita/plugins/paintops/defaultpaintops/kis_smudgeop.cc +++ /dev/null @@ -1,328 +0,0 @@ -/* - * 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_smudgeop.h" - -#include <string.h> - -#include <tqrect.h> -#include <tqwidget.h> -#include <tqlayout.h> -#include <tqlabel.h> -#include <tqcheckbox.h> -#include <tqtabwidget.h> -#include <tqtoolbutton.h> -#include <tqslider.h> - -#include <kdebug.h> - -#include "kis_colorspace_factory_registry.h" -#include "kcurve.h" -#include "kis_brush.h" -#include "kis_global.h" -#include "kis_paint_device.h" -#include "kis_layer.h" -#include "kis_meta_registry.h" -#include "kis_painter.h" -#include "kis_types.h" -#include "kis_paintop.h" -#include "kis_input_device.h" -#include "kis_selection.h" - -#include "kis_dlgbrushcurvecontrol.h" - -KisPaintOp * KisSmudgeOpFactory::createOp(const KisPaintOpSettings *settings, KisPainter * painter) -{ - const KisSmudgeOpSettings *brushopSettings = dynamic_cast<const KisSmudgeOpSettings *>(settings); - Q_ASSERT(settings == 0 || brushopSettings != 0); - - KisPaintOp * op = new KisSmudgeOp(brushopSettings, painter); - Q_CHECK_PTR(op); - return op; -} - -KisSmudgeOpSettings::KisSmudgeOpSettings(TQWidget *tqparent, bool isTablet) - : super(tqparent) -{ - m_optionsWidget = new TQWidget(tqparent, "brush option widget"); - TQHBoxLayout * l = new TQHBoxLayout(m_optionsWidget); - l->setAutoAdd(true); - m_rateLabel = new TQLabel(i18n("Rate: "), m_optionsWidget); - m_rateSlider = new TQSlider(0,100,1, 50, Qt::Horizontal, m_optionsWidget); - if(isTablet) - { - m_pressureVariation = new TQLabel(i18n("Pressure variation: "), m_optionsWidget); - m_size = new TQCheckBox(i18n("Size"), m_optionsWidget); - m_size->setChecked(true); - m_opacity = new TQCheckBox(i18n("Opacity"), m_optionsWidget); - m_rate = new TQCheckBox(i18n("Rate"), m_optionsWidget); - m_curveControl = new WdgBrushCurveControl(m_optionsWidget); - // We abuse the darken curve here for rate - m_curveControl->tabWidget->setTabLabel(m_curveControl->tabWidget->page(2), i18n("Rate")); - m_curveControl->tabWidget->setTabToolTip(m_curveControl->tabWidget->page(2), - i18n("Modifies the rate. Bottom is 0% of the rate top is 100% of the original rate.")); - TQToolButton* moreButton = new TQToolButton(TQt::UpArrow, m_optionsWidget); - moreButton->tqsetSizePolicy(TQSizePolicy::Expanding, TQSizePolicy::Expanding); - moreButton->setMinimumSize(TQSize(24,24)); // Bah, I had hoped the above line would make this unneeded - connect(moreButton, TQT_SIGNAL(clicked()), this, TQT_SLOT(slotCustomCurves())); - } else { - m_pressureVariation = 0; - m_size = 0; - m_rate = 0; - m_opacity = 0; - m_curveControl = 0; - } - - m_customRate = false; - m_customSize = false; - m_customOpacity = false; - // the curves will get filled in when the slot gets accepted -} - -void KisSmudgeOpSettings::slotCustomCurves() { - if (m_curveControl->exec() == TQDialog::Accepted) { - m_customRate = m_curveControl->darkenCheckbox->isChecked(); - m_customSize = m_curveControl->sizeCheckbox->isChecked(); - m_customOpacity = m_curveControl->opacityCheckbox->isChecked(); - - if (m_customRate) { - transferCurve(m_curveControl->darkenCurve, m_rateCurve); - } - if (m_customSize) { - transferCurve(m_curveControl->sizeCurve, m_sizeCurve); - } - if (m_customOpacity) { - transferCurve(m_curveControl->opacityCurve, m_opacityCurve); - } - } -} - -void KisSmudgeOpSettings::transferCurve(KCurve* curve, double* target) { - double value; - for (int i = 0; i < 256; i++) { - value = curve->getCurveValue( i / 255.0); - if (value < PRESSURE_MIN) - target[i] = PRESSURE_MIN; - else if (value > PRESSURE_MAX) - target[i] = PRESSURE_MAX; - else - target[i] = value; - } -} - -int KisSmudgeOpSettings::rate() const -{ - return m_rateSlider->value(); -} - -bool KisSmudgeOpSettings::varyRate() const -{ - return m_rate ? m_rate->isChecked() : false; -} - -bool KisSmudgeOpSettings::varySize() const -{ - return m_size ? m_size->isChecked() : true; -} - -bool KisSmudgeOpSettings::varyOpacity() const -{ - return m_opacity ? m_opacity->isChecked() : false; -} - -KisPaintOpSettings* KisSmudgeOpFactory::settings(TQWidget * tqparent, const KisInputDevice& inputDevice) -{ - if (inputDevice == KisInputDevice::mouse()) { - // No options for mouse, only tablet devices - return new KisSmudgeOpSettings(tqparent, false); - } else { - return new KisSmudgeOpSettings(tqparent, true); - } -} - -KisSmudgeOp::KisSmudgeOp(const KisSmudgeOpSettings *settings, KisPainter *painter) - : super(painter) - , m_firstRun(true) - , m_rate(50) - , m_pressureSize(true) - , m_pressureRate(false) - , m_pressureOpacity(false) - , m_customRate(false) - , m_customSize(false) - , m_customOpacity(false) - , m_target(0) - , m_srcdev(0) -{ - if (settings != 0) { - m_rate = settings->rate(); - m_pressureRate = settings->varyRate(); - m_pressureSize = settings->varySize(); - m_pressureOpacity = settings->varyOpacity(); - m_customRate = settings->customRate(); - m_customSize = settings->customSize(); - m_customOpacity = settings->customOpacity(); - if (m_customSize) { - memcpy(m_sizeCurve, settings->sizeCurve(), 256 * sizeof(double)); - } - if (m_customOpacity) { - memcpy(m_opacityCurve, settings->opacityCurve(), 256 * sizeof(double)); - } - if (m_customRate) { - memcpy(m_rateCurve, settings->rateCurve(), 256 * sizeof(double)); - } - } - KisPaintDeviceSP device = m_painter->device(); - m_srcdev = new KisPaintDevice(device->colorSpace(), "duplicate source dev"); - m_target = new KisPaintDevice(device->colorSpace(), "duplicate target dev"); -} - -KisSmudgeOp::~KisSmudgeOp() -{ -} - -void KisSmudgeOp::paintAt(const KisPoint &pos, const KisPaintInformation& info) -{ - KisPaintInformation adjustedInfo(info); - if (!m_pressureSize) - adjustedInfo.pressure = PRESSURE_DEFAULT; - else if (m_customSize) - adjustedInfo.pressure = scaleToCurve(adjustedInfo.pressure, m_sizeCurve); - - // Painting should be implemented according to the following algorithm: - // retrieve brush - // if brush == tqmask - // retrieve tqmask - // else if brush == image - // retrieve image - // subsample (tqmask | image) for position -- pos should be double! - // apply filters to tqmask (colour | gradient | pattern | etc. - // composite filtered tqmask into temporary layer - // composite temporary layer into target layer - // @see: doc/brush.txt - - if (!m_painter->device()) return; - - KisBrush *brush = m_painter->brush(); - - Q_ASSERT(brush); - if (!brush) return; - if (! brush->canPaintFor(adjustedInfo) ) - return; - - KisPaintDeviceSP device = m_painter->device(); - - KisPoint hotSpot = brush->hotSpot(adjustedInfo); - KisPoint pt = pos - hotSpot; - - // Split the coordinates into integer plus fractional parts. The integer - // is where the dab will be positioned and the fractional part determines - // the sub-pixel positioning. - TQ_INT32 x; - double xFraction; - TQ_INT32 y; - double yFraction; - - splitCoordinate(pt.x(), &x, &xFraction); - splitCoordinate(pt.y(), &y, &yFraction); - - KisPaintDeviceSP dab = 0; - - TQ_UINT8 origOpacity = m_painter->opacity(); - - if (m_pressureOpacity) { - if (!m_customOpacity) - m_painter->setOpacity((TQ_INT8)(origOpacity * info.pressure)); - else - m_painter->setOpacity((TQ_INT8)(origOpacity * scaleToCurve(info.pressure, m_opacityCurve))); - } - - if (brush->brushType() == IMAGE || brush->brushType() == PIPE_IMAGE) { - dab = brush->image(device->colorSpace(), adjustedInfo, xFraction, yFraction); - dab->convertTo(KisMetaRegistry::instance()->csRegistry()->getAlpha8()); - } - else { - KisAlphaMaskSP tqmask = brush->tqmask(adjustedInfo, xFraction, yFraction); - dab = computeDab(tqmask, KisMetaRegistry::instance()->csRegistry()->getAlpha8()); - } - - - m_painter->setPressure(adjustedInfo.pressure); - - TQRect dabRect = TQRect(0, 0, brush->tqmaskWidth(adjustedInfo), - brush->tqmaskHeight(adjustedInfo)); - TQRect dstRect = TQRect(x, y, dabRect.width(), dabRect.height()); - - KisImage * image = device->image(); - - if (image != 0) { - dstRect &= image->bounds(); - } - - TQ_INT32 sw = dab->extent().width(); - TQ_INT32 sh = dab->extent().height(); - - KisPainter copyPainter(m_srcdev); - int opacity = OPACITY_OPAQUE; - if(!m_firstRun) - { - opacity = rate(); - if (m_pressureRate) { - if (m_customRate) { - opacity = CLAMP((TQ_UINT8)(double(opacity) * scaleToCurve(info.pressure, m_rateCurve)), OPACITY_TRANSPARENT, OPACITY_OPAQUE); - } else { - opacity = CLAMP((TQ_UINT8)(double(opacity) * info.pressure), OPACITY_TRANSPARENT, OPACITY_OPAQUE); - } - } - opacity = OPACITY_OPAQUE - opacity; - } else { - m_firstRun = false; - } - copyPainter.bitBlt(0, 0, COMPOSITE_OVER, device, opacity, pt.x(), pt.y(), sw, sh); - copyPainter.end(); - - m_target = new KisPaintDevice(device->colorSpace(), "duplicate target dev"); - - copyPainter.begin(m_target); - - copyPainter.bltMask(0, 0, COMPOSITE_OVER, m_srcdev, dab, - OPACITY_OPAQUE, 0, 0, sw, sh); - copyPainter.end(); - - - if (dstRect.isNull() || dstRect.isEmpty() || !dstRect.isValid()) return; - - TQ_INT32 sx = dstRect.x() - x; - TQ_INT32 sy = dstRect.y() - y; - sw = dstRect.width(); - sh = dstRect.height(); - - if (m_source->hasSelection()) { - m_painter->bltSelection(dstRect.x(), dstRect.y(), m_painter->compositeOp(), m_target, - m_source->selection(), m_painter->opacity(), sx, sy, sw, sh); - } - else { - m_painter->bitBlt(dstRect.x(), dstRect.y(), m_painter->compositeOp(), m_target, m_painter->opacity(), sx, sy, sw, sh); - } - - m_painter->addDirtyRect(dstRect); - - m_painter->setOpacity(origOpacity); - -} - -#include "kis_smudgeop.moc" diff --git a/krita/plugins/paintops/defaultpaintops/kis_smudgeop.h b/krita/plugins/paintops/defaultpaintops/kis_smudgeop.h deleted file mode 100644 index d9c8872d..00000000 --- a/krita/plugins/paintops/defaultpaintops/kis_smudgeop.h +++ /dev/null @@ -1,118 +0,0 @@ -/* - * 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_SMUDGEOP_H_ -#define KIS_SMUDGEOP_H_ - -#include "kis_paintop.h" -#include <tqobject.h> - -class TQWidget; -class TQCheckBox; -class TQLabel; -class TQSlider; -class KisPoint; -class KisPainter; -class KCurve; -class WdgBrushCurveControl; - -class KisSmudgeOpFactory : public KisPaintOpFactory { - -public: - KisSmudgeOpFactory() {} - virtual ~KisSmudgeOpFactory() {} - - virtual KisPaintOp * createOp(const KisPaintOpSettings *settings, KisPainter * painter); - virtual KisID id() { return KisID("smudge", i18n("Smudge Brush")); } - virtual TQString pixmap() { return "paintbrush.png"; } - virtual KisPaintOpSettings *settings(TQWidget * tqparent, const KisInputDevice& inputDevice); -}; - -class KisSmudgeOpSettings : public TQObject, public KisPaintOpSettings { - Q_OBJECT - TQ_OBJECT - typedef KisPaintOpSettings super; -public: - KisSmudgeOpSettings(TQWidget *tqparent, bool isTablet); - - int rate() const; - bool varyRate() const; - bool varySize() const; - bool varyOpacity() const; - - bool customRate() const { return m_customRate; } - bool customSize() const { return m_customSize; } - bool customOpacity() const { return m_customOpacity; } - const double* rateCurve() const { return m_rateCurve; } - const double* sizeCurve() const { return m_sizeCurve; } - const double* opacityCurve() const { return m_opacityCurve; } - - virtual TQWidget *widget() const { return m_optionsWidget; } -private slots: - void slotCustomCurves(); -private: - void transferCurve(KCurve* curve, double* target); - TQWidget *m_optionsWidget; - TQLabel* m_rateLabel; - TQSlider* m_rateSlider; - TQLabel * m_pressureVariation; - TQCheckBox * m_rate; - TQCheckBox * m_size; - TQCheckBox * m_opacity; - WdgBrushCurveControl* m_curveControl; - - bool m_customSize; - bool m_customRate; - bool m_customOpacity; - double m_rateCurve[256]; - double m_sizeCurve[256]; - double m_opacityCurve[256]; -}; - -class KisSmudgeOp : public KisPaintOp { - - typedef KisPaintOp super; - -public: - - KisSmudgeOp(const KisSmudgeOpSettings *settings, KisPainter * painter); - virtual ~KisSmudgeOp(); - - void paintAt(const KisPoint &pos, const KisPaintInformation& info); - - int rate() { return (m_rate * 255) / 100; } -private: - KisPaintDeviceSP m_target, m_srcdev; - inline double scaleToCurve(double pressure, double* curve) const { - int offset = CLAMP(int(255.0 * pressure), 0, 255); - return curve[offset]; - } - bool m_firstRun; - int m_rate; - bool m_pressureRate; - bool m_pressureSize; - bool m_pressureOpacity; - bool m_customRate; - bool m_customSize; - bool m_customOpacity; - double m_rateCurve[256]; - double m_sizeCurve[256]; - double m_opacityCurve[256]; -}; - -#endif // KIS_BRUSHOP_H_ diff --git a/krita/plugins/paintops/defaultpaintops/kritadefaultpaintops.desktop b/krita/plugins/paintops/defaultpaintops/kritadefaultpaintops.desktop deleted file mode 100644 index 95982cd4..00000000 --- a/krita/plugins/paintops/defaultpaintops/kritadefaultpaintops.desktop +++ /dev/null @@ -1,93 +0,0 @@ -[Desktop Entry] -Name=Default Paint Operations -Name[bg]=Операции за рисуване по подразбиране -Name[ca]=Operacions de pintura per defecte -Name[cy]=Gweithrediadau Paent Rhagosodol -Name[da]=Standard maleoperationer -Name[de]=Standard Maloperation -Name[el]=Προκαθορισμένες λειτουργίες ζωγραφικής -Name[eo]=Aprioraj pentrooperacioj -Name[es]=Operaciones de pintura predefinidas -Name[et]=Vaikimisi joonistamistoimingud -Name[eu]=Margotze-eragiketa lehenetsiak -Name[fa]=عملیات رنگآمیزی پیشفرض -Name[fi]=Oletusväritystoimenpiteet -Name[fr]=Opérations de dessin par défaut -Name[fy]=Standertskilderaksjes -Name[ga]=Oibríochtaí Réamhshocraithe Péinteála -Name[gl]=Operacións de Pintura Predefinidas -Name[he]=פעולות הצביעה המוגדרות כברירת מחדל -Name[hu]=Alapértelmezett festési műveletek -Name[is]=Sjálfgefnar málunaraðgerðir -Name[it]=Operazioni predefinite di disegno -Name[ja]=標準の描画操作 -Name[km]=ប្រតិបត្តិការគូរលំនាំដើម -Name[ms]=Operasi Cat Piawai -Name[nb]=Standard maleteknikker -Name[nds]=Standard-Maalakschonen -Name[ne]=पूर्वनिर्धारित पेन्ट सञ्चालन -Name[nl]=Standaardschilderoperaties -Name[nn]=Standard måleoperasjonar -Name[pl]=Domyślne operacje na obrazkach -Name[pt]=Operações de Pintura Predefinidas -Name[pt_BR]=Operações de pintura padrão -Name[ru]=Стандартные инструменты рисования -Name[se]=Standárda málendoaimmat -Name[sk]=Štandardné operácie kreslenia -Name[sl]=Privzete operacije za slikanje -Name[sr]=Подразумеване сликарске операције -Name[sr@Latn]=Podrazumevane slikarske operacije -Name[sv]=Förvalda målningsåtgärder -Name[uk]=Типові дії малювання -Name[uz]=Andoza chizish amallari -Name[uz@cyrillic]=Андоза чизиш амаллари -Name[zh_CN]=默认绘图操作 -Name[zh_TW]=預設繪圖操作 -Comment=Default paint operations -Comment[bg]=Операции за рисуване по подразбиране -Comment[ca]=Operacions de pintura per defecte -Comment[cy]=Gweithrediadau paent rhagosodol -Comment[da]=Standard maleoperationer -Comment[de]=Standard Maloperation -Comment[el]=Προκαθορισμένες λειτουργίες ζωγραφικής -Comment[eo]=Aprioraj pentrooperacioj -Comment[es]=Operaciones de pintado predefinidas -Comment[et]=Vaikimisi joonistamistoimingud -Comment[eu]=Margotze-eragiketa lehenetsiak -Comment[fa]=عملیات رنگآمیزی پیشفرض -Comment[fi]=Oletusväritystoimenpiteet -Comment[fr]=Opérations de dessin par défaut -Comment[fy]=Standertskilderaksjes -Comment[ga]=Oibríochtaí réamhshocraithe péinteála -Comment[gl]=Operacións de pintura predefinidas -Comment[he]=פעולות הצביעה המוגדרות כברירת מחדל -Comment[hu]=Alapértelmezett festési műveletek -Comment[is]=Sjálfgefnar málunaraðgerðir -Comment[it]=Operazioni predefinite di disegno -Comment[ja]=標準の描画操作 -Comment[km]=ប្រតិបត្តិកាគូរលំនាំដើម -Comment[ms]=Operasi cat piawai -Comment[nb]=Standard maleteknikker -Comment[nds]=Standard-Maalakschonen -Comment[ne]=पूर्वनिर्धारित पेन्ट सञ्चालन -Comment[nl]=Standaardschilderoperaties -Comment[nn]=Standard måleoperasjonar -Comment[pl]=Domyślne operacje na obrazkach -Comment[pt]=Operações de pintura predefinidas -Comment[pt_BR]=Operações de pintura padrão -Comment[ru]=Инструменты рисования по умолчанию -Comment[se]=Standárda málendoaimmat -Comment[sk]=Štandardné operácie kreslenia -Comment[sl]=Privzete operacije za slikanje -Comment[sr]=Подразумеване сликарске операције -Comment[sr@Latn]=Podrazumevane slikarske operacije -Comment[sv]=Förvalda målningsåtgärder -Comment[uk]=Типові дії малювання -Comment[uz]=Andoza chizish amallari -Comment[uz@cyrillic]=Андоза чизиш амаллари -Comment[zh_CN]=默认绘图操作 -Comment[zh_TW]=預設繪圖操作 -ServiceTypes=Krita/Paintop -Type=Service -X-KDE-Library=kritadefaultpaintops -X-Krita-Version=2 diff --git a/krita/plugins/paintops/defaultpaintops/paintbrush.png b/krita/plugins/paintops/defaultpaintops/paintbrush.png Binary files differdeleted file mode 100644 index accc0411..00000000 --- a/krita/plugins/paintops/defaultpaintops/paintbrush.png +++ /dev/null diff --git a/krita/plugins/paintops/defaultpaintops/pencil.png b/krita/plugins/paintops/defaultpaintops/pencil.png Binary files differdeleted file mode 100644 index 08a2f4cf..00000000 --- a/krita/plugins/paintops/defaultpaintops/pencil.png +++ /dev/null diff --git a/krita/plugins/paintops/defaultpaintops/src/README b/krita/plugins/paintops/defaultpaintops/src/README deleted file mode 100644 index 769ced65..00000000 --- a/krita/plugins/paintops/defaultpaintops/src/README +++ /dev/null @@ -1,2 +0,0 @@ -These svg images are the basis of the paintop pixmaps; they were taken from -the OpenClipArt repository and are in the public domain. diff --git a/krita/plugins/paintops/defaultpaintops/src/pencil_01.svg b/krita/plugins/paintops/defaultpaintops/src/pencil_01.svg deleted file mode 100644 index 40319104..00000000 --- a/krita/plugins/paintops/defaultpaintops/src/pencil_01.svg +++ /dev/null @@ -1,637 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN" -"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"> -<!-- Created with Inkscape (http://www.inkscape.org/) --> -<svg - height="297mm" - id="svg1" - inkscape:export-filename="/home/boud/pencil.png" - inkscape:export-xdpi="37.290001" - inkscape:export-ydpi="37.290001" - inkscape:version="0.40" - sodipodi:docbase="/home/boud" - sodipodi:docname="pencil_01.svg" - sodipodi:version="0.32" - width="210mm" - xmlns="http://www.w3.org/2000/svg" - xmlns:cc="http://web.resource.org/cc/" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:xlink="http://www.w3.org/1999/xlink"> - <defs - id="defs3"> - <linearGradient - id="linearGradient5522"> - <stop - id="stop5523" - offset="0.0000000" - style="stop-color:#ffffff;stop-opacity:0.96862745;" /> - <stop - id="stop5525" - offset="1.0000000" - style="stop-color:#a2a2a2;stop-opacity:1.0000000;" /> - </linearGradient> - <linearGradient - id="linearGradient4895"> - <stop - id="stop4896" - offset="0.0000000" - style="stop-color:#bfbfbf;stop-opacity:0.96875000;" /> - <stop - id="stop4898" - offset="0.81250000" - style="stop-color:#000000;stop-opacity:1.0000000;" /> - <stop - id="stop4897" - offset="1.0000000" - style="stop-color:#000000;stop-opacity:1.0000000;" /> - </linearGradient> - <linearGradient - id="linearGradient4256"> - <stop - id="stop4257" - offset="0.0000000" - style="stop-color:#000000;stop-opacity:1.0000000;" /> - <stop - id="stop4260" - offset="0.24902344" - style="stop-color:#000000;stop-opacity:1.0000000;" /> - <stop - id="stop4262" - offset="0.53125000" - style="stop-color:#878787;stop-opacity:0.62352943;" /> - <stop - id="stop4261" - offset="0.67773438" - style="stop-color:#5a5a5a;stop-opacity:1.0000000;" /> - <stop - id="stop4258" - offset="1.0000000" - style="stop-color:#070707;stop-opacity:1.0000000;" /> - </linearGradient> - <linearGradient - id="linearGradient2387"> - <stop - id="stop2388" - offset="0.0000000" - style="stop-color:#d5d5bc;stop-opacity:1.0000000;" /> - <stop - id="stop2389" - offset="1.0000000" - style="stop-color:#dfdfb9;stop-opacity:0.34117648;" /> - <stop - id="stop2390" - offset="1.0000000" - style="stop-color:#c2c2b2;stop-opacity:0.60392159;" /> - </linearGradient> - <linearGradient - id="linearGradient1754"> - <stop - id="stop1755" - offset="0.0000000" - style="stop-color:#fdfdc1;stop-opacity:1.0000000;" /> - <stop - id="stop1761" - offset="1.0000000" - style="stop-color:#dfdfb9;stop-opacity:0.34117648;" /> - <stop - id="stop1756" - offset="1.0000000" - style="stop-color:#c2c2b2;stop-opacity:0.60392159;" /> - </linearGradient> - <linearGradient - id="linearGradient9845"> - <stop - id="stop9846" - offset="0.0000000" - style="stop-color:#e2e5bf;stop-opacity:1.0000000;" /> - <stop - id="stop9849" - offset="1.0000000" - style="stop-color:#edde91;stop-opacity:1.0000000;" /> - <stop - id="stop9850" - offset="1.0000000" - style="stop-color:#e6e7d9;stop-opacity:1.0000000;" /> - <stop - id="stop10479" - offset="1.0000000" - style="stop-color:#eeefe0;stop-opacity:1.0000000;" /> - <stop - id="stop9847" - offset="1.0000000" - style="stop-color:#f7f7e8;stop-opacity:1.0000000;" /> - </linearGradient> - <linearGradient - id="linearGradient9215"> - <stop - id="stop9216" - offset="0.0000000" - style="stop-color:#5a5a5a;stop-opacity:0.26041666;" /> - <stop - id="stop9217" - offset="0.25000000" - style="stop-color:#bdbdbd;stop-opacity:0.50000000;" /> - <stop - id="stop9218" - offset="0.50000000" - style="stop-color:#ffffff;stop-opacity:1.0000000;" /> - <stop - id="stop9220" - offset="0.75000000" - style="stop-color:#aaaaaa;stop-opacity:0.53125000;" /> - <stop - id="stop9219" - offset="1.0000000" - style="stop-color:#6a6a6a;stop-opacity:0.33333334;" /> - </linearGradient> - <linearGradient - id="linearGradient6713"> - <stop - id="stop6714" - offset="0.0000000" - style="stop-color:#d5d51f;stop-opacity:0.46666667;" /> - <stop - id="stop6715" - offset="0.25000000" - style="stop-color:#ffff9d;stop-opacity:0.64583331;" /> - <stop - id="stop6716" - offset="0.50000000" - style="stop-color:#ffffb7;stop-opacity:0.79215688;" /> - <stop - id="stop6717" - offset="1.0000000" - style="stop-color:#eaea1f;stop-opacity:0.34117648;" /> - </linearGradient> - <linearGradient - id="linearGradient5461"> - <stop - id="stop5462" - offset="0.0000000" - style="stop-color:#ecd620;stop-opacity:1.0000000;" /> - <stop - id="stop5466" - offset="0.50000000" - style="stop-color:#f5dd2d;stop-opacity:1.0000000;" /> - <stop - id="stop5463" - offset="1.0000000" - style="stop-color:#fff01a;stop-opacity:1.0000000;" /> - </linearGradient> - <linearGradient - id="linearGradient3579"> - <stop - id="stop3580" - offset="0.0000000" - style="stop-color:#d5d5d5;stop-opacity:0.46666667;" /> - <stop - id="stop4205" - offset="0.25000000" - style="stop-color:#ffffff;stop-opacity:0.73958331;" /> - <stop - id="stop3583" - offset="0.50000000" - style="stop-color:#ffffff;stop-opacity:0.79166669;" /> - <stop - id="stop3581" - offset="1.0000000" - style="stop-color:#6a6a6a;stop-opacity:0.93750000;" /> - </linearGradient> - <linearGradient - id="linearGradient1706"> - <stop - id="stop1707" - offset="0.0000000" - style="stop-color:#cdcdcd;stop-opacity:1.0000000;" /> - <stop - id="stop1708" - offset="1.0000000" - style="stop-color:#f5f0f5;stop-opacity:1.0000000;" /> - </linearGradient> - <linearGradient - gradientTransform="matrix(2.820962,0.000000,6.312385e-5,2.601095e-2,298.8738,76.89546)" - gradientUnits="userSpaceOnUse" - id="linearGradient3582" - inkscape:collect="always" - x1="35.424759" - x2="35.641914" - xlink:href="#linearGradient3579" - y1="18130.623" - y2="17965.547" /> - <linearGradient - gradientTransform="matrix(0.202664,0.000000,0.000000,0.362058,298.8738,76.89546)" - gradientUnits="userSpaceOnUse" - id="linearGradient5465" - inkscape:collect="always" - x1="1268.3737" - x2="1268.6208" - xlink:href="#linearGradient5461" - y1="1336.0245" - y2="1300.7721" /> - <linearGradient - gradientTransform="matrix(6.942050e-2,0.000000,1.553402e-6,2.336613e-2,553.6438,124.8435)" - gradientUnits="userSpaceOnUse" - id="linearGradient6090" - inkscape:collect="always" - x1="35.424759" - x2="35.641914" - xlink:href="#linearGradient6713" - y1="18130.623" - y2="17965.547" /> - <linearGradient - gradientTransform="matrix(0.323512,0.000000,7.239130e-6,2.601095e-2,571.1883,76.96085)" - gradientUnits="userSpaceOnUse" - id="linearGradient8593" - inkscape:collect="always" - x1="35.424759" - x2="35.641914" - xlink:href="#linearGradient9215" - y1="18130.623" - y2="17965.547" /> - <linearGradient - gradientTransform="matrix(0.362900,0.000000,0.000000,0.202193,298.8738,76.89546)" - gradientUnits="userSpaceOnUse" - id="linearGradient9857" - inkscape:collect="always" - spreadMethod="pad" - x1="-345.43631" - x2="-345.17053" - xlink:href="#linearGradient9845" - y1="2366.5361" - y2="2354.8115" /> - <radialGradient - cx="-233.32603" - cy="3321.7747" - fx="-213.39992" - fy="3310.0935" - gradientTransform="matrix(0.517807,0.000000,0.000000,0.141706,298.8738,76.89546)" - gradientUnits="userSpaceOnUse" - id="radialGradient1753" - inkscape:collect="always" - r="31.490158" - xlink:href="#linearGradient1754" /> - <radialGradient - cx="-316.48395" - cy="-2710.2300" - fx="-290.97665" - fy="-2729.1069" - gradientTransform="matrix(0.413154,0.000000,0.000000,-0.177599,298.8738,76.89546)" - gradientUnits="userSpaceOnUse" - id="radialGradient1763" - inkscape:collect="always" - r="28.744236" - xlink:href="#linearGradient2387" /> - <linearGradient - gradientTransform="matrix(0.480053,0.000000,0.000000,0.152850,298.8738,76.89540)" - gradientUnits="userSpaceOnUse" - id="linearGradient4259" - inkscape:collect="always" - x1="-328.35983" - x2="-328.35986" - xlink:href="#linearGradient4256" - y1="3145.9695" - y2="3091.0151" /> - <radialGradient - cx="2255.8301" - cy="894.17383" - fx="2254.7786" - fy="894.33282" - gradientTransform="matrix(0.137506,0.000000,0.000000,0.533619,289.9911,76.13070)" - gradientUnits="userSpaceOnUse" - id="radialGradient4894" - inkscape:collect="always" - r="72.563972" - xlink:href="#linearGradient4895" /> - <linearGradient - gradientTransform="matrix(0.101819,0.000000,0.000000,0.966086,196.9883,76.89546)" - gradientUnits="userSpaceOnUse" - id="linearGradient5526" - inkscape:collect="always" - x1="3950.2200" - x2="3970.1528" - xlink:href="#linearGradient5522" - y1="494.74939" - y2="494.83701" /> - </defs> - <sodipodi:namedview - bordercolor="#666666" - borderopacity="1.0" - id="base" - inkscape:current-layer="layer7" - inkscape:cx="303.76092" - inkscape:cy="410.97376" - inkscape:grid-bbox="false" - inkscape:grid-points="false" - inkscape:guide-bbox="false" - inkscape:guide-points="false" - inkscape:pageopacity="0.0" - inkscape:pageshadow="2" - inkscape:window-height="710" - inkscape:window-width="1012" - inkscape:window-x="0" - inkscape:window-y="0" - inkscape:zoom="2.0000000" - pagecolor="#ffffff" - showgrid="false" - showguides="false"> - <sodipodi:guide - id="guide6719" - orientation="horizontal" - position="-411.00582" /> - <sodipodi:guide - id="guide6720" - orientation="horizontal" - position="-500.98515" /> - <sodipodi:guide - id="guide6721" - orientation="horizontal" - position="-439.29009" /> - <sodipodi:guide - id="guide6722" - orientation="horizontal" - position="-481.89327" /> - <sodipodi:guide - id="guide8591" - orientation="vertical" - position="957.24580" /> - </sodipodi:namedview> - <g - id="layer7" - inkscape:groupmode="layer" - inkscape:label="grafit"> - <path - d="M 148.83456,547.90696 L 157.67340,548.68521 L 159.10971,555.17082 L 155.68466,557.89477 L 149.82893,558.67302 L 146.07243,559.06215 L 123.86486,553.22513 L 148.83456,547.90696 z " - id="path3013" - style="color:#000000;fill:url(#linearGradient4259);fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.067719966pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:block" - inkscape:export-filename="/home/boud/pencil.png" - inkscape:export-xdpi="37.290001" - inkscape:export-ydpi="25.269030" /> - </g> - <g - id="layer5" - inkscape:groupmode="layer" - inkscape:label="sciete_drewno 0"> - <path - d="M 199.81128,569.39078 C 193.61337,567.86215 187.05087,567.43411 178.71753,566.27230 C 170.53826,565.13204 173.53622,565.57447 165.90503,564.07102 C 158.30087,562.57292 152.36337,561.31943 144.96753,558.75127 C 147.51962,558.38439 151.63420,555.99968 154.18628,555.63280 C 155.07170,555.08248 157.30018,554.25609 157.30018,552.29942 C 157.30018,551.06283 156.11643,550.23527 154.87275,549.48489 C 153.54091,548.68128 149.17824,548.89390 148.18866,547.97670 C 153.68422,546.32010 168.53524,542.85318 176.53003,541.69138 C 184.47252,540.53720 191.47795,540.04042 200.90503,538.57290 C 200.17587,548.84553 200.54045,559.11815 199.81128,569.39078 z " - id="path9222" - sodipodi:nodetypes="czzcczzczcc" - style="fill:url(#linearGradient9857);fill-opacity:1.0000000;fill-rule:nonzero;stroke:none;stroke-width:0.25000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000" - inkscape:export-filename="/home/boud/pencil.png" - inkscape:export-xdpi="37.290001" - inkscape:export-ydpi="25.269030" /> - </g> - <g - id="layer6" - inkscape:groupmode="layer" - inkscape:label="polysk"> - <path - d="M 193.02874,548.16636 C 193.06610,547.28902 191.47519,545.75059 190.37709,545.31274 C 187.57137,544.19402 184.34329,543.37209 181.31728,543.49678 C 175.94640,543.71802 170.45340,544.99141 165.18641,546.35045 C 163.75062,546.72091 162.18663,547.59479 161.20893,548.68521 C 160.71349,549.23782 160.14893,551.19033 160.76699,551.27943 C 164.34738,551.79565 169.47529,550.31469 173.80427,550.50118 C 177.50390,550.66061 181.20734,552.31715 184.85282,552.31715 C 186.65795,552.31715 188.48666,551.34876 190.15612,550.50118 C 191.21197,549.96512 192.99244,549.01852 193.02874,548.16636 z " - id="path1128" - sodipodi:nodetypes="csssssssss" - style="opacity:0.80206186;fill:url(#radialGradient1753);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:0.25000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000" - inkscape:export-filename="/home/boud/pencil.png" - inkscape:export-xdpi="37.290001" - inkscape:export-ydpi="25.269030" /> - <path - d="M 179.02203,557.59082 C 179.04925,558.59448 183.19386,562.68933 182.39409,563.19022 C 180.35065,564.47001 172.69628,563.07552 170.49239,562.93294 C 166.58069,562.67982 162.58005,561.22298 158.74401,559.66824 C 157.69830,559.24448 156.55922,558.24469 155.84715,556.99724 C 155.48631,556.36509 155.07513,554.13135 155.52528,554.02939 C 158.13293,553.43886 161.86768,555.13314 165.02054,554.91976 C 167.71504,554.73738 170.41232,552.84222 173.06738,552.84222 C 174.38209,552.84222 175.71397,553.95014 176.92986,554.91976 C 177.69885,555.53301 178.99560,556.61592 179.02203,557.59082 z " - id="path1762" - sodipodi:nodetypes="csssssssss" - style="opacity:0.78556699;fill:url(#radialGradient1763);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:0.25000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000" - inkscape:export-filename="/home/boud/pencil.png" - inkscape:export-xdpi="37.290001" - inkscape:export-ydpi="25.269030" /> - </g> - <g - id="layer1" - inkscape:groupmode="layer" - inkscape:label="szary_tulow 1" - style="display:block"> - <path - d="M 200.26345,546.32445 C 316.62843,546.32445 435.09573,546.32445 551.46071,546.32445 C 551.46071,549.42291 551.46071,559.47628 551.46071,562.57480 C 550.75336,565.25801 550.75336,561.81680 550.75336,564.91526 C 434.38838,564.91526 316.62843,564.91526 200.26345,564.91526 C 200.26345,563.36603 197.40747,560.84125 192.74343,559.26561 C 188.07940,557.68996 180.41183,557.06351 179.28717,555.72548 C 180.23188,554.91565 187.89945,554.83382 192.60847,553.07333 C 197.31750,551.31283 200.26345,547.87368 200.26345,546.32445 z " - id="rect1061" - sodipodi:nodetypes="cccccscsc" - style="color:#000000;fill:#d2d2d2;fill-opacity:1.0000000;fill-rule:nonzero;stroke:none;stroke-width:0.31228563;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:0.38622126;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:block" - inkscape:export-filename="/home/boud/pencil.png" - inkscape:export-xdpi="37.290001" - inkscape:export-ydpi="25.269030" /> - <path - d="M 200.54626,538.65508 C 316.91125,538.65508 433.02176,536.56375 549.38673,536.56375 C 550.21028,540.32388 550.96053,542.46928 551.46071,546.96346 C 435.09574,546.96346 316.65677,546.96346 200.29178,546.96346 C 200.29178,546.09686 198.32960,546.16513 194.42590,545.35013 C 190.46169,544.52251 182.70217,542.01992 181.57751,541.27143 C 183.46694,540.36539 195.77770,539.43774 200.54626,538.65508 z " - id="path1066" - sodipodi:nodetypes="ccccscc" - style="color:#000000;fill:#bebebe;fill-opacity:1.0000000;fill-rule:nonzero;stroke:none;stroke-width:0.31228563;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:0.38622126;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:block" - inkscape:export-filename="/home/boud/pencil.png" - inkscape:export-xdpi="37.290001" - inkscape:export-ydpi="25.269030" /> - <path - d="M 200.03730,563.99354 C 316.40229,563.99354 435.09574,562.56306 551.46071,562.56306 C 550.72496,565.22778 550.25391,567.01986 549.40828,569.67642 C 433.04330,569.67642 315.14667,570.85172 199.78282,569.67642 C 193.83317,568.50428 190.23851,567.80163 187.98919,566.77772 C 189.87862,566.15801 200.03730,565.17912 200.03730,563.99354 z " - id="path1067" - sodipodi:nodetypes="cccccc" - style="color:#000000;fill:#9b9b9b;fill-opacity:1.0000000;fill-rule:nonzero;stroke:none;stroke-width:0.31228563;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:0.38622126;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:block" - inkscape:export-filename="/home/boud/pencil.png" - inkscape:export-xdpi="37.290001" - inkscape:export-ydpi="25.269030" /> - </g> - <g - id="layer2" - inkscape:groupmode="layer" - inkscape:label="blysk 2" - style="display:block"> - <path - d="M 194.58869,545.26983 L 551.34313,545.59263 L 551.46071,548.49015 L 199.30871,548.38150 C 199.67876,547.94447 200.10935,547.12501 200.20401,546.65769 C 199.28577,546.01110 197.70842,546.05120 196.37274,545.78229 L 194.58869,545.26983 z " - id="rect2956" - sodipodi:nodetypes="ccccccc" - style="color:#000000;fill:url(#linearGradient3582);fill-opacity:1.0000000;fill-rule:nonzero;stroke:none;stroke-width:0.31228563;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:0.38622126;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:block" - inkscape:export-filename="/home/boud/pencil.png" - inkscape:export-xdpi="37.290001" - inkscape:export-ydpi="25.269030" /> - </g> - <g - id="layer3" - inkscape:groupmode="layer" - inkscape:label="zloto 3"> - <path - d="M 549.33498,536.56375 C 552.95421,536.56375 554.44773,536.56375 558.06696,536.56375 C 558.75468,540.03032 559.50496,543.42352 560.19268,546.96346 C 556.57346,546.96346 555.07993,546.96346 551.46071,546.96346 C 550.89803,543.35008 549.96021,540.17713 549.33498,536.56375 z " - id="rect4209" - sodipodi:nodetypes="ccccc" - style="color:#000000;fill:#d3bc3f;fill-opacity:1.0000000;fill-rule:nonzero;stroke:none;stroke-width:0.31228563;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:0.38622126;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:block" - inkscape:export-filename="/home/boud/pencil.png" - inkscape:export-xdpi="37.290001" - inkscape:export-ydpi="25.269030" /> - <path - d="M 551.39818,562.56306 C 555.05911,562.56306 556.53176,562.56306 560.19268,562.56306 C 559.44243,565.21481 559.06731,566.98575 558.19198,569.63750 C 554.53108,569.63750 552.87086,569.63750 549.20993,569.63750 C 550.35413,566.11575 550.69053,565.17119 551.39818,562.56306 z " - id="rect4210" - sodipodi:nodetypes="ccccc" - style="color:#000000;fill:#d3bc3f;fill-opacity:1.0000000;fill-rule:nonzero;stroke:none;stroke-width:0.31228563;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:0.38622126;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:block" - inkscape:export-filename="/home/boud/pencil.png" - inkscape:export-xdpi="37.290001" - inkscape:export-ydpi="25.269030" /> - <rect - height="15.599600" - id="rect4208" - style="color:#000000;fill:url(#linearGradient5465);fill-opacity:1.0000000;fill-rule:nonzero;stroke:none;stroke-width:0.31228563;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:0.38622126;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:block" - width="8.7319660" - x="551.46075" - y="546.96350" - inkscape:export-filename="/home/boud/pencil.png" - inkscape:export-xdpi="37.290001" - inkscape:export-ydpi="25.269030" /> - <path - d="M 551.21196,545.59310 L 559.93478,545.60219 L 560.19013,546.96675 L 560.19158,548.48604 L 551.21131,548.38848 L 551.21643,546.28007 L 551.21196,545.59310 z " - id="path6089" - sodipodi:nodetypes="ccccccc" - style="opacity:0.69896907;color:#000000;fill:url(#linearGradient6090);fill-opacity:1.0000000;fill-rule:nonzero;stroke:none;stroke-width:0.31228563;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:0.38622126;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:block" - inkscape:export-filename="/home/boud/pencil.png" - inkscape:export-xdpi="37.290001" - inkscape:export-ydpi="25.269030" /> - </g> - <g - id="layer4" - inkscape:groupmode="layer" - inkscape:label="czarna_koncowka 4"> - <rect - height="15.630233" - id="rect6723" - style="color:#000000;fill:#000000;fill-opacity:1.0000000;fill-rule:nonzero;stroke:none;stroke-width:0.31228563;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:0.38622126;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:block" - width="39.995728" - x="560.11658" - y="546.93414" - inkscape:export-filename="/home/boud/pencil.png" - inkscape:export-xdpi="37.290001" - inkscape:export-ydpi="25.269030" /> - <path - d="M 558.10023,536.55723 L 598.06833,536.55723 L 600.05708,546.93411 L 560.11658,546.93411 L 558.10023,536.55723 z " - id="rect6724" - sodipodi:nodetypes="ccccc" - style="color:#000000;fill:#000000;fill-opacity:1.0000000;fill-rule:nonzero;stroke:none;stroke-width:0.31228563;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:0.38622126;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:block" - inkscape:export-filename="/home/boud/pencil.png" - inkscape:export-xdpi="37.290001" - inkscape:export-ydpi="25.269030" /> - <path - d="M 560.06136,562.56435 L 600.05708,562.56435 L 598.06833,569.56876 L 558.07261,569.56876 L 560.06136,562.56435 z " - id="rect6725" - sodipodi:nodetypes="ccccc" - style="color:#000000;fill:#000000;fill-opacity:1.0000000;fill-rule:nonzero;stroke:none;stroke-width:0.31228563;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:0.38622126;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:block" - inkscape:export-filename="/home/boud/pencil.png" - inkscape:export-xdpi="37.290001" - inkscape:export-ydpi="25.269030" /> - <path - d="M 559.80053,545.49730 L 599.78261,545.62556 L 600.18986,546.96082 L 600.12756,548.42582 L 560.12901,548.47929 L 560.12531,546.97544 L 559.80053,545.49730 z " - id="path8592" - sodipodi:nodetypes="ccccccc" - style="color:#000000;fill:url(#linearGradient8593);fill-opacity:1.0000000;fill-rule:nonzero;stroke:none;stroke-width:0.31228563;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:0.38622126;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:block" - inkscape:export-filename="/home/boud/pencil.png" - inkscape:export-xdpi="37.290001" - inkscape:export-ydpi="25.269030" /> - </g> - <g - id="layer8" - inkscape:groupmode="layer" - inkscape:label="czarne_zakonczenie"> - <path - d="M 598.01311,536.55723 C 600.20441,537.42196 600.08063,537.15475 602.54301,539.54052 C 605.03228,541.95242 606.46523,546.99904 606.46523,552.47934 C 606.46523,557.95963 604.98378,563.72181 602.21156,566.65028 C 599.46661,569.54992 600.14916,568.87697 598.01311,569.56876 C 598.69443,567.23400 599.21006,566.27195 599.55993,562.49949 C 599.90978,558.72709 599.95583,551.20377 599.61516,546.86925 C 599.27448,542.53473 598.71286,540.01617 598.01311,536.55723 z " - id="rect4267" - sodipodi:nodetypes="czzzczzc" - style="color:#000000;fill:#000000;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.067719966pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:block" - inkscape:export-filename="/home/boud/pencil.png" - inkscape:export-xdpi="37.290001" - inkscape:export-ydpi="25.269030" /> - <path - d="M 598.05216,536.60308 C 600.24346,537.46780 600.11968,537.20059 602.58206,539.58637 C 605.07133,541.99826 606.50428,547.04488 606.50428,552.52518 C 606.50428,558.00548 605.02283,563.76766 602.25061,566.69612 C 599.50566,569.59576 600.18821,568.92282 598.05216,569.61460 C 598.73348,567.27984 599.13861,566.18807 599.48848,562.41566 C 599.83836,558.64320 599.55293,550.92535 599.37798,546.59083 C 599.20313,542.25889 598.75191,540.06202 598.05216,536.60308 z " - id="path4269" - sodipodi:nodetypes="czzzczzc" - style="color:#000000;fill:url(#radialGradient4894);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:0.25000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:block" - inkscape:export-filename="/home/boud/pencil.png" - inkscape:export-xdpi="37.290001" - inkscape:export-ydpi="25.269030" /> - <path - d="M 598.03473,536.58259 C 599.38111,536.60420 599.36721,538.38435 599.74316,539.65763 C 600.09923,540.86358 600.43966,542.74318 600.64446,544.30814 C 600.77491,545.30499 601.05068,550.76698 601.01163,551.99376 C 600.99138,552.62961 600.81768,557.50652 600.72191,558.66757 C 600.61303,559.98727 600.46746,563.66986 599.60671,566.58394 C 598.75026,569.48358 598.76591,569.61578 598.03473,569.59418 C 598.31521,567.25935 599.18061,565.87349 599.44186,562.33037 C 599.70341,558.78297 599.71816,557.03639 599.67588,554.07746 C 599.63296,551.07251 599.45918,548.25682 599.38413,546.18128 C 599.30906,544.05989 598.91526,539.97673 598.03473,536.58259 z " - id="path4899" - sodipodi:nodetypes="czszszczszc" - style="color:#000000;fill:url(#linearGradient5526);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:0.13853176pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:block" - inkscape:export-filename="/home/boud/pencil.png" - inkscape:export-xdpi="37.290001" - inkscape:export-ydpi="25.269030" /> - </g> - <metadata - id="metadata1378"> - <rdf:RDF - id="RDF1379"> - <cc:Work - rdf:about="" - id="Work1380"> - <dc:title - id="title1381">pencil</dc:title> - <dc:description - id="description1383" /> - <dc:subject - id="subject1384"> - <rdf:Bag - id="Bag1385"> - <rdf:li - id="li1386" /> - <rdf:li - id="li1387">office</rdf:li> - </rdf:Bag> - </dc:subject> - <dc:publisher - id="publisher1389"> - <cc:Agent - rdf:about="http://www.openclipart.org" - id="Agent1390"> - <dc:title - id="title1391">Karol Szczerba</dc:title> - </cc:Agent> - </dc:publisher> - <dc:creator - id="creator1393"> - <cc:Agent - rdf:about="" - id="Agent1394"> - <dc:title - id="title1395">Karol Szczerba</dc:title> - </cc:Agent> - </dc:creator> - <dc:rights - id="rights1397"> - <cc:Agent - rdf:about="" - id="Agent1398"> - <dc:title - id="title1399">Karol Szczerba</dc:title> - </cc:Agent> - </dc:rights> - <dc:date - id="date1401" /> - <dc:format - id="format1402">image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" - id="type1404" /> - <cc:license - rdf:resource="Public Domain" - id="license1405"> - <dc:date - id="date1406" /> - </cc:license> - <dc:language - id="language1407">en</dc:language> - </cc:Work> - <cc:License - rdf:about="Public Domain" - id="License1409"> - <cc:permits - rdf:resource="http://web.resource.org/cc/Reproduction" - id="permits1410" /> - <cc:permits - rdf:resource="http://web.resource.org/cc/Distribution" - id="permits1411" /> - <cc:permits - rdf:resource="http://web.resource.org/cc/DerivativeWorks" - id="permits1412" /> - </cc:License> - </rdf:RDF> - </metadata> -</svg> diff --git a/krita/plugins/paintops/defaultpaintops/src/pencil_jonathan_dietrich_01.svg b/krita/plugins/paintops/defaultpaintops/src/pencil_jonathan_dietrich_01.svg deleted file mode 100644 index 4b29bb9a..00000000 --- a/krita/plugins/paintops/defaultpaintops/src/pencil_jonathan_dietrich_01.svg +++ /dev/null @@ -1,434 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN" -"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"> -<!-- Created with Inkscape (http://www.inkscape.org/) --> -<svg - height="1.0000000in" - id="svg1" - inkscape:version="0.40" - sodipodi:docbase="/home/boud" - sodipodi:docname="pencil_jonathan_dietrich_01.svg" - sodipodi:version="0.32" - width="8.0000000in" - xmlns="http://www.w3.org/2000/svg" - xmlns:cc="http://web.resource.org/cc/" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:xlink="http://www.w3.org/1999/xlink"> - <metadata - id="metadata2"> - <rdf:RDF - id="RDF3"> - <cc:Work - rdf:about="" - id="Work4"> - <dc:title - id="title5">Pencil</dc:title> - <dc:description - id="description7">HASH(0x885a0cc)</dc:description> - <dc:subject - id="subject9"> - <rdf:Bag - id="Bag10"> - <rdf:li - id="li11">pencil</rdf:li> - </rdf:Bag> - </dc:subject> - <dc:publisher - id="publisher13"> - <cc:Agent - rdf:about="http://www.openclipart.org" - id="Agent14"> - <dc:title - id="title15">Jonathan Dietrich</dc:title> - </cc:Agent> - </dc:publisher> - <dc:creator - id="creator17"> - <cc:Agent - id="Agent18"> - <dc:title - id="title19">Jonathan Dietrich</dc:title> - </cc:Agent> - </dc:creator> - <dc:rights - id="rights21"> - <cc:Agent - id="Agent22"> - <dc:title - id="title23">Jonathan Dietrich</dc:title> - </cc:Agent> - </dc:rights> - <dc:date - id="date25">HASH(0x846b07c)</dc:date> - <dc:format - id="format27">image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" - id="type29" /> - <cc:license - rdf:resource="http://web.resource.org/cc/PublicDomain" - id="license30" /> - <dc:language - id="language31">en</dc:language> - </cc:Work> - <cc:License - rdf:about="http://web.resource.org/cc/PublicDomain" - id="License33"> - <cc:permits - rdf:resource="http://web.resource.org/cc/Reproduction" - id="permits34" /> - <cc:permits - rdf:resource="http://web.resource.org/cc/Distribution" - id="permits35" /> - <cc:permits - rdf:resource="http://web.resource.org/cc/DerivativeWorks" - id="permits36" /> - </cc:License> - </rdf:RDF> - </metadata> - <defs - id="defs3"> - <linearGradient - id="linearGradient1662"> - <stop - id="stop1663" - offset="0.0000000" - style="stop-color:#000000;stop-opacity:0.0000000;" /> - <stop - id="stop1666" - offset="0.50000000" - style="stop-color:#000000;stop-opacity:0.15686275;" /> - <stop - id="stop1664" - offset="1" - style="stop-color:#000000;stop-opacity:0;" /> - </linearGradient> - <linearGradient - id="linearGradient1654"> - <stop - id="stop1655" - offset="0.0000000" - style="stop-color:#a27d54;stop-opacity:1.0000000;" /> - <stop - id="stop1656" - offset="1.0000000" - style="stop-color:#f5bd7f;stop-opacity:1.0000000;" /> - </linearGradient> - <linearGradient - id="linearGradient1650"> - <stop - id="stop1651" - offset="0.0000000" - style="stop-color:#bf6663;stop-opacity:1.0000000;" /> - <stop - id="stop1652" - offset="1.0000000" - style="stop-color:#ff8884;stop-opacity:1.0000000;" /> - </linearGradient> - <linearGradient - id="linearGradient1646"> - <stop - id="stop1647" - offset="0.0000000" - style="stop-color:#969696;stop-opacity:1.0000000;" /> - <stop - id="stop1648" - offset="1.0000000" - style="stop-color:#ededed;stop-opacity:1.0000000;" /> - </linearGradient> - <linearGradient - id="linearGradient1630"> - <stop - id="stop1631" - offset="0.0000000" - style="stop-color:#d2b200;stop-opacity:1.0000000;" /> - <stop - id="stop1658" - offset="0.50000000" - style="stop-color:#ffc300;stop-opacity:1.0000000;" /> - <stop - id="stop1659" - offset="0.75000000" - style="stop-color:#ffed00;stop-opacity:1.0000000;" /> - <stop - id="stop1632" - offset="1.0000000" - style="stop-color:#ffdd00;stop-opacity:1.0000000;" /> - </linearGradient> - <linearGradient - gradientTransform="matrix(-3.254365,0.000000,0.000000,0.316670,759.8405,-110.7512)" - gradientUnits="userSpaceOnUse" - id="linearGradient1633" - inkscape:collect="always" - x1="126.08783" - x2="126.08781" - xlink:href="#linearGradient1630" - y1="528.57239" - y2="377.06293" /> - <linearGradient - gradientTransform="matrix(-1.364241,0.000000,0.000000,0.755408,759.8405,-110.7512)" - gradientUnits="userSpaceOnUse" - id="linearGradient1649" - inkscape:collect="always" - x1="505.71970" - x2="505.71970" - xlink:href="#linearGradient1646" - y1="221.53720" - y2="157.34721" /> - <linearGradient - gradientTransform="matrix(-1.056744,0.000000,0.000000,0.975220,777.4291,-110.7513)" - gradientUnits="userSpaceOnUse" - id="linearGradient1653" - inkscape:collect="always" - x1="708.08087" - x2="707.66553" - xlink:href="#linearGradient1650" - y1="172.28430" - y2="122.22205" /> - <linearGradient - gradientTransform="matrix(-1.658785,0.000000,0.000000,0.621272,750.7865,-111.0021)" - gradientUnits="userSpaceOnUse" - id="linearGradient1657" - inkscape:collect="always" - x1="50.804340" - x2="60.266266" - xlink:href="#linearGradient1654" - y1="269.75226" - y2="193.19295" /> - <linearGradient - gradientTransform="matrix(-16.21046,0.000000,0.000000,6.357360e-2,758.2825,-106.7460)" - gradientUnits="userSpaceOnUse" - id="linearGradient1673" - inkscape:collect="always" - x1="25.595356" - x2="25.595356" - xlink:href="#linearGradient1662" - y1="2122.9712" - y2="2157.5330" /> - <linearGradient - gradientTransform="matrix(-16.21046,0.000000,0.000000,6.357360e-2,762.2010,-121.8183)" - gradientUnits="userSpaceOnUse" - id="linearGradient1675" - inkscape:collect="always" - x1="25.595356" - x2="25.595356" - xlink:href="#linearGradient1662" - y1="2122.9712" - y2="2157.5330" /> - <linearGradient - gradientTransform="matrix(-16.21046,0.000000,0.000000,6.357360e-2,761.1623,-89.12134)" - gradientUnits="userSpaceOnUse" - id="linearGradient1677" - inkscape:collect="always" - x1="25.595356" - x2="25.595356" - xlink:href="#linearGradient1662" - y1="2122.9712" - y2="2157.5330" /> - <linearGradient - gradientTransform="matrix(-0.523707,0.000000,0.000000,1.946019,755.9293,-109.9526)" - gradientUnits="userSpaceOnUse" - id="linearGradient1681" - inkscape:collect="always" - x1="1327.0875" - x2="1351.4697" - xlink:href="#linearGradient1646" - y1="80.989799" - y2="62.197636" /> - <linearGradient - gradientTransform="matrix(-0.523707,0.000000,0.000000,1.946019,761.7922,-109.9526)" - gradientUnits="userSpaceOnUse" - id="linearGradient1683" - inkscape:collect="always" - x1="1327.0875" - x2="1351.4697" - xlink:href="#linearGradient1646" - y1="80.989799" - y2="62.197636" /> - <linearGradient - gradientTransform="matrix(-0.523707,0.000000,0.000000,1.946019,767.6551,-109.9526)" - gradientUnits="userSpaceOnUse" - id="linearGradient1685" - inkscape:collect="always" - x1="1327.0875" - x2="1351.4697" - xlink:href="#linearGradient1646" - y1="80.989799" - y2="62.197636" /> - <linearGradient - gradientTransform="matrix(-0.523707,0.000000,0.000000,1.946019,791.1066,-109.9526)" - gradientUnits="userSpaceOnUse" - id="linearGradient1693" - inkscape:collect="always" - x1="1327.0875" - x2="1351.4697" - xlink:href="#linearGradient1646" - y1="80.989799" - y2="62.197636" /> - <linearGradient - gradientTransform="matrix(-0.523707,0.000000,0.000000,1.946019,796.9695,-109.9526)" - gradientUnits="userSpaceOnUse" - id="linearGradient1697" - inkscape:collect="always" - x1="1327.0875" - x2="1351.4697" - xlink:href="#linearGradient1646" - y1="80.989799" - y2="62.197636" /> - <linearGradient - gradientTransform="matrix(-0.523707,0.000000,0.000000,1.946019,802.8323,-109.9526)" - gradientUnits="userSpaceOnUse" - id="linearGradient1699" - inkscape:collect="always" - x1="1327.0875" - x2="1351.4697" - xlink:href="#linearGradient1646" - y1="80.989799" - y2="62.197636" /> - </defs> - <sodipodi:namedview - bordercolor="#666666" - borderopacity="1.0" - id="base" - inkscape:current-layer="layer1" - inkscape:cx="360.00000" - inkscape:cy="45.000000" - inkscape:guide-bbox="true" - inkscape:pageopacity="0.0" - inkscape:pageshadow="2" - inkscape:window-height="999" - inkscape:window-width="1283" - inkscape:window-x="47" - inkscape:window-y="27" - inkscape:zoom="1.6541667" - pagecolor="#ffffff" - showguides="true" /> - <g - id="layer1" - inkscape:groupmode="layer" - inkscape:label="Layer 1"> - <path - d="M 592.38982,8.7978966 L 114.27426,8.2474158 C 114.27426,8.2474158 102.52077,7.7798401 102.52077,33.335829 C 102.52077,56.689895 113.53982,57.790857 113.53982,57.790857 L 594.77674,57.790857 C 594.77674,57.790857 602.71148,55.787702 601.66922,55.291203 C 600.62695,54.794711 599.23728,55.804875 597.84759,54.124745 C 596.45790,52.444617 595.06823,50.000885 594.02596,46.449979 C 592.98371,42.899074 592.41869,35.516246 592.41869,29.407432 C 592.41869,23.298620 592.84600,21.510571 593.68170,18.177576 C 594.51740,14.844590 595.63167,12.691402 596.74594,11.301822 C 597.86021,9.9122350 597.50562,10.800085 598.34131,10.521495 C 599.17702,10.242916 592.38982,8.7978966 592.38982,8.7978966 z " - id="path1006" - inkscape:export-filename="/home/boud/eraser.png" - inkscape:export-xdpi="25.269030" - inkscape:export-ydpi="25.269030" - sodipodi:nodetypes="cccccssscsssc" - style="fill:url(#linearGradient1633);fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.21643910pt;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1.0000000" /> - <path - d="M 598.21122,14.439873 L 106.65310,14.245243" - id="path1674" - inkscape:export-filename="/home/boud/eraser.png" - inkscape:export-xdpi="25.269030" - inkscape:export-ydpi="25.269030" - sodipodi:nodetypes="cc" - style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:url(#linearGradient1675);stroke-width:2.1643910;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000" /> - <path - d="M 597.95155,46.747604 L 103.66700,46.942235" - id="path1676" - inkscape:export-filename="/home/boud/eraser.png" - inkscape:export-xdpi="25.269030" - inkscape:export-ydpi="25.269030" - sodipodi:nodetypes="cc" - style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:url(#linearGradient1677);stroke-width:2.1643910;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000" /> - <path - d="M 594.29274,29.414859 L 101.69598,29.317549" - id="path1661" - inkscape:export-filename="/home/boud/eraser.png" - inkscape:export-xdpi="25.269030" - inkscape:export-ydpi="25.269030" - sodipodi:nodetypes="cc" - style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:url(#linearGradient1673);stroke-width:2.1643910;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000" /> - <path - d="M 56.212243,8.2425325 L 14.333823,8.2474191 C 14.333823,8.2474191 2.5803330,9.4312952 2.5803330,33.335842 C 2.5803330,57.790880 13.599383,57.790880 13.599383,57.790880 L 56.196493,57.790880 C 56.196493,57.790880 45.079033,56.567471 45.079033,32.132201 C 45.079033,7.6969293 56.212243,8.2425325 56.212243,8.2425325 z " - id="path1640" - inkscape:export-filename="/home/boud/eraser.png" - inkscape:export-xdpi="25.269030" - inkscape:export-ydpi="25.269030" - sodipodi:nodetypes="ccccccc" - style="fill:url(#linearGradient1653);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:0.25000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000" /> - <path - d="M 115.46247,8.2425204 L 54.419283,8.2474070 C 54.419283,8.2474070 42.665793,9.4312826 42.665793,33.335820 C 42.665793,57.790847 53.684843,57.790847 53.684843,57.790847 L 115.37718,57.790847 C 115.37718,57.790847 104.25973,56.567439 104.25973,32.132179 C 104.25973,7.6969174 115.46247,8.2425204 115.46247,8.2425204 z " - id="path1645" - inkscape:export-filename="/home/boud/eraser.png" - inkscape:export-xdpi="25.269030" - inkscape:export-ydpi="25.269030" - sodipodi:nodetypes="ccccccc" - style="fill:url(#linearGradient1649);fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.21643910pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000" /> - <path - d="M 592.60935,8.8259330 L 714.80057,33.322417 L 594.72085,57.818893 C 594.72085,57.818893 594.37129,55.805894 593.04868,53.791332 C 592.02163,52.226987 587.43587,49.264318 587.53925,47.243595 C 587.64030,45.268231 593.00050,42.626259 593.00050,39.471510 C 593.00050,35.835686 583.73322,34.330639 583.73322,29.727408 C 583.73322,25.948115 591.74741,23.534144 591.74741,21.076333 C 591.74741,17.684997 586.94880,16.159860 586.82708,14.541172 C 586.70796,12.956956 592.93177,11.676165 593.26691,10.738677 C 593.50364,10.076490 592.60935,8.8259330 592.60935,8.8259330 z " - id="path1007" - inkscape:export-filename="/home/boud/eraser.png" - inkscape:export-xdpi="25.269030" - inkscape:export-ydpi="25.269030" - sodipodi:nodetypes="cccssscsssc" - style="fill:url(#linearGradient1657);fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.21643910pt;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1.0000000" /> - <path - d="M 689.51035,28.508228 L 713.56524,33.327058 L 689.94377,38.145879 C 689.94377,38.145879 687.75680,37.905214 687.75680,33.098433 C 687.75680,28.291653 689.51035,28.508228 689.51035,28.508228 z " - id="path1008" - inkscape:export-filename="/home/boud/eraser.png" - inkscape:export-xdpi="25.269030" - inkscape:export-ydpi="25.269030" - sodipodi:nodetypes="ccccc" - style="fill:#000000;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.21643915pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000" /> - <path - d="M 62.399193,8.3905104 L 60.827183,8.3953619 C 60.827183,8.3953619 49.138973,9.5726643 49.138973,33.344421 C 49.138973,57.663608 60.096823,57.663608 60.096823,57.663608 L 62.314383,57.663608 C 62.314383,57.663608 50.871353,57.705039 50.871353,33.405503 C 50.871353,9.1059758 62.399193,8.3905104 62.399193,8.3905104 z " - id="path1678" - inkscape:export-filename="/home/boud/eraser.png" - inkscape:export-xdpi="25.269030" - inkscape:export-ydpi="25.269030" - sodipodi:nodetypes="ccccccc" - style="fill:url(#linearGradient1681);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:0.25000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000" /> - <path - d="M 68.262063,8.3905104 L 66.690053,8.3953619 C 66.690053,8.3953619 55.001843,9.5726643 55.001843,33.344421 C 55.001843,57.663608 65.959693,57.663608 65.959693,57.663608 L 68.177253,57.663608 C 68.177253,57.663608 56.734223,57.705039 56.734223,33.405503 C 56.734223,9.1059758 68.262063,8.3905104 68.262063,8.3905104 z " - id="path1682" - inkscape:export-filename="/home/boud/eraser.png" - inkscape:export-xdpi="25.269030" - inkscape:export-ydpi="25.269030" - sodipodi:nodetypes="ccccccc" - style="fill:url(#linearGradient1683);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:0.25000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000" /> - <path - d="M 74.124933,8.3905104 L 72.552923,8.3953619 C 72.552923,8.3953619 60.864713,9.5726643 60.864713,33.344421 C 60.864713,57.663608 71.822563,57.663608 71.822563,57.663608 L 74.040123,57.663608 C 74.040123,57.663608 62.597103,57.705039 62.597103,33.405503 C 62.597103,9.1059758 74.124933,8.3905104 74.124933,8.3905104 z " - id="path1684" - inkscape:export-filename="/home/boud/eraser.png" - inkscape:export-xdpi="25.269030" - inkscape:export-ydpi="25.269030" - sodipodi:nodetypes="ccccccc" - style="fill:url(#linearGradient1685);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:0.25000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000" /> - <path - d="M 97.576423,8.3905104 L 96.004413,8.3953619 C 96.004413,8.3953619 84.316203,9.5726643 84.316203,33.344421 C 84.316203,57.663608 95.274053,57.663608 95.274053,57.663608 L 97.491613,57.663608 C 97.491613,57.663608 86.048593,57.705039 86.048593,33.405503 C 86.048593,9.1059758 97.576423,8.3905104 97.576423,8.3905104 z " - id="path1692" - inkscape:export-filename="/home/boud/eraser.png" - inkscape:export-xdpi="25.269030" - inkscape:export-ydpi="25.269030" - sodipodi:nodetypes="ccccccc" - style="fill:url(#linearGradient1693);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:0.25000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000" /> - <path - d="M 103.43930,8.3905104 L 101.86728,8.3953619 C 101.86728,8.3953619 90.179073,9.5726643 90.179073,33.344421 C 90.179073,57.663608 101.13692,57.663608 101.13692,57.663608 L 103.35448,57.663608 C 103.35448,57.663608 91.911463,57.705039 91.911463,33.405503 C 91.911463,9.1059758 103.43930,8.3905104 103.43930,8.3905104 z " - id="path1696" - inkscape:export-filename="/home/boud/eraser.png" - inkscape:export-xdpi="25.269030" - inkscape:export-ydpi="25.269030" - sodipodi:nodetypes="ccccccc" - style="fill:url(#linearGradient1697);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:0.25000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000" /> - <path - d="M 109.30217,8.3905104 L 107.73016,8.3953619 C 107.73016,8.3953619 96.041953,9.5726643 96.041953,33.344421 C 96.041953,57.663608 106.99979,57.663608 106.99979,57.663608 L 109.21736,57.663608 C 109.21736,57.663608 97.774333,57.705039 97.774333,33.405503 C 97.774333,9.1059758 109.30217,8.3905104 109.30217,8.3905104 z " - id="path1698" - inkscape:export-filename="/home/boud/eraser.png" - inkscape:export-xdpi="25.269030" - inkscape:export-ydpi="25.269030" - sodipodi:nodetypes="ccccccc" - style="fill:url(#linearGradient1699);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:0.25000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000" /> - <path - d="M 91.939683,8.2289912 L 76.778513,8.2911122 C 76.778513,8.2911122 65.065543,9.4709063 65.065543,33.293029 C 65.065543,57.663743 76.046613,57.663743 76.046613,57.663743 L 91.931073,57.720994 C 91.931073,57.720994 80.775573,56.444553 80.775573,32.093537 C 80.775573,7.7425207 91.939683,8.2289912 91.939683,8.2289912 z " - id="path1700" - inkscape:export-filename="/home/boud/eraser.png" - inkscape:export-xdpi="25.269030" - inkscape:export-ydpi="25.269030" - sodipodi:nodetypes="ccccccc" - style="fill:#000000;fill-opacity:0.87005651;fill-rule:evenodd;stroke:#000000;stroke-width:0.21643901pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000" /> - </g> -</svg> diff --git a/krita/plugins/paintops/defaultpaintops/src/pennello_mauro_olivo_01.svg b/krita/plugins/paintops/defaultpaintops/src/pennello_mauro_olivo_01.svg deleted file mode 100644 index b79fcd57..00000000 --- a/krita/plugins/paintops/defaultpaintops/src/pennello_mauro_olivo_01.svg +++ /dev/null @@ -1,616 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN" -"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"> -<!-- Created with Inkscape (http://www.inkscape.org/) --> -<svg - height="297mm" - id="svg1" - inkscape:version="0.40" - sodipodi:docbase="/home/boud" - sodipodi:docname="pennello_mauro_olivo_01.svg" - sodipodi:version="0.32" - width="210mm" - xmlns="http://www.w3.org/2000/svg" - xmlns:cc="http://web.resource.org/cc/" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:xlink="http://www.w3.org/1999/xlink" - inkscape:export-filename="/home/boud/brush.png" - inkscape:export-xdpi="19.260000" - inkscape:export-ydpi="19.260000"> - <defs - id="defs3"> - <linearGradient - id="linearGradient15131"> - <stop - id="stop15132" - offset="0.0000000" - style="stop-color:#004800;stop-opacity:1.0000000;" /> - <stop - id="stop15146" - offset="0.50000000" - style="stop-color:#7fbd7f;stop-opacity:0.49803922;" /> - <stop - id="stop15147" - offset="0.75000000" - style="stop-color:#bfdebf;stop-opacity:0.24705882;" /> - <stop - id="stop15148" - offset="0.87500000" - style="stop-color:#dfeedf;stop-opacity:0.12156863;" /> - <stop - id="stop15149" - offset="0.93750000" - style="stop-color:#eff6ef;stop-opacity:0.058823530;" /> - <stop - id="stop15150" - offset="0.96875000" - style="stop-color:#f7faf7;stop-opacity:0.027450981;" /> - <stop - id="stop15151" - offset="0.98437500" - style="stop-color:#fbfcfb;stop-opacity:0.011764706;" /> - <stop - id="stop15152" - offset="0.99000001" - style="stop-color:#fdfdfd;stop-opacity:0.0039215689;" /> - <stop - id="stop15133" - offset="1.0000000" - style="stop-color:#ffffff;stop-opacity:0.0000000;" /> - </linearGradient> - <linearGradient - id="linearGradient1800"> - <stop - id="stop1801" - offset="0.0000000" - style="stop-color:#ffffff;stop-opacity:0.62626261;" /> - <stop - id="stop1802" - offset="1.0000000" - style="stop-color:#ffffff;stop-opacity:0.0000000;" /> - </linearGradient> - <linearGradient - id="linearGradient1664"> - <stop - id="stop1665" - offset="0.0000000" - style="stop-color:#000000;stop-opacity:1.0000000;" /> - <stop - id="stop1666" - offset="1.0000000" - style="stop-color:#ffffff;stop-opacity:0.0000000;" /> - </linearGradient> - <linearGradient - id="linearGradient1659"> - <stop - id="stop1660" - offset="0.0000000" - style="stop-color:#ffffff;stop-opacity:0.77777779;" /> - <stop - id="stop1661" - offset="1.0000000" - style="stop-color:#ffffff;stop-opacity:0.0000000;" /> - </linearGradient> - <linearGradient - id="linearGradient1653"> - <stop - id="stop1654" - offset="0.0000000" - style="stop-color:#ffffff;stop-opacity:0.61616164;" /> - <stop - id="stop1655" - offset="1.0000000" - style="stop-color:#2eff19;stop-opacity:0.0000000;" /> - </linearGradient> - <linearGradient - id="linearGradient1628"> - <stop - id="stop1629" - offset="0.0000000" - style="stop-color:#717674;stop-opacity:1.0000000;" /> - <stop - id="stop1630" - offset="1.0000000" - style="stop-color:#ffffff;stop-opacity:0.0000000;" /> - </linearGradient> - <linearGradient - id="linearGradient1617"> - <stop - id="stop1618" - offset="0.0000000" - style="stop-color:#ffffff;stop-opacity:1.0000000;" /> - <stop - id="stop1619" - offset="1.0000000" - style="stop-color:#ffffff;stop-opacity:0.0000000;" /> - </linearGradient> - <linearGradient - id="linearGradient1608"> - <stop - id="stop1609" - offset="0.0000000" - style="stop-color:#004500;stop-opacity:1.0000000;" /> - <stop - id="stop1611" - offset="0.50000000" - style="stop-color:#00814c;stop-opacity:1.0000000;" /> - <stop - id="stop1610" - offset="1.0000000" - style="stop-color:#a54800;stop-opacity:1.0000000;" /> - </linearGradient> - <linearGradient - id="linearGradient1598"> - <stop - id="stop1599" - offset="0.0000000" - style="stop-color:#000000;stop-opacity:1.0000000;" /> - <stop - id="stop1601" - offset="0.50000000" - style="stop-color:#7f7f7f;stop-opacity:1.0000000;" /> - <stop - id="stop1600" - offset="1" - style="stop-color:#fff;stop-opacity:1;" /> - </linearGradient> - <linearGradient - id="linearGradient1595"> - <stop - id="stop1596" - offset="0.0000000" - style="stop-color:#a25d00;stop-opacity:1.0000000;" /> - <stop - id="stop1657" - offset="0.50000000" - style="stop-color:#ddae4c;stop-opacity:1.0000000;" /> - <stop - id="stop1597" - offset="1.0000000" - style="stop-color:#ffe698;stop-opacity:1.0000000;" /> - </linearGradient> - <linearGradient - id="linearGradient1592"> - <stop - id="stop1593" - offset="0.0000000" - style="stop-color:#de8900;stop-opacity:1.0000000;" /> - <stop - id="stop1594" - offset="1" - style="stop-color:#fff;stop-opacity:1;" /> - </linearGradient> - <linearGradient - id="linearGradient1584"> - <stop - id="stop1585" - offset="0" - style="stop-color:#000;stop-opacity:1;" /> - <stop - id="stop1586" - offset="1" - style="stop-color:#fff;stop-opacity:1;" /> - </linearGradient> - <linearGradient - id="linearGradient1588" - inkscape:collect="always" - x1="1193.5865" - x2="1330.3144" - xlink:href="#linearGradient1595" - y1="112.08835" - y2="112.08835" - gradientTransform="scale(0.301850,3.312902)" - gradientUnits="userSpaceOnUse" /> - <radialGradient - cx="556.83325" - cy="673.03480" - fx="558.31175" - fy="673.03480" - id="radialGradient1607" - inkscape:collect="always" - r="121.23903" - xlink:href="#linearGradient1608" - gradientTransform="scale(0.665788,1.501979)" - gradientUnits="userSpaceOnUse" /> - <linearGradient - id="linearGradient1613" - inkscape:collect="always" - x1="511.84784" - x2="664.54880" - xlink:href="#linearGradient1598" - y1="462.29474" - y2="458.95388" - gradientTransform="scale(0.603506,1.656985)" - gradientUnits="userSpaceOnUse" /> - <radialGradient - id="radialGradient1621" - inkscape:collect="always" - xlink:href="#linearGradient1617" - gradientTransform="scale(0.747545,1.337712)" - cx="478.63759" - cy="683.14977" - fx="478.63759" - fy="683.14977" - r="17.256384" - gradientUnits="userSpaceOnUse" /> - <radialGradient - cx="478.63759" - cy="683.14977" - fx="478.63759" - fy="683.14977" - id="radialGradient1658" - inkscape:collect="always" - r="17.256384" - xlink:href="#linearGradient1659" - gradientTransform="scale(0.747545,1.337712)" - gradientUnits="userSpaceOnUse" /> - <radialGradient - cx="446.43968" - cy="1039.6351" - fx="446.79044" - fy="1040.7757" - id="radialGradient15130" - inkscape:collect="always" - r="79.796235" - xlink:href="#linearGradient15131" - gradientTransform="scale(1.083274,0.923127)" - gradientUnits="userSpaceOnUse" /> - <radialGradient - cx="478.63759" - cy="683.14977" - fx="478.63759" - fy="683.14977" - id="radialGradient15163" - inkscape:collect="always" - r="13.148508" - xlink:href="#linearGradient1659" - gradientTransform="scale(0.747545,1.337712)" - gradientUnits="userSpaceOnUse" /> - <radialGradient - inkscape:collect="always" - xlink:href="#linearGradient1617" - id="radialGradient1656" - gradientTransform="scale(0.747545,1.337712)" - cx="478.63759" - cy="683.14977" - fx="478.63759" - fy="683.14977" - r="17.256384" - gradientUnits="userSpaceOnUse" /> - <radialGradient - inkscape:collect="always" - xlink:href="#linearGradient1659" - id="radialGradient1657" - cx="478.63759" - cy="683.14977" - fx="478.63759" - fy="683.14977" - r="17.256384" - gradientTransform="scale(0.747545,1.337712)" - gradientUnits="userSpaceOnUse" /> - <radialGradient - inkscape:collect="always" - xlink:href="#linearGradient1659" - id="radialGradient1659" - cx="478.63759" - cy="683.14977" - fx="478.63759" - fy="683.14977" - r="17.256384" - gradientTransform="scale(0.747545,1.337712)" - gradientUnits="userSpaceOnUse" /> - <radialGradient - inkscape:collect="always" - xlink:href="#linearGradient1659" - id="radialGradient1673" - gradientUnits="userSpaceOnUse" - gradientTransform="scale(0.747545,1.337712)" - cx="478.63759" - cy="683.14977" - fx="478.63759" - fy="683.14977" - r="17.256384" /> - <radialGradient - inkscape:collect="always" - xlink:href="#linearGradient1617" - id="radialGradient1674" - gradientUnits="userSpaceOnUse" - gradientTransform="scale(0.747545,1.337712)" - cx="478.63759" - cy="683.14977" - fx="478.63759" - fy="683.14977" - r="17.256384" /> - <radialGradient - inkscape:collect="always" - xlink:href="#linearGradient1659" - id="radialGradient1675" - gradientUnits="userSpaceOnUse" - gradientTransform="scale(0.747545,1.337712)" - cx="478.63759" - cy="683.14977" - fx="478.63759" - fy="683.14977" - r="13.148508" /> - <radialGradient - inkscape:collect="always" - xlink:href="#linearGradient1659" - id="radialGradient1676" - gradientUnits="userSpaceOnUse" - gradientTransform="scale(0.747545,1.337712)" - cx="478.63759" - cy="683.14977" - fx="478.63759" - fy="683.14977" - r="17.256384" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient1598" - id="linearGradient1677" - gradientUnits="userSpaceOnUse" - gradientTransform="scale(0.603506,1.656985)" - x1="511.84784" - y1="462.29474" - x2="664.54880" - y2="458.95388" /> - <radialGradient - inkscape:collect="always" - xlink:href="#linearGradient1659" - id="radialGradient1678" - gradientUnits="userSpaceOnUse" - gradientTransform="scale(0.747545,1.337712)" - cx="478.63759" - cy="683.14977" - fx="478.63759" - fy="683.14977" - r="17.256384" /> - <radialGradient - inkscape:collect="always" - xlink:href="#linearGradient1617" - id="radialGradient1679" - gradientUnits="userSpaceOnUse" - gradientTransform="scale(0.747545,1.337712)" - cx="478.63759" - cy="683.14977" - fx="478.63759" - fy="683.14977" - r="17.256384" /> - <radialGradient - inkscape:collect="always" - xlink:href="#linearGradient1608" - id="radialGradient1680" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(5.549835e-3,0.634975,-1.773650,1.011171e-2,1038.823,138.4314)" - cx="556.83325" - cy="673.03480" - fx="558.31175" - fy="673.03480" - r="121.23903" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient1595" - id="linearGradient1681" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(1.841587e-3,0.305219,-2.863318,2.364665e-2,776.1582,114.7272)" - x1="1193.5865" - y1="112.08835" - x2="1330.3144" - y2="112.08835" /> - </defs> - <sodipodi:namedview - bordercolor="#666666" - borderopacity="1.0" - id="base" - inkscape:cx="297.63779" - inkscape:cy="454.90245" - inkscape:guide-bbox="false" - inkscape:pageopacity="0.0" - inkscape:pageshadow="2" - inkscape:window-height="942" - inkscape:window-width="1272" - inkscape:window-x="0" - inkscape:window-y="0" - inkscape:zoom="0.92054809" - pagecolor="#ffffff" - showborder="false" - showguides="false"> - <sodipodi:guide - id="guide918" - orientation="horizontal" - position="506.59301" /> - <sodipodi:guide - id="guide919" - orientation="horizontal" - position="500.99186" /> - <sodipodi:guide - id="guide922" - orientation="horizontal" - position="360.02955" /> - <sodipodi:guide - id="guide923" - orientation="horizontal" - position="365.31953" /> - <sodipodi:guide - id="guide1572" - orientation="vertical" - position="85.253558" /> - <sodipodi:guide - id="guide1573" - orientation="vertical" - position="71.174989" /> - <sodipodi:guide - id="guide1574" - orientation="vertical" - position="99.332127" /> - </sodipodi:namedview> - <path - d="M 769.97658,486.81260 C 769.90085,474.26161 753.99967,473.66070 735.62179,471.66366 C 517.14574,458.36371 361.34879,450.03856 177.81682,469.40472 C 159.52842,469.55575 144.86624,479.78157 144.94196,492.33256 C 145.01769,504.88357 159.80181,514.86620 178.09021,514.71516 C 361.85415,533.79423 548.39498,517.77619 735.95259,501.12302 C 754.23073,499.27093 769.35872,498.56352 769.97658,486.81260 z " - id="rect1581" - sodipodi:nodetypes="ccccccc" - style="fill:url(#linearGradient1681);fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.1734303pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0.49572650" /> - <path - d="M 48.073160,478.03067 C 48.087914,489.97403 48.102681,501.91738 48.117448,513.86073 C 0.85876303,531.35767 -46.500497,537.34604 -81.647766,525.45820 C -104.01644,519.50544 -131.86117,520.45766 -139.00549,501.34675 C -143.09055,490.41920 -129.73846,496.31038 -120.21496,484.29524 C -55.360244,444.22124 48.073160,478.03067 48.073160,478.03067 z " - id="path1576" - sodipodi:nodetypes="cccscc" - style="fill:url(#radialGradient1680);fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.58188543pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0.36752138" /> - <path - d="M 370.70305 913.85773 A 12.899923 23.084074 0 1 1 344.90321,913.85773 A 12.899923 23.084074 0 1 1 370.70305 913.85773 z" - id="path1622" - sodipodi:cx="357.80313" - sodipodi:cy="913.85773" - sodipodi:rx="12.899923" - sodipodi:ry="23.084074" - sodipodi:type="arc" - style="fill:url(#radialGradient1679);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000" - transform="matrix(6.101001e-3,1.011162,-12.20179,0.100768,11619.90,37.23681)" /> - <path - d="M 370.70305 913.85773 A 12.899923 23.084074 0 1 1 344.90321,913.85773 A 12.899923 23.084074 0 1 1 370.70305 913.85773 z" - id="path1668" - sodipodi:cx="357.80313" - sodipodi:cy="913.85773" - sodipodi:rx="12.899923" - sodipodi:ry="23.084074" - sodipodi:type="arc" - style="fill:url(#radialGradient1678);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000" - transform="matrix(1.392760e-2,1.633299,-4.410336,2.577152e-2,3963.448,-103.3312)" /> - <g - id="g1671" - style="stroke:#000000;stroke-opacity:0.49572650" - transform="matrix(6.101001e-3,1.011162,-0.864293,7.137744e-3,776.1582,114.7272)"> - <path - d="M 343.52237,671.33150 C 343.32633,673.73849 341.75770,676.43905 341.57758,678.84728 C 342.57148,679.70505 343.19413,680.92386 343.19413,682.29375 C 343.19413,683.87456 342.31922,685.22430 341.04643,686.07572 C 324.55199,705.35504 357.35073,801.15078 340.97715,833.96892 L 342.91701,837.59839 L 341.46212,840.89236 L 344.67176,849.62815 L 392.99165,849.34080 L 395.31616,840.98387 L 393.74580,837.59839 L 395.84731,833.87742 C 378.83530,791.73991 412.50569,719.52485 395.66256,686.10622 C 394.35910,685.25837 393.44558,683.89688 393.44558,682.29375 C 393.44558,680.88864 394.13863,679.67684 395.17760,678.81678 C 395.01118,676.41812 393.45882,673.73393 393.27900,671.33150 C 375.74167,671.33148 361.05969,671.33150 343.52237,671.33150 z " - id="rect910" - sodipodi:nodetypes="ccccccccccccccccc" - style="fill:url(#linearGradient1677);fill-opacity:1.0000000;fill-rule:evenodd;stroke-width:0.84926434pt;stroke-linecap:butt;stroke-linejoin:miter" /> - <path - d="M 343.36975,682.48174 L 393.50367,682.42041" - id="path1649" - style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke-width:2.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000" /> - <path - d="M 342.72547,837.67100 L 393.98325,837.51088 L 393.98325,837.51088 L 393.98325,837.51088" - id="path1650" - style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke-width:2.0092726;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000" /> - </g> - <path - d="M 370.70305 913.85773 A 12.899923 23.084074 0 1 1 344.90321,913.85773 A 12.899923 23.084074 0 1 1 370.70305 913.85773 z" - id="path1803" - sodipodi:cx="357.80313" - sodipodi:cy="913.85773" - sodipodi:rx="12.899923" - sodipodi:ry="23.084074" - sodipodi:type="arc" - style="fill:url(#radialGradient1676);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000" - transform="matrix(8.429002e-3,1.397000,-2.669140,2.204299e-2,2565.017,-13.88688)" /> - <path - d="M 370.70305 913.85773 A 12.899923 23.084074 0 1 1 344.90321,913.85773 A 12.899923 23.084074 0 1 1 370.70305 913.85773 z" - id="path15162" - sodipodi:cx="357.80313" - sodipodi:cy="913.85773" - sodipodi:rx="12.899923" - sodipodi:ry="23.084074" - sodipodi:type="arc" - style="fill:url(#radialGradient1675);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000" - transform="matrix(1.151647e-2,1.317638,-3.646822,2.079076e-2,3303.435,0.107690)" /> - <path - d="M 370.70305 913.85773 A 12.899923 23.084074 0 1 1 344.90321,913.85773 A 12.899923 23.084074 0 1 1 370.70305 913.85773 z" - id="path15164" - sodipodi:cx="357.80313" - sodipodi:cy="913.85773" - sodipodi:rx="12.899923" - sodipodi:ry="23.084074" - sodipodi:type="arc" - style="fill:url(#radialGradient1674);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000" - transform="matrix(6.101001e-3,1.011162,-12.20179,0.100768,11605.82,55.08689)" /> - <path - d="M 370.70305 913.85773 A 12.899923 23.084074 0 1 1 344.90321,913.85773 A 12.899923 23.084074 0 1 1 370.70305 913.85773 z" - id="path15165" - sodipodi:cx="357.80313" - sodipodi:cy="913.85773" - sodipodi:rx="12.899923" - sodipodi:ry="23.084074" - sodipodi:type="arc" - style="fill:url(#radialGradient1673);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000" - transform="matrix(8.429002e-3,1.397000,-2.669140,2.204299e-2,2557.975,-37.22922)" /> - <metadata - id="metadata1620"> - <rdf:RDF - id="RDF1621"> - <cc:Work - rdf:about="" - id="Work1622"> - <dc:title - id="title1623">pennello</dc:title> - <dc:description - id="description1625">Created with The Inkscape</dc:description> - <dc:subject - id="subject1627"> - <rdf:Bag - id="Bag1628"> - <rdf:li - id="li1629" /> - <rdf:li - id="li1630">office</rdf:li> - </rdf:Bag> - </dc:subject> - <dc:publisher - id="publisher1632"> - <cc:Agent - rdf:about="http://www.openclipart.org" - id="Agent1633"> - <dc:title - id="title1634">Mauro Olivo</dc:title> - </cc:Agent> - </dc:publisher> - <dc:creator - id="creator1636"> - <cc:Agent - rdf:about="" - id="Agent1637"> - <dc:title - id="title1638">Mauro Olivo</dc:title> - </cc:Agent> - </dc:creator> - <dc:rights - id="rights1640"> - <cc:Agent - rdf:about="" - id="Agent1641"> - <dc:title - id="title1642">Mauro Olivo</dc:title> - </cc:Agent> - </dc:rights> - <dc:date - id="date1644" /> - <dc:format - id="format1645">image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" - id="type1647" /> - <cc:license - rdf:resource="Public Domain" - id="license1648"> - <dc:date - id="date1649" /> - </cc:license> - <dc:language - id="language1650">en</dc:language> - </cc:Work> - <cc:License - rdf:about="Public Domain" - id="License1652"> - <cc:permits - rdf:resource="http://web.resource.org/cc/Reproduction" - id="permits1653" /> - <cc:permits - rdf:resource="http://web.resource.org/cc/Distribution" - id="permits1654" /> - <cc:permits - rdf:resource="http://web.resource.org/cc/DerivativeWorks" - id="permits1655" /> - </cc:License> - </rdf:RDF> - </metadata> -</svg> |