summaryrefslogtreecommitdiffstats
path: root/src/live_effects/parameter/random.cpp
diff options
context:
space:
mode:
authorPeter Moulder <peter.moulder@monash.edu>2007-10-11 14:30:52 +0000
committerpjrm <pjrm@users.sourceforge.net>2007-10-11 14:30:52 +0000
commitb7403d737c0549e540393bfe92160a5fc7b407a1 (patch)
tree784c7cbfd26a14f67679376a700dce1d61262bb1 /src/live_effects/parameter/random.cpp
parenttrivial: ui/widget/*, ui/dialog/*: svn propset svn:eol-style native *.h *.cpp. (diff)
downloadinkscape-b7403d737c0549e540393bfe92160a5fc7b407a1.tar.gz
inkscape-b7403d737c0549e540393bfe92160a5fc7b407a1.zip
trivial: live_effects/**: svn propset svn:eol-style native *.h *.cpp.
(bzr r3884)
Diffstat (limited to 'src/live_effects/parameter/random.cpp')
-rw-r--r--src/live_effects/parameter/random.cpp388
1 files changed, 194 insertions, 194 deletions
diff --git a/src/live_effects/parameter/random.cpp b/src/live_effects/parameter/random.cpp
index 846c2f9e8..959b21114 100644
--- a/src/live_effects/parameter/random.cpp
+++ b/src/live_effects/parameter/random.cpp
@@ -1,194 +1,194 @@
-#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;
- regrandom = NULL;
-
- defseed = default_seed;
- startseed = defseed;
- seed = startseed;
-}
-
-RandomParam::~RandomParam()
-{
- if (regrandom)
- delete regrandom;
-}
-
-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;
-
- if (regrandom)
- regrandom->setValue(value, startseed);
-}
-
-void
-RandomParam::param_set_range(gdouble min, gdouble max)
-{
- this->min = min;
- this->max = max;
- if (regrandom)
- regrandom->getR()->setRange(min, max);
-
- param_set_value(value, startseed); // reset value, to check whether it is in range
-}
-
-void
-RandomParam::param_make_integer(bool yes)
-{
- integer = yes;
- if (regrandom) {
- regrandom->getR()->setDigits(0);
- regrandom->getR()->setIncrements(1, 10);
- }
-}
-
-void
-RandomParam::resetRandomizer()
-{
- seed = startseed;
-}
-
-
-Gtk::Widget *
-RandomParam::param_getWidget()
-{
- // TODO: add a button to set a different startseed
- if (!regrandom) {
- regrandom = new Inkscape::UI::Widget::RegisteredRandom();
- regrandom->init(param_label, param_tooltip, param_key, *param_wr, param_effect->getRepr(), param_effect->getSPDoc());
- regrandom->setValue(value, startseed);
- if (integer)
- param_make_integer();
-
- regrandom->set_undo_parameters(SP_VERB_DIALOG_LIVE_PATH_EFFECT, _("Change random parameter"));
- }
- return dynamic_cast<Gtk::Widget *> (regrandom->getR());
-}
-
-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 :
+#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;
+ regrandom = NULL;
+
+ defseed = default_seed;
+ startseed = defseed;
+ seed = startseed;
+}
+
+RandomParam::~RandomParam()
+{
+ if (regrandom)
+ delete regrandom;
+}
+
+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;
+
+ if (regrandom)
+ regrandom->setValue(value, startseed);
+}
+
+void
+RandomParam::param_set_range(gdouble min, gdouble max)
+{
+ this->min = min;
+ this->max = max;
+ if (regrandom)
+ regrandom->getR()->setRange(min, max);
+
+ param_set_value(value, startseed); // reset value, to check whether it is in range
+}
+
+void
+RandomParam::param_make_integer(bool yes)
+{
+ integer = yes;
+ if (regrandom) {
+ regrandom->getR()->setDigits(0);
+ regrandom->getR()->setIncrements(1, 10);
+ }
+}
+
+void
+RandomParam::resetRandomizer()
+{
+ seed = startseed;
+}
+
+
+Gtk::Widget *
+RandomParam::param_getWidget()
+{
+ // TODO: add a button to set a different startseed
+ if (!regrandom) {
+ regrandom = new Inkscape::UI::Widget::RegisteredRandom();
+ regrandom->init(param_label, param_tooltip, param_key, *param_wr, param_effect->getRepr(), param_effect->getSPDoc());
+ regrandom->setValue(value, startseed);
+ if (integer)
+ param_make_integer();
+
+ regrandom->set_undo_parameters(SP_VERB_DIALOG_LIVE_PATH_EFFECT, _("Change random parameter"));
+ }
+ return dynamic_cast<Gtk::Widget *> (regrandom->getR());
+}
+
+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 :