summaryrefslogtreecommitdiffstats
path: root/src/live_effects/parameter
diff options
context:
space:
mode:
authorDenis Declara <declara91@gmail.com>2012-04-15 12:29:45 +0000
committerDenis Declara <declara91@gmail.com>2012-04-15 12:29:45 +0000
commit6b5ff661a46ea1779c86f6947006c5ed32926117 (patch)
treea5b170f0830854e99ad065055ee2a3996933e614 /src/live_effects/parameter
parentImproved User interface. (diff)
parenti18n. Fix for Bug #980518 (Please use c-format). (diff)
downloadinkscape-6b5ff661a46ea1779c86f6947006c5ed32926117.tar.gz
inkscape-6b5ff661a46ea1779c86f6947006c5ed32926117.zip
Trunk merge
(bzr r11073.1.15)
Diffstat (limited to 'src/live_effects/parameter')
-rw-r--r--src/live_effects/parameter/originalpath.cpp8
-rw-r--r--src/live_effects/parameter/originalpath.h2
-rw-r--r--src/live_effects/parameter/path.cpp10
-rw-r--r--src/live_effects/parameter/path.h3
-rw-r--r--src/live_effects/parameter/point.cpp2
-rw-r--r--src/live_effects/parameter/powerstrokepointarray.cpp43
-rw-r--r--src/live_effects/parameter/vector.cpp11
-rw-r--r--src/live_effects/parameter/vector.h1
8 files changed, 70 insertions, 10 deletions
diff --git a/src/live_effects/parameter/originalpath.cpp b/src/live_effects/parameter/originalpath.cpp
index e5c16943c..71ab006d6 100644
--- a/src/live_effects/parameter/originalpath.cpp
+++ b/src/live_effects/parameter/originalpath.cpp
@@ -104,6 +104,14 @@ OriginalPathParam::linked_modified_callback(SPObject *linked_obj, guint /*flags*
}
void
+OriginalPathParam::linked_transformed_callback(Geom::Affine const * /*rel_transf*/, SPItem * /*moved_item*/)
+{
+/** \todo find good way to compensate for referenced path transform, like done for normal clones.
+ * See sp-use.cpp: sp_use_move_compensate */
+}
+
+
+void
OriginalPathParam::on_select_original_button_click()
{
SPDesktop *desktop = SP_ACTIVE_DESKTOP;
diff --git a/src/live_effects/parameter/originalpath.h b/src/live_effects/parameter/originalpath.h
index f05f17d9a..7dd17edb0 100644
--- a/src/live_effects/parameter/originalpath.h
+++ b/src/live_effects/parameter/originalpath.h
@@ -35,6 +35,8 @@ public:
protected:
virtual void linked_modified_callback(SPObject *linked_obj, guint flags);
+ virtual void linked_transformed_callback(Geom::Affine const *rel_transf, SPItem *moved_item);
+
void on_select_original_button_click();
private:
diff --git a/src/live_effects/parameter/path.cpp b/src/live_effects/parameter/path.cpp
index 186cfff9a..69c337a7c 100644
--- a/src/live_effects/parameter/path.cpp
+++ b/src/live_effects/parameter/path.cpp
@@ -326,6 +326,9 @@ PathParam::start_listening(SPObject * to)
}
linked_delete_connection = to->connectDelete(sigc::mem_fun(*this, &PathParam::linked_delete));
linked_modified_connection = to->connectModified(sigc::mem_fun(*this, &PathParam::linked_modified));
+ if (SP_IS_ITEM(to)) {
+ linked_transformed_connection = SP_ITEM(to)->connectTransformed(sigc::mem_fun(*this, &PathParam::linked_transformed));
+ }
linked_modified(to, SP_OBJECT_MODIFIED_FLAG); // simulate linked_modified signal, so that path data is updated
}
@@ -334,6 +337,7 @@ PathParam::quit_listening(void)
{
linked_modified_connection.disconnect();
linked_delete_connection.disconnect();
+ linked_transformed_connection.disconnect();
}
void
@@ -368,6 +372,11 @@ void PathParam::linked_modified(SPObject *linked_obj, guint flags)
linked_modified_callback(linked_obj, flags);
}
+void PathParam::linked_transformed(Geom::Affine const *rel_transf, SPItem *moved_item)
+{
+ linked_transformed_callback(rel_transf, moved_item);
+}
+
void
PathParam::linked_modified_callback(SPObject *linked_obj, guint /*flags*/)
{
@@ -392,6 +401,7 @@ PathParam::linked_modified_callback(SPObject *linked_obj, guint /*flags*/)
SP_OBJECT(param_effect->getLPEObj())->requestModified(SP_OBJECT_MODIFIED_FLAG);
}
+
/* CALLBACK FUNCTIONS FOR THE BUTTONS */
void
PathParam::on_edit_button_click()
diff --git a/src/live_effects/parameter/path.h b/src/live_effects/parameter/path.h
index 7b51dc48a..a4f46f11f 100644
--- a/src/live_effects/parameter/path.h
+++ b/src/live_effects/parameter/path.h
@@ -70,13 +70,16 @@ protected:
sigc::connection ref_changed_connection;
sigc::connection linked_delete_connection;
sigc::connection linked_modified_connection;
+ sigc::connection linked_transformed_connection;
void ref_changed(SPObject *old_ref, SPObject *new_ref);
void remove_link();
void start_listening(SPObject * to);
void quit_listening(void);
void linked_delete(SPObject *deleted);
void linked_modified(SPObject *linked_obj, guint flags);
+ void linked_transformed(Geom::Affine const *rel_transf, SPItem *moved_item);
virtual void linked_modified_callback(SPObject *linked_obj, guint flags);
+ virtual void linked_transformed_callback(Geom::Affine const * /*rel_transf*/, SPItem * /*moved_item*/) {};
void on_edit_button_click();
void on_copy_button_click();
diff --git a/src/live_effects/parameter/point.cpp b/src/live_effects/parameter/point.cpp
index e3731fdcf..eb2543ac7 100644
--- a/src/live_effects/parameter/point.cpp
+++ b/src/live_effects/parameter/point.cpp
@@ -127,7 +127,7 @@ PointParam::set_oncanvas_looks(SPKnotShapeType shape, SPKnotModeType mode, guint
knot_color = color;
}
-class PointParamKnotHolderEntity : public LPEKnotHolderEntity {
+class PointParamKnotHolderEntity : public KnotHolderEntity {
public:
PointParamKnotHolderEntity(PointParam *p) { this->pparam = p; }
virtual ~PointParamKnotHolderEntity() {}
diff --git a/src/live_effects/parameter/powerstrokepointarray.cpp b/src/live_effects/parameter/powerstrokepointarray.cpp
index 5bf5c51c7..06048cb32 100644
--- a/src/live_effects/parameter/powerstrokepointarray.cpp
+++ b/src/live_effects/parameter/powerstrokepointarray.cpp
@@ -19,6 +19,7 @@
// needed for on-canvas editting:
#include "desktop.h"
+#include "live_effects/lpeobject.h"
namespace Inkscape {
@@ -31,7 +32,7 @@ PowerStrokePointArrayParam::PowerStrokePointArrayParam( const Glib::ustring& lab
{
knot_shape = SP_KNOT_SHAPE_DIAMOND;
knot_mode = SP_KNOT_MODE_XOR;
- knot_color = 0xff00ff00;
+ knot_color = 0xff88ff00;
}
PowerStrokePointArrayParam::~PowerStrokePointArrayParam()
@@ -117,7 +118,7 @@ PowerStrokePointArrayParam::set_oncanvas_looks(SPKnotShapeType shape, SPKnotMode
knot_color = color;
}
-class PowerStrokePointArrayParamKnotHolderEntity : public LPEKnotHolderEntity {
+class PowerStrokePointArrayParamKnotHolderEntity : public KnotHolderEntity {
public:
PowerStrokePointArrayParamKnotHolderEntity(PowerStrokePointArrayParam *p, unsigned int index);
virtual ~PowerStrokePointArrayParamKnotHolderEntity() {}
@@ -183,22 +184,50 @@ PowerStrokePointArrayParamKnotHolderEntity::knot_get()
void
PowerStrokePointArrayParamKnotHolderEntity::knot_click(guint state)
{
-//g_print ("This is the %d handle associated to parameter '%s'\n", _index, _pparam->param_key.c_str());
-
if (state & GDK_CONTROL_MASK) {
if (state & GDK_MOD1_MASK) {
// delete the clicked knot
std::vector<Geom::Point> & vec = _pparam->_vector;
vec.erase(vec.begin() + _index);
_pparam->param_set_and_write_new_value(vec);
+
+ // remove knot from knotholder
+ parent_holder->entity.remove(this);
+ // shift knots down one index
+ for(std::list<KnotHolderEntity *>::iterator ent = parent_holder->entity.begin(); ent != parent_holder->entity.end(); ++ent) {
+ PowerStrokePointArrayParamKnotHolderEntity *pspa_ent = dynamic_cast<PowerStrokePointArrayParamKnotHolderEntity *>(*ent);
+ if ( pspa_ent && pspa_ent->_pparam == this->_pparam ) { // check if the knotentity belongs to this powerstrokepointarray parameter
+ if (pspa_ent->_index > this->_index) {
+ --pspa_ent->_index;
+ }
+ }
+ };
+ // delete self and return
+ delete this;
+ return;
} else {
- // add a knot
+ // add a knot to XML
std::vector<Geom::Point> & vec = _pparam->_vector;
- vec.insert(vec.begin() + _index, 1, vec.at(_index));
+ vec.insert(vec.begin() + _index, 1, vec.at(_index)); // this clicked knot is duplicated
_pparam->param_set_and_write_new_value(vec);
+
+ // shift knots up one index
+ for(std::list<KnotHolderEntity *>::iterator ent = parent_holder->entity.begin(); ent != parent_holder->entity.end(); ++ent) {
+ PowerStrokePointArrayParamKnotHolderEntity *pspa_ent = dynamic_cast<PowerStrokePointArrayParamKnotHolderEntity *>(*ent);
+ if ( pspa_ent && pspa_ent->_pparam == this->_pparam ) { // check if the knotentity belongs to this powerstrokepointarray parameter
+ if (pspa_ent->_index > this->_index) {
+ ++pspa_ent->_index;
+ }
+ }
+ };
+ // add knot to knotholder
+ PowerStrokePointArrayParamKnotHolderEntity *e = new PowerStrokePointArrayParamKnotHolderEntity(_pparam, _index+1);
+ e->create( this->desktop, this->item, parent_holder,
+ _("<b>Stroke width control point</b>: drag to alter the stroke width. <b>Ctrl+click</b> adds a control point, <b>Ctrl+Alt+click</b> deletes it."),
+ _pparam->knot_shape, _pparam->knot_mode, _pparam->knot_color);
+ parent_holder->add(e);
}
}
-
}
void
diff --git a/src/live_effects/parameter/vector.cpp b/src/live_effects/parameter/vector.cpp
index e8725c4b2..3e0ac9092 100644
--- a/src/live_effects/parameter/vector.cpp
+++ b/src/live_effects/parameter/vector.cpp
@@ -137,7 +137,14 @@ VectorParam::set_origin_oncanvas_looks(SPKnotShapeType shape, SPKnotModeType mod
ori_knot_color = color;
}
-class VectorParamKnotHolderEntity_Origin : public LPEKnotHolderEntity {
+void
+VectorParam::set_oncanvas_color(guint32 color)
+{
+ vec_knot_color = color;
+ ori_knot_color = color;
+}
+
+class VectorParamKnotHolderEntity_Origin : public KnotHolderEntity {
public:
VectorParamKnotHolderEntity_Origin(VectorParam *p) : param(p) { }
virtual ~VectorParamKnotHolderEntity_Origin() {}
@@ -158,7 +165,7 @@ private:
VectorParam *param;
};
-class VectorParamKnotHolderEntity_Vector : public LPEKnotHolderEntity {
+class VectorParamKnotHolderEntity_Vector : public KnotHolderEntity {
public:
VectorParamKnotHolderEntity_Vector(VectorParam *p) : param(p) { }
virtual ~VectorParamKnotHolderEntity_Vector() {}
diff --git a/src/live_effects/parameter/vector.h b/src/live_effects/parameter/vector.h
index 5d6d1c932..f82affe16 100644
--- a/src/live_effects/parameter/vector.h
+++ b/src/live_effects/parameter/vector.h
@@ -50,6 +50,7 @@ public:
void set_vector_oncanvas_looks(SPKnotShapeType shape, SPKnotModeType mode, guint32 color);
void set_origin_oncanvas_looks(SPKnotShapeType shape, SPKnotModeType mode, guint32 color);
+ void set_oncanvas_color(guint32 color);
virtual bool providesKnotHolderEntities() { return true; }
virtual void addKnotHolderEntities(KnotHolder *knotholder, SPDesktop *desktop, SPItem *item);