diff options
| author | Denis Declara <declara91@gmail.com> | 2012-04-15 12:29:45 +0000 |
|---|---|---|
| committer | Denis Declara <declara91@gmail.com> | 2012-04-15 12:29:45 +0000 |
| commit | 6b5ff661a46ea1779c86f6947006c5ed32926117 (patch) | |
| tree | a5b170f0830854e99ad065055ee2a3996933e614 /src/live_effects/parameter/powerstrokepointarray.cpp | |
| parent | Improved User interface. (diff) | |
| parent | i18n. Fix for Bug #980518 (Please use c-format). (diff) | |
| download | inkscape-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.cpp | 43 |
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 |
