From 3a6de49f3e570d7646984a800972da6c1ee2154b Mon Sep 17 00:00:00 2001 From: Jabier Arraiza Cenoz Date: Mon, 2 Mar 2015 01:24:22 +0100 Subject: Added shorcut to move along axes, point reseteable parameter,pointed by Vlada, also fixed some UX styles in lattice2 and perspective envelope, pointed by suv. A question: Can I update point parameter whith pointreseteable parameter features, to have only one point parameter? (bzr r13959) --- src/live_effects/parameter/pointreseteable.cpp | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) (limited to 'src/live_effects/parameter') diff --git a/src/live_effects/parameter/pointreseteable.cpp b/src/live_effects/parameter/pointreseteable.cpp index c0f8858b8..58de350b6 100644 --- a/src/live_effects/parameter/pointreseteable.cpp +++ b/src/live_effects/parameter/pointreseteable.cpp @@ -161,9 +161,20 @@ private: }; void -PointReseteableParamKnotHolderEntity::knot_set(Geom::Point const &p, Geom::Point const &/*origin*/, guint state) +PointReseteableParamKnotHolderEntity::knot_set(Geom::Point const &p, Geom::Point const &origin, guint state) { - Geom::Point const s = snap_knot_position(p, state); + Geom::Point s = snap_knot_position(p, state); + if (state & GDK_CONTROL_MASK) { + Geom::Point A(origin[Geom::X],p[Geom::Y]); + Geom::Point B(p[Geom::X],origin[Geom::Y]); + double distanceA = Geom::distance(A,p); + double distanceB = Geom::distance(B,p); + if(distanceA > distanceB){ + s = B; + } else { + s = A; + } + } pparam->param_setValue(s); sp_lpe_item_update_patheffect(SP_LPE_ITEM(item), false, false); } -- cgit v1.2.3 From ca3e7a946f799965864880459ef248417ac9dee6 Mon Sep 17 00:00:00 2001 From: Jabier Arraiza Cenoz Date: Mon, 2 Mar 2015 02:29:50 +0100 Subject: Merged pointreseteable parameter to point parameter (bzr r13961) --- src/live_effects/parameter/Makefile_insert | 2 - src/live_effects/parameter/point.cpp | 46 ++++- src/live_effects/parameter/point.h | 4 + src/live_effects/parameter/pointreseteable.cpp | 221 ------------------------- src/live_effects/parameter/pointreseteable.h | 74 --------- 5 files changed, 45 insertions(+), 302 deletions(-) delete mode 100644 src/live_effects/parameter/pointreseteable.cpp delete mode 100644 src/live_effects/parameter/pointreseteable.h (limited to 'src/live_effects/parameter') diff --git a/src/live_effects/parameter/Makefile_insert b/src/live_effects/parameter/Makefile_insert index f990f41c7..bd1c5b600 100644 --- a/src/live_effects/parameter/Makefile_insert +++ b/src/live_effects/parameter/Makefile_insert @@ -11,8 +11,6 @@ ink_common_sources += \ live_effects/parameter/random.h \ live_effects/parameter/point.cpp \ live_effects/parameter/point.h \ - live_effects/parameter/pointreseteable.cpp \ - live_effects/parameter/pointreseteable.h \ live_effects/parameter/enum.h \ live_effects/parameter/path-reference.cpp \ live_effects/parameter/path-reference.h \ diff --git a/src/live_effects/parameter/point.cpp b/src/live_effects/parameter/point.cpp index 302818e55..1d48bda8d 100644 --- a/src/live_effects/parameter/point.cpp +++ b/src/live_effects/parameter/point.cpp @@ -15,6 +15,8 @@ #include "verbs.h" #include "knotholder.h" #include +#include "ui/tools-switch.h" +#include "ui/tools/node-tool.h" // needed for on-canvas editting: #include "desktop.h" @@ -46,6 +48,18 @@ PointParam::param_set_default() param_setValue(defvalue); } +void +PointParam::param_set_and_write_default() +{ + param_set_and_write_new_value(defvalue); +} + +void +PointParam::param_update_default(Geom::Point newpoint) +{ + this->defvalue = newpoint; +} + bool PointParam::param_readSVGValue(const gchar * strvalue) { @@ -99,6 +113,13 @@ void PointParam::param_setValue(Geom::Point newpoint) { *dynamic_cast( this ) = newpoint; + if(SP_ACTIVE_DESKTOP){ + SPDesktop* desktop = SP_ACTIVE_DESKTOP; + if (tools_isactive( desktop, TOOLS_NODES)) { + Inkscape::UI::Tools::NodeTool *nt = static_cast( desktop->event_context); + nt->update_helperpath(); + } + } } void @@ -140,9 +161,20 @@ private: }; void -PointParamKnotHolderEntity::knot_set(Geom::Point const &p, Geom::Point const &/*origin*/, guint state) +PointParamKnotHolderEntity::knot_set(Geom::Point const &p, Geom::Point const &origin, guint state) { - Geom::Point const s = snap_knot_position(p, state); + Geom::Point s = snap_knot_position(p, state); + if (state & GDK_CONTROL_MASK) { + Geom::Point A(origin[Geom::X],p[Geom::Y]); + Geom::Point B(p[Geom::X],origin[Geom::Y]); + double distanceA = Geom::distance(A,p); + double distanceB = Geom::distance(B,p); + if(distanceA > distanceB){ + s = B; + } else { + s = A; + } + } pparam->param_setValue(s); sp_lpe_item_update_patheffect(SP_LPE_ITEM(item), false, false); } @@ -154,9 +186,14 @@ PointParamKnotHolderEntity::knot_get() const } void -PointParamKnotHolderEntity::knot_click(guint /*state*/) +PointParamKnotHolderEntity::knot_click(guint state) { - g_print ("This is the handle associated to parameter '%s'\n", pparam->param_key.c_str()); + if (state & GDK_CONTROL_MASK) { + if (state & GDK_MOD1_MASK) { + this->pparam->param_set_default(); + sp_lpe_item_update_patheffect(SP_LPE_ITEM(item), false, false); + } + } } void @@ -166,7 +203,6 @@ PointParam::addKnotHolderEntities(KnotHolder *knotholder, SPDesktop *desktop, SP // TODO: can we ditch handleTip() etc. because we have access to handle_tip etc. itself??? e->create(desktop, item, knotholder, Inkscape::CTRL_TYPE_UNKNOWN, handleTip(), knot_shape, knot_mode, knot_color); knotholder->add(e); - } } /* namespace LivePathEffect */ diff --git a/src/live_effects/parameter/point.h b/src/live_effects/parameter/point.h index 319835bb3..95854ea52 100644 --- a/src/live_effects/parameter/point.h +++ b/src/live_effects/parameter/point.h @@ -20,6 +20,7 @@ namespace Inkscape { namespace LivePathEffect { +class PointParamKnotHolderEntity; class PointParam : public Geom::Point, public Parameter { public: @@ -40,6 +41,8 @@ public: void param_setValue(Geom::Point newpoint); void param_set_default(); + void param_set_and_write_default(); + void param_update_default(Geom::Point newpoint); void param_set_and_write_new_value(Geom::Point newpoint); @@ -50,6 +53,7 @@ public: virtual bool providesKnotHolderEntities() const { return true; } virtual void addKnotHolderEntities(KnotHolder *knotholder, SPDesktop *desktop, SPItem *item); + friend class PointParamKnotHolderEntity; private: PointParam(const PointParam&); PointParam& operator=(const PointParam&); diff --git a/src/live_effects/parameter/pointreseteable.cpp b/src/live_effects/parameter/pointreseteable.cpp deleted file mode 100644 index 58de350b6..000000000 --- a/src/live_effects/parameter/pointreseteable.cpp +++ /dev/null @@ -1,221 +0,0 @@ -/* - * Copyright (C) Johan Engelen 2007 - * - * Released under GNU GPL, read the file 'COPYING' for more information - */ - -#include "ui/widget/registered-widget.h" -#include "live_effects/parameter/pointreseteable.h" -#include "live_effects/effect.h" -#include "svg/svg.h" -#include "svg/stringstream.h" -#include "ui/widget/point.h" -#include "widgets/icon.h" -#include "inkscape.h" -#include "verbs.h" -#include "knotholder.h" -#include -#include "ui/tools-switch.h" -#include "ui/tools/node-tool.h" - -// needed for on-canvas editting: -#include "desktop.h" - -namespace Inkscape { - -namespace LivePathEffect { - -PointReseteableParam::PointReseteableParam( const Glib::ustring& label, const Glib::ustring& tip, - const Glib::ustring& key, Inkscape::UI::Widget::Registry* wr, - Effect* effect, const gchar *htip, Geom::Point default_value) - : Geom::Point(default_value), Parameter(label, tip, key, wr, effect), defvalue(default_value) -{ - knot_shape = SP_KNOT_SHAPE_DIAMOND; - knot_mode = SP_KNOT_MODE_XOR; - knot_color = 0xffffff00; - handle_tip = g_strdup(htip); -} - -PointReseteableParam::~PointReseteableParam() -{ - if (handle_tip) - g_free(handle_tip); -} - -void -PointReseteableParam::param_set_default() -{ - param_setValue(defvalue); -} - -void -PointReseteableParam::param_set_and_write_default() -{ - param_set_and_write_new_value(defvalue); -} - -void -PointReseteableParam::param_update_default(Geom::Point newpoint) -{ - this->defvalue = newpoint; -} - -bool -PointReseteableParam::param_readSVGValue(const gchar * strvalue) -{ - gchar ** strarray = g_strsplit(strvalue, ",", 2); - double newx, newy; - unsigned int success = sp_svg_number_read_d(strarray[0], &newx); - success += sp_svg_number_read_d(strarray[1], &newy); - g_strfreev (strarray); - if (success == 2) { - param_setValue( Geom::Point(newx, newy) ); - return true; - } - return false; -} - -gchar * -PointReseteableParam::param_getSVGValue() const -{ - Inkscape::SVGOStringStream os; - os << *dynamic_cast( this ); - gchar * str = g_strdup(os.str().c_str()); - return str; -} - -Gtk::Widget * -PointReseteableParam::param_newWidget() -{ - Inkscape::UI::Widget::RegisteredTransformedPoint * pointwdg = Gtk::manage( - new Inkscape::UI::Widget::RegisteredTransformedPoint( param_label, - param_tooltip, - param_key, - *param_wr, - param_effect->getRepr(), - param_effect->getSPDoc() ) ); - // TODO: fix to get correct desktop (don't use SP_ACTIVE_DESKTOP) - SPDesktop *desktop = SP_ACTIVE_DESKTOP; - Geom::Affine transf = desktop->doc2dt(); - pointwdg->setTransform(transf); - pointwdg->setValue( *this ); - pointwdg->clearProgrammatically(); - pointwdg->set_undo_parameters(SP_VERB_DIALOG_LIVE_PATH_EFFECT, _("Change point parameter")); - - Gtk::HBox * hbox = Gtk::manage( new Gtk::HBox() ); - static_cast(hbox)->pack_start(*pointwdg, true, true); - static_cast(hbox)->show_all_children(); - - return dynamic_cast (hbox); -} - -void -PointReseteableParam::param_setValue(Geom::Point newpoint) -{ - *dynamic_cast( this ) = newpoint; - if(SP_ACTIVE_DESKTOP){ - SPDesktop* desktop = SP_ACTIVE_DESKTOP; - if (tools_isactive( desktop, TOOLS_NODES)) { - Inkscape::UI::Tools::NodeTool *nt = static_cast( desktop->event_context); - nt->update_helperpath(); - } - } -} - -void -PointReseteableParam::param_set_and_write_new_value (Geom::Point newpoint) -{ - Inkscape::SVGOStringStream os; - os << newpoint; - gchar * str = g_strdup(os.str().c_str()); - param_write_to_repr(str); - g_free(str); -} - -void -PointReseteableParam::param_transform_multiply(Geom::Affine const& postmul, bool /*set*/) -{ - param_set_and_write_new_value( (*this) * postmul ); -} - - -void -PointReseteableParam::set_oncanvas_looks(SPKnotShapeType shape, SPKnotModeType mode, guint32 color) -{ - knot_shape = shape; - knot_mode = mode; - knot_color = color; -} - -class PointReseteableParamKnotHolderEntity : public KnotHolderEntity { -public: - PointReseteableParamKnotHolderEntity(PointReseteableParam *p) { this->pparam = p; } - virtual ~PointReseteableParamKnotHolderEntity() {} - - virtual void knot_set(Geom::Point const &p, Geom::Point const &origin, guint state); - virtual Geom::Point knot_get() const; - virtual void knot_click(guint state); - -private: - PointReseteableParam *pparam; -}; - -void -PointReseteableParamKnotHolderEntity::knot_set(Geom::Point const &p, Geom::Point const &origin, guint state) -{ - Geom::Point s = snap_knot_position(p, state); - if (state & GDK_CONTROL_MASK) { - Geom::Point A(origin[Geom::X],p[Geom::Y]); - Geom::Point B(p[Geom::X],origin[Geom::Y]); - double distanceA = Geom::distance(A,p); - double distanceB = Geom::distance(B,p); - if(distanceA > distanceB){ - s = B; - } else { - s = A; - } - } - pparam->param_setValue(s); - sp_lpe_item_update_patheffect(SP_LPE_ITEM(item), false, false); -} - -Geom::Point -PointReseteableParamKnotHolderEntity::knot_get() const -{ - return *pparam; -} - -void -PointReseteableParamKnotHolderEntity::knot_click(guint state) -{ - if (state & GDK_CONTROL_MASK) { - if (state & GDK_MOD1_MASK) { - this->pparam->param_set_default(); - sp_lpe_item_update_patheffect(SP_LPE_ITEM(item), false, false); - } - } -} - -void -PointReseteableParam::addKnotHolderEntities(KnotHolder *knotholder, SPDesktop *desktop, SPItem *item) -{ - PointReseteableParamKnotHolderEntity *e = new PointReseteableParamKnotHolderEntity(this); - // TODO: can we ditch handleTip() etc. because we have access to handle_tip etc. itself??? - e->create(desktop, item, knotholder, Inkscape::CTRL_TYPE_UNKNOWN, handleTip(), knot_shape, knot_mode, knot_color); - knotholder->add(e); -} - -} /* namespace LivePathEffect */ - -} /* namespace Inkscape */ - -/* - Local Variables: - mode:c++ - c-file-style:"stroustrup" - c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) - indent-tabs-mode:nil - fill-column:99 - End: -*/ -// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4 : diff --git a/src/live_effects/parameter/pointreseteable.h b/src/live_effects/parameter/pointreseteable.h deleted file mode 100644 index 5ae1fdf02..000000000 --- a/src/live_effects/parameter/pointreseteable.h +++ /dev/null @@ -1,74 +0,0 @@ -#ifndef INKSCAPE_LIVEPATHEFFECT_PARAMETER_POINT_RESETEABLE_H -#define INKSCAPE_LIVEPATHEFFECT_PARAMETER_POINT_RESETEABLE_H - -/* - * Inkscape::LivePathEffectParameters - * -* Copyright (C) Johan Engelen 2007 - * - * Released under GNU GPL, read the file 'COPYING' for more information - */ - -#include -#include <2geom/point.h> - -#include "live_effects/parameter/parameter.h" - -#include "knot-holder-entity.h" - -namespace Inkscape { - -namespace LivePathEffect { - -class PointReseteableParamKnotHolderEntity; - -class PointReseteableParam : public Geom::Point, public Parameter { -public: - PointReseteableParam( const Glib::ustring& label, - const Glib::ustring& tip, - const Glib::ustring& key, - Inkscape::UI::Widget::Registry* wr, - Effect* effect, - const gchar *handle_tip = NULL, - Geom::Point default_value = Geom::Point(0,0) ); // tip for automatically associated on-canvas handle - virtual ~PointReseteableParam(); - - virtual Gtk::Widget * param_newWidget(); - - bool param_readSVGValue(const gchar * strvalue); - gchar * param_getSVGValue() const; - inline const gchar *handleTip() const { return handle_tip ? handle_tip : param_tooltip.c_str(); } - - void param_setValue(Geom::Point newpoint); - void param_set_default(); - void param_set_and_write_default(); - void param_update_default(Geom::Point newpoint); - - void param_set_and_write_new_value(Geom::Point newpoint); - - virtual void param_transform_multiply(Geom::Affine const& /*postmul*/, bool /*set*/); - - void set_oncanvas_looks(SPKnotShapeType shape, SPKnotModeType mode, guint32 color); - - virtual bool providesKnotHolderEntities() const { return true; } - virtual void addKnotHolderEntities(KnotHolder *knotholder, SPDesktop *desktop, SPItem *item); - - friend class PointReseteableParamKnotHolderEntity; -private: - PointReseteableParam(const PointReseteableParam&); - PointReseteableParam& operator=(const PointReseteableParam&); - - Geom::Point defvalue; - - SPKnotShapeType knot_shape; - SPKnotModeType knot_mode; - guint32 knot_color; - gchar *handle_tip; -}; - - -} //namespace LivePathEffect - -} //namespace Inkscape - -#endif -- cgit v1.2.3 From 3f5a54f867784d1606ebd21a804c356cfc6ef6a4 Mon Sep 17 00:00:00 2001 From: Jabier Arraiza Cenoz Date: Sun, 8 Mar 2015 15:00:33 +0100 Subject: Update simplify and bspline to auto size some helper paths based on current zoom (bzr r13974) --- src/live_effects/parameter/filletchamferpointarray.cpp | 2 +- src/live_effects/parameter/filletchamferpointarray.h | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) (limited to 'src/live_effects/parameter') diff --git a/src/live_effects/parameter/filletchamferpointarray.cpp b/src/live_effects/parameter/filletchamferpointarray.cpp index 2ebe11b4b..e9d375b93 100644 --- a/src/live_effects/parameter/filletchamferpointarray.cpp +++ b/src/live_effects/parameter/filletchamferpointarray.cpp @@ -354,7 +354,7 @@ void FilletChamferPointArrayParam::set_pwd2( last_pwd2_normal = pwd2_normal_in; } -void FilletChamferPointArrayParam::set_document_unit(Glib::ustring const * value_document_unit) +void FilletChamferPointArrayParam::set_document_unit(Glib::ustring value_document_unit) { documentUnit = value_document_unit; } diff --git a/src/live_effects/parameter/filletchamferpointarray.h b/src/live_effects/parameter/filletchamferpointarray.h index 6e5cce353..7849d5afb 100644 --- a/src/live_effects/parameter/filletchamferpointarray.h +++ b/src/live_effects/parameter/filletchamferpointarray.h @@ -53,7 +53,7 @@ public: virtual void set_helper_size(int hs); virtual void set_use_distance(bool use_knot_distance); virtual void set_chamfer_steps(int value_chamfer_steps); - virtual void set_document_unit(Glib::ustring const * value_document_unit); + virtual void set_document_unit(Glib::ustring value_document_unit); virtual void set_unit(const gchar *abbr); virtual void addCanvasIndicators(SPLPEItem const *lpeitem, std::vector &hp_vec); @@ -90,7 +90,7 @@ private: int chamfer_steps; bool use_distance; const gchar *unit; - Glib::ustring const * documentUnit; + Glib::ustring documentUnit; Geom::PathVector hp; Geom::Piecewise > last_pwd2; -- cgit v1.2.3 From 52c0042e1daeb6645ae4d479b92bae26944c0161 Mon Sep 17 00:00:00 2001 From: Jabier Arraiza Cenoz Date: Tue, 10 Mar 2015 20:20:02 +0100 Subject: This commit remove all ocurrences of Active Desktop casts and all tool swith on Perspective/Envelope and in Lattice 2, also remove some casts from point parameter (bzr r13987) --- src/live_effects/parameter/point.cpp | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) (limited to 'src/live_effects/parameter') diff --git a/src/live_effects/parameter/point.cpp b/src/live_effects/parameter/point.cpp index 1d48bda8d..83e7e8f62 100644 --- a/src/live_effects/parameter/point.cpp +++ b/src/live_effects/parameter/point.cpp @@ -113,13 +113,6 @@ void PointParam::param_setValue(Geom::Point newpoint) { *dynamic_cast( this ) = newpoint; - if(SP_ACTIVE_DESKTOP){ - SPDesktop* desktop = SP_ACTIVE_DESKTOP; - if (tools_isactive( desktop, TOOLS_NODES)) { - Inkscape::UI::Tools::NodeTool *nt = static_cast( desktop->event_context); - nt->update_helperpath(); - } - } } void @@ -130,6 +123,10 @@ PointParam::param_set_and_write_new_value (Geom::Point newpoint) gchar * str = g_strdup(os.str().c_str()); param_write_to_repr(str); g_free(str); + SPLPEItem* item = reinterpret_cast(param_effect->getLPEObj()); + if(item){ + sp_lpe_item_update_patheffect(item, false, false); + } } void -- cgit v1.2.3 From 2c0bdb603b9213af98db374f1a31435ecc15cec9 Mon Sep 17 00:00:00 2001 From: Jabier Arraiza Cenoz Date: Tue, 10 Mar 2015 21:42:56 +0100 Subject: Fix a bug whith previous commit (bzr r13988) --- src/live_effects/parameter/point.cpp | 11 +++++++---- src/live_effects/parameter/point.h | 2 +- 2 files changed, 8 insertions(+), 5 deletions(-) (limited to 'src/live_effects/parameter') diff --git a/src/live_effects/parameter/point.cpp b/src/live_effects/parameter/point.cpp index 83e7e8f62..1fda97b0d 100644 --- a/src/live_effects/parameter/point.cpp +++ b/src/live_effects/parameter/point.cpp @@ -28,7 +28,10 @@ namespace LivePathEffect { PointParam::PointParam( const Glib::ustring& label, const Glib::ustring& tip, const Glib::ustring& key, Inkscape::UI::Widget::Registry* wr, Effect* effect, const gchar *htip, Geom::Point default_value) - : Geom::Point(default_value), Parameter(label, tip, key, wr, effect), defvalue(default_value) + : Geom::Point(default_value), + Parameter(label, tip, key, wr, effect), + defvalue(default_value), + lpeitem( NULL) { knot_shape = SP_KNOT_SHAPE_DIAMOND; knot_mode = SP_KNOT_MODE_XOR; @@ -123,9 +126,8 @@ PointParam::param_set_and_write_new_value (Geom::Point newpoint) gchar * str = g_strdup(os.str().c_str()); param_write_to_repr(str); g_free(str); - SPLPEItem* item = reinterpret_cast(param_effect->getLPEObj()); - if(item){ - sp_lpe_item_update_patheffect(item, false, false); + if(lpeitem){ + sp_lpe_item_update_patheffect(lpeitem, false, false); } } @@ -196,6 +198,7 @@ PointParamKnotHolderEntity::knot_click(guint state) void PointParam::addKnotHolderEntities(KnotHolder *knotholder, SPDesktop *desktop, SPItem *item) { + lpeitem = dynamic_cast(item); PointParamKnotHolderEntity *e = new PointParamKnotHolderEntity(this); // TODO: can we ditch handleTip() etc. because we have access to handle_tip etc. itself??? e->create(desktop, item, knotholder, Inkscape::CTRL_TYPE_UNKNOWN, handleTip(), knot_shape, knot_mode, knot_color); diff --git a/src/live_effects/parameter/point.h b/src/live_effects/parameter/point.h index 95854ea52..99eb86e96 100644 --- a/src/live_effects/parameter/point.h +++ b/src/live_effects/parameter/point.h @@ -59,7 +59,7 @@ private: PointParam& operator=(const PointParam&); Geom::Point defvalue; - + SPLPEItem * lpeitem; SPKnotShapeType knot_shape; SPKnotModeType knot_mode; guint32 knot_color; -- cgit v1.2.3 From 7240de5809d66a6f14e578d37396bfaa97ee8f08 Mon Sep 17 00:00:00 2001 From: Jabier Arraiza Cenoz Date: Wed, 11 Mar 2015 00:57:47 +0100 Subject: Final cleanup to point parameter, lattice2 and perspective envelope. Also added to lattice 2 a symmetry options (bzr r13989) --- src/live_effects/parameter/point.cpp | 9 ++------- src/live_effects/parameter/point.h | 1 - 2 files changed, 2 insertions(+), 8 deletions(-) (limited to 'src/live_effects/parameter') diff --git a/src/live_effects/parameter/point.cpp b/src/live_effects/parameter/point.cpp index 1fda97b0d..8cb9a58a8 100644 --- a/src/live_effects/parameter/point.cpp +++ b/src/live_effects/parameter/point.cpp @@ -30,8 +30,7 @@ PointParam::PointParam( const Glib::ustring& label, const Glib::ustring& tip, Effect* effect, const gchar *htip, Geom::Point default_value) : Geom::Point(default_value), Parameter(label, tip, key, wr, effect), - defvalue(default_value), - lpeitem( NULL) + defvalue(default_value) { knot_shape = SP_KNOT_SHAPE_DIAMOND; knot_mode = SP_KNOT_MODE_XOR; @@ -119,16 +118,13 @@ PointParam::param_setValue(Geom::Point newpoint) } void -PointParam::param_set_and_write_new_value (Geom::Point newpoint) +PointParam::param_set_and_write_new_value(Geom::Point newpoint) { Inkscape::SVGOStringStream os; os << newpoint; gchar * str = g_strdup(os.str().c_str()); param_write_to_repr(str); g_free(str); - if(lpeitem){ - sp_lpe_item_update_patheffect(lpeitem, false, false); - } } void @@ -198,7 +194,6 @@ PointParamKnotHolderEntity::knot_click(guint state) void PointParam::addKnotHolderEntities(KnotHolder *knotholder, SPDesktop *desktop, SPItem *item) { - lpeitem = dynamic_cast(item); PointParamKnotHolderEntity *e = new PointParamKnotHolderEntity(this); // TODO: can we ditch handleTip() etc. because we have access to handle_tip etc. itself??? e->create(desktop, item, knotholder, Inkscape::CTRL_TYPE_UNKNOWN, handleTip(), knot_shape, knot_mode, knot_color); diff --git a/src/live_effects/parameter/point.h b/src/live_effects/parameter/point.h index 99eb86e96..c4dc096d8 100644 --- a/src/live_effects/parameter/point.h +++ b/src/live_effects/parameter/point.h @@ -59,7 +59,6 @@ private: PointParam& operator=(const PointParam&); Geom::Point defvalue; - SPLPEItem * lpeitem; SPKnotShapeType knot_shape; SPKnotModeType knot_mode; guint32 knot_color; -- cgit v1.2.3 From 5639c270b1b4c509ada273d79dda1d0a60fea1ed Mon Sep 17 00:00:00 2001 From: Jabier Arraiza Cenoz Date: Wed, 11 Mar 2015 09:09:28 +0100 Subject: Inicialite variables to prevent crashes (bzr r13990) --- src/live_effects/parameter/point.cpp | 2 -- 1 file changed, 2 deletions(-) (limited to 'src/live_effects/parameter') diff --git a/src/live_effects/parameter/point.cpp b/src/live_effects/parameter/point.cpp index 8cb9a58a8..319d441b8 100644 --- a/src/live_effects/parameter/point.cpp +++ b/src/live_effects/parameter/point.cpp @@ -15,8 +15,6 @@ #include "verbs.h" #include "knotholder.h" #include -#include "ui/tools-switch.h" -#include "ui/tools/node-tool.h" // needed for on-canvas editting: #include "desktop.h" -- cgit v1.2.3 From c9a989288ac802c9f7ca65f387827a3c2e991741 Mon Sep 17 00:00:00 2001 From: Jabier Arraiza Cenoz Date: Thu, 12 Mar 2015 09:19:08 +0100 Subject: Point parameter refactor, Fixes a bug in Lattice2 whith lines. (bzr r13995) --- src/live_effects/parameter/point.cpp | 61 +++++++++++++++++------------------- src/live_effects/parameter/point.h | 7 +---- 2 files changed, 29 insertions(+), 39 deletions(-) (limited to 'src/live_effects/parameter') diff --git a/src/live_effects/parameter/point.cpp b/src/live_effects/parameter/point.cpp index 319d441b8..30e59a2bd 100644 --- a/src/live_effects/parameter/point.cpp +++ b/src/live_effects/parameter/point.cpp @@ -26,8 +26,7 @@ namespace LivePathEffect { PointParam::PointParam( const Glib::ustring& label, const Glib::ustring& tip, const Glib::ustring& key, Inkscape::UI::Widget::Registry* wr, Effect* effect, const gchar *htip, Geom::Point default_value) - : Geom::Point(default_value), - Parameter(label, tip, key, wr, effect), + : Parameter(label, tip, key, wr, effect), defvalue(default_value) { knot_shape = SP_KNOT_SHAPE_DIAMOND; @@ -45,19 +44,26 @@ PointParam::~PointParam() void PointParam::param_set_default() { - param_setValue(defvalue); + param_setValue(defvalue,true); } void -PointParam::param_set_and_write_default() +PointParam::param_update_default(Geom::Point newpoint) { - param_set_and_write_new_value(defvalue); + defvalue = newpoint; } void -PointParam::param_update_default(Geom::Point newpoint) +PointParam::param_setValue(Geom::Point newpoint, bool write) { - this->defvalue = newpoint; + *dynamic_cast( this ) = newpoint; + if(write){ + Inkscape::SVGOStringStream os; + os << newpoint; + gchar * str = g_strdup(os.str().c_str()); + param_write_to_repr(str); + g_free(str); + } } bool @@ -84,6 +90,12 @@ PointParam::param_getSVGValue() const return str; } +void +PointParam::param_transform_multiply(Geom::Affine const& postmul, bool /*set*/) +{ + param_setValue( (*this) * postmul, true); +} + Gtk::Widget * PointParam::param_newWidget() { @@ -109,29 +121,6 @@ PointParam::param_newWidget() return dynamic_cast (hbox); } -void -PointParam::param_setValue(Geom::Point newpoint) -{ - *dynamic_cast( this ) = newpoint; -} - -void -PointParam::param_set_and_write_new_value(Geom::Point newpoint) -{ - Inkscape::SVGOStringStream os; - os << newpoint; - gchar * str = g_strdup(os.str().c_str()); - param_write_to_repr(str); - g_free(str); -} - -void -PointParam::param_transform_multiply(Geom::Affine const& postmul, bool /*set*/) -{ - param_set_and_write_new_value( (*this) * postmul ); -} - - void PointParam::set_oncanvas_looks(SPKnotShapeType shape, SPKnotModeType mode, guint32 color) { @@ -168,8 +157,11 @@ PointParamKnotHolderEntity::knot_set(Geom::Point const &p, Geom::Point const &or s = A; } } - pparam->param_setValue(s); - sp_lpe_item_update_patheffect(SP_LPE_ITEM(item), false, false); + pparam->param_setValue(s, true); + SPLPEItem * splpeitem = dynamic_cast(item); + if(splpeitem){ + sp_lpe_item_update_patheffect(splpeitem, false, false); + } } Geom::Point @@ -184,7 +176,10 @@ PointParamKnotHolderEntity::knot_click(guint state) if (state & GDK_CONTROL_MASK) { if (state & GDK_MOD1_MASK) { this->pparam->param_set_default(); - sp_lpe_item_update_patheffect(SP_LPE_ITEM(item), false, false); + SPLPEItem * splpeitem = dynamic_cast(item); + if(splpeitem){ + sp_lpe_item_update_patheffect(splpeitem, false, false); + } } } } diff --git a/src/live_effects/parameter/point.h b/src/live_effects/parameter/point.h index c4dc096d8..346e79bdd 100644 --- a/src/live_effects/parameter/point.h +++ b/src/live_effects/parameter/point.h @@ -39,13 +39,9 @@ public: gchar * param_getSVGValue() const; inline const gchar *handleTip() const { return handle_tip ? handle_tip : param_tooltip.c_str(); } - void param_setValue(Geom::Point newpoint); + void param_setValue(Geom::Point newpoint, bool write = false); void param_set_default(); - void param_set_and_write_default(); void param_update_default(Geom::Point newpoint); - - void param_set_and_write_new_value(Geom::Point newpoint); - virtual void param_transform_multiply(Geom::Affine const& /*postmul*/, bool /*set*/); void set_oncanvas_looks(SPKnotShapeType shape, SPKnotModeType mode, guint32 color); @@ -57,7 +53,6 @@ public: private: PointParam(const PointParam&); PointParam& operator=(const PointParam&); - Geom::Point defvalue; SPKnotShapeType knot_shape; SPKnotModeType knot_mode; -- cgit v1.2.3 From 9dde2a95bdbe44c1acdfa4bb279ca554771bb0c8 Mon Sep 17 00:00:00 2001 From: Jabier Arraiza Cenoz Date: Sat, 14 Mar 2015 11:22:32 +0100 Subject: Lattice 2 now handle in miror mode revase of axis, also fix a bug moving extem axis knots (bzr r14001) --- src/live_effects/parameter/point.cpp | 5 +++++ src/live_effects/parameter/point.h | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) (limited to 'src/live_effects/parameter') diff --git a/src/live_effects/parameter/point.cpp b/src/live_effects/parameter/point.cpp index 30e59a2bd..aece8fb79 100644 --- a/src/live_effects/parameter/point.cpp +++ b/src/live_effects/parameter/point.cpp @@ -47,6 +47,11 @@ PointParam::param_set_default() param_setValue(defvalue,true); } +Geom::Point +PointParam::param_get_default() const{ + return defvalue; +} + void PointParam::param_update_default(Geom::Point newpoint) { diff --git a/src/live_effects/parameter/point.h b/src/live_effects/parameter/point.h index 346e79bdd..32433713a 100644 --- a/src/live_effects/parameter/point.h +++ b/src/live_effects/parameter/point.h @@ -38,9 +38,9 @@ public: bool param_readSVGValue(const gchar * strvalue); gchar * param_getSVGValue() const; 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(); + Geom::Point param_get_default() const; void param_update_default(Geom::Point newpoint); virtual void param_transform_multiply(Geom::Affine const& /*postmul*/, bool /*set*/); -- cgit v1.2.3 From eb041b9a00e42b585bac8fec8cbcb0650d058703 Mon Sep 17 00:00:00 2001 From: Jabier Arraiza Cenoz Date: Sat, 14 Mar 2015 12:37:42 +0100 Subject: Remove 'Active Desktop' calls from Perspective/Envelope and Lattice2 LPE, added auto refresh knots position in point parameters when updated programaticaly (bzr r14003) --- src/live_effects/parameter/point.cpp | 7 ++++++- src/live_effects/parameter/point.h | 1 + 2 files changed, 7 insertions(+), 1 deletion(-) (limited to 'src/live_effects/parameter') diff --git a/src/live_effects/parameter/point.cpp b/src/live_effects/parameter/point.cpp index aece8fb79..4564363db 100644 --- a/src/live_effects/parameter/point.cpp +++ b/src/live_effects/parameter/point.cpp @@ -27,7 +27,8 @@ PointParam::PointParam( const Glib::ustring& label, const Glib::ustring& tip, const Glib::ustring& key, Inkscape::UI::Widget::Registry* wr, Effect* effect, const gchar *htip, Geom::Point default_value) : Parameter(label, tip, key, wr, effect), - defvalue(default_value) + defvalue(default_value), + knoth(NULL) { knot_shape = SP_KNOT_SHAPE_DIAMOND; knot_mode = SP_KNOT_MODE_XOR; @@ -69,6 +70,9 @@ PointParam::param_setValue(Geom::Point newpoint, bool write) param_write_to_repr(str); g_free(str); } + if(knoth){ + knoth->update_knots(); + } } bool @@ -192,6 +196,7 @@ PointParamKnotHolderEntity::knot_click(guint state) void PointParam::addKnotHolderEntities(KnotHolder *knotholder, SPDesktop *desktop, SPItem *item) { + knoth = knotholder; PointParamKnotHolderEntity *e = new PointParamKnotHolderEntity(this); // TODO: can we ditch handleTip() etc. because we have access to handle_tip etc. itself??? e->create(desktop, item, knotholder, Inkscape::CTRL_TYPE_UNKNOWN, handleTip(), knot_shape, knot_mode, knot_color); diff --git a/src/live_effects/parameter/point.h b/src/live_effects/parameter/point.h index 32433713a..471fbc993 100644 --- a/src/live_effects/parameter/point.h +++ b/src/live_effects/parameter/point.h @@ -54,6 +54,7 @@ private: PointParam(const PointParam&); PointParam& operator=(const PointParam&); Geom::Point defvalue; + KnotHolder *knoth; SPKnotShapeType knot_shape; SPKnotModeType knot_mode; guint32 knot_color; -- cgit v1.2.3 From 657ba3e80cc20f664bd9547dff60d8e7e793eccc Mon Sep 17 00:00:00 2001 From: Jabier Arraiza Cenoz Date: Mon, 16 Mar 2015 21:16:49 +0100 Subject: Fix a bug when update pointparaneter and no Knot (bzr r14008) --- src/live_effects/parameter/point.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/live_effects/parameter') diff --git a/src/live_effects/parameter/point.cpp b/src/live_effects/parameter/point.cpp index 4564363db..4c4d2cd9c 100644 --- a/src/live_effects/parameter/point.cpp +++ b/src/live_effects/parameter/point.cpp @@ -141,7 +141,7 @@ PointParam::set_oncanvas_looks(SPKnotShapeType shape, SPKnotModeType mode, guint class PointParamKnotHolderEntity : public KnotHolderEntity { public: PointParamKnotHolderEntity(PointParam *p) { this->pparam = p; } - virtual ~PointParamKnotHolderEntity() {} + virtual ~PointParamKnotHolderEntity() { this->pparam->knoth = NULL;} virtual void knot_set(Geom::Point const &p, Geom::Point const &origin, guint state); virtual Geom::Point knot_get() const; -- cgit v1.2.3