1
#ifndef INKSCAPE_LIVEPATHEFFECT_PARAMETER_PATH_H
2
#define INKSCAPE_LIVEPATHEFFECT_PARAMETER_PATH_H
5
* Inkscape::LivePathEffectParameters
7
* Copyright (C) Johan Engelen 2007 <j.b.c.engelen@utwente.nl>
9
* Released under GNU GPL, read the file 'COPYING' for more information
12
#include <glib/gtypes.h>
13
#include <2geom/path.h>
15
#include <gtkmm/tooltips.h>
17
#include "live_effects/parameter/parameter.h"
18
#include "live_effects/parameter/path-reference.h"
19
#include <sigc++/sigc++.h>
23
namespace LivePathEffect {
25
class PathParam : public Parameter {
27
PathParam ( const Glib::ustring& label,
28
const Glib::ustring& tip,
29
const Glib::ustring& key,
30
Inkscape::UI::Widget::Registry* wr,
32
const gchar * default_value = "M0,0 L1,1");
35
std::vector<Geom::Path> const & get_pathvector();
36
Geom::Piecewise<Geom::D2<Geom::SBasis> > const & get_pwd2();
38
virtual Gtk::Widget * param_newWidget(Gtk::Tooltips * tooltips);
40
virtual bool param_readSVGValue(const gchar * strvalue);
41
virtual gchar * param_getSVGValue() const;
43
virtual void param_set_default();
44
void param_set_and_write_default();
45
void set_new_value (std::vector<Geom::Path> const &newpath, bool write_to_svg);
46
void set_new_value (Geom::Piecewise<Geom::D2<Geom::SBasis> > const &newpath, bool write_to_svg);
48
virtual void param_editOncanvas(SPItem * item, SPDesktop * dt);
49
virtual void param_setup_nodepath(Inkscape::NodePath::Path *np);
50
virtual void addCanvasIndicators(SPLPEItem *lpeitem, std::vector<Geom::PathVector> &hp_vec);
52
virtual void param_transform_multiply(Geom::Matrix const& /*postmul*/, bool /*set*/);
54
sigc::signal <void> signal_path_pasted;
55
sigc::signal <void> signal_path_changed;
56
bool changed; /* this gets set whenever the path is changed (this is set to true, and then the signal_path_changed signal is emitted).
57
* the user must set it back to false if she wants to use it sensibly */
59
void paste_param_path(const char *svgd);
60
void on_paste_button_click();
63
std::vector<Geom::Path> _pathvector; // this is primary data storage, since it is closest to SVG.
65
Geom::Piecewise<Geom::D2<Geom::SBasis> > _pwd2; // secondary, hence the bool must_recalculate_pwd2
66
bool must_recalculate_pwd2; // set when _pathvector was updated, but _pwd2 not
67
void ensure_pwd2(); // ensures _pwd2 is up to date
69
gchar * href; // contains link to other object, e.g. "#path2428", NULL if PathParam contains pathdata itself
71
sigc::connection ref_changed_connection;
72
sigc::connection linked_delete_connection;
73
sigc::connection linked_modified_connection;
74
void ref_changed(SPObject *old_ref, SPObject *new_ref);
76
void start_listening(SPObject * to);
77
void quit_listening(void);
78
void linked_delete(SPObject *deleted);
79
void linked_modified(SPObject *linked_obj, guint flags);
81
void on_edit_button_click();
82
void on_copy_button_click();
83
void on_link_button_click();
90
PathParam(const PathParam&);
91
PathParam& operator=(const PathParam&);
95
} //namespace LivePathEffect
97
} //namespace Inkscape