From fb8edb4724c724b6ac4d40f0546971d4082a8df7 Mon Sep 17 00:00:00 2001 From: "Johan B. C. Engelen" Date: Sat, 7 Apr 2012 14:33:30 +0200 Subject: powerstrokepointarray : add todo comment. do not derive from LPEKnotHolderEntity. (bzr r11169) --- src/live_effects/parameter/powerstrokepointarray.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'src/live_effects/parameter/powerstrokepointarray.cpp') diff --git a/src/live_effects/parameter/powerstrokepointarray.cpp b/src/live_effects/parameter/powerstrokepointarray.cpp index 5bf5c51c7..9e138a7ae 100644 --- a/src/live_effects/parameter/powerstrokepointarray.cpp +++ b/src/live_effects/parameter/powerstrokepointarray.cpp @@ -117,7 +117,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() {} @@ -184,6 +184,7 @@ void PowerStrokePointArrayParamKnotHolderEntity::knot_click(guint state) { //g_print ("This is the %d handle associated to parameter '%s'\n", _index, _pparam->param_key.c_str()); + bool knotarray_changed = false; if (state & GDK_CONTROL_MASK) { if (state & GDK_MOD1_MASK) { @@ -199,6 +200,10 @@ PowerStrokePointArrayParamKnotHolderEntity::knot_click(guint state) } } + if (knotarray_changed) { + // if knot array has been changed, the on-canvas knots must be reloaded + /// \todo reload knots! + } } void -- cgit v1.2.3 From da6eca5e81424ad6f9e2eca5f8e0573bd6dd156c Mon Sep 17 00:00:00 2001 From: "Johan B. C. Engelen" Date: Sun, 8 Apr 2012 22:15:30 +0200 Subject: powerstroke parameter small fix (bzr r11183) --- src/live_effects/parameter/powerstrokepointarray.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'src/live_effects/parameter/powerstrokepointarray.cpp') diff --git a/src/live_effects/parameter/powerstrokepointarray.cpp b/src/live_effects/parameter/powerstrokepointarray.cpp index 9e138a7ae..1fdf0aee9 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 "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() @@ -192,18 +193,20 @@ PowerStrokePointArrayParamKnotHolderEntity::knot_click(guint state) std::vector & vec = _pparam->_vector; vec.erase(vec.begin() + _index); _pparam->param_set_and_write_new_value(vec); + knotarray_changed = true; } else { // add a knot std::vector & vec = _pparam->_vector; vec.insert(vec.begin() + _index, 1, vec.at(_index)); _pparam->param_set_and_write_new_value(vec); + knotarray_changed = true; } } if (knotarray_changed) { // if knot array has been changed, the on-canvas knots must be reloaded - /// \todo reload knots! - } + /// \todo reload! + } } void -- cgit v1.2.3 From efe0ce44ff6dc6dba7c185d4fc751d85ab693094 Mon Sep 17 00:00:00 2001 From: "Johan B. C. Engelen" Date: Sun, 8 Apr 2012 23:42:00 +0200 Subject: fix inclusion. (bzr r11187) --- src/live_effects/parameter/powerstrokepointarray.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/live_effects/parameter/powerstrokepointarray.cpp') diff --git a/src/live_effects/parameter/powerstrokepointarray.cpp b/src/live_effects/parameter/powerstrokepointarray.cpp index 1fdf0aee9..9d91dff18 100644 --- a/src/live_effects/parameter/powerstrokepointarray.cpp +++ b/src/live_effects/parameter/powerstrokepointarray.cpp @@ -19,7 +19,7 @@ // needed for on-canvas editting: #include "desktop.h" -#include "lpeobject.h" +#include "live_effects/lpeobject.h" namespace Inkscape { -- cgit v1.2.3 From d7c51ea3892dcad46e01642475479ff2379a51ad Mon Sep 17 00:00:00 2001 From: "Johan B. C. Engelen" Date: Tue, 10 Apr 2012 19:27:41 +0200 Subject: powerstroke: remove the need to reload the node tool when adding/deleting control width knots (bzr r11210) --- .../parameter/powerstrokepointarray.cpp | 45 ++++++++++++++++------ 1 file changed, 33 insertions(+), 12 deletions(-) (limited to 'src/live_effects/parameter/powerstrokepointarray.cpp') diff --git a/src/live_effects/parameter/powerstrokepointarray.cpp b/src/live_effects/parameter/powerstrokepointarray.cpp index 9d91dff18..06048cb32 100644 --- a/src/live_effects/parameter/powerstrokepointarray.cpp +++ b/src/live_effects/parameter/powerstrokepointarray.cpp @@ -184,29 +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()); - bool knotarray_changed = false; - if (state & GDK_CONTROL_MASK) { if (state & GDK_MOD1_MASK) { // delete the clicked knot std::vector & vec = _pparam->_vector; vec.erase(vec.begin() + _index); _pparam->param_set_and_write_new_value(vec); - knotarray_changed = true; + + // remove knot from knotholder + parent_holder->entity.remove(this); + // shift knots down one index + for(std::list::iterator ent = parent_holder->entity.begin(); ent != parent_holder->entity.end(); ++ent) { + PowerStrokePointArrayParamKnotHolderEntity *pspa_ent = dynamic_cast(*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 & 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); - knotarray_changed = true; + + // shift knots up one index + for(std::list::iterator ent = parent_holder->entity.begin(); ent != parent_holder->entity.end(); ++ent) { + PowerStrokePointArrayParamKnotHolderEntity *pspa_ent = dynamic_cast(*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, + _("Stroke width control point: drag to alter the stroke width. Ctrl+click adds a control point, Ctrl+Alt+click deletes it."), + _pparam->knot_shape, _pparam->knot_mode, _pparam->knot_color); + parent_holder->add(e); } } - - if (knotarray_changed) { - // if knot array has been changed, the on-canvas knots must be reloaded - /// \todo reload! - } } void -- cgit v1.2.3