summaryrefslogtreecommitdiffstats
path: root/src/ui
diff options
context:
space:
mode:
authorMarc Jeanmougin <marcjeanmougin@free.fr>2017-10-05 09:01:39 +0000
committerMarc Jeanmougin <marcjeanmougin@free.fr>2017-10-05 09:01:39 +0000
commit577a34f67d1d3bb523c362373efbbe7d00c1afab (patch)
treeba088c3888a7f1b3809d2e5c40f2dba0f6dc8fa9 /src/ui
parentMerge branch 'interp_att_ext' of gitlab.com:Moini/inkscape (diff)
parentRename object-edit.cpp to what it really is (diff)
downloadinkscape-577a34f67d1d3bb523c362373efbbe7d00c1afab.tar.gz
inkscape-577a34f67d1d3bb523c362373efbbe7d00c1afab.zip
Merge branch 'edit-clip-object' of gitlab.com:stfacc/inkscape
Diffstat (limited to 'src/ui')
-rw-r--r--src/ui/CMakeLists.txt3
-rw-r--r--src/ui/object-edit.h84
-rw-r--r--src/ui/shape-editor-knotholders.cpp (renamed from src/ui/object-edit.cpp)50
-rw-r--r--src/ui/shape-editor.cpp23
-rw-r--r--src/ui/shape-editor.h4
-rw-r--r--src/ui/tools/node-tool.cpp3
6 files changed, 63 insertions, 104 deletions
diff --git a/src/ui/CMakeLists.txt b/src/ui/CMakeLists.txt
index efdb279b4..be13d9b1b 100644
--- a/src/ui/CMakeLists.txt
+++ b/src/ui/CMakeLists.txt
@@ -5,10 +5,10 @@ set(ui_SRC
dialog-events.cpp
draw-anchor.cpp
interface.cpp
- object-edit.cpp
previewholder.cpp
selected-color.cpp
shape-editor.cpp
+ shape-editor-knotholders.cpp
tool-factory.cpp
tools-switch.cpp
uxmanager.cpp
@@ -185,7 +185,6 @@ set(ui_SRC
event-debug.h
icon-names.h
interface.h
- object-edit.h
previewable.h
previewfillable.h
previewholder.h
diff --git a/src/ui/object-edit.h b/src/ui/object-edit.h
deleted file mode 100644
index 75f3ce12b..000000000
--- a/src/ui/object-edit.h
+++ /dev/null
@@ -1,84 +0,0 @@
-#ifndef OBJECT_EDIT_H_SEEN
-#define OBJECT_EDIT_H_SEEN
-
-/*
- * Node editing extension to objects
- *
- * Authors:
- * Lauris Kaplinski <lauris@kaplinski.com>
- * Mitsuru Oka
- * Jon A. Cruz <jon@joncruz.org>
- *
- * Licensed under GNU GPL
- */
-
-#include "knotholder.h"
-
-namespace Inkscape {
-namespace UI {
-
-KnotHolder *createKnotHolder(SPItem *item, SPDesktop *desktop);
-
-}
-}
-
-class RectKnotHolder : public KnotHolder {
-public:
- RectKnotHolder(SPDesktop *desktop, SPItem *item, SPKnotHolderReleasedFunc relhandler);
- virtual ~RectKnotHolder() {};
-};
-
-class Box3DKnotHolder : public KnotHolder {
-public:
- Box3DKnotHolder(SPDesktop *desktop, SPItem *item, SPKnotHolderReleasedFunc relhandler);
- virtual ~Box3DKnotHolder() {};
-};
-
-class ArcKnotHolder : public KnotHolder {
-public:
- ArcKnotHolder(SPDesktop *desktop, SPItem *item, SPKnotHolderReleasedFunc relhandler);
- virtual ~ArcKnotHolder() {};
-};
-
-class StarKnotHolder : public KnotHolder {
-public:
- StarKnotHolder(SPDesktop *desktop, SPItem *item, SPKnotHolderReleasedFunc relhandler);
- virtual ~StarKnotHolder() {};
-};
-
-class SpiralKnotHolder : public KnotHolder {
-public:
- SpiralKnotHolder(SPDesktop *desktop, SPItem *item, SPKnotHolderReleasedFunc relhandler);
- virtual ~SpiralKnotHolder() {};
-};
-
-class OffsetKnotHolder : public KnotHolder {
-public:
- OffsetKnotHolder(SPDesktop *desktop, SPItem *item, SPKnotHolderReleasedFunc relhandler);
- virtual ~OffsetKnotHolder() {};
-};
-
-class FlowtextKnotHolder : public KnotHolder {
-public:
- FlowtextKnotHolder(SPDesktop *desktop, SPItem *item, SPKnotHolderReleasedFunc relhandler);
- virtual ~FlowtextKnotHolder() {};
-};
-
-class MiscKnotHolder : public KnotHolder {
-public:
- MiscKnotHolder(SPDesktop *desktop, SPItem *item, SPKnotHolderReleasedFunc relhandler);
- virtual ~MiscKnotHolder() {};
-};
-
-#endif // OBJECT_EDIT_H_SEEN
-
-/*
- Local Variables:
- mode:c++
- c-file-style:"stroustrup"
- c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
- indent-tabs-mode:nil
- fill-column:99
- End:
-*/
-// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 :
diff --git a/src/ui/object-edit.cpp b/src/ui/shape-editor-knotholders.cpp
index a2b6a2de0..b2e41bac4 100644
--- a/src/ui/object-edit.cpp
+++ b/src/ui/shape-editor-knotholders.cpp
@@ -31,11 +31,59 @@
#include "live_effects/effect.h"
#include "sp-pattern.h"
#include <glibmm/i18n.h>
-#include "ui/object-edit.h"
+#include "knotholder.h"
#include "knot-holder-entity.h"
#define sp_round(v,m) (((v) < 0.0) ? ((ceil((v) / (m) - 0.5)) * (m)) : ((floor((v) / (m) + 0.5)) * (m)))
+class RectKnotHolder : public KnotHolder {
+public:
+ RectKnotHolder(SPDesktop *desktop, SPItem *item, SPKnotHolderReleasedFunc relhandler);
+ virtual ~RectKnotHolder() {};
+};
+
+class Box3DKnotHolder : public KnotHolder {
+public:
+ Box3DKnotHolder(SPDesktop *desktop, SPItem *item, SPKnotHolderReleasedFunc relhandler);
+ virtual ~Box3DKnotHolder() {};
+};
+
+class ArcKnotHolder : public KnotHolder {
+public:
+ ArcKnotHolder(SPDesktop *desktop, SPItem *item, SPKnotHolderReleasedFunc relhandler);
+ virtual ~ArcKnotHolder() {};
+};
+
+class StarKnotHolder : public KnotHolder {
+public:
+ StarKnotHolder(SPDesktop *desktop, SPItem *item, SPKnotHolderReleasedFunc relhandler);
+ virtual ~StarKnotHolder() {};
+};
+
+class SpiralKnotHolder : public KnotHolder {
+public:
+ SpiralKnotHolder(SPDesktop *desktop, SPItem *item, SPKnotHolderReleasedFunc relhandler);
+ virtual ~SpiralKnotHolder() {};
+};
+
+class OffsetKnotHolder : public KnotHolder {
+public:
+ OffsetKnotHolder(SPDesktop *desktop, SPItem *item, SPKnotHolderReleasedFunc relhandler);
+ virtual ~OffsetKnotHolder() {};
+};
+
+class FlowtextKnotHolder : public KnotHolder {
+public:
+ FlowtextKnotHolder(SPDesktop *desktop, SPItem *item, SPKnotHolderReleasedFunc relhandler);
+ virtual ~FlowtextKnotHolder() {};
+};
+
+class MiscKnotHolder : public KnotHolder {
+public:
+ MiscKnotHolder(SPDesktop *desktop, SPItem *item, SPKnotHolderReleasedFunc relhandler);
+ virtual ~MiscKnotHolder() {};
+};
+
namespace {
static KnotHolder *sp_lpe_knot_holder(SPLPEItem *item, SPDesktop *desktop)
diff --git a/src/ui/shape-editor.cpp b/src/ui/shape-editor.cpp
index 6a8f5e931..4851c413f 100644
--- a/src/ui/shape-editor.cpp
+++ b/src/ui/shape-editor.cpp
@@ -20,21 +20,23 @@
#include "sp-shape.h"
#include "sp-path.h"
#include "inkscape.h"
-#include "ui/object-edit.h"
#include "ui/shape-editor.h"
#include "xml/node-event-vector.h"
-//using Inkscape::createKnotHolder;
namespace Inkscape {
namespace UI {
+KnotHolder *createKnotHolder(SPItem *item, SPDesktop *desktop);
+
bool ShapeEditor::_blockSetItem = false;
-ShapeEditor::ShapeEditor(SPDesktop *dt) {
- this->desktop = dt;
- this->knotholder = NULL;
- this->knotholder_listener_attached_for = NULL;
+ShapeEditor::ShapeEditor(SPDesktop *dt, Geom::Affine edit_transform) :
+ desktop(dt),
+ knotholder(nullptr),
+ knotholder_listener_attached_for(nullptr),
+ _edit_transform(edit_transform)
+{
}
ShapeEditor::~ShapeEditor() {
@@ -76,14 +78,6 @@ void ShapeEditor::decrement_local_change() {
}
}
-const SPItem *ShapeEditor::get_item() {
- const SPItem *item = NULL;
- if (this->has_knotholder()) {
- item = this->knotholder->getItem();
- }
- return item;
-}
-
void ShapeEditor::event_attr_changed(Inkscape::XML::Node * node, gchar const *name, gchar const *, gchar const *, bool, void *data)
{
g_assert(data);
@@ -129,6 +123,7 @@ void ShapeEditor::set_item(SPItem *item, bool keep_knotholder) {
this->knotholder = createKnotHolder(item, desktop);
}
if (this->knotholder) {
+ this->knotholder->setEditTransform(_edit_transform);
this->knotholder->update_knots();
// setting new listener
repr = this->knotholder->repr;
diff --git a/src/ui/shape-editor.h b/src/ui/shape-editor.h
index 7f435efca..e30b2d60b 100644
--- a/src/ui/shape-editor.h
+++ b/src/ui/shape-editor.h
@@ -23,7 +23,7 @@ namespace UI {
class ShapeEditor {
public:
- ShapeEditor(SPDesktop *desktop);
+ ShapeEditor(SPDesktop *desktop, Geom::Affine edit_transform = Geom::identity());
~ShapeEditor();
void set_item(SPItem *item, bool keep_knotholder = false);
@@ -42,11 +42,11 @@ public:
char const * /*new_value*/, bool /*is_interactive*/, void *data);
private:
void reset_item (bool keep_knotholder = true);
- const SPItem *get_item();
static bool _blockSetItem;
SPDesktop *desktop;
Inkscape::XML::Node *knotholder_listener_attached_for;
+ Geom::Affine _edit_transform;
};
} // namespace UI
diff --git a/src/ui/tools/node-tool.cpp b/src/ui/tools/node-tool.cpp
index d508a16f2..e7825e302 100644
--- a/src/ui/tools/node-tool.cpp
+++ b/src/ui/tools/node-tool.cpp
@@ -358,6 +358,7 @@ void NodeTool::set(const Inkscape::Preferences::Entry& value) {
}
/** Recursively collect ShapeRecords */
+static
void gather_items(NodeTool *nt, SPItem *base, SPObject *obj, Inkscape::UI::ShapeRole role,
std::set<Inkscape::UI::ShapeRecord> &s)
{
@@ -437,7 +438,7 @@ void NodeTool::selection_changed(Inkscape::Selection *sel) {
if ((SP_IS_SHAPE(r.item) || SP_IS_TEXT(r.item) || SP_IS_GROUP(r.item) || SP_IS_OBJECTGROUP(r.item)) &&
this->_shape_editors.find(r.item) == this->_shape_editors.end())
{
- ShapeEditor *si = new ShapeEditor(this->desktop);
+ ShapeEditor *si = new ShapeEditor(this->desktop, r.edit_transform);
si->set_item(r.item);
this->_shape_editors.insert(const_cast<SPItem*&>(r.item), si);
}