Code

Whitespace cleanup
[inkscape.git] / src / live_effects / parameter / random.cpp
index 846c2f9e8de17761f284765da903fc12c0329d7a..d5efc7ce3852c31da10d134305e68304b7760335 100644 (file)
-#define INKSCAPE_LIVEPATHEFFECT_PARAMETER_RANDOM_CPP\r
-\r
-/*\r
- * Copyright (C) Johan Engelen 2007 <j.b.c.engelen@utwente.nl>\r
- *\r
- * Released under GNU GPL, read the file 'COPYING' for more information\r
- */\r
-\r
-#include "live_effects/parameter/random.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/random.h"\r
-\r
-#include "svg/stringstream.h"\r
-\r
-#include "verbs.h"\r
-\r
-#define noLPERANDOMPARAM_DEBUG\r
-\r
-namespace Inkscape {\r
-\r
-namespace LivePathEffect {\r
-\r
-\r
-RandomParam::RandomParam( const Glib::ustring& label, const Glib::ustring& tip,\r
-                      const Glib::ustring& key, Inkscape::UI::Widget::Registry* wr,\r
-                      Effect* effect, gdouble default_value, long default_seed)\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
-    regrandom = NULL;\r
-\r
-    defseed = default_seed;\r
-    startseed = defseed;\r
-    seed = startseed;\r
-}\r
-\r
-RandomParam::~RandomParam()\r
-{\r
-    if (regrandom)\r
-        delete regrandom;\r
-}\r
-\r
-bool\r
-RandomParam::param_readSVGValue(const gchar * strvalue)\r
-{\r
-    double newval, newstartseed;\r
-    gchar** stringarray = g_strsplit (strvalue, ";", 2);\r
-    unsigned int success = sp_svg_number_read_d(stringarray[0], &newval);\r
-    if (success == 1) {\r
-        success += sp_svg_number_read_d(stringarray[1], &newstartseed);\r
-        if (success == 2) {\r
-            param_set_value(newval, newstartseed);\r
-        } else {\r
-            param_set_value(newval, defseed);\r
-        }\r
-        g_strfreev(stringarray);\r
-        return true;\r
-    }\r
-    g_strfreev(stringarray);\r
-    return false;\r
-}\r
-\r
-gchar *\r
-RandomParam::param_writeSVGValue() const\r
-{\r
-    Inkscape::SVGOStringStream os;\r
-    os << value << ';' << startseed;\r
-    gchar * str = g_strdup(os.str().c_str());\r
-    return str;\r
-}\r
-\r
-void\r
-RandomParam::param_set_default() \r
-{\r
-    param_set_value(defvalue, defseed);\r
-}\r
-\r
-void\r
-RandomParam::param_set_value(gdouble val, long newseed) \r
-{\r
-    value = val;\r
-    if (integer)\r
-        value = round(value);\r
-    if (value > max)\r
-        value = max;\r
-    if (value < min)\r
-        value = min;\r
-\r
-    startseed = setup_seed(newseed);\r
-    seed = startseed;\r
-\r
-    if (regrandom)\r
-        regrandom->setValue(value, startseed);\r
-}\r
-\r
-void\r
-RandomParam::param_set_range(gdouble min, gdouble max) \r
-{\r
-    this->min = min;\r
-    this->max = max;\r
-    if (regrandom)\r
-        regrandom->getR()->setRange(min, max);\r
-\r
-    param_set_value(value, startseed); // reset value, to check whether it is in range\r
-}\r
-\r
-void\r
-RandomParam::param_make_integer(bool yes)\r
-{\r
-    integer = yes;\r
-    if (regrandom) {\r
-        regrandom->getR()->setDigits(0);\r
-        regrandom->getR()->setIncrements(1, 10);\r
-    }\r
-}\r
-\r
-void\r
-RandomParam::resetRandomizer()\r
-{\r
-    seed = startseed;\r
-}\r
-\r
-\r
-Gtk::Widget *\r
-RandomParam::param_getWidget()\r
-{\r
-    // TODO: add  a button to set a different startseed\r
-    if (!regrandom) {\r
-        regrandom = new Inkscape::UI::Widget::RegisteredRandom();\r
-        regrandom->init(param_label, param_tooltip, param_key, *param_wr, param_effect->getRepr(), param_effect->getSPDoc());\r
-        regrandom->setValue(value, startseed);\r
-        if (integer)\r
-            param_make_integer();\r
-\r
-        regrandom->set_undo_parameters(SP_VERB_DIALOG_LIVE_PATH_EFFECT, _("Change random parameter"));\r
-    }\r
-    return dynamic_cast<Gtk::Widget *> (regrandom->getR());\r
-}\r
-\r
-RandomParam::operator gdouble()\r
-{\r
-    return rand() * value;\r
-};\r
-\r
-/* RNG stolen from /display/nr-filter-turbulence.cpp */\r
-#define RAND_m 2147483647 /* 2**31 - 1 */\r
-#define RAND_a 16807 /* 7**5; primitive root of m */\r
-#define RAND_q 127773 /* m / a */\r
-#define RAND_r 2836 /* m % a */\r
-#define BSize 0x100\r
-\r
-long\r
-RandomParam::setup_seed(long lSeed)\r
-{\r
-  if (lSeed <= 0) lSeed = -(lSeed % (RAND_m - 1)) + 1;\r
-  if (lSeed > RAND_m - 1) lSeed = RAND_m - 1;\r
-  return lSeed;\r
-}\r
-\r
-// generates random number between 0 and 1\r
-gdouble\r
-RandomParam::rand()\r
-{\r
-  long result;\r
-  result = RAND_a * (seed % RAND_q) - RAND_r * (seed / RAND_q);\r
-  if (result <= 0) result += RAND_m;\r
-  seed = result;\r
-\r
-  gdouble dresult = (gdouble)(result % BSize) / BSize;\r
-  return dresult;\r
-}\r
-\r
-\r
-} /* namespace LivePathEffect */\r
-} /* namespace Inkscape */\r
-\r
-/*\r
-  Local Variables:\r
-  mode:c++\r
-  c-file-style:"stroustrup"\r
-  c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))\r
-  indent-tabs-mode:nil\r
-  fill-column:99\r
-  End:\r
-*/\r
-// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4 :\r
+#define INKSCAPE_LIVEPATHEFFECT_PARAMETER_RANDOM_CPP
+
+/*
+ * Copyright (C) Johan Engelen 2007 <j.b.c.engelen@utwente.nl>
+ *
+ * Released under GNU GPL, read the file 'COPYING' for more information
+ */
+
+#include "live_effects/parameter/random.h"
+#include "live_effects/effect.h"
+#include "svg/svg.h"
+#include "libnr/nr-values.h"
+
+#include <gtkmm.h>
+#include "ui/widget/random.h"
+
+#include "svg/stringstream.h"
+
+#include "verbs.h"
+
+#define noLPERANDOMPARAM_DEBUG
+
+namespace Inkscape {
+
+namespace LivePathEffect {
+
+
+RandomParam::RandomParam( const Glib::ustring& label, const Glib::ustring& tip,
+                      const Glib::ustring& key, Inkscape::UI::Widget::Registry* wr,
+                      Effect* effect, gdouble default_value, long default_seed)
+    : Parameter(label, tip, key, wr, effect)
+{
+    defvalue = default_value;
+    value = defvalue;
+    min = -NR_HUGE;
+    max = NR_HUGE;
+    integer = false;
+
+    defseed = default_seed;
+    startseed = defseed;
+    seed = startseed;
+}
+
+RandomParam::~RandomParam()
+{
+}
+
+bool
+RandomParam::param_readSVGValue(const gchar * strvalue)
+{
+    double newval, newstartseed;
+    gchar** stringarray = g_strsplit (strvalue, ";", 2);
+    unsigned int success = sp_svg_number_read_d(stringarray[0], &newval);
+    if (success == 1) {
+        success += sp_svg_number_read_d(stringarray[1], &newstartseed);
+        if (success == 2) {
+            param_set_value(newval, newstartseed);
+        } else {
+            param_set_value(newval, defseed);
+        }
+        g_strfreev(stringarray);
+        return true;
+    }
+    g_strfreev(stringarray);
+    return false;
+}
+
+gchar *
+RandomParam::param_writeSVGValue() const
+{
+    Inkscape::SVGOStringStream os;
+    os << value << ';' << startseed;
+    gchar * str = g_strdup(os.str().c_str());
+    return str;
+}
+
+void
+RandomParam::param_set_default()
+{
+    param_set_value(defvalue, defseed);
+}
+
+void
+RandomParam::param_set_value(gdouble val, long newseed)
+{
+    value = val;
+    if (integer)
+        value = round(value);
+    if (value > max)
+        value = max;
+    if (value < min)
+        value = min;
+
+    startseed = setup_seed(newseed);
+    seed = startseed;
+}
+
+void
+RandomParam::param_set_range(gdouble min, gdouble max)
+{
+    this->min = min;
+    this->max = max;
+}
+
+void
+RandomParam::param_make_integer(bool yes)
+{
+    integer = yes;
+}
+
+void
+RandomParam::resetRandomizer()
+{
+    seed = startseed;
+}
+
+
+Gtk::Widget *
+RandomParam::param_newWidget(Gtk::Tooltips * /*tooltips*/)
+{
+    Inkscape::UI::Widget::RegisteredRandom* regrandom = Gtk::manage(
+        new Inkscape::UI::Widget::RegisteredRandom( param_label,
+                                                    param_tooltip,
+                                                    param_key,
+                                                    *param_wr,
+                                                    param_effect->getRepr(),
+                                                    param_effect->getSPDoc() )  );
+
+    regrandom->setValue(value, startseed);
+    if (integer) {
+        regrandom->setDigits(0);
+        regrandom->setIncrements(1, 10);
+    }
+    regrandom->setRange(min, max);
+    regrandom->setProgrammatically = false;
+
+    regrandom->set_undo_parameters(SP_VERB_DIALOG_LIVE_PATH_EFFECT, _("Change random parameter"));
+
+    return dynamic_cast<Gtk::Widget *> (regrandom);
+}
+
+RandomParam::operator gdouble()
+{
+    return rand() * value;
+};
+
+/* RNG stolen from /display/nr-filter-turbulence.cpp */
+#define RAND_m 2147483647 /* 2**31 - 1 */
+#define RAND_a 16807 /* 7**5; primitive root of m */
+#define RAND_q 127773 /* m / a */
+#define RAND_r 2836 /* m % a */
+#define BSize 0x100
+
+long
+RandomParam::setup_seed(long lSeed)
+{
+  if (lSeed <= 0) lSeed = -(lSeed % (RAND_m - 1)) + 1;
+  if (lSeed > RAND_m - 1) lSeed = RAND_m - 1;
+  return lSeed;
+}
+
+// generates random number between 0 and 1
+gdouble
+RandomParam::rand()
+{
+  long result;
+  result = RAND_a * (seed % RAND_q) - RAND_r * (seed / RAND_q);
+  if (result <= 0) result += RAND_m;
+  seed = result;
+
+  gdouble dresult = (gdouble)(result % BSize) / BSize;
+  return dresult;
+}
+
+
+} /* namespace LivePathEffect */
+} /* namespace Inkscape */
+
+/*
+  Local Variables:
+  mode:c++
+  c-file-style:"stroustrup"
+  c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
+  indent-tabs-mode:nil
+  fill-column:99
+  End:
+*/
+// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4 :