From 73644be944820f2a81ed861f7bab1e0559c22838 Mon Sep 17 00:00:00 2001 From: Guenter Geiger Date: Tue, 30 Jul 2002 19:20:23 +0000 Subject: next step towards gui revival svn path=/trunk/externals/ggee/; revision=64 --- gui/slider.c | 117 ++++++++++++++++++++++++++++------------------------------- 1 file changed, 55 insertions(+), 62 deletions(-) (limited to 'gui/slider.c') 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 */ - - -/* ------------------------ 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 +#include "g_canvas.h" +#include + +#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); +} -- cgit v1.2.1