From 2c289d13a01091afdcfacae1e3d43b5056aab15b Mon Sep 17 00:00:00 2001 From: Thomas O Fredericks Date: Wed, 16 Sep 2009 19:26:52 +0000 Subject: Added a test folder svn path=/trunk/externals/tof/; revision=12375 --- test/paramFile.c | 153 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 153 insertions(+) create mode 100644 test/paramFile.c (limited to 'test/paramFile.c') diff --git a/test/paramFile.c b/test/paramFile.c new file mode 100644 index 0000000..7302bbc --- /dev/null +++ b/test/paramFile.c @@ -0,0 +1,153 @@ + +#include "tof.h" +#include "param.h" +#include +#include + + + +static t_class *paramFile_class; +static t_class *paramFile_inlet2_class; +struct _paramFile_inlet2; + +typedef struct _paramFile +{ + t_object x_obj; + //t_outlet *outlet; + t_canvas *canvas; + t_symbol *basename; + struct _paramFile_inlet2 *inlet2; +} t_paramFile; + +typedef struct _paramFile_inlet2 { + t_object x_obj; + t_paramFile *x; +} t_paramFile_inlet2; + + + +static t_symbol* paramFile_makefilename(t_symbol* basename, t_float f) { + + if (f < 0) f = 0; + if ( f > 127) f = 127; + + int i = (int) f; + int length = strlen(basename->s_name)+6; + char* buf = getbytes( length * sizeof (*buf)); + sprintf(buf,"%s%03d.p",basename->s_name,i); + //strcpy(buf,basename->s_name); + //strcat(buf,".param"); + t_symbol* filename = gensym(buf); + freebytes(buf, length * sizeof (*buf)); + post("File name:%s",filename->s_name); + return filename; +} + + +static void paramFile_write(t_paramFile *x, t_float f) { + + + t_symbol* filename = paramFile_makefilename(x->basename,f); + if ( param_write(x->canvas,filename,NULL) ) pd_error("%s: write failed", filename->s_name); + +} + + +static void paramFile_read(t_paramFile *x, t_float f) { + + + t_symbol* filename = paramFile_makefilename(x->basename,f); + + if (param_read(x->canvas, filename)) pd_error(x, "%s: read failed", filename->s_name); + + +} + + + +static void paramFile_bang(t_paramFile *x) { + + paramFile_write(x,0); +} + + +static void paramFile_float(t_paramFile *x, t_float f) { + + paramFile_write(x,f); + +} + +static void paramFile_inlet2_bang(t_paramFile_inlet2 *inlet2) { + + paramFile_read(inlet2->x,0); + +} + +static void paramFile_inlet2_float(t_paramFile_inlet2 *inlet2,t_float f) { + + paramFile_read(inlet2->x,f); + +} + +static void paramFile_free(t_paramFile *x) +{ + + if(x->inlet2) pd_free((t_pd *)x->inlet2); + + +} + + +static void* paramFile_new(t_symbol *s, int ac, t_atom *av) { + t_paramFile *x = (t_paramFile *)pd_new(paramFile_class); + t_paramFile_inlet2 *inlet2 = (t_paramFile_inlet2 *)pd_new(paramFile_inlet2_class); + + inlet2->x = x; + x->inlet2 = inlet2; + + t_canvas* canvas = tof_get_canvas(); + x->canvas = tof_get_root_canvas(canvas); + t_symbol* canvasname = tof_get_canvas_name(x->canvas); + + // remove the .pd (actually removes everything after the .) + int length = strlen(canvasname->s_name) + 1; + char* buf = getbytes( (length ) * sizeof (*buf)); + strcpy(buf,canvasname->s_name); + char* lastperiod = strrchr(buf,'.'); + if ( lastperiod != NULL ) { + *lastperiod = '\0'; + x->basename = gensym(buf); + } else { + x->basename = canvasname; + } + freebytes(buf, (length ) * sizeof (*buf)); + + //x->outlet = outlet_new(&x->x_obj, &s_list); + + inlet_new((t_object *)x, (t_pd *)inlet2, 0, 0); + + return (x); + +} + + +void paramFile_setup(void) { + paramFile_class = class_new(gensym("paramFile"), + (t_newmethod)paramFile_new, (t_method)paramFile_free, + sizeof(t_paramFile), 0, A_GIMME, 0); + + class_addbang(paramFile_class, paramFile_bang); + class_addfloat(paramFile_class, paramFile_float); + + paramFile_inlet2_class = class_new(gensym("paramFile_inlet2"), + 0, 0, sizeof(t_paramFile_inlet2), CLASS_PD | CLASS_NOINLET, 0); + + class_addbang(paramFile_inlet2_class, paramFile_inlet2_bang); + class_addfloat(paramFile_inlet2_class, paramFile_inlet2_float); + + class_addmethod(paramFile_class, (t_method) paramFile_read, gensym("load"), A_DEFFLOAT,0); + class_addmethod(paramFile_class, (t_method) paramFile_write, gensym("save"), A_DEFFLOAT,0); + +} + + -- cgit v1.2.1