Update of /cvsroot/pure-data/pd/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12056
Modified Files: Tag: devel_0_39 desire.c desire.h Log Message: .
Index: desire.h =================================================================== RCS file: /cvsroot/pure-data/pd/src/Attic/desire.h,v retrieving revision 1.1.2.14 retrieving revision 1.1.2.15 diff -C2 -d -r1.1.2.14 -r1.1.2.15 *** desire.h 2 Sep 2006 19:10:30 -0000 1.1.2.14 --- desire.h 3 Sep 2006 03:47:14 -0000 1.1.2.15 *************** *** 1,53 **** /* ! This file is part of PureData (impd branch) ! Copyright (c) 1997-1999 Miller Puckette. Copyright 2000-2001 IEM KUG Graz Austria (Thomas Musil) ! Copyright 2004,2005 by Mathieu Bouchard For information on usage and redistribution, and for a DISCLAIMER OF ALL WARRANTIES, see the file, "LICENSE.txt", in this distribution. - */ - - #ifndef __DESIRE_H - #define __DESIRE_H - - #include "m_pd.h" - - /* Copyright (c) 1997-1999 Miller Puckette. - * For information on usage and redistribution, and for a DISCLAIMER OF ALL - * WARRANTIES, see the file, "LICENSE.txt," in this distribution. */ - - /* this file defines the structure for "glists" and related structures and - functions. "Glists" and "canvases" and "graphs" used to be different - structures until being unified in version 0.35. - - A glist occupies its own window if the "gl_havewindow" flag is set. Its - appearance on its "parent" or "owner" (if it has one) is as a graph if - "gl_isgraph" is set, and otherwise as a text box.
! A glist is "root" if it has no owner, i.e., a document window. In this ! case "gl_havewindow" is always set.
! We maintain a list of root windows, so that we can traverse the whole ! collection of everything in a Pd process.
! If a glist has a window it may still not be "mapped." Miniaturized ! windows aren't mapped, for example, but a window is also not mapped ! immediately upon creation. In either case gl_havewindow is true but ! gl_mapped is false.
! Closing a non-root window makes it invisible; closing a root destroys it.
! A glist that's just a text object on its parent is always "toplevel." An ! embedded glist can switch back and forth to appear as a toplevel by double- ! clicking on it. Single-clicking a text box makes the toplevel become visible ! and raises the window it's in.
! If a glist shows up as a graph on its parent, the graph is blanked while the ! glist has its own window, even if miniaturized.
*/
! /* NOTE: this file describes Pd implementation details which may change ! in future releases. The public (stable) API is in m_pd.h. */
#if defined(_LANGUAGE_C_PLUS_PLUS) || defined(__cplusplus) --- 1,45 ---- /* ! This file is part of PureData ! Copyright 2004-2006 by Mathieu Bouchard Copyright 2000-2001 IEM KUG Graz Austria (Thomas Musil) ! Copyright (c) 1997-1999 Miller Puckette. For information on usage and redistribution, and for a DISCLAIMER OF ALL WARRANTIES, see the file, "LICENSE.txt", in this distribution.
! this file declares the C interface for the second half of DesireData. ! this is where most of the differences between DesireData and PureData lie.
! SYNONYMS: ! 1. glist = graph = canvas = patcher; those were not always synonymous. ! however, graph sometimes means a canvas that is displaying an array. ! 2. outconnect = connection = patchcord = wire
! canvases have a few flags that determine their appearance: ! gl_havewindow: should open its own window (only if mapped? or...) ! gl_isgraph: the GOP flag: show as graph-on-parent, vs TextBox. ! gl_owner==0: it's a root canvas, should be in canvas_list. ! In this case "gl_havewindow" is always set.
! canvas_list is a list of root windows only, which can be traversed using glists_each.
! If a glist has a window it may still not be "mapped." Miniaturized ! windows aren't mapped, for example, but a window is also not mapped ! immediately upon creation. In either case gl_havewindow is true but ! gl_mapped is false.
! Closing a non-root window makes it invisible; closing a root destroys it. ! A glist that's just a text object on its parent is always "toplevel." An ! embedded glist can switch back and forth to appear as a toplevel by double- ! clicking on it. Single-clicking a text box makes the toplevel become visible ! and raises the window it's in.
+ If a glist shows up as a graph on its parent, the graph is blanked while the + glist has its own window, even if miniaturized. */
! #ifndef __DESIRE_H ! #define __DESIRE_H ! ! #include "m_pd.h"
#if defined(_LANGUAGE_C_PLUS_PLUS) || defined(__cplusplus) *************** *** 55,70 **** #endif
#ifdef GARRAY_THREAD_LOCK #include <pthread.h> /* TB: for t_garray */ #endif
- /* ----------------------- data ------------------------------- */ - - typedef struct _updateheader { - struct _updateheader *upd_next; - unsigned int upd_array:1; /* true if array, false if glist */ - unsigned int upd_queued:1; /* true if we're queued */ - } t_updateheader; - EXTERN_STRUCT _rtext; #define t_rtext struct _rtext --- 47,55 ---- #endif
+ /* i don't know whether this is currently used at all in DesireData. -- matju 2006.09 */ #ifdef GARRAY_THREAD_LOCK #include <pthread.h> /* TB: for t_garray */ #endif
EXTERN_STRUCT _rtext; #define t_rtext struct _rtext *************** *** 88,111 **** /* commented-out fields are not in DesireData */ typedef struct _editor { - t_updateheader e_upd; /* update header structure */ - t_selection *e_updlist; /* list of objects to update */ t_rtext *e_rtext; /* text responder linked list */ - /* t_selection *e_selection; head of the selection list */ t_rtext *e_textedfor; /* the rtext if any that we are editing */ t_gobj *e_grab; /* object being "dragged" */ - /* t_glistmotionfn e_motionfn; ... motion callback */ - /* t_glistkeyfn e_keyfn; ... keypress callback */ t_binbuf *e_connectbuf; /* connections to deleted objects */ t_binbuf *e_deleted; /* last stuff we deleted */ t_guiconnect *e_guiconnect; /* GUI connection for filtering messages */ struct _glist *e_glist; /* glist which owns this */ - int e_xwas; /* xpos on last mousedown or motion event */ - int e_ywas; /* ypos, similarly */ - int e_selectline_index1; /* indices for the selected line if any */ - int e_selectline_outno; /* (only valid if e_selectedline is set) */ - int e_selectline_index2; - int e_selectline_inno; - t_outconnect *e_selectline_tag; - /* unsigned int e_onmotion: 3; action to take on motion */ unsigned int e_lastmoved: 1; /* one if mouse has moved since click */ unsigned int e_textdirty: 1; /* one if e_textedfor has changed */ --- 73,83 ---- *************** *** 113,127 **** } t_editor;
- /* editor structure for "garrays". We don't bother to delete and regenerate - this structure when the "garray" becomes invisible or visible, although we - could do so if the structure gets big (like the "editor" above.) */ - - typedef struct _arrayvis { - t_updateheader av_upd; /* update header structure */ - t_garray *av_garray; /* owning structure */ - } t_arrayvis; - /* the t_tick structure describes where to draw x and y "ticks" for a glist */ - typedef struct _tick { /* where to put ticks on x or y axes */ float k_point; /* one point to draw a big tick at */ --- 85,89 ---- *************** *** 130,138 **** } t_tick;
! /* the t_glist structure, which describes a list of elements that live on an ! area of a window. ! ! */ ! struct _glist { t_object gl_obj; /* header in case we're a glist */ --- 92,96 ---- } t_tick;
! /* the t_glist structure, which describes a list of elements that live on an area of a window.*/ struct _glist { t_object gl_obj; /* header in case we're a glist */ *************** *** 141,164 **** int gl_valid; /* incremented when pointers might be stale */ struct _glist *gl_owner; /* parent glist, supercanvas, or 0 if none */ ! int gl_pixwidth; /* width in pixels (on parent, if a graph) */ ! int gl_pixheight; ! float gl_x1; /* bounding rectangle in our own coordinates */ ! float gl_y1; ! float gl_x2; ! float gl_y2; ! int gl_screenx1; /* screen coordinates when toplevel */ ! int gl_screeny1; ! int gl_screenx2; ! int gl_screeny2; ! int gl_xmargin; /* origin for GOP rectangle */ ! int gl_ymargin; ! t_tick gl_xtick; /* ticks marking X values */ ! int gl_nxlabels; /* number of X coordinate labels */ ! t_symbol **gl_xlabel; /* ... an array to hold them */ ! float gl_xlabely; /* ... and their Y coordinates */ ! t_tick gl_ytick; /* same as above for Y ticks and labels */ ! int gl_nylabels; ! t_symbol **gl_ylabel; ! float gl_ylabelx; t_editor *gl_editor; /* editor structure when visible */ t_symbol *gl_name; /* symbol bound here */ --- 99,115 ---- int gl_valid; /* incremented when pointers might be stale */ struct _glist *gl_owner; /* parent glist, supercanvas, or 0 if none */ ! /* width in pixels (on parent, if a graph) */ ! int gl_pixwidth, gl_pixheight; ! /* bounding rectangle in our own coordinates */ ! float gl_x1,gl_y1; ! float gl_x2,gl_y2; ! /* screen coordinates when toplevel */ ! int gl_screenx1, gl_screeny1; ! int gl_screenx2, gl_screeny2; ! /* origin for GOP rectangle */ ! int gl_xmargin, gl_ymargin; ! /* ticks and tick labels */ ! t_tick gl_xtick; int gl_nxlabels; t_symbol **gl_xlabel; float gl_xlabely; ! t_tick gl_ytick; int gl_nylabels; t_symbol **gl_ylabel; float gl_ylabelx; t_editor *gl_editor; /* editor structure when visible */ t_symbol *gl_name; /* symbol bound here */ *************** *** 172,176 **** unsigned int gl_willvis:1; /* make me visible after loading */ unsigned int gl_edit:1; /* edit mode */ ! unsigned int gl_isdeleting:1; /* we're inside glist_delete -- hack! */ unsigned int gl_goprect:1; /* draw rectangle for graph-on-parent */ unsigned int gl_isgraph:1; /* show as graph on parent */ --- 123,127 ---- unsigned int gl_willvis:1; /* make me visible after loading */ unsigned int gl_edit:1; /* edit mode */ ! /* unsigned int gl_isdeleting:1; we're inside glist_delete -- hack! */ unsigned int gl_goprect:1; /* draw rectangle for graph-on-parent */ unsigned int gl_isgraph:1; /* show as graph on parent */ *************** *** 229,240 **** typedef struct _linetraverser { t_canvas *tr_x; ! t_object *tr_ob; ! int tr_nout; ! int tr_outno; ! t_object *tr_ob2; ! t_outlet *tr_outlet; ! t_inlet *tr_inlet; ! int tr_nin; ! int tr_inno; t_outconnect *tr_nextoc; int tr_nextoutno; --- 180,185 ---- typedef struct _linetraverser { t_canvas *tr_x; ! t_object *tr_ob; int tr_nout; int tr_outno; t_outlet *tr_outlet; ! t_object *tr_ob2; int tr_nin; int tr_inno; t_inlet *tr_inlet; t_outconnect *tr_nextoc; int tr_nextoutno; *************** *** 274,283 ****
/* cursor definitions; used as return value for t_parentclickfn */ - #define CURSOR_RUNMODE_NOTHING 0 #define CURSOR_RUNMODE_CLICKME 1 #define CURSOR_RUNMODE_THICKEN 2 #define CURSOR_RUNMODE_ADDPOINT 3 - #define CURSOR_EDITMODE_NOTHING 4 - #define CURSOR_EDITMODE_CONNECT 5 #define CURSOR_EDITMODE_DISCONNECT 6 EXTERN void canvas_setcursor(t_glist *x, unsigned int cursornum); --- 219,225 ---- *************** *** 323,327 **** EXTERN void glist_glist(t_glist *g, t_symbol *s, int argc, t_atom *argv); EXTERN t_glist *glist_addglist(t_glist *g, t_symbol *sym, ! float x1, float y1, float x2, float y2, float px1, float py1, float px2, float py2); EXTERN void glist_arraydialog(t_glist *parent, t_symbol *name, --- 265,269 ---- EXTERN void glist_glist(t_glist *g, t_symbol *s, int argc, t_atom *argv); EXTERN t_glist *glist_addglist(t_glist *g, t_symbol *sym, ! float x1, float y1, float x2, float y2, float px1, float py1, float px2, float py2); EXTERN void glist_arraydialog(t_glist *parent, t_symbol *name, *************** *** 337,347 ****
EXTERN void text_setto(t_text *x, t_glist *glist, char *buf, int bufsize); ! EXTERN void text_drawborder(t_text *x, t_glist *glist, char *tag, ! int width, int height, int firsttime); EXTERN void text_eraseborder(t_text *x, t_glist *glist, char *tag); EXTERN int text_xcoord(t_text *x, t_glist *glist); EXTERN int text_ycoord(t_text *x, t_glist *glist); ! EXTERN int text_xpix(t_text *x, t_glist *glist); ! EXTERN int text_ypix(t_text *x, t_glist *glist); EXTERN int text_shouldvis(t_text *x, t_glist *glist);
--- 279,288 ----
EXTERN void text_setto(t_text *x, t_glist *glist, char *buf, int bufsize); ! EXTERN void text_drawborder(t_text *x, t_glist *glist, char *tag, int width, int height, int firsttime); EXTERN void text_eraseborder(t_text *x, t_glist *glist, char *tag); EXTERN int text_xcoord(t_text *x, t_glist *glist); EXTERN int text_ycoord(t_text *x, t_glist *glist); ! EXTERN int text_xpix( t_text *x, t_glist *glist); ! EXTERN int text_ypix( t_text *x, t_glist *glist); EXTERN int text_shouldvis(t_text *x, t_glist *glist);
*************** *** 352,356 **** EXTERN void rtext_gettext(t_rtext *x, char **buf, int *bufsize);
- /* -------------------- functions on canvases ------------------------ */ EXTERN t_class *canvas_class; EXTERN t_canvas *canvas_new(void *dummy, t_symbol *sel, int argc, t_atom *argv); --- 293,296 ---- *************** *** 458,466 **** EXTERN float fielddesc_cvtfromcoord(t_fielddesc *f, float coord);
- /* ----------------------- guiconnects, g_guiconnect.c --------- */ EXTERN t_guiconnect *guiconnect_new(t_pd *who, t_symbol *sym); EXTERN void guiconnect_notarget(t_guiconnect *x, double timedelay);
- /* ------------- IEMGUI routines used in other g_ files ---------------- */ EXTERN t_symbol *iemgui_raute2dollar(t_symbol *s); EXTERN t_symbol *iemgui_dollar2raute(t_symbol *s); --- 398,404 ---- *************** *** 477,481 **** EXTERN void pd_upload(t_gobj *self); EXTERN void sys_mgui(void *self, const char *sel, const char *fmt, ...); - EXTERN void iemgui_propertiesfn(t_gobj *x, t_glist *owner); EXTERN t_symbol *s_empty; EXTERN int convert_color2(int x); --- 415,418 ----
Index: desire.c =================================================================== RCS file: /cvsroot/pure-data/pd/src/Attic/desire.c,v retrieving revision 1.1.2.139 retrieving revision 1.1.2.140 diff -C2 -d -r1.1.2.139 -r1.1.2.140 *** desire.c 2 Sep 2006 19:00:37 -0000 1.1.2.139 --- desire.c 3 Sep 2006 03:47:13 -0000 1.1.2.140 *************** *** 455,462 **** t->tr_outno = outno; } ! t->tr_nextoc = obj_nexttraverseoutlet(rval, &t->tr_ob2, ! &t->tr_inlet, &t->tr_inno); t->tr_nin = obj_ninlets(t->tr_ob2); ! if (!t->tr_nin) bug("drawline"); return rval; } --- 455,461 ---- t->tr_outno = outno; } ! t->tr_nextoc = obj_nexttraverseoutlet(rval, &t->tr_ob2, &t->tr_inlet, &t->tr_inno); t->tr_nin = obj_ninlets(t->tr_ob2); ! if (!t->tr_nin) bug("linetraverser_next"); return rval; } *************** *** 562,567 **** }
! /* make a new glist and add it to this glist. It will appear as ! a "graph", not a text object. */ t_glist *glist_addglist(t_glist *g, t_symbol *sym, float x1, float y1, float x2, float y2, --- 561,567 ---- }
! #define GLIST_DEFGRAPHWIDTH 200 ! #define GLIST_DEFGRAPHHEIGHT 140 ! /* make a new glist and add it to this glist. It will appear as a "graph", not a text object. */ t_glist *glist_addglist(t_glist *g, t_symbol *sym, float x1, float y1, float x2, float y2, *************** *** 1320,1328 **** /* ------------------------ event handling ------------------------ */
- #define CURSOR_RUNMODE_CLICKME 1 - #define CURSOR_RUNMODE_THICKEN 2 - #define CURSOR_RUNMODE_ADDPOINT 3 - #define CURSOR_EDITMODE_DISCONNECT 6 - void canvas_inlettip(t_canvas* x,t_object* ob,int closest,int xpos,int ypos) { /* --- 1320,1323 ---- *************** *** 2691,2704 **** }
- /* this is to protect against a hairy problem in which deleting - a sub-canvas might delete an inlet on a box, after the box had - been invisible-ized, so that we have to protect against redrawing it! */ - int canvas_setdeleting(t_canvas *x, int flag) { - int ret = x->gl_isdeleting; - x->gl_isdeleting = flag; - return ret; - } - - /* delete an object from a glist and free it */ void glist_delete(t_glist *x, t_gobj *y) { --- 2686,2689 ---- *************** *** 2706,2712 **** t_object *ob; t_gotfn chkdsp = zgetfn(&y->g_pd, gensym("dsp")); - t_canvas *canvas = glist_getcanvas(x); int drawcommand = class_isdrawcommand(y->g_pd); - int wasdeleting = canvas_setdeleting(canvas, 1); if (x->gl_editor && x->gl_editor->e_grab == y) x->gl_editor->e_grab = 0;
--- 2691,2695 ---- *************** *** 2729,2733 **** if (drawcommand) canvas_redrawallfortemplate(template_findbyname(canvas_makebindsym(glist_getcanvas(x)->gl_name)), 1); - canvas_setdeleting(canvas, wasdeleting); x->gl_valid = ++glist_valid; } --- 2712,2715 ---- *************** *** 3009,3025 **** float glist_xtopixels(t_glist *x, float xval) { int x1, y1, x2, y2; ! if (!x->gl_isgraph) return (xval - x->gl_x1) / (x->gl_x2 - x->gl_x1); ! if (x->gl_havewindow) return (x->gl_screenx2 - x->gl_screenx1) * (xval - x->gl_x1) / (x->gl_x2 - x->gl_x1); if (!x->gl_owner) bug("glist_pixelstox"); graph_graphrect(&x->gl_gobj, x->gl_owner, &x1, &y1, &x2, &y2); ! return x1 + (x2 - x1) * (xval - x->gl_x1) / (x->gl_x2 - x->gl_x1); } float glist_ytopixels(t_glist *x, float yval) { int x1, y1, x2, y2; ! if (!x->gl_isgraph) return (yval - x->gl_y1) / (x->gl_y2 - x->gl_y1); ! if (x->gl_havewindow) return (x->gl_screeny2 - x->gl_screeny1) * (yval - x->gl_y1) / (x->gl_y2 - x->gl_y1); if (!x->gl_owner) bug("glist_pixelstox"); graph_graphrect(&x->gl_gobj, x->gl_owner, &x1, &y1, &x2, &y2); ! return y1 + (y2 - y1) * (yval - x->gl_y1) / (x->gl_y2 - x->gl_y1); }
--- 2991,3009 ---- float glist_xtopixels(t_glist *x, float xval) { int x1, y1, x2, y2; ! float width = x->gl_x2-x->gl_x1; ! if (!x->gl_isgraph) return (xval - x->gl_x1) / width; ! if (x->gl_havewindow) return (x->gl_screenx2-x->gl_screenx1) * (xval-x->gl_x1) / width; if (!x->gl_owner) bug("glist_pixelstox"); graph_graphrect(&x->gl_gobj, x->gl_owner, &x1, &y1, &x2, &y2); ! return x1 + (x2 - x1) * (xval - x->gl_x1) / width; } float glist_ytopixels(t_glist *x, float yval) { int x1, y1, x2, y2; ! float height = x->gl_y2-x->gl_y1; ! if (!x->gl_isgraph) return (yval - x->gl_y1) / height; ! if (x->gl_havewindow) return (x->gl_screeny2-x->gl_screeny1) * (yval-x->gl_y1) / height; if (!x->gl_owner) bug("glist_pixelstox"); graph_graphrect(&x->gl_gobj, x->gl_owner, &x1, &y1, &x2, &y2); ! return y1 + (y2 - y1) * (yval - x->gl_y1) / height; }
*************** *** 3142,3153 **** int tickpix = i%x->gl_ytick.k_lperb ? 2 : 4; int y0 = (int)glist_ytopixels(x, f); ! sys_vgui(".x%lx.c create line %d %d %d %d -tags %s\n", (long)c, x1, y0, x1 + tickpix, y0, tag); ! sys_vgui(".x%lx.c create line %d %d %d %d -tags %s\n", (long)c, x2, y0, x2 - tickpix, y0, tag); } for (i = 1, f = x->gl_ytick.k_point - x->gl_ytick.k_inc; f > 0.99 * lbound + 0.01 * ubound; i++, f -= x->gl_ytick.k_inc) { int tickpix = i%x->gl_ytick.k_lperb ? 2 : 4; int y0 = (int)glist_ytopixels(x, f); ! sys_vgui(".x%lx.c create line %d %d %d %d -tags %s\n", (long)c, x1, y0, x1 + tickpix, y0, tag); ! sys_vgui(".x%lx.c create line %d %d %d %d -tags %s\n", (long)c, x2, y0, x2 - tickpix, y0, tag); } } --- 3126,3137 ---- int tickpix = i%x->gl_ytick.k_lperb ? 2 : 4; int y0 = (int)glist_ytopixels(x, f); ! sys_vgui(".x%lx.c create line %d %d %d %d -tags %s\n", (long)c, x1, y0, x1+tickpix, y0, tag); ! sys_vgui(".x%lx.c create line %d %d %d %d -tags %s\n", (long)c, x2, y0, x2-tickpix, y0, tag); } for (i = 1, f = x->gl_ytick.k_point - x->gl_ytick.k_inc; f > 0.99 * lbound + 0.01 * ubound; i++, f -= x->gl_ytick.k_inc) { int tickpix = i%x->gl_ytick.k_lperb ? 2 : 4; int y0 = (int)glist_ytopixels(x, f); ! sys_vgui(".x%lx.c create line %d %d %d %d -tags %s\n", (long)c, x1, y0, x1+tickpix, y0, tag); ! sys_vgui(".x%lx.c create line %d %d %d %d -tags %s\n", (long)c, x2, y0, x2-tickpix, y0, tag); } } *************** *** 3247,3251 **** x->x_who = who; x->x_sym = sym; ! pd_bind(&x->x_obj.ob_pd, sym); return x; } --- 3231,3235 ---- x->x_who = who; x->x_sym = sym; ! pd_bind((t_pd *)x, sym); return x; } *************** *** 3253,3257 **** /* cleanup routine; delete any resources we have */ static void guiconnect_free(t_guiconnect *x) { ! if (x->x_sym) pd_unbind(&x->x_obj.ob_pd, x->x_sym); if (x->x_clock) clock_free(x->x_clock); } --- 3237,3241 ---- /* cleanup routine; delete any resources we have */ static void guiconnect_free(t_guiconnect *x) { ! if (x->x_sym) pd_unbind((t_pd *)x, x->x_sym); if (x->x_clock) clock_free(x->x_clock); } *************** *** 3264,3268 **** or for a timeout. */ void guiconnect_notarget(t_guiconnect *x, double timedelay) { ! if (!x->x_sym) pd_free(&x->x_obj.ob_pd); else { x->x_who = 0; --- 3248,3252 ---- or for a timeout. */ void guiconnect_notarget(t_guiconnect *x, double timedelay) { ! if (!x->x_sym) pd_free((t_pd *)x); else { x->x_who = 0; *************** *** 3283,3289 **** a timeout after which the guiconnect will disappear.) */ static void guiconnect_signoff(t_guiconnect *x) { ! if (!x->x_who) pd_free(&x->x_obj.ob_pd); else { ! pd_unbind(&x->x_obj.ob_pd, x->x_sym); x->x_sym = 0; } --- 3267,3273 ---- a timeout after which the guiconnect will disappear.) */ static void guiconnect_signoff(t_guiconnect *x) { ! if (!x->x_who) pd_free((t_pd *)x); else { ! pd_unbind((t_pd *)x, x->x_sym); x->x_sym = 0; } *************** *** 3491,3502 **** }
! void glist_read(t_glist *x, t_symbol *filename, t_symbol *format) ! {glist_doread(x, filename, format, 1);} ! void glist_mergefile(t_glist *x, t_symbol *filename, t_symbol *format) ! {glist_doread(x, filename, format, 0);}
! /* read text from a "properties" window, called from a gfxstub set ! up in scalar_properties(). We try to restore the object; if successful ! we delete the scalar and put the new thing in its place on the list. */ void canvas_dataproperties(t_canvas *x, t_scalar *sc, t_binbuf *b) { int ntotal, nnew, scindex; --- 3475,3484 ---- }
! void glist_read(t_glist *x, t_symbol *filename, t_symbol *format) {glist_doread(x,filename,format,1);} ! void glist_mergefile(t_glist *x, t_symbol *filename, t_symbol *format) {glist_doread(x,filename,format,0);}
! /* read text from a "properties" window, called from a gfxstub set ! up in scalar_properties(). We try to restore the object; if successful ! we delete the scalar and put the new thing in its place on the list. */ void canvas_dataproperties(t_canvas *x, t_scalar *sc, t_binbuf *b) { int ntotal, nnew, scindex;