Skip to content

Commit

Permalink
updates to other guis. sliders and radios now pass values through wit…
Browse files Browse the repository at this point in the history
…hout

quantizing them, and toggles don't reset their non-zero values on incoming
float messages.  Reverts to old behavior if "pd cpmpatibility" is set
<= 0.45
  • Loading branch information
millerpuckette committed Aug 4, 2014
1 parent 7fa8033 commit f0a3a0c
Show file tree
Hide file tree
Showing 6 changed files with 68 additions and 58 deletions.
12 changes: 6 additions & 6 deletions src/g_all_guis.h
Expand Up @@ -174,14 +174,12 @@ typedef struct _hslider
t_iemgui x_gui;
int x_pos;
int x_val;
int x_center;
int x_thick;
int x_lin0_log1;
int x_steady;
double x_min;
double x_max;
double x_k;
float x_fval;
t_float x_fval;
} t_hslider;

typedef struct _hdial
Expand All @@ -192,6 +190,7 @@ typedef struct _hdial
int x_change;
int x_number;
int x_drawn;
t_float x_fval;
t_atom x_at[2];
} t_hdial;

Expand Down Expand Up @@ -220,7 +219,7 @@ typedef struct _vslider
double x_min;
double x_max;
double x_k;
float x_fval;
t_float x_fval;
} t_vslider;

typedef struct _vu
Expand All @@ -229,8 +228,8 @@ typedef struct _vu
int x_led_size;
int x_peak;
int x_rms;
t_float x_fp;
t_float x_fr;
t_float x_fp;
t_float x_fr;
int x_scale;
void *x_out_rms;
void *x_out_peak;
Expand Down Expand Up @@ -261,6 +260,7 @@ typedef struct _vdial
int x_change;
int x_number;
int x_drawn;
t_float x_fval;
t_atom x_at[2];
} t_vdial;

Expand Down
30 changes: 19 additions & 11 deletions src/g_hdial.c
Expand Up @@ -241,7 +241,7 @@ static void hradio_save(t_gobj *z, t_binbuf *b)
t_symbol *srl[3];

iemgui_save(&x->x_gui, srl, bflcol);
binbuf_addv(b, "ssiisiiiisssiiiiiiii", gensym("#X"),gensym("obj"),
binbuf_addv(b, "ssiisiiiisssiiiiiiif", 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")),
Expand All @@ -250,7 +250,7 @@ static void hradio_save(t_gobj *z, t_binbuf *b)
srl[0], srl[1], srl[2],
x->x_gui.x_ldx, x->x_gui.x_ldy,
iem_fstyletoint(&x->x_gui.x_fsf), x->x_gui.x_fontsize,
bflcol[0], bflcol[1], bflcol[2], x->x_on);
bflcol[0], bflcol[1], bflcol[2], x->x_fval);
binbuf_addv(b, ";");
}

Expand Down Expand Up @@ -321,6 +321,7 @@ static void hradio_set(t_hradio *x, t_floatarg f)
int i=(int)f;
int old=x->x_on_old;

x->x_fval = f;
if(i < 0)
i = 0;
if(i >= x->x_number)
Expand Down Expand Up @@ -362,16 +363,18 @@ static void hradio_bang(t_hradio *x)
}
else
{
outlet_float(x->x_gui.x_obj.ob_outlet, x->x_on);
float outval = (pd_compatibilitylevel < 46 ? x->x_on : x->x_fval);
outlet_float(x->x_gui.x_obj.ob_outlet, outval);
if(x->x_gui.x_fsf.x_snd_able && x->x_gui.x_snd->s_thing)
pd_float(x->x_gui.x_snd->s_thing, x->x_on);
pd_float(x->x_gui.x_snd->s_thing, outval);
}
}

static void hradio_fout(t_hradio *x, t_floatarg f)
{
int i=(int)f;

x->x_fval = f;
if(i < 0)
i = 0;
if(i >= x->x_number)
Expand Down Expand Up @@ -400,19 +403,20 @@ static void hradio_fout(t_hradio *x, t_floatarg f)
}
else
{
float outval = (pd_compatibilitylevel < 46 ? i : x->x_fval);
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);
outlet_float(x->x_gui.x_obj.ob_outlet, x->x_on);
outlet_float(x->x_gui.x_obj.ob_outlet, outval);
if(x->x_gui.x_fsf.x_snd_able && x->x_gui.x_snd->s_thing)
pd_float(x->x_gui.x_snd->s_thing, x->x_on);
pd_float(x->x_gui.x_snd->s_thing, outval);
}
}

