From f2f04d80c40e2b6a823d8dd8882e273f2f721bb0 Mon Sep 17 00:00:00 2001 From: Ivica Ico Bukvic <ico@vt.edu> Date: Sun, 31 Aug 2014 03:10:00 -0400 Subject: [PATCH] *font resizing is messed up (no font provided results in size too small, instead of default) *Drawsymbol also draws symbol information twice on disis_wiimote-help.pd (linked with font size data) *synced drawsymbol with drawnumber --- pd/src/g_template.c | 54 ++++++++++++++++++++++++++++++++++++++------- 1 file changed, 46 insertions(+), 8 deletions(-) diff --git a/pd/src/g_template.c b/pd/src/g_template.c index f206371a6..38b73a73f 100644 --- a/pd/src/g_template.c +++ b/pd/src/g_template.c @@ -6174,6 +6174,7 @@ static void *drawnumber_new(t_symbol *classsym, t_int argc, t_atom *argv) t_drawnumber *x = (t_drawnumber *)pd_new(drawnumber_class); char *classname = classsym->s_name; int flags = 0; + int got_font_size = 0; if (classname[4] == 's') flags |= DRAW_SYMBOL; @@ -6206,11 +6207,29 @@ static void *drawnumber_new(t_symbol *classsym, t_int argc, t_atom *argv) else fielddesc_setfloat_const(&x->x_yloc, 0); if (argc) fielddesc_setfloatarg(&x->x_color, argc--, argv++); else fielddesc_setfloat_const(&x->x_color, 1); - if (argc == 2) fielddesc_setfloatarg(&x->x_fontsize, argc--, argv++); - else fielddesc_setfloatarg(&x->x_fontsize, 0, NULL); + + if (argc == 2) + { + fielddesc_setfloatarg(&x->x_fontsize, argc--, argv++); + got_font_size = 1; + } if (argc) - x->x_label = atom_getsymbolarg(0, argc, argv); - else x->x_label = &s_; + { + if (argv->a_type == A_SYMBOL || got_font_size) + { + x->x_label = atom_getsymbolarg(0, argc, argv); + if (!got_font_size) + fielddesc_setfloatarg(&x->x_fontsize, 0, NULL); + } + else if (argv->a_type == A_FLOAT) + { + fielddesc_setfloatarg(&x->x_fontsize, argc, argv); + x->x_label = &s_; + } + } else { + fielddesc_setfloatarg(&x->x_fontsize, 0, NULL); + x->x_label = &s_; + } return (x); } @@ -6583,6 +6602,7 @@ static void *drawsymbol_new(t_symbol *classsym, t_int argc, t_atom *argv) t_drawsymbol *x = (t_drawsymbol *)pd_new(drawsymbol_class); char *classname = classsym->s_name; int flags = 0; + int got_font_size = 0; if (classname[4] == 's') flags |= DRAW_SYMBOL; @@ -6615,11 +6635,29 @@ static void *drawsymbol_new(t_symbol *classsym, t_int argc, t_atom *argv) else fielddesc_setfloat_const(&x->x_yloc, 0); if (argc) fielddesc_setfloatarg(&x->x_color, argc--, argv++); else fielddesc_setfloat_const(&x->x_color, 1); - if (argc == 2) fielddesc_setfloatarg(&x->x_fontsize, argc--, argv++); - else fielddesc_setfloatarg(&x->x_fontsize, 0, NULL); + + if (argc == 2) + { + fielddesc_setfloatarg(&x->x_fontsize, argc--, argv++); + got_font_size = 1; + } if (argc) - x->x_label = atom_getsymbolarg(0, argc, argv); - else x->x_label = &s_; + { + if (argv->a_type == A_SYMBOL || got_font_size) + { + x->x_label = atom_getsymbolarg(0, argc, argv); + if (!got_font_size) + fielddesc_setfloatarg(&x->x_fontsize, 0, NULL); + } + else if (argv->a_type == A_FLOAT) + { + fielddesc_setfloatarg(&x->x_fontsize, argc, argv); + x->x_label = &s_; + } + } else { + fielddesc_setfloatarg(&x->x_fontsize, 0, NULL); + x->x_label = &s_; + } return (x); } -- GitLab