aboutsummaryrefslogtreecommitdiff
path: root/gui/slider.c
diff options
context:
space:
mode:
authorGuenter Geiger <ggeiger@users.sourceforge.net>2002-07-30 19:20:23 +0000
committerGuenter Geiger <ggeiger@users.sourceforge.net>2002-07-30 19:20:23 +0000
commit73644be944820f2a81ed861f7bab1e0559c22838 (patch)
tree403e1dd0da602294f40c7f5c0e02656afb99b959 /gui/slider.c
parentd03163cea16c8056fc8095ead5acfbaacebde7ee (diff)
next step towards gui revival
svn path=/trunk/externals/ggee/; revision=64
Diffstat (limited to 'gui/slider.c')
-rwxr-xr-xgui/slider.c117
1 files changed, 55 insertions, 62 deletions
diff --git a/gui/slider.c b/gui/slider.c
index 22b3c69..fdb0613 100755
--- a/gui/slider.c
+++ b/gui/slider.c
@@ -1,62 +1,55 @@
-/* (C) Guenter Geiger <geiger@epy.co.at> */
-
-
-/* ------------------------ slider ----------------------------- */
-
-#include "slider.h"
-
-static t_class *slider_class;
-
-
-static void *slider_new(t_floatarg h,t_floatarg o,t_floatarg w,t_floatarg n,t_floatarg horiz)
-{
- t_slider *x = (t_slider *)pd_new(slider_class);
- x->x_glist = (t_glist*) canvas_getcurrent();
-
- if (w) x->x_width = w;
- else x->x_width = 15;
- if (h) x->x_height = h - o;
- else
- x->x_height = 127;
- x->x_offset = o;
- x->x_pos = o;
- x->x_pos2 = o;
- x->a_pos.a_type = A_FLOAT;
- if (n) x->x_num = n;
- else x->x_num = 1;
- outlet_new(&x->x_obj, &s_float);
-
-/* make us think we're an atom .. we are one ... this doesn work,
- because the object resets it .. so we will have to create our own menu entry later */
-/* x->x_obj.te_type = T_ATOM; */
- x->x_horizontal = horiz;
-
- return (x);
-}
-
-
-
-void slider_setup(void)
-{
- slider_class = class_new(gensym("slider"), (t_newmethod)slider_new, 0,
- sizeof(t_slider), 0,A_DEFFLOAT,A_DEFFLOAT,A_DEFFLOAT,A_DEFFLOAT,A_DEFFLOAT,0);
- class_addbang(slider_class,slider_bang);
- class_addfloat(slider_class,slider_float);
-
- class_addmethod(slider_class, (t_method)slider_mark, gensym("mark"),
- A_FLOAT, 0);
-
-
- class_addmethod(slider_class, (t_method)slider_click, gensym("click"),
- A_FLOAT, A_FLOAT, A_FLOAT, A_FLOAT, A_FLOAT, 0);
- class_addmethod(slider_class, (t_method)slider_motion, gensym("motion"),
- A_FLOAT, A_FLOAT, 0);
- class_addmethod(slider_class, (t_method)slider_set, gensym("set"),
-A_FLOAT, 0);
- class_addmethod(slider_class, (t_method)slider_type, gensym("type"),A_FLOAT,0);
-
-
- slider_setwidget();
- class_setwidget(slider_class,&slider_widgetbehavior);
-}
-
+#include <m_pd.h>
+#include "g_canvas.h"
+#include <ggee.h>
+
+#ifdef NT
+#pragma warning( disable : 4244 )
+#pragma warning( disable : 4305 )
+#endif
+
+#include "fatom.h"
+
+/* can we use the normal text save function ?? */
+
+static t_class *slider_class;
+
+static void slider_save(t_gobj *z, t_binbuf *b)
+{
+
+ t_fatom *x = (t_fatom *)z;
+
+ binbuf_addv(b, "ssiisiii", gensym("#X"),gensym("obj"),
+ x->x_obj.te_xpix, x->x_obj.te_ypix ,
+ gensym("slider"),x->x_max,x->x_min,x->x_width);
+ binbuf_addv(b, ";");
+}
+
+
+static void *slider_new(t_floatarg max, t_floatarg min, t_floatarg h)
+{
+ t_fatom *x = (t_fatom *)pd_new(slider_class);
+ x->x_type = gensym("vslider");
+ return fatom_new(x,max,min,h);
+}
+
+
+t_widgetbehavior slider_widgetbehavior = {
+ w_getrectfn: fatom_getrect,
+ w_displacefn: fatom_displace,
+ w_selectfn: fatom_select,
+ w_activatefn: fatom_activate,
+ w_deletefn: fatom_delete,
+ w_visfn: fatom_vis,
+ w_savefn: slider_save,
+ w_clickfn: NULL,
+ w_propertiesfn: NULL,
+};
+
+
+void slider_setup() {
+ slider_class = class_new(gensym("slider"), (t_newmethod)slider_new, 0,
+ sizeof(t_fatom),0,A_DEFFLOAT,A_DEFFLOAT,A_DEFFLOAT,0);
+
+ fatom_setup_common(slider_class);
+ class_setwidget(slider_class,&slider_widgetbehavior);
+}