Code

**/makefile.in: svn propset svn:eol-style native. Provide rule for %.$(OBJEXT) inste...
[inkscape.git] / src / live_effects / parameter / parameter.cpp
index 91df62e810e72a9ac94d90ede4d44c3ba86e6ded..0e9295a20bebb26d15455c302278ce90c6dabb45 100644 (file)
@@ -9,6 +9,7 @@
 #include "live_effects/parameter/parameter.h"\r
 #include "live_effects/effect.h"\r
 #include "svg/svg.h"\r
+#include "libnr/nr-values.h"\r
 \r
 #include <gtkmm.h>\r
 #include "ui/widget/scalar.h"\r
@@ -40,24 +41,27 @@ Parameter::Parameter( const Glib::ustring& label, const Glib::ustring& tip,
 /*###########################################\r
  *   REAL PARAM\r
  */\r
-RealParam::RealParam( const Glib::ustring& label, const Glib::ustring& tip,\r
+ScalarParam::ScalarParam( const Glib::ustring& label, const Glib::ustring& tip,\r
                       const Glib::ustring& key, Inkscape::UI::Widget::Registry* wr,\r
                       Effect* effect, gdouble default_value)\r
     : Parameter(label, tip, key, wr, effect)\r
 {\r
     defvalue = default_value;\r
     value = defvalue;\r
+    min = -NR_HUGE;\r
+    max = NR_HUGE;\r
+    integer = false;\r
     rsu = NULL;\r
 }\r
 \r
-RealParam::~RealParam()\r
+ScalarParam::~ScalarParam()\r
 {\r
     if (rsu)\r
         delete rsu;\r
 }\r
 \r
 bool\r
-RealParam::param_readSVGValue(const gchar * strvalue)\r
+ScalarParam::param_readSVGValue(const gchar * strvalue)\r
 {\r
     double newval;\r
     unsigned int success = sp_svg_number_read_d(strvalue, &newval);\r
@@ -69,7 +73,7 @@ RealParam::param_readSVGValue(const gchar * strvalue)
 }\r
 \r
 gchar *\r
-RealParam::param_writeSVGValue() const\r
+ScalarParam::param_writeSVGValue() const\r
 {\r
     Inkscape::SVGOStringStream os;\r
     os << value;\r
@@ -78,27 +82,57 @@ RealParam::param_writeSVGValue() const
 }\r
 \r
 void\r
-RealParam::param_set_default() \r
+ScalarParam::param_set_default() \r
 {\r
     param_set_value(defvalue);\r
 }\r
 \r
 void\r
-RealParam::param_set_value(gdouble val) \r
+ScalarParam::param_set_value(gdouble val) \r
 {\r
     value = val;\r
-    if (rsu)\r
+    if (integer)\r
+        value = round(value);\r
+    if (value > max)\r
+        value = max;\r
+    if (value < min)\r
+        value = min;\r
+\r
+    if (rsu && !rsu->is_updating())\r
         rsu->setValue(value);\r
 }\r
 \r
+void\r
+ScalarParam::param_set_range(gdouble min, gdouble max) \r
+{\r
+    this->min = min;\r
+    this->max = max;\r
+    if (rsu)\r
+        rsu->getS()->setRange(min, max);\r
+\r
+    param_set_value(value); // reset value to see whether it is in ranges\r
+}\r
+\r
+void\r
+ScalarParam::param_make_integer(bool yes)\r
+{\r
+    integer = yes;\r
+    if (rsu) {\r
+        rsu->getS()->setDigits(0);\r
+        rsu->getS()->setIncrements(1, 10);\r
+    }\r
+}\r
 \r
 Gtk::Widget *\r
-RealParam::param_getWidget()\r
+ScalarParam::param_getWidget()\r
 {\r
     if (!rsu) {\r
         rsu = new Inkscape::UI::Widget::RegisteredScalar();\r
         rsu->init(param_label, param_tooltip, param_key, *param_wr, param_effect->getRepr(), param_effect->getSPDoc());\r
         rsu->setValue(value);\r
+        if (integer)\r
+            param_make_integer();\r
+\r
         rsu->set_undo_parameters(SP_VERB_DIALOG_LIVE_PATH_EFFECT, _("Change scalar parameter"));\r
     }\r
     return dynamic_cast<Gtk::Widget *> (rsu->getS());\r
@@ -106,7 +140,6 @@ RealParam::param_getWidget()
 \r
 \r
 } /* namespace LivePathEffect */\r
-\r
 } /* namespace Inkscape */\r
 \r
 /*\r