From 82ec6b1db025e1dfa56238ba9bebd672f26c4c54 Mon Sep 17 00:00:00 2001 From: Mathieu L Bouchard <matju@artengine.ca> Date: Mon, 11 Aug 2014 17:42:47 -0400 Subject: [PATCH] =?UTF-8?q?big=20refactoring=20#9=C2=A0:=20merging=20of=20?= =?UTF-8?q?horizontal/vertical=20classes=20is=20completed?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pd/src/g_all_guis.c | 139 ++++-------- pd/src/g_all_guis.h | 7 +- pd/src/g_bang.c | 36 +-- pd/src/g_canvas.c | 2 - pd/src/g_mycanvas.c | 3 +- pd/src/g_numbox.c | 10 +- pd/src/g_radio.c | 542 +++++++++++--------------------------------- pd/src/g_slider.c | 528 ++++++++++-------------------------------- pd/src/g_toggle.c | 17 +- pd/src/g_vumeter.c | 11 +- pd/src/m_conf.c | 12 +- 11 files changed, 330 insertions(+), 977 deletions(-) diff --git a/pd/src/g_all_guis.c b/pd/src/g_all_guis.c index 4c1d24c19..1db98d77a 100644 --- a/pd/src/g_all_guis.c +++ b/pd/src/g_all_guis.c @@ -14,22 +14,11 @@ #include "m_pd.h" #include "g_canvas.h" #include "m_imp.h" -#include "t_tk.h" #include "g_all_guis.h" #include <math.h> -#ifdef HAVE_UNISTD_H -#include <unistd.h> -#endif - -#ifdef HAVE_IO_H -#include <io.h> -#endif - t_symbol *s_empty; -/*------------------ global varaibles -------------------------*/ - int iemgui_color_hex[]= { 16579836, 10526880, 4210752, 16572640, 16572608, @@ -40,9 +29,6 @@ int iemgui_color_hex[]= 7874580, 2641940, 17488, 5256, 5767248 }; -/*------------------ global functions -------------------------*/ - - int iemgui_clip_size(int size) { if(size < IEM_GUI_MINSIZE) @@ -165,8 +151,7 @@ static void iemgui_init_sym2dollararg(t_iemgui *iemgui, t_symbol **symp, } } - /* get the unexpanded versions of the symbols; initialize them if - necessary. */ +/* get the unexpanded versions of the symbols; initialize them if necessary. */ void iemgui_all_sym2dollararg(t_iemgui *iemgui, t_symbol **srlsym) { iemgui_init_sym2dollararg(iemgui, &iemgui->x_snd_unexpanded, @@ -180,51 +165,30 @@ void iemgui_all_sym2dollararg(t_iemgui *iemgui, t_symbol **srlsym) srlsym[2] = iemgui->x_lab_unexpanded; } +static int col2save(int col) { + return -1-(((0xfc0000 & col) >> 6)|((0xfc00 & col) >> 4)|((0xfc & col) >> 2)); +} void iemgui_all_col2save(t_iemgui *iemgui, int *bflcol) { - bflcol[0] = -1 - (((0xfc0000 & iemgui->x_bcol) >> 6)| - ((0xfc00 & iemgui->x_bcol) >> 4)|((0xfc & iemgui->x_bcol) >> 2)); - bflcol[1] = -1 - (((0xfc0000 & iemgui->x_fcol) >> 6)| - ((0xfc00 & iemgui->x_fcol) >> 4)|((0xfc & iemgui->x_fcol) >> 2)); - bflcol[2] = -1 - (((0xfc0000 & iemgui->x_lcol) >> 6)| - ((0xfc00 & iemgui->x_lcol) >> 4)|((0xfc & iemgui->x_lcol) >> 2)); + bflcol[0] = col2save(iemgui->x_bcol); + bflcol[1] = col2save(iemgui->x_fcol); + bflcol[2] = col2save(iemgui->x_lcol); } -void iemgui_all_colfromload(t_iemgui *iemgui, int *bflcol) -{ - if(bflcol[0] < 0) - { - bflcol[0] = -1 - bflcol[0]; - iemgui->x_bcol = ((bflcol[0] & 0x3f000) << 6)|((bflcol[0] & 0xfc0) << 4)| - ((bflcol[0] & 0x3f) << 2); - } - else - { - bflcol[0] = iemgui_modulo_color(bflcol[0]); - iemgui->x_bcol = iemgui_color_hex[bflcol[0]]; - } - if(bflcol[1] < 0) - { - bflcol[1] = -1 - bflcol[1]; - iemgui->x_fcol = ((bflcol[1] & 0x3f000) << 6)|((bflcol[1] & 0xfc0) << 4)| - ((bflcol[1] & 0x3f) << 2); - } - else - { - bflcol[1] = iemgui_modulo_color(bflcol[1]); - iemgui->x_fcol = iemgui_color_hex[bflcol[1]]; - } - if(bflcol[2] < 0) +static int colfromload(int col) { + if(col) { - bflcol[2] = -1 - bflcol[2]; - iemgui->x_lcol = ((bflcol[2] & 0x3f000) << 6)|((bflcol[2] & 0xfc0) << 4)| - ((bflcol[2] & 0x3f) << 2); + col = -1-col; + return ((col & 0x3f000) << 6)|((col & 0xfc0) << 4)|((col & 0x3f) << 2); } else - { - bflcol[2] = iemgui_modulo_color(bflcol[2]); - iemgui->x_lcol = iemgui_color_hex[bflcol[2]]; - } + return iemgui_color_hex[iemgui_modulo_color(col)]; +} +void iemgui_all_colfromload(t_iemgui *iemgui, int *bflcol) +{ + iemgui->x_bcol = colfromload(bflcol[0]); + iemgui->x_fcol = colfromload(bflcol[1]); + iemgui->x_lcol = colfromload(bflcol[2]); } static int iemgui_compatible_col(int i) @@ -370,30 +334,15 @@ void iemgui_label_getrect(t_iemgui x_gui, t_glist *x, if (x->gl_isgraph && !glist_istoplevel(x)) { - //fprintf(stderr,"iemgui_label_getrect\n"); - if (x_gui.x_lab!=s_empty) { switch(x_gui.x_font_style) { - case 1: - width_multiplier = 0.83333; - break; - case 2: - width_multiplier = 0.735; - break; - default: - width_multiplier = 1.0; - break; - } - if (x_gui.x_fontsize % 2 == 0) - { - actual_fontsize = x_gui.x_fontsize; - } - else - { - actual_fontsize = x_gui.x_fontsize; + case 1: width_multiplier = 0.83333; break; + case 2: width_multiplier = 0.735; break; + default: width_multiplier = 1.0; break; } + actual_fontsize = x_gui.x_fontsize; actual_height = actual_fontsize; //exceptions if (x_gui.x_font_style == 0 && @@ -577,7 +526,7 @@ void iemgui_displace_withtag(t_gobj *z, t_glist *glist, int dx, int dy) t_iemgui *x = (t_iemgui *)z; x->x_obj.te_xpix += dx; x->x_obj.te_ypix += dy; - //(*x->x_gui.x_draw)((void *)z, glist, IEM_GUI_DRAW_MODE_MOVE); + //x->x_gui.x_draw((void *)z, glist, IEM_GUI_DRAW_MODE_MOVE); canvas_fixlinesfor(glist_getcanvas(glist), (t_text *)z); } @@ -587,7 +536,7 @@ void iemgui_select(t_gobj *z, t_glist *glist, int selected) t_iemgui *x = (t_iemgui *)z; x->x_selected = selected; - (*x->x_draw)((void *)z, glist, IEM_GUI_DRAW_MODE_SELECT); + x->x_draw((void *)z, glist, IEM_GUI_DRAW_MODE_SELECT); } void iemgui_delete(t_gobj *z, t_glist *glist) @@ -602,15 +551,14 @@ void iemgui_vis(t_gobj *z, t_glist *glist, int vis) { if (vis) { - (*x->x_draw)((void *)z, glist, IEM_GUI_DRAW_MODE_NEW); - x->x_vis = 1; + x->x_draw((void *)z, glist, IEM_GUI_DRAW_MODE_NEW); } else { - (*x->x_draw)((void *)z, glist, IEM_GUI_DRAW_MODE_ERASE); + x->x_draw((void *)z, glist, IEM_GUI_DRAW_MODE_ERASE); sys_unqueuegui(z); - x->x_vis = 0; } + x->x_vis = vis; } } @@ -771,12 +719,22 @@ void scalehandle_bind(t_scalehandle *h) { // in 18 cases only, because canvas does not fit the pattern below. // canvas has no label handle and has a motion handle // but in the case of canvas, the "iemgui" tag is added (it wasn't the case originally) -void scalehandle_draw_select(t_scalehandle *h, t_glist *canvas, int px, int py, -const char *nlet_tag) { +void scalehandle_draw_select(t_scalehandle *h, t_glist *canvas, int px, int py, const char *nlet_tag) { char tags[128]; // BNG may need up to 100 chars in 64-bit mode, for example - t_text *x = (t_text *)h->h_master; + t_iemgui *x = (t_iemgui *)h->h_master; //if (!nlet_tag) nlet_tag = iem_get_tag(canvas, (t_iemgui *)x); + //int px,py; + //t_class *c = pd_class((t_pd *)x); + //if (h->h_scale) { + // int x1,y1,x2,y2; + // c->c_wb->w_getrectfn((t_gobj *)x,canvas,&x1,&y1,&x2,&y2); + // px=x2-x1; py=y2-y1; + //} else if (c==canvas_class) { + //} else { + // px=x->x_ldx; py=x->x_ldy; + //} + const char *cursor = h->h_scale ? "bottom_right_corner" : "crosshair"; int sx = h->h_scale ? SCALEHANDLE_WIDTH : LABELHANDLE_WIDTH; int sy = h->h_scale ? SCALEHANDLE_HEIGHT : LABELHANDLE_HEIGHT; @@ -785,8 +743,8 @@ const char *nlet_tag) { if (h->h_vis) scalehandle_draw_erase(h,canvas); -// sys_vgui("canvas %s -width %d -height %d -bg $pd_colors(selection) -bd 0 " - sys_vgui("canvas %s -width %d -height %d -bg #0080ff -bd 0 " + sys_vgui("canvas %s -width %d -height %d -bg $pd_colors(selection) -bd 0 " +// sys_vgui("canvas %s -width %d -height %d -bg #0080ff -bd 0 " "-cursor %s\n", h->h_pathname, sx, sy, cursor); // there was a %lxBNG tag (or similar) in every scalehandle, // but it didn't seem to be used —mathieu @@ -799,19 +757,20 @@ const char *nlet_tag) { (long)x,pd_class((t_pd *)x)==canvas_class?"MOVE":"LABELH",nlet_tag); } sys_vgui(".x%x.c create window %d %d -anchor nw -width %d -height %d " - "-window %s -tags {%s}\n", canvas, x->te_xpix+px-sx, x->te_ypix+py-sy, + "-window %s -tags {%s}\n", canvas, x->x_obj.te_xpix+px-sx, x->x_obj.te_ypix+py-sy, sx, sy, h->h_pathname, tags); scalehandle_bind(h); h->h_vis = 1; } -void scalehandle_draw_select2(t_iemgui *x, t_glist *canvas, int sx, int sy) { +void scalehandle_draw_select2(t_iemgui *x, t_glist *canvas) { char *nlet_tag = iem_get_tag(canvas, (t_iemgui *)x); - scalehandle_draw_select(x->x_handle,canvas,sx,sy,nlet_tag); + t_class *c = pd_class((t_pd *)x); + int x1,y1,x2,y2; + c->c_wb->w_getrectfn((t_gobj *)x,canvas,&x1,&y1,&x2,&y2); + scalehandle_draw_select(x->x_handle,canvas,x2-x1-1,y2-y1-1,nlet_tag); if (x->x_lab!=s_empty) - { scalehandle_draw_select(x->x_lhandle,canvas,x->x_ldx,x->x_ldy,nlet_tag); - } } void scalehandle_draw_erase(t_scalehandle *h, t_glist *canvas) { @@ -1125,6 +1084,8 @@ const char *iemgui_font(t_iemgui *x) { return "invalid-font"; } +void iemgui_init(t_iemgui *x, t_floatarg f) {x->x_loadinit = f!=0.0;} + void iemgui_class_addmethods(t_class *c) { class_addmethod(c, (t_method)iemgui_delta, gensym("delta"), A_GIMME, 0); diff --git a/pd/src/g_all_guis.h b/pd/src/g_all_guis.h index 748db131a..82c296e79 100644 --- a/pd/src/g_all_guis.h +++ b/pd/src/g_all_guis.h @@ -292,7 +292,7 @@ EXTERN void canvas_apply_setundo(t_canvas *x, t_gobj *y); // scalehandle code, as refactored by Mathieu EXTERN void scalehandle_bind(t_scalehandle *h); EXTERN void scalehandle_draw_select(t_scalehandle *h, t_glist *canvas, int px, int py, const char *nlet_tag); -EXTERN void scalehandle_draw_select2(t_iemgui *x, t_glist *canvas, int sx, int sy); +EXTERN void scalehandle_draw_select2(t_iemgui *x, t_glist *canvas); EXTERN void scalehandle_draw_erase(t_scalehandle *h, t_glist *canvas); EXTERN void scalehandle_draw_erase2(t_iemgui *x, t_glist *canvas); EXTERN void scalehandle_draw_new(t_scalehandle *x, t_glist *canvas); @@ -334,9 +334,6 @@ static inline int iemgui_has_snd (t_iemgui *x) {return x->x_snd!=s_empty;} static inline int iemgui_has_rcv (t_iemgui *x) {return x->x_rcv!=s_empty;} EXTERN const char *iemgui_font(t_iemgui *x); EXTERN void iemgui_class_addmethods(t_class *c); - EXTERN void scrollbar_update(t_glist *glist); - - -EXTERN void radio_draw_update(t_gobj *client, t_glist *glist); +EXTERN void iemgui_init(t_iemgui *x, t_floatarg f); diff --git a/pd/src/g_bang.c b/pd/src/g_bang.c index e9757a866..164634566 100644 --- a/pd/src/g_bang.c +++ b/pd/src/g_bang.c @@ -8,7 +8,6 @@ #include <stdlib.h> #include <string.h> #include <stdio.h> -#include <ctype.h> #include "m_pd.h" #include "g_canvas.h" #include "g_all_guis.h" @@ -104,8 +103,7 @@ void bng_draw_select(t_bng* x, t_glist* glist) { sys_vgui(".x%lx.c itemconfigure %lxBUT " "-stroke $pd_colors(selection)\n", canvas, x); - scalehandle_draw_select2(&x->x_gui,glist, - x->x_gui.x_w-1,x->x_gui.x_h-1); + scalehandle_draw_select2(&x->x_gui,glist); } } else @@ -223,9 +221,7 @@ void bng_check_minmax(t_bng *x, int ftbreak, int fthold) { if(ftbreak > fthold) { - int h; - - h = ftbreak; + int h = ftbreak; ftbreak = fthold; fthold = h; } @@ -281,7 +277,6 @@ static void bng_set(t_bng *x) static void bng_bout1(t_bng *x)/*wird nur mehr gesendet, wenn snd != rcv*/ { - fprintf(stderr,"bng_bout1: snd=%s rcv=%s\n",x->x_gui.x_snd->s_name,x->x_gui.x_rcv->s_name); if(!x->x_gui.x_put_in2out) { x->x_gui.x_locked = 1; @@ -366,19 +361,10 @@ static int bng_newclick(t_gobj *z, struct _glist *glist, int xpix, int ypix, return (1); } -static void bng_float(t_bng *x, t_floatarg f) -{bng_bang2(x);} - -static void bng_symbol(t_bng *x, t_symbol *s) -{bng_bang2(x);} - -static void bng_pointer(t_bng *x, t_gpointer *gp) -{bng_bang2(x);} - -static void bng_list(t_bng *x, t_symbol *s, int ac, t_atom *av) -{ - bng_bang2(x); -} +static void bng_float(t_bng *x, t_floatarg f) {bng_bang2(x);} +static void bng_symbol(t_bng *x, t_symbol *s) {bng_bang2(x);} +static void bng_pointer(t_bng *x, t_gpointer *gp) {bng_bang2(x);} +static void bng_list(t_bng *x, t_symbol *s, int ac, t_atom *av){bng_bang2(x);} static void bng_anything(t_bng *x, t_symbol *s, int argc, t_atom *argv) {bng_bang2(x);} @@ -394,8 +380,7 @@ static void bng_loadbang(t_bng *x) static void bng_size(t_bng *x, t_symbol *s, int ac, t_atom *av) { - x->x_gui.x_w = iemgui_clip_size((int)atom_getintarg(0, ac, av)); - x->x_gui.x_h = x->x_gui.x_w; + x->x_gui.x_h = x->x_gui.x_w = iemgui_clip_size((int)atom_getintarg(0, ac, av)); iemgui_size(&x->x_gui); } @@ -405,11 +390,6 @@ static void bng_flashtime(t_bng *x, t_symbol *s, int ac, t_atom *av) (int)atom_getintarg(1, ac, av)); } -static void bng_init(t_bng *x, t_floatarg f) -{ - x->x_gui.x_loadinit = (f==0.0)?0:1; -} - static void bng_tick_hld(t_bng *x) { x->x_flashed = 0; @@ -529,7 +509,7 @@ void g_bang_setup(void) iemgui_class_addmethods(bng_class); class_addmethod(bng_class, (t_method)bng_flashtime, gensym("flashtime"), A_GIMME, 0); - class_addmethod(bng_class, (t_method)bng_init, gensym("init"), A_FLOAT, 0); + class_addmethod(bng_class, (t_method)iemgui_init, gensym("init"), A_FLOAT, 0); scalehandle_class = class_new(gensym("_scalehandle"), 0, 0, sizeof(t_scalehandle), CLASS_PD, 0); diff --git a/pd/src/g_canvas.c b/pd/src/g_canvas.c index 7fbb48b37..17fd068a1 100644 --- a/pd/src/g_canvas.c +++ b/pd/src/g_canvas.c @@ -1928,8 +1928,6 @@ void canvasgop__clickhook(t_scalehandle *sh, t_floatarg f, t_floatarg xxx, t_flo /* done dragging */ if(sh->h_scale) //enter if resize_gop hook { - /* first set up the undo apply */ - //canvas_canvas_setundo(x); canvas_undo_add(x, 8, "apply", canvas_undo_set_canvas(x)); if (sh->h_dragx || sh->h_dragy) diff --git a/pd/src/g_mycanvas.c b/pd/src/g_mycanvas.c index 112986152..d82c1947b 100644 --- a/pd/src/g_mycanvas.c +++ b/pd/src/g_mycanvas.c @@ -89,8 +89,7 @@ void my_canvas_draw_select(t_my_canvas* x, t_glist* glist) { sys_vgui(".x%lx.c itemconfigure %lxBASE " "-stroke $pd_colors(selection)\n", canvas, x); - scalehandle_draw_select2(&x->x_gui,glist, - x->x_vis_w,x->x_vis_h); + scalehandle_draw_select2(&x->x_gui,glist); } sys_vgui(".x%lx.c addtag selected withtag %lxOBJ\n", canvas, x); } diff --git a/pd/src/g_numbox.c b/pd/src/g_numbox.c index 3123e977f..aa5dbfc9c 100644 --- a/pd/src/g_numbox.c +++ b/pd/src/g_numbox.c @@ -254,8 +254,7 @@ static void my_numbox_draw_select(t_my_numbox *x, t_glist *glist) sys_vgui(".x%lx.c itemconfigure %lxNUMBER -fill %s\n", canvas, x, issel ? selection_color : fcol); if(issel) - scalehandle_draw_select2(&x->x_gui,glist, - x->x_numwidth-1,x->x_gui.x_h-1); + scalehandle_draw_select2(&x->x_gui,glist); else scalehandle_draw_erase2(&x->x_gui,glist); iemgui_label_draw_select(&x->x_gui,canvas); @@ -704,11 +703,6 @@ static void my_numbox_lin(t_my_numbox *x) x->x_lin0_log1 = 0; } -static void my_numbox_init(t_my_numbox *x, t_floatarg f) -{ - x->x_gui.x_loadinit = (f==0.0)?0:1; -} - static void my_numbox_loadbang(t_my_numbox *x) { if(!sys_noloadbang && x->x_gui.x_loadinit) @@ -910,7 +904,7 @@ void g_numbox_setup(void) gensym("log"), 0); class_addmethod(my_numbox_class, (t_method)my_numbox_lin, gensym("lin"), 0); - class_addmethod(my_numbox_class, (t_method)my_numbox_init, + class_addmethod(my_numbox_class, (t_method)iemgui_init, gensym("init"), A_FLOAT, 0); class_addmethod(my_numbox_class, (t_method)my_numbox_log_height, gensym("log_height"), A_FLOAT, 0); diff --git a/pd/src/g_radio.c b/pd/src/g_radio.c index 0ad200a70..5f13d7d69 100644 --- a/pd/src/g_radio.c +++ b/pd/src/g_radio.c @@ -16,13 +16,10 @@ #include "g_all_guis.h" #include <math.h> -static t_class *hscalehandle_class; -static t_class *vscalehandle_class; +static t_class *scalehandle_class; extern int gfxstub_haveproperties(void *key); -void hradio_draw_select(t_radio *x, t_glist *glist); -void vradio_draw_select(t_radio *x, t_glist *glist); -t_widgetbehavior hradio_widgetbehavior; -t_widgetbehavior vradio_widgetbehavior; +void radio_draw_select(t_radio *x, t_glist *glist); +t_widgetbehavior radio_widgetbehavior; t_class *hradio_class, *hradio_old_class; t_class *vradio_class, *vradio_old_class; @@ -43,108 +40,74 @@ void radio_draw_io(t_radio *x, t_glist *glist, int old_snd_rcv_flags) t_canvas *canvas=glist_getcanvas(glist); iemgui_io_draw(&x->x_gui,canvas,old_snd_rcv_flags); } -void hradio_draw_new(t_radio *x, t_glist *glist) +void radio_draw_new(t_radio *x, t_glist *glist) { t_canvas *canvas=glist_getcanvas(glist); int n=x->x_number, i, d=x->x_gui.x_w, s=d/4; int x1=text_xpix(&x->x_gui.x_obj, glist), xi=x1; - int y1=text_ypix(&x->x_gui.x_obj, glist); + int y1=text_ypix(&x->x_gui.x_obj, glist), yi=y1; char *nlet_tag = iem_get_tag(glist, (t_iemgui *)x); iemgui_base_draw_new(&x->x_gui, canvas, nlet_tag); scalehandle_draw_new(x->x_gui. x_handle,canvas); scalehandle_draw_new(x->x_gui.x_lhandle,canvas); - for(i=0; i<n; i++) - { + for(i=0; i<n; i++) if (x->x_orient) { if (i) sys_vgui(".x%lx.c create pline %d %d %d %d " "-stroke $pd_colors(iemgui_border) " "-tags {%lxBASE%d %lxBASEL %lxOBJ %s text iemgui border}\n", - canvas, xi, y1, xi, y1+d, x, i, x, x, nlet_tag); + canvas, x1, yi, x1+d, yi, x, i, x, x, nlet_tag); sys_vgui(".x%lx.c create prect %d %d %d %d -fill #%6.6x " "-stroke #%6.6x -tags {%lxBUT%d %lxOBJ %s text iemgui}\n", - canvas, xi+s, y1+s, xi+d-s, y1+d-s, + canvas, x1+s, yi+s, x1+d-s, yi+d-s, (x->x_on==i)?x->x_gui.x_fcol:x->x_gui.x_bcol, (x->x_on==i)?x->x_gui.x_fcol:x->x_gui.x_bcol, x, i, x, nlet_tag); - xi += d; + yi += d; x->x_drawn = x->x_on; - } - iemgui_label_draw_new(&x->x_gui,canvas,x1,y1,nlet_tag); - radio_draw_io(x,glist,7); -} -void vradio_draw_new(t_radio *x, t_glist *glist) -{ - t_canvas *canvas=glist_getcanvas(glist); - int n=x->x_number, i, d=x->x_gui.x_w, s=d/4; - int x1=text_xpix(&x->x_gui.x_obj, glist); - int y1=text_ypix(&x->x_gui.x_obj, glist), yi=y1; - char *nlet_tag = iem_get_tag(glist, (t_iemgui *)x); - - iemgui_base_draw_new(&x->x_gui, canvas, nlet_tag); - scalehandle_draw_new(x->x_gui. x_handle,canvas); - scalehandle_draw_new(x->x_gui.x_lhandle,canvas); - - for(i=0; i<n; i++) - { + } else { if (i) sys_vgui(".x%lx.c create pline %d %d %d %d " "-stroke $pd_colors(iemgui_border) " "-tags {%lxBASE%d %lxBASEL %lxOBJ %s text iemgui border}\n", - canvas, x1, yi, x1+d, yi, x, i, x, x, nlet_tag); + canvas, xi, y1, xi, y1+d, x, i, x, x, nlet_tag); sys_vgui(".x%lx.c create prect %d %d %d %d -fill #%6.6x " "-stroke #%6.6x -tags {%lxBUT%d %lxOBJ %s text iemgui}\n", - canvas, x1+s, yi+s, x1+d-s, yi+d-s, + canvas, xi+s, y1+s, xi+d-s, y1+d-s, (x->x_on==i)?x->x_gui.x_fcol:x->x_gui.x_bcol, (x->x_on==i)?x->x_gui.x_fcol:x->x_gui.x_bcol, x, i, x, nlet_tag); - yi += d; + xi += d; x->x_drawn = x->x_on; } iemgui_label_draw_new(&x->x_gui,canvas,x1,y1,nlet_tag); radio_draw_io(x,glist,7); } -void hradio_draw_move(t_radio *x, t_glist *glist) +void radio_draw_move(t_radio *x, t_glist *glist) { t_canvas *canvas=glist_getcanvas(glist); if (!glist_isvisible(canvas)) return; int n=x->x_number, i, d=x->x_gui.x_w, s=d/4; int x1=text_xpix(&x->x_gui.x_obj, glist), xi=x1; - int y1=text_ypix(&x->x_gui.x_obj, glist); - char *nlet_tag = iem_get_tag(glist, (t_iemgui *)x); - iemgui_base_draw_move(&x->x_gui, canvas, nlet_tag); - for(i=0; i<n; i++) - { - sys_vgui(".x%lx.c coords %lxBASE%d %d %d %d %d\n", - canvas, x, i, xi, y1, xi, y1+d); - sys_vgui(".x%lx.c coords %lxBUT%d %d %d %d %d\n", - canvas, x, i, xi+s, y1+s, xi+d-s, y1+d-s); - xi += d; - } - iemgui_label_draw_move(&x->x_gui,canvas,x1,y1); - iemgui_io_draw_move(&x->x_gui,canvas,nlet_tag); - if (x->x_gui.x_selected) hradio_draw_select(x, x->x_gui.x_glist); -} -void vradio_draw_move(t_radio *x, t_glist *glist) -{ - t_canvas *canvas=glist_getcanvas(glist); - if (!glist_isvisible(canvas)) return; - int n=x->x_number, i, d=x->x_gui.x_w, s=d/4; - int x1=text_xpix(&x->x_gui.x_obj, glist); int y1=text_ypix(&x->x_gui.x_obj, glist), yi=y1; char *nlet_tag = iem_get_tag(glist, (t_iemgui *)x); iemgui_base_draw_move(&x->x_gui, canvas, nlet_tag); - for(i=0; i<n; i++) - { + for(i=0; i<n; i++) if (x->x_orient) { sys_vgui(".x%lx.c coords %lxBASE%d %d %d %d %d\n", canvas, x, i, x1, yi, x1+d, yi); sys_vgui(".x%lx.c coords %lxBUT%d %d %d %d %d\n", canvas, x, i, x1+s, yi+s, x1+d-s, yi+d-s); yi += d; + } else { + sys_vgui(".x%lx.c coords %lxBASE%d %d %d %d %d\n", + canvas, x, i, xi, y1, xi, y1+d); + sys_vgui(".x%lx.c coords %lxBUT%d %d %d %d %d\n", + canvas, x, i, xi+s, y1+s, xi+d-s, y1+d-s); + xi += d; } iemgui_label_draw_move(&x->x_gui,canvas,x1,y1); iemgui_io_draw_move(&x->x_gui,canvas,nlet_tag); - if (x->x_gui.x_selected) vradio_draw_select(x, x->x_gui.x_glist); + if (x->x_gui.x_selected) radio_draw_select(x, x->x_gui.x_glist); } void radio_draw_config(t_radio *x, t_glist *glist) @@ -162,127 +125,61 @@ void radio_draw_config(t_radio *x, t_glist *glist) } } -void hradio_draw_select(t_radio *x, t_glist *glist) -{ - t_canvas *canvas=glist_getcanvas(glist); - iemgui_base_draw_config(&x->x_gui,canvas); - if(x->x_gui.x_selected) - { - if (x->x_gui.x_glist == glist_getcanvas(glist)) - scalehandle_draw_select2(&x->x_gui,glist, - x->x_gui.x_w*x->x_number-1,x->x_gui.x_h-1); - } - else - { - scalehandle_draw_erase2(&x->x_gui,glist); - } - iemgui_label_draw_select(&x->x_gui,canvas); - iemgui_tag_selected(&x->x_gui,canvas); -} -void vradio_draw_select(t_radio *x, t_glist *glist) +void radio_draw_select(t_radio *x, t_glist *glist) { t_canvas *canvas=glist_getcanvas(glist); iemgui_base_draw_config(&x->x_gui,canvas); if(x->x_gui.x_selected) { if (x->x_gui.x_glist == glist_getcanvas(glist)) - scalehandle_draw_select2(&x->x_gui,glist, - x->x_gui.x_w-1,x->x_gui.x_h*x->x_number-1); - } - else - { - scalehandle_draw_erase2(&x->x_gui,glist); + scalehandle_draw_select2(&x->x_gui,glist); } + else scalehandle_draw_erase2(&x->x_gui,glist); iemgui_label_draw_select(&x->x_gui,canvas); iemgui_tag_selected(&x->x_gui,canvas); } -static void hradio__clickhook(t_scalehandle *sh, t_floatarg f, t_floatarg xxx, - t_floatarg yyy) -{ - t_radio *x = (t_radio *)(sh->h_master); - int newstate = (int)f; - if (sh->h_dragon && newstate == 0 && sh->h_scale) - { - canvas_apply_setundo(x->x_gui.x_glist, (t_gobj *)x); - if (sh->h_dragx || sh->h_dragy) - { - x->x_gui.x_w += sh->h_dragy; - x->x_gui.x_h += sh->h_dragy; - canvas_dirty(x->x_gui.x_glist, 1); - } - if (glist_isvisible(x->x_gui.x_glist)) - { - hradio_draw_move(x, x->x_gui.x_glist); - scalehandle_unclick_scale(sh); - } - } - else if (!sh->h_dragon && newstate && sh->h_scale) - scalehandle_click_scale(sh); - else if (sh->h_dragon && newstate == 0 && !sh->h_scale) - scalehandle_unclick_label(sh); - else if (!sh->h_dragon && newstate && !sh->h_scale) - scalehandle_click_label(sh); - sh->h_dragon = newstate; -} -static void vradio__clickhook(t_scalehandle *sh, t_floatarg f, t_floatarg xxx, +static void radio__clickhook(t_scalehandle *sh, t_floatarg f, t_floatarg xxx, t_floatarg yyy) { - t_radio *x = (t_radio *)(sh->h_master); int newstate = (int)f; if (sh->h_dragon && newstate == 0 && sh->h_scale) { + t_radio *x = (t_radio *)(sh->h_master); canvas_apply_setundo(x->x_gui.x_glist, (t_gobj *)x); if (sh->h_dragx || sh->h_dragy) { - x->x_gui.x_w += sh->h_dragx; - x->x_gui.x_h += sh->h_dragx; + if (x->x_orient) { + x->x_gui.x_w += sh->h_dragx; + x->x_gui.x_h += sh->h_dragx; + } else { + x->x_gui.x_w += sh->h_dragy; + x->x_gui.x_h += sh->h_dragy; + } canvas_dirty(x->x_gui.x_glist, 1); } if (glist_isvisible(x->x_gui.x_glist)) { - vradio_draw_move(x, x->x_gui.x_glist); + radio_draw_move(x, x->x_gui.x_glist); scalehandle_unclick_scale(sh); } } - else if (!sh->h_dragon && newstate && sh->h_scale) - scalehandle_click_scale(sh); - else if (sh->h_dragon && newstate == 0 && !sh->h_scale) - scalehandle_unclick_label(sh); - else if (!sh->h_dragon && newstate && !sh->h_scale) - scalehandle_click_label(sh); - sh->h_dragon = newstate; + iemgui__clickhook3(sh,newstate); } -static void hradio__motionhook(t_scalehandle *sh, t_floatarg f1, t_floatarg f2) +static void radio__motionhook(t_scalehandle *sh, t_floatarg f1, t_floatarg f2) { if (sh->h_dragon && sh->h_scale) { t_radio *x = (t_radio *)(sh->h_master); int dx = (int)f1, dy = (int)f2; - dx = maxi(dx,(IEM_GUI_MINSIZE-x->x_gui.x_w)*x->x_number); - dy = dx/x->x_number; - sh->h_dragx = dx; - sh->h_dragy = dy; - scalehandle_drag_scale(sh); - - int properties = gfxstub_haveproperties((void *)x); - if (properties) - { - int new_w = x->x_gui.x_w + sh->h_dragx; - properties_set_field_int(properties,"dim.w_ent",new_w); + if (x->x_orient) { + dy = maxi(dy,(IEM_GUI_MINSIZE-x->x_gui.x_h)*x->x_number); + dx = dy/x->x_number; + } else { + dx = maxi(dx,(IEM_GUI_MINSIZE-x->x_gui.x_w)*x->x_number); + dy = dx/x->x_number; } - } - scalehandle_dragon_label(sh,f1,f2); -} -static void vradio__motionhook(t_scalehandle *sh, t_floatarg f1, t_floatarg f2) -{ - if (sh->h_dragon && sh->h_scale) - { - t_radio *x = (t_radio *)(sh->h_master); - int dx = (int)f1, dy = (int)f2; - dy = maxi(dy,(IEM_GUI_MINSIZE-x->x_gui.x_h)*x->x_number); - dx = dy/x->x_number; sh->h_dragx = dx; sh->h_dragy = dy; scalehandle_drag_scale(sh); @@ -290,100 +187,64 @@ static void vradio__motionhook(t_scalehandle *sh, t_floatarg f1, t_floatarg f2) int properties = gfxstub_haveproperties((void *)x); if (properties) { - int new_w = x->x_gui.x_h + sh->h_dragy; - properties_set_field_int(properties,"dim.w_ent",new_w); + properties_set_field_int(properties,"dim.w_ent", x->x_orient ? + x->x_gui.x_h + sh->h_dragy : + x->x_gui.x_w + sh->h_dragx); } } scalehandle_dragon_label(sh,f1,f2); } -void hradio_draw(t_radio *x, t_glist *glist, int mode) +void radio_draw(t_radio *x, t_glist *glist, int mode) { if(mode == IEM_GUI_DRAW_MODE_UPDATE) sys_queuegui(x, glist, radio_draw_update); - else if(mode == IEM_GUI_DRAW_MODE_MOVE) hradio_draw_move(x, glist); - else if(mode == IEM_GUI_DRAW_MODE_NEW) {hradio_draw_new(x, glist); sys_vgui(".x%lx.c raise all_cords\n", glist_getcanvas(glist));} - else if(mode == IEM_GUI_DRAW_MODE_SELECT) hradio_draw_select(x, glist); - else if(mode == IEM_GUI_DRAW_MODE_ERASE) iemgui_draw_erase(&x->x_gui, glist); - else if(mode == IEM_GUI_DRAW_MODE_CONFIG) radio_draw_config(x, glist); - else if(mode >= IEM_GUI_DRAW_MODE_IO) radio_draw_io(x, glist, mode - IEM_GUI_DRAW_MODE_IO); -} -void vradio_draw(t_radio *x, t_glist *glist, int mode) -{ - if(mode == IEM_GUI_DRAW_MODE_UPDATE) sys_queuegui(x, glist, radio_draw_update); - else if(mode == IEM_GUI_DRAW_MODE_MOVE) vradio_draw_move(x, glist); - else if(mode == IEM_GUI_DRAW_MODE_NEW) {vradio_draw_new(x, glist); sys_vgui(".x%lx.c raise all_cords\n", glist_getcanvas(glist));} - else if(mode == IEM_GUI_DRAW_MODE_SELECT) vradio_draw_select(x, glist); + else if(mode == IEM_GUI_DRAW_MODE_MOVE) radio_draw_move(x, glist); + else if(mode == IEM_GUI_DRAW_MODE_NEW) {radio_draw_new(x, glist); sys_vgui(".x%lx.c raise all_cords\n", glist_getcanvas(glist));} + else if(mode == IEM_GUI_DRAW_MODE_SELECT) radio_draw_select(x, glist); else if(mode == IEM_GUI_DRAW_MODE_ERASE) iemgui_draw_erase(&x->x_gui, glist); else if(mode == IEM_GUI_DRAW_MODE_CONFIG) radio_draw_config(x, glist); else if(mode >= IEM_GUI_DRAW_MODE_IO) radio_draw_io(x, glist, mode - IEM_GUI_DRAW_MODE_IO); } -static void hradio_getrect(t_gobj *z, t_glist *glist, int *xp1, int *yp1, +static void radio_getrect(t_gobj *z, t_glist *glist, int *xp1, int *yp1, int *xp2, int *yp2) { t_radio *x = (t_radio *)z; - *xp1 = text_xpix(&x->x_gui.x_obj, glist); *yp1 = text_ypix(&x->x_gui.x_obj, glist); - *xp2 = *xp1 + x->x_gui.x_w*x->x_number; - *yp2 = *yp1 + x->x_gui.x_h; - - iemgui_label_getrect(x->x_gui, glist, xp1, yp1, xp2, yp2); -} - -static void vradio_getrect(t_gobj *z, t_glist *glist, int *xp1, int *yp1, - int *xp2, int *yp2) -{ - t_radio *x = (t_radio *)z; - - *xp1 = text_xpix(&x->x_gui.x_obj, glist); - *yp1 = text_ypix(&x->x_gui.x_obj, glist); - *xp2 = *xp1 + x->x_gui.x_w; - *yp2 = *yp1 + x->x_gui.x_h*x->x_number; - + if (x->x_orient) { + *xp2 = *xp1 + x->x_gui.x_w; + *yp2 = *yp1 + x->x_gui.x_h*x->x_number; + } else { + *xp2 = *xp1 + x->x_gui.x_w*x->x_number; + *yp2 = *yp1 + x->x_gui.x_h; + } iemgui_label_getrect(x->x_gui, glist, xp1, yp1, xp2, yp2); } -static void hradio_save(t_gobj *z, t_binbuf *b) +static void radio_save(t_gobj *z, t_binbuf *b) { t_radio *x = (t_radio *)z; int bflcol[3]; t_symbol *srl[3]; - + t_class *c = pd_class((t_pd *)x); + t_symbol *cname = + c == vradio_old_class ? gensym("vdl") : + c == hradio_old_class ? gensym("hdl") : + x->x_orient ? gensym("vradio") : gensym("hradio"); + iemgui_save(&x->x_gui, srl, bflcol); binbuf_addv(b, "ssiisiiiisssiiiiiiii", gensym("#X"),gensym("obj"), - (int)x->x_gui.x_obj.te_xpix, (int)x->x_gui.x_obj.te_ypix, - (pd_class(&x->x_gui.x_obj.ob_pd) == hradio_old_class ? - gensym("hdl") : gensym("hradio")), - x->x_gui.x_w, - x->x_change, iem_symargstoint(&x->x_gui), x->x_number, - srl[0], srl[1], srl[2], - x->x_gui.x_ldx, x->x_gui.x_ldy, - iem_fstyletoint(&x->x_gui), x->x_gui.x_fontsize, - bflcol[0], bflcol[1], bflcol[2], x->x_on); + (int)x->x_gui.x_obj.te_xpix, (int)x->x_gui.x_obj.te_ypix, + cname, x->x_gui.x_w, + x->x_change, iem_symargstoint(&x->x_gui), x->x_number, + srl[0], srl[1], srl[2], x->x_gui.x_ldx, x->x_gui.x_ldy, + iem_fstyletoint(&x->x_gui), x->x_gui.x_fontsize, + bflcol[0], bflcol[1], bflcol[2], x->x_on); binbuf_addv(b, ";"); } -static void vradio_save(t_gobj *z, t_binbuf *b) -{ - t_radio *x = (t_radio *)z; - int bflcol[3]; - t_symbol *srl[3]; - - iemgui_save(&x->x_gui, srl, bflcol); - binbuf_addv(b, "ssiisiiiisssiiiiiiii", gensym("#X"),gensym("obj"), - (int)x->x_gui.x_obj.te_xpix, (int)x->x_gui.x_obj.te_ypix, - (pd_class(&x->x_gui.x_obj.ob_pd) == vradio_old_class ? - gensym("vdl") : gensym("vradio")), - x->x_gui.x_w, - x->x_change, iem_symargstoint(&x->x_gui), x->x_number, - srl[0], srl[1], srl[2], - x->x_gui.x_ldx, x->x_gui.x_ldy, - iem_fstyletoint(&x->x_gui), x->x_gui.x_fontsize, - bflcol[0], bflcol[1], bflcol[2], x->x_on); - binbuf_addv(b, ";"); -} -static void hradio_properties(t_gobj *z, t_glist *owner) +static void radio_properties(t_gobj *z, t_glist *owner) { t_radio *x = (t_radio *)z; char buf[800]; @@ -391,12 +252,13 @@ static void hradio_properties(t_gobj *z, t_glist *owner) int hchange=-1; iemgui_properties(&x->x_gui, srl); - if (pd_class(&x->x_gui.x_obj.ob_pd) == hradio_old_class) + if (pd_class((t_pd *)x) == hradio_old_class || pd_class((t_pd *)x) == vradio_old_class) hchange = x->x_change; - sprintf(buf, "pdtk_iemgui_dialog %%s |hradio| \ + sprintf(buf, "pdtk_iemgui_dialog %%s |%cradio| \ ----------dimensions(pix):----------- %d %d size: 0 0 empty \ empty 0.0 empty 0.0 empty %d %d new-only new&old %d %d number: %d \ {%s} {%s} {%s} %d %d %d %d %d %d %d\n", + x->x_orient ? 'v' : 'h', x->x_gui.x_w, IEM_GUI_MINSIZE, 0,/*no_schedule*/ hchange, x->x_gui.x_loadinit, -1, x->x_number, srl[0]->s_name, srl[1]->s_name, @@ -406,31 +268,8 @@ static void hradio_properties(t_gobj *z, t_glist *owner) 0xffffff & x->x_gui.x_lcol); gfxstub_new(&x->x_gui.x_obj.ob_pd, x, buf); } -static void vradio_properties(t_gobj *z, t_glist *owner) -{ - t_radio *x = (t_radio *)z; - char buf[800]; - t_symbol *srl[3]; - int hchange=-1; - iemgui_properties(&x->x_gui, srl); - if (pd_class(&x->x_gui.x_obj.ob_pd) == vradio_old_class) - hchange = x->x_change; - sprintf(buf, "pdtk_iemgui_dialog %%s |vradio| \ - ----------dimensions(pix):----------- %d %d size: 0 0 empty \ - empty 0.0 empty 0.0 empty %d %d new-only new&old %d %d number: %d \ - {%s} {%s} {%s} %d %d %d %d %d %d %d\n", - x->x_gui.x_w, IEM_GUI_MINSIZE, 0,/*no_schedule*/ - hchange, x->x_gui.x_loadinit, -1, x->x_number, - srl[0]->s_name, srl[1]->s_name, - srl[2]->s_name, x->x_gui.x_ldx, x->x_gui.x_ldy, - x->x_gui.x_font_style, x->x_gui.x_fontsize, - 0xffffff & x->x_gui.x_bcol, 0xffffff & x->x_gui.x_fcol, - 0xffffff & x->x_gui.x_lcol); - gfxstub_new(&x->x_gui.x_obj.ob_pd, x, buf); -} - -static void hradio_dialog(t_radio *x, t_symbol *s, int argc, t_atom *argv) +static void radio_dialog(t_radio *x, t_symbol *s, int argc, t_atom *argv) { canvas_apply_setundo(x->x_gui.x_glist, (t_gobj *)x); @@ -465,45 +304,7 @@ static void hradio_dialog(t_radio *x, t_symbol *s, int argc, t_atom *argv) //canvas_fixlinesfor(glist_getcanvas(x->x_gui.x_glist), (t_text*)x); iemgui_shouldvis(&x->x_gui, IEM_GUI_DRAW_MODE_MOVE); } - if (x->x_gui.x_selected) hradio_draw_select(x, x->x_gui.x_glist); - scrollbar_update(x->x_gui.x_glist); -} -static void vradio_dialog(t_radio *x, t_symbol *s, int argc, t_atom *argv) -{ - canvas_apply_setundo(x->x_gui.x_glist, (t_gobj *)x); - - t_symbol *srl[3]; - int a = (int)atom_getintarg(0, argc, argv); - int chg = (int)atom_getintarg(4, argc, argv); - int num = (int)atom_getintarg(6, argc, argv); - int sr_flags; - - if(chg != 0) chg = 1; - x->x_change = chg; - sr_flags = iemgui_dialog(&x->x_gui, srl, argc, argv); - x->x_gui.x_w = iemgui_clip_size(a); - x->x_gui.x_h = x->x_gui.x_w; - if(x->x_number != num) - { - x->x_gui.x_draw(x, x->x_gui.x_glist, IEM_GUI_DRAW_MODE_ERASE); - x->x_number = num; - if(x->x_on >= x->x_number) - { - x->x_on = x->x_number - 1; - x->x_on_old = x->x_on; - } - //x->x_gui.x_draw(x, x->x_gui.x_glist, IEM_GUI_DRAW_MODE_NEW); - iemgui_shouldvis(&x->x_gui, IEM_GUI_DRAW_MODE_NEW); - } - else - { - x->x_gui.x_draw(x, x->x_gui.x_glist, IEM_GUI_DRAW_MODE_CONFIG); - x->x_gui.x_draw(x, x->x_gui.x_glist, IEM_GUI_DRAW_MODE_IO + sr_flags); - //x->x_gui.x_draw(x, x->x_gui.x_glist, IEM_GUI_DRAW_MODE_MOVE); - //canvas_fixlinesfor(glist_getcanvas(x->x_gui.x_glist), (t_text*)x); - iemgui_shouldvis(&x->x_gui, IEM_GUI_DRAW_MODE_MOVE); - } - if (x->x_gui.x_selected) vradio_draw_select(x, x->x_gui.x_glist); + if (x->x_gui.x_selected) radio_draw_select(x, x->x_gui.x_glist); scrollbar_update(x->x_gui.x_glist); } @@ -555,7 +356,7 @@ static void radio_bang(t_radio *x) } } -static void radio_fout(t_radio *x, t_floatarg f) +static void radio_float2(t_radio *x, t_floatarg f, int doout) { int i=mini(maxi((int)f,0),x->x_number-1); @@ -564,45 +365,7 @@ static void radio_fout(t_radio *x, t_floatarg f) { if((x->x_change)&&(i != x->x_on_old)) { - SETFLOAT(x->x_at, (t_float)x->x_on_old); - SETFLOAT(x->x_at+1, 0.0); - outlet_list(x->x_gui.x_obj.ob_outlet, &s_list, 2, x->x_at); - if(iemgui_has_snd(&x->x_gui) && x->x_gui.x_snd->s_thing) - pd_list(x->x_gui.x_snd->s_thing, &s_list, 2, x->x_at); - } - if(x->x_on != x->x_on_old) - x->x_on_old = x->x_on; - x->x_on = i; - x->x_gui.x_draw(x, x->x_gui.x_glist, IEM_GUI_DRAW_MODE_UPDATE); - x->x_on_old = x->x_on; - SETFLOAT(x->x_at, (t_float)x->x_on); - SETFLOAT(x->x_at+1, 1.0); - outlet_list(x->x_gui.x_obj.ob_outlet, &s_list, 2, x->x_at); - if(iemgui_has_snd(&x->x_gui) && x->x_gui.x_snd->s_thing) - pd_list(x->x_gui.x_snd->s_thing, &s_list, 2, x->x_at); - } - else - { - x->x_on_old = x->x_on; - x->x_on = i; - if (i != x->x_on_old) - x->x_gui.x_draw(x, x->x_gui.x_glist, IEM_GUI_DRAW_MODE_UPDATE); - outlet_float(x->x_gui.x_obj.ob_outlet, x->x_on); - if (iemgui_has_snd(&x->x_gui) && x->x_gui.x_snd->s_thing) - pd_float(x->x_gui.x_snd->s_thing, x->x_on); - } -} - -static void radio_float(t_radio *x, t_floatarg f) -{ - int i=mini(maxi((int)f,0),x->x_number-1); - - if (pd_class(&x->x_gui.x_obj.ob_pd) == hradio_old_class || - pd_class(&x->x_gui.x_obj.ob_pd) == vradio_old_class) - { - if((x->x_change)&&(i != x->x_on_old)) - { - if(x->x_gui.x_put_in2out) + if(doout) { SETFLOAT(x->x_at, (t_float)x->x_on_old); SETFLOAT(x->x_at+1, 0.0); @@ -611,12 +374,11 @@ static void radio_float(t_radio *x, t_floatarg f) pd_list(x->x_gui.x_snd->s_thing, &s_list, 2, x->x_at); } } - if(x->x_on != x->x_on_old) - x->x_on_old = x->x_on; + x->x_on_old = x->x_on; x->x_on = i; x->x_gui.x_draw(x, x->x_gui.x_glist, IEM_GUI_DRAW_MODE_UPDATE); x->x_on_old = x->x_on; - if(x->x_gui.x_put_in2out) + if(doout) { SETFLOAT(x->x_at, (t_float)x->x_on); SETFLOAT(x->x_at+1, 1.0); @@ -631,7 +393,7 @@ static void radio_float(t_radio *x, t_floatarg f) x->x_on = i; if (i != x->x_on_old) x->x_gui.x_draw(x, x->x_gui.x_glist, IEM_GUI_DRAW_MODE_UPDATE); - if (x->x_gui.x_put_in2out) + if (doout) { outlet_float(x->x_gui.x_obj.ob_outlet, x->x_on); if(iemgui_has_snd(&x->x_gui) && x->x_gui.x_snd->s_thing) @@ -640,33 +402,33 @@ static void radio_float(t_radio *x, t_floatarg f) } } -static void hradio_click(t_radio *x, t_floatarg xpos, t_floatarg ypos, - t_floatarg shift, t_floatarg ctrl, t_floatarg alt) +static void radio_fout(t_radio *x, t_floatarg f) { - int xx = (int)xpos - text_xpix(&x->x_gui.x_obj, x->x_gui.x_glist); - radio_fout(x, (t_float)(xx / x->x_gui.x_w)); + radio_float2(x,f,1); } -static void vradio_click(t_radio *x, t_floatarg xpos, t_floatarg ypos, - t_floatarg shift, t_floatarg ctrl, t_floatarg alt) +static void radio_float(t_radio *x, t_floatarg f) { - int yy = (int)ypos - text_ypix(&x->x_gui.x_obj, x->x_gui.x_glist); - radio_fout(x, (t_float)(yy / x->x_gui.x_h)); + radio_float2(x,f,x->x_gui.x_put_in2out); } -static int hradio_newclick(t_gobj *z, struct _glist *glist, int xpix, int ypix, - int shift, int alt, int dbl, int doit) +static void radio_click(t_radio *x, t_floatarg xpos, t_floatarg ypos, + t_floatarg shift, t_floatarg ctrl, t_floatarg alt) { - if(doit) - hradio_click((t_radio *)z, (t_floatarg)xpix, (t_floatarg)ypix, - (t_floatarg)shift, 0, (t_floatarg)alt); - return (1); + if (x->x_orient) { + int yy = (int)ypos - text_ypix(&x->x_gui.x_obj, x->x_gui.x_glist); + radio_fout(x, (t_float)(yy / x->x_gui.x_h)); + } else { + int xx = (int)xpos - text_xpix(&x->x_gui.x_obj, x->x_gui.x_glist); + radio_fout(x, (t_float)(xx / x->x_gui.x_w)); + } } -static int vradio_newclick(t_gobj *z, struct _glist *glist, int xpix, int ypix, + +static int radio_newclick(t_gobj *z, struct _glist *glist, int xpix, int ypix, int shift, int alt, int dbl, int doit) { if(doit) - vradio_click((t_radio *)z, (t_floatarg)xpix, (t_floatarg)ypix, + radio_click((t_radio *)z, (t_floatarg)xpix, (t_floatarg)ypix, (t_floatarg)shift, 0, (t_floatarg)alt); return (1); } @@ -698,11 +460,6 @@ static void radio_size(t_radio *x, t_symbol *s, int ac, t_atom *av) iemgui_size(&x->x_gui); } -static void radio_init(t_radio *x, t_floatarg f) -{ - x->x_gui.x_loadinit = (f==0.0)?0:1; -} - static void radio_double_change(t_radio *x) {x->x_change = 1;} static void radio_single_change(t_radio *x) {x->x_change = 0;} @@ -742,7 +499,7 @@ static void *radio_new(t_symbol *s, int argc, t_atom *argv) on = (int)atom_getintarg(14, argc, argv); } else iemgui_new_getnames(&x->x_gui, 4, 0); - x->x_gui.x_draw = x->x_orient ? (t_iemfunptr)vradio_draw : (t_iemfunptr)hradio_draw; + x->x_gui.x_draw = (t_iemfunptr)radio_draw; x->x_gui.x_glist = (t_glist *)canvas_getcurrent(); if (x->x_gui.x_font_style<0 || x->x_gui.x_font_style>2) x->x_gui.x_font_style=0; if(num < 1) @@ -773,7 +530,7 @@ static void *radio_new(t_symbol *s, int argc, t_atom *argv) iemgui_all_colfromload(&x->x_gui, bflcol); outlet_new(&x->x_gui.x_obj, &s_list); - t_class *sc = x->x_orient ? vscalehandle_class : hscalehandle_class; + t_class *sc = scalehandle_class; x->x_gui. x_handle = scalehandle_new(sc,(t_iemgui *)x,1); x->x_gui.x_lhandle = scalehandle_new(sc,(t_iemgui *)x,0); x->x_gui.x_obj.te_iemgui = 1; @@ -793,98 +550,61 @@ static void radio_free(t_radio *x) void radio_addmethods(t_class *c) { + class_addbang(hradio_class, radio_bang); + class_addfloat(hradio_class, radio_float); class_addmethod(c, (t_method)radio_loadbang, gensym("loadbang"), 0); class_addmethod(c, (t_method)radio_set, gensym("set"), A_FLOAT, 0); class_addmethod(c, (t_method)radio_size, gensym("size"), A_GIMME, 0); - class_addmethod(c, (t_method)radio_init, gensym("init"), A_FLOAT, 0); + class_addmethod(c, (t_method)iemgui_init, gensym("init"), A_FLOAT, 0); class_addmethod(c, (t_method)radio_number, gensym("number"), A_FLOAT, 0); class_addmethod(c, (t_method)radio_single_change, gensym("single_change"), 0); class_addmethod(c, (t_method)radio_double_change, gensym("double_change"), 0); + class_addmethod(c, (t_method)radio_click, gensym("click"), + A_FLOAT, A_FLOAT, A_FLOAT, A_FLOAT, A_FLOAT, 0); + class_setpropertiesfn(c, radio_properties); + class_addmethod(c, (t_method)radio_dialog, gensym("dialog"), A_GIMME, 0); + class_setsavefn(c, radio_save); + class_setwidget(c, &radio_widgetbehavior); } -void g_hradio_setup(void) +void g_radio_setup(void) { + wb_init(&radio_widgetbehavior,radio_getrect,radio_newclick); hradio_class = class_new(gensym("hradio"), (t_newmethod)radio_new, (t_method)radio_free, sizeof(t_radio), 0, A_GIMME, 0); - class_addbang(hradio_class, radio_bang); - class_addfloat(hradio_class, radio_float); - class_addmethod(hradio_class, (t_method)hradio_click, gensym("click"), - A_FLOAT, A_FLOAT, A_FLOAT, A_FLOAT, A_FLOAT, 0); - class_addmethod(hradio_class, (t_method)hradio_dialog, gensym("dialog"), - A_GIMME, 0); - iemgui_class_addmethods(hradio_class); - radio_addmethods(hradio_class); - hscalehandle_class = class_new(gensym("_scalehandle"), 0, 0, - sizeof(t_scalehandle), CLASS_PD, 0); - class_addmethod(hscalehandle_class, (t_method)hradio__clickhook, - gensym("_click"), A_FLOAT, A_FLOAT, A_FLOAT, 0); - class_addmethod(hscalehandle_class, (t_method)hradio__motionhook, - gensym("_motion"), A_FLOAT, A_FLOAT, 0); - - wb_init(&hradio_widgetbehavior,hradio_getrect,hradio_newclick); - class_setwidget(hradio_class, &hradio_widgetbehavior); - class_sethelpsymbol(hradio_class, gensym("hradio")); - class_setsavefn(hradio_class, hradio_save); - class_setpropertiesfn(hradio_class, hradio_properties); - - /* obsolete version (0.34-0.35) */ hradio_old_class = class_new(gensym("hdl"), (t_newmethod)radio_new, (t_method)radio_free, sizeof(t_radio), 0, A_GIMME, 0); + vradio_class = class_new(gensym("vradio"), (t_newmethod)radio_new, + (t_method)radio_free, sizeof(t_radio), 0, A_GIMME, 0); + vradio_old_class = class_new(gensym("vdl"), (t_newmethod)radio_new, + (t_method)radio_free, sizeof(t_radio), 0, A_GIMME, 0); class_addcreator((t_newmethod)radio_new, gensym("rdb"), A_GIMME, 0); class_addcreator((t_newmethod)radio_new, gensym("radiobut"), A_GIMME, 0); class_addcreator((t_newmethod)radio_new, gensym("radiobutton"), A_GIMME, 0); - class_addbang(hradio_old_class, radio_bang); - class_addfloat(hradio_old_class, radio_float); - class_addmethod(hradio_old_class, (t_method)hradio_click, gensym("click"), - A_FLOAT, A_FLOAT, A_FLOAT, A_FLOAT, A_FLOAT, 0); - class_addmethod(hradio_old_class, (t_method)hradio_dialog, - gensym("dialog"), A_GIMME, 0); - radio_addmethods(hradio_old_class); + + iemgui_class_addmethods(hradio_class); iemgui_class_addmethods(hradio_old_class); - class_setwidget(hradio_old_class, &hradio_widgetbehavior); - class_sethelpsymbol(hradio_old_class, gensym("hradio")); -} + iemgui_class_addmethods(vradio_class); + iemgui_class_addmethods(vradio_old_class); -void g_vradio_setup(void) -{ - vradio_class = class_new(gensym("vradio"), (t_newmethod)radio_new, - (t_method)radio_free, sizeof(t_radio), 0, A_GIMME, 0); - class_addbang(vradio_class, radio_bang); - class_addfloat(vradio_class, radio_float); - class_addmethod(vradio_class, (t_method)vradio_click, gensym("click"), - A_FLOAT, A_FLOAT, A_FLOAT, A_FLOAT, A_FLOAT, 0); - class_addmethod(vradio_class, (t_method)vradio_dialog, gensym("dialog"), - A_GIMME, 0); + radio_addmethods(hradio_class); + radio_addmethods(hradio_old_class); radio_addmethods(vradio_class); - iemgui_class_addmethods(vradio_class); - - vscalehandle_class = class_new(gensym("_scalehandle"), 0, 0, + radio_addmethods(vradio_old_class); + + class_sethelpsymbol(hradio_class, gensym("hradio")); + class_sethelpsymbol(hradio_old_class, gensym("hradio")); + class_sethelpsymbol(vradio_class, gensym("vradio")); + class_sethelpsymbol(vradio_old_class, gensym("vradio")); + + scalehandle_class = class_new(gensym("_scalehandle"), 0, 0, sizeof(t_scalehandle), CLASS_PD, 0); - class_addmethod(vscalehandle_class, (t_method)vradio__clickhook, + class_addmethod(scalehandle_class, (t_method)radio__clickhook, gensym("_click"), A_FLOAT, A_FLOAT, A_FLOAT, 0); - class_addmethod(vscalehandle_class, (t_method)vradio__motionhook, + class_addmethod(scalehandle_class, (t_method)radio__motionhook, gensym("_motion"), A_FLOAT, A_FLOAT, 0); - wb_init(&vradio_widgetbehavior,vradio_getrect,vradio_newclick); - class_setwidget(vradio_class, &vradio_widgetbehavior); - class_sethelpsymbol(vradio_class, gensym("vradio")); - class_setsavefn(vradio_class, vradio_save); - class_setpropertiesfn(vradio_class, vradio_properties); - - /* obsolete version (0.34-0.35) */ - vradio_old_class = class_new(gensym("vdl"), (t_newmethod)radio_new, - (t_method)radio_free, sizeof(t_radio), 0, A_GIMME, 0); - class_addbang(vradio_old_class, radio_bang); - class_addfloat(vradio_old_class, radio_float); - class_addmethod(vradio_old_class, (t_method)vradio_click, gensym("click"), - A_FLOAT, A_FLOAT, A_FLOAT, A_FLOAT, A_FLOAT, 0); - class_addmethod(vradio_old_class, (t_method)vradio_dialog, - gensym("dialog"), A_GIMME, 0); - radio_addmethods(vradio_old_class); - iemgui_class_addmethods(vradio_old_class); - class_setwidget(vradio_old_class, &vradio_widgetbehavior); - class_sethelpsymbol(vradio_old_class, gensym("vradio")); } diff --git a/pd/src/g_slider.c b/pd/src/g_slider.c index c35780bea..40f9ca17e 100644 --- a/pd/src/g_slider.c +++ b/pd/src/g_slider.c @@ -13,13 +13,10 @@ #include "g_all_guis.h" #include <math.h> -static t_class *hscalehandle_class; -static t_class *vscalehandle_class; +static t_class *scalehandle_class; extern int gfxstub_haveproperties(void *key); -static void hslider_draw_select(t_slider *x, t_glist *glist); -static void vslider_draw_select(t_slider *x, t_glist *glist); -t_widgetbehavior vslider_widgetbehavior; -t_widgetbehavior hslider_widgetbehavior; +static void slider_draw_select(t_slider *x, t_glist *glist); +t_widgetbehavior slider_widgetbehavior; t_class *hslider_class; t_class *vslider_class; @@ -101,11 +98,7 @@ static void slider_draw_move(t_slider *x, t_glist *glist) canvas, x, r, y1+2, r, y2-2); iemgui_label_draw_move(&x->x_gui,canvas,x1,y1); iemgui_io_draw_move(&x->x_gui,canvas,nlet_tag); - if (x->x_gui.x_selected) { - if (x->x_orient) vslider_draw_select(x, x->x_gui.x_glist); - else hslider_draw_select(x, x->x_gui.x_glist); - } - if (x->x_gui.x_selected) vslider_draw_select(x, x->x_gui.x_glist); + if (x->x_gui.x_selected) slider_draw_select(x, x->x_gui.x_glist); } static void slider_draw_config(t_slider *x, t_glist *glist) @@ -117,29 +110,14 @@ static void slider_draw_config(t_slider *x, t_glist *glist) canvas, x, x->x_gui.x_fcol); } -static void hslider_draw_select(t_slider *x, t_glist *glist) +static void slider_draw_select(t_slider *x, t_glist *glist) { t_canvas *canvas=glist_getcanvas(glist); iemgui_base_draw_config(&x->x_gui,canvas); if(x->x_gui.x_selected) { if (x->x_gui.x_glist == glist_getcanvas(glist)) - scalehandle_draw_select2(&x->x_gui,glist, - x->x_gui.x_w+5-1,x->x_gui.x_h-1); - } - else scalehandle_draw_erase2(&x->x_gui,glist); - iemgui_label_draw_select(&x->x_gui,canvas); - iemgui_tag_selected(&x->x_gui,canvas); -} -static void vslider_draw_select(t_slider *x, t_glist *glist) -{ - t_canvas *canvas=glist_getcanvas(glist); - iemgui_base_draw_config(&x->x_gui,canvas); - if(x->x_gui.x_selected) - { - if (x->x_gui.x_glist == glist_getcanvas(glist)) - scalehandle_draw_select2(&x->x_gui,glist, - x->x_gui.x_w-1,x->x_gui.x_h+5-1); + scalehandle_draw_select2(&x->x_gui,glist); } else scalehandle_draw_erase2(&x->x_gui,glist); iemgui_label_draw_select(&x->x_gui,canvas); @@ -147,14 +125,13 @@ static void vslider_draw_select(t_slider *x, t_glist *glist) } void slider_check_minmax(t_slider *x, double min, double max); -void hslider_check_width(t_slider *x, int w); -void vslider_check_height(t_slider *x, int w); +void slider_check_length(t_slider *x, int w); static void hslider__clickhook2(t_scalehandle *sh, t_slider *x) { double w_change_ratio = (double)(x->x_gui.x_w + sh->h_dragx) /(double)x->x_gui.x_w; x->x_val = x->x_val * w_change_ratio; - hslider_check_width(x, x->x_gui.x_w + sh->h_dragx); + slider_check_length(x, x->x_gui.x_w + sh->h_dragx); x->x_gui.x_h += sh->h_dragy; slider_check_minmax(x, x->x_min, x->x_max); } @@ -163,7 +140,7 @@ static void vslider__clickhook2(t_scalehandle *sh, t_slider *x) { /(double)x->x_gui.x_h; x->x_val = x->x_val * h_change_ratio; x->x_gui.x_w += sh->h_dragx; - vslider_check_height(x, x->x_gui.x_h + sh->h_dragy); + slider_check_length(x, x->x_gui.x_h + sh->h_dragy); slider_check_minmax(x, x->x_min, x->x_max); } @@ -190,37 +167,17 @@ static void slider__clickhook(t_scalehandle *sh, t_floatarg f, iemgui__clickhook3(sh,newstate); } -static void hslider__motionhook(t_scalehandle *sh, t_floatarg f1, t_floatarg f2) -{ - if (sh->h_dragon && sh->h_scale) - { - t_slider *x = (t_slider *)(sh->h_master); - int dx = (int)f1, dy = (int)f2; - dx = maxi(dx, IEM_SL_MINSIZE-x->x_gui.x_w); - dy = maxi(dy,IEM_GUI_MINSIZE-x->x_gui.x_h); - sh->h_dragx = dx; - sh->h_dragy = dy; - scalehandle_drag_scale(sh); - - int properties = gfxstub_haveproperties((void *)x); - if (properties) - { - int new_w = x->x_gui.x_w + sh->h_dragx; - int new_h = x->x_gui.x_h + sh->h_dragy; - properties_set_field_int(properties,"dim.w_ent",new_w); - properties_set_field_int(properties,"dim.h_ent",new_h); - } - } - scalehandle_dragon_label(sh,f1,f2); -} -static void vslider__motionhook(t_scalehandle *sh, t_floatarg f1, t_floatarg f2) +static void slider__motionhook(t_scalehandle *sh, t_floatarg f1, t_floatarg f2) { if (sh->h_dragon && sh->h_scale) { t_slider *x = (t_slider *)(sh->h_master); int dx = (int)f1, dy = (int)f2; - dx = maxi(dx,IEM_GUI_MINSIZE-x->x_gui.x_w); - dy = maxi(dy, IEM_SL_MINSIZE-x->x_gui.x_h); + int minx = x->x_orient ? IEM_GUI_MINSIZE : IEM_SL_MINSIZE; + int miny = x->x_orient ? IEM_SL_MINSIZE : IEM_GUI_MINSIZE; + + dx = maxi(dx,minx-x->x_gui.x_w); + dy = maxi(dy,miny-x->x_gui.x_h); sh->h_dragx = dx; sh->h_dragy = dy; scalehandle_drag_scale(sh); @@ -237,7 +194,7 @@ static void vslider__motionhook(t_scalehandle *sh, t_floatarg f1, t_floatarg f2) scalehandle_dragon_label(sh,f1,f2); } -void hslider_draw(t_slider *x, t_glist *glist, int mode) +void slider_draw(t_slider *x, t_glist *glist, int mode) { if(mode == IEM_GUI_DRAW_MODE_UPDATE) sys_queuegui(x, glist, slider_draw_update); @@ -249,27 +206,7 @@ void hslider_draw(t_slider *x, t_glist *glist, int mode) sys_vgui(".x%lx.c raise all_cords\n", glist_getcanvas(glist)); } else if(mode == IEM_GUI_DRAW_MODE_SELECT) - hslider_draw_select(x, glist); - else if(mode == IEM_GUI_DRAW_MODE_ERASE) - iemgui_draw_erase(&x->x_gui, glist); - else if(mode == IEM_GUI_DRAW_MODE_CONFIG) - slider_draw_config(x, glist); - else if(mode >= IEM_GUI_DRAW_MODE_IO) - slider_draw_io(x, glist, mode - IEM_GUI_DRAW_MODE_IO); -} -void vslider_draw(t_slider *x, t_glist *glist, int mode) -{ - if(mode == IEM_GUI_DRAW_MODE_UPDATE) - sys_queuegui(x, glist, slider_draw_update); - else if(mode == IEM_GUI_DRAW_MODE_MOVE) - slider_draw_move(x, glist); - else if(mode == IEM_GUI_DRAW_MODE_NEW) - { - slider_draw_new(x, glist); - sys_vgui(".x%lx.c raise all_cords\n", glist_getcanvas(glist)); - } - else if(mode == IEM_GUI_DRAW_MODE_SELECT) - vslider_draw_select(x, glist); + slider_draw_select(x, glist); else if(mode == IEM_GUI_DRAW_MODE_ERASE) iemgui_draw_erase(&x->x_gui, glist); else if(mode == IEM_GUI_DRAW_MODE_CONFIG) @@ -278,21 +215,7 @@ void vslider_draw(t_slider *x, t_glist *glist, int mode) slider_draw_io(x, glist, mode - IEM_GUI_DRAW_MODE_IO); } -static void hslider_getrect(t_gobj *z, t_glist *glist, - int *xp1, int *yp1, int *xp2, int *yp2) -{ - t_slider *x = (t_slider *)z; - - *xp1 = text_xpix(&x->x_gui.x_obj, glist); - *yp1 = text_ypix(&x->x_gui.x_obj, glist); - *xp2 = *xp1 + x->x_gui.x_w + 5; - *yp2 = *yp1 + x->x_gui.x_h; - - iemgui_label_getrect(x->x_gui, glist, xp1, yp1, xp2, yp2); -} - - -static void vslider_getrect(t_gobj *z, t_glist *glist, +static void slider_getrect(t_gobj *z, t_glist *glist, int *xp1, int *yp1, int *xp2, int *yp2) { t_slider *x = (t_slider *)z; @@ -300,12 +223,12 @@ static void vslider_getrect(t_gobj *z, t_glist *glist, *xp1 = text_xpix(&x->x_gui.x_obj, glist); *yp1 = text_ypix(&x->x_gui.x_obj, glist); *xp2 = *xp1 + x->x_gui.x_w; - *yp2 = *yp1 + x->x_gui.x_h + 5; - + *yp2 = *yp1 + x->x_gui.x_h; + if (x->x_orient) *yp2+=5; else *xp2+=5; iemgui_label_getrect(x->x_gui, glist, xp1, yp1, xp2, yp2); } -static void hslider_save(t_gobj *z, t_binbuf *b) +static void slider_save(t_gobj *z, t_binbuf *b) { t_slider *x = (t_slider *)z; int bflcol[3]; @@ -313,71 +236,33 @@ static void hslider_save(t_gobj *z, t_binbuf *b) iemgui_save(&x->x_gui, srl, bflcol); binbuf_addv(b, "ssiisiiffiisssiiiiiiiii", gensym("#X"),gensym("obj"), - (int)x->x_gui.x_obj.te_xpix, (int)x->x_gui.x_obj.te_ypix, - gensym("hsl"), x->x_gui.x_w, x->x_gui.x_h, - (t_float)x->x_min, (t_float)x->x_max, - x->x_lin0_log1, iem_symargstoint(&x->x_gui), - srl[0], srl[1], srl[2], - x->x_gui.x_ldx, x->x_gui.x_ldy, - iem_fstyletoint(&x->x_gui), x->x_gui.x_fontsize, - bflcol[0], bflcol[1], bflcol[2], - x->x_val, x->x_steady); + (int)x->x_gui.x_obj.te_xpix, (int)x->x_gui.x_obj.te_ypix, + gensym(x->x_orient ? "vsl" : "hsl"), x->x_gui.x_w, x->x_gui.x_h, + (t_float)x->x_min, (t_float)x->x_max, + x->x_lin0_log1, iem_symargstoint(&x->x_gui), + srl[0], srl[1], srl[2], x->x_gui.x_ldx, x->x_gui.x_ldy, + iem_fstyletoint(&x->x_gui), x->x_gui.x_fontsize, + bflcol[0], bflcol[1], bflcol[2], + x->x_val, x->x_steady); binbuf_addv(b, ";"); } - -static void vslider_save(t_gobj *z, t_binbuf *b) -{ - t_slider *x = (t_slider *)z; - int bflcol[3]; - t_symbol *srl[3]; - - iemgui_save(&x->x_gui, srl, bflcol); - binbuf_addv(b, "ssiisiiffiisssiiiiiiiii", gensym("#X"),gensym("obj"), - (int)x->x_gui.x_obj.te_xpix, (int)x->x_gui.x_obj.te_ypix, - gensym("vsl"), x->x_gui.x_w, x->x_gui.x_h, // diff - (t_float)x->x_min, (t_float)x->x_max, - x->x_lin0_log1, iem_symargstoint(&x->x_gui), - srl[0], srl[1], srl[2], - x->x_gui.x_ldx, x->x_gui.x_ldy, - iem_fstyletoint(&x->x_gui), x->x_gui.x_fontsize, - bflcol[0], bflcol[1], bflcol[2], - x->x_val, x->x_steady); - binbuf_addv(b, ";"); -} - -void hslider_check_width(t_slider *x, int w) +void slider_check_length(t_slider *x, int w) { if(w < IEM_SL_MINSIZE) w = IEM_SL_MINSIZE; - x->x_gui.x_w = w; - x->x_center = (x->x_gui.x_w-1)*50; - if(x->x_val > (x->x_gui.x_w*100 - 100)) - { - x->x_pos = x->x_gui.x_w*100 - 100; - x->x_val = x->x_pos; - } - if(x->x_lin0_log1) - x->x_k = log(x->x_max/x->x_min)/(double)(x->x_gui.x_w - 1); - else - x->x_k = (x->x_max - x->x_min)/(double)(x->x_gui.x_w - 1); -} - -void vslider_check_height(t_slider *x, int h) -{ - if(h < IEM_SL_MINSIZE) - h = IEM_SL_MINSIZE; - x->x_gui.x_h = h; - x->x_center = (x->x_gui.x_h-1)*50; - if(x->x_val > (x->x_gui.x_h*100 - 100)) + if (x->x_orient) x->x_gui.x_h = w; + else x->x_gui.x_w = w; + x->x_center = (w-1)*50; + if(x->x_val > (w*100 - 100)) { - x->x_pos = x->x_gui.x_h*100 - 100; + x->x_pos = (w-1)*100; x->x_val = x->x_pos; } if(x->x_lin0_log1) - x->x_k = log(x->x_max/x->x_min)/(double)(x->x_gui.x_h - 1); + x->x_k = log(x->x_max/x->x_min)/(double)(w-1); else - x->x_k = (x->x_max - x->x_min)/(double)(x->x_gui.x_h - 1); + x->x_k = (x->x_max-x->x_min)/(double)(w-1); } void slider_check_minmax(t_slider *x, double min, double max) @@ -400,45 +285,27 @@ void slider_check_minmax(t_slider *x, double min, double max) x->x_min = min; x->x_max = max; x->x_gui.x_reverse = x->x_min > x->x_max; + int w = x->x_orient ? x->x_gui.x_h : x->x_gui.x_w; if(x->x_lin0_log1) - x->x_k = log(x->x_max/x->x_min)/(double)(x->x_gui.x_w - 1); + x->x_k = log(x->x_max/x->x_min)/(double)(w-1); else - x->x_k = (x->x_max - x->x_min)/(double)(x->x_gui.x_w - 1); + x->x_k = (x->x_max-x->x_min)/(double)(w-1); } -static void hslider_properties(t_gobj *z, t_glist *owner) +static void slider_properties(t_gobj *z, t_glist *owner) { t_slider *x = (t_slider *)z; char buf[800]; t_symbol *srl[3]; - + int minx = x->x_orient ? IEM_GUI_MINSIZE : IEM_SL_MINSIZE; + int miny = x->x_orient ? IEM_SL_MINSIZE : IEM_GUI_MINSIZE; iemgui_properties(&x->x_gui, srl); - sprintf(buf, "pdtk_iemgui_dialog %%s |hsl| \ + sprintf(buf, "pdtk_iemgui_dialog %%s |%csl| \ --------dimensions(pix)(pix):-------- %d %d width: %d %d height: \ -----------output-range:----------- %g left: %g right: %g \ %d lin log %d %d empty %d {%s} {%s} {%s} %d %d %d %d %d %d %d\n", - x->x_gui.x_w, IEM_SL_MINSIZE, x->x_gui.x_h, IEM_GUI_MINSIZE, - x->x_min, x->x_max, 0.0,/*no_schedule*/ - x->x_lin0_log1, x->x_gui.x_loadinit, x->x_steady, -1,/*no multi, but iem-characteristic*/ - srl[0]->s_name, srl[1]->s_name, - srl[2]->s_name, x->x_gui.x_ldx, x->x_gui.x_ldy, - x->x_gui.x_font_style, x->x_gui.x_fontsize, - 0xffffff & x->x_gui.x_bcol, 0xffffff & x->x_gui.x_fcol, - 0xffffff & x->x_gui.x_lcol); - gfxstub_new(&x->x_gui.x_obj.ob_pd, x, buf); -} -static void vslider_properties(t_gobj *z, t_glist *owner) -{ - t_slider *x = (t_slider *)z; - char buf[800]; - t_symbol *srl[3]; - - iemgui_properties(&x->x_gui, srl); - sprintf(buf, "pdtk_iemgui_dialog %%s |vsl| \ - --------dimensions(pix)(pix):-------- %d %d width: %d %d height: \ - -----------output-range:----------- %g bottom: %g top: %g \ - %d lin log %d %d empty %d {%s} {%s} {%s} %d %d %d %d %d %d %d\n", - x->x_gui.x_w, IEM_GUI_MINSIZE, x->x_gui.x_h, IEM_SL_MINSIZE, + x->x_orient ? 'v' : 'h', + x->x_gui.x_w, minx, x->x_gui.x_h, miny, x->x_min, x->x_max, 0.0,/*no_schedule*/ x->x_lin0_log1, x->x_gui.x_loadinit, x->x_steady, -1,/*no multi, but iem-characteristic*/ srl[0]->s_name, srl[1]->s_name, @@ -452,7 +319,6 @@ static void vslider_properties(t_gobj *z, t_glist *owner) static void slider_bang(t_slider *x) { double out; - if(x->x_lin0_log1) out = x->x_min*exp(x->x_k*(double)(x->x_val)*0.01); else { @@ -469,44 +335,7 @@ static void slider_bang(t_slider *x) pd_float(x->x_gui.x_snd->s_thing, out); } -static void hslider_dialog(t_slider *x, t_symbol *s, int argc, t_atom *argv) -{ - canvas_apply_setundo(x->x_gui.x_glist, (t_gobj *)x); - - t_symbol *srl[3]; - int w = (int)atom_getintarg(0, argc, argv); - int h = (int)atom_getintarg(1, argc, argv); - double min = (double)atom_getfloatarg(2, argc, argv); - double max = (double)atom_getfloatarg(3, argc, argv); - int lilo = (int)atom_getintarg(4, argc, argv); - int steady = (int)atom_getintarg(17, argc, argv); - int sr_flags; - - if(lilo != 0) lilo = 1; - x->x_lin0_log1 = lilo; - if(steady) - x->x_steady = 1; - else - x->x_steady = 0; - sr_flags = iemgui_dialog(&x->x_gui, srl, argc, argv); - x->x_gui.x_h = iemgui_clip_size(h); //diff - int old_width = x->x_gui.x_w; //diff - hslider_check_width(x, w); //diff - if (x->x_gui.x_w != old_width) //diff - { - x->x_val = x->x_val * ((double)x->x_gui.x_w/(double)old_width); //diff - } - slider_check_minmax(x, min, max); - x->x_gui.x_draw(x, x->x_gui.x_glist, IEM_GUI_DRAW_MODE_CONFIG); - x->x_gui.x_draw(x, x->x_gui.x_glist, IEM_GUI_DRAW_MODE_IO + sr_flags); - //x->x_gui.x_draw(x, x->x_gui.x_glist, IEM_GUI_DRAW_MODE_MOVE); - //canvas_fixlinesfor(glist_getcanvas(x->x_gui.x_glist), (t_text*)x); - iemgui_shouldvis(&x->x_gui, IEM_GUI_DRAW_MODE_MOVE); - - if (x->x_gui.x_selected) hslider_draw_select(x, x->x_gui.x_glist); //diff - scrollbar_update(x->x_gui.x_glist); -} -static void vslider_dialog(t_slider *x, t_symbol *s, int argc, t_atom *argv) +static void slider_dialog(t_slider *x, t_symbol *s, int argc, t_atom *argv) { canvas_apply_setundo(x->x_gui.x_glist, (t_gobj *)x); @@ -517,21 +346,24 @@ static void vslider_dialog(t_slider *x, t_symbol *s, int argc, t_atom *argv) double max = (double)atom_getfloatarg(3, argc, argv); int lilo = (int)atom_getintarg(4, argc, argv); int steady = (int)atom_getintarg(17, argc, argv); - int sr_flags; + int sr_flags, oldl; if(lilo != 0) lilo = 1; x->x_lin0_log1 = lilo; - if(steady) - x->x_steady = 1; - else - x->x_steady = 0; + x->x_steady = !!steady; sr_flags = iemgui_dialog(&x->x_gui, srl, argc, argv); - x->x_gui.x_w = iemgui_clip_size(w); - int old_height = x->x_gui.x_h; - vslider_check_height(x, h); - if (x->x_gui.x_h != old_height) - { - x->x_val = x->x_val * ((double)x->x_gui.x_h/(double)old_height); + if (x->x_orient) { + x->x_gui.x_w = iemgui_clip_size(w); + oldl = x->x_gui.x_h; + slider_check_length(x, h); + if (x->x_gui.x_h != oldl) + x->x_val = x->x_val * ((double)x->x_gui.x_h/(double)oldl); + } else { + x->x_gui.x_h = iemgui_clip_size(h); + oldl = x->x_gui.x_w; + slider_check_length(x, w); + if (x->x_gui.x_w != oldl) + x->x_val = x->x_val * ((double)x->x_gui.x_w/(double)oldl); } slider_check_minmax(x, min, max); x->x_gui.x_draw(x, x->x_gui.x_glist, IEM_GUI_DRAW_MODE_CONFIG); @@ -540,52 +372,22 @@ static void vslider_dialog(t_slider *x, t_symbol *s, int argc, t_atom *argv) //canvas_fixlinesfor(glist_getcanvas(x->x_gui.x_glist), (t_text*)x); iemgui_shouldvis(&x->x_gui, IEM_GUI_DRAW_MODE_MOVE); - if (x->x_gui.x_selected) vslider_draw_select(x, x->x_gui.x_glist); + if (x->x_gui.x_selected) slider_draw_select(x, x->x_gui.x_glist); scrollbar_update(x->x_gui.x_glist); } -static void hslider_motion(t_slider *x, t_floatarg dx, t_floatarg dy) -{ - x->x_is_last_float = 0; - int old = x->x_val; - - if(x->x_gui.x_finemoved) - x->x_pos += (int)dx; - else - x->x_pos += 100*(int)dx; - x->x_val = x->x_pos; - if(x->x_val > (100*x->x_gui.x_w - 100)) - { - x->x_val = 100*x->x_gui.x_w - 100; - x->x_pos += 50; - x->x_pos -= x->x_pos%100; - } - if(x->x_val < 0) - { - x->x_val = 0; - x->x_pos -= 50; - x->x_pos -= x->x_pos%100; - } - if(old != x->x_val) - { - x->x_gui.x_changed = 1; - x->x_gui.x_draw(x, x->x_gui.x_glist, IEM_GUI_DRAW_MODE_UPDATE); - slider_bang(x); - } -} -static void vslider_motion(t_slider *x, t_floatarg dx, t_floatarg dy) +static void slider_motion(t_slider *x, t_floatarg dx, t_floatarg dy) { x->x_is_last_float = 0; int old = x->x_val; - - if(x->x_gui.x_finemoved) - x->x_pos -= (int)dy; - else - x->x_pos -= 100*(int)dy; + int d = x->x_orient ? -dy : dx; + if(!x->x_gui.x_finemoved) d *= 100; + x->x_pos += d; x->x_val = x->x_pos; - if(x->x_val > (100*x->x_gui.x_h - 100)) + int w = x->x_orient ? x->x_gui.x_h : x->x_gui.x_w; + if(x->x_val > (100*w - 100)) { - x->x_val = 100*x->x_gui.x_h - 100; + x->x_val = 100*w - 100; x->x_pos += 50; x->x_pos -= x->x_pos%100; } @@ -603,36 +405,16 @@ static void vslider_motion(t_slider *x, t_floatarg dx, t_floatarg dy) } } -static void hslider_click(t_slider *x, t_floatarg xpos, t_floatarg ypos, - t_floatarg shift, t_floatarg ctrl, t_floatarg alt) -{ - if(!x->x_steady) - x->x_val = (int)(100.0 * (xpos - - text_xpix(&x->x_gui.x_obj, x->x_gui.x_glist))); - if(x->x_val > (100*x->x_gui.x_w - 100)) - x->x_val = 100*x->x_gui.x_w - 100; - if(x->x_val < 0) - x->x_val = 0; - if (x->x_pos != x->x_val) - { - x->x_pos = x->x_val; - x->x_gui.x_changed = 1; - x->x_gui.x_draw(x, x->x_gui.x_glist, IEM_GUI_DRAW_MODE_UPDATE); - } - slider_bang(x); - glist_grab(x->x_gui.x_glist, &x->x_gui.x_obj.te_g, - (t_glistmotionfn)hslider_motion, 0, xpos, ypos); -} -static void vslider_click(t_slider *x, t_floatarg xpos, t_floatarg ypos, +static void slider_click(t_slider *x, t_floatarg xpos, t_floatarg ypos, t_floatarg shift, t_floatarg ctrl, t_floatarg alt) { if(!x->x_steady) - x->x_val = (int)(100.0 * (x->x_gui.x_h + - text_ypix(&x->x_gui.x_obj, x->x_gui.x_glist) - ypos)); - if(x->x_val > (100*x->x_gui.x_h - 100)) - x->x_val = 100*x->x_gui.x_h - 100; - if(x->x_val < 0) - x->x_val = 0; + x->x_val = x->x_orient ? + (int)(100.0 * ( xpos - text_xpix(&x->x_gui.x_obj, x->x_gui.x_glist))) : + (int)(100.0 * (x->x_gui.x_h + text_ypix(&x->x_gui.x_obj, x->x_gui.x_glist) - ypos)); + + int w = x->x_orient ? x->x_gui.x_h : x->x_gui.x_w; + x->x_val = mini(maxi(x->x_val,0),100*(w-1)); if (x->x_pos != x->x_val) { x->x_pos = x->x_val; @@ -641,38 +423,18 @@ static void vslider_click(t_slider *x, t_floatarg xpos, t_floatarg ypos, } slider_bang(x); glist_grab(x->x_gui.x_glist, &x->x_gui.x_obj.te_g, - (t_glistmotionfn)vslider_motion, 0, xpos, ypos); + (t_glistmotionfn)slider_motion, 0, xpos, ypos); } -static int hslider_newclick(t_gobj *z, struct _glist *glist, +static int slider_newclick(t_gobj *z, struct _glist *glist, int xpix, int ypix, int shift, int alt, int dbl, int doit) { t_slider *x = (t_slider *)z; - if(doit) { - hslider_click(x, (t_floatarg)xpix, (t_floatarg)ypix, (t_floatarg)shift, + slider_click(x, (t_floatarg)xpix, (t_floatarg)ypix, (t_floatarg)shift, 0, (t_floatarg)alt); - if(shift) - x->x_gui.x_finemoved = 1; - else - x->x_gui.x_finemoved = 0; - } - return (1); -} -static int vslider_newclick(t_gobj *z, struct _glist *glist, - int xpix, int ypix, int shift, int alt, int dbl, int doit) -{ - t_slider *x = (t_slider *)z; - - if(doit) - { - vslider_click(x, (t_floatarg)xpix, (t_floatarg)ypix, (t_floatarg)shift, - 0, (t_floatarg)alt); - if(shift) - x->x_gui.x_finemoved = 1; - else - x->x_gui.x_finemoved = 0; + x->x_gui.x_finemoved = !!shift; } return (1); } @@ -712,18 +474,17 @@ static void slider_float(t_slider *x, t_floatarg f) slider_bang(x); } -static void hslider_size(t_slider *x, t_symbol *s, int ac, t_atom *av) -{ - hslider_check_width(x, (int)atom_getintarg(0, ac, av)); - if(ac > 1) - x->x_gui.x_h = iemgui_clip_size((int)atom_getintarg(1, ac, av)); - iemgui_size(&x->x_gui); -} -static void vslider_size(t_slider *x, t_symbol *s, int ac, t_atom *av) +static void slider_size(t_slider *x, t_symbol *s, int ac, t_atom *av) { - x->x_gui.x_w = iemgui_clip_size((int)atom_getintarg(0, ac, av)); - if(ac > 1) - vslider_check_height(x, (int)atom_getintarg(1, ac, av)); + if (x->x_orient) { + x->x_gui.x_w = iemgui_clip_size((int)atom_getintarg(0, ac, av)); + if(ac > 1) + slider_check_length(x, (int)atom_getintarg(1, ac, av)); + } else { + slider_check_length(x, (int)atom_getintarg(0, ac, av)); + if(ac > 1) + x->x_gui.x_h = iemgui_clip_size((int)atom_getintarg(1, ac, av)); + } iemgui_size(&x->x_gui); } @@ -739,20 +500,11 @@ static void slider_log(t_slider *x) slider_check_minmax(x, x->x_min, x->x_max); } -static void hslider_lin(t_slider *x) +static void slider_lin(t_slider *x) { x->x_lin0_log1 = 0; - x->x_k = (x->x_max - x->x_min)/(double)(x->x_gui.x_w - 1); -} -static void vslider_lin(t_slider *x) -{ - x->x_lin0_log1 = 0; - x->x_k = (x->x_max - x->x_min)/(double)(x->x_gui.x_h - 1); -} - -static void slider_init(t_slider *x, t_floatarg f) -{ - x->x_gui.x_loadinit = (f==0.0)?0:1; + int w = x->x_orient ? x->x_gui.x_h : x->x_gui.x_w; + x->x_k = (x->x_max - x->x_min)/(double)(w-1); } static void slider_steady(t_slider *x, t_floatarg f) @@ -816,7 +568,7 @@ static void *slider_new(t_symbol *s, int argc, t_atom *argv) else iemgui_new_getnames(&x->x_gui, 6, 0); if((argc == 18)&&IS_A_FLOAT(argv,17)) steady = (int)atom_getintarg(17, argc, argv); - x->x_gui.x_draw = orient ? (t_iemfunptr)vslider_draw : (t_iemfunptr)hslider_draw; + x->x_gui.x_draw = (t_iemfunptr)slider_draw; x->x_is_last_float = 0; x->x_last = 0.0; x->x_gui.x_glist = (t_glist *)canvas_getcurrent(); @@ -839,10 +591,10 @@ static void *slider_new(t_symbol *s, int argc, t_atom *argv) x->x_gui.x_fontsize = fs; if (orient) { x->x_gui.x_w = iemgui_clip_size(w); - vslider_check_height(x, h); + slider_check_length(x, h); } else { x->x_gui.x_h = iemgui_clip_size(h); - hslider_check_width(x, w); + slider_check_length(x, w); } slider_check_minmax(x, min, max); iemgui_all_colfromload(&x->x_gui, bflcol); @@ -850,7 +602,7 @@ static void *slider_new(t_symbol *s, int argc, t_atom *argv) iemgui_verify_snd_ne_rcv(&x->x_gui); outlet_new(&x->x_gui.x_obj, &s_float); - t_class *sc = orient ? vscalehandle_class : hscalehandle_class; + t_class *sc = scalehandle_class; x->x_gui. x_handle = scalehandle_new(sc,(t_iemgui *)x,1); x->x_gui.x_lhandle = scalehandle_new(sc,(t_iemgui *)x,0); x->x_gui.x_obj.te_iemgui = 1; @@ -875,75 +627,47 @@ void slider_addmethods(t_class *c) { class_addmethod(c, (t_method)slider_set, gensym("set"), A_FLOAT, 0); class_addmethod(c, (t_method)slider_log, gensym("log"), 0); - class_addmethod(c, (t_method)slider_init, - gensym("init"), A_FLOAT, 0); - class_addmethod(c, (t_method)slider_steady, - gensym("steady"), A_FLOAT, 0); - class_addmethod(c, (t_method)slider_range, - gensym("range"), A_GIMME, 0); -} - -void g_hslider_setup(void) -{ - hslider_class = class_new(gensym("hsl"), (t_newmethod)slider_new, - (t_method)slider_free, sizeof(t_slider), 0, A_GIMME, 0); - class_addcreator((t_newmethod)slider_new, gensym("hslider"), A_GIMME, 0); - class_addbang(hslider_class,slider_bang); - class_addfloat(hslider_class,slider_float); - class_addmethod(hslider_class, (t_method)hslider_click, gensym("click"), + class_addmethod(c, (t_method)slider_lin, gensym("lin"), 0); + class_addmethod(c, (t_method)iemgui_init, gensym("init"), A_FLOAT, 0); + class_addmethod(c, (t_method)slider_steady, gensym("steady"), A_FLOAT, 0); + class_addmethod(c, (t_method)slider_range, gensym("range"), A_GIMME, 0); + class_addbang(c,slider_bang); + class_addfloat(c,slider_float); + class_addmethod(c, (t_method)slider_click, gensym("click"), A_FLOAT, A_FLOAT, A_FLOAT, A_FLOAT, A_FLOAT, 0); - class_addmethod(hslider_class, (t_method)hslider_motion, gensym("motion"), + class_addmethod(c, (t_method)slider_motion, gensym("motion"), A_FLOAT, A_FLOAT, 0); - class_addmethod(hslider_class, (t_method)hslider_dialog, gensym("dialog"), + class_setsavefn(c, slider_save); + class_addmethod(c, (t_method)slider_size, gensym("size"), A_GIMME, 0); + class_setwidget(c, &slider_widgetbehavior); + class_addmethod(c, (t_method)slider_dialog, gensym("dialog"), A_GIMME, 0); - slider_addmethods(hslider_class); - class_addmethod(hslider_class, (t_method)hslider_size, - gensym("size"), A_GIMME, 0); - iemgui_class_addmethods(hslider_class); - class_addmethod(hslider_class, (t_method)hslider_lin, gensym("lin"), 0); - - hscalehandle_class = class_new(gensym("_scalehandle"), 0, 0, - sizeof(t_scalehandle), CLASS_PD, 0); - class_addmethod(hscalehandle_class, (t_method)slider__clickhook, - gensym("_click"), A_FLOAT, A_FLOAT, A_FLOAT, 0); - class_addmethod(hscalehandle_class, (t_method)hslider__motionhook, - gensym("_motion"), A_FLOAT, A_FLOAT, 0); - - wb_init(&hslider_widgetbehavior,hslider_getrect,hslider_newclick); - class_setwidget(hslider_class, &hslider_widgetbehavior); - class_sethelpsymbol(hslider_class, gensym("hslider")); - class_setsavefn(hslider_class, hslider_save); - class_setpropertiesfn(hslider_class, hslider_properties); + class_setpropertiesfn(c, slider_properties); } -void g_vslider_setup(void) + +void g_slider_setup(void) { + wb_init(&slider_widgetbehavior,slider_getrect,slider_newclick); + + hslider_class = class_new(gensym("hsl"), (t_newmethod)slider_new, + (t_method)slider_free, sizeof(t_slider), 0, A_GIMME, 0); vslider_class = class_new(gensym("vsl"), (t_newmethod)slider_new, (t_method)slider_free, sizeof(t_slider), 0, A_GIMME, 0); + class_addcreator((t_newmethod)slider_new, gensym("hslider"), A_GIMME, 0); class_addcreator((t_newmethod)slider_new, gensym("vslider"), A_GIMME, 0); - class_addbang(vslider_class,slider_bang); - class_addfloat(vslider_class,slider_float); - class_addmethod(vslider_class, (t_method)vslider_click, gensym("click"), - A_FLOAT, A_FLOAT, A_FLOAT, A_FLOAT, A_FLOAT, 0); - class_addmethod(vslider_class, (t_method)vslider_motion, gensym("motion"), - A_FLOAT, A_FLOAT, 0); - class_addmethod(vslider_class, (t_method)vslider_dialog, gensym("dialog"), - A_GIMME, 0); + slider_addmethods(hslider_class); - class_addmethod(vslider_class, (t_method)vslider_size, - gensym("size"), A_GIMME, 0); + slider_addmethods(vslider_class); + iemgui_class_addmethods(hslider_class); iemgui_class_addmethods(vslider_class); - class_addmethod(vslider_class, (t_method)vslider_lin, gensym("lin"), 0); - vscalehandle_class = class_new(gensym("_scalehandle"), 0, 0, + class_sethelpsymbol(hslider_class, gensym("hslider")); + class_sethelpsymbol(vslider_class, gensym("vslider")); + + scalehandle_class = class_new(gensym("_scalehandle"), 0, 0, sizeof(t_scalehandle), CLASS_PD, 0); - class_addmethod(vscalehandle_class, (t_method)slider__clickhook, + class_addmethod(scalehandle_class, (t_method)slider__clickhook, gensym("_click"), A_FLOAT, A_FLOAT, A_FLOAT, 0); - class_addmethod(vscalehandle_class, (t_method)vslider__motionhook, + class_addmethod(scalehandle_class, (t_method)slider__motionhook, gensym("_motion"), A_FLOAT, A_FLOAT, 0); - - wb_init(&vslider_widgetbehavior,vslider_getrect,vslider_newclick); - class_setwidget(vslider_class, &vslider_widgetbehavior); - class_sethelpsymbol(vslider_class, gensym("vslider")); - class_setsavefn(vslider_class, vslider_save); - class_setpropertiesfn(vslider_class, vslider_properties); } diff --git a/pd/src/g_toggle.c b/pd/src/g_toggle.c index 19f5074f5..3ad8a1ab6 100644 --- a/pd/src/g_toggle.c +++ b/pd/src/g_toggle.c @@ -108,15 +108,9 @@ void toggle_draw_select(t_toggle* x, t_glist* glist) if(x->x_gui.x_selected) { if (x->x_gui.x_glist == glist_getcanvas(glist)) - { - scalehandle_draw_select2(&x->x_gui,glist, - x->x_gui.x_w-1,x->x_gui.x_h-1); - } - } - else - { - scalehandle_draw_erase2(&x->x_gui,glist); + scalehandle_draw_select2(&x->x_gui,glist); } + else scalehandle_draw_erase2(&x->x_gui,glist); iemgui_label_draw_select(&x->x_gui,canvas); iemgui_tag_selected(&x->x_gui,canvas); } @@ -338,11 +332,6 @@ static void toggle_size(t_toggle *x, t_symbol *s, int ac, t_atom *av) iemgui_size(&x->x_gui); } -static void toggle_init(t_toggle *x, t_floatarg f) -{ - x->x_gui.x_loadinit = (f==0.0)?0:1; -} - static void toggle_nonzero(t_toggle *x, t_floatarg f) { if(f != 0.0) @@ -444,7 +433,7 @@ void g_toggle_setup(void) class_addmethod(toggle_class, (t_method)toggle_size, gensym("size"), A_GIMME, 0); iemgui_class_addmethods(toggle_class); - class_addmethod(toggle_class, (t_method)toggle_init, gensym("init"), + class_addmethod(toggle_class, (t_method)iemgui_init, gensym("init"), A_FLOAT, 0); class_addmethod(toggle_class, (t_method)toggle_nonzero, gensym("nonzero"), A_FLOAT, 0); diff --git a/pd/src/g_vumeter.c b/pd/src/g_vumeter.c index 9f10bf232..f2a0cc651 100644 --- a/pd/src/g_vumeter.c +++ b/pd/src/g_vumeter.c @@ -270,14 +270,10 @@ static void vu_draw_select(t_vu* x,t_glist* glist) int issel = x->x_gui.x_selected && x->x_gui.x_glist==canvas; sys_vgui(".x%lx.c itemconfigure %lxSCALEN " "-fill %s\n", canvas, x, issel ? selection_color : lcol); - if(issel) { - scalehandle_draw_select2(&x->x_gui,glist, - x->x_gui.x_w+2-1,x->x_gui.x_h+4-1); - } + if(issel) + scalehandle_draw_select2(&x->x_gui,glist); else - { scalehandle_draw_erase2(&x->x_gui,glist); - } iemgui_label_draw_select(&x->x_gui,canvas); iemgui_tag_selected(&x->x_gui,canvas); } @@ -305,8 +301,7 @@ static void vu__clickhook(t_scalehandle *sh, t_floatarg f, t_floatarg xxx, scalehandle_unclick_scale(sh); } } - else iemgui__clickhook3(sh,newstate); - sh->h_dragon = newstate; + iemgui__clickhook3(sh,newstate); } static void vu__motionhook(t_scalehandle *sh, t_floatarg f1, t_floatarg f2) diff --git a/pd/src/m_conf.c b/pd/src/m_conf.c index c62e4f769..8c2f94e11 100644 --- a/pd/src/m_conf.c +++ b/pd/src/m_conf.c @@ -13,13 +13,11 @@ void g_guiconnect_setup(void); /* iemlib */ void g_iemgui_setup(void); void g_bang_setup(void); -void g_hradio_setup(void); -void g_hslider_setup(void); +void g_radio_setup(void); +void g_slider_setup(void); void g_mycanvas_setup(void); void g_numbox_setup(void); void g_toggle_setup(void); -void g_vradio_setup(void); -void g_vslider_setup(void); void g_vumeter_setup(void); /* iemlib */ void g_io_setup(void); @@ -64,13 +62,11 @@ void conf_init(void) /* iemlib */ g_iemgui_setup(); g_bang_setup(); - g_hradio_setup(); - g_hslider_setup(); + g_radio_setup(); + g_slider_setup(); g_mycanvas_setup(); g_numbox_setup(); g_toggle_setup(); - g_vradio_setup(); - g_vslider_setup(); g_vumeter_setup(); /* iemlib */ g_io_setup(); -- GitLab