summaryrefslogtreecommitdiffstats
path: root/src/live_effects/parameter
diff options
context:
space:
mode:
authorJohan B. C. Engelen <jbc.engelen@swissonline.ch>2007-08-29 22:36:46 +0000
committerjohanengelen <johanengelen@users.sourceforge.net>2007-08-29 22:36:46 +0000
commit0b4b6cf7cdf14a64844186ea1e22ef6a0dba42bb (patch)
tree045ce745d261eeb22875310393ff32dc59beff0e /src/live_effects/parameter
parentDockable dialogs patch applied (diff)
downloadinkscape-0b4b6cf7cdf14a64844186ea1e22ef6a0dba42bb.tar.gz
inkscape-0b4b6cf7cdf14a64844186ea1e22ef6a0dba42bb.zip
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)
Diffstat (limited to 'src/live_effects/parameter')
-rw-r--r--src/live_effects/parameter/parameter.cpp49
-rw-r--r--src/live_effects/parameter/parameter.h16
-rw-r--r--src/live_effects/parameter/todo.txt9
3 files changed, 60 insertions, 14 deletions
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 <gtkmm.h>
#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<Gtk::Widget *> (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!!!
+