[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [calligra/calligra/2.9] krita: added convert to shape for selections
From: Sven Langkamp <sven.langkamp () gmail ! com>
Date: 2015-07-28 19:18:41
Message-ID: E1ZKAOf-0006ut-SE () scm ! kde ! org
[Download RAW message or body]
Git commit ecd17f1d96d1861bb3783d2cda465e526d1bfed2 by Sven Langkamp.
Committed on 28/07/2015 at 19:17.
Pushed by langkamp into branch 'calligra/2.9'.
added convert to shape for selections
M +2 -1 krita/krita.rc
M +26 -0 krita/ui/actions/kis_selection_action_factories.cpp
M +6 -0 krita/ui/actions/kis_selection_action_factories.h
M +1 -1 krita/ui/flake/kis_shape_controller.h
M +11 -0 krita/ui/kis_selection_manager.cc
M +2 -1 krita/ui/kis_selection_manager.h
http://commits.kde.org/calligra/ecd17f1d96d1861bb3783d2cda465e526d1bfed2
diff --git a/krita/krita.rc b/krita/krita.rc
index 59118b7..4ee1ad1 100644
--- a/krita/krita.rc
+++ b/krita/krita.rc
@@ -2,7 +2,7 @@
<kpartgui xmlns="http://www.kde.org/standards/kxmlgui/1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
name="Krita"
-version="74"
+version="75"
xsi:schemaLocation="http://www.kde.org/standards/kxmlgui/1.0 \
http://www.kde.org/standards/kxmlgui/1.0/kxmlgui.xsd"> <MenuBar>
<Menu name="file" noMerge="1">
@@ -218,6 +218,7 @@ xsi:schemaLocation="http://www.kde.org/standards/kxmlgui/1.0 \
http://www.kde.org <Action name="invert"/>
<Action name="convert_to_vector_selection"/>
<Action name="convert_shapes_to_vector_selection"/>
+ <Action name="convert_selection_to_shape"/>
<Separator/>
<Action name="feather"/>
<Action name="similar"/>
diff --git a/krita/ui/actions/kis_selection_action_factories.cpp \
b/krita/ui/actions/kis_selection_action_factories.cpp index 8853a78..aa2b247 100644
--- a/krita/ui/actions/kis_selection_action_factories.cpp
+++ b/krita/ui/actions/kis_selection_action_factories.cpp
@@ -37,6 +37,7 @@
#include <KoShapeOdfSaveHelper.h>
#include <KoShapeController.h>
#include <KoDocumentResourceManager.h>
+#include <KoShapeStroke.h>
#include "KisViewManager.h"
#include "kis_canvas_resource_provider.h"
@@ -59,6 +60,8 @@
#include "kis_selection_filters.h"
#include "kis_shape_selection.h"
#include "KisPart.h"
+#include "kis_shape_layer.h"
+#include <kis_shape_controller.h>
#include <processing/fill_processing_visitor.h>
#include <kis_selection_tool_helper.h>
@@ -507,3 +510,26 @@ void \
KisShapesToVectorSelectionActionFactory::run(KisViewManager* view) \
KisShapeSelectionPaste paste(view); paste.paste(KoOdf::Text, mimeData);
}
+
+void KisSelectionToShapeActionFactory::run(KisViewManager *view)
+{
+ KisSelectionSP selection = view->selection();
+
+ if (!selection->outlineCacheValid()) {
+
+ return;
+ }
+
+ QPainterPath selectionOutline = selection->outlineCache();
+ QTransform transform = \
view->canvasBase()->coordinatesConverter()->imageToDocumentTransform(); +
+ KoShape *shape = \
KoPathShape::createShapeFromPainterPath(transform.map(selectionOutline)); + \
shape->setShapeId(KoPathShapeId); +
+ KoColor fgColor = \
view->canvasBase()->resourceManager()->resource(KoCanvasResourceManager::ForegroundColor).value<KoColor>();
+ KoShapeStroke* border = new KoShapeStroke(1.0, fgColor.toQColor());
+ shape->setStroke(border);
+
+ view->document()->shapeController()->addShape(shape);
+}
+
diff --git a/krita/ui/actions/kis_selection_action_factories.h \
b/krita/ui/actions/kis_selection_action_factories.h index dda0142..6c4fdbf 100644
--- a/krita/ui/actions/kis_selection_action_factories.h
+++ b/krita/ui/actions/kis_selection_action_factories.h
@@ -113,5 +113,11 @@ struct KRITAUI_EXPORT KisShapesToVectorSelectionActionFactory : \
public KisNoPara void run(KisViewManager *view);
};
+struct KRITAUI_EXPORT KisSelectionToShapeActionFactory : public \
KisNoParameterActionFactory { + KisSelectionToShapeActionFactory() : \
KisNoParameterActionFactory("selection-to-shape-action") {} + void \
run(KisViewManager *view); +};
+
+
#endif /* __KIS_SELECTION_ACTION_FACTORIES_H */
diff --git a/krita/ui/flake/kis_shape_controller.h \
b/krita/ui/flake/kis_shape_controller.h index 6b23e63..b25e38d 100644
--- a/krita/ui/flake/kis_shape_controller.h
+++ b/krita/ui/flake/kis_shape_controller.h
@@ -72,7 +72,7 @@ Q_SIGNALS:
void selectionContentChanged();
void currentLayerChanged(const KoShapeLayer*);
-protected:
+public:
void addShape(KoShape* shape);
void removeShape(KoShape* shape);
diff --git a/krita/ui/kis_selection_manager.cc b/krita/ui/kis_selection_manager.cc
index df11580..d9e1dac 100644
--- a/krita/ui/kis_selection_manager.cc
+++ b/krita/ui/kis_selection_manager.cc
@@ -246,6 +246,11 @@ void KisSelectionManager::setup(KisActionManager* actionManager)
actionManager->addAction("convert_shapes_to_vector_selection", action);
connect(action, SIGNAL(triggered()), SLOT(convertShapesToVectorSelection()));
+ action = new KisAction(i18nc("@action:inmenu", "&Convert to Shape"), this);
+ action->setActivationFlags(KisAction::PIXEL_SELECTION_WITH_PIXELS);
+ actionManager->addAction("convert_selection_to_shape", action);
+ connect(action, SIGNAL(triggered()), SLOT(convertToShape()));
+
m_toggleSelectionOverlayMode = new KisAction(i18nc("@action:inmenu", "&Toggle \
Selection Display Mode"), this);
actionManager->addAction("toggle-selection-overlay-mode", \
m_toggleSelectionOverlayMode);
connect(m_toggleSelectionOverlayMode, SIGNAL(triggered()), \
SLOT(slotToggleSelectionDecoration())); @@ -476,6 +481,12 @@ void \
KisSelectionManager::convertShapesToVectorSelection() factory.run(m_view);
}
+void KisSelectionManager::convertToShape()
+{
+ KisSelectionToShapeActionFactory factory;
+ factory.run(m_view);
+}
+
void KisSelectionManager::clear()
{
KisClearActionFactory factory;
diff --git a/krita/ui/kis_selection_manager.h b/krita/ui/kis_selection_manager.h
index 1a1142e..bac1a65 100644
--- a/krita/ui/kis_selection_manager.h
+++ b/krita/ui/kis_selection_manager.h
@@ -95,7 +95,8 @@ public Q_SLOTS:
void reselect();
void convertToVectorSelection();
void convertShapesToVectorSelection();
-
+ void convertToShape();
+
void copySelectionToNewLayer();
void toggleDisplaySelection();
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic