Code

Commit LivePathEffect branch to trunk!
[inkscape.git] / src / live_effects / parameter / parameter.h
1 #ifndef INKSCAPE_LIVEPATHEFFECT_PARAMETER_H\r
2 #define INKSCAPE_LIVEPATHEFFECT_PARAMETER_H\r
3 \r
4 /*\r
5  * Inkscape::LivePathEffectParameters\r
6  *\r
7 * Copyright (C) Johan Engelen 2007 <j.b.c.engelen@utwente.nl>\r
8  *\r
9  * Released under GNU GPL, read the file 'COPYING' for more information\r
10  */\r
11 \r
12 #include <glibmm/ustring.h>\r
13 #include <2geom/point.h>\r
14 #include <2geom/path.h>\r
15 \r
16 #include "ui/widget/registry.h"\r
17 #include "ui/widget/registered-widget.h"\r
18 \r
19 namespace Gtk {\r
20     class Widget;\r
21 }\r
22 \r
23 namespace Inkscape {\r
24 \r
25 namespace LivePathEffect {\r
26 \r
27 class Effect;\r
28 \r
29 class Parameter {\r
30 public:\r
31     Parameter(const Glib::ustring& label, const Glib::ustring& tip, const Glib::ustring& key, Inkscape::UI::Widget::Registry* wr, Effect* effect);\r
32     virtual ~Parameter() {};\r
33 \r
34     virtual bool param_readSVGValue(const gchar * strvalue) = 0;   // returns true if new value is valid / accepted.\r
35     virtual gchar * param_writeSVGValue() const = 0;\r
36 \r
37     // This returns pointer to the parameter's widget to be put in the live-effects dialog. Must also create the\r
38     // necessary widget if it does not exist yet.\r
39     virtual Gtk::Widget * param_getWidget() = 0;\r
40     virtual Glib::ustring * param_getTooltip() { return &param_tooltip; };\r
41 \r
42     Glib::ustring param_key;\r
43     Inkscape::UI::Widget::Registry * param_wr;\r
44     Glib::ustring param_label;\r
45 \r
46 protected:\r
47     Glib::ustring param_tooltip;\r
48 \r
49     Effect* param_effect;\r
50 \r
51 private:\r
52     Parameter(const Parameter&);\r
53     Parameter& operator=(const Parameter&);\r
54 };\r
55 \r
56 \r
57 class RealParam : public Parameter {\r
58 public:\r
59     RealParam( const Glib::ustring& label, const Glib::ustring& tip, const Glib::ustring& key, \r
60                Inkscape::UI::Widget::Registry* wr, Effect* effect, gdouble initial_value = 1.0);\r
61     ~RealParam();\r
62 \r
63     bool param_readSVGValue(const gchar * strvalue);\r
64     gchar * param_writeSVGValue() const;\r
65 \r
66     Gtk::Widget * param_getWidget();\r
67 \r
68     inline operator gdouble()\r
69         { return value; };\r
70 \r
71 private:\r
72     RealParam(const RealParam&);\r
73     RealParam& operator=(const RealParam&);\r
74 \r
75     gdouble value;\r
76     Inkscape::UI::Widget::RegisteredScalar * rsu;\r
77 };\r
78 \r
79 \r
80 }; //namespace LivePathEffect\r
81 \r
82 }; //namespace Inkscape\r
83 \r
84 #endif\r