diff options
| author | Jabier Arraiza <jabier.arraiza@marker.es> | 2018-01-05 19:59:11 +0000 |
|---|---|---|
| committer | Jabier Arraiza <jabier.arraiza@marker.es> | 2018-01-05 19:59:11 +0000 |
| commit | cedcdf0c6f8d5ac4a28fa74daaada99a0842358e (patch) | |
| tree | 1c258706e15f77aceb02eb93daafe941a16f6026 | |
| parent | Do not parse visio files, use filename (diff) | |
| download | inkscape-cedcdf0c6f8d5ac4a28fa74daaada99a0842358e.tar.gz inkscape-cedcdf0c6f8d5ac4a28fa74daaada99a0842358e.zip | |
Add perimetral only lattice 2 optionaly and allow hide knots on point parameter
| -rw-r--r-- | src/live_effects/lpe-lattice2.cpp | 160 | ||||
| -rw-r--r-- | src/live_effects/lpe-lattice2.h | 13 | ||||
| -rw-r--r-- | src/live_effects/parameter/point.cpp | 36 | ||||
| -rw-r--r-- | src/live_effects/parameter/point.h | 3 |
4 files changed, 145 insertions, 67 deletions
diff --git a/src/live_effects/lpe-lattice2.cpp b/src/live_effects/lpe-lattice2.cpp index e8642d4e7..3eeb6e746 100644 --- a/src/live_effects/lpe-lattice2.cpp +++ b/src/live_effects/lpe-lattice2.cpp @@ -35,6 +35,7 @@ LPELattice2::LPELattice2(LivePathEffectObject *lpeobject) : Effect(lpeobject), horizontal_mirror(_("Mirror movements in horizontal"), _("Mirror movements in horizontal"), "horizontal_mirror", &wr, this, false), vertical_mirror(_("Mirror movements in vertical"), _("Mirror movements in vertical"), "vertical_mirror", &wr, this, false), + perimetral(_("Use only perimeter"), _("Use only perimeter"), "perimetral", &wr, this, false), live_update(_("Update while moving knots (maybe slow)"), _("Update while moving knots (maybe slow)"), "live_update", &wr, this, true), grid_point_0(_("Control 0:"), _("Control 0 - <b>Ctrl+Alt+Click</b>: reset, <b>Ctrl</b>: move along axes"), "gridpoint0", &wr, this), grid_point_1(_("Control 1:"), _("Control 1 - <b>Ctrl+Alt+Click</b>: reset, <b>Ctrl</b>: move along axes"), "gridpoint1", &wr, this), @@ -66,6 +67,7 @@ LPELattice2::LPELattice2(LivePathEffectObject *lpeobject) : // register all your parameters here, so Inkscape knows which parameters this effect has: registerParameter(&horizontal_mirror); registerParameter(&vertical_mirror); + registerParameter(&perimetral); registerParameter(&live_update); registerParameter(&grid_point_0); registerParameter(&grid_point_1); @@ -240,7 +242,11 @@ LPELattice2::newWidget() } Glib::ustring * tip = param->param_getTooltip(); if (widg) { - if (param->param_key == "horizontal_mirror" || param->param_key == "vertical_mirror" || param->param_key == "live_update") { + if (param->param_key == "horizontal_mirror" || + param->param_key == "vertical_mirror" || + param->param_key == "live_update" || + param->param_key == "perimetral") + { vbox->pack_start(*widg, true, true, 2); } else { vbox_expander->pack_start(*widg, true, true, 2); @@ -317,6 +323,7 @@ LPELattice2::horizontal(PointParam ¶m_one, PointParam ¶m_two, Geom::Line param_two.param_setValue(B, live_update); } + void LPELattice2::doBeforeEffect (SPLPEItem const* lpeitem) { @@ -348,6 +355,36 @@ LPELattice2::doBeforeEffect (SPLPEItem const* lpeitem) horizontal(grid_point_17, grid_point_19,horiz); horizontal(grid_point_20x21, grid_point_22x23,horiz); } + if (perimetral) { + grid_point_16.param_hide_knot(true); + grid_point_20x21.param_hide_knot(true); + grid_point_17.param_hide_knot(true); + grid_point_28x30.param_hide_knot(true); + grid_point_32x33x34x35.param_hide_knot(true); + grid_point_29x31.param_hide_knot(true); + grid_point_18.param_hide_knot(true); + grid_point_22x23.param_hide_knot(true); + grid_point_19.param_hide_knot(true); + grid_point_16.param_set_default(); + grid_point_20x21.param_set_default(); + grid_point_17.param_set_default(); + grid_point_28x30.param_set_default(); + grid_point_32x33x34x35.param_set_default(); + grid_point_29x31.param_set_default(); + grid_point_18.param_set_default(); + grid_point_22x23.param_set_default(); + grid_point_19.param_set_default(); + } else { + grid_point_16.param_hide_knot(false); + grid_point_20x21.param_hide_knot(false); + grid_point_17.param_hide_knot(false); + grid_point_28x30.param_hide_knot(false); + grid_point_32x33x34x35.param_hide_knot(false); + grid_point_29x31.param_hide_knot(false); + grid_point_18.param_hide_knot(false); + grid_point_22x23.param_hide_knot(false); + grid_point_19.param_hide_knot(false); + } } void @@ -537,55 +574,78 @@ LPELattice2::addCanvasIndicators(SPLPEItem const */*lpeitem*/, std::vector<Geom: hp_vec.clear(); SPCurve *c = new SPCurve(); - calculateCurve(grid_point_0,grid_point_4, c,true, true); - calculateCurve(grid_point_4,grid_point_8x9, c,true, false); - calculateCurve(grid_point_8x9,grid_point_5, c,true, false); - calculateCurve(grid_point_5,grid_point_1, c,true, false); - - calculateCurve(grid_point_12,grid_point_16, c,true, true); - calculateCurve(grid_point_16,grid_point_20x21, c,true, false); - calculateCurve(grid_point_20x21,grid_point_17, c,true, false); - calculateCurve(grid_point_17,grid_point_13, c,true, false); - - calculateCurve(grid_point_24x26,grid_point_28x30, c,true, true); - calculateCurve(grid_point_28x30,grid_point_32x33x34x35, c,true, false); - calculateCurve(grid_point_32x33x34x35,grid_point_29x31, c,true, false); - calculateCurve(grid_point_29x31,grid_point_25x27, c,true, false); - - calculateCurve(grid_point_14,grid_point_18, c,true, true); - calculateCurve(grid_point_18,grid_point_22x23, c,true, false); - calculateCurve(grid_point_22x23,grid_point_19, c,true, false); - calculateCurve(grid_point_19,grid_point_15, c,true, false); - - calculateCurve(grid_point_2,grid_point_6, c,true, true); - calculateCurve(grid_point_6,grid_point_10x11, c,true, false); - calculateCurve(grid_point_10x11,grid_point_7, c,true, false); - calculateCurve(grid_point_7,grid_point_3, c,true, false); - - calculateCurve(grid_point_0,grid_point_12, c,false, true); - calculateCurve(grid_point_12,grid_point_24x26, c,false, false); - calculateCurve(grid_point_24x26,grid_point_14, c,false, false); - calculateCurve(grid_point_14,grid_point_2, c,false, false); - - calculateCurve(grid_point_4,grid_point_16, c,false, true); - calculateCurve(grid_point_16,grid_point_28x30, c,false, false); - calculateCurve(grid_point_28x30,grid_point_18, c,false, false); - calculateCurve(grid_point_18,grid_point_6, c,false, false); - - calculateCurve(grid_point_8x9,grid_point_20x21, c,false, true); - calculateCurve(grid_point_20x21,grid_point_32x33x34x35, c,false, false); - calculateCurve(grid_point_32x33x34x35,grid_point_22x23, c,false, false); - calculateCurve(grid_point_22x23,grid_point_10x11, c,false, false); - - calculateCurve(grid_point_5,grid_point_17, c, false, true); - calculateCurve(grid_point_17,grid_point_29x31, c,false, false); - calculateCurve(grid_point_29x31,grid_point_19, c,false, false); - calculateCurve(grid_point_19,grid_point_7, c,false, false); - - calculateCurve(grid_point_1,grid_point_13, c, false, true); - calculateCurve(grid_point_13,grid_point_25x27, c,false, false); - calculateCurve(grid_point_25x27,grid_point_15, c,false, false); - calculateCurve(grid_point_15,grid_point_3, c, false, false); + if (perimetral) { + calculateCurve(grid_point_0,grid_point_4, c,true, true); + calculateCurve(grid_point_4,grid_point_8x9, c,true, false); + calculateCurve(grid_point_8x9,grid_point_5, c,true, false); + calculateCurve(grid_point_5,grid_point_1, c,true, false); + + calculateCurve(grid_point_1,grid_point_13, c, false, true); + calculateCurve(grid_point_13,grid_point_25x27, c,false, false); + calculateCurve(grid_point_25x27,grid_point_15, c,false, false); + calculateCurve(grid_point_15,grid_point_3, c, false, false); + + calculateCurve(grid_point_2,grid_point_6, c,true, true); + calculateCurve(grid_point_6,grid_point_10x11, c,true, false); + calculateCurve(grid_point_10x11,grid_point_7, c,true, false); + calculateCurve(grid_point_7,grid_point_3, c,true, false); + + calculateCurve(grid_point_0,grid_point_12, c,false, true); + calculateCurve(grid_point_12,grid_point_24x26, c,false, false); + calculateCurve(grid_point_24x26,grid_point_14, c,false, false); + calculateCurve(grid_point_14,grid_point_2, c,false, false); + + } else { + calculateCurve(grid_point_0,grid_point_4, c,true, true); + calculateCurve(grid_point_4,grid_point_8x9, c,true, false); + calculateCurve(grid_point_8x9,grid_point_5, c,true, false); + calculateCurve(grid_point_5,grid_point_1, c,true, false); + + calculateCurve(grid_point_12,grid_point_16, c,true, true); + calculateCurve(grid_point_16,grid_point_20x21, c,true, false); + calculateCurve(grid_point_20x21,grid_point_17, c,true, false); + calculateCurve(grid_point_17,grid_point_13, c,true, false); + + calculateCurve(grid_point_24x26,grid_point_28x30, c,true, true); + calculateCurve(grid_point_28x30,grid_point_32x33x34x35, c,true, false); + calculateCurve(grid_point_32x33x34x35,grid_point_29x31, c,true, false); + calculateCurve(grid_point_29x31,grid_point_25x27, c,true, false); + + calculateCurve(grid_point_14,grid_point_18, c,true, true); + calculateCurve(grid_point_18,grid_point_22x23, c,true, false); + calculateCurve(grid_point_22x23,grid_point_19, c,true, false); + calculateCurve(grid_point_19,grid_point_15, c,true, false); + + calculateCurve(grid_point_2,grid_point_6, c,true, true); + calculateCurve(grid_point_6,grid_point_10x11, c,true, false); + calculateCurve(grid_point_10x11,grid_point_7, c,true, false); + calculateCurve(grid_point_7,grid_point_3, c,true, false); + + calculateCurve(grid_point_0,grid_point_12, c,false, true); + calculateCurve(grid_point_12,grid_point_24x26, c,false, false); + calculateCurve(grid_point_24x26,grid_point_14, c,false, false); + calculateCurve(grid_point_14,grid_point_2, c,false, false); + + calculateCurve(grid_point_4,grid_point_16, c,false, true); + calculateCurve(grid_point_16,grid_point_28x30, c,false, false); + calculateCurve(grid_point_28x30,grid_point_18, c,false, false); + calculateCurve(grid_point_18,grid_point_6, c,false, false); + + calculateCurve(grid_point_8x9,grid_point_20x21, c,false, true); + calculateCurve(grid_point_20x21,grid_point_32x33x34x35, c,false, false); + calculateCurve(grid_point_32x33x34x35,grid_point_22x23, c,false, false); + calculateCurve(grid_point_22x23,grid_point_10x11, c,false, false); + + calculateCurve(grid_point_5,grid_point_17, c, false, true); + calculateCurve(grid_point_17,grid_point_29x31, c,false, false); + calculateCurve(grid_point_29x31,grid_point_19, c,false, false); + calculateCurve(grid_point_19,grid_point_7, c,false, false); + + calculateCurve(grid_point_1,grid_point_13, c, false, true); + calculateCurve(grid_point_13,grid_point_25x27, c,false, false); + calculateCurve(grid_point_25x27,grid_point_15, c,false, false); + calculateCurve(grid_point_15,grid_point_3, c, false, false); + } hp_vec.push_back(c->get_pathvector()); } diff --git a/src/live_effects/lpe-lattice2.h b/src/live_effects/lpe-lattice2.h index 95c5285fb..899c9e009 100644 --- a/src/live_effects/lpe-lattice2.h +++ b/src/live_effects/lpe-lattice2.h @@ -45,17 +45,17 @@ public: virtual Gtk::Widget * newWidget(); - virtual void calculateCurve(Geom::Point a,Geom::Point b, SPCurve *c, bool horizontal, bool move); + void calculateCurve(Geom::Point a,Geom::Point b, SPCurve *c, bool horizontal, bool move); - virtual void vertical(PointParam ¶mA,PointParam ¶mB, Geom::Line vert); + void vertical(PointParam ¶mA,PointParam ¶mB, Geom::Line vert); - virtual void horizontal(PointParam ¶mA,PointParam ¶mB,Geom::Line horiz); + void horizontal(PointParam ¶mA,PointParam ¶mB,Geom::Line horiz); - virtual void setDefaults(); + void setDefaults(); - virtual void onExpanderChanged(); + void onExpanderChanged(); - virtual void resetGrid(); + void resetGrid(); protected: void addCanvasIndicators(SPLPEItem const */*lpeitem*/, std::vector<Geom::PathVector> &hp_vec); @@ -63,6 +63,7 @@ private: BoolParam horizontal_mirror; BoolParam vertical_mirror; + BoolParam perimetral; BoolParam live_update; PointParam grid_point_0; PointParam grid_point_1; diff --git a/src/live_effects/parameter/point.cpp b/src/live_effects/parameter/point.cpp index ff5f59ce2..9b4723da3 100644 --- a/src/live_effects/parameter/point.cpp +++ b/src/live_effects/parameter/point.cpp @@ -25,7 +25,7 @@ PointParam::PointParam( const Glib::ustring& label, const Glib::ustring& tip, : Parameter(label, tip, key, wr, effect), defvalue(default_value), liveupdate(live_update), - knoth(NULL) + _knot_entity(NULL) { knot_shape = SP_KNOT_SHAPE_DIAMOND; knot_mode = SP_KNOT_MODE_XOR; @@ -75,6 +75,23 @@ PointParam::param_update_default(const gchar * default_point) } } +void +PointParam::param_hide_knot(bool hide) { + if (_knot_entity) { + bool update = false; + if (hide && _knot_entity->knot->flags & SP_KNOT_VISIBLE) { + update = true; + _knot_entity->knot->hide(); + } else if(!hide && !(_knot_entity->knot->flags & SP_KNOT_VISIBLE)) { + update = true; + _knot_entity->knot->show(); + } + if (update) { + _knot_entity->update_knot(); + } + } +} + void PointParam::param_setValue(Geom::Point newpoint, bool write) { @@ -86,8 +103,8 @@ PointParam::param_setValue(Geom::Point newpoint, bool write) param_write_to_repr(str); g_free(str); } - if(knoth && liveupdate){ - knoth->update_knots(); + if(_knot_entity && liveupdate){ + _knot_entity->update_knot(); } } @@ -170,7 +187,7 @@ PointParam::set_oncanvas_looks(SPKnotShapeType shape, SPKnotModeType mode, guint class PointParamKnotHolderEntity : public KnotHolderEntity { public: PointParamKnotHolderEntity(PointParam *p) { this->pparam = p; } - virtual ~PointParamKnotHolderEntity() { this->pparam->knoth = NULL;} + virtual ~PointParamKnotHolderEntity() { this->pparam->_knot_entity = NULL;} virtual void knot_set(Geom::Point const &p, Geom::Point const &origin, guint state); virtual Geom::Point knot_get() const; @@ -198,7 +215,7 @@ PointParamKnotHolderEntity::knot_set(Geom::Point const &p, Geom::Point const &or pparam->param_setValue(s); SPLPEItem * splpeitem = dynamic_cast<SPLPEItem *>(item); if(splpeitem && this->pparam->liveupdate){ - sp_lpe_item_update_patheffect(splpeitem, false, false); + sp_lpe_item_update_patheffect(splpeitem, true, true); } } @@ -216,7 +233,7 @@ PointParamKnotHolderEntity::knot_click(guint state) this->pparam->param_set_default(); SPLPEItem * splpeitem = dynamic_cast<SPLPEItem *>(item); if(splpeitem){ - sp_lpe_item_update_patheffect(splpeitem, false, false); + sp_lpe_item_update_patheffect(splpeitem, true, true); } } } @@ -225,11 +242,10 @@ PointParamKnotHolderEntity::knot_click(guint state) void PointParam::addKnotHolderEntities(KnotHolder *knotholder, SPItem *item) { - knoth = knotholder; - PointParamKnotHolderEntity *e = new PointParamKnotHolderEntity(this); + _knot_entity = new PointParamKnotHolderEntity(this); // TODO: can we ditch handleTip() etc. because we have access to handle_tip etc. itself??? - e->create(NULL, item, knotholder, Inkscape::CTRL_TYPE_UNKNOWN, handleTip(), knot_shape, knot_mode, knot_color); - knotholder->add(e); + _knot_entity->create(NULL, item, knotholder, Inkscape::CTRL_TYPE_UNKNOWN, handleTip(), knot_shape, knot_mode, knot_color); + knotholder->add(_knot_entity); } } /* namespace LivePathEffect */ diff --git a/src/live_effects/parameter/point.h b/src/live_effects/parameter/point.h index 6c5f8df65..ea0110100 100644 --- a/src/live_effects/parameter/point.h +++ b/src/live_effects/parameter/point.h @@ -42,6 +42,7 @@ public: inline const gchar *handleTip() const { return handle_tip ? handle_tip : param_tooltip.c_str(); } void param_setValue(Geom::Point newpoint, bool write = false); void param_set_default(); + void param_hide_knot(bool hide); Geom::Point param_get_default() const; void param_set_liveupdate(bool live_update); void param_update_default(Geom::Point default_point); @@ -60,7 +61,7 @@ private: bool on_button_release(GdkEventButton* button_event); Geom::Point defvalue; bool liveupdate; - KnotHolder *knoth; + KnotHolderEntity * _knot_entity; SPKnotShapeType knot_shape; SPKnotModeType knot_mode; guint32 knot_color; |
