diff --git a/plugins/tools/selectiontools/CMakeLists.txt b/plugins/tools/selectiontools/CMakeLists.txt index dc7b91f61b..b00dfbc0d8 100644 --- a/plugins/tools/selectiontools/CMakeLists.txt +++ b/plugins/tools/selectiontools/CMakeLists.txt @@ -1,37 +1,41 @@ -add_subdirectory( guided_selection ) - set(kritaselectiontools_SOURCES selection_tools.cc kis_tool_select_rectangular.cc kis_tool_select_polygonal.cc kis_tool_select_elliptical.cc kis_tool_select_contiguous.cc kis_tool_select_outline.cc kis_tool_select_path.cc kis_tool_select_similar.cc kis_selection_modifier_mapper.cc KisMagneticWorker.cc KisToolSelectMagnetic.cc + kis_tool_select_guided.cpp + kis_tool_select_guided_options_widget.cpp + tool_selectguided.cpp ) +ki18n_wrap_ui(kritaselectiontools_SOURCES kis_tool_select_guided_options_widget.ui) + qt5_add_resources(kritaselectiontools_SOURCES selectiontools.qrc) add_library(kritaselectiontools MODULE ${kritaselectiontools_SOURCES}) generate_export_header(kritaselectiontools BASE_NAME kritaselectiontools) target_link_libraries(kritaselectiontools kritaui kritabasicflakes kritaimage) install(TARGETS kritaselectiontools DESTINATION ${KRITA_PLUGIN_INSTALL_DIR}) install( FILES KisToolSelectPolygonal.action KisToolSelectElliptical.action KisToolSelectSimilar.action KisToolSelectContiguous.action KisToolSelectRectangular.action KisToolSelectOutline.action KisToolSelectPath.action KisToolSelectMagnetic.action + KisToolSelectGuided.action DESTINATION ${DATA_INSTALL_DIR}/krita/actions ) diff --git a/plugins/tools/selectiontools/guided_selection/KisToolSelectGuided.action b/plugins/tools/selectiontools/KisToolSelectGuided.action similarity index 100% rename from plugins/tools/selectiontools/guided_selection/KisToolSelectGuided.action rename to plugins/tools/selectiontools/KisToolSelectGuided.action diff --git a/plugins/tools/selectiontools/guided_selection/CMakeLists.txt b/plugins/tools/selectiontools/guided_selection/CMakeLists.txt deleted file mode 100644 index 1b36eea85e..0000000000 --- a/plugins/tools/selectiontools/guided_selection/CMakeLists.txt +++ /dev/null @@ -1,17 +0,0 @@ -set(kritatoolSelectGuided_SOURCES - tool_selectguided.cpp - kis_tool_select_guided.cpp - kis_tool_select_guided_options_widget.cpp - kis_inpaint.cpp - ) - -ki18n_wrap_ui(kritatoolSelectGuided_SOURCES kis_tool_select_guided_options_widget.ui) - -add_library(kritatoolSelectGuided MODULE ${kritatoolSelectGuided_SOURCES}) - -generate_export_header(kritatoolSelectGuided BASE_NAME kritatoolSelectGuided) - -target_link_libraries(kritatoolSelectGuided kritaui) - -install(TARGETS kritatoolSelectGuided DESTINATION ${KRITA_PLUGIN_INSTALL_DIR}) - diff --git a/plugins/tools/selectiontools/guided_selection/kritatoolselectguided.json b/plugins/tools/selectiontools/guided_selection/kritatoolselectguided.json deleted file mode 100644 index e5c47771ab..0000000000 --- a/plugins/tools/selectiontools/guided_selection/kritatoolselectguided.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "Id": "Selection Tools", - "Type": "Service", - "X-KDE-Library": "kritatoolselectguided", - "X-KDE-ServiceTypes": [ - "Krita/Tool" - ], - "X-Krita-Version": "28" -} diff --git a/plugins/tools/selectiontools/guided_selection/kis_inpaint.cpp b/plugins/tools/selectiontools/kis_inpaint.cpp similarity index 100% rename from plugins/tools/selectiontools/guided_selection/kis_inpaint.cpp rename to plugins/tools/selectiontools/kis_inpaint.cpp diff --git a/plugins/tools/selectiontools/guided_selection/kis_tool_select_guided.cpp b/plugins/tools/selectiontools/kis_tool_select_guided.cpp similarity index 98% rename from plugins/tools/selectiontools/guided_selection/kis_tool_select_guided.cpp rename to plugins/tools/selectiontools/kis_tool_select_guided.cpp index 36363c08f6..974e44d9b7 100644 --- a/plugins/tools/selectiontools/guided_selection/kis_tool_select_guided.cpp +++ b/plugins/tools/selectiontools/kis_tool_select_guided.cpp @@ -1,148 +1,149 @@ #include "kis_tool_select_guided.h" #include "QApplication" #include "QPainterPath" #include #include #include #include "kis_canvas2.h" #include "kis_cursor.h" #include "kis_painter.h" #include "kis_paintop_preset.h" #include "kundo2magicstring.h" #include "kundo2stack.h" #include "commands_new/kis_transaction_based_command.h" #include "kis_transaction.h" #include "kis_processing_applicator.h" #include "kis_datamanager.h" #include "KoColorSpaceRegistry.h" #include "kis_tool_select_guided_options_widget.h" #include "libs/image/kis_paint_device_debug_utils.h" #include "kis_paint_layer.h" #include "kis_algebra_2d.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "kis_painter.h" #include #include "canvas/kis_canvas2.h" #include "kis_pixel_selection.h" #include "kis_selection_tool_helper.h" #include "kis_tool_select_guided_options_widget.h" #include "kis_algebra_2d.h" #include "KisHandlePainterHelper.h" #include #include #include #include #include #include #include #include #include + KisToolSelectGuided::KisToolSelectGuided(KoCanvasBase *canvas) : KisToolSelect(canvas, - KisCursor::load("tool_magnetic_selection_cursor.png", 5, 5), + KisCursor::crossCursor(), i18n("Guided Selection")), m_finished(false), m_filterRadius(3), m_epsilon(70) { } /*void KisToolSelectGuided::GuidedSelectGenerate() { KisCanvas2 *kisCanvas = dynamic_cast(canvas()); KIS_ASSERT_RECOVER_RETURN(kisCanvas); kisCanvas->updateCanvas(); setMode(KisTool::HOVER_MODE); if (mode == PIXEL_SELECTION){ KisPaintDeviceSP image = KisPaintDeviceSP(new KisPaintDevice(currentImage()->projection())); image.ConvertTo(KoColorSpaceRegistry::instance()->rgb32()); KisLodTransformScalar t(image); const qreal BoxBlurAmount = t.scale(m_filterEpsilon ? m_filterEpsilon.toDouble() : 1.0); QRect applyRect(QPoint(0, 0), image.width(),image.height()); const QRect boxNeedRect = this->neededRect(applyRect, config, originalimage->defaultBounds()->currentLevelOfDetail()); KisSequentialConstIterator it(imageDev, QRect(0, 0, image.width(), image.height())); for (int y = 0; y < image.height(); y++) { for (int x = 0; x < image.width(); x++) { it.nextPixel(); const quint8* pixel = it.rawDataConst(); for (int chan = 0; chan < 4; ++chan) { image &img = image[chan]; *(img.scanLine(y) + x) = cs->scaleToU8(pixel, chan); } } } } } QRect KisToolSelectGuided::neededRect(const QRect & rect, int lod) const { KisLodTransformScalar t(lod); const int halfSize = m_filterRadius ? KisGaussianKernel::kernelSizeFromRadius(t.scale(m_filterRadius.toFloat())) / 2 : 5; return rect.adjusted( -halfSize * 2, -halfSize * 2, halfSize * 2, halfSize * 2); } QRect KisToolSelectGuided::changedRect(const QRect & rect, int lod) const { KisLodTransformScalar t(lod); const int halfSize = m_filterRadius ? KisGaussianKernel::kernelSizeFromRadius(t.scale(m_filterRadius.toFloat())) / 2 : 5; return rect.adjusted( -halfSize, -halfSize, halfSize, halfSize); }*/ void KisToolSelectGuided::paint(QPainter& gc, const KoViewConverter &converter) { } QWidget * KisToolSelectGuided::createOptionWidget() { KisCanvas2 * kiscanvas = dynamic_cast(canvas()); m_d->optionsWidget = new KisToolSelectGuidedOptionsWidget(kiscanvas->viewManager()->canvasResourceProvider(), 0); m_d->optionsWidget->setObjectName(toolId() + "option widget"); return m_d->optionsWidget; } diff --git a/plugins/tools/selectiontools/guided_selection/kis_tool_select_guided.h b/plugins/tools/selectiontools/kis_tool_select_guided.h similarity index 90% rename from plugins/tools/selectiontools/guided_selection/kis_tool_select_guided.h rename to plugins/tools/selectiontools/kis_tool_select_guided.h index 736c6a1d32..294142dd08 100644 --- a/plugins/tools/selectiontools/guided_selection/kis_tool_select_guided.h +++ b/plugins/tools/selectiontools/kis_tool_select_guided.h @@ -1,72 +1,78 @@ #ifndef KIS_TOOL_SELECT_GUIDED_H_ #define KIS_TOOL_SELECT_GUIDED_H_ #include #include #include "kis_tool_paint.h" #include "KisSelectionToolFactoryBase.h" #include #include #include #include #include #include #include #include -#include "plugins/tools/selectiontools/selection_tools.h" +#include "selection_tools.h" #include "tool_selectguided.h" #include "kis_selection_tool_config_widget_helper.h" #include class QPainterPath; +class KoCanvasBase; class KisToolSelectGuided : public KisToolSelect { Q_OBJECT public: KisToolSelectGuided(KoCanvasBase * canvas); ~KisToolSelectGuided() override = default; void paint(QPainter& gc, const KoViewConverter &converter) override; QWidget * createOptionWidget() override; public Q_SLOTS: + int getKernelRadius(void); + qreal getEpsilon(void); + bool getSelectActive(void); protected: private: - //const QRect& applyRect; - //const QRect& neededRect; - struct Private; - const QScopedPointer m_d; + QPainterPath m_paintPath; bool m_finished; int m_filterRadius; qreal m_epsilon; - QPainterPath m_paintPath; + bool activate_selection_painting; +private: + //const QRect& applyRect; + //const QRect& neededRect; + struct Private; + const QScopedPointer m_d; }; class KisToolSelectGuidedFactory : public KisSelectionToolFactoryBase { public: KisToolSelectGuidedFactory() : KisSelectionToolFactoryBase("KisToolSelectGuided") { setToolTip(i18n("Guided Selection Tool")); setSection(TOOL_TYPE_SELECTION); setIconName(koIconNameCStr("tool_guided_selection")); setPriority(9); setActivationShapeId(KRITA_TOOL_ACTIVATION_ID); } ~KisToolSelectGuidedFactory() override { } KoToolBase * createTool(KoCanvasBase *canvas) override { return new KisToolSelectGuided(canvas); } }; #endif // KIS_TOOL_SELECT_GUIDED_H diff --git a/plugins/tools/selectiontools/guided_selection/kis_tool_select_guided_options_widget.cpp b/plugins/tools/selectiontools/kis_tool_select_guided_options_widget.cpp similarity index 95% rename from plugins/tools/selectiontools/guided_selection/kis_tool_select_guided_options_widget.cpp rename to plugins/tools/selectiontools/kis_tool_select_guided_options_widget.cpp index eaf65b7bad..8517607dff 100644 --- a/plugins/tools/selectiontools/guided_selection/kis_tool_select_guided_options_widget.cpp +++ b/plugins/tools/selectiontools/kis_tool_select_guided_options_widget.cpp @@ -1,59 +1,59 @@ #include "kis_tool_select_guided_options_widget.h" #include "ui_kis_tool_select_guided_options_widget.h" #include #include "KisPaletteModel.h" #include "kis_config.h" #include #include "kis_canvas_resource_provider.h" struct KisToolSelectGuidedOptionsWidget::Private { Private() { } Ui_KisToolSelectGuidedOptionsWidget *ui; int getKernelRadius(void) { return ui->kernel_radius->value(); } qreal getEpsilon(void) { return ui->epsilon->value(); } bool getSelectActive(void) { - return ui->activate_selection_painting->value(); + return ui->activate_selection_painting->checkState(); } }; KisToolSelectGuidedOptionsWidget::KisToolSelectGuidedOptionsWidget(KisCanvasResourceProvider */*provider*/, QWidget *parent) : QWidget(parent), m_d(new Private) { m_d->ui = new Ui_KisToolSelectGuidedOptionsWidget(); m_d->ui->setupUi(this); } KisToolSelectGuidedOptionsWidget::~KisToolSelectGuidedOptionsWidget() { } int KisToolSelectGuidedOptionsWidget::getKernelRadius() { return m_d->getKernelRadius(); } qreal KisToolSelectGuidedOptionsWidget::getEpsilon() { return m_d->getEpsilon(); } bool KisToolSelectGuidedOptionsWidget::getSelectActive() { return m_d->getSelectActive(); } diff --git a/plugins/tools/selectiontools/guided_selection/kis_tool_select_guided_options_widget.h b/plugins/tools/selectiontools/kis_tool_select_guided_options_widget.h similarity index 100% rename from plugins/tools/selectiontools/guided_selection/kis_tool_select_guided_options_widget.h rename to plugins/tools/selectiontools/kis_tool_select_guided_options_widget.h diff --git a/plugins/tools/selectiontools/guided_selection/kis_tool_select_guided_options_widget.ui b/plugins/tools/selectiontools/kis_tool_select_guided_options_widget.ui similarity index 100% rename from plugins/tools/selectiontools/guided_selection/kis_tool_select_guided_options_widget.ui rename to plugins/tools/selectiontools/kis_tool_select_guided_options_widget.ui diff --git a/plugins/tools/selectiontools/selection_tools.cc b/plugins/tools/selectiontools/selection_tools.cc index 3d9b28981c..1132c9158c 100644 --- a/plugins/tools/selectiontools/selection_tools.cc +++ b/plugins/tools/selectiontools/selection_tools.cc @@ -1,64 +1,63 @@ /* * selection_tools.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 "selection_tools.h" #include #include #include #include "KoToolRegistry.h" #include "kis_global.h" #include "kis_types.h" #include "kis_tool_select_outline.h" #include "kis_tool_select_polygonal.h" #include "kis_tool_select_rectangular.h" #include "kis_tool_select_contiguous.h" #include "kis_tool_select_elliptical.h" #include "kis_tool_select_path.h" #include "kis_tool_select_similar.h" #include "KisToolSelectMagnetic.h" - -#include "guided_selection/kis_tool_select_guided.h" +#include "kis_tool_select_guided.h" K_PLUGIN_FACTORY_WITH_JSON(SelectionToolsFactory, "kritaselectiontools.json", registerPlugin();) SelectionTools::SelectionTools(QObject *parent, const QVariantList &) : QObject(parent) { KoToolRegistry::instance()->add(new KisToolSelectOutlineFactory()); KoToolRegistry::instance()->add(new KisToolSelectPolygonalFactory()); KoToolRegistry::instance()->add(new KisToolSelectRectangularFactory()); KoToolRegistry::instance()->add(new KisToolSelectEllipticalFactory()); KoToolRegistry::instance()->add(new KisToolSelectContiguousFactory()); KoToolRegistry::instance()->add(new KisToolSelectPathFactory()); KoToolRegistry::instance()->add(new KisToolSelectSimilarFactory()); KoToolRegistry::instance()->add(new KisToolSelectMagneticFactory()); KoToolRegistry::instance()->add(new KisToolSelectGuidedFactory()); } SelectionTools::~SelectionTools() { } #include "selection_tools.moc" diff --git a/plugins/tools/selectiontools/guided_selection/tool_selectguided.cpp b/plugins/tools/selectiontools/tool_selectguided.cpp similarity index 94% rename from plugins/tools/selectiontools/guided_selection/tool_selectguided.cpp rename to plugins/tools/selectiontools/tool_selectguided.cpp index 50492212e3..d1896a8026 100644 --- a/plugins/tools/selectiontools/guided_selection/tool_selectguided.cpp +++ b/plugins/tools/selectiontools/tool_selectguided.cpp @@ -1,27 +1,25 @@ #include "tool_selectguided.h" #include #include #include #include #include #include "kis_paint_device.h" #include "kis_tool_select_guided.h" K_PLUGIN_FACTORY_WITH_JSON(DefaultToolsFactory, "kritatoolselectguided.json", registerPlugin();) ToolSelectGuided::ToolSelectGuided(QObject *parent, const QVariantList &) : QObject(parent) { KoToolRegistry::instance()->add(new KisToolSelectGuidedFactory()); } ToolSelectGuided::~ToolSelectGuided() { } - -#include "tool_selectguided.moc" diff --git a/plugins/tools/selectiontools/guided_selection/tool_selectguided.h b/plugins/tools/selectiontools/tool_selectguided.h similarity index 100% rename from plugins/tools/selectiontools/guided_selection/tool_selectguided.h rename to plugins/tools/selectiontools/tool_selectguided.h