Revision: 10211 http://pure-data.svn.sourceforge.net/pure-data/?rev=10211&view=rev Author: zmoelnig Date: 2008-07-23 11:41:40 +0000 (Wed, 23 Jul 2008)
Log Message: ----------- renamed object
Added Paths: ----------- trunk/externals/iem/iemguts/src/canvasconnections.c
Removed Paths: ------------- trunk/externals/iem/iemguts/src/canvasconnection.c
Deleted: trunk/externals/iem/iemguts/src/canvasconnection.c =================================================================== --- trunk/externals/iem/iemguts/src/canvasconnection.c 2008-07-23 10:17:37 UTC (rev 10210) +++ trunk/externals/iem/iemguts/src/canvasconnection.c 2008-07-23 11:41:40 UTC (rev 10211) @@ -1,129 +0,0 @@ - -/****************************************************** - * - * canvasconnection - implementation file - * - * copyleft (c) IOhannes m zm\xF6lnig - * - * 2007:forum::f\xFCr::uml\xE4ute:2007 - * - * institute of electronic music and acoustics (iem) - * - ****************************************************** - * - * license: GNU General Public License v.2 - * - ******************************************************/ - - -/* - * this object provides a way to send messages to upstream canvases - * by default it sends messages to the containing canvas, but you can give the - * "depth" as argument; - * e.g. [canvasconnection 1] will send messages to the parent of the containing canvas - */ - -#include "m_pd.h" -#include "g_canvas.h" -#include "m_imp.h" - -int glist_getindex(t_glist *x, t_gobj *y); - -/* ------------------------- canvasconnection ---------------------------- */ - -static t_class *canvasconnection_class; - -typedef struct _canvasconnection -{ - t_object x_obj; - t_canvas *x_parent; - t_object *x_object; - t_outlet *x_out; -} t_canvasconnection; - -static void canvasconnection_outlets(t_canvasconnection *x) -{ - int noutlets=0; - int nout=0; - t_atom at; - - if(0==x->x_object || 0==x->x_parent) - return; - - noutlets=obj_noutlets(x->x_object); - SETFLOAT(&at, (t_float)noutlets); - - outlet_anything(x->x_out, gensym("outlets"), 1, &at); - for(nout=0; nout<noutlets; nout++) { - t_outlet*out=0; - t_outconnect*conn=obj_starttraverseoutlet(x->x_object, &out, nout); - t_object*dest=0; - t_inlet*in=0; - int which=0; - int count=0, i=0; - t_atom*abuf=0; - while(conn) { - conn=obj_nexttraverseoutlet(conn, &dest, &in, &which); - count++; - } - abuf=(t_atom*)getbytes(sizeof(t_atom)*(count+1)); - SETFLOAT(abuf, nout); - conn=obj_starttraverseoutlet(x->x_object, &out, nout); - while(conn) { - t_float connid=0; - conn=obj_nexttraverseoutlet(conn, &dest, &in, &which); - connid = glist_getindex(x->x_parent, (t_gobj*)dest); - SETFLOAT(abuf+1+i, connid); - i++; - } - outlet_anything(x->x_out, gensym("outlet"), count+1, abuf); - freebytes(abuf, sizeof(t_atom)*(count+1)); - } -} - -static void canvasconnection_bang(t_canvasconnection *x) -{ - canvasconnection_outlets(x); -} - - -static void canvasconnection_free(t_canvasconnection *x) -{ - x->x_object=0; - outlet_free(x->x_out); - x->x_out=0; -} - -static void *canvasconnection_new(t_floatarg f) -{ - t_canvasconnection *x = (t_canvasconnection *)pd_new(canvasconnection_class); - t_glist *glist=(t_glist *)canvas_getcurrent(); - t_canvas *canvas=(t_canvas*)glist_getcanvas(glist); - int depth=(int)f; - if(depth<0)depth=0; - - x->x_parent=0; - x->x_object=0; - - while(depth && canvas) { - canvas=canvas->gl_owner; - depth--; - } - - - if(canvas) { - x->x_object = pd_checkobject((t_pd*)canvas); - x->x_parent = canvas->gl_owner; - } - - x->x_out=outlet_new(&x->x_obj, 0); - - return (x); -} - -void canvasconnection_setup(void) -{ - canvasconnection_class = class_new(gensym("canvasconnection"), (t_newmethod)canvasconnection_new, - (t_method)canvasconnection_free, sizeof(t_canvasconnection), 0, A_DEFFLOAT, 0); - class_addbang(canvasconnection_class, (t_method)canvasconnection_bang); -}
Copied: trunk/externals/iem/iemguts/src/canvasconnections.c (from rev 10210, trunk/externals/iem/iemguts/src/canvasconnection.c) =================================================================== --- trunk/externals/iem/iemguts/src/canvasconnections.c (rev 0) +++ trunk/externals/iem/iemguts/src/canvasconnections.c 2008-07-23 11:41:40 UTC (rev 10211) @@ -0,0 +1,129 @@ + +/****************************************************** + * + * canvasconnection - implementation file + * + * copyleft (c) IOhannes m zm\xF6lnig + * + * 2007:forum::f\xFCr::uml\xE4ute:2007 + * + * institute of electronic music and acoustics (iem) + * + ****************************************************** + * + * license: GNU General Public License v.2 + * + ******************************************************/ + + +/* + * this object provides a way to send messages to upstream canvases + * by default it sends messages to the containing canvas, but you can give the + * "depth" as argument; + * e.g. [canvasconnection 1] will send messages to the parent of the containing canvas + */ + +#include "m_pd.h" +#include "g_canvas.h" +#include "m_imp.h" + +int glist_getindex(t_glist *x, t_gobj *y); + +/* ------------------------- canvasconnection ---------------------------- */ + +static t_class *canvasconnection_class; + +typedef struct _canvasconnection +{ + t_object x_obj; + t_canvas *x_parent; + t_object *x_object; + t_outlet *x_out; +} t_canvasconnection; + +static void canvasconnection_outlets(t_canvasconnection *x) +{ + int noutlets=0; + int nout=0; + t_atom at; + + if(0==x->x_object || 0==x->x_parent) + return; + + noutlets=obj_noutlets(x->x_object); + SETFLOAT(&at, (t_float)noutlets); + + outlet_anything(x->x_out, gensym("outlets"), 1, &at); + for(nout=0; nout<noutlets; nout++) { + t_outlet*out=0; + t_outconnect*conn=obj_starttraverseoutlet(x->x_object, &out, nout); + t_object*dest=0; + t_inlet*in=0; + int which=0; + int count=0, i=0; + t_atom*abuf=0; + while(conn) { + conn=obj_nexttraverseoutlet(conn, &dest, &in, &which); + count++; + } + abuf=(t_atom*)getbytes(sizeof(t_atom)*(count+1)); + SETFLOAT(abuf, nout); + conn=obj_starttraverseoutlet(x->x_object, &out, nout); + while(conn) { + t_float connid=0; + conn=obj_nexttraverseoutlet(conn, &dest, &in, &which); + connid = glist_getindex(x->x_parent, (t_gobj*)dest); + SETFLOAT(abuf+1+i, connid); + i++; + } + outlet_anything(x->x_out, gensym("outlet"), count+1, abuf); + freebytes(abuf, sizeof(t_atom)*(count+1)); + } +} + +static void canvasconnection_bang(t_canvasconnection *x) +{ + canvasconnection_outlets(x); +} + + +static void canvasconnection_free(t_canvasconnection *x) +{ + x->x_object=0; + outlet_free(x->x_out); + x->x_out=0; +} + +static void *canvasconnection_new(t_floatarg f) +{ + t_canvasconnection *x = (t_canvasconnection *)pd_new(canvasconnection_class); + t_glist *glist=(t_glist *)canvas_getcurrent(); + t_canvas *canvas=(t_canvas*)glist_getcanvas(glist); + int depth=(int)f; + if(depth<0)depth=0; + + x->x_parent=0; + x->x_object=0; + + while(depth && canvas) { + canvas=canvas->gl_owner; + depth--; + } + + + if(canvas) { + x->x_object = pd_checkobject((t_pd*)canvas); + x->x_parent = canvas->gl_owner; + } + + x->x_out=outlet_new(&x->x_obj, 0); + + return (x); +} + +void canvasconnection_setup(void) +{ + canvasconnection_class = class_new(gensym("canvasconnection"), (t_newmethod)canvasconnection_new, + (t_method)canvasconnection_free, sizeof(t_canvasconnection), 0, A_DEFFLOAT, 0); + class_addbang(canvasconnection_class, (t_method)canvasconnection_bang); +}
Property changes on: trunk/externals/iem/iemguts/src/canvasconnections.c ___________________________________________________________________ Added: svn:mergeinfo +
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.