summaryrefslogtreecommitdiffstats
path: root/src/live_effects/parameter/powerstrokepointarray.cpp
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/powerstrokepointarray.cpp
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/powerstrokepointarray.cpp')
-rw-r--r--src/live_effects/parameter/powerstrokepointarray.cpp43
1 files changed, 36 insertions, 7 deletions
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