aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--g_canvas.h428
-rw-r--r--m_imp.h211
-rw-r--r--openpatch.c12
-rw-r--r--piperead~.c5
-rw-r--r--pipewrite~.c3
-rw-r--r--sfwrite13~.c5
-rw-r--r--wavinfo.c5
7 files changed, 15 insertions, 654 deletions
diff --git a/g_canvas.h b/g_canvas.h
deleted file mode 100644
index 0176f6c..0000000
--- a/g_canvas.h
+++ /dev/null
@@ -1,428 +0,0 @@
-/* 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. */
-
-/* a header for canvas objects that hold lists of t_gobjs, such as
-* canvases themselves or graphs
-*/
-
-/* --------------------- geometry ---------------------------- */
-#define IOWIDTH 7
-#define IOMIDDLE 3
-#define IOTOPMARGIN 1
-#define IOBOTTOMMARGIN 1
-
-/* ----------------------- 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;
-
-typedef void (*t_glistmotionfn)(void *z, t_floatarg dx, t_floatarg dy);
-typedef void (*t_glistkeyfn)(void *z, t_floatarg key);
-
-EXTERN_STRUCT _rtext;
-#define t_rtext struct _rtext
-
-EXTERN_STRUCT _gtemplate;
-#define t_gtemplate struct _gtemplate
-
-EXTERN_STRUCT _guiconnect;
-#define t_guiconnect struct _guiconnect
-
-EXTERN_STRUCT _subcanvas;
-#define t_subcanvas struct _subcanvas
-
-EXTERN_STRUCT _tscalar;
-#define t_tscalar struct _tscalar
-
-typedef struct _selection
-{
- t_gobj *sel_what;
- struct _selection *sel_next;
-} t_selection;
-
- /* this structure is instantiated whenever a glist becomes visible. */
-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 */
- 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 */
-} t_editor;
-
-#define MA_NONE 0 /* e_onmotion: do nothing on mouse motion */
-#define MA_MOVE 1 /* drag the selection around */
-#define MA_CONNECT 2 /* make a connection */
-#define MA_REGION 3 /* selection region */
-#define MA_PASSOUT 4 /* send on to e_grab */
-#define MA_DRAGTEXT 5 /* drag in text editor to alter selection */
-
-/* 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;
-
-typedef struct _tick /* where to put ticks on x or y axes */
-{
- float k_point; /* one point to draw a big tick at */
- float k_inc; /* x or y increment per little tick */
- int k_lperb; /* little ticks per big; 0 if no ticks to draw */
-} t_tick;
-
-typedef struct _glist
-{
- t_gobj gl_gobj; /* header in case we're a glist */
- t_gobj *gl_list; /* the actual data */
- struct _gstub *gl_stub; /* safe pointer handler */
- int gl_valid; /* incremented when pointers might be stale */
- struct _glist *gl_owner; /* parent glist or 0 if none */
- float gl_px1; /* bounding rectangle in parent's coords */
- float gl_py1;
- float gl_px2;
- float gl_py2;
- float gl_x1; /* ... and in our own coordinates */
- float gl_y1;
- float gl_x2;
- float gl_y2;
- t_tick gl_xtick; /* ticks marking X values */
- t_tick gl_ytick; /* ... and Y values */
- int gl_nxlabels; /* X coordinate labels */
- t_symbol **gl_xlabel;
- float gl_xlabely; /* ... and their Y coordinates */
- int gl_nylabels; /* Y coordinate labels */
- t_symbol **gl_ylabel;
- float gl_ylabelx;
- t_editor *gl_editor; /* editor structure when visible */
- t_symbol *gl_name; /* symbol bound here */
-} t_glist;
-
-#define gl_pd gl_gobj.g_pd
-
-/* a data structure to describe a field in a pure datum */
-
-#define DT_FLOAT 0
-#define DT_SYMBOL 1
-#define DT_LIST 2
-#define DT_ARRAY 3
-
-typedef struct _dataslot
-{
- int ds_type;
- t_symbol *ds_name;
- t_symbol *ds_arraytemplate; /* filled in for arrays only */
-} t_dataslot;
-
-typedef struct _template
-{
- int t_n;
- t_dataslot *t_vec;
-} t_template;
-
-struct _array
-{
- int a_n;
- int a_elemsize; /* LATERd just look this up from template... */
- t_word *a_vec;
- t_symbol *a_templatesym; /* template for elements */
- int a_valid; /* protection against stale pointers into array */
- t_gpointer a_gp; /* pointer to scalar or array element we're in */
- t_gstub *a_stub;
-};
-
-
-/* function types used to define graphical behavior for gobjs, a bit like X
-widgets. These aren't Pd methods because Pd's typechecking can't specify the
-types of pointer arguments. Also it's more convenient this way, since
-every "patchable" object can just get the "text" behaviors. */
-
- /* Call this to get a gobj's bounding rectangle in pixels */
-typedef void (*t_getrectfn)(t_gobj *x, struct _glist *glist,
- int *x1, int *y1, int *x2, int *y2);
- /* and this to displace a gobj: */
-typedef void (*t_displacefn)(t_gobj *x, struct _glist *glist, int dx, int dy);
- /* change color to show selection: */
-typedef void (*t_selectfn)(t_gobj *x, struct _glist *glist, int state);
- /* change appearance to show activation/deactivation: */
-typedef void (*t_activatefn)(t_gobj *x, struct _glist *glist, int state);
- /* warn a gobj it's about to be deleted */
-typedef void (*t_deletefn)(t_gobj *x, struct _glist *glist);
- /* making visible or invisible */
-typedef void (*t_visfn)(t_gobj *x, struct _glist *glist, int flag);
- /* field a mouse click (when not in "edit" mode) */
-typedef int (*t_clickfn)(t_gobj *x, struct _glist *glist,
- int xpix, int ypix, int shift, int alt, int dbl, int doit);
- /* save to a binbuf */
-typedef void (*t_savefn)(t_gobj *x, t_binbuf *b);
- /* open properties dialog */
-typedef void (*t_propertiesfn)(t_gobj *x, struct _glist *glist);
- /* ... and later, resizing; getting/setting color... */
-
-struct _widgetbehavior
-{
- t_getrectfn w_getrectfn;
- t_displacefn w_displacefn;
- t_selectfn w_selectfn;
- t_activatefn w_activatefn;
- t_deletefn w_deletefn;
- t_visfn w_visfn;
- t_clickfn w_clickfn;
- t_savefn w_savefn;
- t_propertiesfn w_propertiesfn;
-};
-
-/* -------- behaviors for scalars defined by objects in template --------- */
-/* these are set by "drawing commands" in g_template.c which add appearance to
-scalars, which live in some other window. If the scalar is just included
-in a canvas the "parent" is a misnomer. There is also a text scalar object
-which really does draw the scalar on the parent window; see g_scalar.c. */
-
-/* note how the click function wants the whole scalar, not the "data", so
-doesn't work on array elements... is this a problem??? */
-
- /* bounding rectangle: */
-typedef void (*t_parentgetrectfn)(t_gobj *x, struct _glist *glist,
- t_word *data, t_canvas *template, float basex, float basey,
- int *x1, int *y1, int *x2, int *y2);
- /* displace it */
-typedef void (*t_parentdisplacefn)(t_gobj *x, struct _glist *glist,
- t_word *data, t_canvas *template, float basex, float basey,
- int dx, int dy);
- /* change color to show selection */
-typedef void (*t_parentselectfn)(t_gobj *x, struct _glist *glist,
- t_word *data, t_canvas *template, float basex, float basey,
- int state);
- /* change appearance to show activation/deactivation: */
-typedef void (*t_parentactivatefn)(t_gobj *x, struct _glist *glist,
- t_word *data, t_canvas *template, float basex, float basey,
- int state);
- /* making visible or invisible */
-typedef void (*t_parentvisfn)(t_gobj *x, struct _glist *glist,
- t_word *data, t_canvas *template, float basex, float basey,
- int flag);
- /* field a mouse click */
-typedef int (*t_parentclickfn)(t_gobj *x, struct _glist *glist,
- t_scalar *sc, t_canvas *template, float basex, float basey,
- int xpix, int ypix, int shift, int alt, int dbl, int doit);
-
-struct _parentwidgetbehavior
-{
- t_parentgetrectfn w_parentgetrectfn;
- t_parentdisplacefn w_parentdisplacefn;
- t_parentselectfn w_parentselectfn;
- t_parentactivatefn w_parentactivatefn;
- t_parentvisfn w_parentvisfn;
- t_parentclickfn w_parentclickfn;
-};
-
- /* 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 t_canvas *canvas_editing; /* last canvas to start text edting */
-extern t_class *vinlet_class, *voutlet_class;
-extern t_class *tscalar_class;
-extern t_class *subcanvas_class;
-
-/* ------------------- functions on any gobj ----------------------------- */
-EXTERN void gobj_getrect(t_gobj *x, t_glist *owner, int *x1, int *y1,
- int *x2, int *y2);
-EXTERN void gobj_displace(t_gobj *x, t_glist *owner, int dx, int dy);
-EXTERN void gobj_select(t_gobj *x, t_glist *owner, int state);
-EXTERN void gobj_activate(t_gobj *x, t_glist *owner, int state);
-EXTERN void gobj_delete(t_gobj *x, t_glist *owner);
-EXTERN void gobj_vis(t_gobj *x, t_glist *glist, int flag);
-EXTERN int gobj_click(t_gobj *x, struct _glist *glist,
- int xpix, int ypix, int shift, int alt, int dbl, int doit);
-EXTERN void gobj_save(t_gobj *x, t_binbuf *b);
-EXTERN void gobj_properties(t_gobj *x, struct _glist *glist);
-
-/* -------------------- functions on glists --------------------- */
-EXTERN t_glist *glist_new( void);
-EXTERN void glist_init(t_glist *x);
-EXTERN void glist_add(t_glist *x, t_gobj *g);
-EXTERN void glist_clear(t_glist *x);
-EXTERN t_canvas *glist_getcanvas(t_glist *x);
-EXTERN int glist_isselected(t_glist *x, t_gobj *y);
-EXTERN void glist_select(t_glist *x, t_gobj *y);
-EXTERN void glist_deselect(t_glist *x, t_gobj *y);
-EXTERN void glist_noselect(t_glist *x);
-EXTERN void glist_selectall(t_glist *x);
-EXTERN void glist_delete(t_glist *x, t_gobj *y);
-EXTERN void glist_retext(t_glist *x, t_text *y);
-EXTERN void glist_grab(t_glist *x, t_gobj *y, t_glistmotionfn motionfn,
- t_glistkeyfn keyfn, int xpos, int ypos);
-EXTERN int glist_isvisible(t_glist *x);
-EXTERN t_glist *glist_findgraph(t_glist *x);
-EXTERN int glist_getfont(t_glist *x);
-EXTERN void glist_sort(t_glist *canvas);
-EXTERN void glist_read(t_glist *x, t_symbol *filename, t_symbol *format);
-EXTERN void glist_write(t_glist *x, t_symbol *filename, t_symbol *format);
-
-EXTERN float glist_pixelstox(t_glist *x, float xpix);
-EXTERN float glist_pixelstoy(t_glist *x, float ypix);
-EXTERN float glist_xtopixels(t_glist *x, float xval);
-EXTERN float glist_ytopixels(t_glist *x, float yval);
-
-EXTERN void glist_redrawitem(t_glist *owner, t_gobj *gobj);
-EXTERN void glist_getnextxy(t_glist *gl, int *xval, int *yval);
-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,
- t_floatarg size, t_floatarg saveit, t_floatarg newgraph);
-EXTERN t_binbuf *glist_writetobinbuf(t_glist *x, int wholething);
-EXTERN void glist_cleanup(t_glist *x);
-EXTERN void glist_free(t_glist *x);
-
-/* -------------------- functions on texts ------------------------- */
-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);
-
-/* -------------------- functions on rtexts ------------------------- */
-#define RTEXT_DOWN 1
-#define RTEXT_DRAG 2
-#define RTEXT_DBL 3
-#define RTEXT_SHIFT 4
-
-EXTERN t_rtext *rtext_new(t_glist *glist, t_text *who, t_rtext *next);
-EXTERN t_rtext *rtext_remove(t_rtext *first, t_rtext *x);
-EXTERN t_rtext *glist_findrtext(t_glist *gl, t_text *who);
-EXTERN int rtext_height(t_rtext *x);
-EXTERN void rtext_displace(t_rtext *x, int dx, int dy);
-EXTERN void rtext_select(t_rtext *x, int state);
-EXTERN void rtext_activate(t_rtext *x, int state);
-EXTERN void rtext_free(t_rtext *x);
-EXTERN void rtext_key(t_rtext *x, int n, t_symbol *s);
-EXTERN void rtext_mouse(t_rtext *x, int xval, int yval, int flag);
-EXTERN void rtext_retext(t_rtext *x);
-EXTERN int rtext_width(t_rtext *x);
-EXTERN int rtext_height(t_rtext *x);
-EXTERN char *rtext_gettag(t_rtext *x);
-EXTERN void rtext_gettext(t_rtext *x, char **buf, int *bufsize);
-
-/* -------------------- functions on canvases ------------------------ */
-EXTERN t_class *graph_class, *canvas_class;
-
-EXTERN t_canvas *canvas_new(t_symbol *sel, int argc, t_atom *argv);
-EXTERN t_symbol *canvas_makebindsym(t_symbol *s);
-EXTERN void canvas_vistext(t_canvas *x, t_text *y);
-EXTERN void canvas_fixlinesfor(t_canvas *x, t_text *text);
-EXTERN void canvas_deletelinesfor(t_canvas *x, t_text *text);
-EXTERN void canvas_stowconnections(t_canvas *x);
-EXTERN void canvas_restoreconnections(t_canvas *x);
-EXTERN t_template *canvas_gettemplate(t_canvas *x);
-EXTERN t_template *canvas_gettemplatebyname(t_symbol *s);
-EXTERN t_template *gtemplate_get(t_gtemplate *x);
-EXTERN int template_find_field(t_template *x, t_symbol *name, int *p_onset,
- int *p_type, t_symbol **p_arraytype);
-EXTERN t_float canvas_getfloat(t_canvas *x, t_symbol *fieldname, t_word *wp,
- int loud);
-EXTERN void canvas_setfloat(t_canvas *x, t_symbol *fieldname, t_word *wp,
- t_float f, int loud);
-EXTERN t_symbol *canvas_getsymbol(t_canvas *x, t_symbol *fieldname, t_word *wp,
- int loud);
-EXTERN void canvas_setsymbol(t_canvas *x, t_symbol *fieldname, t_word *wp,
- t_symbol *s, int loud);
-
-EXTERN t_inlet *canvas_addinlet(t_canvas *x, t_pd *who, t_symbol *sym);
-EXTERN void canvas_rminlet(t_canvas *x, t_inlet *ip);
-EXTERN t_outlet *canvas_addoutlet(t_canvas *x, t_pd *who, t_symbol *sym);
-EXTERN void canvas_rmoutlet(t_canvas *x, t_outlet *op);
-EXTERN void canvas_redrawallfortemplate(t_canvas *template);
-EXTERN void canvas_zapallfortemplate(t_canvas *template);
-EXTERN void canvas_setusedastemplate(t_canvas *x);
-EXTERN t_canvas *canvas_getcurrent(void);
-EXTERN void canvas_setcurrent(t_canvas *x);
-EXTERN void canvas_unsetcurrent(t_canvas *x);
-EXTERN t_canvas *canvas_getrootfor(t_canvas *x);
-EXTERN void canvas_dirty(t_canvas *x, t_int n);
-EXTERN int canvas_isvisible(t_canvas *x);
-EXTERN int canvas_getfont(t_canvas *x);
-typedef int (*t_canvasapply)(t_canvas *x, t_int x1, t_int x2, t_int x3);
-
-EXTERN t_int *canvas_recurapply(t_canvas *x, t_canvasapply *fn,
- t_int x1, t_int x2, t_int x3);
-
-EXTERN void canvas_resortinlets(t_canvas *x);
-EXTERN void canvas_resortoutlets(t_canvas *x);
-EXTERN void canvas_free(t_canvas *x);
-
-/* ---------------------- functions on subcanvases --------------------- */
-
-EXTERN void subcanvas_fattenforscalars(t_subcanvas *x,
- int *x1, int *y1, int *x2, int *y2);
-EXTERN void subcanvas_visforscalars(t_subcanvas *x, t_glist *glist, int vis);
-EXTERN int subcanvas_click(t_subcanvas *x, int xpix, int ypix, int shift,
- int alt, int dbl, int doit);
-EXTERN t_glist *canvas_getglistonsuper(void);
-
-/* --------------------- functions on tscalars --------------------- */
-
-EXTERN void tscalar_getrect(t_tscalar *x, t_glist *owner,
- int *xp1, int *yp1, int *xp2, int *yp2);
-EXTERN void tscalar_vis(t_tscalar *x, t_glist *owner, int flag);
-EXTERN int tscalar_click(t_tscalar *x, int xpix, int ypix, int shift,
- int alt, int dbl, int doit);
-
-/* --------- functions on garrays (graphical arrays) -------------------- */
-
-EXTERN t_template *garray_template(t_garray *x);
-
-/* -------------------- arrays --------------------- */
-EXTERN t_garray *graph_array(t_glist *gl, t_symbol *s, t_symbol *template,
- t_floatarg f, t_floatarg saveit);
-EXTERN t_array *array_new(t_symbol *templatesym, t_gpointer *parent);
-EXTERN void array_resize(t_array *x, t_template *template, int n);
-EXTERN void array_free(t_array *x);
-
-/* --------------------- gpointers and stubs ---------------- */
-EXTERN t_gstub *gstub_new(t_glist *gl, t_array *a);
-EXTERN void gstub_cutoff(t_gstub *gs);
-EXTERN void gpointer_setglist(t_gpointer *gp, t_glist *glist, t_scalar *x);
-
-/* --------------------- scalars ------------------------- */
-EXTERN void word_init(t_word *wp, t_template *template, t_gpointer *gp);
-EXTERN void word_restore(t_word *wp, t_template *template,
- int argc, t_atom *argv);
-EXTERN t_scalar *scalar_new(t_glist *owner,
- t_symbol *templatesym);
-EXTERN void scalar_getbasexy(t_scalar *x, float *basex, float *basey);
-
-/* --------------------- templates ------------------------- */
-EXTERN t_template *template_new(int argc, t_atom *argv);
-EXTERN void template_free(t_template *x);
-EXTERN int template_match(t_template *x1, t_template *x2);
-
-/* ----------------------- guiconnects, g_guiconnect.c --------- */
-EXTERN t_guiconnect *guiconnect_new(t_pd *who, t_symbol *sym);
-EXTERN void guiconnect_notarget(t_guiconnect *x, double timedelay);
diff --git a/m_imp.h b/m_imp.h
deleted file mode 100644
index f5be853..0000000
--- a/m_imp.h
+++ /dev/null
@@ -1,211 +0,0 @@
-/* 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 contains function prototypes and data types used to implement
-Pd, but not shared with Pd objects. */
-
-#include "m_pd.h"
-
-EXTERN_STRUCT _outconnect;
-#define t_outconnect struct _outconnect
-
-/* LATER consider whether to use 'char' for method arg types to save space */
-
-/* the structure for a method handler ala Max */
-typedef struct _methodentry
-{
- t_symbol *me_name;
- t_gotfn me_fun;
- t_atomtype me_arg[MAXPDARG+1];
-} t_methodentry;
-
-EXTERN_STRUCT _widgetbehavior;
-
-typedef void (*t_bangmethod)(t_pd *x);
-typedef void (*t_pointermethod)(t_pd *x, t_gpointer *gp);
-typedef void (*t_floatmethod)(t_pd *x, t_float f);
-typedef void (*t_symbolmethod)(t_pd *x, t_symbol *s);
-typedef void (*t_listmethod)(t_pd *x, t_symbol *s, int argc, t_atom *argv);
-typedef void (*t_anymethod)(t_pd *x, t_symbol *s, int argc, t_atom *argv);
-
-struct _class
-{
- t_symbol *c_name; /* name (mostly for error reporting) */
- t_symbol *c_helpname; /* name of help file */
- size_t c_size; /* size of an instance */
- t_methodentry *c_methods; /* methods other than bang, etc below */
- int c_nmethod; /* number of methods */
- t_method c_freemethod; /* function to call before freeing */
- t_bangmethod c_bangmethod; /* common methods */
- t_pointermethod c_pointermethod;
- t_floatmethod c_floatmethod;
- t_symbolmethod c_symbolmethod;
- t_listmethod c_listmethod;
- t_anymethod c_anymethod;
- struct _widgetbehavior *c_wb; /* "gobjs" only */
- struct _parentwidgetbehavior *c_pwb;/* widget behavior in parent */
- int c_floatsignalin; /* onset to float for signal input */
- char c_gobj; /* true if is a gobj */
- char c_patchable; /* true if we have a t_object header */
- char c_firstin; /* if patchable, true if draw first inlet */
- char c_drawcommand; /* a drawing command for a template */
-};
-
-/* s_file.c */
-typedef struct _namelist
-{
- struct _namelist *nl_next;
- char *nl_string;
-} t_namelist;
-
-t_namelist *namelist_append(t_namelist *listwas, const char *s);
-void namelist_free(t_namelist *listwas);
-
-extern int sys_debuglevel;
-extern int sys_verbose;
-
-#define DEBUG_MESSUP 1 /* messages up from pd to pd-gui */
-#define DEBUG_MESSDOWN 2 /* messages down from pd-gui to pd */
-
-extern int sys_noloadbang;
-extern int sys_nogui;
-extern char *sys_guicmd;
-
-/* in s_main.c */
-EXTERN int sys_nearestfontsize(int fontsize);
-EXTERN int sys_hostfontsize(int fontsize);
-
-extern int sys_defaultfont;
-extern t_symbol *sys_libdir; /* library directory for auxilliary files */
-/* s_loader.c */
-int sys_load_lib(char *dirname, char *filename);
-
-/* s_unix.c */
-EXTERN void sys_microsleep(int microsec);
-EXTERN double sys_getrealtime(void);
-
-/* s_sgi.c, s_nt.c, s_linux.c each implement the same API for audio
-and MIDI I/O as follows: */
-
-#define DACBLKSIZE 64
-
-#define SENDDACS_NO 0 /* return values for sys_send_dacs() */
-#define SENDDACS_YES 1
-#define SENDDACS_SLEPT 2
-
- /* MIDI input and output */
-#define MAXMIDIINDEV 16 /* max. number of input ports */
-#define MAXMIDIOUTDEV 16 /* max. number of output ports */
-extern int sys_nmidiin;
-extern int sys_nmidiout;
-extern int sys_midiindevlist[];
-extern int sys_midioutdevlist[];
-
-EXTERN void sys_putmidimess(int portno, int a, int b, int c);
-EXTERN void sys_putmidibyte(int portno, int a);
-EXTERN void sys_poll_midi(void);
-EXTERN void sys_setmiditimediff(double inbuftime, double outbuftime);
-EXTERN void sys_midibytein(int portno, int byte);
-
-extern int sys_hipriority; /* real-time flag, true if priority boosted */
-extern t_sample *sys_soundout;
-extern t_sample *sys_soundin;
-extern float sys_dacsr;
-extern int sys_schedadvance;
-extern int sys_sleepgrain;
-EXTERN void sys_open_audio(int inchans, int outchans, int rate);
-EXTERN void sys_close_audio(void);
-
-EXTERN void sys_open_midi(int nmidiin, int *midiinvec,
- int nmidiout, int *midioutvec);
-EXTERN void sys_close_midi(void);
-
-EXTERN int sys_send_dacs(void);
-EXTERN void sys_reportidle(void);
-EXTERN void sys_set_priority(int higher);
-EXTERN void sys_audiobuf(int nbufs);
-EXTERN void sys_getmeters(float *inmax, float *outmax);
-
- /* for NT and Linux, there are additional bits of fluff as follows. */
-#ifdef NT
-EXTERN void nt_listdevs(void);
-EXTERN void nt_soundindev(int which);
-EXTERN void nt_soundoutdev(int which);
-EXTERN void nt_midiindev(int which);
-EXTERN void nt_midioutdev(int which);
-EXTERN void nt_noresync( void);
-#endif
-
-#define API_OSS 0
-#define API_ALSA 1
-#define API_RME 2
-#define API_PORTAUDIO 4
-#ifdef __linux__
- /* the following definitions allow you to switch at run time
- between audio APIs in Linux and later in NT. */
-void linux_set_sound_api(int which);
-
-void linux_setfrags(int n);
-void linux_setfragsize(int n);
-void linux_streammode( void);
-void rme_soundindev(int which);
-void rme_soundoutdev(int which);
-void linux_alsa_queue_size(int size);
-#ifdef ALSA99 /* old fashioned ALSA */
-void linux_alsa_devno(int devno);
-#else
-void linux_alsa_devname(char *devname);
-#endif
-#endif /* __linux__ */
-
-/* m_sched.c */
-EXTERN void sys_log_error(int type);
-#define ERR_NOTHING 0
-#define ERR_ADCSLEPT 1
-#define ERR_DACSLEPT 2
-#define ERR_RESYNC 3
-#define ERR_DATALATE 4
-
-/* s_inter.c */
-
-EXTERN void sys_bail(int exitcode);
-EXTERN int sys_pollgui(void);
-
-EXTERN_STRUCT _socketreceiver;
-#define t_socketreceiver struct _socketreceiver
-
-typedef void (*t_socketnotifier)(void *x);
-typedef void (*t_socketreceivefn)(void *x, t_binbuf *b);
-
-EXTERN t_socketreceiver *socketreceiver_new(void *owner,
- t_socketnotifier notifier, t_socketreceivefn socketreceivefn);
-EXTERN void socketreceiver_read(t_socketreceiver *x, int fd);
-EXTERN void sys_sockerror(char *s);
-EXTERN void sys_closesocket(int fd);
-
-typedef void (*t_fdpollfn)(void *ptr, int fd);
-EXTERN void sys_addpollfn(int fd, t_fdpollfn fn, void *ptr);
-EXTERN void sys_rmpollfn(int fd);
-#ifdef UNIX
-void sys_setalarm(int microsec);
-void sys_setvirtualalarm( void);
-#endif
-
-/* m_obj.c */
-EXTERN t_object *pd_checkobject(t_pd *x);
-
-EXTERN int obj_noutlets(t_object *x);
-EXTERN int obj_ninlets(t_object *x);
-EXTERN t_outconnect *obj_starttraverseoutlet(t_object *x, t_outlet **op,
- int nout);
-EXTERN t_outconnect *obj_nexttraverseoutlet(t_outconnect *lastconnect,
- t_object **destp, t_inlet **inletp, int *whichp);
-EXTERN t_outconnect *obj_connect(t_object *source, int outno,
- t_object *sink, int inno);
-EXTERN void obj_disconnect(t_object *source, int outno, t_object *sink,
- int inno);
-EXTERN void outlet_setstacklim(void);
-/* misc */
-EXTERN void glob_evalfile(t_pd *ignore, t_symbol *name, t_symbol *dir);
-EXTERN void glob_initfromgui(void *dummy, t_symbol *s, int argc, t_atom *argv);
diff --git a/openpatch.c b/openpatch.c
index 3828f71..f1979bd 100644
--- a/openpatch.c
+++ b/openpatch.c
@@ -1,11 +1,17 @@
#include "ext13.h"
-//#include "m_pd.h"
+#include "m_pd.h"
+
+#ifndef PD_MAJOR_VERSION
+#include "s_stuff.h"
+#else
#include "m_imp.h"
+#endif
+
#include <sys/stat.h>
-#include <stdio.h>
+#include <stdio.h>
#ifndef NT
#include <unistd.h>
-#endif
+#endif
#include <string.h>
#ifdef NT
diff --git a/piperead~.c b/piperead~.c
index 28d6320..ceeb1bd 100644
--- a/piperead~.c
+++ b/piperead~.c
@@ -1,5 +1,4 @@
#include "m_pd.h"
-#include "g_canvas.h"
#ifdef NT
#pragma warning( disable : 4244 )
#pragma warning( disable : 4305 )
@@ -35,7 +34,6 @@ typedef struct _piperead_tilde
short x_sample;
t_int x_play;
t_int x_channels;
- t_glist * x_glist;
int buflen;
short buf[32768];
int readpointer;
@@ -47,7 +45,7 @@ void piperead_tilde_open(t_piperead_tilde *x,t_symbol *filename)
{
/* struct stat fstate;*/
char fname[MAXPDSTRING];
- canvas_makefilename(glist_getcanvas(x->x_glist), filename->s_name,
+ canvas_makefilename(canvas_getcurrent(), filename->s_name,
fname, MAXPDSTRING);
/* close the old file */
@@ -142,7 +140,6 @@ static void *piperead_tilde_new(t_floatarg chan, t_floatarg buflen)
t_piperead_tilde *x = (t_piperead_tilde *)pd_new(piperead_tilde_class);
t_int c = chan;
t_int bl = buflen;
- x->x_glist = (t_glist*) canvas_getcurrent();
if (c<1 || c > MAX_CHANS) c = 1;
if (bl<8 || bl > 32767) bl = 256;
diff --git a/pipewrite~.c b/pipewrite~.c
index b609c37..a49526c 100644
--- a/pipewrite~.c
+++ b/pipewrite~.c
@@ -1,5 +1,4 @@
-#include "m_imp.h"
-//#include <m_pd.h>
+#include <m_pd.h>
#include "g_canvas.h"
#ifdef NT
#pragma warning( disable : 4244 )
diff --git a/sfwrite13~.c b/sfwrite13~.c
index f70334f..f0a4188 100644
--- a/sfwrite13~.c
+++ b/sfwrite13~.c
@@ -1,9 +1,10 @@
/* original source (sfwrite~.c) by Guenter Geiger <geiger@epy.co.at> */
/* added buffering for write-actions to reduce disc-activity <dieb13 at klingt.org>*/
+
+#include "m_pd.h"
+#include "g_canvas.h"
-#include "m_imp.h"
-#include "g_canvas.h"
#ifdef NT
#pragma warning( disable : 4244 )
#pragma warning( disable : 4305 )
diff --git a/wavinfo.c b/wavinfo.c
index 1f5d2f9..7edd030 100644
--- a/wavinfo.c
+++ b/wavinfo.c
@@ -1,6 +1,5 @@
#include "ext13.h"
#include "m_pd.h"
-#include "g_canvas.h"
#include <sys/stat.h>
#include <stdio.h>
#include <unistd.h>
@@ -47,7 +46,6 @@ static t_class *wavinfo_class;
typedef struct _wavinfo
{
t_object x_obj;
- t_glist *x_glist;
t_float x_samplerate;
t_float x_bitspersample;
t_float x_channels;
@@ -65,7 +63,6 @@ typedef struct _wavinfo
static void *wavinfo_new(t_symbol *s)
{
t_wavinfo *x = (t_wavinfo *)pd_new(wavinfo_class);
- x->x_glist = (t_glist*) canvas_getcurrent();
x->x_s = s;
// outlet_new(&x->x_obj, &s_float);
x->x_out0 = outlet_new(&x->x_obj, &s_float);
@@ -88,7 +85,7 @@ static void wavinfo_symbol(t_wavinfo *x, t_symbol *filename)
char fname[MAXPDSTRING];
int ok=(stat(filename->s_name, &statbuf) >= 0);
if (ok>0) {
- canvas_makefilename(glist_getcanvas(x->x_glist), filename->s_name,fname, MAXPDSTRING);
+ canvas_makefilename(canvas_getcurrent(), filename->s_name,fname, MAXPDSTRING);
if ((x->x_fd = open(fname,( O_NONBLOCK | O_RDONLY))) < 0)
{
error("can't open %s",fname);