[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