static void hradio_float(t_hradio *x, t_floatarg f)
{
int i=(int)f;

x->x_fval = f;
if(i < 0)
i = 0;
if(i >= x->x_number)
Expand Down Expand Up @@ -448,14 +452,15 @@ static void hradio_float(t_hradio *x, t_floatarg f)
}
else
{
float outval = (pd_compatibilitylevel < 46 ? i : x->x_fval);
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);
if (x->x_gui.x_fsf.x_put_in2out)
{
outlet_float(x->x_gui.x_obj.ob_outlet, x->x_on);
outlet_float(x->x_gui.x_obj.ob_outlet, outval);
if(x->x_gui.x_fsf.x_snd_able && x->x_gui.x_snd->s_thing)
pd_float(x->x_gui.x_snd->s_thing, x->x_on);
pd_float(x->x_gui.x_snd->s_thing, outval);
}
}
}
Expand Down Expand Up @@ -545,11 +550,12 @@ static void *hradio_donew(t_symbol *s, int argc, t_atom *argv, int old)
{
t_hradio *x = (t_hradio *)pd_new(old? hradio_old_class : hradio_class);
int bflcol[]={-262144, -1, -1};
int a=IEM_GUI_DEFAULTSIZE, on=0, f=0;
int a=IEM_GUI_DEFAULTSIZE, on = 0, f=0;
int ldx=0, ldy=-8, chg=1, num=8;
int fs=10;
int ftbreak=IEM_BNG_DEFAULTBREAKFLASHTIME, fthold=IEM_BNG_DEFAULTHOLDFLASHTIME;
char str[144];
float fval = 0;

iem_inttosymargs(&x->x_gui.x_isa, 0);
iem_inttofstyle(&x->x_gui.x_fsf, 0);
Expand All @@ -575,7 +581,7 @@ static void *hradio_donew(t_symbol *s, int argc, t_atom *argv, int old)
bflcol[0] = (int)atom_getintarg(11, argc, argv);
bflcol[1] = (int)atom_getintarg(12, argc, argv);
bflcol[2] = (int)atom_getintarg(13, argc, argv);
on = (int)atom_getintarg(14, argc, argv);
fval = atom_getfloatarg(14, argc, argv);
}
else iemgui_new_getnames(&x->x_gui, 4, 0);
x->x_gui.x_draw = (t_iemfunptr)hradio_draw;
Expand All @@ -595,6 +601,8 @@ static void *hradio_donew(t_symbol *s, int argc, t_atom *argv, int old)
if(num > IEM_RADIO_MAX)
num = IEM_RADIO_MAX;
x->x_number = num;
x->x_fval = fval;
on = fval;
if(on < 0)
on = 0;
if(on >= x->x_number)
Expand Down
18 changes: 2 additions & 16 deletions src/g_hslider.c
Expand Up @@ -486,22 +486,8 @@ static void hslider_float(t_hslider *x, t_floatarg f)
double out;

hslider_set(x, f);
if (pd_compatibilitylevel < 46)
{
if(x->x_lin0_log1)
out = x->x_min*exp(x->x_k*(double)(x->x_val)*0.01);
else
out = (double)(x->x_val)*0.01*x->x_k + x->x_min;
if((out < 1.0e-10)&&(out > -1.0e-10))
out = 0.0;
}
else out = x->x_fval;
if(x->x_gui.x_fsf.x_put_in2out)
{
outlet_float(x->x_gui.x_obj.ob_outlet, out);
if(x->x_gui.x_fsf.x_snd_able && x->x_gui.x_snd->s_thing)
pd_float(x->x_gui.x_snd->s_thing, out);
}
hslider_bang(x);
}

static void hslider_loadbang(t_hslider *x)
Expand Down Expand Up @@ -551,7 +537,7 @@ static void *hslider_new(t_symbol *s, int argc, t_atom *argv)
bflcol[0] = (int)atom_getintarg(13, argc, argv);
bflcol[1] = (int)atom_getintarg(14, argc, argv);
bflcol[2] = (int)atom_getintarg(15, argc, argv);
v = (int)atom_getfloatarg(16, argc, argv);
v = atom_getfloatarg(16, argc, argv);
}
else iemgui_new_getnames(&x->x_gui, 6, 0);
if((argc == 18)&&IS_A_FLOAT(argv,17))
Expand Down
2 changes: 1 addition & 1 deletion src/g_toggle.c
Expand Up @@ -288,7 +288,7 @@ static void toggle_set(t_toggle *x, t_floatarg f)
{
int old = (x->x_on != 0);
x->x_on = f;
if (f != 0.0)
if (f != 0.0 && pd_compatibilitylevel < 46)
x->x_nonzero = f;
if ((x->x_on != 0) != old)
(*x->x_gui.x_draw)(x, x->x_gui.x_glist, IEM_GUI_DRAW_MODE_UPDATE);
Expand Down
29 changes: 19 additions & 10 deletions src/g_vdial.c
Expand Up @@ -241,7 +241,7 @@ static void vradio_save(t_gobj *z, t_binbuf *b)
t_symbol *srl[3];

iemgui_save(&x->x_gui, srl, bflcol);
binbuf_addv(b, "ssiisiiiisssiiiiiiii", gensym("#X"),gensym("obj"),
binbuf_addv(b, "ssiisiiiisssiiiiiiif", 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 ?
Expand All @@ -251,7 +251,7 @@ static void vradio_save(t_gobj *z, t_binbuf *b)
srl[0], srl[1], srl[2],
x->x_gui.x_ldx, x->x_gui.x_ldy,
iem_fstyletoint(&x->x_gui.x_fsf), x->x_gui.x_fontsize,
bflcol[0], bflcol[1], bflcol[2], x->x_on);
bflcol[0], bflcol[1], bflcol[2], x->x_fval);
binbuf_addv(b, ";");
}

