From 3c83bb159ecc7a6bb3cc790d508c6e1dbfebd07c Mon Sep 17 00:00:00 2001 From: "N.N." Date: Wed, 2 Mar 2005 02:48:57 +0000 Subject: Added GOP supoort svn path=/trunk/externals/unauthorized/; revision=2592 --- grid/CHANGES.LOG | 2 + grid/grid.c | 138 +++++++++++++++++++++++++++--------------------------- grid/help-grid.pd | 34 +++++++------- 3 files changed, 88 insertions(+), 86 deletions(-) (limited to 'grid') diff --git a/grid/CHANGES.LOG b/grid/CHANGES.LOG index 339b742..7706b29 100644 --- a/grid/CHANGES.LOG +++ b/grid/CHANGES.LOG @@ -1,3 +1,5 @@ +0.6 + added GOP support 0.5 Adapted for pd 0.37 0.4 diff --git a/grid/grid.c b/grid/grid.c index e982027..3e1bfd9 100644 --- a/grid/grid.c +++ b/grid/grid.c @@ -35,7 +35,7 @@ static int gridcount=0; static int guidebug=0; static int pointsize = 5; -static char *grid_version = "grid: version 0.5, written by Yves Degoyon (ydegoyon@free.fr)"; +static char *grid_version = "grid: version 0.6, written by Yves Degoyon (ydegoyon@free.fr)"; #define GRID_SYS_VGUI2(a,b) if (guidebug) \ post(a,b);\ @@ -60,8 +60,8 @@ static char *grid_version = "grid: version 0.5, written by Yves Degoyon (ydego /* drawing functions */ static void grid_draw_update(t_grid *x, t_glist *glist) { - t_canvas *canvas=glist_getcanvas(glist); - t_int xpoint=x->x_current, ypoint=x->y_current; + t_canvas *canvas=glist_getcanvas(glist); + t_int xpoint=x->x_current, ypoint=x->y_current; // later : try to figure out what's this test for ?? // if (glist_isvisible(glist)) @@ -72,12 +72,12 @@ static void grid_draw_update(t_grid *x, t_glist *glist) GRID_SYS_VGUI3(".x%x.c delete %xPOINT\n", canvas, x); } - if ( x->x_current < x->x_obj.te_xpix ) xpoint = x->x_obj.te_xpix; - if ( x->x_current > x->x_obj.te_xpix + x->x_width - pointsize ) - xpoint = x->x_obj.te_xpix + x->x_width - pointsize; - if ( x->y_current < x->x_obj.te_ypix ) ypoint = x->x_obj.te_ypix; - if ( x->y_current > x->x_obj.te_ypix + x->x_height - pointsize ) - ypoint = x->x_obj.te_ypix + x->x_height - pointsize; + if ( x->x_current < text_xpix(&x->x_obj, glist) ) xpoint = text_xpix(&x->x_obj, glist); + if ( x->x_current > text_xpix(&x->x_obj, glist) + x->x_width - pointsize ) + xpoint = text_xpix(&x->x_obj, glist) + x->x_width - pointsize; + if ( x->y_current < text_ypix(&x->x_obj, glist) ) ypoint = text_ypix(&x->x_obj, glist); + if ( x->y_current > text_ypix(&x->x_obj, glist) + x->x_height - pointsize ) + ypoint = text_ypix(&x->x_obj, glist) + x->x_height - pointsize; // draw the selected point GRID_SYS_VGUI7(".x%x.c create rectangle %d %d %d %d -fill #FF0000 -tags %xPOINT\n", canvas, xpoint, ypoint, xpoint+pointsize, ypoint+pointsize, x); @@ -91,44 +91,44 @@ static void grid_draw_update(t_grid *x, t_glist *glist) static void grid_draw_new(t_grid *x, t_glist *glist) { - t_canvas *canvas=glist_getcanvas(glist); - char *tagRoot; + t_canvas *canvas=glist_getcanvas(glist); + char *tagRoot; rtext_new(glist, (t_text *)x ); tagRoot = rtext_gettag(glist_findrtext(glist,(t_text *)x)); GRID_SYS_VGUI7(".x%x.c create rectangle %d %d %d %d -fill #124392 -tags %xGRID\n", - canvas, x->x_obj.te_xpix, x->x_obj.te_ypix, - x->x_obj.te_xpix + x->x_width, x->x_obj.te_ypix + x->x_height, + canvas, text_xpix(&x->x_obj, glist), text_ypix(&x->x_obj, glist), + text_xpix(&x->x_obj, glist) + x->x_width, text_ypix(&x->x_obj, glist) + x->x_height, x); GRID_SYS_VGUI7(".x%x.c create rectangle %d %d %d %d -tags %so0\n", - canvas, x->x_obj.te_xpix, x->x_obj.te_ypix + x->x_height+1, - x->x_obj.te_xpix+7, x->x_obj.te_ypix + x->x_height+2, + canvas, text_xpix(&x->x_obj, glist), text_ypix(&x->x_obj, glist) + x->x_height+1, + text_xpix(&x->x_obj, glist)+7, text_ypix(&x->x_obj, glist) + x->x_height+2, tagRoot); GRID_SYS_VGUI7(".x%x.c create rectangle %d %d %d %d -tags %so1\n", - canvas, x->x_obj.te_xpix+x->x_width-7, x->x_obj.te_ypix + x->x_height+1, - x->x_obj.te_xpix+x->x_width, x->x_obj.te_ypix + x->x_height+2, + canvas, text_xpix(&x->x_obj, glist)+x->x_width-7, text_ypix(&x->x_obj, glist) + x->x_height+1, + text_xpix(&x->x_obj, glist)+x->x_width, text_ypix(&x->x_obj, glist) + x->x_height+2, tagRoot); if ( x->x_grid ) { - int xlpos = x->x_obj.te_xpix+x->x_width/x->x_xlines; - int ylpos = x->x_obj.te_ypix+x->x_height/x->x_ylines; + int xlpos = text_xpix(&x->x_obj, glist)+x->x_width/x->x_xlines; + int ylpos = text_ypix(&x->x_obj, glist)+x->x_height/x->x_ylines; int xcount = 1; int ycount = 1; - while ( xlpos < x->x_obj.te_xpix+x->x_width ) + while ( xlpos < text_xpix(&x->x_obj, glist)+x->x_width ) { GRID_SYS_VGUI9(".x%x.c create line %d %d %d %d -fill #FFFFFF -tags %xLINE%d%d\n", - canvas, xlpos, x->x_obj.te_ypix, - xlpos, x->x_obj.te_ypix+x->x_height, + canvas, xlpos, text_ypix(&x->x_obj, glist), + xlpos, text_ypix(&x->x_obj, glist)+x->x_height, x, xcount, 0 ); xlpos+=x->x_width/x->x_xlines; xcount++; } - while ( ylpos < x->x_obj.te_ypix+x->x_height ) + while ( ylpos < text_ypix(&x->x_obj, glist)+x->x_height ) { GRID_SYS_VGUI9(".x%x.c create line %d %d %d %d -fill #FFFFFF -tags %xLINE%d%d\n", - canvas, x->x_obj.te_xpix, ylpos, - x->x_obj.te_xpix+x->x_width, ylpos, + canvas, text_xpix(&x->x_obj, glist), ylpos, + text_xpix(&x->x_obj, glist)+x->x_width, ylpos, x, 0, ycount); ylpos+=x->x_height/x->x_ylines; ycount++; @@ -139,45 +139,45 @@ static void grid_draw_new(t_grid *x, t_glist *glist) static void grid_draw_move(t_grid *x, t_glist *glist) { - t_canvas *canvas=glist_getcanvas(glist); - char *tagRoot; + t_canvas *canvas=glist_getcanvas(glist); + char *tagRoot; tagRoot = rtext_gettag(glist_findrtext(glist,(t_text *)x)); GRID_SYS_VGUI7(".x%x.c coords %xGRID %d %d %d %d\n", canvas, x, - x->x_obj.te_xpix, x->x_obj.te_ypix, - x->x_obj.te_xpix+x->x_width, x->x_obj.te_ypix+x->x_height); + text_xpix(&x->x_obj, glist), text_ypix(&x->x_obj, glist), + text_xpix(&x->x_obj, glist)+x->x_width, text_ypix(&x->x_obj, glist)+x->x_height); GRID_SYS_VGUI7(".x%x.c coords %so0 %d %d %d %d\n", canvas, tagRoot, - x->x_obj.te_xpix, x->x_obj.te_ypix + x->x_height+1, - x->x_obj.te_xpix+7, x->x_obj.te_ypix + x->x_height+2 ); + text_xpix(&x->x_obj, glist), text_ypix(&x->x_obj, glist) + x->x_height+1, + text_xpix(&x->x_obj, glist)+7, text_ypix(&x->x_obj, glist) + x->x_height+2 ); GRID_SYS_VGUI7(".x%x.c coords %so1 %d %d %d %d\n", canvas, tagRoot, - x->x_obj.te_xpix+x->x_width-7, x->x_obj.te_ypix + x->x_height+1, - x->x_obj.te_xpix+x->x_width, x->x_obj.te_ypix + x->x_height+2 ); + text_xpix(&x->x_obj, glist)+x->x_width-7, text_ypix(&x->x_obj, glist) + x->x_height+1, + text_xpix(&x->x_obj, glist)+x->x_width, text_ypix(&x->x_obj, glist) + x->x_height+2 ); if ( x->x_point ) { grid_draw_update(x, glist); } if ( x->x_grid ) { - int xlpos = x->x_obj.te_xpix+x->x_width/x->x_xlines; - int ylpos = x->x_obj.te_ypix+x->x_height/x->x_ylines; + int xlpos = text_xpix(&x->x_obj, glist)+x->x_width/x->x_xlines; + int ylpos = text_ypix(&x->x_obj, glist)+x->x_height/x->x_ylines; int xcount = 1; int ycount = 1; - while ( xlpos < x->x_obj.te_xpix+x->x_width ) + while ( xlpos < text_xpix(&x->x_obj, glist)+x->x_width ) { GRID_SYS_VGUI9(".x%x.c coords %xLINE%d%d %d %d %d %d\n", - canvas, x, xcount, 0, xlpos, x->x_obj.te_ypix, - xlpos, x->x_obj.te_ypix + x->x_height); + canvas, x, xcount, 0, xlpos, text_ypix(&x->x_obj, glist), + xlpos, text_ypix(&x->x_obj, glist) + x->x_height); xlpos+=x->x_width/x->x_xlines; xcount++; } - while ( ylpos < x->x_obj.te_ypix+x->x_height ) + while ( ylpos < text_ypix(&x->x_obj, glist)+x->x_height ) { GRID_SYS_VGUI9(".x%x.c coords %xLINE%d%d %d %d %d %d\n", - canvas, x, 0, ycount, x->x_obj.te_xpix, ylpos, - x->x_obj.te_xpix + x->x_width, ylpos); + canvas, x, 0, ycount, text_xpix(&x->x_obj, glist), ylpos, + text_xpix(&x->x_obj, glist) + x->x_width, ylpos); ylpos+=x->x_height/x->x_ylines; ycount++; } @@ -187,9 +187,9 @@ static void grid_draw_move(t_grid *x, t_glist *glist) static void grid_draw_erase(t_grid* x,t_glist* glist) { - t_canvas *canvas=glist_getcanvas(glist); - int i; - char *tagRoot; + t_canvas *canvas=glist_getcanvas(glist); + int i; + char *tagRoot; tagRoot = rtext_gettag(glist_findrtext(glist,(t_text *)x)); GRID_SYS_VGUI3(".x%x.c delete %xGRID\n", canvas, x); @@ -216,7 +216,7 @@ static void grid_draw_erase(t_grid* x,t_glist* glist) static void grid_draw_select(t_grid* x,t_glist* glist) { - t_canvas *canvas=glist_getcanvas(glist); + t_canvas *canvas=glist_getcanvas(glist); if(x->x_selected) { @@ -236,14 +236,14 @@ static void grid_output_current(t_grid* x) t_float xvalue, yvalue; t_float xmodstep, ymodstep; - xvalue = x->x_min + (x->x_current - x->x_obj.te_xpix) * (x->x_max-x->x_min) / x->x_width ; + xvalue = x->x_min + (x->x_current - text_xpix(&x->x_obj, x->x_glist)) * (x->x_max-x->x_min) / x->x_width ; if (xvalue < x->x_min ) xvalue = x->x_min; if (xvalue > x->x_max ) xvalue = x->x_max; xmodstep = ((float)((int)(xvalue*10000) % (int)(x->x_xstep*10000))/10000.); xvalue = xvalue - xmodstep; outlet_float( x->x_xoutlet, xvalue ); - yvalue = x->y_max - (x->y_current - x->x_obj.te_ypix ) * (x->y_max-x->y_min) / x->x_height ; + yvalue = x->y_max - (x->y_current - text_ypix(&x->x_obj, x->x_glist) ) * (x->y_max-x->y_min) / x->x_height ; if (yvalue < x->y_min ) yvalue = x->y_min; if (yvalue > x->y_max ) yvalue = x->y_max; ymodstep = ((float)((int)(yvalue*10000) % (int)(x->x_ystep*10000))/10000.); @@ -259,10 +259,10 @@ static void grid_getrect(t_gobj *z, t_glist *owner, { t_grid* x = (t_grid*)z; - *xp1 = x->x_obj.te_xpix; - *yp1 = x->x_obj.te_ypix; - *xp2 = x->x_obj.te_xpix+x->x_width; - *yp2 = x->x_obj.te_ypix+x->x_height; + *xp1 = text_xpix(&x->x_obj, x->x_glist); + *yp1 = text_ypix(&x->x_obj, x->x_glist); + *xp2 = text_xpix(&x->x_obj, x->x_glist)+x->x_width; + *yp2 = text_ypix(&x->x_obj, x->x_glist)+x->x_height; } static void grid_save(t_gobj *z, t_binbuf *b) @@ -271,7 +271,7 @@ static void grid_save(t_gobj *z, t_binbuf *b) // post( "saving grid : %s", x->x_name->s_name ); binbuf_addv(b, "ssiissiffiffiffiiff", gensym("#X"),gensym("obj"), - (t_int)x->x_obj.te_xpix, (t_int)x->x_obj.te_ypix, + (t_int)text_xpix(&x->x_obj, x->x_glist), (t_int)text_ypix(&x->x_obj, x->x_glist), gensym("grid"), x->x_name, x->x_width, x->x_min, x->x_max, x->x_height, x->y_min, x->y_max, @@ -361,8 +361,8 @@ static void grid_delete(t_gobj *z, t_glist *glist) static void grid_displace(t_gobj *z, t_glist *glist, int dx, int dy) { t_grid *x = (t_grid *)z; - int xold = x->x_obj.te_xpix; - int yold = x->x_obj.te_ypix; + int xold = text_xpix(&x->x_obj, glist); + int yold = text_ypix(&x->x_obj, glist); // post( "grid_displace dx=%d dy=%d", dx, dy ); @@ -370,7 +370,7 @@ static void grid_displace(t_gobj *z, t_glist *glist, int dx, int dy) x->x_current += dx; x->x_obj.te_ypix += dy; x->y_current += dy; - if(xold != x->x_obj.te_xpix || yold != x->x_obj.te_ypix) + if(xold != text_xpix(&x->x_obj, glist) || yold != text_ypix(&x->x_obj, glist)) { grid_draw_move(x, x->x_glist); } @@ -422,8 +422,8 @@ static void grid_goto(t_grid *x, t_floatarg newx, t_floatarg newy) // post( "grid_set x=%f y=%f", newx, newy ); - x->x_current = newx + x->x_obj.te_xpix; - x->y_current = newy + x->x_obj.te_ypix; + x->x_current = newx + text_xpix(&x->x_obj, x->x_glist); + x->y_current = newy + text_ypix(&x->x_obj, x->x_glist); if(xold != x->x_current || yold != x->y_current) { grid_output_current(x); @@ -439,12 +439,12 @@ static void grid_values(t_grid* x, t_floatarg xvalue, t_floatarg yvalue) if (xvalue < x->x_min ) xvalue = x->x_min; if (xvalue > x->x_max ) xvalue = x->x_max; - x->x_current = x->x_obj.te_xpix + ((xvalue - x->x_min) / x->x_max) * x->x_width; + x->x_current = text_xpix(&x->x_obj, x->x_glist) + ((xvalue - x->x_min) / x->x_max) * x->x_width; if (yvalue < x->y_min ) yvalue = x->y_min; if (yvalue > x->y_max ) yvalue = x->y_max; - x->y_current = x->x_obj.te_ypix + (1 - ((yvalue - x->y_min) / x->y_max)) * x->x_height; + x->y_current = text_ypix(&x->x_obj, x->x_glist) + (1 - ((yvalue - x->y_min) / x->y_max)) * x->x_height; if(xold != x->x_current || yold != x->y_current) { grid_output_current(x); @@ -460,12 +460,12 @@ static void grid_xvalues(t_grid* x, t_floatarg xvalue, t_floatarg yvalue) if (xvalue < x->x_min ) xvalue = x->x_min; if (xvalue > x->x_max ) xvalue = x->x_max; - x->x_current = x->x_obj.te_xpix + ((xvalue - x->x_min) / x->x_max) * x->x_width; + x->x_current = text_xpix(&x->x_obj, x->x_glist) + ((xvalue - x->x_min) / x->x_max) * x->x_width; if (yvalue < x->y_min ) yvalue = x->y_min; if (yvalue > x->y_max ) yvalue = x->y_max; - x->y_current = x->x_obj.te_ypix + (1 - ((yvalue - x->y_min) / x->y_max)) * x->x_height; + x->y_current = text_ypix(&x->x_obj, x->x_glist) + (1 - ((yvalue - x->y_min) / x->y_max)) * x->x_height; if(xold != x->x_current || yold != x->y_current) { grid_draw_update(x, x->x_glist); @@ -478,11 +478,11 @@ static void grid_valuemotion(t_grid* x, t_floatarg dx, t_floatarg dy) int yold = x->y_current; t_float xvalue, yvalue; - xvalue = x->x_min + (x->x_current - x->x_obj.te_xpix) * (x->x_max-x->x_min) / x->x_width ; + xvalue = x->x_min + (x->x_current - text_xpix(&x->x_obj, x->x_glist)) * (x->x_max-x->x_min) / x->x_width ; if (xvalue < x->x_min ) xvalue = x->x_min; if (xvalue > x->x_max ) xvalue = x->x_max; - yvalue = x->y_max - (x->y_current - x->x_obj.te_ypix ) * (x->y_max-x->y_min) / x->x_height ; + yvalue = x->y_max - (x->y_current - text_ypix(&x->x_obj, x->x_glist) ) * (x->y_max-x->y_min) / x->x_height ; if (yvalue < x->y_min ) yvalue = x->y_min; if (yvalue > x->y_max ) yvalue = x->y_max; @@ -492,12 +492,12 @@ static void grid_valuemotion(t_grid* x, t_floatarg dx, t_floatarg dy) if (xvalue < x->x_min ) xvalue = x->x_min; if (xvalue > x->x_max ) xvalue = x->x_max; - x->x_current = x->x_obj.te_xpix + ((xvalue - x->x_min) / x->x_max) * x->x_width; + x->x_current = text_xpix(&x->x_obj, x->x_glist) + ((xvalue - x->x_min) / x->x_max) * x->x_width; if (yvalue < x->y_min ) yvalue = x->y_min; if (yvalue > x->y_max ) yvalue = x->y_max; - x->y_current = x->x_obj.te_ypix + (1 - ((yvalue - x->y_min) / x->y_max)) * x->x_height; + x->y_current = text_ypix(&x->x_obj, x->x_glist) + (1 - ((yvalue - x->y_min) / x->y_max)) * x->x_height; if(xold != x->x_current || yold != x->y_current) { grid_output_current(x); @@ -511,11 +511,11 @@ static void grid_xvaluemotion(t_grid* x, t_floatarg dx, t_floatarg dy) int yold = x->y_current; t_float xvalue, yvalue; - xvalue = x->x_min + (x->x_current - x->x_obj.te_xpix) * (x->x_max-x->x_min) / x->x_width ; + xvalue = x->x_min + (x->x_current - text_xpix(&x->x_obj, x->x_glist)) * (x->x_max-x->x_min) / x->x_width ; if (xvalue < x->x_min ) xvalue = x->x_min; if (xvalue > x->x_max ) xvalue = x->x_max; - yvalue = x->y_max - (x->y_current - x->x_obj.te_ypix ) * (x->y_max-x->y_min) / x->x_height ; + yvalue = x->y_max - (x->y_current - text_ypix(&x->x_obj, x->x_glist) ) * (x->y_max-x->y_min) / x->x_height ; if (yvalue < x->y_min ) yvalue = x->y_min; if (yvalue > x->y_max ) yvalue = x->y_max; @@ -525,12 +525,12 @@ static void grid_xvaluemotion(t_grid* x, t_floatarg dx, t_floatarg dy) if (xvalue < x->x_min ) xvalue = x->x_min; if (xvalue > x->x_max ) xvalue = x->x_max; - x->x_current = x->x_obj.te_xpix + ((xvalue - x->x_min) / x->x_max) * x->x_width; + x->x_current = text_xpix(&x->x_obj, x->x_glist) + ((xvalue - x->x_min) / x->x_max) * x->x_width; if (yvalue < x->y_min ) yvalue = x->y_min; if (yvalue > x->y_max ) yvalue = x->y_max; - x->y_current = x->x_obj.te_ypix + (1 - ((yvalue - x->y_min) / x->y_max)) * x->x_height; + x->y_current = text_ypix(&x->x_obj, x->x_glist) + (1 - ((yvalue - x->y_min) / x->y_max)) * x->x_height; if(xold != x->x_current || yold != x->y_current) { grid_draw_update(x, x->x_glist); diff --git a/grid/help-grid.pd b/grid/help-grid.pd index b31c29e..663237f 100644 --- a/grid/help-grid.pd +++ b/grid/help-grid.pd @@ -1,7 +1,7 @@ #N canvas 26 1 763 647 10; -#X obj 71 76 grid grid1 200 0 199 200 0 199 1 1 1 10 10 188 197; -#X floatatom 72 293 5 0 0; -#X floatatom 257 282 5 0 0; +#X obj 72 77 grid grid1 200 0 199 200 0 199 1 1 1 10 10 192 224; +#X floatatom 72 293 5 0 0 0 - - -; +#X floatatom 257 282 5 0 0 0 - - -; #X text 41 21 Grid is a 2-dimensional control object; #X text 319 449 (invoke with Properties ); #X text 322 439 You can set the following properties :; @@ -28,12 +28,12 @@ grid; #X msg 587 271 \; pd dsp 0; #X msg 653 271 \; pd dsp 1; #X obj 276 417 *~; -#X floatatom 276 360 0 0 0; +#X floatatom 276 360 0 0 0 0 - - -; #X obj 357 397 line~; -#X floatatom 188 380 0 0 0; +#X floatatom 188 380 0 0 0 0 - - -; #X obj 188 494 cos~; #X obj 188 450 +~; -#X floatatom 228 506 0 0 100; +#X floatatom 228 506 0 0 100 0 - - -; #N canvas 159 26 495 270 output 0; #X obj 338 160 t b; #X obj 338 110 f; @@ -89,7 +89,7 @@ grid; #X msg 266 506 MUTE; #X obj 276 385 osc~ 0; #X obj 357 371 pack 0 50; -#X floatatom 357 318 0 0 0; +#X floatatom 357 318 0 0 0 0 - - -; #X obj 357 345 / 100; #X text 188 345 carrier; #X text 184 355 frequency; @@ -104,34 +104,34 @@ grid; #X text 393 325 in hundredths; #X text 40 32 It was inspired by the chaospad device; #X text 346 568 * Y step : Y delta for an Y update; -#X floatatom 474 85 5 0 0; -#X floatatom 586 84 5 0 0; +#X floatatom 474 85 5 0 0 0 - - -; +#X floatatom 586 84 5 0 0 0 - - -; #X obj 411 82 pack f f; #X msg 332 81 goto \$1 \$2; #X msg 546 83 bang; #X text 524 84 X; #X text 333 63 Set position :; #X text 631 85 Y; -#X floatatom 486 120 5 0 0; -#X floatatom 586 121 5 0 0; +#X floatatom 486 120 5 0 0 0 - - -; +#X floatatom 586 121 5 0 0 0 - - -; #X obj 423 119 pack f f; #X msg 546 120 bang; #X text 530 120 X; #X text 634 121 Y; -#X floatatom 528 156 5 0 0; -#X floatatom 633 156 5 0 0; +#X floatatom 528 156 5 0 0 0 - - -; +#X floatatom 633 156 5 0 0 0 - - -; #X obj 465 153 pack f f; #X msg 593 154 bang; #X text 578 155 X; #X text 679 156 Y; -#X floatatom 503 191 5 0 0; -#X floatatom 607 190 5 0 0; +#X floatatom 503 191 5 0 0 0 - - -; +#X floatatom 607 190 5 0 0 0 - - -; #X obj 440 188 pack f f; #X msg 568 189 bang; #X text 553 190 X; #X text 656 191 Y; -#X floatatom 539 224 5 0 0; -#X floatatom 638 226 5 0 0; +#X floatatom 539 224 5 0 0 0 - - -; +#X floatatom 638 226 5 0 0 0 - - -; #X obj 472 223 pack f f; #X msg 600 224 bang; #X text 585 225 X; -- cgit v1.2.1