From 0b4b6cf7cdf14a64844186ea1e22ef6a0dba42bb Mon Sep 17 00:00:00 2001 From: "Johan B. C. Engelen" Date: Wed, 29 Aug 2007 22:36:46 +0000 Subject: LPE: - rename RealParam to ScalarParam, add range checking for ScalarParam, add integer only flag for it aswell. - fix up todo.txt and create new one for parameters - add Curve Stitch LPE (bzr r3614) --- src/live_effects/parameter/parameter.cpp | 49 ++++++++++++++++++++++++++------ src/live_effects/parameter/parameter.h | 16 +++++++---- src/live_effects/parameter/todo.txt | 9 ++++++ 3 files changed, 60 insertions(+), 14 deletions(-) create mode 100644 src/live_effects/parameter/todo.txt (limited to 'src/live_effects/parameter') diff --git a/src/live_effects/parameter/parameter.cpp b/src/live_effects/parameter/parameter.cpp index 91df62e81..42dd21995 100644 --- a/src/live_effects/parameter/parameter.cpp +++ b/src/live_effects/parameter/parameter.cpp @@ -9,6 +9,7 @@ #include "live_effects/parameter/parameter.h" #include "live_effects/effect.h" #include "svg/svg.h" +#include "libnr/nr-values.h" #include #include "ui/widget/scalar.h" @@ -40,24 +41,27 @@ Parameter::Parameter( const Glib::ustring& label, const Glib::ustring& tip, /*########################################### * REAL PARAM */ -RealParam::RealParam( const Glib::ustring& label, const Glib::ustring& tip, +ScalarParam::ScalarParam( const Glib::ustring& label, const Glib::ustring& tip, const Glib::ustring& key, Inkscape::UI::Widget::Registry* wr, Effect* effect, gdouble default_value) : Parameter(label, tip, key, wr, effect) { defvalue = default_value; value = defvalue; + min = -NR_HUGE; + max = NR_HUGE; + integer = false; rsu = NULL; } -RealParam::~RealParam() +ScalarParam::~ScalarParam() { if (rsu) delete rsu; } bool -RealParam::param_readSVGValue(const gchar * strvalue) +ScalarParam::param_readSVGValue(const gchar * strvalue) { double newval; unsigned int success = sp_svg_number_read_d(strvalue, &newval); @@ -69,7 +73,7 @@ RealParam::param_readSVGValue(const gchar * strvalue) } gchar * -RealParam::param_writeSVGValue() const +ScalarParam::param_writeSVGValue() const { Inkscape::SVGOStringStream os; os << value; @@ -78,27 +82,57 @@ RealParam::param_writeSVGValue() const } void -RealParam::param_set_default() +ScalarParam::param_set_default() { param_set_value(defvalue); } void -RealParam::param_set_value(gdouble val) +ScalarParam::param_set_value(gdouble val) { value = val; + if (integer) + value = round(value); + if (value > max) + value = max; + if (value < min) + value = min; + if (rsu) rsu->setValue(value); } +void +ScalarParam::param_set_range(gdouble min, gdouble max) +{ + this->min = min; + this->max = max; + if (rsu) + rsu->getS()->setRange(min, max); + + param_set_value(value); +} + +void +ScalarParam::param_make_integer(bool yes) +{ + integer = yes; + if (rsu) { + rsu->getS()->setDigits(0); + rsu->getS()->setIncrements(1, 10); + } +} Gtk::Widget * -RealParam::param_getWidget() +ScalarParam::param_getWidget() { if (!rsu) { rsu = new Inkscape::UI::Widget::RegisteredScalar(); rsu->init(param_label, param_tooltip, param_key, *param_wr, param_effect->getRepr(), param_effect->getSPDoc()); rsu->setValue(value); + if (integer) + param_make_integer(); + rsu->set_undo_parameters(SP_VERB_DIALOG_LIVE_PATH_EFFECT, _("Change scalar parameter")); } return dynamic_cast (rsu->getS()); @@ -106,7 +140,6 @@ RealParam::param_getWidget() } /* namespace LivePathEffect */ - } /* namespace Inkscape */ /* diff --git a/src/live_effects/parameter/parameter.h b/src/live_effects/parameter/parameter.h index 942def5b8..d8659600a 100644 --- a/src/live_effects/parameter/parameter.h +++ b/src/live_effects/parameter/parameter.h @@ -60,21 +60,23 @@ private: }; -class RealParam : public Parameter { +class ScalarParam : public Parameter { public: - RealParam( const Glib::ustring& label, + ScalarParam( const Glib::ustring& label, const Glib::ustring& tip, const Glib::ustring& key, Inkscape::UI::Widget::Registry* wr, Effect* effect, gdouble default_value = 1.0); - ~RealParam(); + ~ScalarParam(); bool param_readSVGValue(const gchar * strvalue); gchar * param_writeSVGValue() const; void param_set_default(); void param_set_value(gdouble val); + void param_make_integer(bool yes = true); + void param_set_range(gdouble min, gdouble max); Gtk::Widget * param_getWidget(); @@ -82,15 +84,17 @@ public: { return value; }; private: - RealParam(const RealParam&); - RealParam& operator=(const RealParam&); + ScalarParam(const ScalarParam&); + ScalarParam& operator=(const ScalarParam&); gdouble value; + gdouble min; + gdouble max; + bool integer; gdouble defvalue; Inkscape::UI::Widget::RegisteredScalar * rsu; }; - } //namespace LivePathEffect } //namespace Inkscape diff --git a/src/live_effects/parameter/todo.txt b/src/live_effects/parameter/todo.txt new file mode 100644 index 000000000..f1a1b4220 --- /dev/null +++ b/src/live_effects/parameter/todo.txt @@ -0,0 +1,9 @@ +reminder list + +- make robust +For example, the spinbuttons for scalarparam can "hang" which is very very very annoying. + +- add more types! +straightlinepaths: for example for the gears effect. (curves are not important there) +random number: it must also store the random number generator seed!!! + -- cgit v1.2.3