Expand Down Expand Up @@ -321,6 +321,7 @@ static void vradio_set(t_vradio *x, t_floatarg f)
int i=(int)f;
int old;

x->x_fval = f;
if(i < 0)
i = 0;
if(i >= x->x_number)
Expand Down Expand Up @@ -362,16 +363,18 @@ static void vradio_bang(t_vradio *x)
}
else
{
outlet_float(x->x_gui.x_obj.ob_outlet, x->x_on);
float outval = (pd_compatibilitylevel < 46 ? x->x_on : x->x_fval);
outlet_float(x->x_gui.x_obj.ob_outlet, outval);
if(x->x_gui.x_fsf.x_snd_able && x->x_gui.x_snd->s_thing)
pd_float(x->x_gui.x_snd->s_thing, x->x_on);
pd_float(x->x_gui.x_snd->s_thing, outval);
}
}

static void vradio_fout(t_vradio *x, t_floatarg f)
{
int i=(int)f;

x->x_fval = f;
if(i < 0)
i = 0;
if(i >= x->x_number)
Expand Down Expand Up @@ -401,19 +404,21 @@ static void vradio_fout(t_vradio *x, t_floatarg f)
}
else
{
float outval = (pd_compatibilitylevel < 46 ? i : x->x_fval);
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);
outlet_float(x->x_gui.x_obj.ob_outlet, x->x_on);
outlet_float(x->x_gui.x_obj.ob_outlet, outval);
if (x->x_gui.x_fsf.x_snd_able && x->x_gui.x_snd->s_thing)
pd_float(x->x_gui.x_snd->s_thing, x->x_on);
pd_float(x->x_gui.x_snd->s_thing, outval);
}
}

static void vradio_float(t_vradio *x, t_floatarg f)
{
int i=(int)f;

x->x_fval = f;
if(i < 0)
i = 0;
if(i >= x->x_number)
Expand Down Expand Up @@ -449,14 +454,15 @@ static void vradio_float(t_vradio *x, t_floatarg f)
}
else
{
float outval = (pd_compatibilitylevel < 46 ? i : x->x_fval);
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);
if (x->x_gui.x_fsf.x_put_in2out)
{
outlet_float(x->x_gui.x_obj.ob_outlet, x->x_on);
outlet_float(x->x_gui.x_obj.ob_outlet, outval);
if(x->x_gui.x_fsf.x_snd_able && x->x_gui.x_snd->s_thing)
pd_float(x->x_gui.x_snd->s_thing, x->x_on);
pd_float(x->x_gui.x_snd->s_thing, outval);
}
}
}
Expand Down Expand Up @@ -549,11 +555,12 @@ static void *vradio_donew(t_symbol *s, int argc, t_atom *argv, int old)
{
t_vradio *x = (t_vradio *)pd_new(old? vradio_old_class : vradio_class);
int bflcol[]={-262144, -1, -1};
int a=IEM_GUI_DEFAULTSIZE, on=0, f=0;
int a=IEM_GUI_DEFAULTSIZE, on = 0, f=0;
int ldx=0, ldy=-8, chg=1, num=8;
int fs=10;
int ftbreak=IEM_BNG_DEFAULTBREAKFLASHTIME, fthold=IEM_BNG_DEFAULTHOLDFLASHTIME;
char str[144];
float fval = 0;

if((argc == 15)&&IS_A_FLOAT(argv,0)&&IS_A_FLOAT(argv,1)&&IS_A_FLOAT(argv,2)
&&IS_A_FLOAT(argv,3)
Expand All @@ -576,7 +583,7 @@ static void *vradio_donew(t_symbol *s, int argc, t_atom *argv, int old)
bflcol[0] = (int)atom_getintarg(11, argc, argv);
bflcol[1] = (int)atom_getintarg(12, argc, argv);
bflcol[2] = (int)atom_getintarg(13, argc, argv);
on = (int)atom_getintarg(14, argc, argv);
fval = atom_getintarg(14, argc, argv);
}
else iemgui_new_getnames(&x->x_gui, 4, 0);
x->x_gui.x_draw = (t_iemfunptr)vradio_draw;
Expand All @@ -596,6 +603,8 @@ static void *vradio_donew(t_symbol *s, int argc, t_atom *argv, int old)
if(num > IEM_RADIO_MAX)
num = IEM_RADIO_MAX;
x->x_number = num;
x->x_fval = fval;
on = fval;
if(on < 0)
on = 0;
if(on >= x->x_number)
Expand Down

0 comments on commit f0a3a0c

Please sign in to comment.