#ifndef INKSCAPE_LIVEPATHEFFECT_PARAMETER_PATH_H #define INKSCAPE_LIVEPATHEFFECT_PARAMETER_PATH_H /* * Inkscape::LivePathEffectParameters * * Copyright (C) Johan Engelen 2007 * * Released under GNU GPL, read the file 'COPYING' for more information */ #include #include <2geom/path.h> #include #include "live_effects/parameter/parameter.h" #include "live_effects/parameter/path-reference.h" #include namespace Inkscape { namespace LivePathEffect { class PathParam : public Parameter { public: PathParam ( const Glib::ustring& label, const Glib::ustring& tip, const Glib::ustring& key, Inkscape::UI::Widget::Registry* wr, Effect* effect, const gchar * default_value = "M0,0 L1,1"); virtual ~PathParam(); std::vector const & get_pathvector(); Geom::Piecewise > const & get_pwd2(); virtual Gtk::Widget * param_newWidget(Gtk::Tooltips * tooltips); bool param_readSVGValue(const gchar * strvalue); gchar * param_writeSVGValue() const; void param_set_default(); void param_set_and_write_default(); void param_set_and_write_new_value (Geom::Piecewise > const & newpath); void param_set_and_write_new_value (std::vector const & newpath); virtual void param_editOncanvas(SPItem * item, SPDesktop * dt); virtual void param_setup_nodepath(Inkscape::NodePath::Path *np); virtual void param_transform_multiply(Geom::Matrix const& /*postmul*/, bool /*set*/); sigc::signal signal_path_pasted; sigc::signal signal_path_changed; protected: std::vector _pathvector; // this is primary data storage, since it is closest to SVG. Geom::Piecewise > _pwd2; // secondary, hence the bool must_recalculate_pwd2 bool must_recalculate_pwd2; // set when _pathvector was updated, but _pwd2 not void ensure_pwd2(); // ensures _pwd2 is up to date gchar * href; // contains link to other object, e.g. "#path2428", NULL if PathParam contains pathdata itself PathReference ref; sigc::connection ref_changed_connection; sigc::connection linked_delete_connection; sigc::connection linked_modified_connection; void ref_changed(SPObject *old_ref, SPObject *new_ref); void remove_link(); void start_listening(SPObject * to); void quit_listening(void); void linked_delete(SPObject *deleted); void linked_modified(SPObject *linked_obj, guint flags); void on_edit_button_click(); void on_paste_button_click(); void on_copy_button_click(); void on_link_button_click(); gchar * defvalue; private: PathParam(const PathParam&); PathParam& operator=(const PathParam&); }; } //namespace LivePathEffect } //namespace Inkscape #endif