X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Flive_effects%2Fparameter%2Fpath.h;h=76f3fa774ff61c633a23f6d598e65fca15c9ae97;hb=4ea30e1bba14987abced98e7bf194b69153e9e21;hp=18ffe5321d7e6480281910d3c55fbcbc2dd0d143;hpb=7f991b154fd88d2ad53558828be8c56018dbc0d7;p=inkscape.git diff --git a/src/live_effects/parameter/path.h b/src/live_effects/parameter/path.h index 18ffe5321..76f3fa774 100644 --- a/src/live_effects/parameter/path.h +++ b/src/live_effects/parameter/path.h @@ -1,61 +1,95 @@ -#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 "ui/widget/registry.h" -#include - -#include "live_effects/parameter/parameter.h" - -#include - -namespace Inkscape { - -namespace LivePathEffect { - -class PathParam : public Geom::Piecewise >, 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 * defvalue = "M0,0 L1,1"); - ~PathParam(); - - Gtk::Widget * param_getWidget(); - - bool param_readSVGValue(const gchar * strvalue); - gchar * param_writeSVGValue() const; - - sigc::signal signal_path_pasted; - -private: - PathParam(const PathParam&); - PathParam& operator=(const PathParam&); - - Gtk::Widget * _widget; - Gtk::Tooltips * _tooltips; - - void param_write_to_repr(const char * svgd); - - void on_edit_button_click(); - void on_paste_button_click(); -}; - - -} //namespace LivePathEffect - -} //namespace Inkscape - -#endif +#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); + + virtual bool param_readSVGValue(const gchar * strvalue); + virtual gchar * param_getSVGValue() const; + + virtual void param_set_default(); + void param_set_and_write_default(); + void set_new_value (std::vector const &newpath, bool write_to_svg); + void set_new_value (Geom::Piecewise > const &newpath, bool write_to_svg); + + virtual void param_editOncanvas(SPItem * item, SPDesktop * dt); + virtual void param_setup_nodepath(Inkscape::NodePath::Path *np); + virtual void addCanvasIndicators(SPLPEItem *lpeitem, std::vector &hp_vec); + + virtual void param_transform_multiply(Geom::Matrix const& /*postmul*/, bool /*set*/); + + sigc::signal signal_path_pasted; + sigc::signal signal_path_changed; + + void paste_param_path(const char *svgd); + void on_paste_button_click(); + +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_copy_button_click(); + void on_link_button_click(); + + gchar * defvalue; + +private: + PathParam(const PathParam&); + PathParam& operator=(const PathParam&); +}; + + +} //namespace LivePathEffect + +} //namespace Inkscape + +#endif