diff options
Diffstat (limited to 'gui/slider.c')
-rwxr-xr-x | gui/slider.c | 117 |
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); +} |