aboutsummaryrefslogtreecommitdiff
path: root/packages/patches/bang_method_for_clip-0.40.pre.patch
blob: d97b2e118e481984dad5993941a695233c0a0fcd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
--- x_arithmetic.c	Sat Jan 28 10:06:59 2006
+++ x_arithmetic.c	Tue Feb  7 17:04:27 2006
@@ -672,23 +677,31 @@
     t_object x_ob;
     float x_f1;
     float x_f2;
+    float x_f3;
 } t_clip;
 
 static void *clip_new(t_floatarg f1, t_floatarg f2)
 {
     t_clip *x = (t_clip *)pd_new(clip_class);
-    floatinlet_new(&x->x_ob, &x->x_f1);
     floatinlet_new(&x->x_ob, &x->x_f2);
+    floatinlet_new(&x->x_ob, &x->x_f3);
     outlet_new(&x->x_ob, &s_float);
-    x->x_f1 = f1;
-    x->x_f2 = f2;
+    x->x_f2 = f1;
+    x->x_f3 = f2;
     return (x);
 }
 
+static void clip_bang(t_clip *x)
+{
+	outlet_float(x->x_ob.ob_outlet, (x->x_f1 < x->x_f2 ? x->x_f2 : (
+        x->x_f1 > x->x_f3 ? x->x_f3 : x->x_f1)));
+}
+
 static void clip_float(t_clip *x, t_float f)
 {
-    outlet_float(x->x_ob.ob_outlet, (f < x->x_f1 ? x->x_f1 : (
-        f > x->x_f2 ? x->x_f2 : f)));
+	x->x_f1 = f;
+	outlet_float(x->x_ob.ob_outlet, (x->x_f1 < x->x_f2 ? x->x_f2 : (
+        x->x_f1 > x->x_f3 ? x->x_f3 : x->x_f1)));
 }
 
 static void clip_setup(void)
@@ -696,6 +709,7 @@
     clip_class = class_new(gensym("clip"), (t_newmethod)clip_new, 0,
         sizeof(t_clip), 0, A_DEFFLOAT, A_DEFFLOAT, 0);
     class_addfloat(clip_class, clip_float);
+    class_addbang(clip_class, clip_bang);
 }
 
 void x_arithmetic_setup(void)