From fbe904db7e926e731e711665d244798d26ca8064 Mon Sep 17 00:00:00 2001
From: Thomas O Fredericks <mrtof@users.sourceforge.net>
Date: Sat, 24 Oct 2009 23:41:59 +0000
Subject: Modified increment

svn path=/trunk/externals/tof/; revision=12665
---
 help/increment-help.pd | 73 +++++++++++++++++++--------------------------
 src/increment.c        | 81 +++++++++++++++++++++++++++++++++-----------------
 2 files changed, 85 insertions(+), 69 deletions(-)

diff --git a/help/increment-help.pd b/help/increment-help.pd
index 3efa96c..8892e1d 100644
--- a/help/increment-help.pd
+++ b/help/increment-help.pd
@@ -1,53 +1,42 @@
 #N canvas 1174 80 640 574 10;
 #X obj 22 -23 cnv 15 400 100 empty empty empty 20 12 0 14 -249661 -66577
 0;
-#X text 27 11 author: mrtoftrash@gmail.com;
-#X text 27 22 version: 2009-05-07 (initial release);
-#X msg 101 166 3;
-#X msg 62 166 6;
-#X obj 306 347 print;
+#X text 26 15 author: mrtoftrash@gmail.com;
+#X msg 115 181 3;
+#X msg 76 181 6;
 #X text 27 -24 description: increment a number.;
 #X text 28 0 tags: flow counter;
-#X obj 27 251 increment;
-#X msg 134 182 1;
-#X msg 166 182 -1;
 #X obj 27 120 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
 -1;
 #X obj 27 279 print;
-#X obj 305 287 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
--1 -1;
-#X obj 306 316 increment 10 3;
-#X text 22 89 First inlet:;
-#X text 22 100 Bang: Outputs and increments the value.;
-#X text 60 147 Second inlet: sets the value;
-#X text 135 162 Third inlet: sets the step(incrementation) amount;
-#X obj 49 479 print;
-#X obj 49 321 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
+#X text 24 82 First inlet:;
+#X obj 38 427 print;
+#X obj 38 317 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
 -1;
-#X msg 72 349 set 43;
-#X msg 96 376 step 5;
-#X msg 125 402 reset;
-#X obj 49 448 increment 10 3;
-#X text 298 248 Argument 1: start value (defaults to 0);
-#X text 298 263 Argument 2: step(incrementation) value (defaults to
-1);
-#X text 118 349 Set the start value;
-#X text 144 376 Set the step value;
-#X text 171 400 Reset to the start value;
+#X msg 61 345 set 43;
+#X text 160 387 Argument 1: start value (defaults to 0);
 #X obj 166 211 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
 -1 -1;
-#X text 188 205 Fourth inlet: resets;
-#X connect 3 0 8 1;
-#X connect 4 0 8 1;
-#X connect 8 0 12 0;
-#X connect 9 0 8 2;
-#X connect 10 0 8 2;
-#X connect 11 0 8 0;
-#X connect 13 0 14 0;
-#X connect 14 0 5 0;
-#X connect 20 0 24 0;
-#X connect 21 0 24 0;
-#X connect 22 0 24 0;
-#X connect 23 0 24 0;
-#X connect 24 0 19 0;
-#X connect 30 0 8 3;
+#X obj 27 251 tof/increment;
+#X obj 38 396 tof/increment 10 3;
+#X text 26 30 version: 2009-10-23 (two inlet version);
+#X text 107 345 Set the value;
+#X text 135 145 Second inlet:;
+#X text 150 175 bang: resets to 0;
+#X text 149 162 float: sets value;
+#X text 69 96 bang: outputs and increments the value;
+#X text 70 109 float: sets increment amount and outputs incremented
+value;
+#X text 160 402 Argument 2: incrementation amount (defaults to 1);
+#X msg 51 139 2;
+#X msg 78 367 1;
+#X connect 2 0 14 1;
+#X connect 3 0 14 1;
+#X connect 6 0 14 0;
+#X connect 10 0 15 0;
+#X connect 11 0 15 0;
+#X connect 13 0 14 1;
+#X connect 14 0 7 0;
+#X connect 15 0 9 0;
+#X connect 24 0 14 0;
+#X connect 25 0 15 0;
diff --git a/src/increment.c b/src/increment.c
index b5a8a59..16ac0d6 100644
--- a/src/increment.c
+++ b/src/increment.c
@@ -1,6 +1,8 @@
 #include "m_pd.h"
 
 static t_class *increment_class;
+static t_class *increment_inlet2_class;
+struct _increment_inlet2;
 
 typedef struct _increment {
   t_object  x_obj;
@@ -8,10 +10,17 @@ typedef struct _increment {
   t_float value;
   t_float inc;
   t_outlet* outlet1;
-  t_float start;
+  //t_float start;
+  struct _increment_inlet2*	  inlet2;
   //t_outlet* outlet2;
 } t_increment;
 
+typedef struct _increment_inlet2 {
+	t_object                    x_obj;
+	t_increment					*x;
+} t_increment_inlet2;
+
+
 
 static void increment_bang(t_increment *x)
 {
@@ -22,9 +31,7 @@ static void increment_bang(t_increment *x)
 		x->value = x->value + x->inc;
 	}
 	 outlet_float(x->outlet1,x->value);
-	
-	 
-  
+
 }
 /*
 static void increment_float(t_increment *x, t_float f)
@@ -34,43 +41,48 @@ static void increment_float(t_increment *x, t_float f)
 }
 */
 
-static void increment_step(t_increment *x, t_float f)
+static void increment_float(t_increment *x, t_float f)
 {
   x->inc = f;
+  increment_bang(x);
 
 }
 
-static void increment_reset(t_increment *x)
+static void increment_inlet2_bang(t_increment_inlet2 *x)
 {
 	
-	//post("before");
- // post("start:%d",(int)x->start);
- // post("value:%d",(int)x->value);
+
   
-  x->value = x->start;
-  x->reset = 1;
+  x->x->value = 0;
+  x->x->reset = 1;
   
- // post("after");
-  //post("start:%d",(int)x->start);
-  //post("value:%d",(int)x->value);
+ 
 }
 
+
 static void increment_set(t_increment *x, t_float f)
 {
-	
-  
- 
   x->value = f;
-  x->start = f;
   x->reset = 1;
   
+}
+
+static void increment_inlet2_float(t_increment_inlet2 *x, t_float f)
+{
+	
+	//post("before");
+ // post("start:%d",(int)x->start);
+ // post("value:%d",(int)x->value);
   
+  increment_set(x->x, f);
   
+ // post("after");
+  //post("start:%d",(int)x->start);
+  //post("value:%d",(int)x->value);
 }
 
 
 
-
 /*
 void increment_list(t_increment *x,t_symbol *s, int argc, t_atom *argv)
 {
@@ -109,19 +121,25 @@ void *increment_new(t_symbol *s, int argc, t_atom *argv)
 	x->inc = 1;
   }
   
-  x->start = x->value;
+  //x->start = x->value;
   
   //post("start:%d",(int)x->start);
   //post("value:%d",(int)x->value);
   
-   inlet_new(&x->x_obj, &x->x_obj.ob_pd,
-        gensym("float"), gensym("set"));
+   //inlet_new(&x->x_obj, &x->x_obj.ob_pd,
+       // gensym("float"), gensym("set"));
 
-  floatinlet_new(&x->x_obj, &x->inc);
+  //floatinlet_new(&x->x_obj, &x->inc);
   
-  inlet_new(&x->x_obj, &x->x_obj.ob_pd,
-        gensym("bang"), gensym("reset"));
+  //inlet_new(&x->x_obj, &x->x_obj.ob_pd,
+   //     gensym("bang"), gensym("reset"));
+   
+  t_increment_inlet2 *inlet2 = (t_increment_inlet2 *)pd_new(increment_inlet2_class);
   
+  inlet2->x = x;
+  x->inlet2 = inlet2;
+   
+  inlet_new((t_object *)x, (t_pd *)inlet2, 0, 0);
 
   x->outlet1 = outlet_new(&x->x_obj, &s_float);
   //x->outlet2 = outlet_new(&x->x_obj, &s_float);
@@ -138,17 +156,26 @@ void increment_setup(void) {
         A_GIMME, 0);
 
   class_addbang  (increment_class, increment_bang);
-  //class_addfloat (increment_class, increment_float);
+  class_addfloat (increment_class, increment_float);
   class_addmethod(increment_class, 
         (t_method)increment_set, gensym("set"),
         A_DEFFLOAT, 0);
+        
+increment_inlet2_class = class_new(gensym("increment_inlet2"),
+    0, 0, sizeof(t_increment_inlet2), CLASS_PD | CLASS_NOINLET, 0);
+ 
+ class_addbang(increment_inlet2_class, increment_inlet2_bang);
+ class_addfloat(increment_inlet2_class, increment_inlet2_float);
+        
+        
+        /*
 	class_addmethod(increment_class, 
         (t_method)increment_step, gensym("step"),
         A_DEFFLOAT, 0);
 	class_addmethod(increment_class,
 		(t_method)increment_reset, gensym("reset"),
 		0);
-
+   */
   //class_addlist (increment_class, increment_list);
   
 }
-- 
cgit v1.2.1